diff --git a/README.md b/README.md index 86649c6..2a72a42 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Open-source RISC-V CPUs from Bluespec, Inc. +***** UNDER CONSTRUCTION ***** + +***** PLEASE COME BACK LATER (EARLY APRIL 2019) ***** + This is one of a family of free, open-source RISC-V CPUs created by Bluespec, Inc. - [Piccolo](https://github.com/bluespec/Piccolo): 3-stage, in-order pipeline @@ -12,244 +16,45 @@ This is one of a family of free, open-source RISC-V CPUs created by Bluespec, In 64-bit operation, an MMU (Virtual Memory) and more performance than Piccolo-class processors. -- [Bassoon](https://github.com/bluespec/Bassoon): deep, out-of-order pipeline [Coming!] - -The three repo structures are nearly identical, and the ways to build -and run are identical. This README is identical--please substitute -"Piccolo" or "Flute" or "Basoon" below wherever you see . - - -### About the source codes (in BSV and Verilog) - -The BSV source code in this repository, from which the synthesizable -Verilog RTL in this repository is generated, is highly parameterized -to allow generating many possible configurations, some of which are -adequate to boot a Linux kernel. - -The pre-generated synthesizable Verilog RTL source files in this -repository are for a few specific configurations: - -1. RV32ACIMU: **(DARPA SSITH users: this is the "P1" processor)** - - RV32I: base RV32 integer instructions - - 'A' extension: atomic memory ops - - 'C' extension: compressed instructions - - 'M' extension: integer multiply/divide instructions - - Privilege levels M (machine) and U (user) - - Supports external, timer, software and non-maskable interrupts - - Passes all riscv-isa tests for RV32ACIMU - - Boots FreeRTOS - -2. RV64ACDFIMSU - - RV64I: base RV64 integer instructions - - 'A' extension: atomic memory ops - - 'C' extension: compressed instructions - - 'D' extension: double-precision floating point instructions - - 'F' extension: single-precision floating point instructions - - 'M' extension: integer multiply/divide instructions - - Privilege levels M (machine), S (Supervisor) and U (user) - - Supports external, timer, software and non-maskable interrupts - - Passes all riscv-isa tests for RV64ACDFIMSU - - Boots the Linux kernel - -If you want to generate other Verilog variants, you'll need a Bluespec -`bsc` compiler [Note: Bluespec, Inc. provides free licenses to -academia and for non-profit research]. - -The BSV source code supports: - -- RV32I or RV64I -- Optional 'A', 'C', 'D', 'F' and 'M' extensions -- Privilege level options M, MU and MSU -- For privilege S, virtual memory schemes Sv32 (RV32) and Sv39 (RV64) - -- Hardware implementation option: serial shifter (smaller hardware, slower) or barrel shifter (more HW, faster) for shift instructions -- Hardware implementation option: serial integer multiplier (smaller hardware, slower) or synthesized (more HW, faster) -- AXI4-Lite Fabric interfaces, with optional 32-bit or 64-bit datapaths (independent of RV32/RV64 choice) -- and several other localized options - -### Testbench included - -This repository contains a simple testbench (a small SoC) with which -one can run RISC-V binaries in simulation by loading standard mem hex -files and executing in Bluespec's Bluesim, Verilator simulation or -iVerilog simulation. The testbench contains an AXI4-Lite interconnect -fabric that connects the CPU to models of a boot ROM, a memory, a -timer and a UART for console I/O. - -[Note: **iverilog functionality is currently limited** because we are -still working out robust mechanisms to import C code, which is used in -parts of the testbench.] - -This repository contains several sample build directories, to build -RV32ACIMU or RV64ACDFIMSU simulators, using Bluespec Bluesim -simulation, Verilator Verilog simulation, or Icarus Verilog -("iverilog") simulation. - -The generated Verilog is synthesizable. Bluespec tests all this code -on Xilinx FPGAs. - -#### Plans - -- Ongoing continuous micro-architectural improvements for performance and hardware area. +- [Tooba](https://github.com/bluespec/Tooba): superscalar, out-of-order + pipeline, slight variation on MIT's RISCY-OOO [In progress!] ---------------------------------------------------------------- -## Source codes +### Note re. distribution of MIT RISCY-OOO sources. -This repository contains two levels of source code: Verilog and BSV. +The directory `src_Core/RISCY_OOO` contains sources copied from MIT's +`riscy-OOO` repository. See `LICENSE_RISCY-OOO` for MIT's license. -**Verilog RTL** can be found in directories with names suffixed in -'_verilator' or '_iverilog' in the 'builds' directory: - - builds/..._/Verilog_RTL/ - -[There is no difference between Verilog in a Verilator directory -vs. the corresponding iverilog directory. ] - -The Verilog RTL is _synthesizable_ (and hence acceptable to -Verilator). It can be simulated in any Verilog simulator (we provide -Makefiles to build simulation executables for Verilator and for Icarus -Verilog (iverilog)). - -The RTL represents RISC-V CPU RTL, plus a rudimentary surrounding SoC -enabling immediate simulation here, and which is rich enough to enable -booting a Linux kernel. Users are free to use the CPU RTL in their -own Verilog system designs. The top-level module for the CPU RTL is -`Verilog_RTL/mkBRVF_Core.v`. The top-level module for the surrounding -SoC is `Verilog_RTL/mkTop_HW_Side.v`. The SoC has an AXI4-Lite -fabric, a timer, a software-interrupt device, and a UART. Additional -library RTL can be found in the directory `src_bsc_lib_RTL`. - -**Bluespec BSV** source code (which was used to generate the Verilog RTL) can be found in: - -- `src_Core/`, for the CPU core, with sub-directories: - - `ISA/`: generic types/constants/functions for the RISC-V ISA (not CPU-implementation-specific) - - `RegFiles/`: generic register files for the GPRs (General-Purpose Registers) and CSRs (Control and Status Registers) - - `Core/`: the CPU Core - - `Near_Mem_VM/`: for the MMU and first-level cache. In the CPU, - this is instantiated twice to provide completely separate - channels (MMU and Cache) for instructions and data. - - `BSV_Additional_Libs/`: generic utilities (not CPU-specific) - - `Debug_Module/`: RISC-V Debug Module to debug the CPU from GDB or other debuggers - -- `src_Testbench/`, for the surrounding testbench, with sub-directories: - - - `Top/`: The system top-level (`Top_HW_Side.bsv`), a memory model - that loads from a memory hex file, and some imported C - functions for polled reads from the console tty (not currently - available for Icarus Verilog). - - - `SoC/`: An interconnect, a boot ROM, a memory controller, a timer - and software-interrupt device, and a UART for console tty I/O. - - - `Fabrics/`: Generic AXI4-Lite code for the SoC fabric. - -The BSV source code has a rich set of parameters, mentioned above. The -provided RTL source has been generated from the BSV source -automatically using Bluespec's `bsc` compiler, with certain particular -sets of choices for the various parameters. The generated RTL is not -parameterized. - -To generate Verilog variants with other parameter choices, the user -will need Bluespec's `bsc` compiler. See the next section for -examples of how the build is configured for different ISA features. - -In fact the CPU also supports a "Tandem Verifier" that produces an -instruction-by-instruction trace that can be checked for correctness -against a RISC-V Golden Reference Model. Please contact Bluespec, -Inc. for more information. +[Note: MIT's repository is on an MIT git server, which can only be + accessed with credentials; hence the local copy in of these files.] ---------------------------------------------------------------- -### Building and running from the Verilog sources, out of the box +### Building and running Tooba -In any of the Verilog-build directories: +You will need: - builds/__verilator/ - builds/__iverilog/ +- A Bluespec tools installation (so you can run 'bsc', the Bluespec + compiler for BSV). We recommend version 2018.10.beta1 or later. - - `$ make simulator` will create a Verilog simulation executable using Verilator or iverilog, respectively +- A Verilator installation. We recommend version 3.922 or later. - - `$ make test` will run the executable on the standard RISC-V ISA - test `rv32ui-p-add` or `rv64ui-p-add`, which is one of the - tests in the `Tests/isa/` directory. Examining the `test:` - target in `Makefile`, we see that it first runs the program - `Tests/elf_to_hex/elf_to_hex` on the `rv32ui-p-add` or - `rv64ui-p-add` ELF file to create a `Mem.hex` file, and then - runs the simulation executable which loads this `Mem.hex` file - into its memory. +Then: - - Following the pattern of `$ make test`, the user can run any of - the other tests in the `Tests/isa/` directory by pointing at the - chosen ELF file. + $ cd builds/RV64ADFIMSU_Tuba_verilator + $ make all - - `$ make isa_tests` will run the executable on - all the standard RISC-V ISA tests relevant for ARCH (regression testing). - This uses the Python script `Tests/Run_regression.py`. - Please see the documentation at the top of that program for details. +This will compile BSV sources using the 'bsc' compiler into Verilog in +the directory `Verilog_RTL`, then compile and link into a verilator +executable `exe_HW_sim`. -Note: an RV32ACIMU simulator will only successfully run ELF files -compiled for RV32ACIMU, privilege U and M; running it on any other ELF -file will result in illegal instruction traps. An RV64ACDFIMSU -simulator will successfully run ELF files compiled for RV64ACDFIMSU, -privilege U, S and M. +Then: -#### Tool dependencies: + $ make test (1) + $ make TEST= test (2) + $ make isa_tests (3) -We test our builds with the following versions of iVerilog and -Verilator. Later versions are probably ok; we have observed some -problems with earlier versions of both tools. - - $ iverilog -v - Icarus Verilog version 10.1 (stable) () - - $ verilator --version - Verilator 3.922 2018-03-17 rev verilator_3_920-32-gdf3d1a4 - ----------------------------------------------------------------- -### What you can build and run if you have Bluespec's `bsc` compiler - -[Note: Bluespec, Inc. provides free licenses to academia and for non-profit research]. - -Note: even without Bluespec's `bsc` compiler, you can use the Verilog -sources in any of the `builds/__verilator/Verilog_RTL` -directories-- build and run Verilog simulations, incorporate the -Verilog CPU into your own SoC, etc. This section describes additional -things you can do with a `bsc` compiler. - -#### Building a Bluesim simulator - -In any of the following directories: - - builds/__bluesim - - - `$ make compile simulator` - -will compile and link a Bluesim executable. Then, you can `make test` -or `make isa_tests` as described above to run an individual ISA test -or run regressions on the full suite of relevant ISA tests. - -#### Re-generating Verilog RTL - -You can regenerate the Verilog RTL in any of the -`build/__verilator/` or `build/__iverilog/` -directories. Example: - - $ cd builds/RV32ACIMU__verilator - $ make compile - -#### Creating a new architecture configuration - -In the `builds/` directory, you can create a new sub-directory to -build a new configuration of interest. For example: - - $ cd builds - $ Resources/mkBuild_Dir.py .. RV32CI bluesim - -will create a new directory: `builds\RV32CIU__bluesim` -populated with a `Makefile` to compile and link a bluesim simulation -for an RV32 CPU with 'I' and 'C' ISA options. You can build and run -that simulator as usual: - - $ cd builds/RV32CIU__bluesim - $ make compile simulator test isa_tests +(1) Will run a single ISA test, `rv64ui-p-add`. +(2) Will do the same, but with the ISA test whose name you supply. +(3) Will run ISA tests for RV64G. ---------------------------------------------------------------- diff --git a/Tests/Makefile b/Tests/Makefile new file mode 100644 index 0000000..3f013a8 --- /dev/null +++ b/Tests/Makefile @@ -0,0 +1,51 @@ +### -*-Makefile-*- + +# Copyright (c) 2018 Bluespec, Inc. All Rights Reserved + +# ================================================================ +# Regression: run all ISA tests relevant for the chosen simulator + +# ---------------- +# Choose a prefix for the simulation executable dir + +ARCH ?= RV32IMU +# ARCH ?= RV32ACIMSU + +# ARCH ?= RV64IMU +# ARCH ?= RV64ACIMSU + +# ---------------- +# Choose a simulation engine + +SIM ?= Bluesim +# SIM ?= iverilog +# SIM ?= verilator + +# ---------------- +# Optionally choose an architecture explicitly, +# overriding the simulation executable path + +OPTARCH ?= + +# ---------------- +SIM_DIR = ../builds/$(ARCH)_$(SIM) + +# ================================================================ + +.PHONY: test +test: + @echo "Running regressions; saving logs in Logs/" + ./Run_regression.py \ + $(SIM_DIR)/exe_HW_sim \ + ./isa ./Logs $(OPTARCH) + @echo "Finished running regressions; saved logs in Logs/" + +# ================================================================ + +.PHONY: clean +clean: + rm *~ + +.PHONY: full_clean +full_clean: + rm -r -f *~ Logs *.log diff --git a/Tests/README.txt b/Tests/README.txt new file mode 100644 index 0000000..d0fd0fd --- /dev/null +++ b/Tests/README.txt @@ -0,0 +1,82 @@ +Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +>================================================================ +The './isa' sub-directory contains pre-built ELF and objdump files +(.dump) for all the standard RISC-V ISA tests. For example, the +files: + + ./isa/rv32ui-p-add + ./isa/rv32ui-p-add.dump + +are an ELF file and its objdump (disassembly) that tests the RISC-V +user-level integer ADD instruction for RV32. The tests are built when +one clones the following GitHub repository: + + https://github.com/riscv/riscv-tools.git + +and follows the build directions therein, resulting in all the ISA +tests being built, such as this: + + /riscv64-unknown-elf/share/riscv-tests/isa/rv32ui-p-add + +>================================================================ +The Makefile has a command to run regressions on ISA tests. + + $ make test + +In the Makefile, you will see definitions for ARCH (such as `RV32IMU`) +and SIM (such as `verilator`), which together specify which simulator +will be run (`builds/_SIM/exe_HW_sim`). You can change the ARCH +and SIM definitions in the Makefile for a different simulator, or +redefine them on the `make` command line. + +It will run the the Python program 'Run_regression.py', described +below, to run the simulator on all the ISA tests relevant to the +architecture ARCH. A per-ISA-test log is captured in the 'Logs/' +directory. + +>================================================================ +With the Python program './Run_regression.py' you can run a regression +on all the standard RISC-V ISA tests that are relevant to your RISC-V +simulation executable (i.e., for the RISC-V features and extensions +supported by your simulation executable). + +Please do: + + $ ./Run_regression.py --help + +for usage information. + +Example: + + $ ./Run_regression.py ../RV32IMU_verilator/exe_HW_sim ./isa ./Logs v1 + +will run the verilator simulation executable on the all RISC-V ISA +tests that match the following: + + ./isa/rv32ui-p* + ./isa/rv32mi-p* + ./isa/rv32um-p* + +and leave a transcript of each test's simulation output in files like + ./Logs/rv32ui-p-add.log +Each log will contain an instruction trace. + +Example: + + $ ./Run_regression.py ../RV64AIMSU_verilator/exe_HW_sim ./isa ./Logs v1 + +will run the verilator simulation executable on the all RISC-V ISA +tests that match the following: + + ./isa/rv64ui-p* + ./isa/rv64um-p* + ./isa/rv64ua-p* + ./isa/rv64mi-p* + ./isa/rv64si-p* + + ./isa/rv64ui-v* + ./isa/rv64um-v* + ./isa/rv64ua-v* + +>================================================================ diff --git a/Tests/Run_regression.py b/Tests/Run_regression.py new file mode 100755 index 0000000..f2f6c9e --- /dev/null +++ b/Tests/Run_regression.py @@ -0,0 +1,357 @@ +#!/usr/bin/python3 + +# Copyright (c) 2018-2019 Bluespec, Inc. +# See LICENSE for license details + +usage_line = ( + " Usage:\n" + " $ \n" + "\n" + " Runs the RISC-V \n" + " on ISA tests: ELF files taken from /isa and its sub-directories.\n" + "\n" + " Runs it only on those ELF files that are relevant to architecture .\n" + "\n" + " For each ELF file FOO, saves simulation output in /FOO.log. \n" + "\n" + " If is given, it must be one of the following:\n" + " v1: Print instruction trace during simulation\n" + " v2: Print pipeline stage state during simulation\n" + "\n" + " Example:\n" + " $ .exe_HW_sim ~somebody/GitHub/Piccolo ./Logs RV32IMU v1\n" + " will run the verilator simulation executable on the following RISC-V ISA tests:\n" + " ~somebody/GitHub/Tests/isa/rv32ui-p*\n" + " ~somebody/GitHub/Tests/isa/rv32mi-p*\n" + " ~somebody/GitHub/Tests/isa/rv32um-p*\n" + " which are relevant for architecture RV32IMU\n" + " and will leave a transcript of each test's simulation output in files like\n" + " ./Logs/rv32ui-p-add.log\n" + " Each log will contain an instruction trace (because of the 'v1' arg).\n" +) + +import sys +import os +import stat +import subprocess + +# ================================================================ + +num_executed = 0 +num_passed = 0 + +# DEBUGGING ONLY: This exclude list allows skipping some specific test +# Tuba seems to hang on this test +exclude_list = ["rv64ud-p-move"] + +# ================================================================ + +def main (argv = None): + print ("Use flag --help or --h for a help message") + if ((len (argv) <= 1) or + (argv [1] == '-h') or (argv [1] == '--help') or + (len (argv) < 5)): + + sys.stdout.write (usage_line) + sys.stdout.write ("\n") + return 0 + + # Simulation executable + if not (os.path.exists (argv [1])): + sys.stderr.write ("ERROR: The given simulation path does not seem to exist?\n") + sys.stderr.write (" Simulation path: " + sim_path + "\n") + sys.exit (1) + args_dict = {'sim_path': os.path.abspath (os.path.normpath (argv [1]))} + + # Repo in which to find ELFs and elf_to_hex executable + if (not os.path.exists (argv [2])): + sys.stderr.write ("ERROR: repo directory ({0}) does not exist?\n".format (argv [2])) + sys.stdout.write ("\n") + sys.stdout.write (usage_line) + sys.stdout.write ("\n") + return 1 + repo = os.path.abspath (os.path.normpath (argv [2])) + + elfs_path = os.path.join (repo, "Tests", "isa") + if (not os.path.exists (elfs_path)): + sys.stderr.write ("ERROR: ELFs directory ({0}) does not exist?\n".format (elfs_path)) + sys.stdout.write ("\n") + sys.stdout.write (usage_line) + sys.stdout.write ("\n") + return 1 + args_dict ['elfs_path'] = elfs_path + + # Logs directory + logs_path = os.path.abspath (os.path.normpath (argv [3])) + if not (os.path.exists (logs_path) and os.path.isdir (logs_path)): + print ("Creating dir: " + logs_path) + os.mkdir (logs_path) + args_dict ['logs_path'] = logs_path + + # Architecture string and implied ISA test families + arch_string = extract_arch_string (argv [4]) + if (arch_string == None): + sys.stderr.write ("ERROR: no architecture specified?\n") + sys.stdout.write ("\n") + sys.stdout.write (usage_line) + sys.stdout.write ("\n") + return 1 + args_dict ['arch_string'] = arch_string + + test_families = select_test_families (arch_string) + print ("Testing the following families of ISA tests") + for tf in test_families: + print (" " + tf) + args_dict ['test_families'] = test_families + + # Optional verbosity + verbosity = 0 + for arg in argv [5:]: + if arg == "v1": + verbosity = 1 + elif arg == "v2": + verbosity = 2 + args_dict ['verbosity'] = verbosity + + # elf_to_hex executable + elf_to_hex_exe = os.path.join (repo, "Tests", "elf_to_hex", "elf_to_hex") + if (not os.path.exists (elf_to_hex_exe)): + sys.stderr.write ("ERROR: elf_to_hex executable does not exist?\n") + sys.stderr.write (" at {0}\n".format (elf_to_hex_exe)) + sys.stdout.write ("\n") + sys.stdout.write (usage_line) + sys.stdout.write ("\n") + return 1 + args_dict ['elf_to_hex_exe'] = elf_to_hex_exe + + sys.stdout.write ("Parameters:\n") + for key in iter (args_dict): + sys.stdout.write (" {0:<16}: {1}\n".format (key, args_dict [key])) + + # Perform the recursive traversal + max_level = 20 + traverse (max_level, 0, args_dict) + + # Write final statistics + sys.stdout.write ("Executed: {0} tests\n".format (num_executed)) + sys.stdout.write ("PASS: {0} tests\n".format (num_passed)) + + +# ================================================================ +# Extract the architecture string (e.g., RV64AIMSU) from the string s + +def extract_arch_string (s): + s1 = s.upper() + j_rv32 = s1.find ("RV32") + j_rv64 = s1.find ("RV64") + + if (j_rv32 >= 0): + j = j_rv32 + elif (j_rv64 >= 0): + j = j_rv64 + else: + sys.stderr.write ("ERROR: cannot find architecture string beginning with RV32 or RV64 in: \n") + sys.stderr.write (" '" + s + "'\n") + sys.exit (1) + + k = j + 4 + rv = s1 [j:k] + + extns = "" + while (k < len (s)): + ch = s [k] + if (ch < "A") or (ch > "Z"): break + extns = extns + s [k] + k = k + 1 + + arch = rv + extns + return arch + +# ================================================================ +# Select ISA test families based on provided arch string + +def select_test_families (arch): + arch = arch.lower () + families = [] + + if arch.find ("32") != -1: + rv = 32 + families = ["rv32ui-p", "rv32mi-p"] + else: + rv = 64 + families = ["rv64ui-p", "rv64mi-p"] + + if (arch.find ("s") != -1): + s = True + if rv == 32: + families.extend (["rv32ui-v", "rv32si-p"]) + else: + families.extend (["rv64ui-v", "rv64si-p"]) + else: + s = False + + def add_family (extension): + if (arch.find (extension) != -1): + if rv == 32: + families.append ("rv32u" + extension + "-p") + if s: + families.append ("rv32u" + extension + "-v") + else: + families.append ("rv64u" + extension + "-p") + if s: + families.append ("rv64u" + extension + "-v") + + add_family ("m") + add_family ("a") + add_family ("f") + add_family ("d") + add_family ("c") + + return families + +# ================================================================ +# Recursively traverse the dir tree below elf_path and process each file + +def traverse (max_level, level, args_dict): + elfs_path = args_dict ['elfs_path'] + st = os.stat (elfs_path) + is_dir = stat.S_ISDIR (st.st_mode) + is_regular = stat.S_ISREG (st.st_mode) + do_foreachfile_function (level, is_dir, is_regular, args_dict) + if is_dir and level < max_level: + for entry in os.listdir (elfs_path): + elfs_path1 = os.path.join (elfs_path, entry) + args_dict1 = args_dict.copy () + args_dict1 ['elfs_path'] = elfs_path1 + traverse (max_level, level + 1, args_dict1) + return 0 + +# ================================================================ +# This function is applied to every path in the +# recursive traversal + +def do_foreachfile_function (level, is_dir, is_regular, args_dict): + prefix = "" + for j in range (level): prefix = " " + prefix + elfs_path = args_dict ['elfs_path'] + + # directories + if is_dir: + print ("%s%d dir %s" % (prefix, level, elfs_path)) + + # regular files + elif is_regular: + dirname = os.path.dirname (elfs_path) + basename = os.path.basename (elfs_path) + # print ("%s%d %s" % (prefix, level, elfs_path)) + do_regular_file_function (level, dirname, basename, args_dict) + + # other files + else: + print ("%s%d Unknown file type: %s" % (prefix, level, os.path.basename (elfs_path))) + +# ================================================================ +# For each ELF file, execute it in the RISC-V simulator + +def do_regular_file_function (level, dirname, basename, args_dict): + global num_executed + global num_passed + + full_filename = os.path.join (dirname, basename) + + # Ignore filename if has any extension (heuristic that it's not an ELF file) + if "." in basename: return + + # Ignore filename if does not match test_families + ignore = True + for x in args_dict ['test_families']: + if basename.find (x) != -1: ignore = False + if ignore: + # print ("Ignoring file: " + full_filename) + return + + TEMPORARY FILTER WHILE DEBUGGING: + if basename in exclude_list: + sys.stdout.write ("WARNING: TEMPORARY FILTER IN EFFECT; REMOVE AFTER DEBUGGING\n") + sys.stdout.write (" This test is in exclude_list: {0}\n".format (basename)) + return + + # For debugging only + # prefix = "" + # for j in range (level): prefix = " " + prefix + # sys.stdout.write ("{0}{1} ACTION: {2}\n".format (prefix, level, full_filename)) + + # Construct the commands for sub-process execution + command1 = [args_dict ['elf_to_hex_exe'], full_filename, "Mem.hex"] + + command2 = [args_dict ['sim_path'], "+tohost"] + if (args_dict ['verbosity'] == 1): command2.append ("+v1") + elif (args_dict ['verbosity'] == 2): command2.append ("+v2") + + num_executed = num_executed + 1 + sys.stdout.write ("Test {0}: {1}\n".format (num_executed, basename)) + + sys.stdout.write (" Exec:") + for x in command1: + sys.stdout.write (" {0}".format (x)) + sys.stdout.write ("\n") + + sys.stdout.write (" Exec:") + for x in command2: + sys.stdout.write (" {0}".format (x)) + sys.stdout.write ("\n") + + # Run command as a sub-process + completed_process1 = run_command (command1) + completed_process2 = run_command (command2) + passed = completed_process2.stdout.find ("PASS") != -1 + if passed: + sys.stdout.write (" PASS") + num_passed = num_passed + 1 + else: + sys.stdout.write (" FAIL") + + # Save stdouts in log file + log_filename = os.path.join (args_dict ['logs_path'], basename + ".log") + sys.stdout.write (" Writing log: {0}\n".format (log_filename)) + + fd = open (log_filename, 'w') + fd.write (completed_process1.stdout) + fd.write (completed_process2.stdout) + fd.close () + + # If Tandem Verification trace file was created, save it as well + if os.path.exists ("./trace_out.dat"): + trace_filename = os.path.join (args_dict ['logs_path'], basename + ".trace_data") + os.rename ("./trace_out.dat", trace_filename) + sys.stdout.write (" Trace output saved in: {0}\n".format (trace_filename)) + + return + +# ================================================================ +# This is a wrapper around 'subprocess.run' because of an annoying +# incompatible change in moving from Python 3.5 to 3.6 + +def run_command (command): + python_minor_version = sys.version_info [1] + if python_minor_version < 6: + # Python 3.5 and earlier + result = subprocess.run (args = command, + bufsize = 0, + stdout = subprocess.PIPE, + stderr = subprocess.STDOUT, + universal_newlines = True) + else: + # Python 3.6 and later + result = subprocess.run (args = command, + bufsize = 0, + stdout = subprocess.PIPE, + stderr = subprocess.STDOUT, + encoding='utf-8') + return result + +# ================================================================ +# For non-interactive invocations, call main() and use its return value +# as the exit code. +if __name__ == '__main__': + sys.exit (main (sys.argv)) diff --git a/Tests/elf_to_hex/Makefile b/Tests/elf_to_hex/Makefile new file mode 100644 index 0000000..9375211 --- /dev/null +++ b/Tests/elf_to_hex/Makefile @@ -0,0 +1,17 @@ +# Makefile to create an elf_to_hex executable. +# The executable creates mem-hex files containing 32-Byte words + +CC = gcc + +elf_to_hex: elf_to_hex.c + gcc -g -o elf_to_hex elf_to_hex.c -lelf + +# ================================================================ + +.PHONY: clean +clean: + rm -f *~ + +.PHONY: full_clean +full_clean: + rm -f *~ elf_to_hex diff --git a/Tests/elf_to_hex/README.txt b/Tests/elf_to_hex/README.txt new file mode 100644 index 0000000..2524060 --- /dev/null +++ b/Tests/elf_to_hex/README.txt @@ -0,0 +1,12 @@ +Copyright (c) 2018 Bluespec, Inc. All Rights Reserved + +This standalone C program takes two command-line arguments, and ELF +filename and a Mem Hex filename. It reads the ELF file and writes out +the Mem Hex file. + +It assumes a memory that is: + - 16 MiB or 256 MiB (see C file) + - Each word is 32 bytes (256 bits) + - It starts at byte address 0x_8000_0000 + +All of these can be changed by editing the C file. diff --git a/Tests/elf_to_hex/elf_to_hex.c b/Tests/elf_to_hex/elf_to_hex.c new file mode 100644 index 0000000..e148c37 --- /dev/null +++ b/Tests/elf_to_hex/elf_to_hex.c @@ -0,0 +1,346 @@ +// Copyright (c) 2013-2018 Bluespec, Inc. All Rights Reserved + +// This program reads an ELF file and outputs a Verilog hex memory +// image file (suitable for reading using $readmemh). + +// ================================================================ +// Standard C includes + +#include +#include +#include +#include +#include +#include +#include + +// ================================================================ +// Memory buffer into which we load the ELF file before +// writing it back out to the output file. + +// 1 Gigabyte size +// #define MAX_MEM_SIZE (((uint64_t) 0x400) * ((uint64_t) 0x400) * ((uint64_t) 0x400)) +#define MAX_MEM_SIZE ((uint64_t) 0x90000000) + +uint8_t mem_buf [MAX_MEM_SIZE]; + +// Features of the ELF binary +int bitwidth; +uint64_t min_addr; +uint64_t max_addr; + +uint64_t pc_start; // Addr of label '_start' +uint64_t pc_exit; // Addr of label 'exit' +uint64_t tohost_addr; // Addr of label 'tohost' + +// ================================================================ +// Load an ELF file. + +void c_mem_load_elf (char *elf_filename, + const char *start_symbol, + const char *exit_symbol, + const char *tohost_symbol) +{ + int fd; + // int n_initialized = 0; + Elf *e; + + // Default start, exit and tohost symbols + if (start_symbol == NULL) + start_symbol = "_start"; + if (exit_symbol == NULL) + exit_symbol = "exit"; + if (tohost_symbol == NULL) + tohost_symbol = "tohost"; + + // Verify the elf library version + if (elf_version (EV_CURRENT) == EV_NONE) { + fprintf (stderr, "ERROR: c_mem_load_elf: Failed to initialize the libelfg library!\n"); + exit (1); + } + + // Open the file for reading + fd = open (elf_filename, O_RDONLY, 0); + if (fd < 0) { + fprintf (stderr, "ERROR: c_mem_load_elf: could not open elf input file: %s\n", elf_filename); + exit (1); + } + + // Initialize the Elf pointer with the open file + e = elf_begin (fd, ELF_C_READ, NULL); + if (e == NULL) { + fprintf (stderr, "ERROR: c_mem_load_elf: elf_begin() initialization failed!\n"); + exit (1); + } + + // Verify that the file is an ELF file + if (elf_kind (e) != ELF_K_ELF) { + elf_end (e); + fprintf (stderr, "ERROR: c_mem_load_elf: specified file '%s' is not an ELF file!\n", elf_filename); + exit (1); + } + + // Get the ELF header + GElf_Ehdr ehdr; + if (gelf_getehdr (e, & ehdr) == NULL) { + elf_end (e); + fprintf (stderr, "ERROR: c_mem_load_elf: get_getehdr() failed: %s\n", elf_errmsg(-1)); + exit (1); + } + + // Is this a 32b or 64 ELF? + if (gelf_getclass (e) == ELFCLASS32) { + fprintf (stdout, "c_mem_load_elf: %s is a 32-bit ELF file\n", elf_filename); + bitwidth = 32; + } + else if (gelf_getclass (e) == ELFCLASS64) { + fprintf (stdout, "c_mem_load_elf: %s is a 64-bit ELF file\n", elf_filename); + bitwidth = 64; + } + else { + fprintf (stderr, "ERROR: c_mem_load_elf: ELF file '%s' is not 32b or 64b\n", elf_filename); + elf_end (e); + exit (1); + } + + // Verify we are dealing with a RISC-V ELF + if (ehdr.e_machine != 243) { // EM_RISCV is not defined, but this returns 243 when used with a valid elf file. + elf_end (e); + fprintf (stderr, "ERROR: c_mem_load_elf: %s is not a RISC-V ELF file\n", elf_filename); + exit (1); + } + + // Verify we are dealing with a little endian ELF + if (ehdr.e_ident[EI_DATA] != ELFDATA2LSB) { + elf_end (e); + fprintf (stderr, + "ERROR: c_mem_load_elf: %s is a big-endian 64-bit RISC-V executable which is not supported\n", + elf_filename); + exit (1); + } + + // Grab the string section index + size_t shstrndx; + shstrndx = ehdr.e_shstrndx; + + // Iterate through each of the sections looking for code that should be loaded + Elf_Scn *scn = 0; + GElf_Shdr shdr; + + min_addr = 0xFFFFFFFFFFFFFFFFllu; + max_addr = 0x0000000000000000llu; + pc_start = 0xFFFFFFFFFFFFFFFFllu; + pc_exit = 0xFFFFFFFFFFFFFFFFllu; + tohost_addr = 0xFFFFFFFFFFFFFFFFllu; + + while ((scn = elf_nextscn (e,scn)) != NULL) { + // get the header information for this section + gelf_getshdr (scn, & shdr); + + char *sec_name = elf_strptr (e, shstrndx, shdr.sh_name); + fprintf (stdout, "Section %-16s: ", sec_name); + + Elf_Data *data = 0; + // If we find a code/data section, load it into the model + if ( ((shdr.sh_type == SHT_PROGBITS) + || (shdr.sh_type == SHT_NOBITS) + || (shdr.sh_type == SHT_INIT_ARRAY) + || (shdr.sh_type == SHT_FINI_ARRAY)) + && ((shdr.sh_flags & SHF_WRITE) + || (shdr.sh_flags & SHF_ALLOC) + || (shdr.sh_flags & SHF_EXECINSTR))) { + data = elf_getdata (scn, data); + + // n_initialized += data->d_size; + if (shdr.sh_addr < min_addr) + min_addr = shdr.sh_addr; + if (max_addr < (shdr.sh_addr + data->d_size - 1)) // shdr.sh_size + 4)) + max_addr = shdr.sh_addr + data->d_size - 1; // shdr.sh_size + 4; + + if (max_addr >= MAX_MEM_SIZE) { + fprintf (stdout, "INTERNAL ERROR: max_addr (0x%0" PRIx64 ") > buffer size (0x%0" PRIx64 ")\n", + max_addr, MAX_MEM_SIZE); + fprintf (stdout, " Please increase the #define in this program, recompile, and run again\n"); + fprintf (stdout, " Abandoning this run\n"); + exit (1); + } + + if (shdr.sh_type != SHT_NOBITS) { + memcpy (& (mem_buf [shdr.sh_addr]), data->d_buf, data->d_size); + } + fprintf (stdout, "addr %16" PRIx64 " to addr %16" PRIx64 "; size 0x%8lx (= %0ld) bytes\n", + shdr.sh_addr, shdr.sh_addr + data->d_size, data->d_size, data->d_size); + + } + + // If we find the symbol table, search for symbols of interest + else if (shdr.sh_type == SHT_SYMTAB) { + fprintf (stdout, "Searching for addresses of '%s', '%s' and '%s' symbols\n", + start_symbol, exit_symbol, tohost_symbol); + + // Get the section data + data = elf_getdata (scn, data); + + // Get the number of symbols in this section + int symbols = shdr.sh_size / shdr.sh_entsize; + + // search for the uart_default symbols we need to potentially modify. + GElf_Sym sym; + int i; + for (i = 0; i < symbols; ++i) { + // get the symbol data + gelf_getsym (data, i, &sym); + + // get the name of the symbol + char *name = elf_strptr (e, shdr.sh_link, sym.st_name); + + // Look for, and remember PC of the start symbol + if (strcmp (name, start_symbol) == 0) { + pc_start = sym.st_value; + } + // Look for, and remember PC of the exit symbol + else if (strcmp (name, exit_symbol) == 0) { + pc_exit = sym.st_value; + } + // Look for, and remember addr of 'tohost' symbol + else if (strcmp (name, tohost_symbol) == 0) { + tohost_addr = sym.st_value; + } + } + + FILE *fp_symbol_table = fopen ("symbol_table.txt", "w"); + if (fp_symbol_table != NULL) { + fprintf (stdout, "Writing symbols to: symbol_table.txt\n"); + if (pc_start == -1) + fprintf (stdout, " No '_start' label found\n"); + else + fprintf (fp_symbol_table, "_start 0x%0" PRIx64 "\n", pc_start); + + if (pc_exit == -1) + fprintf (stdout, " No 'exit' label found\n"); + else + fprintf (fp_symbol_table, "exit 0x%0" PRIx64 "\n", pc_exit); + + if (tohost_addr == -1) + fprintf (stdout, " No 'tohost' symbol found\n"); + else + fprintf (fp_symbol_table, "tohost 0x%0" PRIx64 "\n", tohost_addr); + + fclose (fp_symbol_table); + } + } + else { + fprintf (stdout, "Ignored\n"); + } + } + + elf_end (e); + + fprintf (stdout, "Min addr: %16" PRIx64 " (hex)\n", min_addr); + fprintf (stdout, "Max addr: %16" PRIx64 " (hex)\n", max_addr); +} + +// ================================================================ +// Min and max byte addrs for various mem sizes + +#define BASE_ADDR_B 0x80000000lu + +// For 16 MB memory at 0x_8000_0000 +#define MIN_MEM_ADDR_16MB BASE_ADDR_B +#define MAX_MEM_ADDR_16MB (BASE_ADDR_B + 0x1000000lu) + +// For 256 MB memory at 0x_8000_0000 +#define MIN_MEM_ADDR_256MB BASE_ADDR_B +#define MAX_MEM_ADDR_256MB (BASE_ADDR_B + 0x10000000lu) + +// ================================================================ + +// Write out from word containing addr1 to word containing addr2 +void write_mem_hex_file (FILE *fp, uint64_t addr1, uint64_t addr2) +{ + const uint64_t bits_per_raw_mem_word = 256; + uint64_t bytes_per_raw_mem_word = bits_per_raw_mem_word / 8; // 32 + uint64_t raw_mem_word_align_mask = (~ ((uint64_t) (bytes_per_raw_mem_word - 1))); + + fprintf (stdout, "Subtracting 0x%08" PRIx64 " base from addresses\n", BASE_ADDR_B); + + // Align the start and end addrs to raw mem words + uint64_t a1 = (addr1 & raw_mem_word_align_mask); + uint64_t a2 = ((addr2 + bytes_per_raw_mem_word - 1) & raw_mem_word_align_mask); + + fprintf (fp, "@%07" PRIx64 " // raw_mem addr; byte addr: %08" PRIx64 "\n", + ((a1 - BASE_ADDR_B) / bytes_per_raw_mem_word), + a1 - BASE_ADDR_B); + + uint64_t addr; + for (addr = a1; addr < a2; addr += bytes_per_raw_mem_word) { + for (int j = (bytes_per_raw_mem_word - 1); j >= 0; j--) + fprintf (fp, "%02x", mem_buf [addr+j]); + fprintf (fp, " // raw_mem addr %08" PRIx64 "; byte addr %08" PRIx64 "\n", + ((addr - BASE_ADDR_B) / bytes_per_raw_mem_word), + (addr - BASE_ADDR_B)); + } + + // Write last word, if necessary, to avoid warnings about missing locations + if (addr < (MAX_MEM_ADDR_256MB - bytes_per_raw_mem_word)) { + addr = MAX_MEM_ADDR_256MB - bytes_per_raw_mem_word; + fprintf (fp, "@%07" PRIx64 " // last raw_mem addr; byte addr: %08" PRIx64 "\n", + ((addr - BASE_ADDR_B) / bytes_per_raw_mem_word), + addr - BASE_ADDR_B); + for (int j = (bytes_per_raw_mem_word - 1); j >= 0; j--) + fprintf (fp, "%02x", 0); + fprintf (fp, " // raw_mem addr %08" PRIx64 "; byte addr %08" PRIx64 "\n", + ((addr - BASE_ADDR_B) / bytes_per_raw_mem_word), + (addr - BASE_ADDR_B)); + } +} + +// ================================================================ + +void print_usage (FILE *fp, int argc, char *argv []) +{ + fprintf (fp, "Usage:\n"); + fprintf (fp, " %s --help\n", argv [0]); + fprintf (fp, " %s \n", argv [0]); + fprintf (fp, "Reads ELF file and writes a Verilog Hex Memory image file\n"); + fprintf (fp, "ELF file should have addresses within this range:\n"); + fprintf (fp, "< Max: 0x%8" PRIx64 "\n", MAX_MEM_ADDR_256MB); + fprintf (fp, ">= Min: 0x%8" PRIx64 "\n", MIN_MEM_ADDR_256MB); +} + +// ================================================================ + +int main (int argc, char *argv []) +{ + if ((argc == 2) && (strcmp (argv [1], "--help") == 0)) { + print_usage (stdout, argc, argv); + return 0; + } + else if (argc != 3) { + print_usage (stderr, argc, argv); + return 1; + } + + // Zero out the memory buffer before loading the ELF file + bzero (mem_buf, MAX_MEM_SIZE); + // bzero (& (mem_buf [BASE_ADDR_B]), MAX_MEM_SIZE - BASE_ADDR_B); + + c_mem_load_elf (argv [1], "_start", "exit", "tohost"); + + if ((min_addr < BASE_ADDR_B) || (MAX_MEM_ADDR_256MB <= max_addr)) { + print_usage (stderr, argc, argv); + exit (1); + } + + FILE *fp_out = fopen (argv [2], "w"); + if (fp_out == NULL) { + fprintf (stderr, "ERROR: unable to open file '%s' for output\n", argv [2]); + return 1; + } + + fprintf (stdout, "Writing mem hex to file '%s'\n", argv [2]); + write_mem_hex_file (fp_out, BASE_ADDR_B, max_addr); + // write_mem_hex_file (fp_out, BASE_ADDR_B, MAX_MEM_ADDR_256MB); + + fclose (fp_out); +} diff --git a/Tests/isa/rv32mi-p-breakpoint b/Tests/isa/rv32mi-p-breakpoint new file mode 100644 index 0000000..3f70918 Binary files /dev/null and b/Tests/isa/rv32mi-p-breakpoint differ diff --git a/Tests/isa/rv32mi-p-breakpoint.dump b/Tests/isa/rv32mi-p-breakpoint.dump new file mode 100644 index 0000000..cab05cc --- /dev/null +++ b/Tests/isa/rv32mi-p-breakpoint.dump @@ -0,0 +1,207 @@ + +rv32mi-p-breakpoint: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 210f0f13 addi t5,t5,528 # 80000230 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00200193 li gp,2 +8000010c: 7a001073 csrw tselect,zero +80000110: 7a0025f3 csrr a1,tselect +80000114: 10b01863 bne zero,a1,80000224 +80000118: 7a102573 csrr a0,tdata1 +8000011c: 01c55513 srli a0,a0,0x1c +80000120: 00200593 li a1,2 +80000124: 10b51063 bne a0,a1,80000224 +80000128: 00000617 auipc a2,0x0 +8000012c: 02060613 addi a2,a2,32 # 80000148 +80000130: 7a261073 csrw tdata2,a2 +80000134: 04400513 li a0,68 +80000138: 7a151073 csrw tdata1,a0 +8000013c: 7a1025f3 csrr a1,tdata1 +80000140: 7ff5f593 andi a1,a1,2047 +80000144: 00b51863 bne a0,a1,80000154 +80000148: 0c000463 beqz zero,80000210 +8000014c: 00300193 li gp,3 +80000150: 00062503 lw a0,0(a2) +80000154: 00400193 li gp,4 +80000158: 04100513 li a0,65 +8000015c: 7a151073 csrw tdata1,a0 +80000160: 7a1025f3 csrr a1,tdata1 +80000164: 7ff5f593 andi a1,a1,2047 +80000168: 02b51063 bne a0,a1,80000188 +8000016c: 00002617 auipc a2,0x2 +80000170: e9460613 addi a2,a2,-364 # 80002000 +80000174: 7a261073 csrw tdata2,a2 +80000178: 00062603 lw a2,0(a2) +8000017c: 08060a63 beqz a2,80000210 +80000180: 00500193 li gp,5 +80000184: 00062023 sw zero,0(a2) +80000188: 00600193 li gp,6 +8000018c: 04200513 li a0,66 +80000190: 7a151073 csrw tdata1,a0 +80000194: 7a1025f3 csrr a1,tdata1 +80000198: 7ff5f593 andi a1,a1,2047 +8000019c: 06b51863 bne a0,a1,8000020c +800001a0: 00c62023 sw a2,0(a2) +800001a4: 00700193 li gp,7 +800001a8: 00062603 lw a2,0(a2) +800001ac: 06061263 bnez a2,80000210 +800001b0: 00100513 li a0,1 +800001b4: 7a051073 csrw tselect,a0 +800001b8: 7a0025f3 csrr a1,tselect +800001bc: 06b51463 bne a0,a1,80000224 +800001c0: 7a102573 csrr a0,tdata1 +800001c4: 01c55513 srli a0,a0,0x1c +800001c8: 00200593 li a1,2 +800001cc: 04b51c63 bne a0,a1,80000224 +800001d0: 04100513 li a0,65 +800001d4: 7a151073 csrw tdata1,a0 +800001d8: 00002697 auipc a3,0x2 +800001dc: e2c68693 addi a3,a3,-468 # 80002004 +800001e0: 7a269073 csrw tdata2,a3 +800001e4: 00800193 li gp,8 +800001e8: 0006a683 lw a3,0(a3) +800001ec: 02068263 beqz a3,80000210 +800001f0: 00a00193 li gp,10 +800001f4: 00002617 auipc a2,0x2 +800001f8: e0c60613 addi a2,a2,-500 # 80002000 +800001fc: 00c62023 sw a2,0(a2) +80000200: 00b00193 li gp,11 +80000204: 00062603 lw a2,0(a2) +80000208: 00061463 bnez a2,80000210 +8000020c: 00301c63 bne zero,gp,80000224 + +80000210 : +80000210: 0ff0000f fence +80000214: 00018063 beqz gp,80000214 +80000218: 00119193 slli gp,gp,0x1 +8000021c: 0011e193 ori gp,gp,1 +80000220: 00000073 ecall + +80000224 : +80000224: 0ff0000f fence +80000228: 00100193 li gp,1 +8000022c: 00000073 ecall + +80000230 : +80000230: 0011f293 andi t0,gp,1 +80000234: fc029ee3 bnez t0,80000210 +80000238: 00300293 li t0,3 +8000023c: 34202373 csrr t1,mcause +80000240: fc6298e3 bne t0,t1,80000210 +80000244: 341022f3 csrr t0,mepc +80000248: 00428293 addi t0,t0,4 +8000024c: 34129073 csrw mepc,t0 +80000250: 30200073 mret +80000254: c0001073 unimp +80000258: 0000 unimp +8000025a: 0000 unimp +8000025c: 0000 unimp +8000025e: 0000 unimp +80000260: 0000 unimp +80000262: 0000 unimp +80000264: 0000 unimp +80000266: 0000 unimp +80000268: 0000 unimp +8000026a: 0000 unimp +8000026c: 0000 unimp +8000026e: 0000 unimp +80000270: 0000 unimp +80000272: 0000 unimp +80000274: 0000 unimp +80000276: 0000 unimp +80000278: 0000 unimp +8000027a: 0000 unimp +8000027c: 0000 unimp +8000027e: 0000 unimp +80000280: 0000 unimp +80000282: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 0000 unimp + +80002004 : +80002004: 0000 unimp +80002006: 0000 unimp +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32mi-p-csr b/Tests/isa/rv32mi-p-csr new file mode 100644 index 0000000..d910212 Binary files /dev/null and b/Tests/isa/rv32mi-p-csr differ diff --git a/Tests/isa/rv32mi-p-csr.dump b/Tests/isa/rv32mi-p-csr.dump new file mode 100644 index 0000000..fad851e --- /dev/null +++ b/Tests/isa/rv32mi-p-csr.dump @@ -0,0 +1,241 @@ + +rv32mi-p-csr: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 248f0f13 addi t5,t5,584 # 80000268 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 3401d073 csrwi mscratch,3 + +8000010c : +8000010c: 34002573 csrr a0,mscratch +80000110: 00300e93 li t4,3 +80000114: 00200193 li gp,2 +80000118: 13d51863 bne a0,t4,80000248 + +8000011c : +8000011c: 3400f5f3 csrrci a1,mscratch,1 +80000120: 00300e93 li t4,3 +80000124: 00300193 li gp,3 +80000128: 13d59063 bne a1,t4,80000248 + +8000012c : +8000012c: 34026673 csrrsi a2,mscratch,4 +80000130: 00200e93 li t4,2 +80000134: 00400193 li gp,4 +80000138: 11d61863 bne a2,t4,80000248 + +8000013c : +8000013c: 340156f3 csrrwi a3,mscratch,2 +80000140: 00600e93 li t4,6 +80000144: 00500193 li gp,5 +80000148: 11d69063 bne a3,t4,80000248 + +8000014c : +8000014c: 0bad2537 lui a0,0xbad2 +80000150: dea50513 addi a0,a0,-534 # bad1dea <_start-0x7452e216> +80000154: 340515f3 csrrw a1,mscratch,a0 +80000158: 00200e93 li t4,2 +8000015c: 00600193 li gp,6 +80000160: 0fd59463 bne a1,t4,80000248 + +80000164 : +80000164: 00002537 lui a0,0x2 +80000168: dea50513 addi a0,a0,-534 # 1dea <_start-0x7fffe216> +8000016c: 34053573 csrrc a0,mscratch,a0 +80000170: 0bad2eb7 lui t4,0xbad2 +80000174: deae8e93 addi t4,t4,-534 # bad1dea <_start-0x7452e216> +80000178: 00700193 li gp,7 +8000017c: 0dd51663 bne a0,t4,80000248 + +80000180 : +80000180: 0000c537 lui a0,0xc +80000184: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111> +80000188: 34052573 csrrs a0,mscratch,a0 +8000018c: 0bad0eb7 lui t4,0xbad0 +80000190: 00800193 li gp,8 +80000194: 0bd51a63 bne a0,t4,80000248 + +80000198 : +80000198: 34002573 csrr a0,mscratch +8000019c: 0badceb7 lui t4,0xbadc +800001a0: eefe8e93 addi t4,t4,-273 # badbeef <_start-0x74524111> +800001a4: 00900193 li gp,9 +800001a8: 0bd51063 bne a0,t4,80000248 +800001ac: 30102573 csrr a0,misa +800001b0: 02057513 andi a0,a0,32 +800001b4: 02050863 beqz a0,800001e4 +800001b8: 000065b7 lui a1,0x6 +800001bc: 3005a073 csrs mstatus,a1 +800001c0: f0000053 fmv.w.x ft0,zero +800001c4: 3005b073 csrc mstatus,a1 +800001c8: 00002597 auipc a1,0x2 +800001cc: e3858593 addi a1,a1,-456 # 80002000 + +800001d0 : +800001d0: 0005a027 fsw ft0,0(a1) +800001d4: 0005a503 lw a0,0(a1) +800001d8: 00100e93 li t4,1 +800001dc: 00a00193 li gp,10 +800001e0: 07d51463 bne a0,t4,80000248 +800001e4: 30102573 csrr a0,misa +800001e8: 01455513 srli a0,a0,0x14 +800001ec: 00157513 andi a0,a0,1 +800001f0: 04050463 beqz a0,80000238 +800001f4: 000022b7 lui t0,0x2 +800001f8: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> +800001fc: 3002b073 csrc mstatus,t0 +80000200: 00000297 auipc t0,0x0 +80000204: 01028293 addi t0,t0,16 # 80000210 +80000208: 34129073 csrw mepc,t0 +8000020c: 30200073 mret + +80000210 : +80000210: 0ff00513 li a0,255 +80000214: c0001573 csrrw a0,cycle,zero +80000218: 0ff00e93 li t4,255 +8000021c: 00b00193 li gp,11 +80000220: 03d51463 bne a0,t4,80000248 + +80000224 : +80000224: 0ff00513 li a0,255 +80000228: 30002573 csrr a0,mstatus +8000022c: 0ff00e93 li t4,255 +80000230: 00c00193 li gp,12 +80000234: 01d51a63 bne a0,t4,80000248 + +80000238 : +80000238: 0ff0000f fence +8000023c: 00100193 li gp,1 +80000240: 00000073 ecall +80000244: 00301c63 bne zero,gp,8000025c + +80000248 : +80000248: 0ff0000f fence +8000024c: 00018063 beqz gp,8000024c +80000250: 00119193 slli gp,gp,0x1 +80000254: 0011e193 ori gp,gp,1 +80000258: 00000073 ecall + +8000025c : +8000025c: 0ff0000f fence +80000260: 00100193 li gp,1 +80000264: 00000073 ecall + +80000268 : +80000268: 00900293 li t0,9 +8000026c: 0051e663 bltu gp,t0,80000278 +80000270: 00b00293 li t0,11 +80000274: 0032fe63 bleu gp,t0,80000290 +80000278: 342022f3 csrr t0,mcause +8000027c: 00800313 li t1,8 +80000280: fc6294e3 bne t0,t1,80000248 +80000284: 0ff0000f fence +80000288: 00100193 li gp,1 +8000028c: 00000073 ecall + +80000290 : +80000290: 342022f3 csrr t0,mcause +80000294: 00200313 li t1,2 +80000298: fa6298e3 bne t0,t1,80000248 +8000029c: 341022f3 csrr t0,mepc +800002a0: 00428293 addi t0,t0,4 +800002a4: 34129073 csrw mepc,t0 +800002a8: 30200073 mret +800002ac: c0001073 unimp +800002b0: 0000 unimp +800002b2: 0000 unimp +800002b4: 0000 unimp +800002b6: 0000 unimp +800002b8: 0000 unimp +800002ba: 0000 unimp +800002bc: 0000 unimp +800002be: 0000 unimp +800002c0: 0000 unimp +800002c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0001 nop +80002002: 0000 unimp +80002004: 0000 unimp +80002006: 0000 unimp +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32mi-p-illegal b/Tests/isa/rv32mi-p-illegal new file mode 100644 index 0000000..6ba885a Binary files /dev/null and b/Tests/isa/rv32mi-p-illegal differ diff --git a/Tests/isa/rv32mi-p-illegal.dump b/Tests/isa/rv32mi-p-illegal.dump new file mode 100644 index 0000000..e1c163d --- /dev/null +++ b/Tests/isa/rv32mi-p-illegal.dump @@ -0,0 +1,383 @@ + +rv32mi-p-illegal: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 2e0f0f13 addi t5,t5,736 # 80000300 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00200193 li gp,2 + +8000010c : +8000010c: 0000 unimp +8000010e: 0000 unimp +80000110: 0f40006f j 80000204 +80000114: 000022b7 lui t0,0x2 +80000118: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> +8000011c: 3002b073 csrc mstatus,t0 +80000120: 00001337 lui t1,0x1 +80000124: 80030313 addi t1,t1,-2048 # 800 <_start-0x7ffff800> +80000128: 30032073 csrs mstatus,t1 +8000012c: 300023f3 csrr t2,mstatus +80000130: 0053f3b3 and t2,t2,t0 +80000134: 0e731263 bne t1,t2,80000218 + +80000138 : +80000138: 34415073 csrwi mip,2 +8000013c: 30415073 csrwi mie,2 +80000140: 00000297 auipc t0,0x0 +80000144: 1c128293 addi t0,t0,449 # 80000301 +80000148: 30529473 csrrw s0,mtvec,t0 +8000014c: 305022f3 csrr t0,mtvec +80000150: 0012f293 andi t0,t0,1 +80000154: 00028663 beqz t0,80000160 +80000158: 30046073 csrsi mstatus,8 +8000015c: 0000006f j 8000015c + +80000160 : +80000160: 30541073 csrw mtvec,s0 +80000164: 30315073 csrwi mideleg,2 +80000168: 00000297 auipc t0,0x0 +8000016c: 02828293 addi t0,t0,40 # 80000190 +80000170: 34129073 csrw mepc,t0 +80000174: 000022b7 lui t0,0x2 +80000178: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> +8000017c: 3002b073 csrc mstatus,t0 +80000180: 00001337 lui t1,0x1 +80000184: 80030313 addi t1,t1,-2048 # 800 <_start-0x7ffff800> +80000188: 30032073 csrs mstatus,t1 +8000018c: 30200073 mret +80000190: 10500073 wfi + +80000194 : +80000194: 0000 unimp +80000196: 0000 unimp +80000198: 06c0006f j 80000204 + +8000019c : +8000019c: 10500073 wfi +800001a0: 0640006f j 80000204 +800001a4: 12000073 sfence.vma +800001a8: 180022f3 csrr t0,satp + +800001ac : +800001ac: 0000 unimp +800001ae: 0000 unimp +800001b0: 0540006f j 80000204 + +800001b4 : +800001b4: 12000073 sfence.vma +800001b8: 04c0006f j 80000204 + +800001bc : +800001bc: 180022f3 csrr t0,satp +800001c0: 0440006f j 80000204 +800001c4: 00000297 auipc t0,0x0 +800001c8: 02028293 addi t0,t0,32 # 800001e4 +800001cc: 14129073 csrw sepc,t0 +800001d0: 10000293 li t0,256 +800001d4: 1002a073 csrs sstatus,t0 +800001d8: 02000293 li t0,32 +800001dc: 1002b073 csrc sstatus,t0 +800001e0: 10200073 sret + +800001e4 : +800001e4: 0000 unimp +800001e6: 0000 unimp +800001e8: 01c0006f j 80000204 +800001ec: 00000297 auipc t0,0x0 +800001f0: 01028293 addi t0,t0,16 # 800001fc +800001f4: 14129073 csrw sepc,t0 + +800001f8 : +800001f8: 10200073 sret +800001fc: 0080006f j 80000204 +80000200: 00301c63 bne zero,gp,80000218 + +80000204 : +80000204: 0ff0000f fence +80000208: 00018063 beqz gp,80000208 +8000020c: 00119193 slli gp,gp,0x1 +80000210: 0011e193 ori gp,gp,1 +80000214: 00000073 ecall + +80000218 : +80000218: 0ff0000f fence +8000021c: 00100193 li gp,1 +80000220: 00000073 ecall +80000224: 00000013 nop +80000228: 00000013 nop +8000022c: 00000013 nop +80000230: 00000013 nop +80000234: 00000013 nop +80000238: 00000013 nop +8000023c: 00000013 nop +80000240: 00000013 nop +80000244: 00000013 nop +80000248: 00000013 nop +8000024c: 00000013 nop +80000250: 00000013 nop +80000254: 00000013 nop +80000258: 00000013 nop +8000025c: 00000013 nop +80000260: 00000013 nop +80000264: 00000013 nop +80000268: 00000013 nop +8000026c: 00000013 nop +80000270: 00000013 nop +80000274: 00000013 nop +80000278: 00000013 nop +8000027c: 00000013 nop +80000280: 00000013 nop +80000284: 00000013 nop +80000288: 00000013 nop +8000028c: 00000013 nop +80000290: 00000013 nop +80000294: 00000013 nop +80000298: 00000013 nop +8000029c: 00000013 nop +800002a0: 00000013 nop +800002a4: 00000013 nop +800002a8: 00000013 nop +800002ac: 00000013 nop +800002b0: 00000013 nop +800002b4: 00000013 nop +800002b8: 00000013 nop +800002bc: 00000013 nop +800002c0: 00000013 nop +800002c4: 00000013 nop +800002c8: 00000013 nop +800002cc: 00000013 nop +800002d0: 00000013 nop +800002d4: 00000013 nop +800002d8: 00000013 nop +800002dc: 00000013 nop +800002e0: 00000013 nop +800002e4: 00000013 nop +800002e8: 00000013 nop +800002ec: 00000013 nop +800002f0: 00000013 nop +800002f4: 00000013 nop +800002f8: 00000013 nop +800002fc: 00000013 nop + +80000300 : +80000300: 0400006f j 80000340 +80000304: e5dff06f j 80000160 +80000308: efdff06f j 80000204 +8000030c: ef9ff06f j 80000204 +80000310: ef5ff06f j 80000204 +80000314: ef1ff06f j 80000204 +80000318: eedff06f j 80000204 +8000031c: ee9ff06f j 80000204 +80000320: ee5ff06f j 80000204 +80000324: ee1ff06f j 80000204 +80000328: eddff06f j 80000204 +8000032c: ed9ff06f j 80000204 +80000330: ed5ff06f j 80000204 +80000334: ed1ff06f j 80000204 +80000338: ecdff06f j 80000204 +8000033c: ec9ff06f j 80000204 + +80000340 : +80000340: 00200313 li t1,2 +80000344: 342022f3 csrr t0,mcause +80000348: ea629ee3 bne t0,t1,80000204 +8000034c: 341022f3 csrr t0,mepc +80000350: 343023f3 csrr t2,mbadaddr +80000354: 00038c63 beqz t2,8000036c +80000358: 0002de03 lhu t3,0(t0) +8000035c: 0022de83 lhu t4,2(t0) +80000360: 010e9e93 slli t4,t4,0x10 +80000364: 01de6e33 or t3,t3,t4 +80000368: e9c39ee3 bne t2,t3,80000204 +8000036c: 00000317 auipc t1,0x0 +80000370: da030313 addi t1,t1,-608 # 8000010c +80000374: 04628e63 beq t0,t1,800003d0 +80000378: 00000317 auipc t1,0x0 +8000037c: e1c30313 addi t1,t1,-484 # 80000194 +80000380: 04628e63 beq t0,t1,800003dc +80000384: 00000317 auipc t1,0x0 +80000388: e1830313 addi t1,t1,-488 # 8000019c +8000038c: 04628263 beq t0,t1,800003d0 +80000390: 00000317 auipc t1,0x0 +80000394: e1c30313 addi t1,t1,-484 # 800001ac +80000398: 04628863 beq t0,t1,800003e8 +8000039c: 00000317 auipc t1,0x0 +800003a0: e1830313 addi t1,t1,-488 # 800001b4 +800003a4: 02628663 beq t0,t1,800003d0 +800003a8: 00000317 auipc t1,0x0 +800003ac: e1430313 addi t1,t1,-492 # 800001bc +800003b0: 02628063 beq t0,t1,800003d0 +800003b4: 00000317 auipc t1,0x0 +800003b8: e3030313 addi t1,t1,-464 # 800001e4 +800003bc: 02628c63 beq t0,t1,800003f4 +800003c0: 00000317 auipc t1,0x0 +800003c4: e3830313 addi t1,t1,-456 # 800001f8 +800003c8: 02628c63 beq t0,t1,80000400 +800003cc: e39ff06f j 80000204 +800003d0: 00828293 addi t0,t0,8 +800003d4: 34129073 csrw mepc,t0 +800003d8: 30200073 mret +800003dc: 00200337 lui t1,0x200 +800003e0: 30032073 csrs mstatus,t1 +800003e4: fedff06f j 800003d0 +800003e8: 00100337 lui t1,0x100 +800003ec: 30032073 csrs mstatus,t1 +800003f0: fe1ff06f j 800003d0 +800003f4: 00400337 lui t1,0x400 +800003f8: 30032073 csrs mstatus,t1 +800003fc: fd5ff06f j 800003d0 +80000400: fd1ff06f j 800003d0 +80000404: c0001073 unimp +80000408: 0000 unimp +8000040a: 0000 unimp +8000040c: 0000 unimp +8000040e: 0000 unimp +80000410: 0000 unimp +80000412: 0000 unimp +80000414: 0000 unimp +80000416: 0000 unimp +80000418: 0000 unimp +8000041a: 0000 unimp +8000041c: 0000 unimp +8000041e: 0000 unimp +80000420: 0000 unimp +80000422: 0000 unimp +80000424: 0000 unimp +80000426: 0000 unimp +80000428: 0000 unimp +8000042a: 0000 unimp +8000042c: 0000 unimp +8000042e: 0000 unimp +80000430: 0000 unimp +80000432: 0000 unimp +80000434: 0000 unimp +80000436: 0000 unimp +80000438: 0000 unimp +8000043a: 0000 unimp +8000043c: 0000 unimp +8000043e: 0000 unimp +80000440: 0000 unimp +80000442: 0000 unimp +80000444: 0000 unimp +80000446: 0000 unimp +80000448: 0000 unimp +8000044a: 0000 unimp +8000044c: 0000 unimp +8000044e: 0000 unimp +80000450: 0000 unimp +80000452: 0000 unimp +80000454: 0000 unimp +80000456: 0000 unimp +80000458: 0000 unimp +8000045a: 0000 unimp +8000045c: 0000 unimp +8000045e: 0000 unimp +80000460: 0000 unimp +80000462: 0000 unimp +80000464: 0000 unimp +80000466: 0000 unimp +80000468: 0000 unimp +8000046a: 0000 unimp +8000046c: 0000 unimp +8000046e: 0000 unimp +80000470: 0000 unimp +80000472: 0000 unimp +80000474: 0000 unimp +80000476: 0000 unimp +80000478: 0000 unimp +8000047a: 0000 unimp +8000047c: 0000 unimp +8000047e: 0000 unimp +80000480: 0000 unimp +80000482: 0000 unimp +80000484: 0000 unimp +80000486: 0000 unimp +80000488: 0000 unimp +8000048a: 0000 unimp +8000048c: 0000 unimp +8000048e: 0000 unimp +80000490: 0000 unimp +80000492: 0000 unimp +80000494: 0000 unimp +80000496: 0000 unimp +80000498: 0000 unimp +8000049a: 0000 unimp +8000049c: 0000 unimp +8000049e: 0000 unimp +800004a0: 0000 unimp +800004a2: 0000 unimp diff --git a/Tests/isa/rv32mi-p-ma_addr b/Tests/isa/rv32mi-p-ma_addr new file mode 100644 index 0000000..8edb6d7 Binary files /dev/null and b/Tests/isa/rv32mi-p-ma_addr differ diff --git a/Tests/isa/rv32mi-p-ma_addr.dump b/Tests/isa/rv32mi-p-ma_addr.dump new file mode 100644 index 0000000..acc23b8 --- /dev/null +++ b/Tests/isa/rv32mi-p-ma_addr.dump @@ -0,0 +1,363 @@ + +rv32mi-p-ma_addr: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 290f0f13 addi t5,t5,656 # 800002b0 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00002417 auipc s0,0x2 +8000010c: ef840413 addi s0,s0,-264 # 80002000 +80000110: 00400493 li s1,4 +80000114: 00200193 li gp,2 +80000118: 00000397 auipc t2,0x0 +8000011c: 01c38393 addi t2,t2,28 # 80000134 +80000120: 00140313 addi t1,s0,1 +80000124: 00141303 lh t1,1(s0) +80000128: ffffc3b7 lui t2,0xffffc +8000012c: bcc38393 addi t2,t2,-1076 # ffffbbcc <_end+0x7fff9abc> +80000130: 14731e63 bne t1,t2,8000028c +80000134: 00300193 li gp,3 +80000138: 00000397 auipc t2,0x0 +8000013c: 01c38393 addi t2,t2,28 # 80000154 +80000140: 00140313 addi t1,s0,1 +80000144: 00145303 lhu t1,1(s0) +80000148: 0000c3b7 lui t2,0xc +8000014c: bcc38393 addi t2,t2,-1076 # bbcc <_start-0x7fff4434> +80000150: 12731e63 bne t1,t2,8000028c +80000154: 00400193 li gp,4 +80000158: 00000397 auipc t2,0x0 +8000015c: 01c38393 addi t2,t2,28 # 80000174 +80000160: 00140313 addi t1,s0,1 +80000164: 00142303 lw t1,1(s0) +80000168: 99aac3b7 lui t2,0x99aac +8000016c: bcc38393 addi t2,t2,-1076 # 99aabbcc <_end+0x19aa9abc> +80000170: 10731e63 bne t1,t2,8000028c +80000174: 00500193 li gp,5 +80000178: 00000397 auipc t2,0x0 +8000017c: 01c38393 addi t2,t2,28 # 80000194 +80000180: 00240313 addi t1,s0,2 +80000184: 00242303 lw t1,2(s0) +80000188: 8899b3b7 lui t2,0x8899b +8000018c: abb38393 addi t2,t2,-1349 # 8899aabb <_end+0x89989ab> +80000190: 0e731e63 bne t1,t2,8000028c +80000194: 00600193 li gp,6 +80000198: 00000397 auipc t2,0x0 +8000019c: 01c38393 addi t2,t2,28 # 800001b4 +800001a0: 00340313 addi t1,s0,3 +800001a4: 00342303 lw t1,3(s0) +800001a8: 7788a3b7 lui t2,0x7788a +800001ac: 9aa38393 addi t2,t2,-1622 # 778899aa <_start-0x8776656> +800001b0: 0c731e63 bne t1,t2,8000028c +800001b4: 00600493 li s1,6 +800001b8: 01600193 li gp,22 +800001bc: 00000397 auipc t2,0x0 +800001c0: 03038393 addi t2,t2,48 # 800001ec +800001c4: 00140313 addi t1,s0,1 +800001c8: 000410a3 sh zero,1(s0) +800001cc: 00040303 lb t1,0(s0) +800001d0: 0a030e63 beqz t1,8000028c +800001d4: 00340303 lb t1,3(s0) +800001d8: 0a030a63 beqz t1,8000028c +800001dc: 00140303 lb t1,1(s0) +800001e0: 0a031663 bnez t1,8000028c +800001e4: 00240303 lb t1,2(s0) +800001e8: 0a031263 bnez t1,8000028c +800001ec: 01700193 li gp,23 +800001f0: 00000397 auipc t2,0x0 +800001f4: 03038393 addi t2,t2,48 # 80000220 +800001f8: 00540313 addi t1,s0,5 +800001fc: 000422a3 sw zero,5(s0) +80000200: 00440303 lb t1,4(s0) +80000204: 08030463 beqz t1,8000028c +80000208: 00940303 lb t1,9(s0) +8000020c: 08030063 beqz t1,8000028c +80000210: 00540303 lb t1,5(s0) +80000214: 06031c63 bnez t1,8000028c +80000218: 00840303 lb t1,8(s0) +8000021c: 06031863 bnez t1,8000028c +80000220: 01800193 li gp,24 +80000224: 00000397 auipc t2,0x0 +80000228: 03038393 addi t2,t2,48 # 80000254 +8000022c: 00a40313 addi t1,s0,10 +80000230: 00042523 sw zero,10(s0) +80000234: 00940303 lb t1,9(s0) +80000238: 04030a63 beqz t1,8000028c +8000023c: 00e40303 lb t1,14(s0) +80000240: 04030663 beqz t1,8000028c +80000244: 00a40303 lb t1,10(s0) +80000248: 04031263 bnez t1,8000028c +8000024c: 00d40303 lb t1,13(s0) +80000250: 02031e63 bnez t1,8000028c +80000254: 01900193 li gp,25 +80000258: 00000397 auipc t2,0x0 +8000025c: 03038393 addi t2,t2,48 # 80000288 +80000260: 00f40313 addi t1,s0,15 +80000264: 000427a3 sw zero,15(s0) +80000268: 00e40303 lb t1,14(s0) +8000026c: 02030063 beqz t1,8000028c +80000270: 01340303 lb t1,19(s0) +80000274: 00030c63 beqz t1,8000028c +80000278: 00f40303 lb t1,15(s0) +8000027c: 00031863 bnez t1,8000028c +80000280: 01240303 lb t1,18(s0) +80000284: 00031463 bnez t1,8000028c +80000288: 00301c63 bne zero,gp,800002a0 + +8000028c : +8000028c: 0ff0000f fence +80000290: 00018063 beqz gp,80000290 +80000294: 00119193 slli gp,gp,0x1 +80000298: 0011e193 ori gp,gp,1 +8000029c: 00000073 ecall + +800002a0 : +800002a0: 0ff0000f fence +800002a4: 00100193 li gp,1 +800002a8: 00000073 ecall +800002ac: 00000013 nop + +800002b0 : +800002b0: 342022f3 csrr t0,mcause +800002b4: fc929ce3 bne t0,s1,8000028c +800002b8: 343022f3 csrr t0,mbadaddr +800002bc: fc6298e3 bne t0,t1,8000028c +800002c0: 00028283 lb t0,0(t0) +800002c4: fc0284e3 beqz t0,8000028c +800002c8: 34139073 csrw mepc,t2 +800002cc: 30200073 mret +800002d0: c0001073 unimp +800002d4: 0000 unimp +800002d6: 0000 unimp +800002d8: 0000 unimp +800002da: 0000 unimp +800002dc: 0000 unimp +800002de: 0000 unimp +800002e0: 0000 unimp +800002e2: 0000 unimp +800002e4: 0000 unimp +800002e6: 0000 unimp +800002e8: 0000 unimp +800002ea: 0000 unimp +800002ec: 0000 unimp +800002ee: 0000 unimp +800002f0: 0000 unimp +800002f2: 0000 unimp +800002f4: 0000 unimp +800002f6: 0000 unimp +800002f8: 0000 unimp +800002fa: 0000 unimp +800002fc: 0000 unimp +800002fe: 0000 unimp +80000300: 0000 unimp +80000302: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: ccdd beqz s1,800020be +80002002: 8899aabb 0x8899aabb +80002006: 44556677 0x44556677 +8000200a: ee112233 0xee112233 +8000200e: eeff 0xeeff +80002010: 5050 lw a2,36(s0) +80002012: 5050 lw a2,36(s0) +80002014: 5050 lw a2,36(s0) +80002016: 5050 lw a2,36(s0) +80002018: 5050 lw a2,36(s0) +8000201a: 5050 lw a2,36(s0) +8000201c: 5050 lw a2,36(s0) +8000201e: 5050 lw a2,36(s0) +80002020: 5050 lw a2,36(s0) +80002022: 5050 lw a2,36(s0) +80002024: 5050 lw a2,36(s0) +80002026: 5050 lw a2,36(s0) +80002028: 5050 lw a2,36(s0) +8000202a: 5050 lw a2,36(s0) +8000202c: 5050 lw a2,36(s0) +8000202e: 5050 lw a2,36(s0) +80002030: 5050 lw a2,36(s0) +80002032: 5050 lw a2,36(s0) +80002034: 5050 lw a2,36(s0) +80002036: 5050 lw a2,36(s0) +80002038: 5050 lw a2,36(s0) +8000203a: 5050 lw a2,36(s0) +8000203c: 5050 lw a2,36(s0) +8000203e: 5050 lw a2,36(s0) +80002040: 5050 lw a2,36(s0) +80002042: 5050 lw a2,36(s0) +80002044: 5050 lw a2,36(s0) +80002046: 5050 lw a2,36(s0) +80002048: 5050 lw a2,36(s0) +8000204a: 5050 lw a2,36(s0) +8000204c: 5050 lw a2,36(s0) +8000204e: 5050 lw a2,36(s0) +80002050: 5050 lw a2,36(s0) +80002052: 5050 lw a2,36(s0) +80002054: 5050 lw a2,36(s0) +80002056: 5050 lw a2,36(s0) +80002058: 5050 lw a2,36(s0) +8000205a: 5050 lw a2,36(s0) +8000205c: 5050 lw a2,36(s0) +8000205e: 5050 lw a2,36(s0) +80002060: 5050 lw a2,36(s0) +80002062: 5050 lw a2,36(s0) +80002064: 5050 lw a2,36(s0) +80002066: 5050 lw a2,36(s0) +80002068: 5050 lw a2,36(s0) +8000206a: 5050 lw a2,36(s0) +8000206c: 5050 lw a2,36(s0) +8000206e: 5050 lw a2,36(s0) +80002070: 5050 lw a2,36(s0) +80002072: 5050 lw a2,36(s0) +80002074: 5050 lw a2,36(s0) +80002076: 5050 lw a2,36(s0) +80002078: 5050 lw a2,36(s0) +8000207a: 5050 lw a2,36(s0) +8000207c: 5050 lw a2,36(s0) +8000207e: 5050 lw a2,36(s0) +80002080: 5050 lw a2,36(s0) +80002082: 5050 lw a2,36(s0) +80002084: 5050 lw a2,36(s0) +80002086: 5050 lw a2,36(s0) +80002088: 5050 lw a2,36(s0) +8000208a: 5050 lw a2,36(s0) +8000208c: 5050 lw a2,36(s0) +8000208e: 5050 lw a2,36(s0) +80002090: 5050 lw a2,36(s0) +80002092: 5050 lw a2,36(s0) +80002094: 5050 lw a2,36(s0) +80002096: 5050 lw a2,36(s0) +80002098: 5050 lw a2,36(s0) +8000209a: 5050 lw a2,36(s0) +8000209c: 5050 lw a2,36(s0) +8000209e: 5050 lw a2,36(s0) +800020a0: 5050 lw a2,36(s0) +800020a2: 5050 lw a2,36(s0) +800020a4: 5050 lw a2,36(s0) +800020a6: 5050 lw a2,36(s0) +800020a8: 5050 lw a2,36(s0) +800020aa: 5050 lw a2,36(s0) +800020ac: 5050 lw a2,36(s0) +800020ae: 5050 lw a2,36(s0) +800020b0: 5050 lw a2,36(s0) +800020b2: 5050 lw a2,36(s0) +800020b4: 5050 lw a2,36(s0) +800020b6: 5050 lw a2,36(s0) +800020b8: 5050 lw a2,36(s0) +800020ba: 5050 lw a2,36(s0) +800020bc: 5050 lw a2,36(s0) +800020be: 5050 lw a2,36(s0) +800020c0: 5050 lw a2,36(s0) +800020c2: 5050 lw a2,36(s0) +800020c4: 5050 lw a2,36(s0) +800020c6: 5050 lw a2,36(s0) +800020c8: 5050 lw a2,36(s0) +800020ca: 5050 lw a2,36(s0) +800020cc: 5050 lw a2,36(s0) +800020ce: 5050 lw a2,36(s0) +800020d0: 5050 lw a2,36(s0) +800020d2: 5050 lw a2,36(s0) +800020d4: 5050 lw a2,36(s0) +800020d6: 5050 lw a2,36(s0) +800020d8: 5050 lw a2,36(s0) +800020da: 5050 lw a2,36(s0) +800020dc: 5050 lw a2,36(s0) +800020de: 5050 lw a2,36(s0) +800020e0: 5050 lw a2,36(s0) +800020e2: 5050 lw a2,36(s0) +800020e4: 5050 lw a2,36(s0) +800020e6: 5050 lw a2,36(s0) +800020e8: 5050 lw a2,36(s0) +800020ea: 5050 lw a2,36(s0) +800020ec: 5050 lw a2,36(s0) +800020ee: 5050 lw a2,36(s0) +800020f0: 5050 lw a2,36(s0) +800020f2: 5050 lw a2,36(s0) +800020f4: 5050 lw a2,36(s0) +800020f6: 5050 lw a2,36(s0) +800020f8: 5050 lw a2,36(s0) +800020fa: 5050 lw a2,36(s0) +800020fc: 5050 lw a2,36(s0) +800020fe: 5050 lw a2,36(s0) +80002100: 5050 lw a2,36(s0) +80002102: 5050 lw a2,36(s0) +80002104: 5050 lw a2,36(s0) +80002106: 5050 lw a2,36(s0) +80002108: 5050 lw a2,36(s0) +8000210a: 5050 lw a2,36(s0) +8000210c: 5050 lw a2,36(s0) +8000210e: 0050 addi a2,sp,4 diff --git a/Tests/isa/rv32mi-p-ma_fetch b/Tests/isa/rv32mi-p-ma_fetch new file mode 100644 index 0000000..d273032 Binary files /dev/null and b/Tests/isa/rv32mi-p-ma_fetch differ diff --git a/Tests/isa/rv32mi-p-ma_fetch.dump b/Tests/isa/rv32mi-p-ma_fetch.dump new file mode 100644 index 0000000..b7125a0 --- /dev/null +++ b/Tests/isa/rv32mi-p-ma_fetch.dump @@ -0,0 +1,219 @@ + +rv32mi-p-ma_fetch: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 208f0f13 addi t5,t5,520 # 80000228 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00200193 li gp,2 +8000010c: 00000313 li t1,0 +80000110: 00000297 auipc t0,0x0 +80000114: 00c28293 addi t0,t0,12 # 8000011c +80000118: 00228367 jalr t1,2(t0) +8000011c: a011 j 80000120 +8000011e: a019 j 80000124 +80000120: 0e80006f j 80000208 +80000124: 00300193 li gp,3 +80000128: 00000297 auipc t0,0x0 +8000012c: 00c28293 addi t0,t0,12 # 80000134 +80000130: 00128367 jalr t1,1(t0) +80000134: 0080006f j 8000013c +80000138: 0d00006f j 80000208 +8000013c: 00400193 li gp,4 +80000140: 00000313 li t1,0 +80000144: 00000297 auipc t0,0x0 +80000148: 00c28293 addi t0,t0,12 # 80000150 +8000014c: 00328367 jalr t1,3(t0) +80000150: a011 j 80000154 +80000152: a019 j 80000158 +80000154: 0b40006f j 80000208 +80000158: 00500193 li gp,5 +8000015c: 00000313 li t1,0 +80000160: 00000297 auipc t0,0x0 +80000164: 00c28293 addi t0,t0,12 # 8000016c +80000168: 0060036f jal t1,8000016e +8000016c: a011 j 80000170 +8000016e: a019 j 80000174 +80000170: 0980006f j 80000208 +80000174: 00600193 li gp,6 +80000178: 00000313 li t1,0 +8000017c: 00000297 auipc t0,0x0 +80000180: 00c28293 addi t0,t0,12 # 80000188 +80000184: 00000363 beqz zero,8000018a +80000188: a011 j 8000018c +8000018a: a019 j 80000190 +8000018c: 07c0006f j 80000208 +80000190: 00700193 li gp,7 +80000194: 00001563 bnez zero,8000019e +80000198: 00c0006f j 800001a4 +8000019c: a009 j 8000019e +8000019e: a009 j 800001a0 +800001a0: 0680006f j 80000208 +800001a4: 00800193 li gp,8 +800001a8: 301023f3 csrr t2,misa +800001ac: 0043f393 andi t2,t2,4 +800001b0: 04038863 beqz t2,80000200 +800001b4: 0001 nop +800001b6: 30127073 csrci misa,4 +800001ba: 0001 nop +800001bc: 301023f3 csrr t2,misa +800001c0: 0043f393 andi t2,t2,4 +800001c4: 04038263 beqz t2,80000208 +800001c8: 00000297 auipc t0,0x0 +800001cc: 03428293 addi t0,t0,52 # 800001fc +800001d0: ffe28293 addi t0,t0,-2 +800001d4: 34129073 csrw mepc,t0 +800001d8: 30127073 csrci misa,4 +800001dc: 301023f3 csrr t2,misa +800001e0: 0043f393 andi t2,t2,4 +800001e4: 00039e63 bnez t2,80000200 +800001e8: 000023b7 lui t2,0x2 +800001ec: 80038393 addi t2,t2,-2048 # 1800 <_start-0x7fffe800> +800001f0: 3003a073 csrs mstatus,t2 +800001f4: 30200073 mret +800001f8: 00000263 beqz zero,800001fc +800001fc: 30126073 csrsi misa,4 +80000200: 01c0006f j 8000021c +80000204: 00301c63 bne zero,gp,8000021c + +80000208 : +80000208: 0ff0000f fence +8000020c: 00018063 beqz gp,8000020c +80000210: 00119193 slli gp,gp,0x1 +80000214: 0011e193 ori gp,gp,1 +80000218: 00000073 ecall + +8000021c : +8000021c: 0ff0000f fence +80000220: 00100193 li gp,1 +80000224: 00000073 ecall + +80000228 : +80000228: 00200513 li a0,2 +8000022c: 02a18063 beq gp,a0,8000024c +80000230: 00400513 li a0,4 +80000234: 00a18c63 beq gp,a0,8000024c +80000238: 00500513 li a0,5 +8000023c: 00a18863 beq gp,a0,8000024c +80000240: 00600513 li a0,6 +80000244: 00a18463 beq gp,a0,8000024c +80000248: fc1ff06f j 80000208 +8000024c: fa031ee3 bnez t1,80000208 +80000250: 00000593 li a1,0 +80000254: 34202573 csrr a0,mcause +80000258: fab518e3 bne a0,a1,80000208 +8000025c: 341025f3 csrr a1,mepc +80000260: 00458593 addi a1,a1,4 +80000264: fab292e3 bne t0,a1,80000208 +80000268: 34302573 csrr a0,mbadaddr +8000026c: 00050663 beqz a0,80000278 +80000270: ffe50513 addi a0,a0,-2 +80000274: f8551ae3 bne a0,t0,80000208 +80000278: 00c58593 addi a1,a1,12 +8000027c: 34159073 csrw mepc,a1 +80000280: 30200073 mret +80000284: c0001073 unimp +80000288: 0000 unimp +8000028a: 0000 unimp +8000028c: 0000 unimp +8000028e: 0000 unimp +80000290: 0000 unimp +80000292: 0000 unimp +80000294: 0000 unimp +80000296: 0000 unimp +80000298: 0000 unimp +8000029a: 0000 unimp +8000029c: 0000 unimp +8000029e: 0000 unimp +800002a0: 0000 unimp +800002a2: 0000 unimp +800002a4: 0000 unimp +800002a6: 0000 unimp +800002a8: 0000 unimp +800002aa: 0000 unimp +800002ac: 0000 unimp +800002ae: 0000 unimp +800002b0: 0000 unimp +800002b2: 0000 unimp +800002b4: 0000 unimp +800002b6: 0000 unimp +800002b8: 0000 unimp +800002ba: 0000 unimp +800002bc: 0000 unimp +800002be: 0000 unimp +800002c0: 0000 unimp +800002c2: 0000 unimp diff --git a/Tests/isa/rv32mi-p-mcsr b/Tests/isa/rv32mi-p-mcsr new file mode 100644 index 0000000..975e1ff Binary files /dev/null and b/Tests/isa/rv32mi-p-mcsr differ diff --git a/Tests/isa/rv32mi-p-mcsr.dump b/Tests/isa/rv32mi-p-mcsr.dump new file mode 100644 index 0000000..105796d --- /dev/null +++ b/Tests/isa/rv32mi-p-mcsr.dump @@ -0,0 +1,126 @@ + +rv32mi-p-mcsr: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 30102573 csrr a0,misa +8000010c: 01e55513 srli a0,a0,0x1e +80000110: 00100e93 li t4,1 +80000114: 00200193 li gp,2 +80000118: 03d51863 bne a0,t4,80000148 + +8000011c : +8000011c: f1402573 csrr a0,mhartid +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 03d51063 bne a0,t4,80000148 +8000012c: f1302573 csrr a0,mimpid +80000130: f1202573 csrr a0,marchid +80000134: f1102573 csrr a0,mvendorid +80000138: 00000293 li t0,0 +8000013c: 3052a073 csrs mtvec,t0 +80000140: 3412a073 csrs mepc,t0 +80000144: 00301c63 bne zero,gp,8000015c + +80000148 : +80000148: 0ff0000f fence +8000014c: 00018063 beqz gp,8000014c +80000150: 00119193 slli gp,gp,0x1 +80000154: 0011e193 ori gp,gp,1 +80000158: 00000073 ecall + +8000015c : +8000015c: 0ff0000f fence +80000160: 00100193 li gp,1 +80000164: 00000073 ecall +80000168: c0001073 unimp +8000016c: 0000 unimp +8000016e: 0000 unimp +80000170: 0000 unimp +80000172: 0000 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32mi-p-sbreak b/Tests/isa/rv32mi-p-sbreak new file mode 100644 index 0000000..c8a0fc3 Binary files /dev/null and b/Tests/isa/rv32mi-p-sbreak differ diff --git a/Tests/isa/rv32mi-p-sbreak.dump b/Tests/isa/rv32mi-p-sbreak.dump new file mode 100644 index 0000000..f895195 --- /dev/null +++ b/Tests/isa/rv32mi-p-sbreak.dump @@ -0,0 +1,130 @@ + +rv32mi-p-sbreak: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 118f0f13 addi t5,t5,280 # 80000138 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00200193 li gp,2 + +8000010c : +8000010c: 00100073 ebreak +80000110: 0080006f j 80000118 +80000114: 00301c63 bne zero,gp,8000012c + +80000118 : +80000118: 0ff0000f fence +8000011c: 00018063 beqz gp,8000011c +80000120: 00119193 slli gp,gp,0x1 +80000124: 0011e193 ori gp,gp,1 +80000128: 00000073 ecall + +8000012c : +8000012c: 0ff0000f fence +80000130: 00100193 li gp,1 +80000134: 00000073 ecall + +80000138 : +80000138: 00300313 li t1,3 +8000013c: 342022f3 csrr t0,mcause +80000140: fc629ce3 bne t0,t1,80000118 +80000144: 00000317 auipc t1,0x0 +80000148: fc830313 addi t1,t1,-56 # 8000010c +8000014c: 341022f3 csrr t0,mepc +80000150: fc6294e3 bne t0,t1,80000118 +80000154: fd9ff06f j 8000012c +80000158: c0001073 unimp +8000015c: 0000 unimp +8000015e: 0000 unimp +80000160: 0000 unimp +80000162: 0000 unimp +80000164: 0000 unimp +80000166: 0000 unimp +80000168: 0000 unimp +8000016a: 0000 unimp +8000016c: 0000 unimp +8000016e: 0000 unimp +80000170: 0000 unimp +80000172: 0000 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32mi-p-scall b/Tests/isa/rv32mi-p-scall new file mode 100644 index 0000000..21a70fd Binary files /dev/null and b/Tests/isa/rv32mi-p-scall differ diff --git a/Tests/isa/rv32mi-p-scall.dump b/Tests/isa/rv32mi-p-scall.dump new file mode 100644 index 0000000..769cd3b --- /dev/null +++ b/Tests/isa/rv32mi-p-scall.dump @@ -0,0 +1,147 @@ + +rv32mi-p-scall: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 158f0f13 addi t5,t5,344 # 80000178 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00200193 li gp,2 +8000010c: 00800313 li t1,8 +80000110: 000022b7 lui t0,0x2 +80000114: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> +80000118: 3002b073 csrc mstatus,t0 +8000011c: 30002373 csrr t1,mstatus +80000120: 0062f2b3 and t0,t0,t1 +80000124: 00028463 beqz t0,8000012c +80000128: 00b00313 li t1,11 +8000012c: 000022b7 lui t0,0x2 +80000130: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800> +80000134: 3002b073 csrc mstatus,t0 +80000138: 00000297 auipc t0,0x0 +8000013c: 01028293 addi t0,t0,16 # 80000148 +80000140: 34129073 csrw mepc,t0 +80000144: 30200073 mret +80000148: 00100193 li gp,1 + +8000014c : +8000014c: 00000073 ecall +80000150: 0080006f j 80000158 +80000154: 00301c63 bne zero,gp,8000016c + +80000158 : +80000158: 0ff0000f fence +8000015c: 00018063 beqz gp,8000015c +80000160: 00119193 slli gp,gp,0x1 +80000164: 0011e193 ori gp,gp,1 +80000168: 00000073 ecall + +8000016c : +8000016c: 0ff0000f fence +80000170: 00100193 li gp,1 +80000174: 00000073 ecall + +80000178 : +80000178: 342022f3 csrr t0,mcause +8000017c: fc629ee3 bne t0,t1,80000158 +80000180: 00000397 auipc t2,0x0 +80000184: fcc38393 addi t2,t2,-52 # 8000014c +80000188: 341022f3 csrr t0,mepc +8000018c: fc7296e3 bne t0,t2,80000158 +80000190: fddff06f j 8000016c +80000194: c0001073 unimp +80000198: 0000 unimp +8000019a: 0000 unimp +8000019c: 0000 unimp +8000019e: 0000 unimp +800001a0: 0000 unimp +800001a2: 0000 unimp +800001a4: 0000 unimp +800001a6: 0000 unimp +800001a8: 0000 unimp +800001aa: 0000 unimp +800001ac: 0000 unimp +800001ae: 0000 unimp +800001b0: 0000 unimp +800001b2: 0000 unimp +800001b4: 0000 unimp +800001b6: 0000 unimp +800001b8: 0000 unimp +800001ba: 0000 unimp +800001bc: 0000 unimp +800001be: 0000 unimp +800001c0: 0000 unimp +800001c2: 0000 unimp diff --git a/Tests/isa/rv32mi-p-shamt b/Tests/isa/rv32mi-p-shamt new file mode 100644 index 0000000..2ef7adb Binary files /dev/null and b/Tests/isa/rv32mi-p-shamt differ diff --git a/Tests/isa/rv32mi-p-shamt.dump b/Tests/isa/rv32mi-p-shamt.dump new file mode 100644 index 0000000..00b0f9a --- /dev/null +++ b/Tests/isa/rv32mi-p-shamt.dump @@ -0,0 +1,128 @@ + +rv32mi-p-shamt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 130f0f13 addi t5,t5,304 # 80000150 +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00100513 li a0,1 +8000010c: 01051513 slli a0,a0,0x10 +80000110: 00010eb7 lui t4,0x10 +80000114: 00200193 li gp,2 +80000118: 01d51c63 bne a0,t4,80000130 + +8000011c : +8000011c: 02051513 slli a0,a0,0x20 +80000120: 00100e93 li t4,1 +80000124: 00300193 li gp,3 +80000128: 01d01463 bne zero,t4,80000130 +8000012c: 00301c63 bne zero,gp,80000144 + +80000130 : +80000130: 0ff0000f fence +80000134: 00018063 beqz gp,80000134 +80000138: 00119193 slli gp,gp,0x1 +8000013c: 0011e193 ori gp,gp,1 +80000140: 00000073 ecall + +80000144 : +80000144: 0ff0000f fence +80000148: 00100193 li gp,1 +8000014c: 00000073 ecall + +80000150 : +80000150: 00200293 li t0,2 +80000154: fc519ee3 bne gp,t0,80000130 +80000158: 342022f3 csrr t0,mcause +8000015c: 00200313 li t1,2 +80000160: fc6298e3 bne t0,t1,80000130 +80000164: fe1ff06f j 80000144 +80000168: c0001073 unimp +8000016c: 0000 unimp +8000016e: 0000 unimp +80000170: 0000 unimp +80000172: 0000 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32si-p-csr b/Tests/isa/rv32si-p-csr new file mode 100644 index 0000000..50c766b Binary files /dev/null and b/Tests/isa/rv32si-p-csr differ diff --git a/Tests/isa/rv32si-p-csr.dump b/Tests/isa/rv32si-p-csr.dump new file mode 100644 index 0000000..c7eca72 --- /dev/null +++ b/Tests/isa/rv32si-p-csr.dump @@ -0,0 +1,228 @@ + +rv32si-p-csr: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 00000297 auipc t0,0x0 +800000c4: 14c28293 addi t0,t0,332 # 8000020c +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00001537 lui a0,0x1 +800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 02200513 li a0,34 +800000f8: 30352073 csrs mideleg,a0 +800000fc: 00000297 auipc t0,0x0 +80000100: 01428293 addi t0,t0,20 # 80000110 +80000104: 34129073 csrw mepc,t0 +80000108: f1402573 csrr a0,mhartid +8000010c: 30200073 mret +80000110: 1401d073 csrwi sscratch,3 + +80000114 : +80000114: 14002573 csrr a0,sscratch +80000118: 00300e93 li t4,3 +8000011c: 00200193 li gp,2 +80000120: 0dd51663 bne a0,t4,800001ec + +80000124 : +80000124: 1400f5f3 csrrci a1,sscratch,1 +80000128: 00300e93 li t4,3 +8000012c: 00300193 li gp,3 +80000130: 0bd59e63 bne a1,t4,800001ec + +80000134 : +80000134: 14026673 csrrsi a2,sscratch,4 +80000138: 00200e93 li t4,2 +8000013c: 00400193 li gp,4 +80000140: 0bd61663 bne a2,t4,800001ec + +80000144 : +80000144: 140156f3 csrrwi a3,sscratch,2 +80000148: 00600e93 li t4,6 +8000014c: 00500193 li gp,5 +80000150: 09d69e63 bne a3,t4,800001ec + +80000154 : +80000154: 0bad2537 lui a0,0xbad2 +80000158: dea50513 addi a0,a0,-534 # bad1dea <_start-0x7452e216> +8000015c: 140515f3 csrrw a1,sscratch,a0 +80000160: 00200e93 li t4,2 +80000164: 00600193 li gp,6 +80000168: 09d59263 bne a1,t4,800001ec + +8000016c : +8000016c: 00002537 lui a0,0x2 +80000170: dea50513 addi a0,a0,-534 # 1dea <_start-0x7fffe216> +80000174: 14053573 csrrc a0,sscratch,a0 +80000178: 0bad2eb7 lui t4,0xbad2 +8000017c: deae8e93 addi t4,t4,-534 # bad1dea <_start-0x7452e216> +80000180: 00700193 li gp,7 +80000184: 07d51463 bne a0,t4,800001ec + +80000188 : +80000188: 0000c537 lui a0,0xc +8000018c: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111> +80000190: 14052573 csrrs a0,sscratch,a0 +80000194: 0bad0eb7 lui t4,0xbad0 +80000198: 00800193 li gp,8 +8000019c: 05d51863 bne a0,t4,800001ec + +800001a0 : +800001a0: 14002573 csrr a0,sscratch +800001a4: 0badceb7 lui t4,0xbadc +800001a8: eefe8e93 addi t4,t4,-273 # badbeef <_start-0x74524111> +800001ac: 00900193 li gp,9 +800001b0: 03d51e63 bne a0,t4,800001ec +800001b4: 10000293 li t0,256 +800001b8: 1002b073 csrc sstatus,t0 +800001bc: 00000297 auipc t0,0x0 +800001c0: 01028293 addi t0,t0,16 # 800001cc +800001c4: 14129073 csrw sepc,t0 +800001c8: 10200073 sret + +800001cc : +800001cc: 00000013 nop +800001d0: 00000e93 li t4,0 +800001d4: 00c00193 li gp,12 +800001d8: 01d01a63 bne zero,t4,800001ec + +800001dc : +800001dc: 0ff0000f fence +800001e0: 00100193 li gp,1 +800001e4: 00000073 ecall +800001e8: 00301c63 bne zero,gp,80000200 + +800001ec : +800001ec: 0ff0000f fence +800001f0: 00018063 beqz gp,800001f0 +800001f4: 00119193 slli gp,gp,0x1 +800001f8: 0011e193 ori gp,gp,1 +800001fc: 00000073 ecall + +80000200 : +80000200: 0ff0000f fence +80000204: 00100193 li gp,1 +80000208: 00000073 ecall + +8000020c : +8000020c: 00900293 li t0,9 +80000210: 0051e663 bltu gp,t0,8000021c +80000214: 00b00293 li t0,11 +80000218: 0032fe63 bleu gp,t0,80000234 +8000021c: 142022f3 csrr t0,scause +80000220: 00800313 li t1,8 +80000224: fc6294e3 bne t0,t1,800001ec +80000228: 0ff0000f fence +8000022c: 00100193 li gp,1 +80000230: 00000073 ecall + +80000234 : +80000234: 142022f3 csrr t0,scause +80000238: 00200313 li t1,2 +8000023c: fa6298e3 bne t0,t1,800001ec +80000240: 141022f3 csrr t0,sepc +80000244: 00428293 addi t0,t0,4 +80000248: 14129073 csrw sepc,t0 +8000024c: 10200073 sret +80000250: c0001073 unimp +80000254: 0000 unimp +80000256: 0000 unimp +80000258: 0000 unimp +8000025a: 0000 unimp +8000025c: 0000 unimp +8000025e: 0000 unimp +80000260: 0000 unimp +80000262: 0000 unimp +80000264: 0000 unimp +80000266: 0000 unimp +80000268: 0000 unimp +8000026a: 0000 unimp +8000026c: 0000 unimp +8000026e: 0000 unimp +80000270: 0000 unimp +80000272: 0000 unimp +80000274: 0000 unimp +80000276: 0000 unimp +80000278: 0000 unimp +8000027a: 0000 unimp +8000027c: 0000 unimp +8000027e: 0000 unimp +80000280: 0000 unimp +80000282: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0001 nop +80002002: 0000 unimp +80002004: 0000 unimp +80002006: 0000 unimp +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32si-p-dirty b/Tests/isa/rv32si-p-dirty new file mode 100644 index 0000000..d114934 Binary files /dev/null and b/Tests/isa/rv32si-p-dirty differ diff --git a/Tests/isa/rv32si-p-dirty.dump b/Tests/isa/rv32si-p-dirty.dump new file mode 100644 index 0000000..c38f7ae --- /dev/null +++ b/Tests/isa/rv32si-p-dirty.dump @@ -0,0 +1,203 @@ + +rv32si-p-dirty: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 00000f17 auipc t5,0x0 +80000024: 1ccf0f13 addi t5,t5,460 # 800001ec +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 80000537 lui a0,0x80000 +8000010c: 00002597 auipc a1,0x2 +80000110: ef458593 addi a1,a1,-268 # 80002000 +80000114: 00c5d593 srli a1,a1,0xc +80000118: 00a5e5b3 or a1,a1,a0 +8000011c: 18059073 csrw satp,a1 +80000120: 12000073 sfence.vma +80000124: 000215b7 lui a1,0x21 +80000128: 80058593 addi a1,a1,-2048 # 20800 <_start-0x7ffdf800> +8000012c: 3005a073 csrs mstatus,a1 +80000130: 00200193 li gp,2 +80000134: 00100393 li t2,1 +80000138: 80002517 auipc a0,0x80002 +8000013c: ec752823 sw t2,-304(a0) # 2008 <_start-0x7fffdff8> +80000140: 00300193 li gp,3 +80000144: 000415b7 lui a1,0x41 +80000148: 80058593 addi a1,a1,-2048 # 40800 <_start-0x7ffbf800> +8000014c: 3005a073 csrs mstatus,a1 +80000150: 80002297 auipc t0,0x80002 +80000154: eb82a283 lw t0,-328(t0) # 2008 <_start-0x7fffdff8> +80000158: 10029063 bnez t0,80000258 +8000015c: 80002517 auipc a0,0x80002 +80000160: ea752623 sw t2,-340(a0) # 2008 <_start-0x7fffdff8> +80000164: 80002297 auipc t0,0x80002 +80000168: ea42a283 lw t0,-348(t0) # 2008 <_start-0x7fffdff8> +8000016c: 0e729663 bne t0,t2,80000258 +80000170: 000202b7 lui t0,0x20 +80000174: 3002b073 csrc mstatus,t0 +80000178: 00002297 auipc t0,0x2 +8000017c: e882a283 lw t0,-376(t0) # 80002000 +80000180: 0c000513 li a0,192 +80000184: 00a2f2b3 and t0,t0,a0 +80000188: 0ca29863 bne t0,a0,80000258 +8000018c: 000202b7 lui t0,0x20 +80000190: 3002a073 csrs mstatus,t0 +80000194: 00400193 li gp,4 +80000198: 80002517 auipc a0,0x80002 +8000019c: e6852503 lw a0,-408(a0) # 2000 <_start-0x7fffe000> +800001a0: 40056513 ori a0,a0,1024 +800001a4: 80002297 auipc t0,0x80002 +800001a8: e4a2ae23 sw a0,-420(t0) # 2000 <_start-0x7fffe000> +800001ac: 12000073 sfence.vma +800001b0: 80002297 auipc t0,0x80002 +800001b4: e4a2a823 sw a0,-432(t0) # 2000 <_start-0x7fffe000> +800001b8: 0a00006f j 80000258 +800001bc: 0ff0000f fence +800001c0: 00100193 li gp,1 +800001c4: 00000073 ecall +800001c8: 00301c63 bne zero,gp,800001e0 + +800001cc : +800001cc: 0ff0000f fence +800001d0: 00018063 beqz gp,800001d0 +800001d4: 00119193 slli gp,gp,0x1 +800001d8: 0011e193 ori gp,gp,1 +800001dc: 00000073 ecall + +800001e0 : +800001e0: 0ff0000f fence +800001e4: 00100193 li gp,1 +800001e8: 00000073 ecall + +800001ec : +800001ec: 342022f3 csrr t0,mcause +800001f0: ff128293 addi t0,t0,-15 +800001f4: 06029263 bnez t0,80000258 +800001f8: 00200313 li t1,2 +800001fc: 02619263 bne gp,t1,80000220 +80000200: 00002297 auipc t0,0x2 +80000204: e002a283 lw t0,-512(t0) # 80002000 +80000208: 0802f313 andi t1,t0,128 +8000020c: 04031663 bnez t1,80000258 + +80000210 : +80000210: 341022f3 csrr t0,mepc +80000214: 00428293 addi t0,t0,4 +80000218: 34129073 csrw mepc,t0 +8000021c: 30200073 mret +80000220: 00300313 li t1,3 +80000224: 02619463 bne gp,t1,8000024c +80000228: 00002297 auipc t0,0x2 +8000022c: dd82a283 lw t0,-552(t0) # 80002000 +80000230: 0802f313 andi t1,t0,128 +80000234: 02031263 bnez t1,80000258 +80000238: 0802e293 ori t0,t0,128 +8000023c: 00002317 auipc t1,0x2 +80000240: dc532223 sw t0,-572(t1) # 80002000 +80000244: 12000073 sfence.vma +80000248: 30200073 mret +8000024c: 00400313 li t1,4 +80000250: 00619463 bne gp,t1,80000258 +80000254: f8dff06f j 800001e0 + +80000258 : +80000258: 0ff0000f fence +8000025c: 00018063 beqz gp,8000025c +80000260: 00119193 slli gp,gp,0x1 +80000264: 0011e193 ori gp,gp,1 +80000268: 00000073 ecall +8000026c: c0001073 unimp +80000270: 0000 unimp +80000272: 0000 unimp +80000274: 0000 unimp +80000276: 0000 unimp +80000278: 0000 unimp +8000027a: 0000 unimp +8000027c: 0000 unimp +8000027e: 0000 unimp +80000280: 0000 unimp +80000282: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 005f 2000 0000 0x2000005f +80002006: 0000 unimp + +80002008 : +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32si-p-ma_fetch b/Tests/isa/rv32si-p-ma_fetch new file mode 100644 index 0000000..719dc97 Binary files /dev/null and b/Tests/isa/rv32si-p-ma_fetch differ diff --git a/Tests/isa/rv32si-p-ma_fetch.dump b/Tests/isa/rv32si-p-ma_fetch.dump new file mode 100644 index 0000000..2449040 --- /dev/null +++ b/Tests/isa/rv32si-p-ma_fetch.dump @@ -0,0 +1,175 @@ + +rv32si-p-ma_fetch: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 00000297 auipc t0,0x0 +800000c4: 11428293 addi t0,t0,276 # 800001d4 +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00001537 lui a0,0x1 +800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 02200513 li a0,34 +800000f8: 30352073 csrs mideleg,a0 +800000fc: 00000297 auipc t0,0x0 +80000100: 01428293 addi t0,t0,20 # 80000110 +80000104: 34129073 csrw mepc,t0 +80000108: f1402573 csrr a0,mhartid +8000010c: 30200073 mret +80000110: 00200193 li gp,2 +80000114: 00000313 li t1,0 +80000118: 00000297 auipc t0,0x0 +8000011c: 00c28293 addi t0,t0,12 # 80000124 +80000120: 00228367 jalr t1,2(t0) +80000124: a011 j 80000128 +80000126: a019 j 8000012c +80000128: 08c0006f j 800001b4 +8000012c: 00300193 li gp,3 +80000130: 00000297 auipc t0,0x0 +80000134: 00c28293 addi t0,t0,12 # 8000013c +80000138: 00128367 jalr t1,1(t0) +8000013c: 0080006f j 80000144 +80000140: 0740006f j 800001b4 +80000144: 00400193 li gp,4 +80000148: 00000313 li t1,0 +8000014c: 00000297 auipc t0,0x0 +80000150: 00c28293 addi t0,t0,12 # 80000158 +80000154: 00328367 jalr t1,3(t0) +80000158: a011 j 8000015c +8000015a: a019 j 80000160 +8000015c: 0580006f j 800001b4 +80000160: 00500193 li gp,5 +80000164: 00000313 li t1,0 +80000168: 00000297 auipc t0,0x0 +8000016c: 00c28293 addi t0,t0,12 # 80000174 +80000170: 0060036f jal t1,80000176 +80000174: a011 j 80000178 +80000176: a019 j 8000017c +80000178: 03c0006f j 800001b4 +8000017c: 00600193 li gp,6 +80000180: 00000313 li t1,0 +80000184: 00000297 auipc t0,0x0 +80000188: 00c28293 addi t0,t0,12 # 80000190 +8000018c: 00000363 beqz zero,80000192 +80000190: a011 j 80000194 +80000192: a019 j 80000198 +80000194: 0200006f j 800001b4 +80000198: 00700193 li gp,7 +8000019c: 00001563 bnez zero,800001a6 +800001a0: 00c0006f j 800001ac +800001a4: a009 j 800001a6 +800001a6: a009 j 800001a8 +800001a8: 00c0006f j 800001b4 +800001ac: 01c0006f j 800001c8 +800001b0: 00301c63 bne zero,gp,800001c8 + +800001b4 : +800001b4: 0ff0000f fence +800001b8: 00018063 beqz gp,800001b8 +800001bc: 00119193 slli gp,gp,0x1 +800001c0: 0011e193 ori gp,gp,1 +800001c4: 00000073 ecall + +800001c8 : +800001c8: 0ff0000f fence +800001cc: 00100193 li gp,1 +800001d0: 00000073 ecall + +800001d4 : +800001d4: 00200513 li a0,2 +800001d8: 02a18063 beq gp,a0,800001f8 +800001dc: 00400513 li a0,4 +800001e0: 00a18c63 beq gp,a0,800001f8 +800001e4: 00500513 li a0,5 +800001e8: 00a18863 beq gp,a0,800001f8 +800001ec: 00600513 li a0,6 +800001f0: 00a18463 beq gp,a0,800001f8 +800001f4: fc1ff06f j 800001b4 +800001f8: fa031ee3 bnez t1,800001b4 +800001fc: 00000593 li a1,0 +80000200: 14202573 csrr a0,scause +80000204: fab518e3 bne a0,a1,800001b4 +80000208: 141025f3 csrr a1,sepc +8000020c: 00458593 addi a1,a1,4 +80000210: fab292e3 bne t0,a1,800001b4 +80000214: 14302573 csrr a0,sbadaddr +80000218: 00050663 beqz a0,80000224 +8000021c: ffe50513 addi a0,a0,-2 +80000220: f8551ae3 bne a0,t0,800001b4 +80000224: 00c58593 addi a1,a1,12 +80000228: 14159073 csrw sepc,a1 +8000022c: 10200073 sret +80000230: c0001073 unimp +80000234: 0000 unimp +80000236: 0000 unimp +80000238: 0000 unimp +8000023a: 0000 unimp +8000023c: 0000 unimp +8000023e: 0000 unimp +80000240: 0000 unimp +80000242: 0000 unimp diff --git a/Tests/isa/rv32si-p-sbreak b/Tests/isa/rv32si-p-sbreak new file mode 100644 index 0000000..868d572 Binary files /dev/null and b/Tests/isa/rv32si-p-sbreak differ diff --git a/Tests/isa/rv32si-p-sbreak.dump b/Tests/isa/rv32si-p-sbreak.dump new file mode 100644 index 0000000..a7d6303 --- /dev/null +++ b/Tests/isa/rv32si-p-sbreak.dump @@ -0,0 +1,128 @@ + +rv32si-p-sbreak: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 00000297 auipc t0,0x0 +800000c4: 08028293 addi t0,t0,128 # 80000140 +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00001537 lui a0,0x1 +800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 02200513 li a0,34 +800000f8: 30352073 csrs mideleg,a0 +800000fc: 00000297 auipc t0,0x0 +80000100: 01428293 addi t0,t0,20 # 80000110 +80000104: 34129073 csrw mepc,t0 +80000108: f1402573 csrr a0,mhartid +8000010c: 30200073 mret +80000110: 00200193 li gp,2 + +80000114 : +80000114: 00100073 ebreak +80000118: 0080006f j 80000120 +8000011c: 00301c63 bne zero,gp,80000134 + +80000120 : +80000120: 0ff0000f fence +80000124: 00018063 beqz gp,80000124 +80000128: 00119193 slli gp,gp,0x1 +8000012c: 0011e193 ori gp,gp,1 +80000130: 00000073 ecall + +80000134 : +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 00000073 ecall + +80000140 : +80000140: 00300313 li t1,3 +80000144: 142022f3 csrr t0,scause +80000148: fc629ce3 bne t0,t1,80000120 +8000014c: 00000317 auipc t1,0x0 +80000150: fc830313 addi t1,t1,-56 # 80000114 +80000154: 141022f3 csrr t0,sepc +80000158: fc6294e3 bne t0,t1,80000120 +8000015c: fd9ff06f j 80000134 +80000160: c0001073 unimp +80000164: 0000 unimp +80000166: 0000 unimp +80000168: 0000 unimp +8000016a: 0000 unimp +8000016c: 0000 unimp +8000016e: 0000 unimp +80000170: 0000 unimp +80000172: 0000 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32si-p-scall b/Tests/isa/rv32si-p-scall new file mode 100644 index 0000000..929eeaf Binary files /dev/null and b/Tests/isa/rv32si-p-scall differ diff --git a/Tests/isa/rv32si-p-scall.dump b/Tests/isa/rv32si-p-scall.dump new file mode 100644 index 0000000..baa2dbc --- /dev/null +++ b/Tests/isa/rv32si-p-scall.dump @@ -0,0 +1,121 @@ + +rv32si-p-scall: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 00000297 auipc t0,0x0 +800000c4: 0a028293 addi t0,t0,160 # 80000160 +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00001537 lui a0,0x1 +800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 02200513 li a0,34 +800000f8: 30352073 csrs mideleg,a0 +800000fc: 00000297 auipc t0,0x0 +80000100: 01428293 addi t0,t0,20 # 80000110 +80000104: 34129073 csrw mepc,t0 +80000108: f1402573 csrr a0,mhartid +8000010c: 30200073 mret +80000110: 00200193 li gp,2 +80000114: 00800313 li t1,8 +80000118: 10000293 li t0,256 +8000011c: 1002b073 csrc sstatus,t0 +80000120: 00000297 auipc t0,0x0 +80000124: 01028293 addi t0,t0,16 # 80000130 +80000128: 14129073 csrw sepc,t0 +8000012c: 10200073 sret +80000130: 00100193 li gp,1 + +80000134 : +80000134: 00000073 ecall +80000138: 0080006f j 80000140 +8000013c: 00301c63 bne zero,gp,80000154 + +80000140 : +80000140: 0ff0000f fence +80000144: 00018063 beqz gp,80000144 +80000148: 00119193 slli gp,gp,0x1 +8000014c: 0011e193 ori gp,gp,1 +80000150: 00000073 ecall + +80000154 : +80000154: 0ff0000f fence +80000158: 00100193 li gp,1 +8000015c: 00000073 ecall + +80000160 : +80000160: 142022f3 csrr t0,scause +80000164: fc629ee3 bne t0,t1,80000140 +80000168: 00000397 auipc t2,0x0 +8000016c: fcc38393 addi t2,t2,-52 # 80000134 +80000170: 141022f3 csrr t0,sepc +80000174: fc7296e3 bne t0,t2,80000140 +80000178: fddff06f j 80000154 +8000017c: c0001073 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32si-p-wfi b/Tests/isa/rv32si-p-wfi new file mode 100644 index 0000000..0ff5c27 Binary files /dev/null and b/Tests/isa/rv32si-p-wfi differ diff --git a/Tests/isa/rv32si-p-wfi.dump b/Tests/isa/rv32si-p-wfi.dump new file mode 100644 index 0000000..8ba0753 --- /dev/null +++ b/Tests/isa/rv32si-p-wfi.dump @@ -0,0 +1,128 @@ + +rv32si-p-wfi: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00001537 lui a0,0x1 +800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800> +800000f0: 30052073 csrs mstatus,a0 +800000f4: 02200513 li a0,34 +800000f8: 30352073 csrs mideleg,a0 +800000fc: 00000297 auipc t0,0x0 +80000100: 01428293 addi t0,t0,20 # 80000110 +80000104: 34129073 csrw mepc,t0 +80000108: f1402573 csrr a0,mhartid +8000010c: 30200073 mret +80000110: 10017073 csrci sstatus,2 +80000114: 10416073 csrsi sie,2 +80000118: 14416073 csrsi sip,2 +8000011c: 10500073 wfi +80000120: 0ff0000f fence +80000124: 00100193 li gp,1 +80000128: 00000073 ecall +8000012c: 00301c63 bne zero,gp,80000144 + +80000130 : +80000130: 0ff0000f fence +80000134: 00018063 beqz gp,80000134 +80000138: 00119193 slli gp,gp,0x1 +8000013c: 0011e193 ori gp,gp,1 +80000140: 00000073 ecall + +80000144 : +80000144: 0ff0000f fence +80000148: 00100193 li gp,1 +8000014c: 00000073 ecall +80000150: c0001073 unimp +80000154: 0000 unimp +80000156: 0000 unimp +80000158: 0000 unimp +8000015a: 0000 unimp +8000015c: 0000 unimp +8000015e: 0000 unimp +80000160: 0000 unimp +80000162: 0000 unimp +80000164: 0000 unimp +80000166: 0000 unimp +80000168: 0000 unimp +8000016a: 0000 unimp +8000016c: 0000 unimp +8000016e: 0000 unimp +80000170: 0000 unimp +80000172: 0000 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amoadd_w b/Tests/isa/rv32ua-p-amoadd_w new file mode 100644 index 0000000..b268ee1 Binary files /dev/null and b/Tests/isa/rv32ua-p-amoadd_w differ diff --git a/Tests/isa/rv32ua-p-amoadd_w.dump b/Tests/isa/rv32ua-p-amoadd_w.dump new file mode 100644 index 0000000..0ae4d74 --- /dev/null +++ b/Tests/isa/rv32ua-p-amoadd_w.dump @@ -0,0 +1,124 @@ + +rv32ua-p-amoadd_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: 00b6a72f amoadd.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 05d71263 bne a4,t4,80000160 + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000eb7 lui t4,0x80000 +80000128: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8> +8000012c: 00300193 li gp,3 +80000130: 03d79863 bne a5,t4,80000160 + +80000134 : +80000134: 800005b7 lui a1,0x80000 +80000138: 00b6a72f amoadd.w a4,a1,(a3) +8000013c: 80000eb7 lui t4,0x80000 +80000140: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8> +80000144: 00400193 li gp,4 +80000148: 01d71c63 bne a4,t4,80000160 + +8000014c : +8000014c: 0006a783 lw a5,0(a3) +80000150: 80000e93 li t4,-2048 +80000154: 00500193 li gp,5 +80000158: 01d79463 bne a5,t4,80000160 +8000015c: 00301c63 bne zero,gp,80000174 + +80000160 : +80000160: 0ff0000f fence +80000164: 00018063 beqz gp,80000164 +80000168: 00119193 slli gp,gp,0x1 +8000016c: 0011e193 ori gp,gp,1 +80000170: 00000073 ecall + +80000174 : +80000174: 0ff0000f fence +80000178: 00100193 li gp,1 +8000017c: 00000073 ecall +80000180: c0001073 unimp diff --git a/Tests/isa/rv32ua-p-amoand_w b/Tests/isa/rv32ua-p-amoand_w new file mode 100644 index 0000000..2c36a7b Binary files /dev/null and b/Tests/isa/rv32ua-p-amoand_w differ diff --git a/Tests/isa/rv32ua-p-amoand_w.dump b/Tests/isa/rv32ua-p-amoand_w.dump new file mode 100644 index 0000000..d82a55c --- /dev/null +++ b/Tests/isa/rv32ua-p-amoand_w.dump @@ -0,0 +1,126 @@ + +rv32ua-p-amoand_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: 60b6a72f amoand.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 03d71e63 bne a4,t4,80000158 + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000eb7 lui t4,0x80000 +80000128: 00300193 li gp,3 +8000012c: 03d79663 bne a5,t4,80000158 + +80000130 : +80000130: 800005b7 lui a1,0x80000 +80000134: 60b6a72f amoand.w a4,a1,(a3) +80000138: 80000eb7 lui t4,0x80000 +8000013c: 00400193 li gp,4 +80000140: 01d71c63 bne a4,t4,80000158 + +80000144 : +80000144: 0006a783 lw a5,0(a3) +80000148: 80000eb7 lui t4,0x80000 +8000014c: 00500193 li gp,5 +80000150: 01d79463 bne a5,t4,80000158 +80000154: 00301c63 bne zero,gp,8000016c + +80000158 : +80000158: 0ff0000f fence +8000015c: 00018063 beqz gp,8000015c +80000160: 00119193 slli gp,gp,0x1 +80000164: 0011e193 ori gp,gp,1 +80000168: 00000073 ecall + +8000016c : +8000016c: 0ff0000f fence +80000170: 00100193 li gp,1 +80000174: 00000073 ecall +80000178: c0001073 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amomax_w b/Tests/isa/rv32ua-p-amomax_w new file mode 100644 index 0000000..966d532 Binary files /dev/null and b/Tests/isa/rv32ua-p-amomax_w differ diff --git a/Tests/isa/rv32ua-p-amomax_w.dump b/Tests/isa/rv32ua-p-amomax_w.dump new file mode 100644 index 0000000..0ab8b2b --- /dev/null +++ b/Tests/isa/rv32ua-p-amomax_w.dump @@ -0,0 +1,125 @@ + +rv32ua-p-amomax_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: a0b6a72f amomax.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 05d71063 bne a4,t4,8000015c + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000e93 li t4,-2048 +80000128: 00300193 li gp,3 +8000012c: 03d79863 bne a5,t4,8000015c + +80000130 : +80000130: 00100593 li a1,1 +80000134: 0006a023 sw zero,0(a3) +80000138: a0b6a72f amomax.w a4,a1,(a3) +8000013c: 00000e93 li t4,0 +80000140: 00400193 li gp,4 +80000144: 01d71c63 bne a4,t4,8000015c + +80000148 : +80000148: 0006a783 lw a5,0(a3) +8000014c: 00100e93 li t4,1 +80000150: 00500193 li gp,5 +80000154: 01d79463 bne a5,t4,8000015c +80000158: 00301c63 bne zero,gp,80000170 + +8000015c : +8000015c: 0ff0000f fence +80000160: 00018063 beqz gp,80000160 +80000164: 00119193 slli gp,gp,0x1 +80000168: 0011e193 ori gp,gp,1 +8000016c: 00000073 ecall + +80000170 : +80000170: 0ff0000f fence +80000174: 00100193 li gp,1 +80000178: 00000073 ecall +8000017c: c0001073 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amomaxu_w b/Tests/isa/rv32ua-p-amomaxu_w new file mode 100644 index 0000000..3fc79bf Binary files /dev/null and b/Tests/isa/rv32ua-p-amomaxu_w differ diff --git a/Tests/isa/rv32ua-p-amomaxu_w.dump b/Tests/isa/rv32ua-p-amomaxu_w.dump new file mode 100644 index 0000000..154c0a4 --- /dev/null +++ b/Tests/isa/rv32ua-p-amomaxu_w.dump @@ -0,0 +1,125 @@ + +rv32ua-p-amomaxu_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: e0b6a72f amomaxu.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 05d71063 bne a4,t4,8000015c + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000e93 li t4,-2048 +80000128: 00300193 li gp,3 +8000012c: 03d79863 bne a5,t4,8000015c + +80000130 : +80000130: fff00593 li a1,-1 +80000134: 0006a023 sw zero,0(a3) +80000138: e0b6a72f amomaxu.w a4,a1,(a3) +8000013c: 00000e93 li t4,0 +80000140: 00400193 li gp,4 +80000144: 01d71c63 bne a4,t4,8000015c + +80000148 : +80000148: 0006a783 lw a5,0(a3) +8000014c: fff00e93 li t4,-1 +80000150: 00500193 li gp,5 +80000154: 01d79463 bne a5,t4,8000015c +80000158: 00301c63 bne zero,gp,80000170 + +8000015c : +8000015c: 0ff0000f fence +80000160: 00018063 beqz gp,80000160 +80000164: 00119193 slli gp,gp,0x1 +80000168: 0011e193 ori gp,gp,1 +8000016c: 00000073 ecall + +80000170 : +80000170: 0ff0000f fence +80000174: 00100193 li gp,1 +80000178: 00000073 ecall +8000017c: c0001073 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amomin_w b/Tests/isa/rv32ua-p-amomin_w new file mode 100644 index 0000000..77169db Binary files /dev/null and b/Tests/isa/rv32ua-p-amomin_w differ diff --git a/Tests/isa/rv32ua-p-amomin_w.dump b/Tests/isa/rv32ua-p-amomin_w.dump new file mode 100644 index 0000000..3b553f3 --- /dev/null +++ b/Tests/isa/rv32ua-p-amomin_w.dump @@ -0,0 +1,125 @@ + +rv32ua-p-amomin_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: 80b6a72f amomin.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 05d71063 bne a4,t4,8000015c + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000eb7 lui t4,0x80000 +80000128: 00300193 li gp,3 +8000012c: 03d79863 bne a5,t4,8000015c + +80000130 : +80000130: fff00593 li a1,-1 +80000134: 0006a023 sw zero,0(a3) +80000138: 80b6a72f amomin.w a4,a1,(a3) +8000013c: 00000e93 li t4,0 +80000140: 00400193 li gp,4 +80000144: 01d71c63 bne a4,t4,8000015c + +80000148 : +80000148: 0006a783 lw a5,0(a3) +8000014c: fff00e93 li t4,-1 +80000150: 00500193 li gp,5 +80000154: 01d79463 bne a5,t4,8000015c +80000158: 00301c63 bne zero,gp,80000170 + +8000015c : +8000015c: 0ff0000f fence +80000160: 00018063 beqz gp,80000160 +80000164: 00119193 slli gp,gp,0x1 +80000168: 0011e193 ori gp,gp,1 +8000016c: 00000073 ecall + +80000170 : +80000170: 0ff0000f fence +80000174: 00100193 li gp,1 +80000178: 00000073 ecall +8000017c: c0001073 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amominu_w b/Tests/isa/rv32ua-p-amominu_w new file mode 100644 index 0000000..7a9b3cb Binary files /dev/null and b/Tests/isa/rv32ua-p-amominu_w differ diff --git a/Tests/isa/rv32ua-p-amominu_w.dump b/Tests/isa/rv32ua-p-amominu_w.dump new file mode 100644 index 0000000..d07572d --- /dev/null +++ b/Tests/isa/rv32ua-p-amominu_w.dump @@ -0,0 +1,125 @@ + +rv32ua-p-amominu_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: c0b6a72f amominu.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 05d71063 bne a4,t4,8000015c + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000eb7 lui t4,0x80000 +80000128: 00300193 li gp,3 +8000012c: 03d79863 bne a5,t4,8000015c + +80000130 : +80000130: fff00593 li a1,-1 +80000134: 0006a023 sw zero,0(a3) +80000138: c0b6a72f amominu.w a4,a1,(a3) +8000013c: 00000e93 li t4,0 +80000140: 00400193 li gp,4 +80000144: 01d71c63 bne a4,t4,8000015c + +80000148 : +80000148: 0006a783 lw a5,0(a3) +8000014c: 00000e93 li t4,0 +80000150: 00500193 li gp,5 +80000154: 01d79463 bne a5,t4,8000015c +80000158: 00301c63 bne zero,gp,80000170 + +8000015c : +8000015c: 0ff0000f fence +80000160: 00018063 beqz gp,80000160 +80000164: 00119193 slli gp,gp,0x1 +80000168: 0011e193 ori gp,gp,1 +8000016c: 00000073 ecall + +80000170 : +80000170: 0ff0000f fence +80000174: 00100193 li gp,1 +80000178: 00000073 ecall +8000017c: c0001073 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amoor_w b/Tests/isa/rv32ua-p-amoor_w new file mode 100644 index 0000000..52c0e97 Binary files /dev/null and b/Tests/isa/rv32ua-p-amoor_w differ diff --git a/Tests/isa/rv32ua-p-amoor_w.dump b/Tests/isa/rv32ua-p-amoor_w.dump new file mode 100644 index 0000000..0fd882b --- /dev/null +++ b/Tests/isa/rv32ua-p-amoor_w.dump @@ -0,0 +1,126 @@ + +rv32ua-p-amoor_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: 40b6a72f amoor.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 03d71e63 bne a4,t4,80000158 + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000e93 li t4,-2048 +80000128: 00300193 li gp,3 +8000012c: 03d79663 bne a5,t4,80000158 + +80000130 : +80000130: 00100593 li a1,1 +80000134: 40b6a72f amoor.w a4,a1,(a3) +80000138: 80000e93 li t4,-2048 +8000013c: 00400193 li gp,4 +80000140: 01d71c63 bne a4,t4,80000158 + +80000144 : +80000144: 0006a783 lw a5,0(a3) +80000148: 80100e93 li t4,-2047 +8000014c: 00500193 li gp,5 +80000150: 01d79463 bne a5,t4,80000158 +80000154: 00301c63 bne zero,gp,8000016c + +80000158 : +80000158: 0ff0000f fence +8000015c: 00018063 beqz gp,8000015c +80000160: 00119193 slli gp,gp,0x1 +80000164: 0011e193 ori gp,gp,1 +80000168: 00000073 ecall + +8000016c : +8000016c: 0ff0000f fence +80000170: 00100193 li gp,1 +80000174: 00000073 ecall +80000178: c0001073 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amoswap_w b/Tests/isa/rv32ua-p-amoswap_w new file mode 100644 index 0000000..3d93752 Binary files /dev/null and b/Tests/isa/rv32ua-p-amoswap_w differ diff --git a/Tests/isa/rv32ua-p-amoswap_w.dump b/Tests/isa/rv32ua-p-amoswap_w.dump new file mode 100644 index 0000000..0a9b354 --- /dev/null +++ b/Tests/isa/rv32ua-p-amoswap_w.dump @@ -0,0 +1,126 @@ + +rv32ua-p-amoswap_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: 08b6a72f amoswap.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 03d71e63 bne a4,t4,80000158 + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000e93 li t4,-2048 +80000128: 00300193 li gp,3 +8000012c: 03d79663 bne a5,t4,80000158 + +80000130 : +80000130: 800005b7 lui a1,0x80000 +80000134: 08b6a72f amoswap.w a4,a1,(a3) +80000138: 80000e93 li t4,-2048 +8000013c: 00400193 li gp,4 +80000140: 01d71c63 bne a4,t4,80000158 + +80000144 : +80000144: 0006a783 lw a5,0(a3) +80000148: 80000eb7 lui t4,0x80000 +8000014c: 00500193 li gp,5 +80000150: 01d79463 bne a5,t4,80000158 +80000154: 00301c63 bne zero,gp,8000016c + +80000158 : +80000158: 0ff0000f fence +8000015c: 00018063 beqz gp,8000015c +80000160: 00119193 slli gp,gp,0x1 +80000164: 0011e193 ori gp,gp,1 +80000168: 00000073 ecall + +8000016c : +8000016c: 0ff0000f fence +80000170: 00100193 li gp,1 +80000174: 00000073 ecall +80000178: c0001073 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ua-p-amoxor_w b/Tests/isa/rv32ua-p-amoxor_w new file mode 100644 index 0000000..47e5b20 Binary files /dev/null and b/Tests/isa/rv32ua-p-amoxor_w differ diff --git a/Tests/isa/rv32ua-p-amoxor_w.dump b/Tests/isa/rv32ua-p-amoxor_w.dump new file mode 100644 index 0000000..a80465c --- /dev/null +++ b/Tests/isa/rv32ua-p-amoxor_w.dump @@ -0,0 +1,154 @@ + +rv32ua-p-amoxor_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 80000537 lui a0,0x80000 +80000100: 80000593 li a1,-2048 +80000104: 00002697 auipc a3,0x2 +80000108: efc68693 addi a3,a3,-260 # 80002000 +8000010c: 00a6a023 sw a0,0(a3) +80000110: 20b6a72f amoxor.w a4,a1,(a3) +80000114: 80000eb7 lui t4,0x80000 +80000118: 00200193 li gp,2 +8000011c: 05d71663 bne a4,t4,80000168 + +80000120 : +80000120: 0006a783 lw a5,0(a3) +80000124: 80000eb7 lui t4,0x80000 +80000128: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8> +8000012c: 00300193 li gp,3 +80000130: 03d79c63 bne a5,t4,80000168 + +80000134 : +80000134: c00005b7 lui a1,0xc0000 +80000138: 00158593 addi a1,a1,1 # c0000001 <_end+0x3fffdff9> +8000013c: 20b6a72f amoxor.w a4,a1,(a3) +80000140: 80000eb7 lui t4,0x80000 +80000144: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8> +80000148: 00400193 li gp,4 +8000014c: 01d71e63 bne a4,t4,80000168 + +80000150 : +80000150: 0006a783 lw a5,0(a3) +80000154: c0000eb7 lui t4,0xc0000 +80000158: 801e8e93 addi t4,t4,-2047 # bffff801 <_end+0x3fffd7f9> +8000015c: 00500193 li gp,5 +80000160: 01d79463 bne a5,t4,80000168 +80000164: 00301c63 bne zero,gp,8000017c + +80000168 : +80000168: 0ff0000f fence +8000016c: 00018063 beqz gp,8000016c +80000170: 00119193 slli gp,gp,0x1 +80000174: 0011e193 ori gp,gp,1 +80000178: 00000073 ecall + +8000017c : +8000017c: 0ff0000f fence +80000180: 00100193 li gp,1 +80000184: 00000073 ecall +80000188: c0001073 unimp +8000018c: 0000 unimp +8000018e: 0000 unimp +80000190: 0000 unimp +80000192: 0000 unimp +80000194: 0000 unimp +80000196: 0000 unimp +80000198: 0000 unimp +8000019a: 0000 unimp +8000019c: 0000 unimp +8000019e: 0000 unimp +800001a0: 0000 unimp +800001a2: 0000 unimp +800001a4: 0000 unimp +800001a6: 0000 unimp +800001a8: 0000 unimp +800001aa: 0000 unimp +800001ac: 0000 unimp +800001ae: 0000 unimp +800001b0: 0000 unimp +800001b2: 0000 unimp +800001b4: 0000 unimp +800001b6: 0000 unimp +800001b8: 0000 unimp +800001ba: 0000 unimp +800001bc: 0000 unimp +800001be: 0000 unimp +800001c0: 0000 unimp +800001c2: 0000 unimp diff --git a/Tests/isa/rv32ua-p-lrsc b/Tests/isa/rv32ua-p-lrsc new file mode 100644 index 0000000..47ecca5 Binary files /dev/null and b/Tests/isa/rv32ua-p-lrsc differ diff --git a/Tests/isa/rv32ua-p-lrsc.dump b/Tests/isa/rv32ua-p-lrsc.dump new file mode 100644 index 0000000..de3daa7 --- /dev/null +++ b/Tests/isa/rv32ua-p-lrsc.dump @@ -0,0 +1,178 @@ + +rv32ua-p-lrsc: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret +800000fc: 00002517 auipc a0,0x2 +80000100: f0450513 addi a0,a0,-252 # 80002000 +80000104: 00100593 li a1,1 +80000108: 00b5262f amoadd.w a2,a1,(a0) +8000010c: 00100693 li a3,1 +80000110: fed67ee3 bleu a3,a2,8000010c +80000114: 00052583 lw a1,0(a0) +80000118: fed5eee3 bltu a1,a3,80000114 + +8000011c : +8000011c: 00002517 auipc a0,0x2 +80000120: eec50513 addi a0,a0,-276 # 80002008 +80000124: 1805272f sc.w a4,zero,(a0) +80000128: 00100e93 li t4,1 +8000012c: 00200193 li gp,2 +80000130: 09d71863 bne a4,t4,800001c0 + +80000134 : +80000134: 00002517 auipc a0,0x2 +80000138: ed450513 addi a0,a0,-300 # 80002008 +8000013c: 40050593 addi a1,a0,1024 +80000140: 1005a5af lr.w a1,(a1) +80000144: 18b5272f sc.w a4,a1,(a0) +80000148: 00100e93 li t4,1 +8000014c: 00300193 li gp,3 +80000150: 07d71863 bne a4,t4,800001c0 +80000154: 00002517 auipc a0,0x2 +80000158: eb450513 addi a0,a0,-332 # 80002008 +8000015c: 40000593 li a1,1024 +80000160: 00160613 addi a2,a2,1 +80000164: 1005272f lr.w a4,(a0) +80000168: 00c70733 add a4,a4,a2 +8000016c: 18e5272f sc.w a4,a4,(a0) +80000170: fe071ae3 bnez a4,80000164 +80000174: fff58593 addi a1,a1,-1 +80000178: fe0596e3 bnez a1,80000164 +8000017c: 00002517 auipc a0,0x2 +80000180: e8850513 addi a0,a0,-376 # 80002004 +80000184: 00100593 li a1,1 +80000188: 00b5202f amoadd.w zero,a1,(a0) +8000018c: 00052583 lw a1,0(a0) +80000190: fed5cee3 blt a1,a3,8000018c +80000194: 0ff0000f fence + +80000198 : +80000198: 00002517 auipc a0,0x2 +8000019c: e7052503 lw a0,-400(a0) # 80002008 +800001a0: 00969593 slli a1,a3,0x9 +800001a4: 40b50533 sub a0,a0,a1 +800001a8: fff68693 addi a3,a3,-1 +800001ac: fe06dce3 bgez a3,800001a4 +800001b0: 00000e93 li t4,0 +800001b4: 00400193 li gp,4 +800001b8: 01d51463 bne a0,t4,800001c0 +800001bc: 00301c63 bne zero,gp,800001d4 + +800001c0 : +800001c0: 0ff0000f fence +800001c4: 00018063 beqz gp,800001c4 +800001c8: 00119193 slli gp,gp,0x1 +800001cc: 0011e193 ori gp,gp,1 +800001d0: 00000073 ecall + +800001d4 : +800001d4: 0ff0000f fence +800001d8: 00100193 li gp,1 +800001dc: 00000073 ecall +800001e0: c0001073 unimp +800001e4: 0000 unimp +800001e6: 0000 unimp +800001e8: 0000 unimp +800001ea: 0000 unimp +800001ec: 0000 unimp +800001ee: 0000 unimp +800001f0: 0000 unimp +800001f2: 0000 unimp +800001f4: 0000 unimp +800001f6: 0000 unimp +800001f8: 0000 unimp +800001fa: 0000 unimp +800001fc: 0000 unimp +800001fe: 0000 unimp +80000200: 0000 unimp +80000202: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 0000 unimp + +80002004 : +80002004: 0000 unimp +80002006: 0000 unimp + +80002008 : +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32ua-v-amoadd_w b/Tests/isa/rv32ua-v-amoadd_w new file mode 100644 index 0000000..2ef2a09 Binary files /dev/null and b/Tests/isa/rv32ua-v-amoadd_w differ diff --git a/Tests/isa/rv32ua-v-amoadd_w.dump b/Tests/isa/rv32ua-v-amoadd_w.dump new file mode 100644 index 0000000..2d40d2e --- /dev/null +++ b/Tests/isa/rv32ua-v-amoadd_w.dump @@ -0,0 +1,941 @@ + +rv32ua-v-amoadd_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79858593 addi a1,a1,1944 # 80002c60 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7b458593 addi a1,a1,1972 # 80002cec +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 76058593 addi a1,a1,1888 # 80002d04 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 69458593 addi a1,a1,1684 # 80002ca4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 68458593 addi a1,a1,1668 # 80002dcc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5ec58593 addi a1,a1,1516 # 80002da8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e860613 addi a2,a2,1256 # 80002df8 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f860613 addi a2,a2,1016 # 80002d74 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37860613 addi a2,a2,888 # 80002d40 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01600793 li a5,22 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 074ab7b7 lui a5,0x74ab +80002b9c: 00080637 lui a2,0x80 +80002ba0: aa678793 addi a5,a5,-1370 # 74aaaa6 <_start-0x78b5555a> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: 00b6a72f amoadd.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 05d71263 bne a4,t4,80002c44 + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000eb7 lui t4,0x80000 +80002c0c: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408> +80002c10: 00300193 li gp,3 +80002c14: 03d79863 bne a5,t4,80002c44 + +80002c18 : +80002c18: 800005b7 lui a1,0x80000 +80002c1c: 00b6a72f amoadd.w a4,a1,(a3) +80002c20: 80000eb7 lui t4,0x80000 +80002c24: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408> +80002c28: 00400193 li gp,4 +80002c2c: 01d71c63 bne a4,t4,80002c44 + +80002c30 : +80002c30: 0006a783 lw a5,0(a3) +80002c34: 80000e93 li t4,-2048 +80002c38: 00500193 li gp,5 +80002c3c: 01d79463 bne a5,t4,80002c44 +80002c40: 00301a63 bne zero,gp,80002c54 + +80002c44 : +80002c44: 00119513 slli a0,gp,0x1 +80002c48: 00050063 beqz a0,80002c48 +80002c4c: 00156513 ori a0,a0,1 +80002c50: 00000073 ecall + +80002c54 : +80002c54: 00100513 li a0,1 +80002c58: 00000073 ecall +80002c5c: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amoand_w b/Tests/isa/rv32ua-v-amoand_w new file mode 100644 index 0000000..079d5cc Binary files /dev/null and b/Tests/isa/rv32ua-v-amoand_w differ diff --git a/Tests/isa/rv32ua-v-amoand_w.dump b/Tests/isa/rv32ua-v-amoand_w.dump new file mode 100644 index 0000000..fb10e74 --- /dev/null +++ b/Tests/isa/rv32ua-v-amoand_w.dump @@ -0,0 +1,939 @@ + +rv32ua-v-amoand_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79058593 addi a1,a1,1936 # 80002c58 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7ac58593 addi a1,a1,1964 # 80002ce4 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75858593 addi a1,a1,1880 # 80002cfc +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 68c58593 addi a1,a1,1676 # 80002c9c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 67c58593 addi a1,a1,1660 # 80002dc4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e458593 addi a1,a1,1508 # 80002da0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e060613 addi a2,a2,1248 # 80002df0 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f060613 addi a2,a2,1008 # 80002d6c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37060613 addi a2,a2,880 # 80002d38 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 02200793 li a5,34 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0a54c7b7 lui a5,0xa54c +80002b9c: 00080637 lui a2,0x80 +80002ba0: 2ea78793 addi a5,a5,746 # a54c2ea <_start-0x75ab3d16> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: 60b6a72f amoand.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 03d71e63 bne a4,t4,80002c3c + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000eb7 lui t4,0x80000 +80002c0c: 00300193 li gp,3 +80002c10: 03d79663 bne a5,t4,80002c3c + +80002c14 : +80002c14: 800005b7 lui a1,0x80000 +80002c18: 60b6a72f amoand.w a4,a1,(a3) +80002c1c: 80000eb7 lui t4,0x80000 +80002c20: 00400193 li gp,4 +80002c24: 01d71c63 bne a4,t4,80002c3c + +80002c28 : +80002c28: 0006a783 lw a5,0(a3) +80002c2c: 80000eb7 lui t4,0x80000 +80002c30: 00500193 li gp,5 +80002c34: 01d79463 bne a5,t4,80002c3c +80002c38: 00301a63 bne zero,gp,80002c4c + +80002c3c : +80002c3c: 00119513 slli a0,gp,0x1 +80002c40: 00050063 beqz a0,80002c40 +80002c44: 00156513 ori a0,a0,1 +80002c48: 00000073 ecall + +80002c4c : +80002c4c: 00100513 li a0,1 +80002c50: 00000073 ecall +80002c54: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amomax_w b/Tests/isa/rv32ua-v-amomax_w new file mode 100644 index 0000000..14eae4c Binary files /dev/null and b/Tests/isa/rv32ua-v-amomax_w differ diff --git a/Tests/isa/rv32ua-v-amomax_w.dump b/Tests/isa/rv32ua-v-amomax_w.dump new file mode 100644 index 0000000..adaf83f --- /dev/null +++ b/Tests/isa/rv32ua-v-amomax_w.dump @@ -0,0 +1,940 @@ + +rv32ua-v-amomax_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79458593 addi a1,a1,1940 # 80002c5c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75c58593 addi a1,a1,1884 # 80002d00 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 69058593 addi a1,a1,1680 # 80002ca0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 68058593 addi a1,a1,1664 # 80002dc8 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e858593 addi a1,a1,1512 # 80002da4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e460613 addi a2,a2,1252 # 80002df4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f460613 addi a2,a2,1012 # 80002d70 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37460613 addi a2,a2,884 # 80002d3c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03900793 li a5,57 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0a3d67b7 lui a5,0xa3d6 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 9e278793 addi a5,a5,-1566 # a3d59e2 <_start-0x75c2a61e> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: a0b6a72f amomax.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 05d71063 bne a4,t4,80002c40 + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000e93 li t4,-2048 +80002c0c: 00300193 li gp,3 +80002c10: 03d79863 bne a5,t4,80002c40 + +80002c14 : +80002c14: 00100593 li a1,1 +80002c18: 0006a023 sw zero,0(a3) +80002c1c: a0b6a72f amomax.w a4,a1,(a3) +80002c20: 00000e93 li t4,0 +80002c24: 00400193 li gp,4 +80002c28: 01d71c63 bne a4,t4,80002c40 + +80002c2c : +80002c2c: 0006a783 lw a5,0(a3) +80002c30: 00100e93 li t4,1 +80002c34: 00500193 li gp,5 +80002c38: 01d79463 bne a5,t4,80002c40 +80002c3c: 00301a63 bne zero,gp,80002c50 + +80002c40 : +80002c40: 00119513 slli a0,gp,0x1 +80002c44: 00050063 beqz a0,80002c44 +80002c48: 00156513 ori a0,a0,1 +80002c4c: 00000073 ecall + +80002c50 : +80002c50: 00100513 li a0,1 +80002c54: 00000073 ecall +80002c58: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amomaxu_w b/Tests/isa/rv32ua-v-amomaxu_w new file mode 100644 index 0000000..eda96ad Binary files /dev/null and b/Tests/isa/rv32ua-v-amomaxu_w differ diff --git a/Tests/isa/rv32ua-v-amomaxu_w.dump b/Tests/isa/rv32ua-v-amomaxu_w.dump new file mode 100644 index 0000000..6e2a092 --- /dev/null +++ b/Tests/isa/rv32ua-v-amomaxu_w.dump @@ -0,0 +1,940 @@ + +rv32ua-v-amomaxu_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79458593 addi a1,a1,1940 # 80002c5c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75c58593 addi a1,a1,1884 # 80002d00 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 69058593 addi a1,a1,1680 # 80002ca0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 68058593 addi a1,a1,1664 # 80002dc8 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e858593 addi a1,a1,1512 # 80002da4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e460613 addi a2,a2,1252 # 80002df4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f460613 addi a2,a2,1012 # 80002d70 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37460613 addi a2,a2,884 # 80002d3c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00400793 li a5,4 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0ff5b7b7 lui a5,0xff5b +80002b9c: 00080637 lui a2,0x80 +80002ba0: d2678793 addi a5,a5,-730 # ff5ad26 <_start-0x700a52da> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: e0b6a72f amomaxu.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 05d71063 bne a4,t4,80002c40 + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000e93 li t4,-2048 +80002c0c: 00300193 li gp,3 +80002c10: 03d79863 bne a5,t4,80002c40 + +80002c14 : +80002c14: fff00593 li a1,-1 +80002c18: 0006a023 sw zero,0(a3) +80002c1c: e0b6a72f amomaxu.w a4,a1,(a3) +80002c20: 00000e93 li t4,0 +80002c24: 00400193 li gp,4 +80002c28: 01d71c63 bne a4,t4,80002c40 + +80002c2c : +80002c2c: 0006a783 lw a5,0(a3) +80002c30: fff00e93 li t4,-1 +80002c34: 00500193 li gp,5 +80002c38: 01d79463 bne a5,t4,80002c40 +80002c3c: 00301a63 bne zero,gp,80002c50 + +80002c40 : +80002c40: 00119513 slli a0,gp,0x1 +80002c44: 00050063 beqz a0,80002c44 +80002c48: 00156513 ori a0,a0,1 +80002c4c: 00000073 ecall + +80002c50 : +80002c50: 00100513 li a0,1 +80002c54: 00000073 ecall +80002c58: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amomin_w b/Tests/isa/rv32ua-v-amomin_w new file mode 100644 index 0000000..7fdbf84 Binary files /dev/null and b/Tests/isa/rv32ua-v-amomin_w differ diff --git a/Tests/isa/rv32ua-v-amomin_w.dump b/Tests/isa/rv32ua-v-amomin_w.dump new file mode 100644 index 0000000..39ef592 --- /dev/null +++ b/Tests/isa/rv32ua-v-amomin_w.dump @@ -0,0 +1,940 @@ + +rv32ua-v-amomin_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79458593 addi a1,a1,1940 # 80002c5c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75c58593 addi a1,a1,1884 # 80002d00 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 69058593 addi a1,a1,1680 # 80002ca0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 68058593 addi a1,a1,1664 # 80002dc8 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e858593 addi a1,a1,1512 # 80002da4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e460613 addi a2,a2,1252 # 80002df4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f460613 addi a2,a2,1012 # 80002d70 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37460613 addi a2,a2,884 # 80002d3c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03e00793 li a5,62 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 004777b7 lui a5,0x477 +80002b9c: 00080637 lui a2,0x80 +80002ba0: fb678793 addi a5,a5,-74 # 476fb6 <_start-0x7fb8904a> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: 80b6a72f amomin.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 05d71063 bne a4,t4,80002c40 + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000eb7 lui t4,0x80000 +80002c0c: 00300193 li gp,3 +80002c10: 03d79863 bne a5,t4,80002c40 + +80002c14 : +80002c14: fff00593 li a1,-1 +80002c18: 0006a023 sw zero,0(a3) +80002c1c: 80b6a72f amomin.w a4,a1,(a3) +80002c20: 00000e93 li t4,0 +80002c24: 00400193 li gp,4 +80002c28: 01d71c63 bne a4,t4,80002c40 + +80002c2c : +80002c2c: 0006a783 lw a5,0(a3) +80002c30: fff00e93 li t4,-1 +80002c34: 00500193 li gp,5 +80002c38: 01d79463 bne a5,t4,80002c40 +80002c3c: 00301a63 bne zero,gp,80002c50 + +80002c40 : +80002c40: 00119513 slli a0,gp,0x1 +80002c44: 00050063 beqz a0,80002c44 +80002c48: 00156513 ori a0,a0,1 +80002c4c: 00000073 ecall + +80002c50 : +80002c50: 00100513 li a0,1 +80002c54: 00000073 ecall +80002c58: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amominu_w b/Tests/isa/rv32ua-v-amominu_w new file mode 100644 index 0000000..8af569a Binary files /dev/null and b/Tests/isa/rv32ua-v-amominu_w differ diff --git a/Tests/isa/rv32ua-v-amominu_w.dump b/Tests/isa/rv32ua-v-amominu_w.dump new file mode 100644 index 0000000..300f3d5 --- /dev/null +++ b/Tests/isa/rv32ua-v-amominu_w.dump @@ -0,0 +1,940 @@ + +rv32ua-v-amominu_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79458593 addi a1,a1,1940 # 80002c5c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75c58593 addi a1,a1,1884 # 80002d00 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 69058593 addi a1,a1,1680 # 80002ca0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 68058593 addi a1,a1,1664 # 80002dc8 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e858593 addi a1,a1,1512 # 80002da4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e460613 addi a2,a2,1252 # 80002df4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f460613 addi a2,a2,1012 # 80002d70 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37460613 addi a2,a2,884 # 80002d3c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00c00793 li a5,12 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 03fa07b7 lui a5,0x3fa0 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 22078793 addi a5,a5,544 # 3fa0220 <_start-0x7c05fde0> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: c0b6a72f amominu.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 05d71063 bne a4,t4,80002c40 + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000eb7 lui t4,0x80000 +80002c0c: 00300193 li gp,3 +80002c10: 03d79863 bne a5,t4,80002c40 + +80002c14 : +80002c14: fff00593 li a1,-1 +80002c18: 0006a023 sw zero,0(a3) +80002c1c: c0b6a72f amominu.w a4,a1,(a3) +80002c20: 00000e93 li t4,0 +80002c24: 00400193 li gp,4 +80002c28: 01d71c63 bne a4,t4,80002c40 + +80002c2c : +80002c2c: 0006a783 lw a5,0(a3) +80002c30: 00000e93 li t4,0 +80002c34: 00500193 li gp,5 +80002c38: 01d79463 bne a5,t4,80002c40 +80002c3c: 00301a63 bne zero,gp,80002c50 + +80002c40 : +80002c40: 00119513 slli a0,gp,0x1 +80002c44: 00050063 beqz a0,80002c44 +80002c48: 00156513 ori a0,a0,1 +80002c4c: 00000073 ecall + +80002c50 : +80002c50: 00100513 li a0,1 +80002c54: 00000073 ecall +80002c58: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amoor_w b/Tests/isa/rv32ua-v-amoor_w new file mode 100644 index 0000000..2078bf6 Binary files /dev/null and b/Tests/isa/rv32ua-v-amoor_w differ diff --git a/Tests/isa/rv32ua-v-amoor_w.dump b/Tests/isa/rv32ua-v-amoor_w.dump new file mode 100644 index 0000000..4bea68e --- /dev/null +++ b/Tests/isa/rv32ua-v-amoor_w.dump @@ -0,0 +1,939 @@ + +rv32ua-v-amoor_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79058593 addi a1,a1,1936 # 80002c58 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7ac58593 addi a1,a1,1964 # 80002ce4 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75858593 addi a1,a1,1880 # 80002cfc +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 68c58593 addi a1,a1,1676 # 80002c9c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 67c58593 addi a1,a1,1660 # 80002dc4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e458593 addi a1,a1,1508 # 80002da0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e060613 addi a2,a2,1248 # 80002df0 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f060613 addi a2,a2,1008 # 80002d6c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37060613 addi a2,a2,880 # 80002d38 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00e00793 li a5,14 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 05ac37b7 lui a5,0x5ac3 +80002b9c: 00080637 lui a2,0x80 +80002ba0: c2978793 addi a5,a5,-983 # 5ac2c29 <_start-0x7a53d3d7> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: 40b6a72f amoor.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 03d71e63 bne a4,t4,80002c3c + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000e93 li t4,-2048 +80002c0c: 00300193 li gp,3 +80002c10: 03d79663 bne a5,t4,80002c3c + +80002c14 : +80002c14: 00100593 li a1,1 +80002c18: 40b6a72f amoor.w a4,a1,(a3) +80002c1c: 80000e93 li t4,-2048 +80002c20: 00400193 li gp,4 +80002c24: 01d71c63 bne a4,t4,80002c3c + +80002c28 : +80002c28: 0006a783 lw a5,0(a3) +80002c2c: 80100e93 li t4,-2047 +80002c30: 00500193 li gp,5 +80002c34: 01d79463 bne a5,t4,80002c3c +80002c38: 00301a63 bne zero,gp,80002c4c + +80002c3c : +80002c3c: 00119513 slli a0,gp,0x1 +80002c40: 00050063 beqz a0,80002c40 +80002c44: 00156513 ori a0,a0,1 +80002c48: 00000073 ecall + +80002c4c : +80002c4c: 00100513 li a0,1 +80002c50: 00000073 ecall +80002c54: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amoswap_w b/Tests/isa/rv32ua-v-amoswap_w new file mode 100644 index 0000000..ff97d4f Binary files /dev/null and b/Tests/isa/rv32ua-v-amoswap_w differ diff --git a/Tests/isa/rv32ua-v-amoswap_w.dump b/Tests/isa/rv32ua-v-amoswap_w.dump new file mode 100644 index 0000000..23eb81f --- /dev/null +++ b/Tests/isa/rv32ua-v-amoswap_w.dump @@ -0,0 +1,939 @@ + +rv32ua-v-amoswap_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79058593 addi a1,a1,1936 # 80002c58 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7ac58593 addi a1,a1,1964 # 80002ce4 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75858593 addi a1,a1,1880 # 80002cfc +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 68c58593 addi a1,a1,1676 # 80002c9c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 67c58593 addi a1,a1,1660 # 80002dc4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e458593 addi a1,a1,1508 # 80002da0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e060613 addi a2,a2,1248 # 80002df0 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f060613 addi a2,a2,1008 # 80002d6c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37060613 addi a2,a2,880 # 80002d38 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 02b00793 li a5,43 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 042307b7 lui a5,0x4230 +80002b9c: 00080637 lui a2,0x80 +80002ba0: bbf78793 addi a5,a5,-1089 # 422fbbf <_start-0x7bdd0441> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: 08b6a72f amoswap.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 03d71e63 bne a4,t4,80002c3c + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000e93 li t4,-2048 +80002c0c: 00300193 li gp,3 +80002c10: 03d79663 bne a5,t4,80002c3c + +80002c14 : +80002c14: 800005b7 lui a1,0x80000 +80002c18: 08b6a72f amoswap.w a4,a1,(a3) +80002c1c: 80000e93 li t4,-2048 +80002c20: 00400193 li gp,4 +80002c24: 01d71c63 bne a4,t4,80002c3c + +80002c28 : +80002c28: 0006a783 lw a5,0(a3) +80002c2c: 80000eb7 lui t4,0x80000 +80002c30: 00500193 li gp,5 +80002c34: 01d79463 bne a5,t4,80002c3c +80002c38: 00301a63 bne zero,gp,80002c4c + +80002c3c : +80002c3c: 00119513 slli a0,gp,0x1 +80002c40: 00050063 beqz a0,80002c40 +80002c44: 00156513 ori a0,a0,1 +80002c48: 00000073 ecall + +80002c4c : +80002c4c: 00100513 li a0,1 +80002c50: 00000073 ecall +80002c54: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-amoxor_w b/Tests/isa/rv32ua-v-amoxor_w new file mode 100644 index 0000000..f562565 Binary files /dev/null and b/Tests/isa/rv32ua-v-amoxor_w differ diff --git a/Tests/isa/rv32ua-v-amoxor_w.dump b/Tests/isa/rv32ua-v-amoxor_w.dump new file mode 100644 index 0000000..098c0c1 --- /dev/null +++ b/Tests/isa/rv32ua-v-amoxor_w.dump @@ -0,0 +1,943 @@ + +rv32ua-v-amoxor_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 7a058593 addi a1,a1,1952 # 80002c68 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7bc58593 addi a1,a1,1980 # 80002cf4 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 76858593 addi a1,a1,1896 # 80002d0c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 69c58593 addi a1,a1,1692 # 80002cac +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 68c58593 addi a1,a1,1676 # 80002dd4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5f458593 addi a1,a1,1524 # 80002db0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4f060613 addi a2,a2,1264 # 80002e00 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 40060613 addi a2,a2,1024 # 80002d7c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 38060613 addi a2,a2,896 # 80002d48 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03500793 li a5,53 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0146a7b7 lui a5,0x146a +80002b9c: 00080637 lui a2,0x80 +80002ba0: 03778793 addi a5,a5,55 # 146a037 <_start-0x7eb95fc9> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 80000537 lui a0,0x80000 +80002be4: 80000593 li a1,-2048 +80002be8: 00000697 auipc a3,0x0 +80002bec: 41868693 addi a3,a3,1048 # 80003000 +80002bf0: 00a6a023 sw a0,0(a3) +80002bf4: 20b6a72f amoxor.w a4,a1,(a3) +80002bf8: 80000eb7 lui t4,0x80000 +80002bfc: 00200193 li gp,2 +80002c00: 05d71663 bne a4,t4,80002c4c + +80002c04 : +80002c04: 0006a783 lw a5,0(a3) +80002c08: 80000eb7 lui t4,0x80000 +80002c0c: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408> +80002c10: 00300193 li gp,3 +80002c14: 03d79c63 bne a5,t4,80002c4c + +80002c18 : +80002c18: c00005b7 lui a1,0xc0000 +80002c1c: 00158593 addi a1,a1,1 # c0000001 <_end+0x3fff9c09> +80002c20: 20b6a72f amoxor.w a4,a1,(a3) +80002c24: 80000eb7 lui t4,0x80000 +80002c28: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408> +80002c2c: 00400193 li gp,4 +80002c30: 01d71e63 bne a4,t4,80002c4c + +80002c34 : +80002c34: 0006a783 lw a5,0(a3) +80002c38: c0000eb7 lui t4,0xc0000 +80002c3c: 801e8e93 addi t4,t4,-2047 # bffff801 <_end+0x3fff9409> +80002c40: 00500193 li gp,5 +80002c44: 01d79463 bne a5,t4,80002c4c +80002c48: 00301a63 bne zero,gp,80002c5c + +80002c4c : +80002c4c: 00119513 slli a0,gp,0x1 +80002c50: 00050063 beqz a0,80002c50 +80002c54: 00156513 ori a0,a0,1 +80002c58: 00000073 ecall + +80002c5c : +80002c5c: 00100513 li a0,1 +80002c60: 00000073 ecall +80002c64: c0001073 unimp diff --git a/Tests/isa/rv32ua-v-lrsc b/Tests/isa/rv32ua-v-lrsc new file mode 100644 index 0000000..c34a1ee Binary files /dev/null and b/Tests/isa/rv32ua-v-lrsc differ diff --git a/Tests/isa/rv32ua-v-lrsc.dump b/Tests/isa/rv32ua-v-lrsc.dump new file mode 100644 index 0000000..cf552e8 --- /dev/null +++ b/Tests/isa/rv32ua-v-lrsc.dump @@ -0,0 +1,979 @@ + +rv32ua-v-lrsc: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 7f858593 addi a1,a1,2040 # 80002cc0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 81458593 addi a1,a1,-2028 # 80002d4c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 7c058593 addi a1,a1,1984 # 80002d64 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 6f458593 addi a1,a1,1780 # 80002d04 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6e458593 addi a1,a1,1764 # 80002e2c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 64c58593 addi a1,a1,1612 # 80002e08 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 54860613 addi a2,a2,1352 # 80002e58 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 45860613 addi a2,a2,1112 # 80002dd4 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3d860613 addi a2,a2,984 # 80002da0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00500793 li a5,5 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 01a297b7 lui a5,0x1a29 +80002b9c: 00080637 lui a2,0x80 +80002ba0: cbe78793 addi a5,a5,-834 # 1a28cbe <_start-0x7e5d7342> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000517 auipc a0,0x0 +80002be4: 42050513 addi a0,a0,1056 # 80003000 +80002be8: 00100593 li a1,1 +80002bec: 00b5262f amoadd.w a2,a1,(a0) +80002bf0: 00100693 li a3,1 +80002bf4: fed67ee3 bleu a3,a2,80002bf0 +80002bf8: 00052583 lw a1,0(a0) +80002bfc: fed5eee3 bltu a1,a3,80002bf8 + +80002c00 : +80002c00: 00000517 auipc a0,0x0 +80002c04: 40850513 addi a0,a0,1032 # 80003008 +80002c08: 1805272f sc.w a4,zero,(a0) +80002c0c: 00100e93 li t4,1 +80002c10: 00200193 li gp,2 +80002c14: 09d71863 bne a4,t4,80002ca4 + +80002c18 : +80002c18: 00000517 auipc a0,0x0 +80002c1c: 3f050513 addi a0,a0,1008 # 80003008 +80002c20: 40050593 addi a1,a0,1024 +80002c24: 1005a5af lr.w a1,(a1) +80002c28: 18b5272f sc.w a4,a1,(a0) +80002c2c: 00100e93 li t4,1 +80002c30: 00300193 li gp,3 +80002c34: 07d71863 bne a4,t4,80002ca4 +80002c38: 00000517 auipc a0,0x0 +80002c3c: 3d050513 addi a0,a0,976 # 80003008 +80002c40: 40000593 li a1,1024 +80002c44: 00160613 addi a2,a2,1 +80002c48: 1005272f lr.w a4,(a0) +80002c4c: 00c70733 add a4,a4,a2 +80002c50: 18e5272f sc.w a4,a4,(a0) +80002c54: fe071ae3 bnez a4,80002c48 +80002c58: fff58593 addi a1,a1,-1 # 7fffffff <_end+0xffff9c07> +80002c5c: fe0596e3 bnez a1,80002c48 +80002c60: 00000517 auipc a0,0x0 +80002c64: 3a450513 addi a0,a0,932 # 80003004 +80002c68: 00100593 li a1,1 +80002c6c: 00b5202f amoadd.w zero,a1,(a0) +80002c70: 00052583 lw a1,0(a0) +80002c74: fed5cee3 blt a1,a3,80002c70 +80002c78: 0ff0000f fence + +80002c7c : +80002c7c: 00000517 auipc a0,0x0 +80002c80: 38c52503 lw a0,908(a0) # 80003008 +80002c84: 00969593 slli a1,a3,0x9 +80002c88: 40b50533 sub a0,a0,a1 +80002c8c: fff68693 addi a3,a3,-1 +80002c90: fe06dce3 bgez a3,80002c88 +80002c94: 00000e93 li t4,0 +80002c98: 00400193 li gp,4 +80002c9c: 01d51463 bne a0,t4,80002ca4 +80002ca0: 00301a63 bne zero,gp,80002cb4 + +80002ca4 : +80002ca4: 00119513 slli a0,gp,0x1 +80002ca8: 00050063 beqz a0,80002ca8 +80002cac: 00156513 ori a0,a0,1 +80002cb0: 00000073 ecall + +80002cb4 : +80002cb4: 00100513 li a0,1 +80002cb8: 00000073 ecall +80002cbc: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: 0000 unimp + +80003004 : +80003004: 0000 unimp +80003006: 0000 unimp + +80003008 : +80003008: 0000 unimp +8000300a: 0000 unimp diff --git a/Tests/isa/rv32uc-p-rvc b/Tests/isa/rv32uc-p-rvc new file mode 100644 index 0000000..b99e0ae Binary files /dev/null and b/Tests/isa/rv32uc-p-rvc differ diff --git a/Tests/isa/rv32uc-p-rvc.dump b/Tests/isa/rv32uc-p-rvc.dump new file mode 100644 index 0000000..adfa4c2 --- /dev/null +++ b/Tests/isa/rv32uc-p-rvc.dump @@ -0,0 +1,4904 @@ + +rv32uc-p-rvc: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00003f17 auipc t5,0x3 +80000044: fc3f2023 sw gp,-64(t5) # 80003000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret +800000fc: 00200193 li gp,2 +80000100: 29a00593 li a1,666 + +80000104 : +80000104: 6fb0106f j 80001ffe + +80000108 : +80000108: 3210 fld fa2,32(a2) +8000010a: 7654 flw fa3,44(a2) +8000010c: ba98 fsd fa4,48(a3) +8000010e: fedc fsw fa5,60(a3) +80000110: 3210 fld fa2,32(a2) +80000112: 7654 flw fa3,44(a2) +80000114: ba98 fsd fa4,48(a3) +80000116: fedc fsw fa5,60(a3) +80000118: 00000013 nop +8000011c: 00000013 nop +80000120: 00000013 nop +80000124: 00000013 nop +80000128: 00000013 nop +8000012c: 00000013 nop +80000130: 00000013 nop +80000134: 00000013 nop +80000138: 00000013 nop +8000013c: 00000013 nop +80000140: 00000013 nop +80000144: 00000013 nop +80000148: 00000013 nop +8000014c: 00000013 nop +80000150: 00000013 nop +80000154: 00000013 nop +80000158: 00000013 nop +8000015c: 00000013 nop +80000160: 00000013 nop +80000164: 00000013 nop +80000168: 00000013 nop +8000016c: 00000013 nop +80000170: 00000013 nop +80000174: 00000013 nop +80000178: 00000013 nop +8000017c: 00000013 nop +80000180: 00000013 nop +80000184: 00000013 nop +80000188: 00000013 nop +8000018c: 00000013 nop +80000190: 00000013 nop +80000194: 00000013 nop +80000198: 00000013 nop +8000019c: 00000013 nop +800001a0: 00000013 nop +800001a4: 00000013 nop +800001a8: 00000013 nop +800001ac: 00000013 nop +800001b0: 00000013 nop +800001b4: 00000013 nop +800001b8: 00000013 nop +800001bc: 00000013 nop +800001c0: 00000013 nop +800001c4: 00000013 nop +800001c8: 00000013 nop +800001cc: 00000013 nop +800001d0: 00000013 nop +800001d4: 00000013 nop +800001d8: 00000013 nop +800001dc: 00000013 nop +800001e0: 00000013 nop +800001e4: 00000013 nop +800001e8: 00000013 nop +800001ec: 00000013 nop +800001f0: 00000013 nop +800001f4: 00000013 nop +800001f8: 00000013 nop +800001fc: 00000013 nop +80000200: 00000013 nop +80000204: 00000013 nop +80000208: 00000013 nop +8000020c: 00000013 nop +80000210: 00000013 nop +80000214: 00000013 nop +80000218: 00000013 nop +8000021c: 00000013 nop +80000220: 00000013 nop +80000224: 00000013 nop +80000228: 00000013 nop +8000022c: 00000013 nop +80000230: 00000013 nop +80000234: 00000013 nop +80000238: 00000013 nop +8000023c: 00000013 nop +80000240: 00000013 nop +80000244: 00000013 nop +80000248: 00000013 nop +8000024c: 00000013 nop +80000250: 00000013 nop +80000254: 00000013 nop +80000258: 00000013 nop +8000025c: 00000013 nop +80000260: 00000013 nop +80000264: 00000013 nop +80000268: 00000013 nop +8000026c: 00000013 nop +80000270: 00000013 nop +80000274: 00000013 nop +80000278: 00000013 nop +8000027c: 00000013 nop +80000280: 00000013 nop +80000284: 00000013 nop +80000288: 00000013 nop +8000028c: 00000013 nop +80000290: 00000013 nop +80000294: 00000013 nop +80000298: 00000013 nop +8000029c: 00000013 nop +800002a0: 00000013 nop +800002a4: 00000013 nop +800002a8: 00000013 nop +800002ac: 00000013 nop +800002b0: 00000013 nop +800002b4: 00000013 nop +800002b8: 00000013 nop +800002bc: 00000013 nop +800002c0: 00000013 nop +800002c4: 00000013 nop +800002c8: 00000013 nop +800002cc: 00000013 nop +800002d0: 00000013 nop +800002d4: 00000013 nop +800002d8: 00000013 nop +800002dc: 00000013 nop +800002e0: 00000013 nop +800002e4: 00000013 nop +800002e8: 00000013 nop +800002ec: 00000013 nop +800002f0: 00000013 nop +800002f4: 00000013 nop +800002f8: 00000013 nop +800002fc: 00000013 nop +80000300: 00000013 nop +80000304: 00000013 nop +80000308: 00000013 nop +8000030c: 00000013 nop +80000310: 00000013 nop +80000314: 00000013 nop +80000318: 00000013 nop +8000031c: 00000013 nop +80000320: 00000013 nop +80000324: 00000013 nop +80000328: 00000013 nop +8000032c: 00000013 nop +80000330: 00000013 nop +80000334: 00000013 nop +80000338: 00000013 nop +8000033c: 00000013 nop +80000340: 00000013 nop +80000344: 00000013 nop +80000348: 00000013 nop +8000034c: 00000013 nop +80000350: 00000013 nop +80000354: 00000013 nop +80000358: 00000013 nop +8000035c: 00000013 nop +80000360: 00000013 nop +80000364: 00000013 nop +80000368: 00000013 nop +8000036c: 00000013 nop +80000370: 00000013 nop +80000374: 00000013 nop +80000378: 00000013 nop +8000037c: 00000013 nop +80000380: 00000013 nop +80000384: 00000013 nop +80000388: 00000013 nop +8000038c: 00000013 nop +80000390: 00000013 nop +80000394: 00000013 nop +80000398: 00000013 nop +8000039c: 00000013 nop +800003a0: 00000013 nop +800003a4: 00000013 nop +800003a8: 00000013 nop +800003ac: 00000013 nop +800003b0: 00000013 nop +800003b4: 00000013 nop +800003b8: 00000013 nop +800003bc: 00000013 nop +800003c0: 00000013 nop +800003c4: 00000013 nop +800003c8: 00000013 nop +800003cc: 00000013 nop +800003d0: 00000013 nop +800003d4: 00000013 nop +800003d8: 00000013 nop +800003dc: 00000013 nop +800003e0: 00000013 nop +800003e4: 00000013 nop +800003e8: 00000013 nop +800003ec: 00000013 nop +800003f0: 00000013 nop +800003f4: 00000013 nop +800003f8: 00000013 nop +800003fc: 00000013 nop +80000400: 00000013 nop +80000404: 00000013 nop +80000408: 00000013 nop +8000040c: 00000013 nop +80000410: 00000013 nop +80000414: 00000013 nop +80000418: 00000013 nop +8000041c: 00000013 nop +80000420: 00000013 nop +80000424: 00000013 nop +80000428: 00000013 nop +8000042c: 00000013 nop +80000430: 00000013 nop +80000434: 00000013 nop +80000438: 00000013 nop +8000043c: 00000013 nop +80000440: 00000013 nop +80000444: 00000013 nop +80000448: 00000013 nop +8000044c: 00000013 nop +80000450: 00000013 nop +80000454: 00000013 nop +80000458: 00000013 nop +8000045c: 00000013 nop +80000460: 00000013 nop +80000464: 00000013 nop +80000468: 00000013 nop +8000046c: 00000013 nop +80000470: 00000013 nop +80000474: 00000013 nop +80000478: 00000013 nop +8000047c: 00000013 nop +80000480: 00000013 nop +80000484: 00000013 nop +80000488: 00000013 nop +8000048c: 00000013 nop +80000490: 00000013 nop +80000494: 00000013 nop +80000498: 00000013 nop +8000049c: 00000013 nop +800004a0: 00000013 nop +800004a4: 00000013 nop +800004a8: 00000013 nop +800004ac: 00000013 nop +800004b0: 00000013 nop +800004b4: 00000013 nop +800004b8: 00000013 nop +800004bc: 00000013 nop +800004c0: 00000013 nop +800004c4: 00000013 nop +800004c8: 00000013 nop +800004cc: 00000013 nop +800004d0: 00000013 nop +800004d4: 00000013 nop +800004d8: 00000013 nop +800004dc: 00000013 nop +800004e0: 00000013 nop +800004e4: 00000013 nop +800004e8: 00000013 nop +800004ec: 00000013 nop +800004f0: 00000013 nop +800004f4: 00000013 nop +800004f8: 00000013 nop +800004fc: 00000013 nop +80000500: 00000013 nop +80000504: 00000013 nop +80000508: 00000013 nop +8000050c: 00000013 nop +80000510: 00000013 nop +80000514: 00000013 nop +80000518: 00000013 nop +8000051c: 00000013 nop +80000520: 00000013 nop +80000524: 00000013 nop +80000528: 00000013 nop +8000052c: 00000013 nop +80000530: 00000013 nop +80000534: 00000013 nop +80000538: 00000013 nop +8000053c: 00000013 nop +80000540: 00000013 nop +80000544: 00000013 nop +80000548: 00000013 nop +8000054c: 00000013 nop +80000550: 00000013 nop +80000554: 00000013 nop +80000558: 00000013 nop +8000055c: 00000013 nop +80000560: 00000013 nop +80000564: 00000013 nop +80000568: 00000013 nop +8000056c: 00000013 nop +80000570: 00000013 nop +80000574: 00000013 nop +80000578: 00000013 nop +8000057c: 00000013 nop +80000580: 00000013 nop +80000584: 00000013 nop +80000588: 00000013 nop +8000058c: 00000013 nop +80000590: 00000013 nop +80000594: 00000013 nop +80000598: 00000013 nop +8000059c: 00000013 nop +800005a0: 00000013 nop +800005a4: 00000013 nop +800005a8: 00000013 nop +800005ac: 00000013 nop +800005b0: 00000013 nop +800005b4: 00000013 nop +800005b8: 00000013 nop +800005bc: 00000013 nop +800005c0: 00000013 nop +800005c4: 00000013 nop +800005c8: 00000013 nop +800005cc: 00000013 nop +800005d0: 00000013 nop +800005d4: 00000013 nop +800005d8: 00000013 nop +800005dc: 00000013 nop +800005e0: 00000013 nop +800005e4: 00000013 nop +800005e8: 00000013 nop +800005ec: 00000013 nop +800005f0: 00000013 nop +800005f4: 00000013 nop +800005f8: 00000013 nop +800005fc: 00000013 nop +80000600: 00000013 nop +80000604: 00000013 nop +80000608: 00000013 nop +8000060c: 00000013 nop +80000610: 00000013 nop +80000614: 00000013 nop +80000618: 00000013 nop +8000061c: 00000013 nop +80000620: 00000013 nop +80000624: 00000013 nop +80000628: 00000013 nop +8000062c: 00000013 nop +80000630: 00000013 nop +80000634: 00000013 nop +80000638: 00000013 nop +8000063c: 00000013 nop +80000640: 00000013 nop +80000644: 00000013 nop +80000648: 00000013 nop +8000064c: 00000013 nop +80000650: 00000013 nop +80000654: 00000013 nop +80000658: 00000013 nop +8000065c: 00000013 nop +80000660: 00000013 nop +80000664: 00000013 nop +80000668: 00000013 nop +8000066c: 00000013 nop +80000670: 00000013 nop +80000674: 00000013 nop +80000678: 00000013 nop +8000067c: 00000013 nop +80000680: 00000013 nop +80000684: 00000013 nop +80000688: 00000013 nop +8000068c: 00000013 nop +80000690: 00000013 nop +80000694: 00000013 nop +80000698: 00000013 nop +8000069c: 00000013 nop +800006a0: 00000013 nop +800006a4: 00000013 nop +800006a8: 00000013 nop +800006ac: 00000013 nop +800006b0: 00000013 nop +800006b4: 00000013 nop +800006b8: 00000013 nop +800006bc: 00000013 nop +800006c0: 00000013 nop +800006c4: 00000013 nop +800006c8: 00000013 nop +800006cc: 00000013 nop +800006d0: 00000013 nop +800006d4: 00000013 nop +800006d8: 00000013 nop +800006dc: 00000013 nop +800006e0: 00000013 nop +800006e4: 00000013 nop +800006e8: 00000013 nop +800006ec: 00000013 nop +800006f0: 00000013 nop +800006f4: 00000013 nop +800006f8: 00000013 nop +800006fc: 00000013 nop +80000700: 00000013 nop +80000704: 00000013 nop +80000708: 00000013 nop +8000070c: 00000013 nop +80000710: 00000013 nop +80000714: 00000013 nop +80000718: 00000013 nop +8000071c: 00000013 nop +80000720: 00000013 nop +80000724: 00000013 nop +80000728: 00000013 nop +8000072c: 00000013 nop +80000730: 00000013 nop +80000734: 00000013 nop +80000738: 00000013 nop +8000073c: 00000013 nop +80000740: 00000013 nop +80000744: 00000013 nop +80000748: 00000013 nop +8000074c: 00000013 nop +80000750: 00000013 nop +80000754: 00000013 nop +80000758: 00000013 nop +8000075c: 00000013 nop +80000760: 00000013 nop +80000764: 00000013 nop +80000768: 00000013 nop +8000076c: 00000013 nop +80000770: 00000013 nop +80000774: 00000013 nop +80000778: 00000013 nop +8000077c: 00000013 nop +80000780: 00000013 nop +80000784: 00000013 nop +80000788: 00000013 nop +8000078c: 00000013 nop +80000790: 00000013 nop +80000794: 00000013 nop +80000798: 00000013 nop +8000079c: 00000013 nop +800007a0: 00000013 nop +800007a4: 00000013 nop +800007a8: 00000013 nop +800007ac: 00000013 nop +800007b0: 00000013 nop +800007b4: 00000013 nop +800007b8: 00000013 nop +800007bc: 00000013 nop +800007c0: 00000013 nop +800007c4: 00000013 nop +800007c8: 00000013 nop +800007cc: 00000013 nop +800007d0: 00000013 nop +800007d4: 00000013 nop +800007d8: 00000013 nop +800007dc: 00000013 nop +800007e0: 00000013 nop +800007e4: 00000013 nop +800007e8: 00000013 nop +800007ec: 00000013 nop +800007f0: 00000013 nop +800007f4: 00000013 nop +800007f8: 00000013 nop +800007fc: 00000013 nop +80000800: 00000013 nop +80000804: 00000013 nop +80000808: 00000013 nop +8000080c: 00000013 nop +80000810: 00000013 nop +80000814: 00000013 nop +80000818: 00000013 nop +8000081c: 00000013 nop +80000820: 00000013 nop +80000824: 00000013 nop +80000828: 00000013 nop +8000082c: 00000013 nop +80000830: 00000013 nop +80000834: 00000013 nop +80000838: 00000013 nop +8000083c: 00000013 nop +80000840: 00000013 nop +80000844: 00000013 nop +80000848: 00000013 nop +8000084c: 00000013 nop +80000850: 00000013 nop +80000854: 00000013 nop +80000858: 00000013 nop +8000085c: 00000013 nop +80000860: 00000013 nop +80000864: 00000013 nop +80000868: 00000013 nop +8000086c: 00000013 nop +80000870: 00000013 nop +80000874: 00000013 nop +80000878: 00000013 nop +8000087c: 00000013 nop +80000880: 00000013 nop +80000884: 00000013 nop +80000888: 00000013 nop +8000088c: 00000013 nop +80000890: 00000013 nop +80000894: 00000013 nop +80000898: 00000013 nop +8000089c: 00000013 nop +800008a0: 00000013 nop +800008a4: 00000013 nop +800008a8: 00000013 nop +800008ac: 00000013 nop +800008b0: 00000013 nop +800008b4: 00000013 nop +800008b8: 00000013 nop +800008bc: 00000013 nop +800008c0: 00000013 nop +800008c4: 00000013 nop +800008c8: 00000013 nop +800008cc: 00000013 nop +800008d0: 00000013 nop +800008d4: 00000013 nop +800008d8: 00000013 nop +800008dc: 00000013 nop +800008e0: 00000013 nop +800008e4: 00000013 nop +800008e8: 00000013 nop +800008ec: 00000013 nop +800008f0: 00000013 nop +800008f4: 00000013 nop +800008f8: 00000013 nop +800008fc: 00000013 nop +80000900: 00000013 nop +80000904: 00000013 nop +80000908: 00000013 nop +8000090c: 00000013 nop +80000910: 00000013 nop +80000914: 00000013 nop +80000918: 00000013 nop +8000091c: 00000013 nop +80000920: 00000013 nop +80000924: 00000013 nop +80000928: 00000013 nop +8000092c: 00000013 nop +80000930: 00000013 nop +80000934: 00000013 nop +80000938: 00000013 nop +8000093c: 00000013 nop +80000940: 00000013 nop +80000944: 00000013 nop +80000948: 00000013 nop +8000094c: 00000013 nop +80000950: 00000013 nop +80000954: 00000013 nop +80000958: 00000013 nop +8000095c: 00000013 nop +80000960: 00000013 nop +80000964: 00000013 nop +80000968: 00000013 nop +8000096c: 00000013 nop +80000970: 00000013 nop +80000974: 00000013 nop +80000978: 00000013 nop +8000097c: 00000013 nop +80000980: 00000013 nop +80000984: 00000013 nop +80000988: 00000013 nop +8000098c: 00000013 nop +80000990: 00000013 nop +80000994: 00000013 nop +80000998: 00000013 nop +8000099c: 00000013 nop +800009a0: 00000013 nop +800009a4: 00000013 nop +800009a8: 00000013 nop +800009ac: 00000013 nop +800009b0: 00000013 nop +800009b4: 00000013 nop +800009b8: 00000013 nop +800009bc: 00000013 nop +800009c0: 00000013 nop +800009c4: 00000013 nop +800009c8: 00000013 nop +800009cc: 00000013 nop +800009d0: 00000013 nop +800009d4: 00000013 nop +800009d8: 00000013 nop +800009dc: 00000013 nop +800009e0: 00000013 nop +800009e4: 00000013 nop +800009e8: 00000013 nop +800009ec: 00000013 nop +800009f0: 00000013 nop +800009f4: 00000013 nop +800009f8: 00000013 nop +800009fc: 00000013 nop +80000a00: 00000013 nop +80000a04: 00000013 nop +80000a08: 00000013 nop +80000a0c: 00000013 nop +80000a10: 00000013 nop +80000a14: 00000013 nop +80000a18: 00000013 nop +80000a1c: 00000013 nop +80000a20: 00000013 nop +80000a24: 00000013 nop +80000a28: 00000013 nop +80000a2c: 00000013 nop +80000a30: 00000013 nop +80000a34: 00000013 nop +80000a38: 00000013 nop +80000a3c: 00000013 nop +80000a40: 00000013 nop +80000a44: 00000013 nop +80000a48: 00000013 nop +80000a4c: 00000013 nop +80000a50: 00000013 nop +80000a54: 00000013 nop +80000a58: 00000013 nop +80000a5c: 00000013 nop +80000a60: 00000013 nop +80000a64: 00000013 nop +80000a68: 00000013 nop +80000a6c: 00000013 nop +80000a70: 00000013 nop +80000a74: 00000013 nop +80000a78: 00000013 nop +80000a7c: 00000013 nop +80000a80: 00000013 nop +80000a84: 00000013 nop +80000a88: 00000013 nop +80000a8c: 00000013 nop +80000a90: 00000013 nop +80000a94: 00000013 nop +80000a98: 00000013 nop +80000a9c: 00000013 nop +80000aa0: 00000013 nop +80000aa4: 00000013 nop +80000aa8: 00000013 nop +80000aac: 00000013 nop +80000ab0: 00000013 nop +80000ab4: 00000013 nop +80000ab8: 00000013 nop +80000abc: 00000013 nop +80000ac0: 00000013 nop +80000ac4: 00000013 nop +80000ac8: 00000013 nop +80000acc: 00000013 nop +80000ad0: 00000013 nop +80000ad4: 00000013 nop +80000ad8: 00000013 nop +80000adc: 00000013 nop +80000ae0: 00000013 nop +80000ae4: 00000013 nop +80000ae8: 00000013 nop +80000aec: 00000013 nop +80000af0: 00000013 nop +80000af4: 00000013 nop +80000af8: 00000013 nop +80000afc: 00000013 nop +80000b00: 00000013 nop +80000b04: 00000013 nop +80000b08: 00000013 nop +80000b0c: 00000013 nop +80000b10: 00000013 nop +80000b14: 00000013 nop +80000b18: 00000013 nop +80000b1c: 00000013 nop +80000b20: 00000013 nop +80000b24: 00000013 nop +80000b28: 00000013 nop +80000b2c: 00000013 nop +80000b30: 00000013 nop +80000b34: 00000013 nop +80000b38: 00000013 nop +80000b3c: 00000013 nop +80000b40: 00000013 nop +80000b44: 00000013 nop +80000b48: 00000013 nop +80000b4c: 00000013 nop +80000b50: 00000013 nop +80000b54: 00000013 nop +80000b58: 00000013 nop +80000b5c: 00000013 nop +80000b60: 00000013 nop +80000b64: 00000013 nop +80000b68: 00000013 nop +80000b6c: 00000013 nop +80000b70: 00000013 nop +80000b74: 00000013 nop +80000b78: 00000013 nop +80000b7c: 00000013 nop +80000b80: 00000013 nop +80000b84: 00000013 nop +80000b88: 00000013 nop +80000b8c: 00000013 nop +80000b90: 00000013 nop +80000b94: 00000013 nop +80000b98: 00000013 nop +80000b9c: 00000013 nop +80000ba0: 00000013 nop +80000ba4: 00000013 nop +80000ba8: 00000013 nop +80000bac: 00000013 nop +80000bb0: 00000013 nop +80000bb4: 00000013 nop +80000bb8: 00000013 nop +80000bbc: 00000013 nop +80000bc0: 00000013 nop +80000bc4: 00000013 nop +80000bc8: 00000013 nop +80000bcc: 00000013 nop +80000bd0: 00000013 nop +80000bd4: 00000013 nop +80000bd8: 00000013 nop +80000bdc: 00000013 nop +80000be0: 00000013 nop +80000be4: 00000013 nop +80000be8: 00000013 nop +80000bec: 00000013 nop +80000bf0: 00000013 nop +80000bf4: 00000013 nop +80000bf8: 00000013 nop +80000bfc: 00000013 nop +80000c00: 00000013 nop +80000c04: 00000013 nop +80000c08: 00000013 nop +80000c0c: 00000013 nop +80000c10: 00000013 nop +80000c14: 00000013 nop +80000c18: 00000013 nop +80000c1c: 00000013 nop +80000c20: 00000013 nop +80000c24: 00000013 nop +80000c28: 00000013 nop +80000c2c: 00000013 nop +80000c30: 00000013 nop +80000c34: 00000013 nop +80000c38: 00000013 nop +80000c3c: 00000013 nop +80000c40: 00000013 nop +80000c44: 00000013 nop +80000c48: 00000013 nop +80000c4c: 00000013 nop +80000c50: 00000013 nop +80000c54: 00000013 nop +80000c58: 00000013 nop +80000c5c: 00000013 nop +80000c60: 00000013 nop +80000c64: 00000013 nop +80000c68: 00000013 nop +80000c6c: 00000013 nop +80000c70: 00000013 nop +80000c74: 00000013 nop +80000c78: 00000013 nop +80000c7c: 00000013 nop +80000c80: 00000013 nop +80000c84: 00000013 nop +80000c88: 00000013 nop +80000c8c: 00000013 nop +80000c90: 00000013 nop +80000c94: 00000013 nop +80000c98: 00000013 nop +80000c9c: 00000013 nop +80000ca0: 00000013 nop +80000ca4: 00000013 nop +80000ca8: 00000013 nop +80000cac: 00000013 nop +80000cb0: 00000013 nop +80000cb4: 00000013 nop +80000cb8: 00000013 nop +80000cbc: 00000013 nop +80000cc0: 00000013 nop +80000cc4: 00000013 nop +80000cc8: 00000013 nop +80000ccc: 00000013 nop +80000cd0: 00000013 nop +80000cd4: 00000013 nop +80000cd8: 00000013 nop +80000cdc: 00000013 nop +80000ce0: 00000013 nop +80000ce4: 00000013 nop +80000ce8: 00000013 nop +80000cec: 00000013 nop +80000cf0: 00000013 nop +80000cf4: 00000013 nop +80000cf8: 00000013 nop +80000cfc: 00000013 nop +80000d00: 00000013 nop +80000d04: 00000013 nop +80000d08: 00000013 nop +80000d0c: 00000013 nop +80000d10: 00000013 nop +80000d14: 00000013 nop +80000d18: 00000013 nop +80000d1c: 00000013 nop +80000d20: 00000013 nop +80000d24: 00000013 nop +80000d28: 00000013 nop +80000d2c: 00000013 nop +80000d30: 00000013 nop +80000d34: 00000013 nop +80000d38: 00000013 nop +80000d3c: 00000013 nop +80000d40: 00000013 nop +80000d44: 00000013 nop +80000d48: 00000013 nop +80000d4c: 00000013 nop +80000d50: 00000013 nop +80000d54: 00000013 nop +80000d58: 00000013 nop +80000d5c: 00000013 nop +80000d60: 00000013 nop +80000d64: 00000013 nop +80000d68: 00000013 nop +80000d6c: 00000013 nop +80000d70: 00000013 nop +80000d74: 00000013 nop +80000d78: 00000013 nop +80000d7c: 00000013 nop +80000d80: 00000013 nop +80000d84: 00000013 nop +80000d88: 00000013 nop +80000d8c: 00000013 nop +80000d90: 00000013 nop +80000d94: 00000013 nop +80000d98: 00000013 nop +80000d9c: 00000013 nop +80000da0: 00000013 nop +80000da4: 00000013 nop +80000da8: 00000013 nop +80000dac: 00000013 nop +80000db0: 00000013 nop +80000db4: 00000013 nop +80000db8: 00000013 nop +80000dbc: 00000013 nop +80000dc0: 00000013 nop +80000dc4: 00000013 nop +80000dc8: 00000013 nop +80000dcc: 00000013 nop +80000dd0: 00000013 nop +80000dd4: 00000013 nop +80000dd8: 00000013 nop +80000ddc: 00000013 nop +80000de0: 00000013 nop +80000de4: 00000013 nop +80000de8: 00000013 nop +80000dec: 00000013 nop +80000df0: 00000013 nop +80000df4: 00000013 nop +80000df8: 00000013 nop +80000dfc: 00000013 nop +80000e00: 00000013 nop +80000e04: 00000013 nop +80000e08: 00000013 nop +80000e0c: 00000013 nop +80000e10: 00000013 nop +80000e14: 00000013 nop +80000e18: 00000013 nop +80000e1c: 00000013 nop +80000e20: 00000013 nop +80000e24: 00000013 nop +80000e28: 00000013 nop +80000e2c: 00000013 nop +80000e30: 00000013 nop +80000e34: 00000013 nop +80000e38: 00000013 nop +80000e3c: 00000013 nop +80000e40: 00000013 nop +80000e44: 00000013 nop +80000e48: 00000013 nop +80000e4c: 00000013 nop +80000e50: 00000013 nop +80000e54: 00000013 nop +80000e58: 00000013 nop +80000e5c: 00000013 nop +80000e60: 00000013 nop +80000e64: 00000013 nop +80000e68: 00000013 nop +80000e6c: 00000013 nop +80000e70: 00000013 nop +80000e74: 00000013 nop +80000e78: 00000013 nop +80000e7c: 00000013 nop +80000e80: 00000013 nop +80000e84: 00000013 nop +80000e88: 00000013 nop +80000e8c: 00000013 nop +80000e90: 00000013 nop +80000e94: 00000013 nop +80000e98: 00000013 nop +80000e9c: 00000013 nop +80000ea0: 00000013 nop +80000ea4: 00000013 nop +80000ea8: 00000013 nop +80000eac: 00000013 nop +80000eb0: 00000013 nop +80000eb4: 00000013 nop +80000eb8: 00000013 nop +80000ebc: 00000013 nop +80000ec0: 00000013 nop +80000ec4: 00000013 nop +80000ec8: 00000013 nop +80000ecc: 00000013 nop +80000ed0: 00000013 nop +80000ed4: 00000013 nop +80000ed8: 00000013 nop +80000edc: 00000013 nop +80000ee0: 00000013 nop +80000ee4: 00000013 nop +80000ee8: 00000013 nop +80000eec: 00000013 nop +80000ef0: 00000013 nop +80000ef4: 00000013 nop +80000ef8: 00000013 nop +80000efc: 00000013 nop +80000f00: 00000013 nop +80000f04: 00000013 nop +80000f08: 00000013 nop +80000f0c: 00000013 nop +80000f10: 00000013 nop +80000f14: 00000013 nop +80000f18: 00000013 nop +80000f1c: 00000013 nop +80000f20: 00000013 nop +80000f24: 00000013 nop +80000f28: 00000013 nop +80000f2c: 00000013 nop +80000f30: 00000013 nop +80000f34: 00000013 nop +80000f38: 00000013 nop +80000f3c: 00000013 nop +80000f40: 00000013 nop +80000f44: 00000013 nop +80000f48: 00000013 nop +80000f4c: 00000013 nop +80000f50: 00000013 nop +80000f54: 00000013 nop +80000f58: 00000013 nop +80000f5c: 00000013 nop +80000f60: 00000013 nop +80000f64: 00000013 nop +80000f68: 00000013 nop +80000f6c: 00000013 nop +80000f70: 00000013 nop +80000f74: 00000013 nop +80000f78: 00000013 nop +80000f7c: 00000013 nop +80000f80: 00000013 nop +80000f84: 00000013 nop +80000f88: 00000013 nop +80000f8c: 00000013 nop +80000f90: 00000013 nop +80000f94: 00000013 nop +80000f98: 00000013 nop +80000f9c: 00000013 nop +80000fa0: 00000013 nop +80000fa4: 00000013 nop +80000fa8: 00000013 nop +80000fac: 00000013 nop +80000fb0: 00000013 nop +80000fb4: 00000013 nop +80000fb8: 00000013 nop +80000fbc: 00000013 nop +80000fc0: 00000013 nop +80000fc4: 00000013 nop +80000fc8: 00000013 nop +80000fcc: 00000013 nop +80000fd0: 00000013 nop +80000fd4: 00000013 nop +80000fd8: 00000013 nop +80000fdc: 00000013 nop +80000fe0: 00000013 nop +80000fe4: 00000013 nop +80000fe8: 00000013 nop +80000fec: 00000013 nop +80000ff0: 00000013 nop +80000ff4: 00000013 nop +80000ff8: 00000013 nop +80000ffc: 00000013 nop +80001000: 0000 unimp +80001002: 0000 unimp +80001004: 0000 unimp +80001006: 0000 unimp +80001008: 0000 unimp +8000100a: 0000 unimp +8000100c: 0000 unimp +8000100e: 0000 unimp +80001010: 0000 unimp +80001012: 0000 unimp +80001014: 0000 unimp +80001016: 0000 unimp +80001018: 0000 unimp +8000101a: 0000 unimp +8000101c: 0000 unimp +8000101e: 0000 unimp +80001020: 0000 unimp +80001022: 0000 unimp +80001024: 0000 unimp +80001026: 0000 unimp +80001028: 0000 unimp +8000102a: 0000 unimp +8000102c: 0000 unimp +8000102e: 0000 unimp +80001030: 0000 unimp +80001032: 0000 unimp +80001034: 0000 unimp +80001036: 0000 unimp +80001038: 0000 unimp +8000103a: 0000 unimp +8000103c: 0000 unimp +8000103e: 0000 unimp +80001040: 0000 unimp +80001042: 0000 unimp +80001044: 0000 unimp +80001046: 0000 unimp +80001048: 0000 unimp +8000104a: 0000 unimp +8000104c: 0000 unimp +8000104e: 0000 unimp +80001050: 0000 unimp +80001052: 0000 unimp +80001054: 0000 unimp +80001056: 0000 unimp +80001058: 0000 unimp +8000105a: 0000 unimp +8000105c: 0000 unimp +8000105e: 0000 unimp +80001060: 0000 unimp +80001062: 0000 unimp +80001064: 0000 unimp +80001066: 0000 unimp +80001068: 0000 unimp +8000106a: 0000 unimp +8000106c: 0000 unimp +8000106e: 0000 unimp +80001070: 0000 unimp +80001072: 0000 unimp +80001074: 0000 unimp +80001076: 0000 unimp +80001078: 0000 unimp +8000107a: 0000 unimp +8000107c: 0000 unimp +8000107e: 0000 unimp +80001080: 0000 unimp +80001082: 0000 unimp +80001084: 0000 unimp +80001086: 0000 unimp +80001088: 0000 unimp +8000108a: 0000 unimp +8000108c: 0000 unimp +8000108e: 0000 unimp +80001090: 0000 unimp +80001092: 0000 unimp +80001094: 0000 unimp +80001096: 0000 unimp +80001098: 0000 unimp +8000109a: 0000 unimp +8000109c: 0000 unimp +8000109e: 0000 unimp +800010a0: 0000 unimp +800010a2: 0000 unimp +800010a4: 0000 unimp +800010a6: 0000 unimp +800010a8: 0000 unimp +800010aa: 0000 unimp +800010ac: 0000 unimp +800010ae: 0000 unimp +800010b0: 0000 unimp +800010b2: 0000 unimp +800010b4: 0000 unimp +800010b6: 0000 unimp +800010b8: 0000 unimp +800010ba: 0000 unimp +800010bc: 0000 unimp +800010be: 0000 unimp +800010c0: 0000 unimp +800010c2: 0000 unimp +800010c4: 0000 unimp +800010c6: 0000 unimp +800010c8: 0000 unimp +800010ca: 0000 unimp +800010cc: 0000 unimp +800010ce: 0000 unimp +800010d0: 0000 unimp +800010d2: 0000 unimp +800010d4: 0000 unimp +800010d6: 0000 unimp +800010d8: 0000 unimp +800010da: 0000 unimp +800010dc: 0000 unimp +800010de: 0000 unimp +800010e0: 0000 unimp +800010e2: 0000 unimp +800010e4: 0000 unimp +800010e6: 0000 unimp +800010e8: 0000 unimp +800010ea: 0000 unimp +800010ec: 0000 unimp +800010ee: 0000 unimp +800010f0: 0000 unimp +800010f2: 0000 unimp +800010f4: 0000 unimp +800010f6: 0000 unimp +800010f8: 0000 unimp +800010fa: 0000 unimp +800010fc: 0000 unimp +800010fe: 0000 unimp +80001100: 0000 unimp +80001102: 0000 unimp +80001104: 0000 unimp +80001106: 0000 unimp +80001108: 0000 unimp +8000110a: 0000 unimp +8000110c: 0000 unimp +8000110e: 0000 unimp +80001110: 0000 unimp +80001112: 0000 unimp +80001114: 0000 unimp +80001116: 0000 unimp +80001118: 0000 unimp +8000111a: 0000 unimp +8000111c: 0000 unimp +8000111e: 0000 unimp +80001120: 0000 unimp +80001122: 0000 unimp +80001124: 0000 unimp +80001126: 0000 unimp +80001128: 0000 unimp +8000112a: 0000 unimp +8000112c: 0000 unimp +8000112e: 0000 unimp +80001130: 0000 unimp +80001132: 0000 unimp +80001134: 0000 unimp +80001136: 0000 unimp +80001138: 0000 unimp +8000113a: 0000 unimp +8000113c: 0000 unimp +8000113e: 0000 unimp +80001140: 0000 unimp +80001142: 0000 unimp +80001144: 0000 unimp +80001146: 0000 unimp +80001148: 0000 unimp +8000114a: 0000 unimp +8000114c: 0000 unimp +8000114e: 0000 unimp +80001150: 0000 unimp +80001152: 0000 unimp +80001154: 0000 unimp +80001156: 0000 unimp +80001158: 0000 unimp +8000115a: 0000 unimp +8000115c: 0000 unimp +8000115e: 0000 unimp +80001160: 0000 unimp +80001162: 0000 unimp +80001164: 0000 unimp +80001166: 0000 unimp +80001168: 0000 unimp +8000116a: 0000 unimp +8000116c: 0000 unimp +8000116e: 0000 unimp +80001170: 0000 unimp +80001172: 0000 unimp +80001174: 0000 unimp +80001176: 0000 unimp +80001178: 0000 unimp +8000117a: 0000 unimp +8000117c: 0000 unimp +8000117e: 0000 unimp +80001180: 0000 unimp +80001182: 0000 unimp +80001184: 0000 unimp +80001186: 0000 unimp +80001188: 0000 unimp +8000118a: 0000 unimp +8000118c: 0000 unimp +8000118e: 0000 unimp +80001190: 0000 unimp +80001192: 0000 unimp +80001194: 0000 unimp +80001196: 0000 unimp +80001198: 0000 unimp +8000119a: 0000 unimp +8000119c: 0000 unimp +8000119e: 0000 unimp +800011a0: 0000 unimp +800011a2: 0000 unimp +800011a4: 0000 unimp +800011a6: 0000 unimp +800011a8: 0000 unimp +800011aa: 0000 unimp +800011ac: 0000 unimp +800011ae: 0000 unimp +800011b0: 0000 unimp +800011b2: 0000 unimp +800011b4: 0000 unimp +800011b6: 0000 unimp +800011b8: 0000 unimp +800011ba: 0000 unimp +800011bc: 0000 unimp +800011be: 0000 unimp +800011c0: 0000 unimp +800011c2: 0000 unimp +800011c4: 0000 unimp +800011c6: 0000 unimp +800011c8: 0000 unimp +800011ca: 0000 unimp +800011cc: 0000 unimp +800011ce: 0000 unimp +800011d0: 0000 unimp +800011d2: 0000 unimp +800011d4: 0000 unimp +800011d6: 0000 unimp +800011d8: 0000 unimp +800011da: 0000 unimp +800011dc: 0000 unimp +800011de: 0000 unimp +800011e0: 0000 unimp +800011e2: 0000 unimp +800011e4: 0000 unimp +800011e6: 0000 unimp +800011e8: 0000 unimp +800011ea: 0000 unimp +800011ec: 0000 unimp +800011ee: 0000 unimp +800011f0: 0000 unimp +800011f2: 0000 unimp +800011f4: 0000 unimp +800011f6: 0000 unimp +800011f8: 0000 unimp +800011fa: 0000 unimp +800011fc: 0000 unimp +800011fe: 0000 unimp +80001200: 0000 unimp +80001202: 0000 unimp +80001204: 0000 unimp +80001206: 0000 unimp +80001208: 0000 unimp +8000120a: 0000 unimp +8000120c: 0000 unimp +8000120e: 0000 unimp +80001210: 0000 unimp +80001212: 0000 unimp +80001214: 0000 unimp +80001216: 0000 unimp +80001218: 0000 unimp +8000121a: 0000 unimp +8000121c: 0000 unimp +8000121e: 0000 unimp +80001220: 0000 unimp +80001222: 0000 unimp +80001224: 0000 unimp +80001226: 0000 unimp +80001228: 0000 unimp +8000122a: 0000 unimp +8000122c: 0000 unimp +8000122e: 0000 unimp +80001230: 0000 unimp +80001232: 0000 unimp +80001234: 0000 unimp +80001236: 0000 unimp +80001238: 0000 unimp +8000123a: 0000 unimp +8000123c: 0000 unimp +8000123e: 0000 unimp +80001240: 0000 unimp +80001242: 0000 unimp +80001244: 0000 unimp +80001246: 0000 unimp +80001248: 0000 unimp +8000124a: 0000 unimp +8000124c: 0000 unimp +8000124e: 0000 unimp +80001250: 0000 unimp +80001252: 0000 unimp +80001254: 0000 unimp +80001256: 0000 unimp +80001258: 0000 unimp +8000125a: 0000 unimp +8000125c: 0000 unimp +8000125e: 0000 unimp +80001260: 0000 unimp +80001262: 0000 unimp +80001264: 0000 unimp +80001266: 0000 unimp +80001268: 0000 unimp +8000126a: 0000 unimp +8000126c: 0000 unimp +8000126e: 0000 unimp +80001270: 0000 unimp +80001272: 0000 unimp +80001274: 0000 unimp +80001276: 0000 unimp +80001278: 0000 unimp +8000127a: 0000 unimp +8000127c: 0000 unimp +8000127e: 0000 unimp +80001280: 0000 unimp +80001282: 0000 unimp +80001284: 0000 unimp +80001286: 0000 unimp +80001288: 0000 unimp +8000128a: 0000 unimp +8000128c: 0000 unimp +8000128e: 0000 unimp +80001290: 0000 unimp +80001292: 0000 unimp +80001294: 0000 unimp +80001296: 0000 unimp +80001298: 0000 unimp +8000129a: 0000 unimp +8000129c: 0000 unimp +8000129e: 0000 unimp +800012a0: 0000 unimp +800012a2: 0000 unimp +800012a4: 0000 unimp +800012a6: 0000 unimp +800012a8: 0000 unimp +800012aa: 0000 unimp +800012ac: 0000 unimp +800012ae: 0000 unimp +800012b0: 0000 unimp +800012b2: 0000 unimp +800012b4: 0000 unimp +800012b6: 0000 unimp +800012b8: 0000 unimp +800012ba: 0000 unimp +800012bc: 0000 unimp +800012be: 0000 unimp +800012c0: 0000 unimp +800012c2: 0000 unimp +800012c4: 0000 unimp +800012c6: 0000 unimp +800012c8: 0000 unimp +800012ca: 0000 unimp +800012cc: 0000 unimp +800012ce: 0000 unimp +800012d0: 0000 unimp +800012d2: 0000 unimp +800012d4: 0000 unimp +800012d6: 0000 unimp +800012d8: 0000 unimp +800012da: 0000 unimp +800012dc: 0000 unimp +800012de: 0000 unimp +800012e0: 0000 unimp +800012e2: 0000 unimp +800012e4: 0000 unimp +800012e6: 0000 unimp +800012e8: 0000 unimp +800012ea: 0000 unimp +800012ec: 0000 unimp +800012ee: 0000 unimp +800012f0: 0000 unimp +800012f2: 0000 unimp +800012f4: 0000 unimp +800012f6: 0000 unimp +800012f8: 0000 unimp +800012fa: 0000 unimp +800012fc: 0000 unimp +800012fe: 0000 unimp +80001300: 0000 unimp +80001302: 0000 unimp +80001304: 0000 unimp +80001306: 0000 unimp +80001308: 0000 unimp +8000130a: 0000 unimp +8000130c: 0000 unimp +8000130e: 0000 unimp +80001310: 0000 unimp +80001312: 0000 unimp +80001314: 0000 unimp +80001316: 0000 unimp +80001318: 0000 unimp +8000131a: 0000 unimp +8000131c: 0000 unimp +8000131e: 0000 unimp +80001320: 0000 unimp +80001322: 0000 unimp +80001324: 0000 unimp +80001326: 0000 unimp +80001328: 0000 unimp +8000132a: 0000 unimp +8000132c: 0000 unimp +8000132e: 0000 unimp +80001330: 0000 unimp +80001332: 0000 unimp +80001334: 0000 unimp +80001336: 0000 unimp +80001338: 0000 unimp +8000133a: 0000 unimp +8000133c: 0000 unimp +8000133e: 0000 unimp +80001340: 0000 unimp +80001342: 0000 unimp +80001344: 0000 unimp +80001346: 0000 unimp +80001348: 0000 unimp +8000134a: 0000 unimp +8000134c: 0000 unimp +8000134e: 0000 unimp +80001350: 0000 unimp +80001352: 0000 unimp +80001354: 0000 unimp +80001356: 0000 unimp +80001358: 0000 unimp +8000135a: 0000 unimp +8000135c: 0000 unimp +8000135e: 0000 unimp +80001360: 0000 unimp +80001362: 0000 unimp +80001364: 0000 unimp +80001366: 0000 unimp +80001368: 0000 unimp +8000136a: 0000 unimp +8000136c: 0000 unimp +8000136e: 0000 unimp +80001370: 0000 unimp +80001372: 0000 unimp +80001374: 0000 unimp +80001376: 0000 unimp +80001378: 0000 unimp +8000137a: 0000 unimp +8000137c: 0000 unimp +8000137e: 0000 unimp +80001380: 0000 unimp +80001382: 0000 unimp +80001384: 0000 unimp +80001386: 0000 unimp +80001388: 0000 unimp +8000138a: 0000 unimp +8000138c: 0000 unimp +8000138e: 0000 unimp +80001390: 0000 unimp +80001392: 0000 unimp +80001394: 0000 unimp +80001396: 0000 unimp +80001398: 0000 unimp +8000139a: 0000 unimp +8000139c: 0000 unimp +8000139e: 0000 unimp +800013a0: 0000 unimp +800013a2: 0000 unimp +800013a4: 0000 unimp +800013a6: 0000 unimp +800013a8: 0000 unimp +800013aa: 0000 unimp +800013ac: 0000 unimp +800013ae: 0000 unimp +800013b0: 0000 unimp +800013b2: 0000 unimp +800013b4: 0000 unimp +800013b6: 0000 unimp +800013b8: 0000 unimp +800013ba: 0000 unimp +800013bc: 0000 unimp +800013be: 0000 unimp +800013c0: 0000 unimp +800013c2: 0000 unimp +800013c4: 0000 unimp +800013c6: 0000 unimp +800013c8: 0000 unimp +800013ca: 0000 unimp +800013cc: 0000 unimp +800013ce: 0000 unimp +800013d0: 0000 unimp +800013d2: 0000 unimp +800013d4: 0000 unimp +800013d6: 0000 unimp +800013d8: 0000 unimp +800013da: 0000 unimp +800013dc: 0000 unimp +800013de: 0000 unimp +800013e0: 0000 unimp +800013e2: 0000 unimp +800013e4: 0000 unimp +800013e6: 0000 unimp +800013e8: 0000 unimp +800013ea: 0000 unimp +800013ec: 0000 unimp +800013ee: 0000 unimp +800013f0: 0000 unimp +800013f2: 0000 unimp +800013f4: 0000 unimp +800013f6: 0000 unimp +800013f8: 0000 unimp +800013fa: 0000 unimp +800013fc: 0000 unimp +800013fe: 0000 unimp +80001400: 0000 unimp +80001402: 0000 unimp +80001404: 0000 unimp +80001406: 0000 unimp +80001408: 0000 unimp +8000140a: 0000 unimp +8000140c: 0000 unimp +8000140e: 0000 unimp +80001410: 0000 unimp +80001412: 0000 unimp +80001414: 0000 unimp +80001416: 0000 unimp +80001418: 0000 unimp +8000141a: 0000 unimp +8000141c: 0000 unimp +8000141e: 0000 unimp +80001420: 0000 unimp +80001422: 0000 unimp +80001424: 0000 unimp +80001426: 0000 unimp +80001428: 0000 unimp +8000142a: 0000 unimp +8000142c: 0000 unimp +8000142e: 0000 unimp +80001430: 0000 unimp +80001432: 0000 unimp +80001434: 0000 unimp +80001436: 0000 unimp +80001438: 0000 unimp +8000143a: 0000 unimp +8000143c: 0000 unimp +8000143e: 0000 unimp +80001440: 0000 unimp +80001442: 0000 unimp +80001444: 0000 unimp +80001446: 0000 unimp +80001448: 0000 unimp +8000144a: 0000 unimp +8000144c: 0000 unimp +8000144e: 0000 unimp +80001450: 0000 unimp +80001452: 0000 unimp +80001454: 0000 unimp +80001456: 0000 unimp +80001458: 0000 unimp +8000145a: 0000 unimp +8000145c: 0000 unimp +8000145e: 0000 unimp +80001460: 0000 unimp +80001462: 0000 unimp +80001464: 0000 unimp +80001466: 0000 unimp +80001468: 0000 unimp +8000146a: 0000 unimp +8000146c: 0000 unimp +8000146e: 0000 unimp +80001470: 0000 unimp +80001472: 0000 unimp +80001474: 0000 unimp +80001476: 0000 unimp +80001478: 0000 unimp +8000147a: 0000 unimp +8000147c: 0000 unimp +8000147e: 0000 unimp +80001480: 0000 unimp +80001482: 0000 unimp +80001484: 0000 unimp +80001486: 0000 unimp +80001488: 0000 unimp +8000148a: 0000 unimp +8000148c: 0000 unimp +8000148e: 0000 unimp +80001490: 0000 unimp +80001492: 0000 unimp +80001494: 0000 unimp +80001496: 0000 unimp +80001498: 0000 unimp +8000149a: 0000 unimp +8000149c: 0000 unimp +8000149e: 0000 unimp +800014a0: 0000 unimp +800014a2: 0000 unimp +800014a4: 0000 unimp +800014a6: 0000 unimp +800014a8: 0000 unimp +800014aa: 0000 unimp +800014ac: 0000 unimp +800014ae: 0000 unimp +800014b0: 0000 unimp +800014b2: 0000 unimp +800014b4: 0000 unimp +800014b6: 0000 unimp +800014b8: 0000 unimp +800014ba: 0000 unimp +800014bc: 0000 unimp +800014be: 0000 unimp +800014c0: 0000 unimp +800014c2: 0000 unimp +800014c4: 0000 unimp +800014c6: 0000 unimp +800014c8: 0000 unimp +800014ca: 0000 unimp +800014cc: 0000 unimp +800014ce: 0000 unimp +800014d0: 0000 unimp +800014d2: 0000 unimp +800014d4: 0000 unimp +800014d6: 0000 unimp +800014d8: 0000 unimp +800014da: 0000 unimp +800014dc: 0000 unimp +800014de: 0000 unimp +800014e0: 0000 unimp +800014e2: 0000 unimp +800014e4: 0000 unimp +800014e6: 0000 unimp +800014e8: 0000 unimp +800014ea: 0000 unimp +800014ec: 0000 unimp +800014ee: 0000 unimp +800014f0: 0000 unimp +800014f2: 0000 unimp +800014f4: 0000 unimp +800014f6: 0000 unimp +800014f8: 0000 unimp +800014fa: 0000 unimp +800014fc: 0000 unimp +800014fe: 0000 unimp +80001500: 0000 unimp +80001502: 0000 unimp +80001504: 0000 unimp +80001506: 0000 unimp +80001508: 0000 unimp +8000150a: 0000 unimp +8000150c: 0000 unimp +8000150e: 0000 unimp +80001510: 0000 unimp +80001512: 0000 unimp +80001514: 0000 unimp +80001516: 0000 unimp +80001518: 0000 unimp +8000151a: 0000 unimp +8000151c: 0000 unimp +8000151e: 0000 unimp +80001520: 0000 unimp +80001522: 0000 unimp +80001524: 0000 unimp +80001526: 0000 unimp +80001528: 0000 unimp +8000152a: 0000 unimp +8000152c: 0000 unimp +8000152e: 0000 unimp +80001530: 0000 unimp +80001532: 0000 unimp +80001534: 0000 unimp +80001536: 0000 unimp +80001538: 0000 unimp +8000153a: 0000 unimp +8000153c: 0000 unimp +8000153e: 0000 unimp +80001540: 0000 unimp +80001542: 0000 unimp +80001544: 0000 unimp +80001546: 0000 unimp +80001548: 0000 unimp +8000154a: 0000 unimp +8000154c: 0000 unimp +8000154e: 0000 unimp +80001550: 0000 unimp +80001552: 0000 unimp +80001554: 0000 unimp +80001556: 0000 unimp +80001558: 0000 unimp +8000155a: 0000 unimp +8000155c: 0000 unimp +8000155e: 0000 unimp +80001560: 0000 unimp +80001562: 0000 unimp +80001564: 0000 unimp +80001566: 0000 unimp +80001568: 0000 unimp +8000156a: 0000 unimp +8000156c: 0000 unimp +8000156e: 0000 unimp +80001570: 0000 unimp +80001572: 0000 unimp +80001574: 0000 unimp +80001576: 0000 unimp +80001578: 0000 unimp +8000157a: 0000 unimp +8000157c: 0000 unimp +8000157e: 0000 unimp +80001580: 0000 unimp +80001582: 0000 unimp +80001584: 0000 unimp +80001586: 0000 unimp +80001588: 0000 unimp +8000158a: 0000 unimp +8000158c: 0000 unimp +8000158e: 0000 unimp +80001590: 0000 unimp +80001592: 0000 unimp +80001594: 0000 unimp +80001596: 0000 unimp +80001598: 0000 unimp +8000159a: 0000 unimp +8000159c: 0000 unimp +8000159e: 0000 unimp +800015a0: 0000 unimp +800015a2: 0000 unimp +800015a4: 0000 unimp +800015a6: 0000 unimp +800015a8: 0000 unimp +800015aa: 0000 unimp +800015ac: 0000 unimp +800015ae: 0000 unimp +800015b0: 0000 unimp +800015b2: 0000 unimp +800015b4: 0000 unimp +800015b6: 0000 unimp +800015b8: 0000 unimp +800015ba: 0000 unimp +800015bc: 0000 unimp +800015be: 0000 unimp +800015c0: 0000 unimp +800015c2: 0000 unimp +800015c4: 0000 unimp +800015c6: 0000 unimp +800015c8: 0000 unimp +800015ca: 0000 unimp +800015cc: 0000 unimp +800015ce: 0000 unimp +800015d0: 0000 unimp +800015d2: 0000 unimp +800015d4: 0000 unimp +800015d6: 0000 unimp +800015d8: 0000 unimp +800015da: 0000 unimp +800015dc: 0000 unimp +800015de: 0000 unimp +800015e0: 0000 unimp +800015e2: 0000 unimp +800015e4: 0000 unimp +800015e6: 0000 unimp +800015e8: 0000 unimp +800015ea: 0000 unimp +800015ec: 0000 unimp +800015ee: 0000 unimp +800015f0: 0000 unimp +800015f2: 0000 unimp +800015f4: 0000 unimp +800015f6: 0000 unimp +800015f8: 0000 unimp +800015fa: 0000 unimp +800015fc: 0000 unimp +800015fe: 0000 unimp +80001600: 0000 unimp +80001602: 0000 unimp +80001604: 0000 unimp +80001606: 0000 unimp +80001608: 0000 unimp +8000160a: 0000 unimp +8000160c: 0000 unimp +8000160e: 0000 unimp +80001610: 0000 unimp +80001612: 0000 unimp +80001614: 0000 unimp +80001616: 0000 unimp +80001618: 0000 unimp +8000161a: 0000 unimp +8000161c: 0000 unimp +8000161e: 0000 unimp +80001620: 0000 unimp +80001622: 0000 unimp +80001624: 0000 unimp +80001626: 0000 unimp +80001628: 0000 unimp +8000162a: 0000 unimp +8000162c: 0000 unimp +8000162e: 0000 unimp +80001630: 0000 unimp +80001632: 0000 unimp +80001634: 0000 unimp +80001636: 0000 unimp +80001638: 0000 unimp +8000163a: 0000 unimp +8000163c: 0000 unimp +8000163e: 0000 unimp +80001640: 0000 unimp +80001642: 0000 unimp +80001644: 0000 unimp +80001646: 0000 unimp +80001648: 0000 unimp +8000164a: 0000 unimp +8000164c: 0000 unimp +8000164e: 0000 unimp +80001650: 0000 unimp +80001652: 0000 unimp +80001654: 0000 unimp +80001656: 0000 unimp +80001658: 0000 unimp +8000165a: 0000 unimp +8000165c: 0000 unimp +8000165e: 0000 unimp +80001660: 0000 unimp +80001662: 0000 unimp +80001664: 0000 unimp +80001666: 0000 unimp +80001668: 0000 unimp +8000166a: 0000 unimp +8000166c: 0000 unimp +8000166e: 0000 unimp +80001670: 0000 unimp +80001672: 0000 unimp +80001674: 0000 unimp +80001676: 0000 unimp +80001678: 0000 unimp +8000167a: 0000 unimp +8000167c: 0000 unimp +8000167e: 0000 unimp +80001680: 0000 unimp +80001682: 0000 unimp +80001684: 0000 unimp +80001686: 0000 unimp +80001688: 0000 unimp +8000168a: 0000 unimp +8000168c: 0000 unimp +8000168e: 0000 unimp +80001690: 0000 unimp +80001692: 0000 unimp +80001694: 0000 unimp +80001696: 0000 unimp +80001698: 0000 unimp +8000169a: 0000 unimp +8000169c: 0000 unimp +8000169e: 0000 unimp +800016a0: 0000 unimp +800016a2: 0000 unimp +800016a4: 0000 unimp +800016a6: 0000 unimp +800016a8: 0000 unimp +800016aa: 0000 unimp +800016ac: 0000 unimp +800016ae: 0000 unimp +800016b0: 0000 unimp +800016b2: 0000 unimp +800016b4: 0000 unimp +800016b6: 0000 unimp +800016b8: 0000 unimp +800016ba: 0000 unimp +800016bc: 0000 unimp +800016be: 0000 unimp +800016c0: 0000 unimp +800016c2: 0000 unimp +800016c4: 0000 unimp +800016c6: 0000 unimp +800016c8: 0000 unimp +800016ca: 0000 unimp +800016cc: 0000 unimp +800016ce: 0000 unimp +800016d0: 0000 unimp +800016d2: 0000 unimp +800016d4: 0000 unimp +800016d6: 0000 unimp +800016d8: 0000 unimp +800016da: 0000 unimp +800016dc: 0000 unimp +800016de: 0000 unimp +800016e0: 0000 unimp +800016e2: 0000 unimp +800016e4: 0000 unimp +800016e6: 0000 unimp +800016e8: 0000 unimp +800016ea: 0000 unimp +800016ec: 0000 unimp +800016ee: 0000 unimp +800016f0: 0000 unimp +800016f2: 0000 unimp +800016f4: 0000 unimp +800016f6: 0000 unimp +800016f8: 0000 unimp +800016fa: 0000 unimp +800016fc: 0000 unimp +800016fe: 0000 unimp +80001700: 0000 unimp +80001702: 0000 unimp +80001704: 0000 unimp +80001706: 0000 unimp +80001708: 0000 unimp +8000170a: 0000 unimp +8000170c: 0000 unimp +8000170e: 0000 unimp +80001710: 0000 unimp +80001712: 0000 unimp +80001714: 0000 unimp +80001716: 0000 unimp +80001718: 0000 unimp +8000171a: 0000 unimp +8000171c: 0000 unimp +8000171e: 0000 unimp +80001720: 0000 unimp +80001722: 0000 unimp +80001724: 0000 unimp +80001726: 0000 unimp +80001728: 0000 unimp +8000172a: 0000 unimp +8000172c: 0000 unimp +8000172e: 0000 unimp +80001730: 0000 unimp +80001732: 0000 unimp +80001734: 0000 unimp +80001736: 0000 unimp +80001738: 0000 unimp +8000173a: 0000 unimp +8000173c: 0000 unimp +8000173e: 0000 unimp +80001740: 0000 unimp +80001742: 0000 unimp +80001744: 0000 unimp +80001746: 0000 unimp +80001748: 0000 unimp +8000174a: 0000 unimp +8000174c: 0000 unimp +8000174e: 0000 unimp +80001750: 0000 unimp +80001752: 0000 unimp +80001754: 0000 unimp +80001756: 0000 unimp +80001758: 0000 unimp +8000175a: 0000 unimp +8000175c: 0000 unimp +8000175e: 0000 unimp +80001760: 0000 unimp +80001762: 0000 unimp +80001764: 0000 unimp +80001766: 0000 unimp +80001768: 0000 unimp +8000176a: 0000 unimp +8000176c: 0000 unimp +8000176e: 0000 unimp +80001770: 0000 unimp +80001772: 0000 unimp +80001774: 0000 unimp +80001776: 0000 unimp +80001778: 0000 unimp +8000177a: 0000 unimp +8000177c: 0000 unimp +8000177e: 0000 unimp +80001780: 0000 unimp +80001782: 0000 unimp +80001784: 0000 unimp +80001786: 0000 unimp +80001788: 0000 unimp +8000178a: 0000 unimp +8000178c: 0000 unimp +8000178e: 0000 unimp +80001790: 0000 unimp +80001792: 0000 unimp +80001794: 0000 unimp +80001796: 0000 unimp +80001798: 0000 unimp +8000179a: 0000 unimp +8000179c: 0000 unimp +8000179e: 0000 unimp +800017a0: 0000 unimp +800017a2: 0000 unimp +800017a4: 0000 unimp +800017a6: 0000 unimp +800017a8: 0000 unimp +800017aa: 0000 unimp +800017ac: 0000 unimp +800017ae: 0000 unimp +800017b0: 0000 unimp +800017b2: 0000 unimp +800017b4: 0000 unimp +800017b6: 0000 unimp +800017b8: 0000 unimp +800017ba: 0000 unimp +800017bc: 0000 unimp +800017be: 0000 unimp +800017c0: 0000 unimp +800017c2: 0000 unimp +800017c4: 0000 unimp +800017c6: 0000 unimp +800017c8: 0000 unimp +800017ca: 0000 unimp +800017cc: 0000 unimp +800017ce: 0000 unimp +800017d0: 0000 unimp +800017d2: 0000 unimp +800017d4: 0000 unimp +800017d6: 0000 unimp +800017d8: 0000 unimp +800017da: 0000 unimp +800017dc: 0000 unimp +800017de: 0000 unimp +800017e0: 0000 unimp +800017e2: 0000 unimp +800017e4: 0000 unimp +800017e6: 0000 unimp +800017e8: 0000 unimp +800017ea: 0000 unimp +800017ec: 0000 unimp +800017ee: 0000 unimp +800017f0: 0000 unimp +800017f2: 0000 unimp +800017f4: 0000 unimp +800017f6: 0000 unimp +800017f8: 0000 unimp +800017fa: 0000 unimp +800017fc: 0000 unimp +800017fe: 0000 unimp +80001800: 0000 unimp +80001802: 0000 unimp +80001804: 0000 unimp +80001806: 0000 unimp +80001808: 0000 unimp +8000180a: 0000 unimp +8000180c: 0000 unimp +8000180e: 0000 unimp +80001810: 0000 unimp +80001812: 0000 unimp +80001814: 0000 unimp +80001816: 0000 unimp +80001818: 0000 unimp +8000181a: 0000 unimp +8000181c: 0000 unimp +8000181e: 0000 unimp +80001820: 0000 unimp +80001822: 0000 unimp +80001824: 0000 unimp +80001826: 0000 unimp +80001828: 0000 unimp +8000182a: 0000 unimp +8000182c: 0000 unimp +8000182e: 0000 unimp +80001830: 0000 unimp +80001832: 0000 unimp +80001834: 0000 unimp +80001836: 0000 unimp +80001838: 0000 unimp +8000183a: 0000 unimp +8000183c: 0000 unimp +8000183e: 0000 unimp +80001840: 0000 unimp +80001842: 0000 unimp +80001844: 0000 unimp +80001846: 0000 unimp +80001848: 0000 unimp +8000184a: 0000 unimp +8000184c: 0000 unimp +8000184e: 0000 unimp +80001850: 0000 unimp +80001852: 0000 unimp +80001854: 0000 unimp +80001856: 0000 unimp +80001858: 0000 unimp +8000185a: 0000 unimp +8000185c: 0000 unimp +8000185e: 0000 unimp +80001860: 0000 unimp +80001862: 0000 unimp +80001864: 0000 unimp +80001866: 0000 unimp +80001868: 0000 unimp +8000186a: 0000 unimp +8000186c: 0000 unimp +8000186e: 0000 unimp +80001870: 0000 unimp +80001872: 0000 unimp +80001874: 0000 unimp +80001876: 0000 unimp +80001878: 0000 unimp +8000187a: 0000 unimp +8000187c: 0000 unimp +8000187e: 0000 unimp +80001880: 0000 unimp +80001882: 0000 unimp +80001884: 0000 unimp +80001886: 0000 unimp +80001888: 0000 unimp +8000188a: 0000 unimp +8000188c: 0000 unimp +8000188e: 0000 unimp +80001890: 0000 unimp +80001892: 0000 unimp +80001894: 0000 unimp +80001896: 0000 unimp +80001898: 0000 unimp +8000189a: 0000 unimp +8000189c: 0000 unimp +8000189e: 0000 unimp +800018a0: 0000 unimp +800018a2: 0000 unimp +800018a4: 0000 unimp +800018a6: 0000 unimp +800018a8: 0000 unimp +800018aa: 0000 unimp +800018ac: 0000 unimp +800018ae: 0000 unimp +800018b0: 0000 unimp +800018b2: 0000 unimp +800018b4: 0000 unimp +800018b6: 0000 unimp +800018b8: 0000 unimp +800018ba: 0000 unimp +800018bc: 0000 unimp +800018be: 0000 unimp +800018c0: 0000 unimp +800018c2: 0000 unimp +800018c4: 0000 unimp +800018c6: 0000 unimp +800018c8: 0000 unimp +800018ca: 0000 unimp +800018cc: 0000 unimp +800018ce: 0000 unimp +800018d0: 0000 unimp +800018d2: 0000 unimp +800018d4: 0000 unimp +800018d6: 0000 unimp +800018d8: 0000 unimp +800018da: 0000 unimp +800018dc: 0000 unimp +800018de: 0000 unimp +800018e0: 0000 unimp +800018e2: 0000 unimp +800018e4: 0000 unimp +800018e6: 0000 unimp +800018e8: 0000 unimp +800018ea: 0000 unimp +800018ec: 0000 unimp +800018ee: 0000 unimp +800018f0: 0000 unimp +800018f2: 0000 unimp +800018f4: 0000 unimp +800018f6: 0000 unimp +800018f8: 0000 unimp +800018fa: 0000 unimp +800018fc: 0000 unimp +800018fe: 0000 unimp +80001900: 0000 unimp +80001902: 0000 unimp +80001904: 0000 unimp +80001906: 0000 unimp +80001908: 0000 unimp +8000190a: 0000 unimp +8000190c: 0000 unimp +8000190e: 0000 unimp +80001910: 0000 unimp +80001912: 0000 unimp +80001914: 0000 unimp +80001916: 0000 unimp +80001918: 0000 unimp +8000191a: 0000 unimp +8000191c: 0000 unimp +8000191e: 0000 unimp +80001920: 0000 unimp +80001922: 0000 unimp +80001924: 0000 unimp +80001926: 0000 unimp +80001928: 0000 unimp +8000192a: 0000 unimp +8000192c: 0000 unimp +8000192e: 0000 unimp +80001930: 0000 unimp +80001932: 0000 unimp +80001934: 0000 unimp +80001936: 0000 unimp +80001938: 0000 unimp +8000193a: 0000 unimp +8000193c: 0000 unimp +8000193e: 0000 unimp +80001940: 0000 unimp +80001942: 0000 unimp +80001944: 0000 unimp +80001946: 0000 unimp +80001948: 0000 unimp +8000194a: 0000 unimp +8000194c: 0000 unimp +8000194e: 0000 unimp +80001950: 0000 unimp +80001952: 0000 unimp +80001954: 0000 unimp +80001956: 0000 unimp +80001958: 0000 unimp +8000195a: 0000 unimp +8000195c: 0000 unimp +8000195e: 0000 unimp +80001960: 0000 unimp +80001962: 0000 unimp +80001964: 0000 unimp +80001966: 0000 unimp +80001968: 0000 unimp +8000196a: 0000 unimp +8000196c: 0000 unimp +8000196e: 0000 unimp +80001970: 0000 unimp +80001972: 0000 unimp +80001974: 0000 unimp +80001976: 0000 unimp +80001978: 0000 unimp +8000197a: 0000 unimp +8000197c: 0000 unimp +8000197e: 0000 unimp +80001980: 0000 unimp +80001982: 0000 unimp +80001984: 0000 unimp +80001986: 0000 unimp +80001988: 0000 unimp +8000198a: 0000 unimp +8000198c: 0000 unimp +8000198e: 0000 unimp +80001990: 0000 unimp +80001992: 0000 unimp +80001994: 0000 unimp +80001996: 0000 unimp +80001998: 0000 unimp +8000199a: 0000 unimp +8000199c: 0000 unimp +8000199e: 0000 unimp +800019a0: 0000 unimp +800019a2: 0000 unimp +800019a4: 0000 unimp +800019a6: 0000 unimp +800019a8: 0000 unimp +800019aa: 0000 unimp +800019ac: 0000 unimp +800019ae: 0000 unimp +800019b0: 0000 unimp +800019b2: 0000 unimp +800019b4: 0000 unimp +800019b6: 0000 unimp +800019b8: 0000 unimp +800019ba: 0000 unimp +800019bc: 0000 unimp +800019be: 0000 unimp +800019c0: 0000 unimp +800019c2: 0000 unimp +800019c4: 0000 unimp +800019c6: 0000 unimp +800019c8: 0000 unimp +800019ca: 0000 unimp +800019cc: 0000 unimp +800019ce: 0000 unimp +800019d0: 0000 unimp +800019d2: 0000 unimp +800019d4: 0000 unimp +800019d6: 0000 unimp +800019d8: 0000 unimp +800019da: 0000 unimp +800019dc: 0000 unimp +800019de: 0000 unimp +800019e0: 0000 unimp +800019e2: 0000 unimp +800019e4: 0000 unimp +800019e6: 0000 unimp +800019e8: 0000 unimp +800019ea: 0000 unimp +800019ec: 0000 unimp +800019ee: 0000 unimp +800019f0: 0000 unimp +800019f2: 0000 unimp +800019f4: 0000 unimp +800019f6: 0000 unimp +800019f8: 0000 unimp +800019fa: 0000 unimp +800019fc: 0000 unimp +800019fe: 0000 unimp +80001a00: 0000 unimp +80001a02: 0000 unimp +80001a04: 0000 unimp +80001a06: 0000 unimp +80001a08: 0000 unimp +80001a0a: 0000 unimp +80001a0c: 0000 unimp +80001a0e: 0000 unimp +80001a10: 0000 unimp +80001a12: 0000 unimp +80001a14: 0000 unimp +80001a16: 0000 unimp +80001a18: 0000 unimp +80001a1a: 0000 unimp +80001a1c: 0000 unimp +80001a1e: 0000 unimp +80001a20: 0000 unimp +80001a22: 0000 unimp +80001a24: 0000 unimp +80001a26: 0000 unimp +80001a28: 0000 unimp +80001a2a: 0000 unimp +80001a2c: 0000 unimp +80001a2e: 0000 unimp +80001a30: 0000 unimp +80001a32: 0000 unimp +80001a34: 0000 unimp +80001a36: 0000 unimp +80001a38: 0000 unimp +80001a3a: 0000 unimp +80001a3c: 0000 unimp +80001a3e: 0000 unimp +80001a40: 0000 unimp +80001a42: 0000 unimp +80001a44: 0000 unimp +80001a46: 0000 unimp +80001a48: 0000 unimp +80001a4a: 0000 unimp +80001a4c: 0000 unimp +80001a4e: 0000 unimp +80001a50: 0000 unimp +80001a52: 0000 unimp +80001a54: 0000 unimp +80001a56: 0000 unimp +80001a58: 0000 unimp +80001a5a: 0000 unimp +80001a5c: 0000 unimp +80001a5e: 0000 unimp +80001a60: 0000 unimp +80001a62: 0000 unimp +80001a64: 0000 unimp +80001a66: 0000 unimp +80001a68: 0000 unimp +80001a6a: 0000 unimp +80001a6c: 0000 unimp +80001a6e: 0000 unimp +80001a70: 0000 unimp +80001a72: 0000 unimp +80001a74: 0000 unimp +80001a76: 0000 unimp +80001a78: 0000 unimp +80001a7a: 0000 unimp +80001a7c: 0000 unimp +80001a7e: 0000 unimp +80001a80: 0000 unimp +80001a82: 0000 unimp +80001a84: 0000 unimp +80001a86: 0000 unimp +80001a88: 0000 unimp +80001a8a: 0000 unimp +80001a8c: 0000 unimp +80001a8e: 0000 unimp +80001a90: 0000 unimp +80001a92: 0000 unimp +80001a94: 0000 unimp +80001a96: 0000 unimp +80001a98: 0000 unimp +80001a9a: 0000 unimp +80001a9c: 0000 unimp +80001a9e: 0000 unimp +80001aa0: 0000 unimp +80001aa2: 0000 unimp +80001aa4: 0000 unimp +80001aa6: 0000 unimp +80001aa8: 0000 unimp +80001aaa: 0000 unimp +80001aac: 0000 unimp +80001aae: 0000 unimp +80001ab0: 0000 unimp +80001ab2: 0000 unimp +80001ab4: 0000 unimp +80001ab6: 0000 unimp +80001ab8: 0000 unimp +80001aba: 0000 unimp +80001abc: 0000 unimp +80001abe: 0000 unimp +80001ac0: 0000 unimp +80001ac2: 0000 unimp +80001ac4: 0000 unimp +80001ac6: 0000 unimp +80001ac8: 0000 unimp +80001aca: 0000 unimp +80001acc: 0000 unimp +80001ace: 0000 unimp +80001ad0: 0000 unimp +80001ad2: 0000 unimp +80001ad4: 0000 unimp +80001ad6: 0000 unimp +80001ad8: 0000 unimp +80001ada: 0000 unimp +80001adc: 0000 unimp +80001ade: 0000 unimp +80001ae0: 0000 unimp +80001ae2: 0000 unimp +80001ae4: 0000 unimp +80001ae6: 0000 unimp +80001ae8: 0000 unimp +80001aea: 0000 unimp +80001aec: 0000 unimp +80001aee: 0000 unimp +80001af0: 0000 unimp +80001af2: 0000 unimp +80001af4: 0000 unimp +80001af6: 0000 unimp +80001af8: 0000 unimp +80001afa: 0000 unimp +80001afc: 0000 unimp +80001afe: 0000 unimp +80001b00: 0000 unimp +80001b02: 0000 unimp +80001b04: 0000 unimp +80001b06: 0000 unimp +80001b08: 0000 unimp +80001b0a: 0000 unimp +80001b0c: 0000 unimp +80001b0e: 0000 unimp +80001b10: 0000 unimp +80001b12: 0000 unimp +80001b14: 0000 unimp +80001b16: 0000 unimp +80001b18: 0000 unimp +80001b1a: 0000 unimp +80001b1c: 0000 unimp +80001b1e: 0000 unimp +80001b20: 0000 unimp +80001b22: 0000 unimp +80001b24: 0000 unimp +80001b26: 0000 unimp +80001b28: 0000 unimp +80001b2a: 0000 unimp +80001b2c: 0000 unimp +80001b2e: 0000 unimp +80001b30: 0000 unimp +80001b32: 0000 unimp +80001b34: 0000 unimp +80001b36: 0000 unimp +80001b38: 0000 unimp +80001b3a: 0000 unimp +80001b3c: 0000 unimp +80001b3e: 0000 unimp +80001b40: 0000 unimp +80001b42: 0000 unimp +80001b44: 0000 unimp +80001b46: 0000 unimp +80001b48: 0000 unimp +80001b4a: 0000 unimp +80001b4c: 0000 unimp +80001b4e: 0000 unimp +80001b50: 0000 unimp +80001b52: 0000 unimp +80001b54: 0000 unimp +80001b56: 0000 unimp +80001b58: 0000 unimp +80001b5a: 0000 unimp +80001b5c: 0000 unimp +80001b5e: 0000 unimp +80001b60: 0000 unimp +80001b62: 0000 unimp +80001b64: 0000 unimp +80001b66: 0000 unimp +80001b68: 0000 unimp +80001b6a: 0000 unimp +80001b6c: 0000 unimp +80001b6e: 0000 unimp +80001b70: 0000 unimp +80001b72: 0000 unimp +80001b74: 0000 unimp +80001b76: 0000 unimp +80001b78: 0000 unimp +80001b7a: 0000 unimp +80001b7c: 0000 unimp +80001b7e: 0000 unimp +80001b80: 0000 unimp +80001b82: 0000 unimp +80001b84: 0000 unimp +80001b86: 0000 unimp +80001b88: 0000 unimp +80001b8a: 0000 unimp +80001b8c: 0000 unimp +80001b8e: 0000 unimp +80001b90: 0000 unimp +80001b92: 0000 unimp +80001b94: 0000 unimp +80001b96: 0000 unimp +80001b98: 0000 unimp +80001b9a: 0000 unimp +80001b9c: 0000 unimp +80001b9e: 0000 unimp +80001ba0: 0000 unimp +80001ba2: 0000 unimp +80001ba4: 0000 unimp +80001ba6: 0000 unimp +80001ba8: 0000 unimp +80001baa: 0000 unimp +80001bac: 0000 unimp +80001bae: 0000 unimp +80001bb0: 0000 unimp +80001bb2: 0000 unimp +80001bb4: 0000 unimp +80001bb6: 0000 unimp +80001bb8: 0000 unimp +80001bba: 0000 unimp +80001bbc: 0000 unimp +80001bbe: 0000 unimp +80001bc0: 0000 unimp +80001bc2: 0000 unimp +80001bc4: 0000 unimp +80001bc6: 0000 unimp +80001bc8: 0000 unimp +80001bca: 0000 unimp +80001bcc: 0000 unimp +80001bce: 0000 unimp +80001bd0: 0000 unimp +80001bd2: 0000 unimp +80001bd4: 0000 unimp +80001bd6: 0000 unimp +80001bd8: 0000 unimp +80001bda: 0000 unimp +80001bdc: 0000 unimp +80001bde: 0000 unimp +80001be0: 0000 unimp +80001be2: 0000 unimp +80001be4: 0000 unimp +80001be6: 0000 unimp +80001be8: 0000 unimp +80001bea: 0000 unimp +80001bec: 0000 unimp +80001bee: 0000 unimp +80001bf0: 0000 unimp +80001bf2: 0000 unimp +80001bf4: 0000 unimp +80001bf6: 0000 unimp +80001bf8: 0000 unimp +80001bfa: 0000 unimp +80001bfc: 0000 unimp +80001bfe: 0000 unimp +80001c00: 0000 unimp +80001c02: 0000 unimp +80001c04: 0000 unimp +80001c06: 0000 unimp +80001c08: 0000 unimp +80001c0a: 0000 unimp +80001c0c: 0000 unimp +80001c0e: 0000 unimp +80001c10: 0000 unimp +80001c12: 0000 unimp +80001c14: 0000 unimp +80001c16: 0000 unimp +80001c18: 0000 unimp +80001c1a: 0000 unimp +80001c1c: 0000 unimp +80001c1e: 0000 unimp +80001c20: 0000 unimp +80001c22: 0000 unimp +80001c24: 0000 unimp +80001c26: 0000 unimp +80001c28: 0000 unimp +80001c2a: 0000 unimp +80001c2c: 0000 unimp +80001c2e: 0000 unimp +80001c30: 0000 unimp +80001c32: 0000 unimp +80001c34: 0000 unimp +80001c36: 0000 unimp +80001c38: 0000 unimp +80001c3a: 0000 unimp +80001c3c: 0000 unimp +80001c3e: 0000 unimp +80001c40: 0000 unimp +80001c42: 0000 unimp +80001c44: 0000 unimp +80001c46: 0000 unimp +80001c48: 0000 unimp +80001c4a: 0000 unimp +80001c4c: 0000 unimp +80001c4e: 0000 unimp +80001c50: 0000 unimp +80001c52: 0000 unimp +80001c54: 0000 unimp +80001c56: 0000 unimp +80001c58: 0000 unimp +80001c5a: 0000 unimp +80001c5c: 0000 unimp +80001c5e: 0000 unimp +80001c60: 0000 unimp +80001c62: 0000 unimp +80001c64: 0000 unimp +80001c66: 0000 unimp +80001c68: 0000 unimp +80001c6a: 0000 unimp +80001c6c: 0000 unimp +80001c6e: 0000 unimp +80001c70: 0000 unimp +80001c72: 0000 unimp +80001c74: 0000 unimp +80001c76: 0000 unimp +80001c78: 0000 unimp +80001c7a: 0000 unimp +80001c7c: 0000 unimp +80001c7e: 0000 unimp +80001c80: 0000 unimp +80001c82: 0000 unimp +80001c84: 0000 unimp +80001c86: 0000 unimp +80001c88: 0000 unimp +80001c8a: 0000 unimp +80001c8c: 0000 unimp +80001c8e: 0000 unimp +80001c90: 0000 unimp +80001c92: 0000 unimp +80001c94: 0000 unimp +80001c96: 0000 unimp +80001c98: 0000 unimp +80001c9a: 0000 unimp +80001c9c: 0000 unimp +80001c9e: 0000 unimp +80001ca0: 0000 unimp +80001ca2: 0000 unimp +80001ca4: 0000 unimp +80001ca6: 0000 unimp +80001ca8: 0000 unimp +80001caa: 0000 unimp +80001cac: 0000 unimp +80001cae: 0000 unimp +80001cb0: 0000 unimp +80001cb2: 0000 unimp +80001cb4: 0000 unimp +80001cb6: 0000 unimp +80001cb8: 0000 unimp +80001cba: 0000 unimp +80001cbc: 0000 unimp +80001cbe: 0000 unimp +80001cc0: 0000 unimp +80001cc2: 0000 unimp +80001cc4: 0000 unimp +80001cc6: 0000 unimp +80001cc8: 0000 unimp +80001cca: 0000 unimp +80001ccc: 0000 unimp +80001cce: 0000 unimp +80001cd0: 0000 unimp +80001cd2: 0000 unimp +80001cd4: 0000 unimp +80001cd6: 0000 unimp +80001cd8: 0000 unimp +80001cda: 0000 unimp +80001cdc: 0000 unimp +80001cde: 0000 unimp +80001ce0: 0000 unimp +80001ce2: 0000 unimp +80001ce4: 0000 unimp +80001ce6: 0000 unimp +80001ce8: 0000 unimp +80001cea: 0000 unimp +80001cec: 0000 unimp +80001cee: 0000 unimp +80001cf0: 0000 unimp +80001cf2: 0000 unimp +80001cf4: 0000 unimp +80001cf6: 0000 unimp +80001cf8: 0000 unimp +80001cfa: 0000 unimp +80001cfc: 0000 unimp +80001cfe: 0000 unimp +80001d00: 0000 unimp +80001d02: 0000 unimp +80001d04: 0000 unimp +80001d06: 0000 unimp +80001d08: 0000 unimp +80001d0a: 0000 unimp +80001d0c: 0000 unimp +80001d0e: 0000 unimp +80001d10: 0000 unimp +80001d12: 0000 unimp +80001d14: 0000 unimp +80001d16: 0000 unimp +80001d18: 0000 unimp +80001d1a: 0000 unimp +80001d1c: 0000 unimp +80001d1e: 0000 unimp +80001d20: 0000 unimp +80001d22: 0000 unimp +80001d24: 0000 unimp +80001d26: 0000 unimp +80001d28: 0000 unimp +80001d2a: 0000 unimp +80001d2c: 0000 unimp +80001d2e: 0000 unimp +80001d30: 0000 unimp +80001d32: 0000 unimp +80001d34: 0000 unimp +80001d36: 0000 unimp +80001d38: 0000 unimp +80001d3a: 0000 unimp +80001d3c: 0000 unimp +80001d3e: 0000 unimp +80001d40: 0000 unimp +80001d42: 0000 unimp +80001d44: 0000 unimp +80001d46: 0000 unimp +80001d48: 0000 unimp +80001d4a: 0000 unimp +80001d4c: 0000 unimp +80001d4e: 0000 unimp +80001d50: 0000 unimp +80001d52: 0000 unimp +80001d54: 0000 unimp +80001d56: 0000 unimp +80001d58: 0000 unimp +80001d5a: 0000 unimp +80001d5c: 0000 unimp +80001d5e: 0000 unimp +80001d60: 0000 unimp +80001d62: 0000 unimp +80001d64: 0000 unimp +80001d66: 0000 unimp +80001d68: 0000 unimp +80001d6a: 0000 unimp +80001d6c: 0000 unimp +80001d6e: 0000 unimp +80001d70: 0000 unimp +80001d72: 0000 unimp +80001d74: 0000 unimp +80001d76: 0000 unimp +80001d78: 0000 unimp +80001d7a: 0000 unimp +80001d7c: 0000 unimp +80001d7e: 0000 unimp +80001d80: 0000 unimp +80001d82: 0000 unimp +80001d84: 0000 unimp +80001d86: 0000 unimp +80001d88: 0000 unimp +80001d8a: 0000 unimp +80001d8c: 0000 unimp +80001d8e: 0000 unimp +80001d90: 0000 unimp +80001d92: 0000 unimp +80001d94: 0000 unimp +80001d96: 0000 unimp +80001d98: 0000 unimp +80001d9a: 0000 unimp +80001d9c: 0000 unimp +80001d9e: 0000 unimp +80001da0: 0000 unimp +80001da2: 0000 unimp +80001da4: 0000 unimp +80001da6: 0000 unimp +80001da8: 0000 unimp +80001daa: 0000 unimp +80001dac: 0000 unimp +80001dae: 0000 unimp +80001db0: 0000 unimp +80001db2: 0000 unimp +80001db4: 0000 unimp +80001db6: 0000 unimp +80001db8: 0000 unimp +80001dba: 0000 unimp +80001dbc: 0000 unimp +80001dbe: 0000 unimp +80001dc0: 0000 unimp +80001dc2: 0000 unimp +80001dc4: 0000 unimp +80001dc6: 0000 unimp +80001dc8: 0000 unimp +80001dca: 0000 unimp +80001dcc: 0000 unimp +80001dce: 0000 unimp +80001dd0: 0000 unimp +80001dd2: 0000 unimp +80001dd4: 0000 unimp +80001dd6: 0000 unimp +80001dd8: 0000 unimp +80001dda: 0000 unimp +80001ddc: 0000 unimp +80001dde: 0000 unimp +80001de0: 0000 unimp +80001de2: 0000 unimp +80001de4: 0000 unimp +80001de6: 0000 unimp +80001de8: 0000 unimp +80001dea: 0000 unimp +80001dec: 0000 unimp +80001dee: 0000 unimp +80001df0: 0000 unimp +80001df2: 0000 unimp +80001df4: 0000 unimp +80001df6: 0000 unimp +80001df8: 0000 unimp +80001dfa: 0000 unimp +80001dfc: 0000 unimp +80001dfe: 0000 unimp +80001e00: 0000 unimp +80001e02: 0000 unimp +80001e04: 0000 unimp +80001e06: 0000 unimp +80001e08: 0000 unimp +80001e0a: 0000 unimp +80001e0c: 0000 unimp +80001e0e: 0000 unimp +80001e10: 0000 unimp +80001e12: 0000 unimp +80001e14: 0000 unimp +80001e16: 0000 unimp +80001e18: 0000 unimp +80001e1a: 0000 unimp +80001e1c: 0000 unimp +80001e1e: 0000 unimp +80001e20: 0000 unimp +80001e22: 0000 unimp +80001e24: 0000 unimp +80001e26: 0000 unimp +80001e28: 0000 unimp +80001e2a: 0000 unimp +80001e2c: 0000 unimp +80001e2e: 0000 unimp +80001e30: 0000 unimp +80001e32: 0000 unimp +80001e34: 0000 unimp +80001e36: 0000 unimp +80001e38: 0000 unimp +80001e3a: 0000 unimp +80001e3c: 0000 unimp +80001e3e: 0000 unimp +80001e40: 0000 unimp +80001e42: 0000 unimp +80001e44: 0000 unimp +80001e46: 0000 unimp +80001e48: 0000 unimp +80001e4a: 0000 unimp +80001e4c: 0000 unimp +80001e4e: 0000 unimp +80001e50: 0000 unimp +80001e52: 0000 unimp +80001e54: 0000 unimp +80001e56: 0000 unimp +80001e58: 0000 unimp +80001e5a: 0000 unimp +80001e5c: 0000 unimp +80001e5e: 0000 unimp +80001e60: 0000 unimp +80001e62: 0000 unimp +80001e64: 0000 unimp +80001e66: 0000 unimp +80001e68: 0000 unimp +80001e6a: 0000 unimp +80001e6c: 0000 unimp +80001e6e: 0000 unimp +80001e70: 0000 unimp +80001e72: 0000 unimp +80001e74: 0000 unimp +80001e76: 0000 unimp +80001e78: 0000 unimp +80001e7a: 0000 unimp +80001e7c: 0000 unimp +80001e7e: 0000 unimp +80001e80: 0000 unimp +80001e82: 0000 unimp +80001e84: 0000 unimp +80001e86: 0000 unimp +80001e88: 0000 unimp +80001e8a: 0000 unimp +80001e8c: 0000 unimp +80001e8e: 0000 unimp +80001e90: 0000 unimp +80001e92: 0000 unimp +80001e94: 0000 unimp +80001e96: 0000 unimp +80001e98: 0000 unimp +80001e9a: 0000 unimp +80001e9c: 0000 unimp +80001e9e: 0000 unimp +80001ea0: 0000 unimp +80001ea2: 0000 unimp +80001ea4: 0000 unimp +80001ea6: 0000 unimp +80001ea8: 0000 unimp +80001eaa: 0000 unimp +80001eac: 0000 unimp +80001eae: 0000 unimp +80001eb0: 0000 unimp +80001eb2: 0000 unimp +80001eb4: 0000 unimp +80001eb6: 0000 unimp +80001eb8: 0000 unimp +80001eba: 0000 unimp +80001ebc: 0000 unimp +80001ebe: 0000 unimp +80001ec0: 0000 unimp +80001ec2: 0000 unimp +80001ec4: 0000 unimp +80001ec6: 0000 unimp +80001ec8: 0000 unimp +80001eca: 0000 unimp +80001ecc: 0000 unimp +80001ece: 0000 unimp +80001ed0: 0000 unimp +80001ed2: 0000 unimp +80001ed4: 0000 unimp +80001ed6: 0000 unimp +80001ed8: 0000 unimp +80001eda: 0000 unimp +80001edc: 0000 unimp +80001ede: 0000 unimp +80001ee0: 0000 unimp +80001ee2: 0000 unimp +80001ee4: 0000 unimp +80001ee6: 0000 unimp +80001ee8: 0000 unimp +80001eea: 0000 unimp +80001eec: 0000 unimp +80001eee: 0000 unimp +80001ef0: 0000 unimp +80001ef2: 0000 unimp +80001ef4: 0000 unimp +80001ef6: 0000 unimp +80001ef8: 0000 unimp +80001efa: 0000 unimp +80001efc: 0000 unimp +80001efe: 0000 unimp +80001f00: 0000 unimp +80001f02: 0000 unimp +80001f04: 0000 unimp +80001f06: 0000 unimp +80001f08: 0000 unimp +80001f0a: 0000 unimp +80001f0c: 0000 unimp +80001f0e: 0000 unimp +80001f10: 0000 unimp +80001f12: 0000 unimp +80001f14: 0000 unimp +80001f16: 0000 unimp +80001f18: 0000 unimp +80001f1a: 0000 unimp +80001f1c: 0000 unimp +80001f1e: 0000 unimp +80001f20: 0000 unimp +80001f22: 0000 unimp +80001f24: 0000 unimp +80001f26: 0000 unimp +80001f28: 0000 unimp +80001f2a: 0000 unimp +80001f2c: 0000 unimp +80001f2e: 0000 unimp +80001f30: 0000 unimp +80001f32: 0000 unimp +80001f34: 0000 unimp +80001f36: 0000 unimp +80001f38: 0000 unimp +80001f3a: 0000 unimp +80001f3c: 0000 unimp +80001f3e: 0000 unimp +80001f40: 0000 unimp +80001f42: 0000 unimp +80001f44: 0000 unimp +80001f46: 0000 unimp +80001f48: 0000 unimp +80001f4a: 0000 unimp +80001f4c: 0000 unimp +80001f4e: 0000 unimp +80001f50: 0000 unimp +80001f52: 0000 unimp +80001f54: 0000 unimp +80001f56: 0000 unimp +80001f58: 0000 unimp +80001f5a: 0000 unimp +80001f5c: 0000 unimp +80001f5e: 0000 unimp +80001f60: 0000 unimp +80001f62: 0000 unimp +80001f64: 0000 unimp +80001f66: 0000 unimp +80001f68: 0000 unimp +80001f6a: 0000 unimp +80001f6c: 0000 unimp +80001f6e: 0000 unimp +80001f70: 0000 unimp +80001f72: 0000 unimp +80001f74: 0000 unimp +80001f76: 0000 unimp +80001f78: 0000 unimp +80001f7a: 0000 unimp +80001f7c: 0000 unimp +80001f7e: 0000 unimp +80001f80: 0000 unimp +80001f82: 0000 unimp +80001f84: 0000 unimp +80001f86: 0000 unimp +80001f88: 0000 unimp +80001f8a: 0000 unimp +80001f8c: 0000 unimp +80001f8e: 0000 unimp +80001f90: 0000 unimp +80001f92: 0000 unimp +80001f94: 0000 unimp +80001f96: 0000 unimp +80001f98: 0000 unimp +80001f9a: 0000 unimp +80001f9c: 0000 unimp +80001f9e: 0000 unimp +80001fa0: 0000 unimp +80001fa2: 0000 unimp +80001fa4: 0000 unimp +80001fa6: 0000 unimp +80001fa8: 0000 unimp +80001faa: 0000 unimp +80001fac: 0000 unimp +80001fae: 0000 unimp +80001fb0: 0000 unimp +80001fb2: 0000 unimp +80001fb4: 0000 unimp +80001fb6: 0000 unimp +80001fb8: 0000 unimp +80001fba: 0000 unimp +80001fbc: 0000 unimp +80001fbe: 0000 unimp +80001fc0: 0000 unimp +80001fc2: 0000 unimp +80001fc4: 0000 unimp +80001fc6: 0000 unimp +80001fc8: 0000 unimp +80001fca: 0000 unimp +80001fcc: 0000 unimp +80001fce: 0000 unimp +80001fd0: 0000 unimp +80001fd2: 0000 unimp +80001fd4: 0000 unimp +80001fd6: 0000 unimp +80001fd8: 0000 unimp +80001fda: 0000 unimp +80001fdc: 0000 unimp +80001fde: 0000 unimp +80001fe0: 0000 unimp +80001fe2: 0000 unimp +80001fe4: 0000 unimp +80001fe6: 0000 unimp +80001fe8: 0000 unimp +80001fea: 0000 unimp +80001fec: 0000 unimp +80001fee: 0000 unimp +80001ff0: 0000 unimp +80001ff2: 0000 unimp +80001ff4: 0000 unimp +80001ff6: 0000 unimp +80001ff8: 0000 unimp +80001ffa: 0000 unimp +80001ffc: 0000 unimp +80001ffe: 00158593 addi a1,a1,1 +80002002: 29b00e93 li t4,667 +80002006: 00200193 li gp,2 +8000200a: 23d59f63 bne a1,t4,80002248 +8000200e: 00001137 lui sp,0x1 +80002012: 23410113 addi sp,sp,564 # 1234 <_start-0x7fffedcc> + +80002016 : +80002016: 1fe8 addi a0,sp,1020 +80002018: 00001eb7 lui t4,0x1 +8000201c: 630e8e93 addi t4,t4,1584 # 1630 <_start-0x7fffe9d0> +80002020: 00300193 li gp,3 +80002024: 23d51263 bne a0,t4,80002248 + +80002028 : +80002028: 617d addi sp,sp,496 +8000202a: 0001 nop +8000202c: 00001eb7 lui t4,0x1 +80002030: 424e8e93 addi t4,t4,1060 # 1424 <_start-0x7fffebdc> +80002034: 00400193 li gp,4 +80002038: 21d11863 bne sp,t4,80002248 + +8000203c : +8000203c: 7101 addi sp,sp,-512 +8000203e: 0001 nop +80002040: 00001eb7 lui t4,0x1 +80002044: 224e8e93 addi t4,t4,548 # 1224 <_start-0x7fffeddc> +80002048: 00500193 li gp,5 +8000204c: 1fd11e63 bne sp,t4,80002248 +80002050: ffffe597 auipc a1,0xffffe +80002054: 0b858593 addi a1,a1,184 # 80000108 + +80002058 : +80002058: 41c8 lw a0,4(a1) +8000205a: 0505 addi a0,a0,1 +8000205c: c1c8 sw a0,4(a1) +8000205e: 41d0 lw a2,4(a1) +80002060: fedcceb7 lui t4,0xfedcc +80002064: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc7a99> +80002068: 00600193 li gp,6 +8000206c: 1dd61e63 bne a2,t4,80002248 + +80002070 : +80002070: 00106513 ori a0,zero,1 +80002074: 1541 addi a0,a0,-16 +80002076: 0001 nop +80002078: ff100e93 li t4,-15 +8000207c: 00800193 li gp,8 +80002080: 1dd51463 bne a0,t4,80002248 + +80002084 : +80002084: 00106793 ori a5,zero,1 +80002088: 57c1 li a5,-16 +8000208a: 0001 nop +8000208c: ff000e93 li t4,-16 +80002090: 00900193 li gp,9 +80002094: 1bd79a63 bne a5,t4,80002248 + +80002098 : +80002098: 7405 lui s0,0xfffe1 +8000209a: 8431 srai s0,s0,0xc +8000209c: fe100e93 li t4,-31 +800020a0: 00b00193 li gp,11 +800020a4: 1bd41263 bne s0,t4,80002248 + +800020a8 : +800020a8: 7405 lui s0,0xfffe1 +800020aa: 8031 srli s0,s0,0xc +800020ac: 00100eb7 lui t4,0x100 +800020b0: fe1e8e93 addi t4,t4,-31 # fffe1 <_start-0x7ff0001f> +800020b4: 00c00193 li gp,12 +800020b8: 19d41863 bne s0,t4,80002248 + +800020bc : +800020bc: 5479 li s0,-2 +800020be: 983d andi s0,s0,-17 +800020c0: fee00e93 li t4,-18 +800020c4: 00e00193 li gp,14 +800020c8: 19d41063 bne s0,t4,80002248 + +800020cc : +800020cc: 44d1 li s1,20 +800020ce: 4519 li a0,6 +800020d0: 8c89 sub s1,s1,a0 +800020d2: 0001 nop +800020d4: 00e00e93 li t4,14 +800020d8: 00f00193 li gp,15 +800020dc: 17d49663 bne s1,t4,80002248 + +800020e0 : +800020e0: 44d1 li s1,20 +800020e2: 4519 li a0,6 +800020e4: 8ca9 xor s1,s1,a0 +800020e6: 0001 nop +800020e8: 01200e93 li t4,18 +800020ec: 01000193 li gp,16 +800020f0: 15d49c63 bne s1,t4,80002248 + +800020f4 : +800020f4: 44d1 li s1,20 +800020f6: 4519 li a0,6 +800020f8: 8cc9 or s1,s1,a0 +800020fa: 0001 nop +800020fc: 01600e93 li t4,22 +80002100: 01100193 li gp,17 +80002104: 15d49263 bne s1,t4,80002248 + +80002108 : +80002108: 44d1 li s1,20 +8000210a: 4519 li a0,6 +8000210c: 8ce9 and s1,s1,a0 +8000210e: 0001 nop +80002110: 00400e93 li t4,4 +80002114: 01200193 li gp,18 +80002118: 13d49863 bne s1,t4,80002248 + +8000211c : +8000211c: 00001437 lui s0,0x1 +80002120: 23440413 addi s0,s0,564 # 1234 <_start-0x7fffedcc> +80002124: 0412 slli s0,s0,0x4 +80002126: 0001 nop +80002128: 00012eb7 lui t4,0x12 +8000212c: 340e8e93 addi t4,t4,832 # 12340 <_start-0x7ffedcc0> +80002130: 01500193 li gp,21 +80002134: 11d41a63 bne s0,t4,80002248 + +80002138 : +80002138: 4081 li ra,0 +8000213a: a011 j 8000213e +8000213c: a011 j 80002140 +8000213e: a011 j 80002142 +80002140: a221 j 80002248 +80002142: 0001 nop +80002144: 00000e93 li t4,0 +80002148: 01e00193 li gp,30 +8000214c: 0fd09e63 bne ra,t4,80002248 + +80002150 : +80002150: 4501 li a0,0 +80002152: c111 beqz a0,80002156 +80002154: a011 j 80002158 +80002156: a011 j 8000215a +80002158: a8c5 j 80002248 +8000215a: 0001 nop +8000215c: 00000e93 li t4,0 +80002160: 01f00193 li gp,31 +80002164: 0fd01263 bne zero,t4,80002248 + +80002168 : +80002168: 4505 li a0,1 +8000216a: e111 bnez a0,8000216e +8000216c: a011 j 80002170 +8000216e: a011 j 80002172 +80002170: a8e1 j 80002248 +80002172: 0001 nop +80002174: 00000e93 li t4,0 +80002178: 02000193 li gp,32 +8000217c: 0dd01663 bne zero,t4,80002248 + +80002180 : +80002180: 4505 li a0,1 +80002182: c111 beqz a0,80002186 +80002184: a011 j 80002188 +80002186: a0c9 j 80002248 +80002188: 00000e93 li t4,0 +8000218c: 02100193 li gp,33 +80002190: 0bd01c63 bne zero,t4,80002248 + +80002194 : +80002194: 4501 li a0,0 +80002196: e111 bnez a0,8000219a +80002198: a011 j 8000219c +8000219a: a07d j 80002248 +8000219c: 00000e93 li t4,0 +800021a0: 02200193 li gp,34 +800021a4: 0bd01263 bne zero,t4,80002248 + +800021a8 : +800021a8: 00000297 auipc t0,0x0 +800021ac: 00e28293 addi t0,t0,14 # 800021b6 +800021b0: 4081 li ra,0 +800021b2: 8282 jr t0 +800021b4: a011 j 800021b8 +800021b6: a011 j 800021ba +800021b8: a841 j 80002248 +800021ba: 0001 nop +800021bc: 00000e93 li t4,0 +800021c0: 02300193 li gp,35 +800021c4: 09d09263 bne ra,t4,80002248 + +800021c8 : +800021c8: 00000297 auipc t0,0x0 +800021cc: 00e28293 addi t0,t0,14 # 800021d6 +800021d0: 4081 li ra,0 +800021d2: 9282 jalr t0 +800021d4: a011 j 800021d8 +800021d6: a011 j 800021da +800021d8: a885 j 80002248 +800021da: 405080b3 sub ra,ra,t0 +800021de: 0001 nop +800021e0: ffe00e93 li t4,-2 +800021e4: 02400193 li gp,36 +800021e8: 07d09063 bne ra,t4,80002248 + +800021ec : +800021ec: 00000297 auipc t0,0x0 +800021f0: 00e28293 addi t0,t0,14 # 800021fa +800021f4: 4081 li ra,0 +800021f6: 2011 jal 800021fa +800021f8: a011 j 800021fc +800021fa: a011 j 800021fe +800021fc: a0b1 j 80002248 +800021fe: 405080b3 sub ra,ra,t0 +80002202: 0001 nop +80002204: ffe00e93 li t4,-2 +80002208: 02500193 li gp,37 +8000220c: 03d09e63 bne ra,t4,80002248 +80002210: ffffe117 auipc sp,0xffffe +80002214: ef810113 addi sp,sp,-264 # 80000108 + +80002218 : +80002218: 4532 lw a0,12(sp) +8000221a: 0505 addi a0,a0,1 +8000221c: c62a sw a0,12(sp) +8000221e: 4632 lw a2,12(sp) +80002220: fedcceb7 lui t4,0xfedcc +80002224: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc7a99> +80002228: 02800193 li gp,40 +8000222c: 01d61e63 bne a2,t4,80002248 + +80002230 : +80002230: 12300513 li a0,291 +80002234: 82aa mv t0,a0 +80002236: 92aa add t0,t0,a0 +80002238: 24600e93 li t4,582 +8000223c: 02a00193 li gp,42 +80002240: 01d29463 bne t0,t4,80002248 +80002244: 00301c63 bne zero,gp,8000225c + +80002248 : +80002248: 0ff0000f fence +8000224c: 00018063 beqz gp,8000224c +80002250: 00119193 slli gp,gp,0x1 +80002254: 0011e193 ori gp,gp,1 +80002258: 00000073 ecall + +8000225c : +8000225c: 0ff0000f fence +80002260: 00100193 li gp,1 +80002264: 00000073 ecall +80002268: c0001073 unimp +8000226c: 0000 unimp +8000226e: 0000 unimp +80002270: 0000 unimp +80002272: 0000 unimp +80002274: 0000 unimp +80002276: 0000 unimp +80002278: 0000 unimp +8000227a: 0000 unimp +8000227c: 0000 unimp +8000227e: 0000 unimp +80002280: 0000 unimp +80002282: 0000 unimp +80002284: 0000 unimp +80002286: 0000 unimp +80002288: 0000 unimp +8000228a: 0000 unimp +8000228c: 0000 unimp +8000228e: 0000 unimp +80002290: 0000 unimp +80002292: 0000 unimp +80002294: 0000 unimp +80002296: 0000 unimp +80002298: 0000 unimp +8000229a: 0000 unimp +8000229c: 0000 unimp +8000229e: 0000 unimp +800022a0: 0000 unimp +800022a2: 0000 unimp +800022a4: 0000 unimp +800022a6: 0000 unimp +800022a8: 0000 unimp +800022aa: 0000 unimp +800022ac: 0000 unimp +800022ae: 0000 unimp +800022b0: 0000 unimp +800022b2: 0000 unimp +800022b4: 0000 unimp +800022b6: 0000 unimp +800022b8: 0000 unimp +800022ba: 0000 unimp +800022bc: 0000 unimp +800022be: 0000 unimp +800022c0: 0000 unimp +800022c2: 0000 unimp +800022c4: 0000 unimp +800022c6: 0000 unimp +800022c8: 0000 unimp +800022ca: 0000 unimp +800022cc: 0000 unimp +800022ce: 0000 unimp +800022d0: 0000 unimp +800022d2: 0000 unimp +800022d4: 0000 unimp +800022d6: 0000 unimp +800022d8: 0000 unimp +800022da: 0000 unimp +800022dc: 0000 unimp +800022de: 0000 unimp +800022e0: 0000 unimp +800022e2: 0000 unimp +800022e4: 0000 unimp +800022e6: 0000 unimp +800022e8: 0000 unimp +800022ea: 0000 unimp +800022ec: 0000 unimp +800022ee: 0000 unimp +800022f0: 0000 unimp +800022f2: 0000 unimp +800022f4: 0000 unimp +800022f6: 0000 unimp +800022f8: 0000 unimp +800022fa: 0000 unimp +800022fc: 0000 unimp +800022fe: 0000 unimp +80002300: 0000 unimp +80002302: 0000 unimp +80002304: 0000 unimp +80002306: 0000 unimp +80002308: 0000 unimp +8000230a: 0000 unimp +8000230c: 0000 unimp +8000230e: 0000 unimp +80002310: 0000 unimp +80002312: 0000 unimp +80002314: 0000 unimp +80002316: 0000 unimp +80002318: 0000 unimp +8000231a: 0000 unimp +8000231c: 0000 unimp +8000231e: 0000 unimp +80002320: 0000 unimp +80002322: 0000 unimp +80002324: 0000 unimp +80002326: 0000 unimp +80002328: 0000 unimp +8000232a: 0000 unimp +8000232c: 0000 unimp +8000232e: 0000 unimp +80002330: 0000 unimp +80002332: 0000 unimp +80002334: 0000 unimp +80002336: 0000 unimp +80002338: 0000 unimp +8000233a: 0000 unimp +8000233c: 0000 unimp +8000233e: 0000 unimp +80002340: 0000 unimp +80002342: 0000 unimp +80002344: 0000 unimp +80002346: 0000 unimp +80002348: 0000 unimp +8000234a: 0000 unimp +8000234c: 0000 unimp +8000234e: 0000 unimp +80002350: 0000 unimp +80002352: 0000 unimp +80002354: 0000 unimp +80002356: 0000 unimp +80002358: 0000 unimp +8000235a: 0000 unimp +8000235c: 0000 unimp +8000235e: 0000 unimp +80002360: 0000 unimp +80002362: 0000 unimp +80002364: 0000 unimp +80002366: 0000 unimp +80002368: 0000 unimp +8000236a: 0000 unimp +8000236c: 0000 unimp +8000236e: 0000 unimp +80002370: 0000 unimp +80002372: 0000 unimp +80002374: 0000 unimp +80002376: 0000 unimp +80002378: 0000 unimp +8000237a: 0000 unimp +8000237c: 0000 unimp +8000237e: 0000 unimp +80002380: 0000 unimp +80002382: 0000 unimp +80002384: 0000 unimp +80002386: 0000 unimp +80002388: 0000 unimp +8000238a: 0000 unimp +8000238c: 0000 unimp +8000238e: 0000 unimp +80002390: 0000 unimp +80002392: 0000 unimp +80002394: 0000 unimp +80002396: 0000 unimp +80002398: 0000 unimp +8000239a: 0000 unimp +8000239c: 0000 unimp +8000239e: 0000 unimp +800023a0: 0000 unimp +800023a2: 0000 unimp +800023a4: 0000 unimp +800023a6: 0000 unimp +800023a8: 0000 unimp +800023aa: 0000 unimp +800023ac: 0000 unimp +800023ae: 0000 unimp +800023b0: 0000 unimp +800023b2: 0000 unimp +800023b4: 0000 unimp +800023b6: 0000 unimp +800023b8: 0000 unimp +800023ba: 0000 unimp +800023bc: 0000 unimp +800023be: 0000 unimp +800023c0: 0000 unimp +800023c2: 0000 unimp +800023c4: 0000 unimp +800023c6: 0000 unimp +800023c8: 0000 unimp +800023ca: 0000 unimp +800023cc: 0000 unimp +800023ce: 0000 unimp +800023d0: 0000 unimp +800023d2: 0000 unimp +800023d4: 0000 unimp +800023d6: 0000 unimp +800023d8: 0000 unimp +800023da: 0000 unimp +800023dc: 0000 unimp +800023de: 0000 unimp +800023e0: 0000 unimp +800023e2: 0000 unimp +800023e4: 0000 unimp +800023e6: 0000 unimp +800023e8: 0000 unimp +800023ea: 0000 unimp +800023ec: 0000 unimp +800023ee: 0000 unimp +800023f0: 0000 unimp +800023f2: 0000 unimp +800023f4: 0000 unimp +800023f6: 0000 unimp +800023f8: 0000 unimp +800023fa: 0000 unimp +800023fc: 0000 unimp +800023fe: 0000 unimp +80002400: 0000 unimp +80002402: 0000 unimp +80002404: 0000 unimp +80002406: 0000 unimp +80002408: 0000 unimp +8000240a: 0000 unimp +8000240c: 0000 unimp +8000240e: 0000 unimp +80002410: 0000 unimp +80002412: 0000 unimp +80002414: 0000 unimp +80002416: 0000 unimp +80002418: 0000 unimp +8000241a: 0000 unimp +8000241c: 0000 unimp +8000241e: 0000 unimp +80002420: 0000 unimp +80002422: 0000 unimp +80002424: 0000 unimp +80002426: 0000 unimp +80002428: 0000 unimp +8000242a: 0000 unimp +8000242c: 0000 unimp +8000242e: 0000 unimp +80002430: 0000 unimp +80002432: 0000 unimp +80002434: 0000 unimp +80002436: 0000 unimp +80002438: 0000 unimp +8000243a: 0000 unimp +8000243c: 0000 unimp +8000243e: 0000 unimp +80002440: 0000 unimp +80002442: 0000 unimp +80002444: 0000 unimp +80002446: 0000 unimp +80002448: 0000 unimp +8000244a: 0000 unimp +8000244c: 0000 unimp +8000244e: 0000 unimp +80002450: 0000 unimp +80002452: 0000 unimp +80002454: 0000 unimp +80002456: 0000 unimp +80002458: 0000 unimp +8000245a: 0000 unimp +8000245c: 0000 unimp +8000245e: 0000 unimp +80002460: 0000 unimp +80002462: 0000 unimp +80002464: 0000 unimp +80002466: 0000 unimp +80002468: 0000 unimp +8000246a: 0000 unimp +8000246c: 0000 unimp +8000246e: 0000 unimp +80002470: 0000 unimp +80002472: 0000 unimp +80002474: 0000 unimp +80002476: 0000 unimp +80002478: 0000 unimp +8000247a: 0000 unimp +8000247c: 0000 unimp +8000247e: 0000 unimp +80002480: 0000 unimp +80002482: 0000 unimp +80002484: 0000 unimp +80002486: 0000 unimp +80002488: 0000 unimp +8000248a: 0000 unimp +8000248c: 0000 unimp +8000248e: 0000 unimp +80002490: 0000 unimp +80002492: 0000 unimp +80002494: 0000 unimp +80002496: 0000 unimp +80002498: 0000 unimp +8000249a: 0000 unimp +8000249c: 0000 unimp +8000249e: 0000 unimp +800024a0: 0000 unimp +800024a2: 0000 unimp +800024a4: 0000 unimp +800024a6: 0000 unimp +800024a8: 0000 unimp +800024aa: 0000 unimp +800024ac: 0000 unimp +800024ae: 0000 unimp +800024b0: 0000 unimp +800024b2: 0000 unimp +800024b4: 0000 unimp +800024b6: 0000 unimp +800024b8: 0000 unimp +800024ba: 0000 unimp +800024bc: 0000 unimp +800024be: 0000 unimp +800024c0: 0000 unimp +800024c2: 0000 unimp +800024c4: 0000 unimp +800024c6: 0000 unimp +800024c8: 0000 unimp +800024ca: 0000 unimp +800024cc: 0000 unimp +800024ce: 0000 unimp +800024d0: 0000 unimp +800024d2: 0000 unimp +800024d4: 0000 unimp +800024d6: 0000 unimp +800024d8: 0000 unimp +800024da: 0000 unimp +800024dc: 0000 unimp +800024de: 0000 unimp +800024e0: 0000 unimp +800024e2: 0000 unimp +800024e4: 0000 unimp +800024e6: 0000 unimp +800024e8: 0000 unimp +800024ea: 0000 unimp +800024ec: 0000 unimp +800024ee: 0000 unimp +800024f0: 0000 unimp +800024f2: 0000 unimp +800024f4: 0000 unimp +800024f6: 0000 unimp +800024f8: 0000 unimp +800024fa: 0000 unimp +800024fc: 0000 unimp +800024fe: 0000 unimp +80002500: 0000 unimp +80002502: 0000 unimp +80002504: 0000 unimp +80002506: 0000 unimp +80002508: 0000 unimp +8000250a: 0000 unimp +8000250c: 0000 unimp +8000250e: 0000 unimp +80002510: 0000 unimp +80002512: 0000 unimp +80002514: 0000 unimp +80002516: 0000 unimp +80002518: 0000 unimp +8000251a: 0000 unimp +8000251c: 0000 unimp +8000251e: 0000 unimp +80002520: 0000 unimp +80002522: 0000 unimp +80002524: 0000 unimp +80002526: 0000 unimp +80002528: 0000 unimp +8000252a: 0000 unimp +8000252c: 0000 unimp +8000252e: 0000 unimp +80002530: 0000 unimp +80002532: 0000 unimp +80002534: 0000 unimp +80002536: 0000 unimp +80002538: 0000 unimp +8000253a: 0000 unimp +8000253c: 0000 unimp +8000253e: 0000 unimp +80002540: 0000 unimp +80002542: 0000 unimp +80002544: 0000 unimp +80002546: 0000 unimp +80002548: 0000 unimp +8000254a: 0000 unimp +8000254c: 0000 unimp +8000254e: 0000 unimp +80002550: 0000 unimp +80002552: 0000 unimp +80002554: 0000 unimp +80002556: 0000 unimp +80002558: 0000 unimp +8000255a: 0000 unimp +8000255c: 0000 unimp +8000255e: 0000 unimp +80002560: 0000 unimp +80002562: 0000 unimp +80002564: 0000 unimp +80002566: 0000 unimp +80002568: 0000 unimp +8000256a: 0000 unimp +8000256c: 0000 unimp +8000256e: 0000 unimp +80002570: 0000 unimp +80002572: 0000 unimp +80002574: 0000 unimp +80002576: 0000 unimp +80002578: 0000 unimp +8000257a: 0000 unimp +8000257c: 0000 unimp +8000257e: 0000 unimp +80002580: 0000 unimp +80002582: 0000 unimp +80002584: 0000 unimp +80002586: 0000 unimp +80002588: 0000 unimp +8000258a: 0000 unimp +8000258c: 0000 unimp +8000258e: 0000 unimp +80002590: 0000 unimp +80002592: 0000 unimp +80002594: 0000 unimp +80002596: 0000 unimp +80002598: 0000 unimp +8000259a: 0000 unimp +8000259c: 0000 unimp +8000259e: 0000 unimp +800025a0: 0000 unimp +800025a2: 0000 unimp +800025a4: 0000 unimp +800025a6: 0000 unimp +800025a8: 0000 unimp +800025aa: 0000 unimp +800025ac: 0000 unimp +800025ae: 0000 unimp +800025b0: 0000 unimp +800025b2: 0000 unimp +800025b4: 0000 unimp +800025b6: 0000 unimp +800025b8: 0000 unimp +800025ba: 0000 unimp +800025bc: 0000 unimp +800025be: 0000 unimp +800025c0: 0000 unimp +800025c2: 0000 unimp +800025c4: 0000 unimp +800025c6: 0000 unimp +800025c8: 0000 unimp +800025ca: 0000 unimp +800025cc: 0000 unimp +800025ce: 0000 unimp +800025d0: 0000 unimp +800025d2: 0000 unimp +800025d4: 0000 unimp +800025d6: 0000 unimp +800025d8: 0000 unimp +800025da: 0000 unimp +800025dc: 0000 unimp +800025de: 0000 unimp +800025e0: 0000 unimp +800025e2: 0000 unimp +800025e4: 0000 unimp +800025e6: 0000 unimp +800025e8: 0000 unimp +800025ea: 0000 unimp +800025ec: 0000 unimp +800025ee: 0000 unimp +800025f0: 0000 unimp +800025f2: 0000 unimp +800025f4: 0000 unimp +800025f6: 0000 unimp +800025f8: 0000 unimp +800025fa: 0000 unimp +800025fc: 0000 unimp +800025fe: 0000 unimp +80002600: 0000 unimp +80002602: 0000 unimp +80002604: 0000 unimp +80002606: 0000 unimp +80002608: 0000 unimp +8000260a: 0000 unimp +8000260c: 0000 unimp +8000260e: 0000 unimp +80002610: 0000 unimp +80002612: 0000 unimp +80002614: 0000 unimp +80002616: 0000 unimp +80002618: 0000 unimp +8000261a: 0000 unimp +8000261c: 0000 unimp +8000261e: 0000 unimp +80002620: 0000 unimp +80002622: 0000 unimp +80002624: 0000 unimp +80002626: 0000 unimp +80002628: 0000 unimp +8000262a: 0000 unimp +8000262c: 0000 unimp +8000262e: 0000 unimp +80002630: 0000 unimp +80002632: 0000 unimp +80002634: 0000 unimp +80002636: 0000 unimp +80002638: 0000 unimp +8000263a: 0000 unimp +8000263c: 0000 unimp +8000263e: 0000 unimp +80002640: 0000 unimp +80002642: 0000 unimp +80002644: 0000 unimp +80002646: 0000 unimp +80002648: 0000 unimp +8000264a: 0000 unimp +8000264c: 0000 unimp +8000264e: 0000 unimp +80002650: 0000 unimp +80002652: 0000 unimp +80002654: 0000 unimp +80002656: 0000 unimp +80002658: 0000 unimp +8000265a: 0000 unimp +8000265c: 0000 unimp +8000265e: 0000 unimp +80002660: 0000 unimp +80002662: 0000 unimp +80002664: 0000 unimp +80002666: 0000 unimp +80002668: 0000 unimp +8000266a: 0000 unimp +8000266c: 0000 unimp +8000266e: 0000 unimp +80002670: 0000 unimp +80002672: 0000 unimp +80002674: 0000 unimp +80002676: 0000 unimp +80002678: 0000 unimp +8000267a: 0000 unimp +8000267c: 0000 unimp +8000267e: 0000 unimp +80002680: 0000 unimp +80002682: 0000 unimp +80002684: 0000 unimp +80002686: 0000 unimp +80002688: 0000 unimp +8000268a: 0000 unimp +8000268c: 0000 unimp +8000268e: 0000 unimp +80002690: 0000 unimp +80002692: 0000 unimp +80002694: 0000 unimp +80002696: 0000 unimp +80002698: 0000 unimp +8000269a: 0000 unimp +8000269c: 0000 unimp +8000269e: 0000 unimp +800026a0: 0000 unimp +800026a2: 0000 unimp +800026a4: 0000 unimp +800026a6: 0000 unimp +800026a8: 0000 unimp +800026aa: 0000 unimp +800026ac: 0000 unimp +800026ae: 0000 unimp +800026b0: 0000 unimp +800026b2: 0000 unimp +800026b4: 0000 unimp +800026b6: 0000 unimp +800026b8: 0000 unimp +800026ba: 0000 unimp +800026bc: 0000 unimp +800026be: 0000 unimp +800026c0: 0000 unimp +800026c2: 0000 unimp +800026c4: 0000 unimp +800026c6: 0000 unimp +800026c8: 0000 unimp +800026ca: 0000 unimp +800026cc: 0000 unimp +800026ce: 0000 unimp +800026d0: 0000 unimp +800026d2: 0000 unimp +800026d4: 0000 unimp +800026d6: 0000 unimp +800026d8: 0000 unimp +800026da: 0000 unimp +800026dc: 0000 unimp +800026de: 0000 unimp +800026e0: 0000 unimp +800026e2: 0000 unimp +800026e4: 0000 unimp +800026e6: 0000 unimp +800026e8: 0000 unimp +800026ea: 0000 unimp +800026ec: 0000 unimp +800026ee: 0000 unimp +800026f0: 0000 unimp +800026f2: 0000 unimp +800026f4: 0000 unimp +800026f6: 0000 unimp +800026f8: 0000 unimp +800026fa: 0000 unimp +800026fc: 0000 unimp +800026fe: 0000 unimp +80002700: 0000 unimp +80002702: 0000 unimp +80002704: 0000 unimp +80002706: 0000 unimp +80002708: 0000 unimp +8000270a: 0000 unimp +8000270c: 0000 unimp +8000270e: 0000 unimp +80002710: 0000 unimp +80002712: 0000 unimp +80002714: 0000 unimp +80002716: 0000 unimp +80002718: 0000 unimp +8000271a: 0000 unimp +8000271c: 0000 unimp +8000271e: 0000 unimp +80002720: 0000 unimp +80002722: 0000 unimp +80002724: 0000 unimp +80002726: 0000 unimp +80002728: 0000 unimp +8000272a: 0000 unimp +8000272c: 0000 unimp +8000272e: 0000 unimp +80002730: 0000 unimp +80002732: 0000 unimp +80002734: 0000 unimp +80002736: 0000 unimp +80002738: 0000 unimp +8000273a: 0000 unimp +8000273c: 0000 unimp +8000273e: 0000 unimp +80002740: 0000 unimp +80002742: 0000 unimp +80002744: 0000 unimp +80002746: 0000 unimp +80002748: 0000 unimp +8000274a: 0000 unimp +8000274c: 0000 unimp +8000274e: 0000 unimp +80002750: 0000 unimp +80002752: 0000 unimp +80002754: 0000 unimp +80002756: 0000 unimp +80002758: 0000 unimp +8000275a: 0000 unimp +8000275c: 0000 unimp +8000275e: 0000 unimp +80002760: 0000 unimp +80002762: 0000 unimp +80002764: 0000 unimp +80002766: 0000 unimp +80002768: 0000 unimp +8000276a: 0000 unimp +8000276c: 0000 unimp +8000276e: 0000 unimp +80002770: 0000 unimp +80002772: 0000 unimp +80002774: 0000 unimp +80002776: 0000 unimp +80002778: 0000 unimp +8000277a: 0000 unimp +8000277c: 0000 unimp +8000277e: 0000 unimp +80002780: 0000 unimp +80002782: 0000 unimp +80002784: 0000 unimp +80002786: 0000 unimp +80002788: 0000 unimp +8000278a: 0000 unimp +8000278c: 0000 unimp +8000278e: 0000 unimp +80002790: 0000 unimp +80002792: 0000 unimp +80002794: 0000 unimp +80002796: 0000 unimp +80002798: 0000 unimp +8000279a: 0000 unimp +8000279c: 0000 unimp +8000279e: 0000 unimp +800027a0: 0000 unimp +800027a2: 0000 unimp +800027a4: 0000 unimp +800027a6: 0000 unimp +800027a8: 0000 unimp +800027aa: 0000 unimp +800027ac: 0000 unimp +800027ae: 0000 unimp +800027b0: 0000 unimp +800027b2: 0000 unimp +800027b4: 0000 unimp +800027b6: 0000 unimp +800027b8: 0000 unimp +800027ba: 0000 unimp +800027bc: 0000 unimp +800027be: 0000 unimp +800027c0: 0000 unimp +800027c2: 0000 unimp +800027c4: 0000 unimp +800027c6: 0000 unimp +800027c8: 0000 unimp +800027ca: 0000 unimp +800027cc: 0000 unimp +800027ce: 0000 unimp +800027d0: 0000 unimp +800027d2: 0000 unimp +800027d4: 0000 unimp +800027d6: 0000 unimp +800027d8: 0000 unimp +800027da: 0000 unimp +800027dc: 0000 unimp +800027de: 0000 unimp +800027e0: 0000 unimp +800027e2: 0000 unimp +800027e4: 0000 unimp +800027e6: 0000 unimp +800027e8: 0000 unimp +800027ea: 0000 unimp +800027ec: 0000 unimp +800027ee: 0000 unimp +800027f0: 0000 unimp +800027f2: 0000 unimp +800027f4: 0000 unimp +800027f6: 0000 unimp +800027f8: 0000 unimp +800027fa: 0000 unimp +800027fc: 0000 unimp +800027fe: 0000 unimp +80002800: 0000 unimp +80002802: 0000 unimp +80002804: 0000 unimp +80002806: 0000 unimp +80002808: 0000 unimp +8000280a: 0000 unimp +8000280c: 0000 unimp +8000280e: 0000 unimp +80002810: 0000 unimp +80002812: 0000 unimp +80002814: 0000 unimp +80002816: 0000 unimp +80002818: 0000 unimp +8000281a: 0000 unimp +8000281c: 0000 unimp +8000281e: 0000 unimp +80002820: 0000 unimp +80002822: 0000 unimp +80002824: 0000 unimp +80002826: 0000 unimp +80002828: 0000 unimp +8000282a: 0000 unimp +8000282c: 0000 unimp +8000282e: 0000 unimp +80002830: 0000 unimp +80002832: 0000 unimp +80002834: 0000 unimp +80002836: 0000 unimp +80002838: 0000 unimp +8000283a: 0000 unimp +8000283c: 0000 unimp +8000283e: 0000 unimp +80002840: 0000 unimp +80002842: 0000 unimp +80002844: 0000 unimp +80002846: 0000 unimp +80002848: 0000 unimp +8000284a: 0000 unimp +8000284c: 0000 unimp +8000284e: 0000 unimp +80002850: 0000 unimp +80002852: 0000 unimp +80002854: 0000 unimp +80002856: 0000 unimp +80002858: 0000 unimp +8000285a: 0000 unimp +8000285c: 0000 unimp +8000285e: 0000 unimp +80002860: 0000 unimp +80002862: 0000 unimp +80002864: 0000 unimp +80002866: 0000 unimp +80002868: 0000 unimp +8000286a: 0000 unimp +8000286c: 0000 unimp +8000286e: 0000 unimp +80002870: 0000 unimp +80002872: 0000 unimp +80002874: 0000 unimp +80002876: 0000 unimp +80002878: 0000 unimp +8000287a: 0000 unimp +8000287c: 0000 unimp +8000287e: 0000 unimp +80002880: 0000 unimp +80002882: 0000 unimp +80002884: 0000 unimp +80002886: 0000 unimp +80002888: 0000 unimp +8000288a: 0000 unimp +8000288c: 0000 unimp +8000288e: 0000 unimp +80002890: 0000 unimp +80002892: 0000 unimp +80002894: 0000 unimp +80002896: 0000 unimp +80002898: 0000 unimp +8000289a: 0000 unimp +8000289c: 0000 unimp +8000289e: 0000 unimp +800028a0: 0000 unimp +800028a2: 0000 unimp +800028a4: 0000 unimp +800028a6: 0000 unimp +800028a8: 0000 unimp +800028aa: 0000 unimp +800028ac: 0000 unimp +800028ae: 0000 unimp +800028b0: 0000 unimp +800028b2: 0000 unimp +800028b4: 0000 unimp +800028b6: 0000 unimp +800028b8: 0000 unimp +800028ba: 0000 unimp +800028bc: 0000 unimp +800028be: 0000 unimp +800028c0: 0000 unimp +800028c2: 0000 unimp +800028c4: 0000 unimp +800028c6: 0000 unimp +800028c8: 0000 unimp +800028ca: 0000 unimp +800028cc: 0000 unimp +800028ce: 0000 unimp +800028d0: 0000 unimp +800028d2: 0000 unimp +800028d4: 0000 unimp +800028d6: 0000 unimp +800028d8: 0000 unimp +800028da: 0000 unimp +800028dc: 0000 unimp +800028de: 0000 unimp +800028e0: 0000 unimp +800028e2: 0000 unimp +800028e4: 0000 unimp +800028e6: 0000 unimp +800028e8: 0000 unimp +800028ea: 0000 unimp +800028ec: 0000 unimp +800028ee: 0000 unimp +800028f0: 0000 unimp +800028f2: 0000 unimp +800028f4: 0000 unimp +800028f6: 0000 unimp +800028f8: 0000 unimp +800028fa: 0000 unimp +800028fc: 0000 unimp +800028fe: 0000 unimp +80002900: 0000 unimp +80002902: 0000 unimp +80002904: 0000 unimp +80002906: 0000 unimp +80002908: 0000 unimp +8000290a: 0000 unimp +8000290c: 0000 unimp +8000290e: 0000 unimp +80002910: 0000 unimp +80002912: 0000 unimp +80002914: 0000 unimp +80002916: 0000 unimp +80002918: 0000 unimp +8000291a: 0000 unimp +8000291c: 0000 unimp +8000291e: 0000 unimp +80002920: 0000 unimp +80002922: 0000 unimp +80002924: 0000 unimp +80002926: 0000 unimp +80002928: 0000 unimp +8000292a: 0000 unimp +8000292c: 0000 unimp +8000292e: 0000 unimp +80002930: 0000 unimp +80002932: 0000 unimp +80002934: 0000 unimp +80002936: 0000 unimp +80002938: 0000 unimp +8000293a: 0000 unimp +8000293c: 0000 unimp +8000293e: 0000 unimp +80002940: 0000 unimp +80002942: 0000 unimp +80002944: 0000 unimp +80002946: 0000 unimp +80002948: 0000 unimp +8000294a: 0000 unimp +8000294c: 0000 unimp +8000294e: 0000 unimp +80002950: 0000 unimp +80002952: 0000 unimp +80002954: 0000 unimp +80002956: 0000 unimp +80002958: 0000 unimp +8000295a: 0000 unimp +8000295c: 0000 unimp +8000295e: 0000 unimp +80002960: 0000 unimp +80002962: 0000 unimp +80002964: 0000 unimp +80002966: 0000 unimp +80002968: 0000 unimp +8000296a: 0000 unimp +8000296c: 0000 unimp +8000296e: 0000 unimp +80002970: 0000 unimp +80002972: 0000 unimp +80002974: 0000 unimp +80002976: 0000 unimp +80002978: 0000 unimp +8000297a: 0000 unimp +8000297c: 0000 unimp +8000297e: 0000 unimp +80002980: 0000 unimp +80002982: 0000 unimp +80002984: 0000 unimp +80002986: 0000 unimp +80002988: 0000 unimp +8000298a: 0000 unimp +8000298c: 0000 unimp +8000298e: 0000 unimp +80002990: 0000 unimp +80002992: 0000 unimp +80002994: 0000 unimp +80002996: 0000 unimp +80002998: 0000 unimp +8000299a: 0000 unimp +8000299c: 0000 unimp +8000299e: 0000 unimp +800029a0: 0000 unimp +800029a2: 0000 unimp +800029a4: 0000 unimp +800029a6: 0000 unimp +800029a8: 0000 unimp +800029aa: 0000 unimp +800029ac: 0000 unimp +800029ae: 0000 unimp +800029b0: 0000 unimp +800029b2: 0000 unimp +800029b4: 0000 unimp +800029b6: 0000 unimp +800029b8: 0000 unimp +800029ba: 0000 unimp +800029bc: 0000 unimp +800029be: 0000 unimp +800029c0: 0000 unimp +800029c2: 0000 unimp +800029c4: 0000 unimp +800029c6: 0000 unimp +800029c8: 0000 unimp +800029ca: 0000 unimp +800029cc: 0000 unimp +800029ce: 0000 unimp +800029d0: 0000 unimp +800029d2: 0000 unimp +800029d4: 0000 unimp +800029d6: 0000 unimp +800029d8: 0000 unimp +800029da: 0000 unimp +800029dc: 0000 unimp +800029de: 0000 unimp +800029e0: 0000 unimp +800029e2: 0000 unimp +800029e4: 0000 unimp +800029e6: 0000 unimp +800029e8: 0000 unimp +800029ea: 0000 unimp +800029ec: 0000 unimp +800029ee: 0000 unimp +800029f0: 0000 unimp +800029f2: 0000 unimp +800029f4: 0000 unimp +800029f6: 0000 unimp +800029f8: 0000 unimp +800029fa: 0000 unimp +800029fc: 0000 unimp +800029fe: 0000 unimp +80002a00: 0000 unimp +80002a02: 0000 unimp +80002a04: 0000 unimp +80002a06: 0000 unimp +80002a08: 0000 unimp +80002a0a: 0000 unimp +80002a0c: 0000 unimp +80002a0e: 0000 unimp +80002a10: 0000 unimp +80002a12: 0000 unimp +80002a14: 0000 unimp +80002a16: 0000 unimp +80002a18: 0000 unimp +80002a1a: 0000 unimp +80002a1c: 0000 unimp +80002a1e: 0000 unimp +80002a20: 0000 unimp +80002a22: 0000 unimp +80002a24: 0000 unimp +80002a26: 0000 unimp +80002a28: 0000 unimp +80002a2a: 0000 unimp +80002a2c: 0000 unimp +80002a2e: 0000 unimp +80002a30: 0000 unimp +80002a32: 0000 unimp +80002a34: 0000 unimp +80002a36: 0000 unimp +80002a38: 0000 unimp +80002a3a: 0000 unimp +80002a3c: 0000 unimp +80002a3e: 0000 unimp +80002a40: 0000 unimp +80002a42: 0000 unimp +80002a44: 0000 unimp +80002a46: 0000 unimp +80002a48: 0000 unimp +80002a4a: 0000 unimp +80002a4c: 0000 unimp +80002a4e: 0000 unimp +80002a50: 0000 unimp +80002a52: 0000 unimp +80002a54: 0000 unimp +80002a56: 0000 unimp +80002a58: 0000 unimp +80002a5a: 0000 unimp +80002a5c: 0000 unimp +80002a5e: 0000 unimp +80002a60: 0000 unimp +80002a62: 0000 unimp +80002a64: 0000 unimp +80002a66: 0000 unimp +80002a68: 0000 unimp +80002a6a: 0000 unimp +80002a6c: 0000 unimp +80002a6e: 0000 unimp +80002a70: 0000 unimp +80002a72: 0000 unimp +80002a74: 0000 unimp +80002a76: 0000 unimp +80002a78: 0000 unimp +80002a7a: 0000 unimp +80002a7c: 0000 unimp +80002a7e: 0000 unimp +80002a80: 0000 unimp +80002a82: 0000 unimp +80002a84: 0000 unimp +80002a86: 0000 unimp +80002a88: 0000 unimp +80002a8a: 0000 unimp +80002a8c: 0000 unimp +80002a8e: 0000 unimp +80002a90: 0000 unimp +80002a92: 0000 unimp +80002a94: 0000 unimp +80002a96: 0000 unimp +80002a98: 0000 unimp +80002a9a: 0000 unimp +80002a9c: 0000 unimp +80002a9e: 0000 unimp +80002aa0: 0000 unimp +80002aa2: 0000 unimp +80002aa4: 0000 unimp +80002aa6: 0000 unimp +80002aa8: 0000 unimp +80002aaa: 0000 unimp +80002aac: 0000 unimp +80002aae: 0000 unimp +80002ab0: 0000 unimp +80002ab2: 0000 unimp +80002ab4: 0000 unimp +80002ab6: 0000 unimp +80002ab8: 0000 unimp +80002aba: 0000 unimp +80002abc: 0000 unimp +80002abe: 0000 unimp +80002ac0: 0000 unimp +80002ac2: 0000 unimp +80002ac4: 0000 unimp +80002ac6: 0000 unimp +80002ac8: 0000 unimp +80002aca: 0000 unimp +80002acc: 0000 unimp +80002ace: 0000 unimp +80002ad0: 0000 unimp +80002ad2: 0000 unimp +80002ad4: 0000 unimp +80002ad6: 0000 unimp +80002ad8: 0000 unimp +80002ada: 0000 unimp +80002adc: 0000 unimp +80002ade: 0000 unimp +80002ae0: 0000 unimp +80002ae2: 0000 unimp +80002ae4: 0000 unimp +80002ae6: 0000 unimp +80002ae8: 0000 unimp +80002aea: 0000 unimp +80002aec: 0000 unimp +80002aee: 0000 unimp +80002af0: 0000 unimp +80002af2: 0000 unimp +80002af4: 0000 unimp +80002af6: 0000 unimp +80002af8: 0000 unimp +80002afa: 0000 unimp +80002afc: 0000 unimp +80002afe: 0000 unimp +80002b00: 0000 unimp +80002b02: 0000 unimp +80002b04: 0000 unimp +80002b06: 0000 unimp +80002b08: 0000 unimp +80002b0a: 0000 unimp +80002b0c: 0000 unimp +80002b0e: 0000 unimp +80002b10: 0000 unimp +80002b12: 0000 unimp +80002b14: 0000 unimp +80002b16: 0000 unimp +80002b18: 0000 unimp +80002b1a: 0000 unimp +80002b1c: 0000 unimp +80002b1e: 0000 unimp +80002b20: 0000 unimp +80002b22: 0000 unimp +80002b24: 0000 unimp +80002b26: 0000 unimp +80002b28: 0000 unimp +80002b2a: 0000 unimp +80002b2c: 0000 unimp +80002b2e: 0000 unimp +80002b30: 0000 unimp +80002b32: 0000 unimp +80002b34: 0000 unimp +80002b36: 0000 unimp +80002b38: 0000 unimp +80002b3a: 0000 unimp +80002b3c: 0000 unimp +80002b3e: 0000 unimp +80002b40: 0000 unimp +80002b42: 0000 unimp +80002b44: 0000 unimp +80002b46: 0000 unimp +80002b48: 0000 unimp +80002b4a: 0000 unimp +80002b4c: 0000 unimp +80002b4e: 0000 unimp +80002b50: 0000 unimp +80002b52: 0000 unimp +80002b54: 0000 unimp +80002b56: 0000 unimp +80002b58: 0000 unimp +80002b5a: 0000 unimp +80002b5c: 0000 unimp +80002b5e: 0000 unimp +80002b60: 0000 unimp +80002b62: 0000 unimp +80002b64: 0000 unimp +80002b66: 0000 unimp +80002b68: 0000 unimp +80002b6a: 0000 unimp +80002b6c: 0000 unimp +80002b6e: 0000 unimp +80002b70: 0000 unimp +80002b72: 0000 unimp +80002b74: 0000 unimp +80002b76: 0000 unimp +80002b78: 0000 unimp +80002b7a: 0000 unimp +80002b7c: 0000 unimp +80002b7e: 0000 unimp +80002b80: 0000 unimp +80002b82: 0000 unimp +80002b84: 0000 unimp +80002b86: 0000 unimp +80002b88: 0000 unimp +80002b8a: 0000 unimp +80002b8c: 0000 unimp +80002b8e: 0000 unimp +80002b90: 0000 unimp +80002b92: 0000 unimp +80002b94: 0000 unimp +80002b96: 0000 unimp +80002b98: 0000 unimp +80002b9a: 0000 unimp +80002b9c: 0000 unimp +80002b9e: 0000 unimp +80002ba0: 0000 unimp +80002ba2: 0000 unimp +80002ba4: 0000 unimp +80002ba6: 0000 unimp +80002ba8: 0000 unimp +80002baa: 0000 unimp +80002bac: 0000 unimp +80002bae: 0000 unimp +80002bb0: 0000 unimp +80002bb2: 0000 unimp +80002bb4: 0000 unimp +80002bb6: 0000 unimp +80002bb8: 0000 unimp +80002bba: 0000 unimp +80002bbc: 0000 unimp +80002bbe: 0000 unimp +80002bc0: 0000 unimp +80002bc2: 0000 unimp +80002bc4: 0000 unimp +80002bc6: 0000 unimp +80002bc8: 0000 unimp +80002bca: 0000 unimp +80002bcc: 0000 unimp +80002bce: 0000 unimp +80002bd0: 0000 unimp +80002bd2: 0000 unimp +80002bd4: 0000 unimp +80002bd6: 0000 unimp +80002bd8: 0000 unimp +80002bda: 0000 unimp +80002bdc: 0000 unimp +80002bde: 0000 unimp +80002be0: 0000 unimp +80002be2: 0000 unimp +80002be4: 0000 unimp +80002be6: 0000 unimp +80002be8: 0000 unimp +80002bea: 0000 unimp +80002bec: 0000 unimp +80002bee: 0000 unimp +80002bf0: 0000 unimp +80002bf2: 0000 unimp +80002bf4: 0000 unimp +80002bf6: 0000 unimp +80002bf8: 0000 unimp +80002bfa: 0000 unimp +80002bfc: 0000 unimp +80002bfe: 0000 unimp +80002c00: 0000 unimp +80002c02: 0000 unimp +80002c04: 0000 unimp +80002c06: 0000 unimp +80002c08: 0000 unimp +80002c0a: 0000 unimp +80002c0c: 0000 unimp +80002c0e: 0000 unimp +80002c10: 0000 unimp +80002c12: 0000 unimp +80002c14: 0000 unimp +80002c16: 0000 unimp +80002c18: 0000 unimp +80002c1a: 0000 unimp +80002c1c: 0000 unimp +80002c1e: 0000 unimp +80002c20: 0000 unimp +80002c22: 0000 unimp +80002c24: 0000 unimp +80002c26: 0000 unimp +80002c28: 0000 unimp +80002c2a: 0000 unimp +80002c2c: 0000 unimp +80002c2e: 0000 unimp +80002c30: 0000 unimp +80002c32: 0000 unimp +80002c34: 0000 unimp +80002c36: 0000 unimp +80002c38: 0000 unimp +80002c3a: 0000 unimp +80002c3c: 0000 unimp +80002c3e: 0000 unimp +80002c40: 0000 unimp +80002c42: 0000 unimp +80002c44: 0000 unimp +80002c46: 0000 unimp +80002c48: 0000 unimp +80002c4a: 0000 unimp +80002c4c: 0000 unimp +80002c4e: 0000 unimp +80002c50: 0000 unimp +80002c52: 0000 unimp +80002c54: 0000 unimp +80002c56: 0000 unimp +80002c58: 0000 unimp +80002c5a: 0000 unimp +80002c5c: 0000 unimp +80002c5e: 0000 unimp +80002c60: 0000 unimp +80002c62: 0000 unimp +80002c64: 0000 unimp +80002c66: 0000 unimp +80002c68: 0000 unimp +80002c6a: 0000 unimp +80002c6c: 0000 unimp +80002c6e: 0000 unimp +80002c70: 0000 unimp +80002c72: 0000 unimp +80002c74: 0000 unimp +80002c76: 0000 unimp +80002c78: 0000 unimp +80002c7a: 0000 unimp +80002c7c: 0000 unimp +80002c7e: 0000 unimp +80002c80: 0000 unimp +80002c82: 0000 unimp +80002c84: 0000 unimp +80002c86: 0000 unimp +80002c88: 0000 unimp +80002c8a: 0000 unimp +80002c8c: 0000 unimp +80002c8e: 0000 unimp +80002c90: 0000 unimp +80002c92: 0000 unimp +80002c94: 0000 unimp +80002c96: 0000 unimp +80002c98: 0000 unimp +80002c9a: 0000 unimp +80002c9c: 0000 unimp +80002c9e: 0000 unimp +80002ca0: 0000 unimp +80002ca2: 0000 unimp +80002ca4: 0000 unimp +80002ca6: 0000 unimp +80002ca8: 0000 unimp +80002caa: 0000 unimp +80002cac: 0000 unimp +80002cae: 0000 unimp +80002cb0: 0000 unimp +80002cb2: 0000 unimp +80002cb4: 0000 unimp +80002cb6: 0000 unimp +80002cb8: 0000 unimp +80002cba: 0000 unimp +80002cbc: 0000 unimp +80002cbe: 0000 unimp +80002cc0: 0000 unimp +80002cc2: 0000 unimp +80002cc4: 0000 unimp +80002cc6: 0000 unimp +80002cc8: 0000 unimp +80002cca: 0000 unimp +80002ccc: 0000 unimp +80002cce: 0000 unimp +80002cd0: 0000 unimp +80002cd2: 0000 unimp +80002cd4: 0000 unimp +80002cd6: 0000 unimp +80002cd8: 0000 unimp +80002cda: 0000 unimp +80002cdc: 0000 unimp +80002cde: 0000 unimp +80002ce0: 0000 unimp +80002ce2: 0000 unimp +80002ce4: 0000 unimp +80002ce6: 0000 unimp +80002ce8: 0000 unimp +80002cea: 0000 unimp +80002cec: 0000 unimp +80002cee: 0000 unimp +80002cf0: 0000 unimp +80002cf2: 0000 unimp +80002cf4: 0000 unimp +80002cf6: 0000 unimp +80002cf8: 0000 unimp +80002cfa: 0000 unimp +80002cfc: 0000 unimp +80002cfe: 0000 unimp +80002d00: 0000 unimp +80002d02: 0000 unimp +80002d04: 0000 unimp +80002d06: 0000 unimp +80002d08: 0000 unimp +80002d0a: 0000 unimp +80002d0c: 0000 unimp +80002d0e: 0000 unimp +80002d10: 0000 unimp +80002d12: 0000 unimp +80002d14: 0000 unimp +80002d16: 0000 unimp +80002d18: 0000 unimp +80002d1a: 0000 unimp +80002d1c: 0000 unimp +80002d1e: 0000 unimp +80002d20: 0000 unimp +80002d22: 0000 unimp +80002d24: 0000 unimp +80002d26: 0000 unimp +80002d28: 0000 unimp +80002d2a: 0000 unimp +80002d2c: 0000 unimp +80002d2e: 0000 unimp +80002d30: 0000 unimp +80002d32: 0000 unimp +80002d34: 0000 unimp +80002d36: 0000 unimp +80002d38: 0000 unimp +80002d3a: 0000 unimp +80002d3c: 0000 unimp +80002d3e: 0000 unimp +80002d40: 0000 unimp +80002d42: 0000 unimp +80002d44: 0000 unimp +80002d46: 0000 unimp +80002d48: 0000 unimp +80002d4a: 0000 unimp +80002d4c: 0000 unimp +80002d4e: 0000 unimp +80002d50: 0000 unimp +80002d52: 0000 unimp +80002d54: 0000 unimp +80002d56: 0000 unimp +80002d58: 0000 unimp +80002d5a: 0000 unimp +80002d5c: 0000 unimp +80002d5e: 0000 unimp +80002d60: 0000 unimp +80002d62: 0000 unimp +80002d64: 0000 unimp +80002d66: 0000 unimp +80002d68: 0000 unimp +80002d6a: 0000 unimp +80002d6c: 0000 unimp +80002d6e: 0000 unimp +80002d70: 0000 unimp +80002d72: 0000 unimp +80002d74: 0000 unimp +80002d76: 0000 unimp +80002d78: 0000 unimp +80002d7a: 0000 unimp +80002d7c: 0000 unimp +80002d7e: 0000 unimp +80002d80: 0000 unimp +80002d82: 0000 unimp +80002d84: 0000 unimp +80002d86: 0000 unimp +80002d88: 0000 unimp +80002d8a: 0000 unimp +80002d8c: 0000 unimp +80002d8e: 0000 unimp +80002d90: 0000 unimp +80002d92: 0000 unimp +80002d94: 0000 unimp +80002d96: 0000 unimp +80002d98: 0000 unimp +80002d9a: 0000 unimp +80002d9c: 0000 unimp +80002d9e: 0000 unimp +80002da0: 0000 unimp +80002da2: 0000 unimp +80002da4: 0000 unimp +80002da6: 0000 unimp +80002da8: 0000 unimp +80002daa: 0000 unimp +80002dac: 0000 unimp +80002dae: 0000 unimp +80002db0: 0000 unimp +80002db2: 0000 unimp +80002db4: 0000 unimp +80002db6: 0000 unimp +80002db8: 0000 unimp +80002dba: 0000 unimp +80002dbc: 0000 unimp +80002dbe: 0000 unimp +80002dc0: 0000 unimp +80002dc2: 0000 unimp +80002dc4: 0000 unimp +80002dc6: 0000 unimp +80002dc8: 0000 unimp +80002dca: 0000 unimp +80002dcc: 0000 unimp +80002dce: 0000 unimp +80002dd0: 0000 unimp +80002dd2: 0000 unimp +80002dd4: 0000 unimp +80002dd6: 0000 unimp +80002dd8: 0000 unimp +80002dda: 0000 unimp +80002ddc: 0000 unimp +80002dde: 0000 unimp +80002de0: 0000 unimp +80002de2: 0000 unimp +80002de4: 0000 unimp +80002de6: 0000 unimp +80002de8: 0000 unimp +80002dea: 0000 unimp +80002dec: 0000 unimp +80002dee: 0000 unimp +80002df0: 0000 unimp +80002df2: 0000 unimp +80002df4: 0000 unimp +80002df6: 0000 unimp +80002df8: 0000 unimp +80002dfa: 0000 unimp +80002dfc: 0000 unimp +80002dfe: 0000 unimp +80002e00: 0000 unimp +80002e02: 0000 unimp +80002e04: 0000 unimp +80002e06: 0000 unimp +80002e08: 0000 unimp +80002e0a: 0000 unimp +80002e0c: 0000 unimp +80002e0e: 0000 unimp +80002e10: 0000 unimp +80002e12: 0000 unimp +80002e14: 0000 unimp +80002e16: 0000 unimp +80002e18: 0000 unimp +80002e1a: 0000 unimp +80002e1c: 0000 unimp +80002e1e: 0000 unimp +80002e20: 0000 unimp +80002e22: 0000 unimp +80002e24: 0000 unimp +80002e26: 0000 unimp +80002e28: 0000 unimp +80002e2a: 0000 unimp +80002e2c: 0000 unimp +80002e2e: 0000 unimp +80002e30: 0000 unimp +80002e32: 0000 unimp +80002e34: 0000 unimp +80002e36: 0000 unimp +80002e38: 0000 unimp +80002e3a: 0000 unimp +80002e3c: 0000 unimp +80002e3e: 0000 unimp +80002e40: 0000 unimp +80002e42: 0000 unimp +80002e44: 0000 unimp +80002e46: 0000 unimp +80002e48: 0000 unimp +80002e4a: 0000 unimp +80002e4c: 0000 unimp +80002e4e: 0000 unimp +80002e50: 0000 unimp +80002e52: 0000 unimp +80002e54: 0000 unimp +80002e56: 0000 unimp +80002e58: 0000 unimp +80002e5a: 0000 unimp +80002e5c: 0000 unimp +80002e5e: 0000 unimp +80002e60: 0000 unimp +80002e62: 0000 unimp +80002e64: 0000 unimp +80002e66: 0000 unimp +80002e68: 0000 unimp +80002e6a: 0000 unimp +80002e6c: 0000 unimp +80002e6e: 0000 unimp +80002e70: 0000 unimp +80002e72: 0000 unimp +80002e74: 0000 unimp +80002e76: 0000 unimp +80002e78: 0000 unimp +80002e7a: 0000 unimp +80002e7c: 0000 unimp +80002e7e: 0000 unimp +80002e80: 0000 unimp +80002e82: 0000 unimp +80002e84: 0000 unimp +80002e86: 0000 unimp +80002e88: 0000 unimp +80002e8a: 0000 unimp +80002e8c: 0000 unimp +80002e8e: 0000 unimp +80002e90: 0000 unimp +80002e92: 0000 unimp +80002e94: 0000 unimp +80002e96: 0000 unimp +80002e98: 0000 unimp diff --git a/Tests/isa/rv32uc-v-rvc b/Tests/isa/rv32uc-v-rvc new file mode 100644 index 0000000..2788252 Binary files /dev/null and b/Tests/isa/rv32uc-v-rvc differ diff --git a/Tests/isa/rv32uc-v-rvc.dump b/Tests/isa/rv32uc-v-rvc.dump new file mode 100644 index 0000000..5f5fe02 --- /dev/null +++ b/Tests/isa/rv32uc-v-rvc.dump @@ -0,0 +1,6474 @@ + +rv32uc-v-rvc: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 0000a117 auipc sp,0xa +8000001c: 35010113 addi sp,sp,848 # 8000a368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: fd050513 addi a0,a0,-48 # 80003000 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00005317 auipc t1,0x5 +80002370: c9430313 addi t1,t1,-876 # 80007000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00007797 auipc a5,0x7 +8000238c: 06c78793 addi a5,a5,108 # 800093f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00007717 auipc a4,0x7 +800023a0: 05470713 addi a4,a4,84 # 800093f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00007697 auipc a3,0x7 +800023ac: 04f6a623 sw a5,76(a3) # 800093f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00007717 auipc a4,0x7 +800023dc: e2070713 addi a4,a4,-480 # 800091f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf6c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00007797 auipc a5,0x7 +800024bc: f207ac23 sw zero,-200(a5) # 800093f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00004597 auipc a1,0x4 +800024cc: b0c58593 addi a1,a1,-1268 # 80005fd4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00004597 auipc a1,0x4 +8000253c: b2858593 addi a1,a1,-1240 # 80006060 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00004597 auipc a1,0x4 +800025a8: ad458593 addi a1,a1,-1324 # 80006078 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00004597 auipc a1,0x4 +80002614: a0858593 addi a1,a1,-1528 # 80006018 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00004597 auipc a1,0x4 +8000274c: 9f858593 addi a1,a1,-1544 # 80006140 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00004597 auipc a1,0x4 +800027c0: 96058593 addi a1,a1,-1696 # 8000611c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00007b17 auipc s6,0x7 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800091f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00004d17 auipc s10,0x4 +80002840: 7c4d0d13 addi s10,s10,1988 # 80007000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00007717 auipc a4,0x7 +8000285c: b8f72c23 sw a5,-1128(a4) # 800093f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00007717 auipc a4,0x7 +800028e8: b0c70713 addi a4,a4,-1268 # 800093f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00007717 auipc a4,0x7 +800028fc: aef72c23 sw a5,-1288(a4) # 800093f0 +80002900: 00007717 auipc a4,0x7 +80002904: aef72a23 sw a5,-1292(a4) # 800093f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00004617 auipc a2,0x4 +80002914: 85c60613 addi a2,a2,-1956 # 8000616c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00003617 auipc a2,0x3 +80002980: 76c60613 addi a2,a2,1900 # 800060e8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00003617 auipc a2,0x3 +800029cc: 6ec60613 addi a2,a2,1772 # 800060b4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00005797 auipc a5,0x5 +80002a4c: 5b878793 addi a5,a5,1464 # 80008000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00004697 auipc a3,0x4 +80002a60: 5af6a223 sw a5,1444(a3) # 80007000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00004717 auipc a4,0x4 +80002a6c: 59870713 addi a4,a4,1432 # 80007000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00005697 auipc a3,0x5 +80002a7c: 58f6a223 sw a5,1412(a3) # 80007ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf6ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc06797 auipc a5,0x7fc06 +80002aec: 51878793 addi a5,a5,1304 # ffc09000 <_end+0x7fbffc08> +80002af0: 00007717 auipc a4,0x7 +80002af4: 90f72223 sw a5,-1788(a4) # 800093f4 +80002af8: 7fc06797 auipc a5,0x7fc06 +80002afc: 6f878793 addi a5,a5,1784 # ffc091f0 <_end+0x7fbffdf8> +80002b00: 00007717 auipc a4,0x7 +80002b04: 8ef72823 sw a5,-1808(a4) # 800093f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00006717 auipc a4,0x6 +80002b10: 4f470713 addi a4,a4,1268 # 80009000 +80002b14: 00006317 auipc t1,0x6 +80002b18: 6e430313 addi t1,t1,1764 # 800091f8 +80002b1c: 01d00793 li a5,29 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00006797 auipc a5,0x6 +80002b6c: 6807a623 sw zero,1676(a5) # 800091f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 077307b7 lui a5,0x7730 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 04778793 addi a5,a5,71 # 7730047 <_start-0x788cffb9> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 +80002be0: 0000 unimp +80002be2: 0000 unimp +80002be4: 0000 unimp +80002be6: 0000 unimp +80002be8: 0000 unimp +80002bea: 0000 unimp +80002bec: 0000 unimp +80002bee: 0000 unimp +80002bf0: 0000 unimp +80002bf2: 0000 unimp +80002bf4: 0000 unimp +80002bf6: 0000 unimp +80002bf8: 0000 unimp +80002bfa: 0000 unimp +80002bfc: 0000 unimp +80002bfe: 0000 unimp +80002c00: 0000 unimp +80002c02: 0000 unimp +80002c04: 0000 unimp +80002c06: 0000 unimp +80002c08: 0000 unimp +80002c0a: 0000 unimp +80002c0c: 0000 unimp +80002c0e: 0000 unimp +80002c10: 0000 unimp +80002c12: 0000 unimp +80002c14: 0000 unimp +80002c16: 0000 unimp +80002c18: 0000 unimp +80002c1a: 0000 unimp +80002c1c: 0000 unimp +80002c1e: 0000 unimp +80002c20: 0000 unimp +80002c22: 0000 unimp +80002c24: 0000 unimp +80002c26: 0000 unimp +80002c28: 0000 unimp +80002c2a: 0000 unimp +80002c2c: 0000 unimp +80002c2e: 0000 unimp +80002c30: 0000 unimp +80002c32: 0000 unimp +80002c34: 0000 unimp +80002c36: 0000 unimp +80002c38: 0000 unimp +80002c3a: 0000 unimp +80002c3c: 0000 unimp +80002c3e: 0000 unimp +80002c40: 0000 unimp +80002c42: 0000 unimp +80002c44: 0000 unimp +80002c46: 0000 unimp +80002c48: 0000 unimp +80002c4a: 0000 unimp +80002c4c: 0000 unimp +80002c4e: 0000 unimp +80002c50: 0000 unimp +80002c52: 0000 unimp +80002c54: 0000 unimp +80002c56: 0000 unimp +80002c58: 0000 unimp +80002c5a: 0000 unimp +80002c5c: 0000 unimp +80002c5e: 0000 unimp +80002c60: 0000 unimp +80002c62: 0000 unimp +80002c64: 0000 unimp +80002c66: 0000 unimp +80002c68: 0000 unimp +80002c6a: 0000 unimp +80002c6c: 0000 unimp +80002c6e: 0000 unimp +80002c70: 0000 unimp +80002c72: 0000 unimp +80002c74: 0000 unimp +80002c76: 0000 unimp +80002c78: 0000 unimp +80002c7a: 0000 unimp +80002c7c: 0000 unimp +80002c7e: 0000 unimp +80002c80: 0000 unimp +80002c82: 0000 unimp +80002c84: 0000 unimp +80002c86: 0000 unimp +80002c88: 0000 unimp +80002c8a: 0000 unimp +80002c8c: 0000 unimp +80002c8e: 0000 unimp +80002c90: 0000 unimp +80002c92: 0000 unimp +80002c94: 0000 unimp +80002c96: 0000 unimp +80002c98: 0000 unimp +80002c9a: 0000 unimp +80002c9c: 0000 unimp +80002c9e: 0000 unimp +80002ca0: 0000 unimp +80002ca2: 0000 unimp +80002ca4: 0000 unimp +80002ca6: 0000 unimp +80002ca8: 0000 unimp +80002caa: 0000 unimp +80002cac: 0000 unimp +80002cae: 0000 unimp +80002cb0: 0000 unimp +80002cb2: 0000 unimp +80002cb4: 0000 unimp +80002cb6: 0000 unimp +80002cb8: 0000 unimp +80002cba: 0000 unimp +80002cbc: 0000 unimp +80002cbe: 0000 unimp +80002cc0: 0000 unimp +80002cc2: 0000 unimp +80002cc4: 0000 unimp +80002cc6: 0000 unimp +80002cc8: 0000 unimp +80002cca: 0000 unimp +80002ccc: 0000 unimp +80002cce: 0000 unimp +80002cd0: 0000 unimp +80002cd2: 0000 unimp +80002cd4: 0000 unimp +80002cd6: 0000 unimp +80002cd8: 0000 unimp +80002cda: 0000 unimp +80002cdc: 0000 unimp +80002cde: 0000 unimp +80002ce0: 0000 unimp +80002ce2: 0000 unimp +80002ce4: 0000 unimp +80002ce6: 0000 unimp +80002ce8: 0000 unimp +80002cea: 0000 unimp +80002cec: 0000 unimp +80002cee: 0000 unimp +80002cf0: 0000 unimp +80002cf2: 0000 unimp +80002cf4: 0000 unimp +80002cf6: 0000 unimp +80002cf8: 0000 unimp +80002cfa: 0000 unimp +80002cfc: 0000 unimp +80002cfe: 0000 unimp +80002d00: 0000 unimp +80002d02: 0000 unimp +80002d04: 0000 unimp +80002d06: 0000 unimp +80002d08: 0000 unimp +80002d0a: 0000 unimp +80002d0c: 0000 unimp +80002d0e: 0000 unimp +80002d10: 0000 unimp +80002d12: 0000 unimp +80002d14: 0000 unimp +80002d16: 0000 unimp +80002d18: 0000 unimp +80002d1a: 0000 unimp +80002d1c: 0000 unimp +80002d1e: 0000 unimp +80002d20: 0000 unimp +80002d22: 0000 unimp +80002d24: 0000 unimp +80002d26: 0000 unimp +80002d28: 0000 unimp +80002d2a: 0000 unimp +80002d2c: 0000 unimp +80002d2e: 0000 unimp +80002d30: 0000 unimp +80002d32: 0000 unimp +80002d34: 0000 unimp +80002d36: 0000 unimp +80002d38: 0000 unimp +80002d3a: 0000 unimp +80002d3c: 0000 unimp +80002d3e: 0000 unimp +80002d40: 0000 unimp +80002d42: 0000 unimp +80002d44: 0000 unimp +80002d46: 0000 unimp +80002d48: 0000 unimp +80002d4a: 0000 unimp +80002d4c: 0000 unimp +80002d4e: 0000 unimp +80002d50: 0000 unimp +80002d52: 0000 unimp +80002d54: 0000 unimp +80002d56: 0000 unimp +80002d58: 0000 unimp +80002d5a: 0000 unimp +80002d5c: 0000 unimp +80002d5e: 0000 unimp +80002d60: 0000 unimp +80002d62: 0000 unimp +80002d64: 0000 unimp +80002d66: 0000 unimp +80002d68: 0000 unimp +80002d6a: 0000 unimp +80002d6c: 0000 unimp +80002d6e: 0000 unimp +80002d70: 0000 unimp +80002d72: 0000 unimp +80002d74: 0000 unimp +80002d76: 0000 unimp +80002d78: 0000 unimp +80002d7a: 0000 unimp +80002d7c: 0000 unimp +80002d7e: 0000 unimp +80002d80: 0000 unimp +80002d82: 0000 unimp +80002d84: 0000 unimp +80002d86: 0000 unimp +80002d88: 0000 unimp +80002d8a: 0000 unimp +80002d8c: 0000 unimp +80002d8e: 0000 unimp +80002d90: 0000 unimp +80002d92: 0000 unimp +80002d94: 0000 unimp +80002d96: 0000 unimp +80002d98: 0000 unimp +80002d9a: 0000 unimp +80002d9c: 0000 unimp +80002d9e: 0000 unimp +80002da0: 0000 unimp +80002da2: 0000 unimp +80002da4: 0000 unimp +80002da6: 0000 unimp +80002da8: 0000 unimp +80002daa: 0000 unimp +80002dac: 0000 unimp +80002dae: 0000 unimp +80002db0: 0000 unimp +80002db2: 0000 unimp +80002db4: 0000 unimp +80002db6: 0000 unimp +80002db8: 0000 unimp +80002dba: 0000 unimp +80002dbc: 0000 unimp +80002dbe: 0000 unimp +80002dc0: 0000 unimp +80002dc2: 0000 unimp +80002dc4: 0000 unimp +80002dc6: 0000 unimp +80002dc8: 0000 unimp +80002dca: 0000 unimp +80002dcc: 0000 unimp +80002dce: 0000 unimp +80002dd0: 0000 unimp +80002dd2: 0000 unimp +80002dd4: 0000 unimp +80002dd6: 0000 unimp +80002dd8: 0000 unimp +80002dda: 0000 unimp +80002ddc: 0000 unimp +80002dde: 0000 unimp +80002de0: 0000 unimp +80002de2: 0000 unimp +80002de4: 0000 unimp +80002de6: 0000 unimp +80002de8: 0000 unimp +80002dea: 0000 unimp +80002dec: 0000 unimp +80002dee: 0000 unimp +80002df0: 0000 unimp +80002df2: 0000 unimp +80002df4: 0000 unimp +80002df6: 0000 unimp +80002df8: 0000 unimp +80002dfa: 0000 unimp +80002dfc: 0000 unimp +80002dfe: 0000 unimp +80002e00: 0000 unimp +80002e02: 0000 unimp +80002e04: 0000 unimp +80002e06: 0000 unimp +80002e08: 0000 unimp +80002e0a: 0000 unimp +80002e0c: 0000 unimp +80002e0e: 0000 unimp +80002e10: 0000 unimp +80002e12: 0000 unimp +80002e14: 0000 unimp +80002e16: 0000 unimp +80002e18: 0000 unimp +80002e1a: 0000 unimp +80002e1c: 0000 unimp +80002e1e: 0000 unimp +80002e20: 0000 unimp +80002e22: 0000 unimp +80002e24: 0000 unimp +80002e26: 0000 unimp +80002e28: 0000 unimp +80002e2a: 0000 unimp +80002e2c: 0000 unimp +80002e2e: 0000 unimp +80002e30: 0000 unimp +80002e32: 0000 unimp +80002e34: 0000 unimp +80002e36: 0000 unimp +80002e38: 0000 unimp +80002e3a: 0000 unimp +80002e3c: 0000 unimp +80002e3e: 0000 unimp +80002e40: 0000 unimp +80002e42: 0000 unimp +80002e44: 0000 unimp +80002e46: 0000 unimp +80002e48: 0000 unimp +80002e4a: 0000 unimp +80002e4c: 0000 unimp +80002e4e: 0000 unimp +80002e50: 0000 unimp +80002e52: 0000 unimp +80002e54: 0000 unimp +80002e56: 0000 unimp +80002e58: 0000 unimp +80002e5a: 0000 unimp +80002e5c: 0000 unimp +80002e5e: 0000 unimp +80002e60: 0000 unimp +80002e62: 0000 unimp +80002e64: 0000 unimp +80002e66: 0000 unimp +80002e68: 0000 unimp +80002e6a: 0000 unimp +80002e6c: 0000 unimp +80002e6e: 0000 unimp +80002e70: 0000 unimp +80002e72: 0000 unimp +80002e74: 0000 unimp +80002e76: 0000 unimp +80002e78: 0000 unimp +80002e7a: 0000 unimp +80002e7c: 0000 unimp +80002e7e: 0000 unimp +80002e80: 0000 unimp +80002e82: 0000 unimp +80002e84: 0000 unimp +80002e86: 0000 unimp +80002e88: 0000 unimp +80002e8a: 0000 unimp +80002e8c: 0000 unimp +80002e8e: 0000 unimp +80002e90: 0000 unimp +80002e92: 0000 unimp +80002e94: 0000 unimp +80002e96: 0000 unimp +80002e98: 0000 unimp +80002e9a: 0000 unimp +80002e9c: 0000 unimp +80002e9e: 0000 unimp +80002ea0: 0000 unimp +80002ea2: 0000 unimp +80002ea4: 0000 unimp +80002ea6: 0000 unimp +80002ea8: 0000 unimp +80002eaa: 0000 unimp +80002eac: 0000 unimp +80002eae: 0000 unimp +80002eb0: 0000 unimp +80002eb2: 0000 unimp +80002eb4: 0000 unimp +80002eb6: 0000 unimp +80002eb8: 0000 unimp +80002eba: 0000 unimp +80002ebc: 0000 unimp +80002ebe: 0000 unimp +80002ec0: 0000 unimp +80002ec2: 0000 unimp +80002ec4: 0000 unimp +80002ec6: 0000 unimp +80002ec8: 0000 unimp +80002eca: 0000 unimp +80002ecc: 0000 unimp +80002ece: 0000 unimp +80002ed0: 0000 unimp +80002ed2: 0000 unimp +80002ed4: 0000 unimp +80002ed6: 0000 unimp +80002ed8: 0000 unimp +80002eda: 0000 unimp +80002edc: 0000 unimp +80002ede: 0000 unimp +80002ee0: 0000 unimp +80002ee2: 0000 unimp +80002ee4: 0000 unimp +80002ee6: 0000 unimp +80002ee8: 0000 unimp +80002eea: 0000 unimp +80002eec: 0000 unimp +80002eee: 0000 unimp +80002ef0: 0000 unimp +80002ef2: 0000 unimp +80002ef4: 0000 unimp +80002ef6: 0000 unimp +80002ef8: 0000 unimp +80002efa: 0000 unimp +80002efc: 0000 unimp +80002efe: 0000 unimp +80002f00: 0000 unimp +80002f02: 0000 unimp +80002f04: 0000 unimp +80002f06: 0000 unimp +80002f08: 0000 unimp +80002f0a: 0000 unimp +80002f0c: 0000 unimp +80002f0e: 0000 unimp +80002f10: 0000 unimp +80002f12: 0000 unimp +80002f14: 0000 unimp +80002f16: 0000 unimp +80002f18: 0000 unimp +80002f1a: 0000 unimp +80002f1c: 0000 unimp +80002f1e: 0000 unimp +80002f20: 0000 unimp +80002f22: 0000 unimp +80002f24: 0000 unimp +80002f26: 0000 unimp +80002f28: 0000 unimp +80002f2a: 0000 unimp +80002f2c: 0000 unimp +80002f2e: 0000 unimp +80002f30: 0000 unimp +80002f32: 0000 unimp +80002f34: 0000 unimp +80002f36: 0000 unimp +80002f38: 0000 unimp +80002f3a: 0000 unimp +80002f3c: 0000 unimp +80002f3e: 0000 unimp +80002f40: 0000 unimp +80002f42: 0000 unimp +80002f44: 0000 unimp +80002f46: 0000 unimp +80002f48: 0000 unimp +80002f4a: 0000 unimp +80002f4c: 0000 unimp +80002f4e: 0000 unimp +80002f50: 0000 unimp +80002f52: 0000 unimp +80002f54: 0000 unimp +80002f56: 0000 unimp +80002f58: 0000 unimp +80002f5a: 0000 unimp +80002f5c: 0000 unimp +80002f5e: 0000 unimp +80002f60: 0000 unimp +80002f62: 0000 unimp +80002f64: 0000 unimp +80002f66: 0000 unimp +80002f68: 0000 unimp +80002f6a: 0000 unimp +80002f6c: 0000 unimp +80002f6e: 0000 unimp +80002f70: 0000 unimp +80002f72: 0000 unimp +80002f74: 0000 unimp +80002f76: 0000 unimp +80002f78: 0000 unimp +80002f7a: 0000 unimp +80002f7c: 0000 unimp +80002f7e: 0000 unimp +80002f80: 0000 unimp +80002f82: 0000 unimp +80002f84: 0000 unimp +80002f86: 0000 unimp +80002f88: 0000 unimp +80002f8a: 0000 unimp +80002f8c: 0000 unimp +80002f8e: 0000 unimp +80002f90: 0000 unimp +80002f92: 0000 unimp +80002f94: 0000 unimp +80002f96: 0000 unimp +80002f98: 0000 unimp +80002f9a: 0000 unimp +80002f9c: 0000 unimp +80002f9e: 0000 unimp +80002fa0: 0000 unimp +80002fa2: 0000 unimp +80002fa4: 0000 unimp +80002fa6: 0000 unimp +80002fa8: 0000 unimp +80002faa: 0000 unimp +80002fac: 0000 unimp +80002fae: 0000 unimp +80002fb0: 0000 unimp +80002fb2: 0000 unimp +80002fb4: 0000 unimp +80002fb6: 0000 unimp +80002fb8: 0000 unimp +80002fba: 0000 unimp +80002fbc: 0000 unimp +80002fbe: 0000 unimp +80002fc0: 0000 unimp +80002fc2: 0000 unimp +80002fc4: 0000 unimp +80002fc6: 0000 unimp +80002fc8: 0000 unimp +80002fca: 0000 unimp +80002fcc: 0000 unimp +80002fce: 0000 unimp +80002fd0: 0000 unimp +80002fd2: 0000 unimp +80002fd4: 0000 unimp +80002fd6: 0000 unimp +80002fd8: 0000 unimp +80002fda: 0000 unimp +80002fdc: 0000 unimp +80002fde: 0000 unimp +80002fe0: 0000 unimp +80002fe2: 0000 unimp +80002fe4: 0000 unimp +80002fe6: 0000 unimp +80002fe8: 0000 unimp +80002fea: 0000 unimp +80002fec: 0000 unimp +80002fee: 0000 unimp +80002ff0: 0000 unimp +80002ff2: 0000 unimp +80002ff4: 0000 unimp +80002ff6: 0000 unimp +80002ff8: 0000 unimp +80002ffa: 0000 unimp +80002ffc: 0000 unimp +80002ffe: 0000 unimp + +80003000 : +80003000: 00200193 li gp,2 +80003004: 29a00593 li a1,666 + +80003008 : +80003008: 7f70106f j 80004ffe +8000300c: 00000013 nop + +80003010 : +80003010: 3210 fld fa2,32(a2) +80003012: 7654 flw fa3,44(a2) +80003014: ba98 fsd fa4,48(a3) +80003016: fedc fsw fa5,60(a3) +80003018: 3210 fld fa2,32(a2) +8000301a: 7654 flw fa3,44(a2) +8000301c: ba98 fsd fa4,48(a3) +8000301e: fedc fsw fa5,60(a3) +80003020: 00000013 nop +80003024: 00000013 nop +80003028: 00000013 nop +8000302c: 00000013 nop +80003030: 00000013 nop +80003034: 00000013 nop +80003038: 00000013 nop +8000303c: 00000013 nop +80003040: 00000013 nop +80003044: 00000013 nop +80003048: 00000013 nop +8000304c: 00000013 nop +80003050: 00000013 nop +80003054: 00000013 nop +80003058: 00000013 nop +8000305c: 00000013 nop +80003060: 00000013 nop +80003064: 00000013 nop +80003068: 00000013 nop +8000306c: 00000013 nop +80003070: 00000013 nop +80003074: 00000013 nop +80003078: 00000013 nop +8000307c: 00000013 nop +80003080: 00000013 nop +80003084: 00000013 nop +80003088: 00000013 nop +8000308c: 00000013 nop +80003090: 00000013 nop +80003094: 00000013 nop +80003098: 00000013 nop +8000309c: 00000013 nop +800030a0: 00000013 nop +800030a4: 00000013 nop +800030a8: 00000013 nop +800030ac: 00000013 nop +800030b0: 00000013 nop +800030b4: 00000013 nop +800030b8: 00000013 nop +800030bc: 00000013 nop +800030c0: 00000013 nop +800030c4: 00000013 nop +800030c8: 00000013 nop +800030cc: 00000013 nop +800030d0: 00000013 nop +800030d4: 00000013 nop +800030d8: 00000013 nop +800030dc: 00000013 nop +800030e0: 00000013 nop +800030e4: 00000013 nop +800030e8: 00000013 nop +800030ec: 00000013 nop +800030f0: 00000013 nop +800030f4: 00000013 nop +800030f8: 00000013 nop +800030fc: 00000013 nop +80003100: 00000013 nop +80003104: 00000013 nop +80003108: 00000013 nop +8000310c: 00000013 nop +80003110: 00000013 nop +80003114: 00000013 nop +80003118: 00000013 nop +8000311c: 00000013 nop +80003120: 00000013 nop +80003124: 00000013 nop +80003128: 00000013 nop +8000312c: 00000013 nop +80003130: 00000013 nop +80003134: 00000013 nop +80003138: 00000013 nop +8000313c: 00000013 nop +80003140: 00000013 nop +80003144: 00000013 nop +80003148: 00000013 nop +8000314c: 00000013 nop +80003150: 00000013 nop +80003154: 00000013 nop +80003158: 00000013 nop +8000315c: 00000013 nop +80003160: 00000013 nop +80003164: 00000013 nop +80003168: 00000013 nop +8000316c: 00000013 nop +80003170: 00000013 nop +80003174: 00000013 nop +80003178: 00000013 nop +8000317c: 00000013 nop +80003180: 00000013 nop +80003184: 00000013 nop +80003188: 00000013 nop +8000318c: 00000013 nop +80003190: 00000013 nop +80003194: 00000013 nop +80003198: 00000013 nop +8000319c: 00000013 nop +800031a0: 00000013 nop +800031a4: 00000013 nop +800031a8: 00000013 nop +800031ac: 00000013 nop +800031b0: 00000013 nop +800031b4: 00000013 nop +800031b8: 00000013 nop +800031bc: 00000013 nop +800031c0: 00000013 nop +800031c4: 00000013 nop +800031c8: 00000013 nop +800031cc: 00000013 nop +800031d0: 00000013 nop +800031d4: 00000013 nop +800031d8: 00000013 nop +800031dc: 00000013 nop +800031e0: 00000013 nop +800031e4: 00000013 nop +800031e8: 00000013 nop +800031ec: 00000013 nop +800031f0: 00000013 nop +800031f4: 00000013 nop +800031f8: 00000013 nop +800031fc: 00000013 nop +80003200: 00000013 nop +80003204: 00000013 nop +80003208: 00000013 nop +8000320c: 00000013 nop +80003210: 00000013 nop +80003214: 00000013 nop +80003218: 00000013 nop +8000321c: 00000013 nop +80003220: 00000013 nop +80003224: 00000013 nop +80003228: 00000013 nop +8000322c: 00000013 nop +80003230: 00000013 nop +80003234: 00000013 nop +80003238: 00000013 nop +8000323c: 00000013 nop +80003240: 00000013 nop +80003244: 00000013 nop +80003248: 00000013 nop +8000324c: 00000013 nop +80003250: 00000013 nop +80003254: 00000013 nop +80003258: 00000013 nop +8000325c: 00000013 nop +80003260: 00000013 nop +80003264: 00000013 nop +80003268: 00000013 nop +8000326c: 00000013 nop +80003270: 00000013 nop +80003274: 00000013 nop +80003278: 00000013 nop +8000327c: 00000013 nop +80003280: 00000013 nop +80003284: 00000013 nop +80003288: 00000013 nop +8000328c: 00000013 nop +80003290: 00000013 nop +80003294: 00000013 nop +80003298: 00000013 nop +8000329c: 00000013 nop +800032a0: 00000013 nop +800032a4: 00000013 nop +800032a8: 00000013 nop +800032ac: 00000013 nop +800032b0: 00000013 nop +800032b4: 00000013 nop +800032b8: 00000013 nop +800032bc: 00000013 nop +800032c0: 00000013 nop +800032c4: 00000013 nop +800032c8: 00000013 nop +800032cc: 00000013 nop +800032d0: 00000013 nop +800032d4: 00000013 nop +800032d8: 00000013 nop +800032dc: 00000013 nop +800032e0: 00000013 nop +800032e4: 00000013 nop +800032e8: 00000013 nop +800032ec: 00000013 nop +800032f0: 00000013 nop +800032f4: 00000013 nop +800032f8: 00000013 nop +800032fc: 00000013 nop +80003300: 00000013 nop +80003304: 00000013 nop +80003308: 00000013 nop +8000330c: 00000013 nop +80003310: 00000013 nop +80003314: 00000013 nop +80003318: 00000013 nop +8000331c: 00000013 nop +80003320: 00000013 nop +80003324: 00000013 nop +80003328: 00000013 nop +8000332c: 00000013 nop +80003330: 00000013 nop +80003334: 00000013 nop +80003338: 00000013 nop +8000333c: 00000013 nop +80003340: 00000013 nop +80003344: 00000013 nop +80003348: 00000013 nop +8000334c: 00000013 nop +80003350: 00000013 nop +80003354: 00000013 nop +80003358: 00000013 nop +8000335c: 00000013 nop +80003360: 00000013 nop +80003364: 00000013 nop +80003368: 00000013 nop +8000336c: 00000013 nop +80003370: 00000013 nop +80003374: 00000013 nop +80003378: 00000013 nop +8000337c: 00000013 nop +80003380: 00000013 nop +80003384: 00000013 nop +80003388: 00000013 nop +8000338c: 00000013 nop +80003390: 00000013 nop +80003394: 00000013 nop +80003398: 00000013 nop +8000339c: 00000013 nop +800033a0: 00000013 nop +800033a4: 00000013 nop +800033a8: 00000013 nop +800033ac: 00000013 nop +800033b0: 00000013 nop +800033b4: 00000013 nop +800033b8: 00000013 nop +800033bc: 00000013 nop +800033c0: 00000013 nop +800033c4: 00000013 nop +800033c8: 00000013 nop +800033cc: 00000013 nop +800033d0: 00000013 nop +800033d4: 00000013 nop +800033d8: 00000013 nop +800033dc: 00000013 nop +800033e0: 00000013 nop +800033e4: 00000013 nop +800033e8: 00000013 nop +800033ec: 00000013 nop +800033f0: 00000013 nop +800033f4: 00000013 nop +800033f8: 00000013 nop +800033fc: 00000013 nop +80003400: 00000013 nop +80003404: 00000013 nop +80003408: 00000013 nop +8000340c: 00000013 nop +80003410: 00000013 nop +80003414: 00000013 nop +80003418: 00000013 nop +8000341c: 00000013 nop +80003420: 00000013 nop +80003424: 00000013 nop +80003428: 00000013 nop +8000342c: 00000013 nop +80003430: 00000013 nop +80003434: 00000013 nop +80003438: 00000013 nop +8000343c: 00000013 nop +80003440: 00000013 nop +80003444: 00000013 nop +80003448: 00000013 nop +8000344c: 00000013 nop +80003450: 00000013 nop +80003454: 00000013 nop +80003458: 00000013 nop +8000345c: 00000013 nop +80003460: 00000013 nop +80003464: 00000013 nop +80003468: 00000013 nop +8000346c: 00000013 nop +80003470: 00000013 nop +80003474: 00000013 nop +80003478: 00000013 nop +8000347c: 00000013 nop +80003480: 00000013 nop +80003484: 00000013 nop +80003488: 00000013 nop +8000348c: 00000013 nop +80003490: 00000013 nop +80003494: 00000013 nop +80003498: 00000013 nop +8000349c: 00000013 nop +800034a0: 00000013 nop +800034a4: 00000013 nop +800034a8: 00000013 nop +800034ac: 00000013 nop +800034b0: 00000013 nop +800034b4: 00000013 nop +800034b8: 00000013 nop +800034bc: 00000013 nop +800034c0: 00000013 nop +800034c4: 00000013 nop +800034c8: 00000013 nop +800034cc: 00000013 nop +800034d0: 00000013 nop +800034d4: 00000013 nop +800034d8: 00000013 nop +800034dc: 00000013 nop +800034e0: 00000013 nop +800034e4: 00000013 nop +800034e8: 00000013 nop +800034ec: 00000013 nop +800034f0: 00000013 nop +800034f4: 00000013 nop +800034f8: 00000013 nop +800034fc: 00000013 nop +80003500: 00000013 nop +80003504: 00000013 nop +80003508: 00000013 nop +8000350c: 00000013 nop +80003510: 00000013 nop +80003514: 00000013 nop +80003518: 00000013 nop +8000351c: 00000013 nop +80003520: 00000013 nop +80003524: 00000013 nop +80003528: 00000013 nop +8000352c: 00000013 nop +80003530: 00000013 nop +80003534: 00000013 nop +80003538: 00000013 nop +8000353c: 00000013 nop +80003540: 00000013 nop +80003544: 00000013 nop +80003548: 00000013 nop +8000354c: 00000013 nop +80003550: 00000013 nop +80003554: 00000013 nop +80003558: 00000013 nop +8000355c: 00000013 nop +80003560: 00000013 nop +80003564: 00000013 nop +80003568: 00000013 nop +8000356c: 00000013 nop +80003570: 00000013 nop +80003574: 00000013 nop +80003578: 00000013 nop +8000357c: 00000013 nop +80003580: 00000013 nop +80003584: 00000013 nop +80003588: 00000013 nop +8000358c: 00000013 nop +80003590: 00000013 nop +80003594: 00000013 nop +80003598: 00000013 nop +8000359c: 00000013 nop +800035a0: 00000013 nop +800035a4: 00000013 nop +800035a8: 00000013 nop +800035ac: 00000013 nop +800035b0: 00000013 nop +800035b4: 00000013 nop +800035b8: 00000013 nop +800035bc: 00000013 nop +800035c0: 00000013 nop +800035c4: 00000013 nop +800035c8: 00000013 nop +800035cc: 00000013 nop +800035d0: 00000013 nop +800035d4: 00000013 nop +800035d8: 00000013 nop +800035dc: 00000013 nop +800035e0: 00000013 nop +800035e4: 00000013 nop +800035e8: 00000013 nop +800035ec: 00000013 nop +800035f0: 00000013 nop +800035f4: 00000013 nop +800035f8: 00000013 nop +800035fc: 00000013 nop +80003600: 00000013 nop +80003604: 00000013 nop +80003608: 00000013 nop +8000360c: 00000013 nop +80003610: 00000013 nop +80003614: 00000013 nop +80003618: 00000013 nop +8000361c: 00000013 nop +80003620: 00000013 nop +80003624: 00000013 nop +80003628: 00000013 nop +8000362c: 00000013 nop +80003630: 00000013 nop +80003634: 00000013 nop +80003638: 00000013 nop +8000363c: 00000013 nop +80003640: 00000013 nop +80003644: 00000013 nop +80003648: 00000013 nop +8000364c: 00000013 nop +80003650: 00000013 nop +80003654: 00000013 nop +80003658: 00000013 nop +8000365c: 00000013 nop +80003660: 00000013 nop +80003664: 00000013 nop +80003668: 00000013 nop +8000366c: 00000013 nop +80003670: 00000013 nop +80003674: 00000013 nop +80003678: 00000013 nop +8000367c: 00000013 nop +80003680: 00000013 nop +80003684: 00000013 nop +80003688: 00000013 nop +8000368c: 00000013 nop +80003690: 00000013 nop +80003694: 00000013 nop +80003698: 00000013 nop +8000369c: 00000013 nop +800036a0: 00000013 nop +800036a4: 00000013 nop +800036a8: 00000013 nop +800036ac: 00000013 nop +800036b0: 00000013 nop +800036b4: 00000013 nop +800036b8: 00000013 nop +800036bc: 00000013 nop +800036c0: 00000013 nop +800036c4: 00000013 nop +800036c8: 00000013 nop +800036cc: 00000013 nop +800036d0: 00000013 nop +800036d4: 00000013 nop +800036d8: 00000013 nop +800036dc: 00000013 nop +800036e0: 00000013 nop +800036e4: 00000013 nop +800036e8: 00000013 nop +800036ec: 00000013 nop +800036f0: 00000013 nop +800036f4: 00000013 nop +800036f8: 00000013 nop +800036fc: 00000013 nop +80003700: 00000013 nop +80003704: 00000013 nop +80003708: 00000013 nop +8000370c: 00000013 nop +80003710: 00000013 nop +80003714: 00000013 nop +80003718: 00000013 nop +8000371c: 00000013 nop +80003720: 00000013 nop +80003724: 00000013 nop +80003728: 00000013 nop +8000372c: 00000013 nop +80003730: 00000013 nop +80003734: 00000013 nop +80003738: 00000013 nop +8000373c: 00000013 nop +80003740: 00000013 nop +80003744: 00000013 nop +80003748: 00000013 nop +8000374c: 00000013 nop +80003750: 00000013 nop +80003754: 00000013 nop +80003758: 00000013 nop +8000375c: 00000013 nop +80003760: 00000013 nop +80003764: 00000013 nop +80003768: 00000013 nop +8000376c: 00000013 nop +80003770: 00000013 nop +80003774: 00000013 nop +80003778: 00000013 nop +8000377c: 00000013 nop +80003780: 00000013 nop +80003784: 00000013 nop +80003788: 00000013 nop +8000378c: 00000013 nop +80003790: 00000013 nop +80003794: 00000013 nop +80003798: 00000013 nop +8000379c: 00000013 nop +800037a0: 00000013 nop +800037a4: 00000013 nop +800037a8: 00000013 nop +800037ac: 00000013 nop +800037b0: 00000013 nop +800037b4: 00000013 nop +800037b8: 00000013 nop +800037bc: 00000013 nop +800037c0: 00000013 nop +800037c4: 00000013 nop +800037c8: 00000013 nop +800037cc: 00000013 nop +800037d0: 00000013 nop +800037d4: 00000013 nop +800037d8: 00000013 nop +800037dc: 00000013 nop +800037e0: 00000013 nop +800037e4: 00000013 nop +800037e8: 00000013 nop +800037ec: 00000013 nop +800037f0: 00000013 nop +800037f4: 00000013 nop +800037f8: 00000013 nop +800037fc: 00000013 nop +80003800: 00000013 nop +80003804: 00000013 nop +80003808: 00000013 nop +8000380c: 00000013 nop +80003810: 00000013 nop +80003814: 00000013 nop +80003818: 00000013 nop +8000381c: 00000013 nop +80003820: 00000013 nop +80003824: 00000013 nop +80003828: 00000013 nop +8000382c: 00000013 nop +80003830: 00000013 nop +80003834: 00000013 nop +80003838: 00000013 nop +8000383c: 00000013 nop +80003840: 00000013 nop +80003844: 00000013 nop +80003848: 00000013 nop +8000384c: 00000013 nop +80003850: 00000013 nop +80003854: 00000013 nop +80003858: 00000013 nop +8000385c: 00000013 nop +80003860: 00000013 nop +80003864: 00000013 nop +80003868: 00000013 nop +8000386c: 00000013 nop +80003870: 00000013 nop +80003874: 00000013 nop +80003878: 00000013 nop +8000387c: 00000013 nop +80003880: 00000013 nop +80003884: 00000013 nop +80003888: 00000013 nop +8000388c: 00000013 nop +80003890: 00000013 nop +80003894: 00000013 nop +80003898: 00000013 nop +8000389c: 00000013 nop +800038a0: 00000013 nop +800038a4: 00000013 nop +800038a8: 00000013 nop +800038ac: 00000013 nop +800038b0: 00000013 nop +800038b4: 00000013 nop +800038b8: 00000013 nop +800038bc: 00000013 nop +800038c0: 00000013 nop +800038c4: 00000013 nop +800038c8: 00000013 nop +800038cc: 00000013 nop +800038d0: 00000013 nop +800038d4: 00000013 nop +800038d8: 00000013 nop +800038dc: 00000013 nop +800038e0: 00000013 nop +800038e4: 00000013 nop +800038e8: 00000013 nop +800038ec: 00000013 nop +800038f0: 00000013 nop +800038f4: 00000013 nop +800038f8: 00000013 nop +800038fc: 00000013 nop +80003900: 00000013 nop +80003904: 00000013 nop +80003908: 00000013 nop +8000390c: 00000013 nop +80003910: 00000013 nop +80003914: 00000013 nop +80003918: 00000013 nop +8000391c: 00000013 nop +80003920: 00000013 nop +80003924: 00000013 nop +80003928: 00000013 nop +8000392c: 00000013 nop +80003930: 00000013 nop +80003934: 00000013 nop +80003938: 00000013 nop +8000393c: 00000013 nop +80003940: 00000013 nop +80003944: 00000013 nop +80003948: 00000013 nop +8000394c: 00000013 nop +80003950: 00000013 nop +80003954: 00000013 nop +80003958: 00000013 nop +8000395c: 00000013 nop +80003960: 00000013 nop +80003964: 00000013 nop +80003968: 00000013 nop +8000396c: 00000013 nop +80003970: 00000013 nop +80003974: 00000013 nop +80003978: 00000013 nop +8000397c: 00000013 nop +80003980: 00000013 nop +80003984: 00000013 nop +80003988: 00000013 nop +8000398c: 00000013 nop +80003990: 00000013 nop +80003994: 00000013 nop +80003998: 00000013 nop +8000399c: 00000013 nop +800039a0: 00000013 nop +800039a4: 00000013 nop +800039a8: 00000013 nop +800039ac: 00000013 nop +800039b0: 00000013 nop +800039b4: 00000013 nop +800039b8: 00000013 nop +800039bc: 00000013 nop +800039c0: 00000013 nop +800039c4: 00000013 nop +800039c8: 00000013 nop +800039cc: 00000013 nop +800039d0: 00000013 nop +800039d4: 00000013 nop +800039d8: 00000013 nop +800039dc: 00000013 nop +800039e0: 00000013 nop +800039e4: 00000013 nop +800039e8: 00000013 nop +800039ec: 00000013 nop +800039f0: 00000013 nop +800039f4: 00000013 nop +800039f8: 00000013 nop +800039fc: 00000013 nop +80003a00: 00000013 nop +80003a04: 00000013 nop +80003a08: 00000013 nop +80003a0c: 00000013 nop +80003a10: 00000013 nop +80003a14: 00000013 nop +80003a18: 00000013 nop +80003a1c: 00000013 nop +80003a20: 00000013 nop +80003a24: 00000013 nop +80003a28: 00000013 nop +80003a2c: 00000013 nop +80003a30: 00000013 nop +80003a34: 00000013 nop +80003a38: 00000013 nop +80003a3c: 00000013 nop +80003a40: 00000013 nop +80003a44: 00000013 nop +80003a48: 00000013 nop +80003a4c: 00000013 nop +80003a50: 00000013 nop +80003a54: 00000013 nop +80003a58: 00000013 nop +80003a5c: 00000013 nop +80003a60: 00000013 nop +80003a64: 00000013 nop +80003a68: 00000013 nop +80003a6c: 00000013 nop +80003a70: 00000013 nop +80003a74: 00000013 nop +80003a78: 00000013 nop +80003a7c: 00000013 nop +80003a80: 00000013 nop +80003a84: 00000013 nop +80003a88: 00000013 nop +80003a8c: 00000013 nop +80003a90: 00000013 nop +80003a94: 00000013 nop +80003a98: 00000013 nop +80003a9c: 00000013 nop +80003aa0: 00000013 nop +80003aa4: 00000013 nop +80003aa8: 00000013 nop +80003aac: 00000013 nop +80003ab0: 00000013 nop +80003ab4: 00000013 nop +80003ab8: 00000013 nop +80003abc: 00000013 nop +80003ac0: 00000013 nop +80003ac4: 00000013 nop +80003ac8: 00000013 nop +80003acc: 00000013 nop +80003ad0: 00000013 nop +80003ad4: 00000013 nop +80003ad8: 00000013 nop +80003adc: 00000013 nop +80003ae0: 00000013 nop +80003ae4: 00000013 nop +80003ae8: 00000013 nop +80003aec: 00000013 nop +80003af0: 00000013 nop +80003af4: 00000013 nop +80003af8: 00000013 nop +80003afc: 00000013 nop +80003b00: 00000013 nop +80003b04: 00000013 nop +80003b08: 00000013 nop +80003b0c: 00000013 nop +80003b10: 00000013 nop +80003b14: 00000013 nop +80003b18: 00000013 nop +80003b1c: 00000013 nop +80003b20: 00000013 nop +80003b24: 00000013 nop +80003b28: 00000013 nop +80003b2c: 00000013 nop +80003b30: 00000013 nop +80003b34: 00000013 nop +80003b38: 00000013 nop +80003b3c: 00000013 nop +80003b40: 00000013 nop +80003b44: 00000013 nop +80003b48: 00000013 nop +80003b4c: 00000013 nop +80003b50: 00000013 nop +80003b54: 00000013 nop +80003b58: 00000013 nop +80003b5c: 00000013 nop +80003b60: 00000013 nop +80003b64: 00000013 nop +80003b68: 00000013 nop +80003b6c: 00000013 nop +80003b70: 00000013 nop +80003b74: 00000013 nop +80003b78: 00000013 nop +80003b7c: 00000013 nop +80003b80: 00000013 nop +80003b84: 00000013 nop +80003b88: 00000013 nop +80003b8c: 00000013 nop +80003b90: 00000013 nop +80003b94: 00000013 nop +80003b98: 00000013 nop +80003b9c: 00000013 nop +80003ba0: 00000013 nop +80003ba4: 00000013 nop +80003ba8: 00000013 nop +80003bac: 00000013 nop +80003bb0: 00000013 nop +80003bb4: 00000013 nop +80003bb8: 00000013 nop +80003bbc: 00000013 nop +80003bc0: 00000013 nop +80003bc4: 00000013 nop +80003bc8: 00000013 nop +80003bcc: 00000013 nop +80003bd0: 00000013 nop +80003bd4: 00000013 nop +80003bd8: 00000013 nop +80003bdc: 00000013 nop +80003be0: 00000013 nop +80003be4: 00000013 nop +80003be8: 00000013 nop +80003bec: 00000013 nop +80003bf0: 00000013 nop +80003bf4: 00000013 nop +80003bf8: 00000013 nop +80003bfc: 00000013 nop +80003c00: 00000013 nop +80003c04: 00000013 nop +80003c08: 00000013 nop +80003c0c: 00000013 nop +80003c10: 00000013 nop +80003c14: 00000013 nop +80003c18: 00000013 nop +80003c1c: 00000013 nop +80003c20: 00000013 nop +80003c24: 00000013 nop +80003c28: 00000013 nop +80003c2c: 00000013 nop +80003c30: 00000013 nop +80003c34: 00000013 nop +80003c38: 00000013 nop +80003c3c: 00000013 nop +80003c40: 00000013 nop +80003c44: 00000013 nop +80003c48: 00000013 nop +80003c4c: 00000013 nop +80003c50: 00000013 nop +80003c54: 00000013 nop +80003c58: 00000013 nop +80003c5c: 00000013 nop +80003c60: 00000013 nop +80003c64: 00000013 nop +80003c68: 00000013 nop +80003c6c: 00000013 nop +80003c70: 00000013 nop +80003c74: 00000013 nop +80003c78: 00000013 nop +80003c7c: 00000013 nop +80003c80: 00000013 nop +80003c84: 00000013 nop +80003c88: 00000013 nop +80003c8c: 00000013 nop +80003c90: 00000013 nop +80003c94: 00000013 nop +80003c98: 00000013 nop +80003c9c: 00000013 nop +80003ca0: 00000013 nop +80003ca4: 00000013 nop +80003ca8: 00000013 nop +80003cac: 00000013 nop +80003cb0: 00000013 nop +80003cb4: 00000013 nop +80003cb8: 00000013 nop +80003cbc: 00000013 nop +80003cc0: 00000013 nop +80003cc4: 00000013 nop +80003cc8: 00000013 nop +80003ccc: 00000013 nop +80003cd0: 00000013 nop +80003cd4: 00000013 nop +80003cd8: 00000013 nop +80003cdc: 00000013 nop +80003ce0: 00000013 nop +80003ce4: 00000013 nop +80003ce8: 00000013 nop +80003cec: 00000013 nop +80003cf0: 00000013 nop +80003cf4: 00000013 nop +80003cf8: 00000013 nop +80003cfc: 00000013 nop +80003d00: 00000013 nop +80003d04: 00000013 nop +80003d08: 00000013 nop +80003d0c: 00000013 nop +80003d10: 00000013 nop +80003d14: 00000013 nop +80003d18: 00000013 nop +80003d1c: 00000013 nop +80003d20: 00000013 nop +80003d24: 00000013 nop +80003d28: 00000013 nop +80003d2c: 00000013 nop +80003d30: 00000013 nop +80003d34: 00000013 nop +80003d38: 00000013 nop +80003d3c: 00000013 nop +80003d40: 00000013 nop +80003d44: 00000013 nop +80003d48: 00000013 nop +80003d4c: 00000013 nop +80003d50: 00000013 nop +80003d54: 00000013 nop +80003d58: 00000013 nop +80003d5c: 00000013 nop +80003d60: 00000013 nop +80003d64: 00000013 nop +80003d68: 00000013 nop +80003d6c: 00000013 nop +80003d70: 00000013 nop +80003d74: 00000013 nop +80003d78: 00000013 nop +80003d7c: 00000013 nop +80003d80: 00000013 nop +80003d84: 00000013 nop +80003d88: 00000013 nop +80003d8c: 00000013 nop +80003d90: 00000013 nop +80003d94: 00000013 nop +80003d98: 00000013 nop +80003d9c: 00000013 nop +80003da0: 00000013 nop +80003da4: 00000013 nop +80003da8: 00000013 nop +80003dac: 00000013 nop +80003db0: 00000013 nop +80003db4: 00000013 nop +80003db8: 00000013 nop +80003dbc: 00000013 nop +80003dc0: 00000013 nop +80003dc4: 00000013 nop +80003dc8: 00000013 nop +80003dcc: 00000013 nop +80003dd0: 00000013 nop +80003dd4: 00000013 nop +80003dd8: 00000013 nop +80003ddc: 00000013 nop +80003de0: 00000013 nop +80003de4: 00000013 nop +80003de8: 00000013 nop +80003dec: 00000013 nop +80003df0: 00000013 nop +80003df4: 00000013 nop +80003df8: 00000013 nop +80003dfc: 00000013 nop +80003e00: 00000013 nop +80003e04: 00000013 nop +80003e08: 00000013 nop +80003e0c: 00000013 nop +80003e10: 00000013 nop +80003e14: 00000013 nop +80003e18: 00000013 nop +80003e1c: 00000013 nop +80003e20: 00000013 nop +80003e24: 00000013 nop +80003e28: 00000013 nop +80003e2c: 00000013 nop +80003e30: 00000013 nop +80003e34: 00000013 nop +80003e38: 00000013 nop +80003e3c: 00000013 nop +80003e40: 00000013 nop +80003e44: 00000013 nop +80003e48: 00000013 nop +80003e4c: 00000013 nop +80003e50: 00000013 nop +80003e54: 00000013 nop +80003e58: 00000013 nop +80003e5c: 00000013 nop +80003e60: 00000013 nop +80003e64: 00000013 nop +80003e68: 00000013 nop +80003e6c: 00000013 nop +80003e70: 00000013 nop +80003e74: 00000013 nop +80003e78: 00000013 nop +80003e7c: 00000013 nop +80003e80: 00000013 nop +80003e84: 00000013 nop +80003e88: 00000013 nop +80003e8c: 00000013 nop +80003e90: 00000013 nop +80003e94: 00000013 nop +80003e98: 00000013 nop +80003e9c: 00000013 nop +80003ea0: 00000013 nop +80003ea4: 00000013 nop +80003ea8: 00000013 nop +80003eac: 00000013 nop +80003eb0: 00000013 nop +80003eb4: 00000013 nop +80003eb8: 00000013 nop +80003ebc: 00000013 nop +80003ec0: 00000013 nop +80003ec4: 00000013 nop +80003ec8: 00000013 nop +80003ecc: 00000013 nop +80003ed0: 00000013 nop +80003ed4: 00000013 nop +80003ed8: 00000013 nop +80003edc: 00000013 nop +80003ee0: 00000013 nop +80003ee4: 00000013 nop +80003ee8: 00000013 nop +80003eec: 00000013 nop +80003ef0: 00000013 nop +80003ef4: 00000013 nop +80003ef8: 00000013 nop +80003efc: 00000013 nop +80003f00: 00000013 nop +80003f04: 00000013 nop +80003f08: 00000013 nop +80003f0c: 00000013 nop +80003f10: 00000013 nop +80003f14: 00000013 nop +80003f18: 00000013 nop +80003f1c: 00000013 nop +80003f20: 00000013 nop +80003f24: 00000013 nop +80003f28: 00000013 nop +80003f2c: 00000013 nop +80003f30: 00000013 nop +80003f34: 00000013 nop +80003f38: 00000013 nop +80003f3c: 00000013 nop +80003f40: 00000013 nop +80003f44: 00000013 nop +80003f48: 00000013 nop +80003f4c: 00000013 nop +80003f50: 00000013 nop +80003f54: 00000013 nop +80003f58: 00000013 nop +80003f5c: 00000013 nop +80003f60: 00000013 nop +80003f64: 00000013 nop +80003f68: 00000013 nop +80003f6c: 00000013 nop +80003f70: 00000013 nop +80003f74: 00000013 nop +80003f78: 00000013 nop +80003f7c: 00000013 nop +80003f80: 00000013 nop +80003f84: 00000013 nop +80003f88: 00000013 nop +80003f8c: 00000013 nop +80003f90: 00000013 nop +80003f94: 00000013 nop +80003f98: 00000013 nop +80003f9c: 00000013 nop +80003fa0: 00000013 nop +80003fa4: 00000013 nop +80003fa8: 00000013 nop +80003fac: 00000013 nop +80003fb0: 00000013 nop +80003fb4: 00000013 nop +80003fb8: 00000013 nop +80003fbc: 00000013 nop +80003fc0: 00000013 nop +80003fc4: 00000013 nop +80003fc8: 00000013 nop +80003fcc: 00000013 nop +80003fd0: 00000013 nop +80003fd4: 00000013 nop +80003fd8: 00000013 nop +80003fdc: 00000013 nop +80003fe0: 00000013 nop +80003fe4: 00000013 nop +80003fe8: 00000013 nop +80003fec: 00000013 nop +80003ff0: 00000013 nop +80003ff4: 00000013 nop +80003ff8: 00000013 nop +80003ffc: 00000013 nop +80004000: 0000 unimp +80004002: 0000 unimp +80004004: 0000 unimp +80004006: 0000 unimp +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: 0000 unimp +8000400e: 0000 unimp +80004010: 0000 unimp +80004012: 0000 unimp +80004014: 0000 unimp +80004016: 0000 unimp +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: 0000 unimp +8000401e: 0000 unimp +80004020: 0000 unimp +80004022: 0000 unimp +80004024: 0000 unimp +80004026: 0000 unimp +80004028: 0000 unimp +8000402a: 0000 unimp +8000402c: 0000 unimp +8000402e: 0000 unimp +80004030: 0000 unimp +80004032: 0000 unimp +80004034: 0000 unimp +80004036: 0000 unimp +80004038: 0000 unimp +8000403a: 0000 unimp +8000403c: 0000 unimp +8000403e: 0000 unimp +80004040: 0000 unimp +80004042: 0000 unimp +80004044: 0000 unimp +80004046: 0000 unimp +80004048: 0000 unimp +8000404a: 0000 unimp +8000404c: 0000 unimp +8000404e: 0000 unimp +80004050: 0000 unimp +80004052: 0000 unimp +80004054: 0000 unimp +80004056: 0000 unimp +80004058: 0000 unimp +8000405a: 0000 unimp +8000405c: 0000 unimp +8000405e: 0000 unimp +80004060: 0000 unimp +80004062: 0000 unimp +80004064: 0000 unimp +80004066: 0000 unimp +80004068: 0000 unimp +8000406a: 0000 unimp +8000406c: 0000 unimp +8000406e: 0000 unimp +80004070: 0000 unimp +80004072: 0000 unimp +80004074: 0000 unimp +80004076: 0000 unimp +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: 0000 unimp +8000407e: 0000 unimp +80004080: 0000 unimp +80004082: 0000 unimp +80004084: 0000 unimp +80004086: 0000 unimp +80004088: 0000 unimp +8000408a: 0000 unimp +8000408c: 0000 unimp +8000408e: 0000 unimp +80004090: 0000 unimp +80004092: 0000 unimp +80004094: 0000 unimp +80004096: 0000 unimp +80004098: 0000 unimp +8000409a: 0000 unimp +8000409c: 0000 unimp +8000409e: 0000 unimp +800040a0: 0000 unimp +800040a2: 0000 unimp +800040a4: 0000 unimp +800040a6: 0000 unimp +800040a8: 0000 unimp +800040aa: 0000 unimp +800040ac: 0000 unimp +800040ae: 0000 unimp +800040b0: 0000 unimp +800040b2: 0000 unimp +800040b4: 0000 unimp +800040b6: 0000 unimp +800040b8: 0000 unimp +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: 0000 unimp +800040c0: 0000 unimp +800040c2: 0000 unimp +800040c4: 0000 unimp +800040c6: 0000 unimp +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0000 unimp +800040ce: 0000 unimp +800040d0: 0000 unimp +800040d2: 0000 unimp +800040d4: 0000 unimp +800040d6: 0000 unimp +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0000 unimp +800040de: 0000 unimp +800040e0: 0000 unimp +800040e2: 0000 unimp +800040e4: 0000 unimp +800040e6: 0000 unimp +800040e8: 0000 unimp +800040ea: 0000 unimp +800040ec: 0000 unimp +800040ee: 0000 unimp +800040f0: 0000 unimp +800040f2: 0000 unimp +800040f4: 0000 unimp +800040f6: 0000 unimp +800040f8: 0000 unimp +800040fa: 0000 unimp +800040fc: 0000 unimp +800040fe: 0000 unimp +80004100: 0000 unimp +80004102: 0000 unimp +80004104: 0000 unimp +80004106: 0000 unimp +80004108: 0000 unimp +8000410a: 0000 unimp +8000410c: 0000 unimp +8000410e: 0000 unimp +80004110: 0000 unimp +80004112: 0000 unimp +80004114: 0000 unimp +80004116: 0000 unimp +80004118: 0000 unimp +8000411a: 0000 unimp +8000411c: 0000 unimp +8000411e: 0000 unimp +80004120: 0000 unimp +80004122: 0000 unimp +80004124: 0000 unimp +80004126: 0000 unimp +80004128: 0000 unimp +8000412a: 0000 unimp +8000412c: 0000 unimp +8000412e: 0000 unimp +80004130: 0000 unimp +80004132: 0000 unimp +80004134: 0000 unimp +80004136: 0000 unimp +80004138: 0000 unimp +8000413a: 0000 unimp +8000413c: 0000 unimp +8000413e: 0000 unimp +80004140: 0000 unimp +80004142: 0000 unimp +80004144: 0000 unimp +80004146: 0000 unimp +80004148: 0000 unimp +8000414a: 0000 unimp +8000414c: 0000 unimp +8000414e: 0000 unimp +80004150: 0000 unimp +80004152: 0000 unimp +80004154: 0000 unimp +80004156: 0000 unimp +80004158: 0000 unimp +8000415a: 0000 unimp +8000415c: 0000 unimp +8000415e: 0000 unimp +80004160: 0000 unimp +80004162: 0000 unimp +80004164: 0000 unimp +80004166: 0000 unimp +80004168: 0000 unimp +8000416a: 0000 unimp +8000416c: 0000 unimp +8000416e: 0000 unimp +80004170: 0000 unimp +80004172: 0000 unimp +80004174: 0000 unimp +80004176: 0000 unimp +80004178: 0000 unimp +8000417a: 0000 unimp +8000417c: 0000 unimp +8000417e: 0000 unimp +80004180: 0000 unimp +80004182: 0000 unimp +80004184: 0000 unimp +80004186: 0000 unimp +80004188: 0000 unimp +8000418a: 0000 unimp +8000418c: 0000 unimp +8000418e: 0000 unimp +80004190: 0000 unimp +80004192: 0000 unimp +80004194: 0000 unimp +80004196: 0000 unimp +80004198: 0000 unimp +8000419a: 0000 unimp +8000419c: 0000 unimp +8000419e: 0000 unimp +800041a0: 0000 unimp +800041a2: 0000 unimp +800041a4: 0000 unimp +800041a6: 0000 unimp +800041a8: 0000 unimp +800041aa: 0000 unimp +800041ac: 0000 unimp +800041ae: 0000 unimp +800041b0: 0000 unimp +800041b2: 0000 unimp +800041b4: 0000 unimp +800041b6: 0000 unimp +800041b8: 0000 unimp +800041ba: 0000 unimp +800041bc: 0000 unimp +800041be: 0000 unimp +800041c0: 0000 unimp +800041c2: 0000 unimp +800041c4: 0000 unimp +800041c6: 0000 unimp +800041c8: 0000 unimp +800041ca: 0000 unimp +800041cc: 0000 unimp +800041ce: 0000 unimp +800041d0: 0000 unimp +800041d2: 0000 unimp +800041d4: 0000 unimp +800041d6: 0000 unimp +800041d8: 0000 unimp +800041da: 0000 unimp +800041dc: 0000 unimp +800041de: 0000 unimp +800041e0: 0000 unimp +800041e2: 0000 unimp +800041e4: 0000 unimp +800041e6: 0000 unimp +800041e8: 0000 unimp +800041ea: 0000 unimp +800041ec: 0000 unimp +800041ee: 0000 unimp +800041f0: 0000 unimp +800041f2: 0000 unimp +800041f4: 0000 unimp +800041f6: 0000 unimp +800041f8: 0000 unimp +800041fa: 0000 unimp +800041fc: 0000 unimp +800041fe: 0000 unimp +80004200: 0000 unimp +80004202: 0000 unimp +80004204: 0000 unimp +80004206: 0000 unimp +80004208: 0000 unimp +8000420a: 0000 unimp +8000420c: 0000 unimp +8000420e: 0000 unimp +80004210: 0000 unimp +80004212: 0000 unimp +80004214: 0000 unimp +80004216: 0000 unimp +80004218: 0000 unimp +8000421a: 0000 unimp +8000421c: 0000 unimp +8000421e: 0000 unimp +80004220: 0000 unimp +80004222: 0000 unimp +80004224: 0000 unimp +80004226: 0000 unimp +80004228: 0000 unimp +8000422a: 0000 unimp +8000422c: 0000 unimp +8000422e: 0000 unimp +80004230: 0000 unimp +80004232: 0000 unimp +80004234: 0000 unimp +80004236: 0000 unimp +80004238: 0000 unimp +8000423a: 0000 unimp +8000423c: 0000 unimp +8000423e: 0000 unimp +80004240: 0000 unimp +80004242: 0000 unimp +80004244: 0000 unimp +80004246: 0000 unimp +80004248: 0000 unimp +8000424a: 0000 unimp +8000424c: 0000 unimp +8000424e: 0000 unimp +80004250: 0000 unimp +80004252: 0000 unimp +80004254: 0000 unimp +80004256: 0000 unimp +80004258: 0000 unimp +8000425a: 0000 unimp +8000425c: 0000 unimp +8000425e: 0000 unimp +80004260: 0000 unimp +80004262: 0000 unimp +80004264: 0000 unimp +80004266: 0000 unimp +80004268: 0000 unimp +8000426a: 0000 unimp +8000426c: 0000 unimp +8000426e: 0000 unimp +80004270: 0000 unimp +80004272: 0000 unimp +80004274: 0000 unimp +80004276: 0000 unimp +80004278: 0000 unimp +8000427a: 0000 unimp +8000427c: 0000 unimp +8000427e: 0000 unimp +80004280: 0000 unimp +80004282: 0000 unimp +80004284: 0000 unimp +80004286: 0000 unimp +80004288: 0000 unimp +8000428a: 0000 unimp +8000428c: 0000 unimp +8000428e: 0000 unimp +80004290: 0000 unimp +80004292: 0000 unimp +80004294: 0000 unimp +80004296: 0000 unimp +80004298: 0000 unimp +8000429a: 0000 unimp +8000429c: 0000 unimp +8000429e: 0000 unimp +800042a0: 0000 unimp +800042a2: 0000 unimp +800042a4: 0000 unimp +800042a6: 0000 unimp +800042a8: 0000 unimp +800042aa: 0000 unimp +800042ac: 0000 unimp +800042ae: 0000 unimp +800042b0: 0000 unimp +800042b2: 0000 unimp +800042b4: 0000 unimp +800042b6: 0000 unimp +800042b8: 0000 unimp +800042ba: 0000 unimp +800042bc: 0000 unimp +800042be: 0000 unimp +800042c0: 0000 unimp +800042c2: 0000 unimp +800042c4: 0000 unimp +800042c6: 0000 unimp +800042c8: 0000 unimp +800042ca: 0000 unimp +800042cc: 0000 unimp +800042ce: 0000 unimp +800042d0: 0000 unimp +800042d2: 0000 unimp +800042d4: 0000 unimp +800042d6: 0000 unimp +800042d8: 0000 unimp +800042da: 0000 unimp +800042dc: 0000 unimp +800042de: 0000 unimp +800042e0: 0000 unimp +800042e2: 0000 unimp +800042e4: 0000 unimp +800042e6: 0000 unimp +800042e8: 0000 unimp +800042ea: 0000 unimp +800042ec: 0000 unimp +800042ee: 0000 unimp +800042f0: 0000 unimp +800042f2: 0000 unimp +800042f4: 0000 unimp +800042f6: 0000 unimp +800042f8: 0000 unimp +800042fa: 0000 unimp +800042fc: 0000 unimp +800042fe: 0000 unimp +80004300: 0000 unimp +80004302: 0000 unimp +80004304: 0000 unimp +80004306: 0000 unimp +80004308: 0000 unimp +8000430a: 0000 unimp +8000430c: 0000 unimp +8000430e: 0000 unimp +80004310: 0000 unimp +80004312: 0000 unimp +80004314: 0000 unimp +80004316: 0000 unimp +80004318: 0000 unimp +8000431a: 0000 unimp +8000431c: 0000 unimp +8000431e: 0000 unimp +80004320: 0000 unimp +80004322: 0000 unimp +80004324: 0000 unimp +80004326: 0000 unimp +80004328: 0000 unimp +8000432a: 0000 unimp +8000432c: 0000 unimp +8000432e: 0000 unimp +80004330: 0000 unimp +80004332: 0000 unimp +80004334: 0000 unimp +80004336: 0000 unimp +80004338: 0000 unimp +8000433a: 0000 unimp +8000433c: 0000 unimp +8000433e: 0000 unimp +80004340: 0000 unimp +80004342: 0000 unimp +80004344: 0000 unimp +80004346: 0000 unimp +80004348: 0000 unimp +8000434a: 0000 unimp +8000434c: 0000 unimp +8000434e: 0000 unimp +80004350: 0000 unimp +80004352: 0000 unimp +80004354: 0000 unimp +80004356: 0000 unimp +80004358: 0000 unimp +8000435a: 0000 unimp +8000435c: 0000 unimp +8000435e: 0000 unimp +80004360: 0000 unimp +80004362: 0000 unimp +80004364: 0000 unimp +80004366: 0000 unimp +80004368: 0000 unimp +8000436a: 0000 unimp +8000436c: 0000 unimp +8000436e: 0000 unimp +80004370: 0000 unimp +80004372: 0000 unimp +80004374: 0000 unimp +80004376: 0000 unimp +80004378: 0000 unimp +8000437a: 0000 unimp +8000437c: 0000 unimp +8000437e: 0000 unimp +80004380: 0000 unimp +80004382: 0000 unimp +80004384: 0000 unimp +80004386: 0000 unimp +80004388: 0000 unimp +8000438a: 0000 unimp +8000438c: 0000 unimp +8000438e: 0000 unimp +80004390: 0000 unimp +80004392: 0000 unimp +80004394: 0000 unimp +80004396: 0000 unimp +80004398: 0000 unimp +8000439a: 0000 unimp +8000439c: 0000 unimp +8000439e: 0000 unimp +800043a0: 0000 unimp +800043a2: 0000 unimp +800043a4: 0000 unimp +800043a6: 0000 unimp +800043a8: 0000 unimp +800043aa: 0000 unimp +800043ac: 0000 unimp +800043ae: 0000 unimp +800043b0: 0000 unimp +800043b2: 0000 unimp +800043b4: 0000 unimp +800043b6: 0000 unimp +800043b8: 0000 unimp +800043ba: 0000 unimp +800043bc: 0000 unimp +800043be: 0000 unimp +800043c0: 0000 unimp +800043c2: 0000 unimp +800043c4: 0000 unimp +800043c6: 0000 unimp +800043c8: 0000 unimp +800043ca: 0000 unimp +800043cc: 0000 unimp +800043ce: 0000 unimp +800043d0: 0000 unimp +800043d2: 0000 unimp +800043d4: 0000 unimp +800043d6: 0000 unimp +800043d8: 0000 unimp +800043da: 0000 unimp +800043dc: 0000 unimp +800043de: 0000 unimp +800043e0: 0000 unimp +800043e2: 0000 unimp +800043e4: 0000 unimp +800043e6: 0000 unimp +800043e8: 0000 unimp +800043ea: 0000 unimp +800043ec: 0000 unimp +800043ee: 0000 unimp +800043f0: 0000 unimp +800043f2: 0000 unimp +800043f4: 0000 unimp +800043f6: 0000 unimp +800043f8: 0000 unimp +800043fa: 0000 unimp +800043fc: 0000 unimp +800043fe: 0000 unimp +80004400: 0000 unimp +80004402: 0000 unimp +80004404: 0000 unimp +80004406: 0000 unimp +80004408: 0000 unimp +8000440a: 0000 unimp +8000440c: 0000 unimp +8000440e: 0000 unimp +80004410: 0000 unimp +80004412: 0000 unimp +80004414: 0000 unimp +80004416: 0000 unimp +80004418: 0000 unimp +8000441a: 0000 unimp +8000441c: 0000 unimp +8000441e: 0000 unimp +80004420: 0000 unimp +80004422: 0000 unimp +80004424: 0000 unimp +80004426: 0000 unimp +80004428: 0000 unimp +8000442a: 0000 unimp +8000442c: 0000 unimp +8000442e: 0000 unimp +80004430: 0000 unimp +80004432: 0000 unimp +80004434: 0000 unimp +80004436: 0000 unimp +80004438: 0000 unimp +8000443a: 0000 unimp +8000443c: 0000 unimp +8000443e: 0000 unimp +80004440: 0000 unimp +80004442: 0000 unimp +80004444: 0000 unimp +80004446: 0000 unimp +80004448: 0000 unimp +8000444a: 0000 unimp +8000444c: 0000 unimp +8000444e: 0000 unimp +80004450: 0000 unimp +80004452: 0000 unimp +80004454: 0000 unimp +80004456: 0000 unimp +80004458: 0000 unimp +8000445a: 0000 unimp +8000445c: 0000 unimp +8000445e: 0000 unimp +80004460: 0000 unimp +80004462: 0000 unimp +80004464: 0000 unimp +80004466: 0000 unimp +80004468: 0000 unimp +8000446a: 0000 unimp +8000446c: 0000 unimp +8000446e: 0000 unimp +80004470: 0000 unimp +80004472: 0000 unimp +80004474: 0000 unimp +80004476: 0000 unimp +80004478: 0000 unimp +8000447a: 0000 unimp +8000447c: 0000 unimp +8000447e: 0000 unimp +80004480: 0000 unimp +80004482: 0000 unimp +80004484: 0000 unimp +80004486: 0000 unimp +80004488: 0000 unimp +8000448a: 0000 unimp +8000448c: 0000 unimp +8000448e: 0000 unimp +80004490: 0000 unimp +80004492: 0000 unimp +80004494: 0000 unimp +80004496: 0000 unimp +80004498: 0000 unimp +8000449a: 0000 unimp +8000449c: 0000 unimp +8000449e: 0000 unimp +800044a0: 0000 unimp +800044a2: 0000 unimp +800044a4: 0000 unimp +800044a6: 0000 unimp +800044a8: 0000 unimp +800044aa: 0000 unimp +800044ac: 0000 unimp +800044ae: 0000 unimp +800044b0: 0000 unimp +800044b2: 0000 unimp +800044b4: 0000 unimp +800044b6: 0000 unimp +800044b8: 0000 unimp +800044ba: 0000 unimp +800044bc: 0000 unimp +800044be: 0000 unimp +800044c0: 0000 unimp +800044c2: 0000 unimp +800044c4: 0000 unimp +800044c6: 0000 unimp +800044c8: 0000 unimp +800044ca: 0000 unimp +800044cc: 0000 unimp +800044ce: 0000 unimp +800044d0: 0000 unimp +800044d2: 0000 unimp +800044d4: 0000 unimp +800044d6: 0000 unimp +800044d8: 0000 unimp +800044da: 0000 unimp +800044dc: 0000 unimp +800044de: 0000 unimp +800044e0: 0000 unimp +800044e2: 0000 unimp +800044e4: 0000 unimp +800044e6: 0000 unimp +800044e8: 0000 unimp +800044ea: 0000 unimp +800044ec: 0000 unimp +800044ee: 0000 unimp +800044f0: 0000 unimp +800044f2: 0000 unimp +800044f4: 0000 unimp +800044f6: 0000 unimp +800044f8: 0000 unimp +800044fa: 0000 unimp +800044fc: 0000 unimp +800044fe: 0000 unimp +80004500: 0000 unimp +80004502: 0000 unimp +80004504: 0000 unimp +80004506: 0000 unimp +80004508: 0000 unimp +8000450a: 0000 unimp +8000450c: 0000 unimp +8000450e: 0000 unimp +80004510: 0000 unimp +80004512: 0000 unimp +80004514: 0000 unimp +80004516: 0000 unimp +80004518: 0000 unimp +8000451a: 0000 unimp +8000451c: 0000 unimp +8000451e: 0000 unimp +80004520: 0000 unimp +80004522: 0000 unimp +80004524: 0000 unimp +80004526: 0000 unimp +80004528: 0000 unimp +8000452a: 0000 unimp +8000452c: 0000 unimp +8000452e: 0000 unimp +80004530: 0000 unimp +80004532: 0000 unimp +80004534: 0000 unimp +80004536: 0000 unimp +80004538: 0000 unimp +8000453a: 0000 unimp +8000453c: 0000 unimp +8000453e: 0000 unimp +80004540: 0000 unimp +80004542: 0000 unimp +80004544: 0000 unimp +80004546: 0000 unimp +80004548: 0000 unimp +8000454a: 0000 unimp +8000454c: 0000 unimp +8000454e: 0000 unimp +80004550: 0000 unimp +80004552: 0000 unimp +80004554: 0000 unimp +80004556: 0000 unimp +80004558: 0000 unimp +8000455a: 0000 unimp +8000455c: 0000 unimp +8000455e: 0000 unimp +80004560: 0000 unimp +80004562: 0000 unimp +80004564: 0000 unimp +80004566: 0000 unimp +80004568: 0000 unimp +8000456a: 0000 unimp +8000456c: 0000 unimp +8000456e: 0000 unimp +80004570: 0000 unimp +80004572: 0000 unimp +80004574: 0000 unimp +80004576: 0000 unimp +80004578: 0000 unimp +8000457a: 0000 unimp +8000457c: 0000 unimp +8000457e: 0000 unimp +80004580: 0000 unimp +80004582: 0000 unimp +80004584: 0000 unimp +80004586: 0000 unimp +80004588: 0000 unimp +8000458a: 0000 unimp +8000458c: 0000 unimp +8000458e: 0000 unimp +80004590: 0000 unimp +80004592: 0000 unimp +80004594: 0000 unimp +80004596: 0000 unimp +80004598: 0000 unimp +8000459a: 0000 unimp +8000459c: 0000 unimp +8000459e: 0000 unimp +800045a0: 0000 unimp +800045a2: 0000 unimp +800045a4: 0000 unimp +800045a6: 0000 unimp +800045a8: 0000 unimp +800045aa: 0000 unimp +800045ac: 0000 unimp +800045ae: 0000 unimp +800045b0: 0000 unimp +800045b2: 0000 unimp +800045b4: 0000 unimp +800045b6: 0000 unimp +800045b8: 0000 unimp +800045ba: 0000 unimp +800045bc: 0000 unimp +800045be: 0000 unimp +800045c0: 0000 unimp +800045c2: 0000 unimp +800045c4: 0000 unimp +800045c6: 0000 unimp +800045c8: 0000 unimp +800045ca: 0000 unimp +800045cc: 0000 unimp +800045ce: 0000 unimp +800045d0: 0000 unimp +800045d2: 0000 unimp +800045d4: 0000 unimp +800045d6: 0000 unimp +800045d8: 0000 unimp +800045da: 0000 unimp +800045dc: 0000 unimp +800045de: 0000 unimp +800045e0: 0000 unimp +800045e2: 0000 unimp +800045e4: 0000 unimp +800045e6: 0000 unimp +800045e8: 0000 unimp +800045ea: 0000 unimp +800045ec: 0000 unimp +800045ee: 0000 unimp +800045f0: 0000 unimp +800045f2: 0000 unimp +800045f4: 0000 unimp +800045f6: 0000 unimp +800045f8: 0000 unimp +800045fa: 0000 unimp +800045fc: 0000 unimp +800045fe: 0000 unimp +80004600: 0000 unimp +80004602: 0000 unimp +80004604: 0000 unimp +80004606: 0000 unimp +80004608: 0000 unimp +8000460a: 0000 unimp +8000460c: 0000 unimp +8000460e: 0000 unimp +80004610: 0000 unimp +80004612: 0000 unimp +80004614: 0000 unimp +80004616: 0000 unimp +80004618: 0000 unimp +8000461a: 0000 unimp +8000461c: 0000 unimp +8000461e: 0000 unimp +80004620: 0000 unimp +80004622: 0000 unimp +80004624: 0000 unimp +80004626: 0000 unimp +80004628: 0000 unimp +8000462a: 0000 unimp +8000462c: 0000 unimp +8000462e: 0000 unimp +80004630: 0000 unimp +80004632: 0000 unimp +80004634: 0000 unimp +80004636: 0000 unimp +80004638: 0000 unimp +8000463a: 0000 unimp +8000463c: 0000 unimp +8000463e: 0000 unimp +80004640: 0000 unimp +80004642: 0000 unimp +80004644: 0000 unimp +80004646: 0000 unimp +80004648: 0000 unimp +8000464a: 0000 unimp +8000464c: 0000 unimp +8000464e: 0000 unimp +80004650: 0000 unimp +80004652: 0000 unimp +80004654: 0000 unimp +80004656: 0000 unimp +80004658: 0000 unimp +8000465a: 0000 unimp +8000465c: 0000 unimp +8000465e: 0000 unimp +80004660: 0000 unimp +80004662: 0000 unimp +80004664: 0000 unimp +80004666: 0000 unimp +80004668: 0000 unimp +8000466a: 0000 unimp +8000466c: 0000 unimp +8000466e: 0000 unimp +80004670: 0000 unimp +80004672: 0000 unimp +80004674: 0000 unimp +80004676: 0000 unimp +80004678: 0000 unimp +8000467a: 0000 unimp +8000467c: 0000 unimp +8000467e: 0000 unimp +80004680: 0000 unimp +80004682: 0000 unimp +80004684: 0000 unimp +80004686: 0000 unimp +80004688: 0000 unimp +8000468a: 0000 unimp +8000468c: 0000 unimp +8000468e: 0000 unimp +80004690: 0000 unimp +80004692: 0000 unimp +80004694: 0000 unimp +80004696: 0000 unimp +80004698: 0000 unimp +8000469a: 0000 unimp +8000469c: 0000 unimp +8000469e: 0000 unimp +800046a0: 0000 unimp +800046a2: 0000 unimp +800046a4: 0000 unimp +800046a6: 0000 unimp +800046a8: 0000 unimp +800046aa: 0000 unimp +800046ac: 0000 unimp +800046ae: 0000 unimp +800046b0: 0000 unimp +800046b2: 0000 unimp +800046b4: 0000 unimp +800046b6: 0000 unimp +800046b8: 0000 unimp +800046ba: 0000 unimp +800046bc: 0000 unimp +800046be: 0000 unimp +800046c0: 0000 unimp +800046c2: 0000 unimp +800046c4: 0000 unimp +800046c6: 0000 unimp +800046c8: 0000 unimp +800046ca: 0000 unimp +800046cc: 0000 unimp +800046ce: 0000 unimp +800046d0: 0000 unimp +800046d2: 0000 unimp +800046d4: 0000 unimp +800046d6: 0000 unimp +800046d8: 0000 unimp +800046da: 0000 unimp +800046dc: 0000 unimp +800046de: 0000 unimp +800046e0: 0000 unimp +800046e2: 0000 unimp +800046e4: 0000 unimp +800046e6: 0000 unimp +800046e8: 0000 unimp +800046ea: 0000 unimp +800046ec: 0000 unimp +800046ee: 0000 unimp +800046f0: 0000 unimp +800046f2: 0000 unimp +800046f4: 0000 unimp +800046f6: 0000 unimp +800046f8: 0000 unimp +800046fa: 0000 unimp +800046fc: 0000 unimp +800046fe: 0000 unimp +80004700: 0000 unimp +80004702: 0000 unimp +80004704: 0000 unimp +80004706: 0000 unimp +80004708: 0000 unimp +8000470a: 0000 unimp +8000470c: 0000 unimp +8000470e: 0000 unimp +80004710: 0000 unimp +80004712: 0000 unimp +80004714: 0000 unimp +80004716: 0000 unimp +80004718: 0000 unimp +8000471a: 0000 unimp +8000471c: 0000 unimp +8000471e: 0000 unimp +80004720: 0000 unimp +80004722: 0000 unimp +80004724: 0000 unimp +80004726: 0000 unimp +80004728: 0000 unimp +8000472a: 0000 unimp +8000472c: 0000 unimp +8000472e: 0000 unimp +80004730: 0000 unimp +80004732: 0000 unimp +80004734: 0000 unimp +80004736: 0000 unimp +80004738: 0000 unimp +8000473a: 0000 unimp +8000473c: 0000 unimp +8000473e: 0000 unimp +80004740: 0000 unimp +80004742: 0000 unimp +80004744: 0000 unimp +80004746: 0000 unimp +80004748: 0000 unimp +8000474a: 0000 unimp +8000474c: 0000 unimp +8000474e: 0000 unimp +80004750: 0000 unimp +80004752: 0000 unimp +80004754: 0000 unimp +80004756: 0000 unimp +80004758: 0000 unimp +8000475a: 0000 unimp +8000475c: 0000 unimp +8000475e: 0000 unimp +80004760: 0000 unimp +80004762: 0000 unimp +80004764: 0000 unimp +80004766: 0000 unimp +80004768: 0000 unimp +8000476a: 0000 unimp +8000476c: 0000 unimp +8000476e: 0000 unimp +80004770: 0000 unimp +80004772: 0000 unimp +80004774: 0000 unimp +80004776: 0000 unimp +80004778: 0000 unimp +8000477a: 0000 unimp +8000477c: 0000 unimp +8000477e: 0000 unimp +80004780: 0000 unimp +80004782: 0000 unimp +80004784: 0000 unimp +80004786: 0000 unimp +80004788: 0000 unimp +8000478a: 0000 unimp +8000478c: 0000 unimp +8000478e: 0000 unimp +80004790: 0000 unimp +80004792: 0000 unimp +80004794: 0000 unimp +80004796: 0000 unimp +80004798: 0000 unimp +8000479a: 0000 unimp +8000479c: 0000 unimp +8000479e: 0000 unimp +800047a0: 0000 unimp +800047a2: 0000 unimp +800047a4: 0000 unimp +800047a6: 0000 unimp +800047a8: 0000 unimp +800047aa: 0000 unimp +800047ac: 0000 unimp +800047ae: 0000 unimp +800047b0: 0000 unimp +800047b2: 0000 unimp +800047b4: 0000 unimp +800047b6: 0000 unimp +800047b8: 0000 unimp +800047ba: 0000 unimp +800047bc: 0000 unimp +800047be: 0000 unimp +800047c0: 0000 unimp +800047c2: 0000 unimp +800047c4: 0000 unimp +800047c6: 0000 unimp +800047c8: 0000 unimp +800047ca: 0000 unimp +800047cc: 0000 unimp +800047ce: 0000 unimp +800047d0: 0000 unimp +800047d2: 0000 unimp +800047d4: 0000 unimp +800047d6: 0000 unimp +800047d8: 0000 unimp +800047da: 0000 unimp +800047dc: 0000 unimp +800047de: 0000 unimp +800047e0: 0000 unimp +800047e2: 0000 unimp +800047e4: 0000 unimp +800047e6: 0000 unimp +800047e8: 0000 unimp +800047ea: 0000 unimp +800047ec: 0000 unimp +800047ee: 0000 unimp +800047f0: 0000 unimp +800047f2: 0000 unimp +800047f4: 0000 unimp +800047f6: 0000 unimp +800047f8: 0000 unimp +800047fa: 0000 unimp +800047fc: 0000 unimp +800047fe: 0000 unimp +80004800: 0000 unimp +80004802: 0000 unimp +80004804: 0000 unimp +80004806: 0000 unimp +80004808: 0000 unimp +8000480a: 0000 unimp +8000480c: 0000 unimp +8000480e: 0000 unimp +80004810: 0000 unimp +80004812: 0000 unimp +80004814: 0000 unimp +80004816: 0000 unimp +80004818: 0000 unimp +8000481a: 0000 unimp +8000481c: 0000 unimp +8000481e: 0000 unimp +80004820: 0000 unimp +80004822: 0000 unimp +80004824: 0000 unimp +80004826: 0000 unimp +80004828: 0000 unimp +8000482a: 0000 unimp +8000482c: 0000 unimp +8000482e: 0000 unimp +80004830: 0000 unimp +80004832: 0000 unimp +80004834: 0000 unimp +80004836: 0000 unimp +80004838: 0000 unimp +8000483a: 0000 unimp +8000483c: 0000 unimp +8000483e: 0000 unimp +80004840: 0000 unimp +80004842: 0000 unimp +80004844: 0000 unimp +80004846: 0000 unimp +80004848: 0000 unimp +8000484a: 0000 unimp +8000484c: 0000 unimp +8000484e: 0000 unimp +80004850: 0000 unimp +80004852: 0000 unimp +80004854: 0000 unimp +80004856: 0000 unimp +80004858: 0000 unimp +8000485a: 0000 unimp +8000485c: 0000 unimp +8000485e: 0000 unimp +80004860: 0000 unimp +80004862: 0000 unimp +80004864: 0000 unimp +80004866: 0000 unimp +80004868: 0000 unimp +8000486a: 0000 unimp +8000486c: 0000 unimp +8000486e: 0000 unimp +80004870: 0000 unimp +80004872: 0000 unimp +80004874: 0000 unimp +80004876: 0000 unimp +80004878: 0000 unimp +8000487a: 0000 unimp +8000487c: 0000 unimp +8000487e: 0000 unimp +80004880: 0000 unimp +80004882: 0000 unimp +80004884: 0000 unimp +80004886: 0000 unimp +80004888: 0000 unimp +8000488a: 0000 unimp +8000488c: 0000 unimp +8000488e: 0000 unimp +80004890: 0000 unimp +80004892: 0000 unimp +80004894: 0000 unimp +80004896: 0000 unimp +80004898: 0000 unimp +8000489a: 0000 unimp +8000489c: 0000 unimp +8000489e: 0000 unimp +800048a0: 0000 unimp +800048a2: 0000 unimp +800048a4: 0000 unimp +800048a6: 0000 unimp +800048a8: 0000 unimp +800048aa: 0000 unimp +800048ac: 0000 unimp +800048ae: 0000 unimp +800048b0: 0000 unimp +800048b2: 0000 unimp +800048b4: 0000 unimp +800048b6: 0000 unimp +800048b8: 0000 unimp +800048ba: 0000 unimp +800048bc: 0000 unimp +800048be: 0000 unimp +800048c0: 0000 unimp +800048c2: 0000 unimp +800048c4: 0000 unimp +800048c6: 0000 unimp +800048c8: 0000 unimp +800048ca: 0000 unimp +800048cc: 0000 unimp +800048ce: 0000 unimp +800048d0: 0000 unimp +800048d2: 0000 unimp +800048d4: 0000 unimp +800048d6: 0000 unimp +800048d8: 0000 unimp +800048da: 0000 unimp +800048dc: 0000 unimp +800048de: 0000 unimp +800048e0: 0000 unimp +800048e2: 0000 unimp +800048e4: 0000 unimp +800048e6: 0000 unimp +800048e8: 0000 unimp +800048ea: 0000 unimp +800048ec: 0000 unimp +800048ee: 0000 unimp +800048f0: 0000 unimp +800048f2: 0000 unimp +800048f4: 0000 unimp +800048f6: 0000 unimp +800048f8: 0000 unimp +800048fa: 0000 unimp +800048fc: 0000 unimp +800048fe: 0000 unimp +80004900: 0000 unimp +80004902: 0000 unimp +80004904: 0000 unimp +80004906: 0000 unimp +80004908: 0000 unimp +8000490a: 0000 unimp +8000490c: 0000 unimp +8000490e: 0000 unimp +80004910: 0000 unimp +80004912: 0000 unimp +80004914: 0000 unimp +80004916: 0000 unimp +80004918: 0000 unimp +8000491a: 0000 unimp +8000491c: 0000 unimp +8000491e: 0000 unimp +80004920: 0000 unimp +80004922: 0000 unimp +80004924: 0000 unimp +80004926: 0000 unimp +80004928: 0000 unimp +8000492a: 0000 unimp +8000492c: 0000 unimp +8000492e: 0000 unimp +80004930: 0000 unimp +80004932: 0000 unimp +80004934: 0000 unimp +80004936: 0000 unimp +80004938: 0000 unimp +8000493a: 0000 unimp +8000493c: 0000 unimp +8000493e: 0000 unimp +80004940: 0000 unimp +80004942: 0000 unimp +80004944: 0000 unimp +80004946: 0000 unimp +80004948: 0000 unimp +8000494a: 0000 unimp +8000494c: 0000 unimp +8000494e: 0000 unimp +80004950: 0000 unimp +80004952: 0000 unimp +80004954: 0000 unimp +80004956: 0000 unimp +80004958: 0000 unimp +8000495a: 0000 unimp +8000495c: 0000 unimp +8000495e: 0000 unimp +80004960: 0000 unimp +80004962: 0000 unimp +80004964: 0000 unimp +80004966: 0000 unimp +80004968: 0000 unimp +8000496a: 0000 unimp +8000496c: 0000 unimp +8000496e: 0000 unimp +80004970: 0000 unimp +80004972: 0000 unimp +80004974: 0000 unimp +80004976: 0000 unimp +80004978: 0000 unimp +8000497a: 0000 unimp +8000497c: 0000 unimp +8000497e: 0000 unimp +80004980: 0000 unimp +80004982: 0000 unimp +80004984: 0000 unimp +80004986: 0000 unimp +80004988: 0000 unimp +8000498a: 0000 unimp +8000498c: 0000 unimp +8000498e: 0000 unimp +80004990: 0000 unimp +80004992: 0000 unimp +80004994: 0000 unimp +80004996: 0000 unimp +80004998: 0000 unimp +8000499a: 0000 unimp +8000499c: 0000 unimp +8000499e: 0000 unimp +800049a0: 0000 unimp +800049a2: 0000 unimp +800049a4: 0000 unimp +800049a6: 0000 unimp +800049a8: 0000 unimp +800049aa: 0000 unimp +800049ac: 0000 unimp +800049ae: 0000 unimp +800049b0: 0000 unimp +800049b2: 0000 unimp +800049b4: 0000 unimp +800049b6: 0000 unimp +800049b8: 0000 unimp +800049ba: 0000 unimp +800049bc: 0000 unimp +800049be: 0000 unimp +800049c0: 0000 unimp +800049c2: 0000 unimp +800049c4: 0000 unimp +800049c6: 0000 unimp +800049c8: 0000 unimp +800049ca: 0000 unimp +800049cc: 0000 unimp +800049ce: 0000 unimp +800049d0: 0000 unimp +800049d2: 0000 unimp +800049d4: 0000 unimp +800049d6: 0000 unimp +800049d8: 0000 unimp +800049da: 0000 unimp +800049dc: 0000 unimp +800049de: 0000 unimp +800049e0: 0000 unimp +800049e2: 0000 unimp +800049e4: 0000 unimp +800049e6: 0000 unimp +800049e8: 0000 unimp +800049ea: 0000 unimp +800049ec: 0000 unimp +800049ee: 0000 unimp +800049f0: 0000 unimp +800049f2: 0000 unimp +800049f4: 0000 unimp +800049f6: 0000 unimp +800049f8: 0000 unimp +800049fa: 0000 unimp +800049fc: 0000 unimp +800049fe: 0000 unimp +80004a00: 0000 unimp +80004a02: 0000 unimp +80004a04: 0000 unimp +80004a06: 0000 unimp +80004a08: 0000 unimp +80004a0a: 0000 unimp +80004a0c: 0000 unimp +80004a0e: 0000 unimp +80004a10: 0000 unimp +80004a12: 0000 unimp +80004a14: 0000 unimp +80004a16: 0000 unimp +80004a18: 0000 unimp +80004a1a: 0000 unimp +80004a1c: 0000 unimp +80004a1e: 0000 unimp +80004a20: 0000 unimp +80004a22: 0000 unimp +80004a24: 0000 unimp +80004a26: 0000 unimp +80004a28: 0000 unimp +80004a2a: 0000 unimp +80004a2c: 0000 unimp +80004a2e: 0000 unimp +80004a30: 0000 unimp +80004a32: 0000 unimp +80004a34: 0000 unimp +80004a36: 0000 unimp +80004a38: 0000 unimp +80004a3a: 0000 unimp +80004a3c: 0000 unimp +80004a3e: 0000 unimp +80004a40: 0000 unimp +80004a42: 0000 unimp +80004a44: 0000 unimp +80004a46: 0000 unimp +80004a48: 0000 unimp +80004a4a: 0000 unimp +80004a4c: 0000 unimp +80004a4e: 0000 unimp +80004a50: 0000 unimp +80004a52: 0000 unimp +80004a54: 0000 unimp +80004a56: 0000 unimp +80004a58: 0000 unimp +80004a5a: 0000 unimp +80004a5c: 0000 unimp +80004a5e: 0000 unimp +80004a60: 0000 unimp +80004a62: 0000 unimp +80004a64: 0000 unimp +80004a66: 0000 unimp +80004a68: 0000 unimp +80004a6a: 0000 unimp +80004a6c: 0000 unimp +80004a6e: 0000 unimp +80004a70: 0000 unimp +80004a72: 0000 unimp +80004a74: 0000 unimp +80004a76: 0000 unimp +80004a78: 0000 unimp +80004a7a: 0000 unimp +80004a7c: 0000 unimp +80004a7e: 0000 unimp +80004a80: 0000 unimp +80004a82: 0000 unimp +80004a84: 0000 unimp +80004a86: 0000 unimp +80004a88: 0000 unimp +80004a8a: 0000 unimp +80004a8c: 0000 unimp +80004a8e: 0000 unimp +80004a90: 0000 unimp +80004a92: 0000 unimp +80004a94: 0000 unimp +80004a96: 0000 unimp +80004a98: 0000 unimp +80004a9a: 0000 unimp +80004a9c: 0000 unimp +80004a9e: 0000 unimp +80004aa0: 0000 unimp +80004aa2: 0000 unimp +80004aa4: 0000 unimp +80004aa6: 0000 unimp +80004aa8: 0000 unimp +80004aaa: 0000 unimp +80004aac: 0000 unimp +80004aae: 0000 unimp +80004ab0: 0000 unimp +80004ab2: 0000 unimp +80004ab4: 0000 unimp +80004ab6: 0000 unimp +80004ab8: 0000 unimp +80004aba: 0000 unimp +80004abc: 0000 unimp +80004abe: 0000 unimp +80004ac0: 0000 unimp +80004ac2: 0000 unimp +80004ac4: 0000 unimp +80004ac6: 0000 unimp +80004ac8: 0000 unimp +80004aca: 0000 unimp +80004acc: 0000 unimp +80004ace: 0000 unimp +80004ad0: 0000 unimp +80004ad2: 0000 unimp +80004ad4: 0000 unimp +80004ad6: 0000 unimp +80004ad8: 0000 unimp +80004ada: 0000 unimp +80004adc: 0000 unimp +80004ade: 0000 unimp +80004ae0: 0000 unimp +80004ae2: 0000 unimp +80004ae4: 0000 unimp +80004ae6: 0000 unimp +80004ae8: 0000 unimp +80004aea: 0000 unimp +80004aec: 0000 unimp +80004aee: 0000 unimp +80004af0: 0000 unimp +80004af2: 0000 unimp +80004af4: 0000 unimp +80004af6: 0000 unimp +80004af8: 0000 unimp +80004afa: 0000 unimp +80004afc: 0000 unimp +80004afe: 0000 unimp +80004b00: 0000 unimp +80004b02: 0000 unimp +80004b04: 0000 unimp +80004b06: 0000 unimp +80004b08: 0000 unimp +80004b0a: 0000 unimp +80004b0c: 0000 unimp +80004b0e: 0000 unimp +80004b10: 0000 unimp +80004b12: 0000 unimp +80004b14: 0000 unimp +80004b16: 0000 unimp +80004b18: 0000 unimp +80004b1a: 0000 unimp +80004b1c: 0000 unimp +80004b1e: 0000 unimp +80004b20: 0000 unimp +80004b22: 0000 unimp +80004b24: 0000 unimp +80004b26: 0000 unimp +80004b28: 0000 unimp +80004b2a: 0000 unimp +80004b2c: 0000 unimp +80004b2e: 0000 unimp +80004b30: 0000 unimp +80004b32: 0000 unimp +80004b34: 0000 unimp +80004b36: 0000 unimp +80004b38: 0000 unimp +80004b3a: 0000 unimp +80004b3c: 0000 unimp +80004b3e: 0000 unimp +80004b40: 0000 unimp +80004b42: 0000 unimp +80004b44: 0000 unimp +80004b46: 0000 unimp +80004b48: 0000 unimp +80004b4a: 0000 unimp +80004b4c: 0000 unimp +80004b4e: 0000 unimp +80004b50: 0000 unimp +80004b52: 0000 unimp +80004b54: 0000 unimp +80004b56: 0000 unimp +80004b58: 0000 unimp +80004b5a: 0000 unimp +80004b5c: 0000 unimp +80004b5e: 0000 unimp +80004b60: 0000 unimp +80004b62: 0000 unimp +80004b64: 0000 unimp +80004b66: 0000 unimp +80004b68: 0000 unimp +80004b6a: 0000 unimp +80004b6c: 0000 unimp +80004b6e: 0000 unimp +80004b70: 0000 unimp +80004b72: 0000 unimp +80004b74: 0000 unimp +80004b76: 0000 unimp +80004b78: 0000 unimp +80004b7a: 0000 unimp +80004b7c: 0000 unimp +80004b7e: 0000 unimp +80004b80: 0000 unimp +80004b82: 0000 unimp +80004b84: 0000 unimp +80004b86: 0000 unimp +80004b88: 0000 unimp +80004b8a: 0000 unimp +80004b8c: 0000 unimp +80004b8e: 0000 unimp +80004b90: 0000 unimp +80004b92: 0000 unimp +80004b94: 0000 unimp +80004b96: 0000 unimp +80004b98: 0000 unimp +80004b9a: 0000 unimp +80004b9c: 0000 unimp +80004b9e: 0000 unimp +80004ba0: 0000 unimp +80004ba2: 0000 unimp +80004ba4: 0000 unimp +80004ba6: 0000 unimp +80004ba8: 0000 unimp +80004baa: 0000 unimp +80004bac: 0000 unimp +80004bae: 0000 unimp +80004bb0: 0000 unimp +80004bb2: 0000 unimp +80004bb4: 0000 unimp +80004bb6: 0000 unimp +80004bb8: 0000 unimp +80004bba: 0000 unimp +80004bbc: 0000 unimp +80004bbe: 0000 unimp +80004bc0: 0000 unimp +80004bc2: 0000 unimp +80004bc4: 0000 unimp +80004bc6: 0000 unimp +80004bc8: 0000 unimp +80004bca: 0000 unimp +80004bcc: 0000 unimp +80004bce: 0000 unimp +80004bd0: 0000 unimp +80004bd2: 0000 unimp +80004bd4: 0000 unimp +80004bd6: 0000 unimp +80004bd8: 0000 unimp +80004bda: 0000 unimp +80004bdc: 0000 unimp +80004bde: 0000 unimp +80004be0: 0000 unimp +80004be2: 0000 unimp +80004be4: 0000 unimp +80004be6: 0000 unimp +80004be8: 0000 unimp +80004bea: 0000 unimp +80004bec: 0000 unimp +80004bee: 0000 unimp +80004bf0: 0000 unimp +80004bf2: 0000 unimp +80004bf4: 0000 unimp +80004bf6: 0000 unimp +80004bf8: 0000 unimp +80004bfa: 0000 unimp +80004bfc: 0000 unimp +80004bfe: 0000 unimp +80004c00: 0000 unimp +80004c02: 0000 unimp +80004c04: 0000 unimp +80004c06: 0000 unimp +80004c08: 0000 unimp +80004c0a: 0000 unimp +80004c0c: 0000 unimp +80004c0e: 0000 unimp +80004c10: 0000 unimp +80004c12: 0000 unimp +80004c14: 0000 unimp +80004c16: 0000 unimp +80004c18: 0000 unimp +80004c1a: 0000 unimp +80004c1c: 0000 unimp +80004c1e: 0000 unimp +80004c20: 0000 unimp +80004c22: 0000 unimp +80004c24: 0000 unimp +80004c26: 0000 unimp +80004c28: 0000 unimp +80004c2a: 0000 unimp +80004c2c: 0000 unimp +80004c2e: 0000 unimp +80004c30: 0000 unimp +80004c32: 0000 unimp +80004c34: 0000 unimp +80004c36: 0000 unimp +80004c38: 0000 unimp +80004c3a: 0000 unimp +80004c3c: 0000 unimp +80004c3e: 0000 unimp +80004c40: 0000 unimp +80004c42: 0000 unimp +80004c44: 0000 unimp +80004c46: 0000 unimp +80004c48: 0000 unimp +80004c4a: 0000 unimp +80004c4c: 0000 unimp +80004c4e: 0000 unimp +80004c50: 0000 unimp +80004c52: 0000 unimp +80004c54: 0000 unimp +80004c56: 0000 unimp +80004c58: 0000 unimp +80004c5a: 0000 unimp +80004c5c: 0000 unimp +80004c5e: 0000 unimp +80004c60: 0000 unimp +80004c62: 0000 unimp +80004c64: 0000 unimp +80004c66: 0000 unimp +80004c68: 0000 unimp +80004c6a: 0000 unimp +80004c6c: 0000 unimp +80004c6e: 0000 unimp +80004c70: 0000 unimp +80004c72: 0000 unimp +80004c74: 0000 unimp +80004c76: 0000 unimp +80004c78: 0000 unimp +80004c7a: 0000 unimp +80004c7c: 0000 unimp +80004c7e: 0000 unimp +80004c80: 0000 unimp +80004c82: 0000 unimp +80004c84: 0000 unimp +80004c86: 0000 unimp +80004c88: 0000 unimp +80004c8a: 0000 unimp +80004c8c: 0000 unimp +80004c8e: 0000 unimp +80004c90: 0000 unimp +80004c92: 0000 unimp +80004c94: 0000 unimp +80004c96: 0000 unimp +80004c98: 0000 unimp +80004c9a: 0000 unimp +80004c9c: 0000 unimp +80004c9e: 0000 unimp +80004ca0: 0000 unimp +80004ca2: 0000 unimp +80004ca4: 0000 unimp +80004ca6: 0000 unimp +80004ca8: 0000 unimp +80004caa: 0000 unimp +80004cac: 0000 unimp +80004cae: 0000 unimp +80004cb0: 0000 unimp +80004cb2: 0000 unimp +80004cb4: 0000 unimp +80004cb6: 0000 unimp +80004cb8: 0000 unimp +80004cba: 0000 unimp +80004cbc: 0000 unimp +80004cbe: 0000 unimp +80004cc0: 0000 unimp +80004cc2: 0000 unimp +80004cc4: 0000 unimp +80004cc6: 0000 unimp +80004cc8: 0000 unimp +80004cca: 0000 unimp +80004ccc: 0000 unimp +80004cce: 0000 unimp +80004cd0: 0000 unimp +80004cd2: 0000 unimp +80004cd4: 0000 unimp +80004cd6: 0000 unimp +80004cd8: 0000 unimp +80004cda: 0000 unimp +80004cdc: 0000 unimp +80004cde: 0000 unimp +80004ce0: 0000 unimp +80004ce2: 0000 unimp +80004ce4: 0000 unimp +80004ce6: 0000 unimp +80004ce8: 0000 unimp +80004cea: 0000 unimp +80004cec: 0000 unimp +80004cee: 0000 unimp +80004cf0: 0000 unimp +80004cf2: 0000 unimp +80004cf4: 0000 unimp +80004cf6: 0000 unimp +80004cf8: 0000 unimp +80004cfa: 0000 unimp +80004cfc: 0000 unimp +80004cfe: 0000 unimp +80004d00: 0000 unimp +80004d02: 0000 unimp +80004d04: 0000 unimp +80004d06: 0000 unimp +80004d08: 0000 unimp +80004d0a: 0000 unimp +80004d0c: 0000 unimp +80004d0e: 0000 unimp +80004d10: 0000 unimp +80004d12: 0000 unimp +80004d14: 0000 unimp +80004d16: 0000 unimp +80004d18: 0000 unimp +80004d1a: 0000 unimp +80004d1c: 0000 unimp +80004d1e: 0000 unimp +80004d20: 0000 unimp +80004d22: 0000 unimp +80004d24: 0000 unimp +80004d26: 0000 unimp +80004d28: 0000 unimp +80004d2a: 0000 unimp +80004d2c: 0000 unimp +80004d2e: 0000 unimp +80004d30: 0000 unimp +80004d32: 0000 unimp +80004d34: 0000 unimp +80004d36: 0000 unimp +80004d38: 0000 unimp +80004d3a: 0000 unimp +80004d3c: 0000 unimp +80004d3e: 0000 unimp +80004d40: 0000 unimp +80004d42: 0000 unimp +80004d44: 0000 unimp +80004d46: 0000 unimp +80004d48: 0000 unimp +80004d4a: 0000 unimp +80004d4c: 0000 unimp +80004d4e: 0000 unimp +80004d50: 0000 unimp +80004d52: 0000 unimp +80004d54: 0000 unimp +80004d56: 0000 unimp +80004d58: 0000 unimp +80004d5a: 0000 unimp +80004d5c: 0000 unimp +80004d5e: 0000 unimp +80004d60: 0000 unimp +80004d62: 0000 unimp +80004d64: 0000 unimp +80004d66: 0000 unimp +80004d68: 0000 unimp +80004d6a: 0000 unimp +80004d6c: 0000 unimp +80004d6e: 0000 unimp +80004d70: 0000 unimp +80004d72: 0000 unimp +80004d74: 0000 unimp +80004d76: 0000 unimp +80004d78: 0000 unimp +80004d7a: 0000 unimp +80004d7c: 0000 unimp +80004d7e: 0000 unimp +80004d80: 0000 unimp +80004d82: 0000 unimp +80004d84: 0000 unimp +80004d86: 0000 unimp +80004d88: 0000 unimp +80004d8a: 0000 unimp +80004d8c: 0000 unimp +80004d8e: 0000 unimp +80004d90: 0000 unimp +80004d92: 0000 unimp +80004d94: 0000 unimp +80004d96: 0000 unimp +80004d98: 0000 unimp +80004d9a: 0000 unimp +80004d9c: 0000 unimp +80004d9e: 0000 unimp +80004da0: 0000 unimp +80004da2: 0000 unimp +80004da4: 0000 unimp +80004da6: 0000 unimp +80004da8: 0000 unimp +80004daa: 0000 unimp +80004dac: 0000 unimp +80004dae: 0000 unimp +80004db0: 0000 unimp +80004db2: 0000 unimp +80004db4: 0000 unimp +80004db6: 0000 unimp +80004db8: 0000 unimp +80004dba: 0000 unimp +80004dbc: 0000 unimp +80004dbe: 0000 unimp +80004dc0: 0000 unimp +80004dc2: 0000 unimp +80004dc4: 0000 unimp +80004dc6: 0000 unimp +80004dc8: 0000 unimp +80004dca: 0000 unimp +80004dcc: 0000 unimp +80004dce: 0000 unimp +80004dd0: 0000 unimp +80004dd2: 0000 unimp +80004dd4: 0000 unimp +80004dd6: 0000 unimp +80004dd8: 0000 unimp +80004dda: 0000 unimp +80004ddc: 0000 unimp +80004dde: 0000 unimp +80004de0: 0000 unimp +80004de2: 0000 unimp +80004de4: 0000 unimp +80004de6: 0000 unimp +80004de8: 0000 unimp +80004dea: 0000 unimp +80004dec: 0000 unimp +80004dee: 0000 unimp +80004df0: 0000 unimp +80004df2: 0000 unimp +80004df4: 0000 unimp +80004df6: 0000 unimp +80004df8: 0000 unimp +80004dfa: 0000 unimp +80004dfc: 0000 unimp +80004dfe: 0000 unimp +80004e00: 0000 unimp +80004e02: 0000 unimp +80004e04: 0000 unimp +80004e06: 0000 unimp +80004e08: 0000 unimp +80004e0a: 0000 unimp +80004e0c: 0000 unimp +80004e0e: 0000 unimp +80004e10: 0000 unimp +80004e12: 0000 unimp +80004e14: 0000 unimp +80004e16: 0000 unimp +80004e18: 0000 unimp +80004e1a: 0000 unimp +80004e1c: 0000 unimp +80004e1e: 0000 unimp +80004e20: 0000 unimp +80004e22: 0000 unimp +80004e24: 0000 unimp +80004e26: 0000 unimp +80004e28: 0000 unimp +80004e2a: 0000 unimp +80004e2c: 0000 unimp +80004e2e: 0000 unimp +80004e30: 0000 unimp +80004e32: 0000 unimp +80004e34: 0000 unimp +80004e36: 0000 unimp +80004e38: 0000 unimp +80004e3a: 0000 unimp +80004e3c: 0000 unimp +80004e3e: 0000 unimp +80004e40: 0000 unimp +80004e42: 0000 unimp +80004e44: 0000 unimp +80004e46: 0000 unimp +80004e48: 0000 unimp +80004e4a: 0000 unimp +80004e4c: 0000 unimp +80004e4e: 0000 unimp +80004e50: 0000 unimp +80004e52: 0000 unimp +80004e54: 0000 unimp +80004e56: 0000 unimp +80004e58: 0000 unimp +80004e5a: 0000 unimp +80004e5c: 0000 unimp +80004e5e: 0000 unimp +80004e60: 0000 unimp +80004e62: 0000 unimp +80004e64: 0000 unimp +80004e66: 0000 unimp +80004e68: 0000 unimp +80004e6a: 0000 unimp +80004e6c: 0000 unimp +80004e6e: 0000 unimp +80004e70: 0000 unimp +80004e72: 0000 unimp +80004e74: 0000 unimp +80004e76: 0000 unimp +80004e78: 0000 unimp +80004e7a: 0000 unimp +80004e7c: 0000 unimp +80004e7e: 0000 unimp +80004e80: 0000 unimp +80004e82: 0000 unimp +80004e84: 0000 unimp +80004e86: 0000 unimp +80004e88: 0000 unimp +80004e8a: 0000 unimp +80004e8c: 0000 unimp +80004e8e: 0000 unimp +80004e90: 0000 unimp +80004e92: 0000 unimp +80004e94: 0000 unimp +80004e96: 0000 unimp +80004e98: 0000 unimp +80004e9a: 0000 unimp +80004e9c: 0000 unimp +80004e9e: 0000 unimp +80004ea0: 0000 unimp +80004ea2: 0000 unimp +80004ea4: 0000 unimp +80004ea6: 0000 unimp +80004ea8: 0000 unimp +80004eaa: 0000 unimp +80004eac: 0000 unimp +80004eae: 0000 unimp +80004eb0: 0000 unimp +80004eb2: 0000 unimp +80004eb4: 0000 unimp +80004eb6: 0000 unimp +80004eb8: 0000 unimp +80004eba: 0000 unimp +80004ebc: 0000 unimp +80004ebe: 0000 unimp +80004ec0: 0000 unimp +80004ec2: 0000 unimp +80004ec4: 0000 unimp +80004ec6: 0000 unimp +80004ec8: 0000 unimp +80004eca: 0000 unimp +80004ecc: 0000 unimp +80004ece: 0000 unimp +80004ed0: 0000 unimp +80004ed2: 0000 unimp +80004ed4: 0000 unimp +80004ed6: 0000 unimp +80004ed8: 0000 unimp +80004eda: 0000 unimp +80004edc: 0000 unimp +80004ede: 0000 unimp +80004ee0: 0000 unimp +80004ee2: 0000 unimp +80004ee4: 0000 unimp +80004ee6: 0000 unimp +80004ee8: 0000 unimp +80004eea: 0000 unimp +80004eec: 0000 unimp +80004eee: 0000 unimp +80004ef0: 0000 unimp +80004ef2: 0000 unimp +80004ef4: 0000 unimp +80004ef6: 0000 unimp +80004ef8: 0000 unimp +80004efa: 0000 unimp +80004efc: 0000 unimp +80004efe: 0000 unimp +80004f00: 0000 unimp +80004f02: 0000 unimp +80004f04: 0000 unimp +80004f06: 0000 unimp +80004f08: 0000 unimp +80004f0a: 0000 unimp +80004f0c: 0000 unimp +80004f0e: 0000 unimp +80004f10: 0000 unimp +80004f12: 0000 unimp +80004f14: 0000 unimp +80004f16: 0000 unimp +80004f18: 0000 unimp +80004f1a: 0000 unimp +80004f1c: 0000 unimp +80004f1e: 0000 unimp +80004f20: 0000 unimp +80004f22: 0000 unimp +80004f24: 0000 unimp +80004f26: 0000 unimp +80004f28: 0000 unimp +80004f2a: 0000 unimp +80004f2c: 0000 unimp +80004f2e: 0000 unimp +80004f30: 0000 unimp +80004f32: 0000 unimp +80004f34: 0000 unimp +80004f36: 0000 unimp +80004f38: 0000 unimp +80004f3a: 0000 unimp +80004f3c: 0000 unimp +80004f3e: 0000 unimp +80004f40: 0000 unimp +80004f42: 0000 unimp +80004f44: 0000 unimp +80004f46: 0000 unimp +80004f48: 0000 unimp +80004f4a: 0000 unimp +80004f4c: 0000 unimp +80004f4e: 0000 unimp +80004f50: 0000 unimp +80004f52: 0000 unimp +80004f54: 0000 unimp +80004f56: 0000 unimp +80004f58: 0000 unimp +80004f5a: 0000 unimp +80004f5c: 0000 unimp +80004f5e: 0000 unimp +80004f60: 0000 unimp +80004f62: 0000 unimp +80004f64: 0000 unimp +80004f66: 0000 unimp +80004f68: 0000 unimp +80004f6a: 0000 unimp +80004f6c: 0000 unimp +80004f6e: 0000 unimp +80004f70: 0000 unimp +80004f72: 0000 unimp +80004f74: 0000 unimp +80004f76: 0000 unimp +80004f78: 0000 unimp +80004f7a: 0000 unimp +80004f7c: 0000 unimp +80004f7e: 0000 unimp +80004f80: 0000 unimp +80004f82: 0000 unimp +80004f84: 0000 unimp +80004f86: 0000 unimp +80004f88: 0000 unimp +80004f8a: 0000 unimp +80004f8c: 0000 unimp +80004f8e: 0000 unimp +80004f90: 0000 unimp +80004f92: 0000 unimp +80004f94: 0000 unimp +80004f96: 0000 unimp +80004f98: 0000 unimp +80004f9a: 0000 unimp +80004f9c: 0000 unimp +80004f9e: 0000 unimp +80004fa0: 0000 unimp +80004fa2: 0000 unimp +80004fa4: 0000 unimp +80004fa6: 0000 unimp +80004fa8: 0000 unimp +80004faa: 0000 unimp +80004fac: 0000 unimp +80004fae: 0000 unimp +80004fb0: 0000 unimp +80004fb2: 0000 unimp +80004fb4: 0000 unimp +80004fb6: 0000 unimp +80004fb8: 0000 unimp +80004fba: 0000 unimp +80004fbc: 0000 unimp +80004fbe: 0000 unimp +80004fc0: 0000 unimp +80004fc2: 0000 unimp +80004fc4: 0000 unimp +80004fc6: 0000 unimp +80004fc8: 0000 unimp +80004fca: 0000 unimp +80004fcc: 0000 unimp +80004fce: 0000 unimp +80004fd0: 0000 unimp +80004fd2: 0000 unimp +80004fd4: 0000 unimp +80004fd6: 0000 unimp +80004fd8: 0000 unimp +80004fda: 0000 unimp +80004fdc: 0000 unimp +80004fde: 0000 unimp +80004fe0: 0000 unimp +80004fe2: 0000 unimp +80004fe4: 0000 unimp +80004fe6: 0000 unimp +80004fe8: 0000 unimp +80004fea: 0000 unimp +80004fec: 0000 unimp +80004fee: 0000 unimp +80004ff0: 0000 unimp +80004ff2: 0000 unimp +80004ff4: 0000 unimp +80004ff6: 0000 unimp +80004ff8: 0000 unimp +80004ffa: 0000 unimp +80004ffc: 0000 unimp +80004ffe: 00158593 addi a1,a1,1 # 80000001 <_end+0xffff6c09> +80005002: 29b00e93 li t4,667 +80005006: 00200193 li gp,2 +8000500a: 23d59f63 bne a1,t4,80005248 +8000500e: 00001137 lui sp,0x1 +80005012: 23410113 addi sp,sp,564 # 1234 <_start-0x7fffedcc> + +80005016 : +80005016: 1fe8 addi a0,sp,1020 +80005018: 00001eb7 lui t4,0x1 +8000501c: 630e8e93 addi t4,t4,1584 # 1630 <_start-0x7fffe9d0> +80005020: 00300193 li gp,3 +80005024: 23d51263 bne a0,t4,80005248 + +80005028 : +80005028: 617d addi sp,sp,496 +8000502a: 0001 nop +8000502c: 00001eb7 lui t4,0x1 +80005030: 424e8e93 addi t4,t4,1060 # 1424 <_start-0x7fffebdc> +80005034: 00400193 li gp,4 +80005038: 21d11863 bne sp,t4,80005248 + +8000503c : +8000503c: 7101 addi sp,sp,-512 +8000503e: 0001 nop +80005040: 00001eb7 lui t4,0x1 +80005044: 224e8e93 addi t4,t4,548 # 1224 <_start-0x7fffeddc> +80005048: 00500193 li gp,5 +8000504c: 1fd11e63 bne sp,t4,80005248 +80005050: ffffe597 auipc a1,0xffffe +80005054: fc058593 addi a1,a1,-64 # 80003010 + +80005058 : +80005058: 41c8 lw a0,4(a1) +8000505a: 0505 addi a0,a0,1 +8000505c: c1c8 sw a0,4(a1) +8000505e: 41d0 lw a2,4(a1) +80005060: fedcceb7 lui t4,0xfedcc +80005064: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc26a1> +80005068: 00600193 li gp,6 +8000506c: 1dd61e63 bne a2,t4,80005248 + +80005070 : +80005070: 00106513 ori a0,zero,1 +80005074: 1541 addi a0,a0,-16 +80005076: 0001 nop +80005078: ff100e93 li t4,-15 +8000507c: 00800193 li gp,8 +80005080: 1dd51463 bne a0,t4,80005248 + +80005084 : +80005084: 00106793 ori a5,zero,1 +80005088: 57c1 li a5,-16 +8000508a: 0001 nop +8000508c: ff000e93 li t4,-16 +80005090: 00900193 li gp,9 +80005094: 1bd79a63 bne a5,t4,80005248 + +80005098 : +80005098: 7405 lui s0,0xfffe1 +8000509a: 8431 srai s0,s0,0xc +8000509c: fe100e93 li t4,-31 +800050a0: 00b00193 li gp,11 +800050a4: 1bd41263 bne s0,t4,80005248 + +800050a8 : +800050a8: 7405 lui s0,0xfffe1 +800050aa: 8031 srli s0,s0,0xc +800050ac: 00100eb7 lui t4,0x100 +800050b0: fe1e8e93 addi t4,t4,-31 # fffe1 <_start-0x7ff0001f> +800050b4: 00c00193 li gp,12 +800050b8: 19d41863 bne s0,t4,80005248 + +800050bc : +800050bc: 5479 li s0,-2 +800050be: 983d andi s0,s0,-17 +800050c0: fee00e93 li t4,-18 +800050c4: 00e00193 li gp,14 +800050c8: 19d41063 bne s0,t4,80005248 + +800050cc : +800050cc: 44d1 li s1,20 +800050ce: 4519 li a0,6 +800050d0: 8c89 sub s1,s1,a0 +800050d2: 0001 nop +800050d4: 00e00e93 li t4,14 +800050d8: 00f00193 li gp,15 +800050dc: 17d49663 bne s1,t4,80005248 + +800050e0 : +800050e0: 44d1 li s1,20 +800050e2: 4519 li a0,6 +800050e4: 8ca9 xor s1,s1,a0 +800050e6: 0001 nop +800050e8: 01200e93 li t4,18 +800050ec: 01000193 li gp,16 +800050f0: 15d49c63 bne s1,t4,80005248 + +800050f4 : +800050f4: 44d1 li s1,20 +800050f6: 4519 li a0,6 +800050f8: 8cc9 or s1,s1,a0 +800050fa: 0001 nop +800050fc: 01600e93 li t4,22 +80005100: 01100193 li gp,17 +80005104: 15d49263 bne s1,t4,80005248 + +80005108 : +80005108: 44d1 li s1,20 +8000510a: 4519 li a0,6 +8000510c: 8ce9 and s1,s1,a0 +8000510e: 0001 nop +80005110: 00400e93 li t4,4 +80005114: 01200193 li gp,18 +80005118: 13d49863 bne s1,t4,80005248 + +8000511c : +8000511c: 00001437 lui s0,0x1 +80005120: 23440413 addi s0,s0,564 # 1234 <_start-0x7fffedcc> +80005124: 0412 slli s0,s0,0x4 +80005126: 0001 nop +80005128: 00012eb7 lui t4,0x12 +8000512c: 340e8e93 addi t4,t4,832 # 12340 <_start-0x7ffedcc0> +80005130: 01500193 li gp,21 +80005134: 11d41a63 bne s0,t4,80005248 + +80005138 : +80005138: 4081 li ra,0 +8000513a: a011 j 8000513e +8000513c: a011 j 80005140 +8000513e: a011 j 80005142 +80005140: a221 j 80005248 +80005142: 0001 nop +80005144: 00000e93 li t4,0 +80005148: 01e00193 li gp,30 +8000514c: 0fd09e63 bne ra,t4,80005248 + +80005150 : +80005150: 4501 li a0,0 +80005152: c111 beqz a0,80005156 +80005154: a011 j 80005158 +80005156: a011 j 8000515a +80005158: a8c5 j 80005248 +8000515a: 0001 nop +8000515c: 00000e93 li t4,0 +80005160: 01f00193 li gp,31 +80005164: 0fd01263 bne zero,t4,80005248 + +80005168 : +80005168: 4505 li a0,1 +8000516a: e111 bnez a0,8000516e +8000516c: a011 j 80005170 +8000516e: a011 j 80005172 +80005170: a8e1 j 80005248 +80005172: 0001 nop +80005174: 00000e93 li t4,0 +80005178: 02000193 li gp,32 +8000517c: 0dd01663 bne zero,t4,80005248 + +80005180 : +80005180: 4505 li a0,1 +80005182: c111 beqz a0,80005186 +80005184: a011 j 80005188 +80005186: a0c9 j 80005248 +80005188: 00000e93 li t4,0 +8000518c: 02100193 li gp,33 +80005190: 0bd01c63 bne zero,t4,80005248 + +80005194 : +80005194: 4501 li a0,0 +80005196: e111 bnez a0,8000519a +80005198: a011 j 8000519c +8000519a: a07d j 80005248 +8000519c: 00000e93 li t4,0 +800051a0: 02200193 li gp,34 +800051a4: 0bd01263 bne zero,t4,80005248 + +800051a8 : +800051a8: 00000297 auipc t0,0x0 +800051ac: 00e28293 addi t0,t0,14 # 800051b6 +800051b0: 4081 li ra,0 +800051b2: 8282 jr t0 +800051b4: a011 j 800051b8 +800051b6: a011 j 800051ba +800051b8: a841 j 80005248 +800051ba: 0001 nop +800051bc: 00000e93 li t4,0 +800051c0: 02300193 li gp,35 +800051c4: 09d09263 bne ra,t4,80005248 + +800051c8 : +800051c8: 00000297 auipc t0,0x0 +800051cc: 00e28293 addi t0,t0,14 # 800051d6 +800051d0: 4081 li ra,0 +800051d2: 9282 jalr t0 +800051d4: a011 j 800051d8 +800051d6: a011 j 800051da +800051d8: a885 j 80005248 +800051da: 405080b3 sub ra,ra,t0 +800051de: 0001 nop +800051e0: ffe00e93 li t4,-2 +800051e4: 02400193 li gp,36 +800051e8: 07d09063 bne ra,t4,80005248 + +800051ec : +800051ec: 00000297 auipc t0,0x0 +800051f0: 00e28293 addi t0,t0,14 # 800051fa +800051f4: 4081 li ra,0 +800051f6: 2011 jal 800051fa +800051f8: a011 j 800051fc +800051fa: a011 j 800051fe +800051fc: a0b1 j 80005248 +800051fe: 405080b3 sub ra,ra,t0 +80005202: 0001 nop +80005204: ffe00e93 li t4,-2 +80005208: 02500193 li gp,37 +8000520c: 03d09e63 bne ra,t4,80005248 +80005210: ffffe117 auipc sp,0xffffe +80005214: e0010113 addi sp,sp,-512 # 80003010 + +80005218 : +80005218: 4532 lw a0,12(sp) +8000521a: 0505 addi a0,a0,1 +8000521c: c62a sw a0,12(sp) +8000521e: 4632 lw a2,12(sp) +80005220: fedcceb7 lui t4,0xfedcc +80005224: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc26a1> +80005228: 02800193 li gp,40 +8000522c: 01d61e63 bne a2,t4,80005248 + +80005230 : +80005230: 12300513 li a0,291 +80005234: 82aa mv t0,a0 +80005236: 92aa add t0,t0,a0 +80005238: 24600e93 li t4,582 +8000523c: 02a00193 li gp,42 +80005240: 01d29463 bne t0,t4,80005248 +80005244: 00301a63 bne zero,gp,80005258 + +80005248 : +80005248: 00119513 slli a0,gp,0x1 +8000524c: 00050063 beqz a0,8000524c +80005250: 00156513 ori a0,a0,1 +80005254: 00000073 ecall + +80005258 : +80005258: 00100513 li a0,1 +8000525c: 00000073 ecall +80005260: c0001073 unimp +80005264: 0000 unimp +80005266: 0000 unimp +80005268: 0000 unimp +8000526a: 0000 unimp +8000526c: 0000 unimp +8000526e: 0000 unimp +80005270: 0000 unimp +80005272: 0000 unimp +80005274: 0000 unimp +80005276: 0000 unimp +80005278: 0000 unimp +8000527a: 0000 unimp +8000527c: 0000 unimp +8000527e: 0000 unimp +80005280: 0000 unimp +80005282: 0000 unimp +80005284: 0000 unimp +80005286: 0000 unimp +80005288: 0000 unimp +8000528a: 0000 unimp +8000528c: 0000 unimp +8000528e: 0000 unimp +80005290: 0000 unimp +80005292: 0000 unimp +80005294: 0000 unimp +80005296: 0000 unimp +80005298: 0000 unimp +8000529a: 0000 unimp +8000529c: 0000 unimp +8000529e: 0000 unimp +800052a0: 0000 unimp +800052a2: 0000 unimp +800052a4: 0000 unimp +800052a6: 0000 unimp +800052a8: 0000 unimp +800052aa: 0000 unimp +800052ac: 0000 unimp +800052ae: 0000 unimp +800052b0: 0000 unimp +800052b2: 0000 unimp +800052b4: 0000 unimp +800052b6: 0000 unimp +800052b8: 0000 unimp +800052ba: 0000 unimp +800052bc: 0000 unimp +800052be: 0000 unimp +800052c0: 0000 unimp +800052c2: 0000 unimp +800052c4: 0000 unimp +800052c6: 0000 unimp +800052c8: 0000 unimp +800052ca: 0000 unimp +800052cc: 0000 unimp +800052ce: 0000 unimp +800052d0: 0000 unimp +800052d2: 0000 unimp +800052d4: 0000 unimp +800052d6: 0000 unimp +800052d8: 0000 unimp +800052da: 0000 unimp +800052dc: 0000 unimp +800052de: 0000 unimp +800052e0: 0000 unimp +800052e2: 0000 unimp +800052e4: 0000 unimp +800052e6: 0000 unimp +800052e8: 0000 unimp +800052ea: 0000 unimp +800052ec: 0000 unimp +800052ee: 0000 unimp +800052f0: 0000 unimp +800052f2: 0000 unimp +800052f4: 0000 unimp +800052f6: 0000 unimp +800052f8: 0000 unimp +800052fa: 0000 unimp +800052fc: 0000 unimp +800052fe: 0000 unimp +80005300: 0000 unimp +80005302: 0000 unimp +80005304: 0000 unimp +80005306: 0000 unimp +80005308: 0000 unimp +8000530a: 0000 unimp +8000530c: 0000 unimp +8000530e: 0000 unimp +80005310: 0000 unimp +80005312: 0000 unimp +80005314: 0000 unimp +80005316: 0000 unimp +80005318: 0000 unimp +8000531a: 0000 unimp +8000531c: 0000 unimp +8000531e: 0000 unimp +80005320: 0000 unimp +80005322: 0000 unimp +80005324: 0000 unimp +80005326: 0000 unimp +80005328: 0000 unimp +8000532a: 0000 unimp +8000532c: 0000 unimp +8000532e: 0000 unimp +80005330: 0000 unimp +80005332: 0000 unimp +80005334: 0000 unimp +80005336: 0000 unimp +80005338: 0000 unimp +8000533a: 0000 unimp +8000533c: 0000 unimp +8000533e: 0000 unimp +80005340: 0000 unimp +80005342: 0000 unimp +80005344: 0000 unimp +80005346: 0000 unimp +80005348: 0000 unimp +8000534a: 0000 unimp +8000534c: 0000 unimp +8000534e: 0000 unimp +80005350: 0000 unimp +80005352: 0000 unimp +80005354: 0000 unimp +80005356: 0000 unimp +80005358: 0000 unimp +8000535a: 0000 unimp +8000535c: 0000 unimp +8000535e: 0000 unimp +80005360: 0000 unimp +80005362: 0000 unimp +80005364: 0000 unimp +80005366: 0000 unimp +80005368: 0000 unimp +8000536a: 0000 unimp +8000536c: 0000 unimp +8000536e: 0000 unimp +80005370: 0000 unimp +80005372: 0000 unimp +80005374: 0000 unimp +80005376: 0000 unimp +80005378: 0000 unimp +8000537a: 0000 unimp +8000537c: 0000 unimp +8000537e: 0000 unimp +80005380: 0000 unimp +80005382: 0000 unimp +80005384: 0000 unimp +80005386: 0000 unimp +80005388: 0000 unimp +8000538a: 0000 unimp +8000538c: 0000 unimp +8000538e: 0000 unimp +80005390: 0000 unimp +80005392: 0000 unimp +80005394: 0000 unimp +80005396: 0000 unimp +80005398: 0000 unimp +8000539a: 0000 unimp +8000539c: 0000 unimp +8000539e: 0000 unimp +800053a0: 0000 unimp +800053a2: 0000 unimp +800053a4: 0000 unimp +800053a6: 0000 unimp +800053a8: 0000 unimp +800053aa: 0000 unimp +800053ac: 0000 unimp +800053ae: 0000 unimp +800053b0: 0000 unimp +800053b2: 0000 unimp +800053b4: 0000 unimp +800053b6: 0000 unimp +800053b8: 0000 unimp +800053ba: 0000 unimp +800053bc: 0000 unimp +800053be: 0000 unimp +800053c0: 0000 unimp +800053c2: 0000 unimp +800053c4: 0000 unimp +800053c6: 0000 unimp +800053c8: 0000 unimp +800053ca: 0000 unimp +800053cc: 0000 unimp +800053ce: 0000 unimp +800053d0: 0000 unimp +800053d2: 0000 unimp +800053d4: 0000 unimp +800053d6: 0000 unimp +800053d8: 0000 unimp +800053da: 0000 unimp +800053dc: 0000 unimp +800053de: 0000 unimp +800053e0: 0000 unimp +800053e2: 0000 unimp +800053e4: 0000 unimp +800053e6: 0000 unimp +800053e8: 0000 unimp +800053ea: 0000 unimp +800053ec: 0000 unimp +800053ee: 0000 unimp +800053f0: 0000 unimp +800053f2: 0000 unimp +800053f4: 0000 unimp +800053f6: 0000 unimp +800053f8: 0000 unimp +800053fa: 0000 unimp +800053fc: 0000 unimp +800053fe: 0000 unimp +80005400: 0000 unimp +80005402: 0000 unimp +80005404: 0000 unimp +80005406: 0000 unimp +80005408: 0000 unimp +8000540a: 0000 unimp +8000540c: 0000 unimp +8000540e: 0000 unimp +80005410: 0000 unimp +80005412: 0000 unimp +80005414: 0000 unimp +80005416: 0000 unimp +80005418: 0000 unimp +8000541a: 0000 unimp +8000541c: 0000 unimp +8000541e: 0000 unimp +80005420: 0000 unimp +80005422: 0000 unimp +80005424: 0000 unimp +80005426: 0000 unimp +80005428: 0000 unimp +8000542a: 0000 unimp +8000542c: 0000 unimp +8000542e: 0000 unimp +80005430: 0000 unimp +80005432: 0000 unimp +80005434: 0000 unimp +80005436: 0000 unimp +80005438: 0000 unimp +8000543a: 0000 unimp +8000543c: 0000 unimp +8000543e: 0000 unimp +80005440: 0000 unimp +80005442: 0000 unimp +80005444: 0000 unimp +80005446: 0000 unimp +80005448: 0000 unimp +8000544a: 0000 unimp +8000544c: 0000 unimp +8000544e: 0000 unimp +80005450: 0000 unimp +80005452: 0000 unimp +80005454: 0000 unimp +80005456: 0000 unimp +80005458: 0000 unimp +8000545a: 0000 unimp +8000545c: 0000 unimp +8000545e: 0000 unimp +80005460: 0000 unimp +80005462: 0000 unimp +80005464: 0000 unimp +80005466: 0000 unimp +80005468: 0000 unimp +8000546a: 0000 unimp +8000546c: 0000 unimp +8000546e: 0000 unimp +80005470: 0000 unimp +80005472: 0000 unimp +80005474: 0000 unimp +80005476: 0000 unimp +80005478: 0000 unimp +8000547a: 0000 unimp +8000547c: 0000 unimp +8000547e: 0000 unimp +80005480: 0000 unimp +80005482: 0000 unimp +80005484: 0000 unimp +80005486: 0000 unimp +80005488: 0000 unimp +8000548a: 0000 unimp +8000548c: 0000 unimp +8000548e: 0000 unimp +80005490: 0000 unimp +80005492: 0000 unimp +80005494: 0000 unimp +80005496: 0000 unimp +80005498: 0000 unimp +8000549a: 0000 unimp +8000549c: 0000 unimp +8000549e: 0000 unimp +800054a0: 0000 unimp +800054a2: 0000 unimp +800054a4: 0000 unimp +800054a6: 0000 unimp +800054a8: 0000 unimp +800054aa: 0000 unimp +800054ac: 0000 unimp +800054ae: 0000 unimp +800054b0: 0000 unimp +800054b2: 0000 unimp +800054b4: 0000 unimp +800054b6: 0000 unimp +800054b8: 0000 unimp +800054ba: 0000 unimp +800054bc: 0000 unimp +800054be: 0000 unimp +800054c0: 0000 unimp +800054c2: 0000 unimp +800054c4: 0000 unimp +800054c6: 0000 unimp +800054c8: 0000 unimp +800054ca: 0000 unimp +800054cc: 0000 unimp +800054ce: 0000 unimp +800054d0: 0000 unimp +800054d2: 0000 unimp +800054d4: 0000 unimp +800054d6: 0000 unimp +800054d8: 0000 unimp +800054da: 0000 unimp +800054dc: 0000 unimp +800054de: 0000 unimp +800054e0: 0000 unimp +800054e2: 0000 unimp +800054e4: 0000 unimp +800054e6: 0000 unimp +800054e8: 0000 unimp +800054ea: 0000 unimp +800054ec: 0000 unimp +800054ee: 0000 unimp +800054f0: 0000 unimp +800054f2: 0000 unimp +800054f4: 0000 unimp +800054f6: 0000 unimp +800054f8: 0000 unimp +800054fa: 0000 unimp +800054fc: 0000 unimp +800054fe: 0000 unimp +80005500: 0000 unimp +80005502: 0000 unimp +80005504: 0000 unimp +80005506: 0000 unimp +80005508: 0000 unimp +8000550a: 0000 unimp +8000550c: 0000 unimp +8000550e: 0000 unimp +80005510: 0000 unimp +80005512: 0000 unimp +80005514: 0000 unimp +80005516: 0000 unimp +80005518: 0000 unimp +8000551a: 0000 unimp +8000551c: 0000 unimp +8000551e: 0000 unimp +80005520: 0000 unimp +80005522: 0000 unimp +80005524: 0000 unimp +80005526: 0000 unimp +80005528: 0000 unimp +8000552a: 0000 unimp +8000552c: 0000 unimp +8000552e: 0000 unimp +80005530: 0000 unimp +80005532: 0000 unimp +80005534: 0000 unimp +80005536: 0000 unimp +80005538: 0000 unimp +8000553a: 0000 unimp +8000553c: 0000 unimp +8000553e: 0000 unimp +80005540: 0000 unimp +80005542: 0000 unimp +80005544: 0000 unimp +80005546: 0000 unimp +80005548: 0000 unimp +8000554a: 0000 unimp +8000554c: 0000 unimp +8000554e: 0000 unimp +80005550: 0000 unimp +80005552: 0000 unimp +80005554: 0000 unimp +80005556: 0000 unimp +80005558: 0000 unimp +8000555a: 0000 unimp +8000555c: 0000 unimp +8000555e: 0000 unimp +80005560: 0000 unimp +80005562: 0000 unimp +80005564: 0000 unimp +80005566: 0000 unimp +80005568: 0000 unimp +8000556a: 0000 unimp +8000556c: 0000 unimp +8000556e: 0000 unimp +80005570: 0000 unimp +80005572: 0000 unimp +80005574: 0000 unimp +80005576: 0000 unimp +80005578: 0000 unimp +8000557a: 0000 unimp +8000557c: 0000 unimp +8000557e: 0000 unimp +80005580: 0000 unimp +80005582: 0000 unimp +80005584: 0000 unimp +80005586: 0000 unimp +80005588: 0000 unimp +8000558a: 0000 unimp +8000558c: 0000 unimp +8000558e: 0000 unimp +80005590: 0000 unimp +80005592: 0000 unimp +80005594: 0000 unimp +80005596: 0000 unimp +80005598: 0000 unimp +8000559a: 0000 unimp +8000559c: 0000 unimp +8000559e: 0000 unimp +800055a0: 0000 unimp +800055a2: 0000 unimp +800055a4: 0000 unimp +800055a6: 0000 unimp +800055a8: 0000 unimp +800055aa: 0000 unimp +800055ac: 0000 unimp +800055ae: 0000 unimp +800055b0: 0000 unimp +800055b2: 0000 unimp +800055b4: 0000 unimp +800055b6: 0000 unimp +800055b8: 0000 unimp +800055ba: 0000 unimp +800055bc: 0000 unimp +800055be: 0000 unimp +800055c0: 0000 unimp +800055c2: 0000 unimp +800055c4: 0000 unimp +800055c6: 0000 unimp +800055c8: 0000 unimp +800055ca: 0000 unimp +800055cc: 0000 unimp +800055ce: 0000 unimp +800055d0: 0000 unimp +800055d2: 0000 unimp +800055d4: 0000 unimp +800055d6: 0000 unimp +800055d8: 0000 unimp +800055da: 0000 unimp +800055dc: 0000 unimp +800055de: 0000 unimp +800055e0: 0000 unimp +800055e2: 0000 unimp +800055e4: 0000 unimp +800055e6: 0000 unimp +800055e8: 0000 unimp +800055ea: 0000 unimp +800055ec: 0000 unimp +800055ee: 0000 unimp +800055f0: 0000 unimp +800055f2: 0000 unimp +800055f4: 0000 unimp +800055f6: 0000 unimp +800055f8: 0000 unimp +800055fa: 0000 unimp +800055fc: 0000 unimp +800055fe: 0000 unimp +80005600: 0000 unimp +80005602: 0000 unimp +80005604: 0000 unimp +80005606: 0000 unimp +80005608: 0000 unimp +8000560a: 0000 unimp +8000560c: 0000 unimp +8000560e: 0000 unimp +80005610: 0000 unimp +80005612: 0000 unimp +80005614: 0000 unimp +80005616: 0000 unimp +80005618: 0000 unimp +8000561a: 0000 unimp +8000561c: 0000 unimp +8000561e: 0000 unimp +80005620: 0000 unimp +80005622: 0000 unimp +80005624: 0000 unimp +80005626: 0000 unimp +80005628: 0000 unimp +8000562a: 0000 unimp +8000562c: 0000 unimp +8000562e: 0000 unimp +80005630: 0000 unimp +80005632: 0000 unimp +80005634: 0000 unimp +80005636: 0000 unimp +80005638: 0000 unimp +8000563a: 0000 unimp +8000563c: 0000 unimp +8000563e: 0000 unimp +80005640: 0000 unimp +80005642: 0000 unimp +80005644: 0000 unimp +80005646: 0000 unimp +80005648: 0000 unimp +8000564a: 0000 unimp +8000564c: 0000 unimp +8000564e: 0000 unimp +80005650: 0000 unimp +80005652: 0000 unimp +80005654: 0000 unimp +80005656: 0000 unimp +80005658: 0000 unimp +8000565a: 0000 unimp +8000565c: 0000 unimp +8000565e: 0000 unimp +80005660: 0000 unimp +80005662: 0000 unimp +80005664: 0000 unimp +80005666: 0000 unimp +80005668: 0000 unimp +8000566a: 0000 unimp +8000566c: 0000 unimp +8000566e: 0000 unimp +80005670: 0000 unimp +80005672: 0000 unimp +80005674: 0000 unimp +80005676: 0000 unimp +80005678: 0000 unimp +8000567a: 0000 unimp +8000567c: 0000 unimp +8000567e: 0000 unimp +80005680: 0000 unimp +80005682: 0000 unimp +80005684: 0000 unimp +80005686: 0000 unimp +80005688: 0000 unimp +8000568a: 0000 unimp +8000568c: 0000 unimp +8000568e: 0000 unimp +80005690: 0000 unimp +80005692: 0000 unimp +80005694: 0000 unimp +80005696: 0000 unimp +80005698: 0000 unimp +8000569a: 0000 unimp +8000569c: 0000 unimp +8000569e: 0000 unimp +800056a0: 0000 unimp +800056a2: 0000 unimp +800056a4: 0000 unimp +800056a6: 0000 unimp +800056a8: 0000 unimp +800056aa: 0000 unimp +800056ac: 0000 unimp +800056ae: 0000 unimp +800056b0: 0000 unimp +800056b2: 0000 unimp +800056b4: 0000 unimp +800056b6: 0000 unimp +800056b8: 0000 unimp +800056ba: 0000 unimp +800056bc: 0000 unimp +800056be: 0000 unimp +800056c0: 0000 unimp +800056c2: 0000 unimp +800056c4: 0000 unimp +800056c6: 0000 unimp +800056c8: 0000 unimp +800056ca: 0000 unimp +800056cc: 0000 unimp +800056ce: 0000 unimp +800056d0: 0000 unimp +800056d2: 0000 unimp +800056d4: 0000 unimp +800056d6: 0000 unimp +800056d8: 0000 unimp +800056da: 0000 unimp +800056dc: 0000 unimp +800056de: 0000 unimp +800056e0: 0000 unimp +800056e2: 0000 unimp +800056e4: 0000 unimp +800056e6: 0000 unimp +800056e8: 0000 unimp +800056ea: 0000 unimp +800056ec: 0000 unimp +800056ee: 0000 unimp +800056f0: 0000 unimp +800056f2: 0000 unimp +800056f4: 0000 unimp +800056f6: 0000 unimp +800056f8: 0000 unimp +800056fa: 0000 unimp +800056fc: 0000 unimp +800056fe: 0000 unimp +80005700: 0000 unimp +80005702: 0000 unimp +80005704: 0000 unimp +80005706: 0000 unimp +80005708: 0000 unimp +8000570a: 0000 unimp +8000570c: 0000 unimp +8000570e: 0000 unimp +80005710: 0000 unimp +80005712: 0000 unimp +80005714: 0000 unimp +80005716: 0000 unimp +80005718: 0000 unimp +8000571a: 0000 unimp +8000571c: 0000 unimp +8000571e: 0000 unimp +80005720: 0000 unimp +80005722: 0000 unimp +80005724: 0000 unimp +80005726: 0000 unimp +80005728: 0000 unimp +8000572a: 0000 unimp +8000572c: 0000 unimp +8000572e: 0000 unimp +80005730: 0000 unimp +80005732: 0000 unimp +80005734: 0000 unimp +80005736: 0000 unimp +80005738: 0000 unimp +8000573a: 0000 unimp +8000573c: 0000 unimp +8000573e: 0000 unimp +80005740: 0000 unimp +80005742: 0000 unimp +80005744: 0000 unimp +80005746: 0000 unimp +80005748: 0000 unimp +8000574a: 0000 unimp +8000574c: 0000 unimp +8000574e: 0000 unimp +80005750: 0000 unimp +80005752: 0000 unimp +80005754: 0000 unimp +80005756: 0000 unimp +80005758: 0000 unimp +8000575a: 0000 unimp +8000575c: 0000 unimp +8000575e: 0000 unimp +80005760: 0000 unimp +80005762: 0000 unimp +80005764: 0000 unimp +80005766: 0000 unimp +80005768: 0000 unimp +8000576a: 0000 unimp +8000576c: 0000 unimp +8000576e: 0000 unimp +80005770: 0000 unimp +80005772: 0000 unimp +80005774: 0000 unimp +80005776: 0000 unimp +80005778: 0000 unimp +8000577a: 0000 unimp +8000577c: 0000 unimp +8000577e: 0000 unimp +80005780: 0000 unimp +80005782: 0000 unimp +80005784: 0000 unimp +80005786: 0000 unimp +80005788: 0000 unimp +8000578a: 0000 unimp +8000578c: 0000 unimp +8000578e: 0000 unimp +80005790: 0000 unimp +80005792: 0000 unimp +80005794: 0000 unimp +80005796: 0000 unimp +80005798: 0000 unimp +8000579a: 0000 unimp +8000579c: 0000 unimp +8000579e: 0000 unimp +800057a0: 0000 unimp +800057a2: 0000 unimp +800057a4: 0000 unimp +800057a6: 0000 unimp +800057a8: 0000 unimp +800057aa: 0000 unimp +800057ac: 0000 unimp +800057ae: 0000 unimp +800057b0: 0000 unimp +800057b2: 0000 unimp +800057b4: 0000 unimp +800057b6: 0000 unimp +800057b8: 0000 unimp +800057ba: 0000 unimp +800057bc: 0000 unimp +800057be: 0000 unimp +800057c0: 0000 unimp +800057c2: 0000 unimp +800057c4: 0000 unimp +800057c6: 0000 unimp +800057c8: 0000 unimp +800057ca: 0000 unimp +800057cc: 0000 unimp +800057ce: 0000 unimp +800057d0: 0000 unimp +800057d2: 0000 unimp +800057d4: 0000 unimp +800057d6: 0000 unimp +800057d8: 0000 unimp +800057da: 0000 unimp +800057dc: 0000 unimp +800057de: 0000 unimp +800057e0: 0000 unimp +800057e2: 0000 unimp +800057e4: 0000 unimp +800057e6: 0000 unimp +800057e8: 0000 unimp +800057ea: 0000 unimp +800057ec: 0000 unimp +800057ee: 0000 unimp +800057f0: 0000 unimp +800057f2: 0000 unimp +800057f4: 0000 unimp +800057f6: 0000 unimp +800057f8: 0000 unimp +800057fa: 0000 unimp +800057fc: 0000 unimp +800057fe: 0000 unimp +80005800: 0000 unimp +80005802: 0000 unimp +80005804: 0000 unimp +80005806: 0000 unimp +80005808: 0000 unimp +8000580a: 0000 unimp +8000580c: 0000 unimp +8000580e: 0000 unimp +80005810: 0000 unimp +80005812: 0000 unimp +80005814: 0000 unimp +80005816: 0000 unimp +80005818: 0000 unimp +8000581a: 0000 unimp +8000581c: 0000 unimp +8000581e: 0000 unimp +80005820: 0000 unimp +80005822: 0000 unimp +80005824: 0000 unimp +80005826: 0000 unimp +80005828: 0000 unimp +8000582a: 0000 unimp +8000582c: 0000 unimp +8000582e: 0000 unimp +80005830: 0000 unimp +80005832: 0000 unimp +80005834: 0000 unimp +80005836: 0000 unimp +80005838: 0000 unimp +8000583a: 0000 unimp +8000583c: 0000 unimp +8000583e: 0000 unimp +80005840: 0000 unimp +80005842: 0000 unimp +80005844: 0000 unimp +80005846: 0000 unimp +80005848: 0000 unimp +8000584a: 0000 unimp +8000584c: 0000 unimp +8000584e: 0000 unimp +80005850: 0000 unimp +80005852: 0000 unimp +80005854: 0000 unimp +80005856: 0000 unimp +80005858: 0000 unimp +8000585a: 0000 unimp +8000585c: 0000 unimp +8000585e: 0000 unimp +80005860: 0000 unimp +80005862: 0000 unimp +80005864: 0000 unimp +80005866: 0000 unimp +80005868: 0000 unimp +8000586a: 0000 unimp +8000586c: 0000 unimp +8000586e: 0000 unimp +80005870: 0000 unimp +80005872: 0000 unimp +80005874: 0000 unimp +80005876: 0000 unimp +80005878: 0000 unimp +8000587a: 0000 unimp +8000587c: 0000 unimp +8000587e: 0000 unimp +80005880: 0000 unimp +80005882: 0000 unimp +80005884: 0000 unimp +80005886: 0000 unimp +80005888: 0000 unimp +8000588a: 0000 unimp +8000588c: 0000 unimp +8000588e: 0000 unimp +80005890: 0000 unimp +80005892: 0000 unimp +80005894: 0000 unimp +80005896: 0000 unimp +80005898: 0000 unimp +8000589a: 0000 unimp +8000589c: 0000 unimp +8000589e: 0000 unimp +800058a0: 0000 unimp +800058a2: 0000 unimp +800058a4: 0000 unimp +800058a6: 0000 unimp +800058a8: 0000 unimp +800058aa: 0000 unimp +800058ac: 0000 unimp +800058ae: 0000 unimp +800058b0: 0000 unimp +800058b2: 0000 unimp +800058b4: 0000 unimp +800058b6: 0000 unimp +800058b8: 0000 unimp +800058ba: 0000 unimp +800058bc: 0000 unimp +800058be: 0000 unimp +800058c0: 0000 unimp +800058c2: 0000 unimp +800058c4: 0000 unimp +800058c6: 0000 unimp +800058c8: 0000 unimp +800058ca: 0000 unimp +800058cc: 0000 unimp +800058ce: 0000 unimp +800058d0: 0000 unimp +800058d2: 0000 unimp +800058d4: 0000 unimp +800058d6: 0000 unimp +800058d8: 0000 unimp +800058da: 0000 unimp +800058dc: 0000 unimp +800058de: 0000 unimp +800058e0: 0000 unimp +800058e2: 0000 unimp +800058e4: 0000 unimp +800058e6: 0000 unimp +800058e8: 0000 unimp +800058ea: 0000 unimp +800058ec: 0000 unimp +800058ee: 0000 unimp +800058f0: 0000 unimp +800058f2: 0000 unimp +800058f4: 0000 unimp +800058f6: 0000 unimp +800058f8: 0000 unimp +800058fa: 0000 unimp +800058fc: 0000 unimp +800058fe: 0000 unimp +80005900: 0000 unimp +80005902: 0000 unimp +80005904: 0000 unimp +80005906: 0000 unimp +80005908: 0000 unimp +8000590a: 0000 unimp +8000590c: 0000 unimp +8000590e: 0000 unimp +80005910: 0000 unimp +80005912: 0000 unimp +80005914: 0000 unimp +80005916: 0000 unimp +80005918: 0000 unimp +8000591a: 0000 unimp +8000591c: 0000 unimp +8000591e: 0000 unimp +80005920: 0000 unimp +80005922: 0000 unimp +80005924: 0000 unimp +80005926: 0000 unimp +80005928: 0000 unimp +8000592a: 0000 unimp +8000592c: 0000 unimp +8000592e: 0000 unimp +80005930: 0000 unimp +80005932: 0000 unimp +80005934: 0000 unimp +80005936: 0000 unimp +80005938: 0000 unimp +8000593a: 0000 unimp +8000593c: 0000 unimp +8000593e: 0000 unimp +80005940: 0000 unimp +80005942: 0000 unimp +80005944: 0000 unimp +80005946: 0000 unimp +80005948: 0000 unimp +8000594a: 0000 unimp +8000594c: 0000 unimp +8000594e: 0000 unimp +80005950: 0000 unimp +80005952: 0000 unimp +80005954: 0000 unimp +80005956: 0000 unimp +80005958: 0000 unimp +8000595a: 0000 unimp +8000595c: 0000 unimp +8000595e: 0000 unimp +80005960: 0000 unimp +80005962: 0000 unimp +80005964: 0000 unimp +80005966: 0000 unimp +80005968: 0000 unimp +8000596a: 0000 unimp +8000596c: 0000 unimp +8000596e: 0000 unimp +80005970: 0000 unimp +80005972: 0000 unimp +80005974: 0000 unimp +80005976: 0000 unimp +80005978: 0000 unimp +8000597a: 0000 unimp +8000597c: 0000 unimp +8000597e: 0000 unimp +80005980: 0000 unimp +80005982: 0000 unimp +80005984: 0000 unimp +80005986: 0000 unimp +80005988: 0000 unimp +8000598a: 0000 unimp +8000598c: 0000 unimp +8000598e: 0000 unimp +80005990: 0000 unimp +80005992: 0000 unimp +80005994: 0000 unimp +80005996: 0000 unimp +80005998: 0000 unimp +8000599a: 0000 unimp +8000599c: 0000 unimp +8000599e: 0000 unimp +800059a0: 0000 unimp +800059a2: 0000 unimp +800059a4: 0000 unimp +800059a6: 0000 unimp +800059a8: 0000 unimp +800059aa: 0000 unimp +800059ac: 0000 unimp +800059ae: 0000 unimp +800059b0: 0000 unimp +800059b2: 0000 unimp +800059b4: 0000 unimp +800059b6: 0000 unimp +800059b8: 0000 unimp +800059ba: 0000 unimp +800059bc: 0000 unimp +800059be: 0000 unimp +800059c0: 0000 unimp +800059c2: 0000 unimp +800059c4: 0000 unimp +800059c6: 0000 unimp +800059c8: 0000 unimp +800059ca: 0000 unimp +800059cc: 0000 unimp +800059ce: 0000 unimp +800059d0: 0000 unimp +800059d2: 0000 unimp +800059d4: 0000 unimp +800059d6: 0000 unimp +800059d8: 0000 unimp +800059da: 0000 unimp +800059dc: 0000 unimp +800059de: 0000 unimp +800059e0: 0000 unimp +800059e2: 0000 unimp +800059e4: 0000 unimp +800059e6: 0000 unimp +800059e8: 0000 unimp +800059ea: 0000 unimp +800059ec: 0000 unimp +800059ee: 0000 unimp +800059f0: 0000 unimp +800059f2: 0000 unimp +800059f4: 0000 unimp +800059f6: 0000 unimp +800059f8: 0000 unimp +800059fa: 0000 unimp +800059fc: 0000 unimp +800059fe: 0000 unimp +80005a00: 0000 unimp +80005a02: 0000 unimp +80005a04: 0000 unimp +80005a06: 0000 unimp +80005a08: 0000 unimp +80005a0a: 0000 unimp +80005a0c: 0000 unimp +80005a0e: 0000 unimp +80005a10: 0000 unimp +80005a12: 0000 unimp +80005a14: 0000 unimp +80005a16: 0000 unimp +80005a18: 0000 unimp +80005a1a: 0000 unimp +80005a1c: 0000 unimp +80005a1e: 0000 unimp +80005a20: 0000 unimp +80005a22: 0000 unimp +80005a24: 0000 unimp +80005a26: 0000 unimp +80005a28: 0000 unimp +80005a2a: 0000 unimp +80005a2c: 0000 unimp +80005a2e: 0000 unimp +80005a30: 0000 unimp +80005a32: 0000 unimp +80005a34: 0000 unimp +80005a36: 0000 unimp +80005a38: 0000 unimp +80005a3a: 0000 unimp +80005a3c: 0000 unimp +80005a3e: 0000 unimp +80005a40: 0000 unimp +80005a42: 0000 unimp +80005a44: 0000 unimp +80005a46: 0000 unimp +80005a48: 0000 unimp +80005a4a: 0000 unimp +80005a4c: 0000 unimp +80005a4e: 0000 unimp +80005a50: 0000 unimp +80005a52: 0000 unimp +80005a54: 0000 unimp +80005a56: 0000 unimp +80005a58: 0000 unimp +80005a5a: 0000 unimp +80005a5c: 0000 unimp +80005a5e: 0000 unimp +80005a60: 0000 unimp +80005a62: 0000 unimp +80005a64: 0000 unimp +80005a66: 0000 unimp +80005a68: 0000 unimp +80005a6a: 0000 unimp +80005a6c: 0000 unimp +80005a6e: 0000 unimp +80005a70: 0000 unimp +80005a72: 0000 unimp +80005a74: 0000 unimp +80005a76: 0000 unimp +80005a78: 0000 unimp +80005a7a: 0000 unimp +80005a7c: 0000 unimp +80005a7e: 0000 unimp +80005a80: 0000 unimp +80005a82: 0000 unimp +80005a84: 0000 unimp +80005a86: 0000 unimp +80005a88: 0000 unimp +80005a8a: 0000 unimp +80005a8c: 0000 unimp +80005a8e: 0000 unimp +80005a90: 0000 unimp +80005a92: 0000 unimp +80005a94: 0000 unimp +80005a96: 0000 unimp +80005a98: 0000 unimp +80005a9a: 0000 unimp +80005a9c: 0000 unimp +80005a9e: 0000 unimp +80005aa0: 0000 unimp +80005aa2: 0000 unimp +80005aa4: 0000 unimp +80005aa6: 0000 unimp +80005aa8: 0000 unimp +80005aaa: 0000 unimp +80005aac: 0000 unimp +80005aae: 0000 unimp +80005ab0: 0000 unimp +80005ab2: 0000 unimp +80005ab4: 0000 unimp +80005ab6: 0000 unimp +80005ab8: 0000 unimp +80005aba: 0000 unimp +80005abc: 0000 unimp +80005abe: 0000 unimp +80005ac0: 0000 unimp +80005ac2: 0000 unimp +80005ac4: 0000 unimp +80005ac6: 0000 unimp +80005ac8: 0000 unimp +80005aca: 0000 unimp +80005acc: 0000 unimp +80005ace: 0000 unimp +80005ad0: 0000 unimp +80005ad2: 0000 unimp +80005ad4: 0000 unimp +80005ad6: 0000 unimp +80005ad8: 0000 unimp +80005ada: 0000 unimp +80005adc: 0000 unimp +80005ade: 0000 unimp +80005ae0: 0000 unimp +80005ae2: 0000 unimp +80005ae4: 0000 unimp +80005ae6: 0000 unimp +80005ae8: 0000 unimp +80005aea: 0000 unimp +80005aec: 0000 unimp +80005aee: 0000 unimp +80005af0: 0000 unimp +80005af2: 0000 unimp +80005af4: 0000 unimp +80005af6: 0000 unimp +80005af8: 0000 unimp +80005afa: 0000 unimp +80005afc: 0000 unimp +80005afe: 0000 unimp +80005b00: 0000 unimp +80005b02: 0000 unimp +80005b04: 0000 unimp +80005b06: 0000 unimp +80005b08: 0000 unimp +80005b0a: 0000 unimp +80005b0c: 0000 unimp +80005b0e: 0000 unimp +80005b10: 0000 unimp +80005b12: 0000 unimp +80005b14: 0000 unimp +80005b16: 0000 unimp +80005b18: 0000 unimp +80005b1a: 0000 unimp +80005b1c: 0000 unimp +80005b1e: 0000 unimp +80005b20: 0000 unimp +80005b22: 0000 unimp +80005b24: 0000 unimp +80005b26: 0000 unimp +80005b28: 0000 unimp +80005b2a: 0000 unimp +80005b2c: 0000 unimp +80005b2e: 0000 unimp +80005b30: 0000 unimp +80005b32: 0000 unimp +80005b34: 0000 unimp +80005b36: 0000 unimp +80005b38: 0000 unimp +80005b3a: 0000 unimp +80005b3c: 0000 unimp +80005b3e: 0000 unimp +80005b40: 0000 unimp +80005b42: 0000 unimp +80005b44: 0000 unimp +80005b46: 0000 unimp +80005b48: 0000 unimp +80005b4a: 0000 unimp +80005b4c: 0000 unimp +80005b4e: 0000 unimp +80005b50: 0000 unimp +80005b52: 0000 unimp +80005b54: 0000 unimp +80005b56: 0000 unimp +80005b58: 0000 unimp +80005b5a: 0000 unimp +80005b5c: 0000 unimp +80005b5e: 0000 unimp +80005b60: 0000 unimp +80005b62: 0000 unimp +80005b64: 0000 unimp +80005b66: 0000 unimp +80005b68: 0000 unimp +80005b6a: 0000 unimp +80005b6c: 0000 unimp +80005b6e: 0000 unimp +80005b70: 0000 unimp +80005b72: 0000 unimp +80005b74: 0000 unimp +80005b76: 0000 unimp +80005b78: 0000 unimp +80005b7a: 0000 unimp +80005b7c: 0000 unimp +80005b7e: 0000 unimp +80005b80: 0000 unimp +80005b82: 0000 unimp +80005b84: 0000 unimp +80005b86: 0000 unimp +80005b88: 0000 unimp +80005b8a: 0000 unimp +80005b8c: 0000 unimp +80005b8e: 0000 unimp +80005b90: 0000 unimp +80005b92: 0000 unimp +80005b94: 0000 unimp +80005b96: 0000 unimp +80005b98: 0000 unimp +80005b9a: 0000 unimp +80005b9c: 0000 unimp +80005b9e: 0000 unimp +80005ba0: 0000 unimp +80005ba2: 0000 unimp +80005ba4: 0000 unimp +80005ba6: 0000 unimp +80005ba8: 0000 unimp +80005baa: 0000 unimp +80005bac: 0000 unimp +80005bae: 0000 unimp +80005bb0: 0000 unimp +80005bb2: 0000 unimp +80005bb4: 0000 unimp +80005bb6: 0000 unimp +80005bb8: 0000 unimp +80005bba: 0000 unimp +80005bbc: 0000 unimp +80005bbe: 0000 unimp +80005bc0: 0000 unimp +80005bc2: 0000 unimp +80005bc4: 0000 unimp +80005bc6: 0000 unimp +80005bc8: 0000 unimp +80005bca: 0000 unimp +80005bcc: 0000 unimp +80005bce: 0000 unimp +80005bd0: 0000 unimp +80005bd2: 0000 unimp +80005bd4: 0000 unimp +80005bd6: 0000 unimp +80005bd8: 0000 unimp +80005bda: 0000 unimp +80005bdc: 0000 unimp +80005bde: 0000 unimp +80005be0: 0000 unimp +80005be2: 0000 unimp +80005be4: 0000 unimp +80005be6: 0000 unimp +80005be8: 0000 unimp +80005bea: 0000 unimp +80005bec: 0000 unimp +80005bee: 0000 unimp +80005bf0: 0000 unimp +80005bf2: 0000 unimp +80005bf4: 0000 unimp +80005bf6: 0000 unimp +80005bf8: 0000 unimp +80005bfa: 0000 unimp +80005bfc: 0000 unimp +80005bfe: 0000 unimp +80005c00: 0000 unimp +80005c02: 0000 unimp +80005c04: 0000 unimp +80005c06: 0000 unimp +80005c08: 0000 unimp +80005c0a: 0000 unimp +80005c0c: 0000 unimp +80005c0e: 0000 unimp +80005c10: 0000 unimp +80005c12: 0000 unimp +80005c14: 0000 unimp +80005c16: 0000 unimp +80005c18: 0000 unimp +80005c1a: 0000 unimp +80005c1c: 0000 unimp +80005c1e: 0000 unimp +80005c20: 0000 unimp +80005c22: 0000 unimp +80005c24: 0000 unimp +80005c26: 0000 unimp +80005c28: 0000 unimp +80005c2a: 0000 unimp +80005c2c: 0000 unimp +80005c2e: 0000 unimp +80005c30: 0000 unimp +80005c32: 0000 unimp +80005c34: 0000 unimp +80005c36: 0000 unimp +80005c38: 0000 unimp +80005c3a: 0000 unimp +80005c3c: 0000 unimp +80005c3e: 0000 unimp +80005c40: 0000 unimp +80005c42: 0000 unimp +80005c44: 0000 unimp +80005c46: 0000 unimp +80005c48: 0000 unimp +80005c4a: 0000 unimp +80005c4c: 0000 unimp +80005c4e: 0000 unimp +80005c50: 0000 unimp +80005c52: 0000 unimp +80005c54: 0000 unimp +80005c56: 0000 unimp +80005c58: 0000 unimp +80005c5a: 0000 unimp +80005c5c: 0000 unimp +80005c5e: 0000 unimp +80005c60: 0000 unimp +80005c62: 0000 unimp +80005c64: 0000 unimp +80005c66: 0000 unimp +80005c68: 0000 unimp +80005c6a: 0000 unimp +80005c6c: 0000 unimp +80005c6e: 0000 unimp +80005c70: 0000 unimp +80005c72: 0000 unimp +80005c74: 0000 unimp +80005c76: 0000 unimp +80005c78: 0000 unimp +80005c7a: 0000 unimp +80005c7c: 0000 unimp +80005c7e: 0000 unimp +80005c80: 0000 unimp +80005c82: 0000 unimp +80005c84: 0000 unimp +80005c86: 0000 unimp +80005c88: 0000 unimp +80005c8a: 0000 unimp +80005c8c: 0000 unimp +80005c8e: 0000 unimp +80005c90: 0000 unimp +80005c92: 0000 unimp +80005c94: 0000 unimp +80005c96: 0000 unimp +80005c98: 0000 unimp +80005c9a: 0000 unimp +80005c9c: 0000 unimp +80005c9e: 0000 unimp +80005ca0: 0000 unimp +80005ca2: 0000 unimp +80005ca4: 0000 unimp +80005ca6: 0000 unimp +80005ca8: 0000 unimp +80005caa: 0000 unimp +80005cac: 0000 unimp +80005cae: 0000 unimp +80005cb0: 0000 unimp +80005cb2: 0000 unimp +80005cb4: 0000 unimp +80005cb6: 0000 unimp +80005cb8: 0000 unimp +80005cba: 0000 unimp +80005cbc: 0000 unimp +80005cbe: 0000 unimp +80005cc0: 0000 unimp +80005cc2: 0000 unimp +80005cc4: 0000 unimp +80005cc6: 0000 unimp +80005cc8: 0000 unimp +80005cca: 0000 unimp +80005ccc: 0000 unimp +80005cce: 0000 unimp +80005cd0: 0000 unimp +80005cd2: 0000 unimp +80005cd4: 0000 unimp +80005cd6: 0000 unimp +80005cd8: 0000 unimp +80005cda: 0000 unimp +80005cdc: 0000 unimp +80005cde: 0000 unimp +80005ce0: 0000 unimp +80005ce2: 0000 unimp +80005ce4: 0000 unimp +80005ce6: 0000 unimp +80005ce8: 0000 unimp +80005cea: 0000 unimp +80005cec: 0000 unimp +80005cee: 0000 unimp +80005cf0: 0000 unimp +80005cf2: 0000 unimp +80005cf4: 0000 unimp +80005cf6: 0000 unimp +80005cf8: 0000 unimp +80005cfa: 0000 unimp +80005cfc: 0000 unimp +80005cfe: 0000 unimp +80005d00: 0000 unimp +80005d02: 0000 unimp +80005d04: 0000 unimp +80005d06: 0000 unimp +80005d08: 0000 unimp +80005d0a: 0000 unimp +80005d0c: 0000 unimp +80005d0e: 0000 unimp +80005d10: 0000 unimp +80005d12: 0000 unimp +80005d14: 0000 unimp +80005d16: 0000 unimp +80005d18: 0000 unimp +80005d1a: 0000 unimp +80005d1c: 0000 unimp +80005d1e: 0000 unimp +80005d20: 0000 unimp +80005d22: 0000 unimp +80005d24: 0000 unimp +80005d26: 0000 unimp +80005d28: 0000 unimp +80005d2a: 0000 unimp +80005d2c: 0000 unimp +80005d2e: 0000 unimp +80005d30: 0000 unimp +80005d32: 0000 unimp +80005d34: 0000 unimp +80005d36: 0000 unimp +80005d38: 0000 unimp +80005d3a: 0000 unimp +80005d3c: 0000 unimp +80005d3e: 0000 unimp +80005d40: 0000 unimp +80005d42: 0000 unimp +80005d44: 0000 unimp +80005d46: 0000 unimp +80005d48: 0000 unimp +80005d4a: 0000 unimp +80005d4c: 0000 unimp +80005d4e: 0000 unimp +80005d50: 0000 unimp +80005d52: 0000 unimp +80005d54: 0000 unimp +80005d56: 0000 unimp +80005d58: 0000 unimp +80005d5a: 0000 unimp +80005d5c: 0000 unimp +80005d5e: 0000 unimp +80005d60: 0000 unimp +80005d62: 0000 unimp +80005d64: 0000 unimp +80005d66: 0000 unimp +80005d68: 0000 unimp +80005d6a: 0000 unimp +80005d6c: 0000 unimp +80005d6e: 0000 unimp +80005d70: 0000 unimp +80005d72: 0000 unimp +80005d74: 0000 unimp +80005d76: 0000 unimp +80005d78: 0000 unimp +80005d7a: 0000 unimp +80005d7c: 0000 unimp +80005d7e: 0000 unimp +80005d80: 0000 unimp +80005d82: 0000 unimp +80005d84: 0000 unimp +80005d86: 0000 unimp +80005d88: 0000 unimp +80005d8a: 0000 unimp +80005d8c: 0000 unimp +80005d8e: 0000 unimp +80005d90: 0000 unimp +80005d92: 0000 unimp +80005d94: 0000 unimp +80005d96: 0000 unimp +80005d98: 0000 unimp +80005d9a: 0000 unimp +80005d9c: 0000 unimp +80005d9e: 0000 unimp +80005da0: 0000 unimp +80005da2: 0000 unimp +80005da4: 0000 unimp +80005da6: 0000 unimp +80005da8: 0000 unimp +80005daa: 0000 unimp +80005dac: 0000 unimp +80005dae: 0000 unimp +80005db0: 0000 unimp +80005db2: 0000 unimp +80005db4: 0000 unimp +80005db6: 0000 unimp +80005db8: 0000 unimp +80005dba: 0000 unimp +80005dbc: 0000 unimp +80005dbe: 0000 unimp +80005dc0: 0000 unimp +80005dc2: 0000 unimp +80005dc4: 0000 unimp +80005dc6: 0000 unimp +80005dc8: 0000 unimp +80005dca: 0000 unimp +80005dcc: 0000 unimp +80005dce: 0000 unimp +80005dd0: 0000 unimp +80005dd2: 0000 unimp +80005dd4: 0000 unimp +80005dd6: 0000 unimp +80005dd8: 0000 unimp +80005dda: 0000 unimp +80005ddc: 0000 unimp +80005dde: 0000 unimp +80005de0: 0000 unimp +80005de2: 0000 unimp +80005de4: 0000 unimp +80005de6: 0000 unimp +80005de8: 0000 unimp +80005dea: 0000 unimp +80005dec: 0000 unimp +80005dee: 0000 unimp +80005df0: 0000 unimp +80005df2: 0000 unimp +80005df4: 0000 unimp +80005df6: 0000 unimp +80005df8: 0000 unimp +80005dfa: 0000 unimp +80005dfc: 0000 unimp +80005dfe: 0000 unimp +80005e00: 0000 unimp +80005e02: 0000 unimp +80005e04: 0000 unimp +80005e06: 0000 unimp +80005e08: 0000 unimp +80005e0a: 0000 unimp +80005e0c: 0000 unimp +80005e0e: 0000 unimp +80005e10: 0000 unimp +80005e12: 0000 unimp +80005e14: 0000 unimp +80005e16: 0000 unimp +80005e18: 0000 unimp +80005e1a: 0000 unimp +80005e1c: 0000 unimp +80005e1e: 0000 unimp +80005e20: 0000 unimp +80005e22: 0000 unimp +80005e24: 0000 unimp +80005e26: 0000 unimp +80005e28: 0000 unimp +80005e2a: 0000 unimp +80005e2c: 0000 unimp +80005e2e: 0000 unimp +80005e30: 0000 unimp +80005e32: 0000 unimp +80005e34: 0000 unimp +80005e36: 0000 unimp +80005e38: 0000 unimp +80005e3a: 0000 unimp +80005e3c: 0000 unimp +80005e3e: 0000 unimp +80005e40: 0000 unimp +80005e42: 0000 unimp +80005e44: 0000 unimp +80005e46: 0000 unimp +80005e48: 0000 unimp +80005e4a: 0000 unimp +80005e4c: 0000 unimp +80005e4e: 0000 unimp +80005e50: 0000 unimp +80005e52: 0000 unimp +80005e54: 0000 unimp +80005e56: 0000 unimp +80005e58: 0000 unimp +80005e5a: 0000 unimp +80005e5c: 0000 unimp +80005e5e: 0000 unimp +80005e60: 0000 unimp +80005e62: 0000 unimp +80005e64: 0000 unimp +80005e66: 0000 unimp +80005e68: 0000 unimp +80005e6a: 0000 unimp +80005e6c: 0000 unimp +80005e6e: 0000 unimp +80005e70: 0000 unimp +80005e72: 0000 unimp +80005e74: 0000 unimp +80005e76: 0000 unimp +80005e78: 0000 unimp +80005e7a: 0000 unimp +80005e7c: 0000 unimp +80005e7e: 0000 unimp +80005e80: 0000 unimp +80005e82: 0000 unimp +80005e84: 0000 unimp +80005e86: 0000 unimp +80005e88: 0000 unimp +80005e8a: 0000 unimp +80005e8c: 0000 unimp +80005e8e: 0000 unimp +80005e90: 0000 unimp +80005e92: 0000 unimp +80005e94: 0000 unimp +80005e96: 0000 unimp +80005e98: 0000 unimp +80005e9a: 0000 unimp +80005e9c: 0000 unimp +80005e9e: 0000 unimp +80005ea0: 0000 unimp +80005ea2: 0000 unimp +80005ea4: 0000 unimp +80005ea6: 0000 unimp +80005ea8: 0000 unimp +80005eaa: 0000 unimp +80005eac: 0000 unimp +80005eae: 0000 unimp +80005eb0: 0000 unimp +80005eb2: 0000 unimp +80005eb4: 0000 unimp +80005eb6: 0000 unimp +80005eb8: 0000 unimp +80005eba: 0000 unimp +80005ebc: 0000 unimp +80005ebe: 0000 unimp +80005ec0: 0000 unimp +80005ec2: 0000 unimp +80005ec4: 0000 unimp +80005ec6: 0000 unimp +80005ec8: 0000 unimp +80005eca: 0000 unimp +80005ecc: 0000 unimp +80005ece: 0000 unimp +80005ed0: 0000 unimp +80005ed2: 0000 unimp +80005ed4: 0000 unimp +80005ed6: 0000 unimp +80005ed8: 0000 unimp +80005eda: 0000 unimp +80005edc: 0000 unimp +80005ede: 0000 unimp +80005ee0: 0000 unimp +80005ee2: 0000 unimp +80005ee4: 0000 unimp +80005ee6: 0000 unimp +80005ee8: 0000 unimp +80005eea: 0000 unimp +80005eec: 0000 unimp +80005eee: 0000 unimp +80005ef0: 0000 unimp +80005ef2: 0000 unimp +80005ef4: 0000 unimp +80005ef6: 0000 unimp +80005ef8: 0000 unimp +80005efa: 0000 unimp +80005efc: 0000 unimp +80005efe: 0000 unimp +80005f00: 0000 unimp +80005f02: 0000 unimp +80005f04: 0000 unimp +80005f06: 0000 unimp +80005f08: 0000 unimp +80005f0a: 0000 unimp +80005f0c: 0000 unimp +80005f0e: 0000 unimp +80005f10: 0000 unimp +80005f12: 0000 unimp +80005f14: 0000 unimp +80005f16: 0000 unimp +80005f18: 0000 unimp +80005f1a: 0000 unimp +80005f1c: 0000 unimp +80005f1e: 0000 unimp +80005f20: 0000 unimp +80005f22: 0000 unimp +80005f24: 0000 unimp +80005f26: 0000 unimp +80005f28: 0000 unimp +80005f2a: 0000 unimp +80005f2c: 0000 unimp +80005f2e: 0000 unimp +80005f30: 0000 unimp +80005f32: 0000 unimp +80005f34: 0000 unimp +80005f36: 0000 unimp +80005f38: 0000 unimp +80005f3a: 0000 unimp +80005f3c: 0000 unimp +80005f3e: 0000 unimp +80005f40: 0000 unimp +80005f42: 0000 unimp +80005f44: 0000 unimp +80005f46: 0000 unimp +80005f48: 0000 unimp +80005f4a: 0000 unimp +80005f4c: 0000 unimp +80005f4e: 0000 unimp +80005f50: 0000 unimp +80005f52: 0000 unimp +80005f54: 0000 unimp +80005f56: 0000 unimp +80005f58: 0000 unimp +80005f5a: 0000 unimp +80005f5c: 0000 unimp +80005f5e: 0000 unimp +80005f60: 0000 unimp +80005f62: 0000 unimp +80005f64: 0000 unimp +80005f66: 0000 unimp +80005f68: 0000 unimp +80005f6a: 0000 unimp +80005f6c: 0000 unimp +80005f6e: 0000 unimp +80005f70: 0000 unimp +80005f72: 0000 unimp +80005f74: 0000 unimp +80005f76: 0000 unimp +80005f78: 0000 unimp +80005f7a: 0000 unimp +80005f7c: 0000 unimp +80005f7e: 0000 unimp +80005f80: 0000 unimp +80005f82: 0000 unimp +80005f84: 0000 unimp +80005f86: 0000 unimp +80005f88: 0000 unimp +80005f8a: 0000 unimp +80005f8c: 0000 unimp +80005f8e: 0000 unimp +80005f90: 0000 unimp +80005f92: 0000 unimp +80005f94: 0000 unimp +80005f96: 0000 unimp +80005f98: 0000 unimp +80005f9a: 0000 unimp +80005f9c: 0000 unimp +80005f9e: 0000 unimp +80005fa0: 0000 unimp +80005fa2: 0000 unimp +80005fa4: 0000 unimp +80005fa6: 0000 unimp +80005fa8: 0000 unimp +80005faa: 0000 unimp +80005fac: 0000 unimp +80005fae: 0000 unimp +80005fb0: 0000 unimp +80005fb2: 0000 unimp +80005fb4: 0000 unimp +80005fb6: 0000 unimp +80005fb8: 0000 unimp +80005fba: 0000 unimp +80005fbc: 0000 unimp +80005fbe: 0000 unimp +80005fc0: 0000 unimp +80005fc2: 0000 unimp +80005fc4: 0000 unimp +80005fc6: 0000 unimp +80005fc8: 0000 unimp +80005fca: 0000 unimp +80005fcc: 0000 unimp +80005fce: 0000 unimp +80005fd0: 0000 unimp diff --git a/Tests/isa/rv32ud-p-fadd b/Tests/isa/rv32ud-p-fadd new file mode 100644 index 0000000..d72898c Binary files /dev/null and b/Tests/isa/rv32ud-p-fadd differ diff --git a/Tests/isa/rv32ud-p-fadd.dump b/Tests/isa/rv32ud-p-fadd.dump new file mode 100644 index 0000000..4c152c5 --- /dev/null +++ b/Tests/isa/rv32ud-p-fadd.dump @@ -0,0 +1,478 @@ + +rv32ud-p-fadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00053007 fld ft0,0(a0) +80000118: 00853087 fld ft1,8(a0) +8000011c: 01053107 fld ft2,16(a0) +80000120: 01852683 lw a3,24(a0) +80000124: 01c52303 lw t1,28(a0) +80000128: 021071d3 fadd.d ft3,ft0,ft1 +8000012c: 00353027 fsd ft3,0(a0) +80000130: 00452383 lw t2,4(a0) +80000134: 00052503 lw a0,0(a0) +80000138: 001015f3 fsflags a1,zero +8000013c: 00000613 li a2,0 +80000140: 26d51a63 bne a0,a3,800003b4 +80000144: 26731863 bne t1,t2,800003b4 +80000148: 26c59663 bne a1,a2,800003b4 + +8000014c : +8000014c: 00300193 li gp,3 +80000150: 00002517 auipc a0,0x2 +80000154: ed050513 addi a0,a0,-304 # 80002020 +80000158: 00053007 fld ft0,0(a0) +8000015c: 00853087 fld ft1,8(a0) +80000160: 01053107 fld ft2,16(a0) +80000164: 01852683 lw a3,24(a0) +80000168: 01c52303 lw t1,28(a0) +8000016c: 021071d3 fadd.d ft3,ft0,ft1 +80000170: 00353027 fsd ft3,0(a0) +80000174: 00452383 lw t2,4(a0) +80000178: 00052503 lw a0,0(a0) +8000017c: 001015f3 fsflags a1,zero +80000180: 00100613 li a2,1 +80000184: 22d51863 bne a0,a3,800003b4 +80000188: 22731663 bne t1,t2,800003b4 +8000018c: 22c59463 bne a1,a2,800003b4 + +80000190 : +80000190: 00400193 li gp,4 +80000194: 00002517 auipc a0,0x2 +80000198: eac50513 addi a0,a0,-340 # 80002040 +8000019c: 00053007 fld ft0,0(a0) +800001a0: 00853087 fld ft1,8(a0) +800001a4: 01053107 fld ft2,16(a0) +800001a8: 01852683 lw a3,24(a0) +800001ac: 01c52303 lw t1,28(a0) +800001b0: 021071d3 fadd.d ft3,ft0,ft1 +800001b4: 00353027 fsd ft3,0(a0) +800001b8: 00452383 lw t2,4(a0) +800001bc: 00052503 lw a0,0(a0) +800001c0: 001015f3 fsflags a1,zero +800001c4: 00100613 li a2,1 +800001c8: 1ed51663 bne a0,a3,800003b4 +800001cc: 1e731463 bne t1,t2,800003b4 +800001d0: 1ec59263 bne a1,a2,800003b4 + +800001d4 : +800001d4: 00500193 li gp,5 +800001d8: 00002517 auipc a0,0x2 +800001dc: e8850513 addi a0,a0,-376 # 80002060 +800001e0: 00053007 fld ft0,0(a0) +800001e4: 00853087 fld ft1,8(a0) +800001e8: 01053107 fld ft2,16(a0) +800001ec: 01852683 lw a3,24(a0) +800001f0: 01c52303 lw t1,28(a0) +800001f4: 0a1071d3 fsub.d ft3,ft0,ft1 +800001f8: 00353027 fsd ft3,0(a0) +800001fc: 00452383 lw t2,4(a0) +80000200: 00052503 lw a0,0(a0) +80000204: 001015f3 fsflags a1,zero +80000208: 00000613 li a2,0 +8000020c: 1ad51463 bne a0,a3,800003b4 +80000210: 1a731263 bne t1,t2,800003b4 +80000214: 1ac59063 bne a1,a2,800003b4 + +80000218 : +80000218: 00600193 li gp,6 +8000021c: 00002517 auipc a0,0x2 +80000220: e6450513 addi a0,a0,-412 # 80002080 +80000224: 00053007 fld ft0,0(a0) +80000228: 00853087 fld ft1,8(a0) +8000022c: 01053107 fld ft2,16(a0) +80000230: 01852683 lw a3,24(a0) +80000234: 01c52303 lw t1,28(a0) +80000238: 0a1071d3 fsub.d ft3,ft0,ft1 +8000023c: 00353027 fsd ft3,0(a0) +80000240: 00452383 lw t2,4(a0) +80000244: 00052503 lw a0,0(a0) +80000248: 001015f3 fsflags a1,zero +8000024c: 00100613 li a2,1 +80000250: 16d51263 bne a0,a3,800003b4 +80000254: 16731063 bne t1,t2,800003b4 +80000258: 14c59e63 bne a1,a2,800003b4 + +8000025c : +8000025c: 00700193 li gp,7 +80000260: 00002517 auipc a0,0x2 +80000264: e4050513 addi a0,a0,-448 # 800020a0 +80000268: 00053007 fld ft0,0(a0) +8000026c: 00853087 fld ft1,8(a0) +80000270: 01053107 fld ft2,16(a0) +80000274: 01852683 lw a3,24(a0) +80000278: 01c52303 lw t1,28(a0) +8000027c: 0a1071d3 fsub.d ft3,ft0,ft1 +80000280: 00353027 fsd ft3,0(a0) +80000284: 00452383 lw t2,4(a0) +80000288: 00052503 lw a0,0(a0) +8000028c: 001015f3 fsflags a1,zero +80000290: 00100613 li a2,1 +80000294: 12d51063 bne a0,a3,800003b4 +80000298: 10731e63 bne t1,t2,800003b4 +8000029c: 10c59c63 bne a1,a2,800003b4 + +800002a0 : +800002a0: 00800193 li gp,8 +800002a4: 00002517 auipc a0,0x2 +800002a8: e1c50513 addi a0,a0,-484 # 800020c0 +800002ac: 00053007 fld ft0,0(a0) +800002b0: 00853087 fld ft1,8(a0) +800002b4: 01053107 fld ft2,16(a0) +800002b8: 01852683 lw a3,24(a0) +800002bc: 01c52303 lw t1,28(a0) +800002c0: 121071d3 fmul.d ft3,ft0,ft1 +800002c4: 00353027 fsd ft3,0(a0) +800002c8: 00452383 lw t2,4(a0) +800002cc: 00052503 lw a0,0(a0) +800002d0: 001015f3 fsflags a1,zero +800002d4: 00000613 li a2,0 +800002d8: 0cd51e63 bne a0,a3,800003b4 +800002dc: 0c731c63 bne t1,t2,800003b4 +800002e0: 0cc59a63 bne a1,a2,800003b4 + +800002e4 : +800002e4: 00900193 li gp,9 +800002e8: 00002517 auipc a0,0x2 +800002ec: df850513 addi a0,a0,-520 # 800020e0 +800002f0: 00053007 fld ft0,0(a0) +800002f4: 00853087 fld ft1,8(a0) +800002f8: 01053107 fld ft2,16(a0) +800002fc: 01852683 lw a3,24(a0) +80000300: 01c52303 lw t1,28(a0) +80000304: 121071d3 fmul.d ft3,ft0,ft1 +80000308: 00353027 fsd ft3,0(a0) +8000030c: 00452383 lw t2,4(a0) +80000310: 00052503 lw a0,0(a0) +80000314: 001015f3 fsflags a1,zero +80000318: 00100613 li a2,1 +8000031c: 08d51c63 bne a0,a3,800003b4 +80000320: 08731a63 bne t1,t2,800003b4 +80000324: 08c59863 bne a1,a2,800003b4 + +80000328 : +80000328: 00a00193 li gp,10 +8000032c: 00002517 auipc a0,0x2 +80000330: dd450513 addi a0,a0,-556 # 80002100 +80000334: 00053007 fld ft0,0(a0) +80000338: 00853087 fld ft1,8(a0) +8000033c: 01053107 fld ft2,16(a0) +80000340: 01852683 lw a3,24(a0) +80000344: 01c52303 lw t1,28(a0) +80000348: 121071d3 fmul.d ft3,ft0,ft1 +8000034c: 00353027 fsd ft3,0(a0) +80000350: 00452383 lw t2,4(a0) +80000354: 00052503 lw a0,0(a0) +80000358: 001015f3 fsflags a1,zero +8000035c: 00100613 li a2,1 +80000360: 04d51a63 bne a0,a3,800003b4 +80000364: 04731863 bne t1,t2,800003b4 +80000368: 04c59663 bne a1,a2,800003b4 + +8000036c : +8000036c: 00b00193 li gp,11 +80000370: 00002517 auipc a0,0x2 +80000374: db050513 addi a0,a0,-592 # 80002120 +80000378: 00053007 fld ft0,0(a0) +8000037c: 00853087 fld ft1,8(a0) +80000380: 01053107 fld ft2,16(a0) +80000384: 01852683 lw a3,24(a0) +80000388: 01c52303 lw t1,28(a0) +8000038c: 0a1071d3 fsub.d ft3,ft0,ft1 +80000390: 00353027 fsd ft3,0(a0) +80000394: 00452383 lw t2,4(a0) +80000398: 00052503 lw a0,0(a0) +8000039c: 001015f3 fsflags a1,zero +800003a0: 01000613 li a2,16 +800003a4: 00d51863 bne a0,a3,800003b4 +800003a8: 00731663 bne t1,t2,800003b4 +800003ac: 00c59463 bne a1,a2,800003b4 +800003b0: 00301c63 bne zero,gp,800003c8 + +800003b4 : +800003b4: 0ff0000f fence +800003b8: 00018063 beqz gp,800003b8 +800003bc: 00119193 slli gp,gp,0x1 +800003c0: 0011e193 ori gp,gp,1 +800003c4: 00000073 ecall + +800003c8 : +800003c8: 0ff0000f fence +800003cc: 00100193 li gp,1 +800003d0: 00000073 ecall +800003d4: c0001073 unimp +800003d8: 0000 unimp +800003da: 0000 unimp +800003dc: 0000 unimp +800003de: 0000 unimp +800003e0: 0000 unimp +800003e2: 0000 unimp +800003e4: 0000 unimp +800003e6: 0000 unimp +800003e8: 0000 unimp +800003ea: 0000 unimp +800003ec: 0000 unimp +800003ee: 0000 unimp +800003f0: 0000 unimp +800003f2: 0000 unimp +800003f4: 0000 unimp +800003f6: 0000 unimp +800003f8: 0000 unimp +800003fa: 0000 unimp +800003fc: 0000 unimp +800003fe: 0000 unimp +80000400: 0000 unimp +80000402: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 0000 unimp +80002004: 0000 unimp +80002006: 4004 lw s1,0(s0) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 3ff0 fld fa2,248(a5) +80002010: 0000 unimp +80002012: 0000 unimp +80002014: 0000 unimp +80002016: 0000 unimp +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 0000 unimp +8000201e: 400c lw a1,0(s0) + +80002020 : +80002020: 6666 flw fa2,88(sp) +80002022: 6666 flw fa2,88(sp) +80002024: 4c66 lw s8,88(sp) +80002026: 999ac093 xori ra,s5,-1639 +8000202a: 9999 andi a1,a1,-26 +8000202c: 9999 andi a1,a1,-26 +8000202e: 3ff1 jal 8000200a +80002030: 0000 unimp +80002032: 0000 unimp +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 4800 lw s0,16(s0) +8000203e: xori ra,gp,-689 + +80002040 : +80002040: d4f1 beqz s1,8000200c +80002042: 53c8 lw a0,36(a5) +80002044: 400921fb 0x400921fb +80002048: 8c3a mv s8,a4 +8000204a: e230 fsw fa2,64(a2) +8000204c: 798e flw fs3,224(sp) +8000204e: 3e45 jal 80001bfe +80002050: 0000 unimp +80002052: 0000 unimp +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 6ddf 5520 21fb 0x21fb55206ddf +8000205e: 4009 c.li zero,2 + +80002060 : +80002060: 0000 unimp +80002062: 0000 unimp +80002064: 0000 unimp +80002066: 4004 lw s1,0(s0) +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 3ff0 fld fa2,248(a5) +80002070: 0000 unimp +80002072: 0000 unimp +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: 0000 unimp +8000207e: 3ff8 fld fa4,248(a5) + +80002080 : +80002080: 6666 flw fa2,88(sp) +80002082: 6666 flw fa2,88(sp) +80002084: 4c66 lw s8,88(sp) +80002086: 999ac093 xori ra,s5,-1639 +8000208a: 9999 andi a1,a1,-26 +8000208c: 9999 andi a1,a1,-26 +8000208e: bff1 j 8000206a +80002090: 0000 unimp +80002092: 0000 unimp +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 4800 lw s0,16(s0) +8000209e: xori ra,gp,-689 + +800020a0 : +800020a0: d4f1 beqz s1,8000206c +800020a2: 53c8 lw a0,36(a5) +800020a4: 400921fb 0x400921fb +800020a8: 8c3a mv s8,a4 +800020aa: e230 fsw fa2,64(a2) +800020ac: 798e flw fs3,224(sp) +800020ae: 3e45 jal 80001c5e +800020b0: 0000 unimp +800020b2: 0000 unimp +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 52713c03 0x52713c03 +800020bc: 400921fb 0x400921fb + +800020c0 : +800020c0: 0000 unimp +800020c2: 0000 unimp +800020c4: 0000 unimp +800020c6: 4004 lw s1,0(s0) +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 3ff0 fld fa2,248(a5) +800020d0: 0000 unimp +800020d2: 0000 unimp +800020d4: 0000 unimp +800020d6: 0000 unimp +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 4004 lw s1,0(s0) + +800020e0 : +800020e0: 6666 flw fa2,88(sp) +800020e2: 6666 flw fa2,88(sp) +800020e4: 4c66 lw s8,88(sp) +800020e6: 999ac093 xori ra,s5,-1639 +800020ea: 9999 andi a1,a1,-26 +800020ec: 9999 andi a1,a1,-26 +800020ee: bff1 j 800020ca +800020f0: 0000 unimp +800020f2: 0000 unimp +800020f4: 0000 unimp +800020f6: 0000 unimp +800020f8: 0a3d addi s4,s4,15 +800020fa: 3a70a3d7 0x3a70a3d7 +800020fe: 4095 li ra,5 + +80002100 : +80002100: d4f1 beqz s1,800020cc +80002102: 53c8 lw a0,36(a5) +80002104: 400921fb 0x400921fb +80002108: 8c3a mv s8,a4 +8000210a: e230 fsw fa2,64(a2) +8000210c: 798e flw fs3,224(sp) +8000210e: 3e45 jal 80001cbe +80002110: 0000 unimp +80002112: 0000 unimp +80002114: 0000 unimp +80002116: 0000 unimp +80002118: ff09 bnez a4,80002032 +8000211a: a5c1 j 800027da <_end+0x69a> +8000211c: ddc5 beqz a1,800020d4 +8000211e: 3e60 fld fs0,248(a2) + +80002120 : +80002120: 0000 unimp +80002122: 0000 unimp +80002124: 0000 unimp +80002126: 7ff0 flw fa2,124(a5) +80002128: 0000 unimp +8000212a: 0000 unimp +8000212c: 0000 unimp +8000212e: 7ff0 flw fa2,124(a5) +80002130: 0000 unimp +80002132: 0000 unimp +80002134: 0000 unimp +80002136: 0000 unimp +80002138: 0000 unimp +8000213a: 0000 unimp +8000213c: 0000 unimp +8000213e: 7ff8 flw fa4,124(a5) diff --git a/Tests/isa/rv32ud-p-fclass b/Tests/isa/rv32ud-p-fclass new file mode 100644 index 0000000..ddc13b5 Binary files /dev/null and b/Tests/isa/rv32ud-p-fclass differ diff --git a/Tests/isa/rv32ud-p-fclass.dump b/Tests/isa/rv32ud-p-fclass.dump new file mode 100644 index 0000000..c581415 --- /dev/null +++ b/Tests/isa/rv32ud-p-fclass.dump @@ -0,0 +1,277 @@ + +rv32ud-p-fclass: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00002517 auipc a0,0x2 +8000010c: ef850513 addi a0,a0,-264 # 80002000 +80000110: 00053507 fld fa0,0(a0) +80000114: e2051553 fclass.d a0,fa0 +80000118: 00100e93 li t4,1 +8000011c: 00200193 li gp,2 +80000120: 11d51263 bne a0,t4,80000224 + +80000124 : +80000124: 00002517 auipc a0,0x2 +80000128: ee450513 addi a0,a0,-284 # 80002008 +8000012c: 00053507 fld fa0,0(a0) +80000130: e2051553 fclass.d a0,fa0 +80000134: 00200e93 li t4,2 +80000138: 00300193 li gp,3 +8000013c: 0fd51463 bne a0,t4,80000224 + +80000140 : +80000140: 00002517 auipc a0,0x2 +80000144: ed050513 addi a0,a0,-304 # 80002010 +80000148: 00053507 fld fa0,0(a0) +8000014c: e2051553 fclass.d a0,fa0 +80000150: 00400e93 li t4,4 +80000154: 00400193 li gp,4 +80000158: 0dd51663 bne a0,t4,80000224 + +8000015c : +8000015c: 00002517 auipc a0,0x2 +80000160: ebc50513 addi a0,a0,-324 # 80002018 +80000164: 00053507 fld fa0,0(a0) +80000168: e2051553 fclass.d a0,fa0 +8000016c: 00800e93 li t4,8 +80000170: 00500193 li gp,5 +80000174: 0bd51863 bne a0,t4,80000224 + +80000178 : +80000178: 00002517 auipc a0,0x2 +8000017c: ea850513 addi a0,a0,-344 # 80002020 +80000180: 00053507 fld fa0,0(a0) +80000184: e2051553 fclass.d a0,fa0 +80000188: 01000e93 li t4,16 +8000018c: 00600193 li gp,6 +80000190: 09d51a63 bne a0,t4,80000224 + +80000194 : +80000194: 00002517 auipc a0,0x2 +80000198: e9450513 addi a0,a0,-364 # 80002028 +8000019c: 00053507 fld fa0,0(a0) +800001a0: e2051553 fclass.d a0,fa0 +800001a4: 02000e93 li t4,32 +800001a8: 00700193 li gp,7 +800001ac: 07d51c63 bne a0,t4,80000224 + +800001b0 : +800001b0: 00002517 auipc a0,0x2 +800001b4: e8050513 addi a0,a0,-384 # 80002030 +800001b8: 00053507 fld fa0,0(a0) +800001bc: e2051553 fclass.d a0,fa0 +800001c0: 04000e93 li t4,64 +800001c4: 00800193 li gp,8 +800001c8: 05d51e63 bne a0,t4,80000224 + +800001cc : +800001cc: 00002517 auipc a0,0x2 +800001d0: e6c50513 addi a0,a0,-404 # 80002038 +800001d4: 00053507 fld fa0,0(a0) +800001d8: e2051553 fclass.d a0,fa0 +800001dc: 08000e93 li t4,128 +800001e0: 00900193 li gp,9 +800001e4: 05d51063 bne a0,t4,80000224 + +800001e8 : +800001e8: 00002517 auipc a0,0x2 +800001ec: e5850513 addi a0,a0,-424 # 80002040 +800001f0: 00053507 fld fa0,0(a0) +800001f4: e2051553 fclass.d a0,fa0 +800001f8: 10000e93 li t4,256 +800001fc: 00a00193 li gp,10 +80000200: 03d51263 bne a0,t4,80000224 + +80000204 : +80000204: 00002517 auipc a0,0x2 +80000208: e4450513 addi a0,a0,-444 # 80002048 +8000020c: 00053507 fld fa0,0(a0) +80000210: e2051553 fclass.d a0,fa0 +80000214: 20000e93 li t4,512 +80000218: 00b00193 li gp,11 +8000021c: 01d51463 bne a0,t4,80000224 +80000220: 00301c63 bne zero,gp,80000238 + +80000224 : +80000224: 0ff0000f fence +80000228: 00018063 beqz gp,80000228 +8000022c: 00119193 slli gp,gp,0x1 +80000230: 0011e193 ori gp,gp,1 +80000234: 00000073 ecall + +80000238 : +80000238: 0ff0000f fence +8000023c: 00100193 li gp,1 +80000240: 00000073 ecall +80000244: c0001073 unimp +80000248: 0000 unimp +8000024a: 0000 unimp +8000024c: 0000 unimp +8000024e: 0000 unimp +80000250: 0000 unimp +80000252: 0000 unimp +80000254: 0000 unimp +80000256: 0000 unimp +80000258: 0000 unimp +8000025a: 0000 unimp +8000025c: 0000 unimp +8000025e: 0000 unimp +80000260: 0000 unimp +80000262: 0000 unimp +80000264: 0000 unimp +80000266: 0000 unimp +80000268: 0000 unimp +8000026a: 0000 unimp +8000026c: 0000 unimp +8000026e: 0000 unimp +80000270: 0000 unimp +80000272: 0000 unimp +80000274: 0000 unimp +80000276: 0000 unimp +80000278: 0000 unimp +8000027a: 0000 unimp +8000027c: 0000 unimp +8000027e: 0000 unimp +80000280: 0000 unimp +80000282: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 0000 unimp +80002004: 0000 unimp +80002006: fff0 fsw fa2,124(a5) + +80002008 : +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: bff0 fsd fa2,248(a5) + +80002010 : +80002010: ffff 0xffff +80002012: ffff 0xffff +80002014: ffff 0xffff +80002016: 0x800f + +80002018 : +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 0000 unimp +8000201e: 8000 0x8000 + +80002020 : +80002020: 0000 unimp +80002022: 0000 unimp +80002024: 0000 unimp +80002026: 0000 unimp + +80002028 : +80002028: ffff 0xffff +8000202a: ffff 0xffff +8000202c: ffff 0xffff +8000202e: fence unknown,unknown + +80002030 : +80002030: 0000 unimp +80002032: 0000 unimp +80002034: 0000 unimp +80002036: 3ff0 fld fa2,248(a5) + +80002038 : +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 7ff0 flw fa2,124(a5) + +80002040 : +80002040: 0001 nop +80002042: 0000 unimp +80002044: 0000 unimp +80002046: 7ff0 flw fa2,124(a5) + +80002048 : +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0000 unimp +8000204e: 7ff8 flw fa4,124(a5) diff --git a/Tests/isa/rv32ud-p-fcmp b/Tests/isa/rv32ud-p-fcmp new file mode 100644 index 0000000..3dee405 Binary files /dev/null and b/Tests/isa/rv32ud-p-fcmp differ diff --git a/Tests/isa/rv32ud-p-fcmp.dump b/Tests/isa/rv32ud-p-fcmp.dump new file mode 100644 index 0000000..e0b297e --- /dev/null +++ b/Tests/isa/rv32ud-p-fcmp.dump @@ -0,0 +1,612 @@ + +rv32ud-p-fcmp: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00053007 fld ft0,0(a0) +80000118: 00853087 fld ft1,8(a0) +8000011c: 01053107 fld ft2,16(a0) +80000120: 01852683 lw a3,24(a0) +80000124: 01c52303 lw t1,28(a0) +80000128: a2102553 feq.d a0,ft0,ft1 +8000012c: 00000393 li t2,0 +80000130: 001015f3 fsflags a1,zero +80000134: 00000613 li a2,0 +80000138: 34d51c63 bne a0,a3,80000490 +8000013c: 34731a63 bne t1,t2,80000490 +80000140: 34c59863 bne a1,a2,80000490 + +80000144 : +80000144: 00300193 li gp,3 +80000148: 00002517 auipc a0,0x2 +8000014c: ed850513 addi a0,a0,-296 # 80002020 +80000150: 00053007 fld ft0,0(a0) +80000154: 00853087 fld ft1,8(a0) +80000158: 01053107 fld ft2,16(a0) +8000015c: 01852683 lw a3,24(a0) +80000160: 01c52303 lw t1,28(a0) +80000164: a2100553 fle.d a0,ft0,ft1 +80000168: 00000393 li t2,0 +8000016c: 001015f3 fsflags a1,zero +80000170: 00000613 li a2,0 +80000174: 30d51e63 bne a0,a3,80000490 +80000178: 30731c63 bne t1,t2,80000490 +8000017c: 30c59a63 bne a1,a2,80000490 + +80000180 : +80000180: 00400193 li gp,4 +80000184: 00002517 auipc a0,0x2 +80000188: ebc50513 addi a0,a0,-324 # 80002040 +8000018c: 00053007 fld ft0,0(a0) +80000190: 00853087 fld ft1,8(a0) +80000194: 01053107 fld ft2,16(a0) +80000198: 01852683 lw a3,24(a0) +8000019c: 01c52303 lw t1,28(a0) +800001a0: a2101553 flt.d a0,ft0,ft1 +800001a4: 00000393 li t2,0 +800001a8: 001015f3 fsflags a1,zero +800001ac: 00000613 li a2,0 +800001b0: 2ed51063 bne a0,a3,80000490 +800001b4: 2c731e63 bne t1,t2,80000490 +800001b8: 2cc59c63 bne a1,a2,80000490 + +800001bc : +800001bc: 00500193 li gp,5 +800001c0: 00002517 auipc a0,0x2 +800001c4: ea050513 addi a0,a0,-352 # 80002060 +800001c8: 00053007 fld ft0,0(a0) +800001cc: 00853087 fld ft1,8(a0) +800001d0: 01053107 fld ft2,16(a0) +800001d4: 01852683 lw a3,24(a0) +800001d8: 01c52303 lw t1,28(a0) +800001dc: a2102553 feq.d a0,ft0,ft1 +800001e0: 00000393 li t2,0 +800001e4: 001015f3 fsflags a1,zero +800001e8: 00000613 li a2,0 +800001ec: 2ad51263 bne a0,a3,80000490 +800001f0: 2a731063 bne t1,t2,80000490 +800001f4: 28c59e63 bne a1,a2,80000490 + +800001f8 : +800001f8: 00600193 li gp,6 +800001fc: 00002517 auipc a0,0x2 +80000200: e8450513 addi a0,a0,-380 # 80002080 +80000204: 00053007 fld ft0,0(a0) +80000208: 00853087 fld ft1,8(a0) +8000020c: 01053107 fld ft2,16(a0) +80000210: 01852683 lw a3,24(a0) +80000214: 01c52303 lw t1,28(a0) +80000218: a2100553 fle.d a0,ft0,ft1 +8000021c: 00000393 li t2,0 +80000220: 001015f3 fsflags a1,zero +80000224: 00000613 li a2,0 +80000228: 26d51463 bne a0,a3,80000490 +8000022c: 26731263 bne t1,t2,80000490 +80000230: 26c59063 bne a1,a2,80000490 + +80000234 : +80000234: 00700193 li gp,7 +80000238: 00002517 auipc a0,0x2 +8000023c: e6850513 addi a0,a0,-408 # 800020a0 +80000240: 00053007 fld ft0,0(a0) +80000244: 00853087 fld ft1,8(a0) +80000248: 01053107 fld ft2,16(a0) +8000024c: 01852683 lw a3,24(a0) +80000250: 01c52303 lw t1,28(a0) +80000254: a2101553 flt.d a0,ft0,ft1 +80000258: 00000393 li t2,0 +8000025c: 001015f3 fsflags a1,zero +80000260: 00000613 li a2,0 +80000264: 22d51663 bne a0,a3,80000490 +80000268: 22731463 bne t1,t2,80000490 +8000026c: 22c59263 bne a1,a2,80000490 + +80000270 : +80000270: 00800193 li gp,8 +80000274: 00002517 auipc a0,0x2 +80000278: e4c50513 addi a0,a0,-436 # 800020c0 +8000027c: 00053007 fld ft0,0(a0) +80000280: 00853087 fld ft1,8(a0) +80000284: 01053107 fld ft2,16(a0) +80000288: 01852683 lw a3,24(a0) +8000028c: 01c52303 lw t1,28(a0) +80000290: a2102553 feq.d a0,ft0,ft1 +80000294: 00000393 li t2,0 +80000298: 001015f3 fsflags a1,zero +8000029c: 00000613 li a2,0 +800002a0: 1ed51863 bne a0,a3,80000490 +800002a4: 1e731663 bne t1,t2,80000490 +800002a8: 1ec59463 bne a1,a2,80000490 + +800002ac : +800002ac: 00900193 li gp,9 +800002b0: 00002517 auipc a0,0x2 +800002b4: e3050513 addi a0,a0,-464 # 800020e0 +800002b8: 00053007 fld ft0,0(a0) +800002bc: 00853087 fld ft1,8(a0) +800002c0: 01053107 fld ft2,16(a0) +800002c4: 01852683 lw a3,24(a0) +800002c8: 01c52303 lw t1,28(a0) +800002cc: a2102553 feq.d a0,ft0,ft1 +800002d0: 00000393 li t2,0 +800002d4: 001015f3 fsflags a1,zero +800002d8: 00000613 li a2,0 +800002dc: 1ad51a63 bne a0,a3,80000490 +800002e0: 1a731863 bne t1,t2,80000490 +800002e4: 1ac59663 bne a1,a2,80000490 + +800002e8 : +800002e8: 00a00193 li gp,10 +800002ec: 00002517 auipc a0,0x2 +800002f0: e1450513 addi a0,a0,-492 # 80002100 +800002f4: 00053007 fld ft0,0(a0) +800002f8: 00853087 fld ft1,8(a0) +800002fc: 01053107 fld ft2,16(a0) +80000300: 01852683 lw a3,24(a0) +80000304: 01c52303 lw t1,28(a0) +80000308: a2102553 feq.d a0,ft0,ft1 +8000030c: 00000393 li t2,0 +80000310: 001015f3 fsflags a1,zero +80000314: 01000613 li a2,16 +80000318: 16d51c63 bne a0,a3,80000490 +8000031c: 16731a63 bne t1,t2,80000490 +80000320: 16c59863 bne a1,a2,80000490 + +80000324 : +80000324: 00b00193 li gp,11 +80000328: 00002517 auipc a0,0x2 +8000032c: df850513 addi a0,a0,-520 # 80002120 +80000330: 00053007 fld ft0,0(a0) +80000334: 00853087 fld ft1,8(a0) +80000338: 01053107 fld ft2,16(a0) +8000033c: 01852683 lw a3,24(a0) +80000340: 01c52303 lw t1,28(a0) +80000344: a2101553 flt.d a0,ft0,ft1 +80000348: 00000393 li t2,0 +8000034c: 001015f3 fsflags a1,zero +80000350: 01000613 li a2,16 +80000354: 12d51e63 bne a0,a3,80000490 +80000358: 12731c63 bne t1,t2,80000490 +8000035c: 12c59a63 bne a1,a2,80000490 + +80000360 : +80000360: 00c00193 li gp,12 +80000364: 00002517 auipc a0,0x2 +80000368: ddc50513 addi a0,a0,-548 # 80002140 +8000036c: 00053007 fld ft0,0(a0) +80000370: 00853087 fld ft1,8(a0) +80000374: 01053107 fld ft2,16(a0) +80000378: 01852683 lw a3,24(a0) +8000037c: 01c52303 lw t1,28(a0) +80000380: a2101553 flt.d a0,ft0,ft1 +80000384: 00000393 li t2,0 +80000388: 001015f3 fsflags a1,zero +8000038c: 01000613 li a2,16 +80000390: 10d51063 bne a0,a3,80000490 +80000394: 0e731e63 bne t1,t2,80000490 +80000398: 0ec59c63 bne a1,a2,80000490 + +8000039c : +8000039c: 00d00193 li gp,13 +800003a0: 00002517 auipc a0,0x2 +800003a4: dc050513 addi a0,a0,-576 # 80002160 +800003a8: 00053007 fld ft0,0(a0) +800003ac: 00853087 fld ft1,8(a0) +800003b0: 01053107 fld ft2,16(a0) +800003b4: 01852683 lw a3,24(a0) +800003b8: 01c52303 lw t1,28(a0) +800003bc: a2101553 flt.d a0,ft0,ft1 +800003c0: 00000393 li t2,0 +800003c4: 001015f3 fsflags a1,zero +800003c8: 01000613 li a2,16 +800003cc: 0cd51263 bne a0,a3,80000490 +800003d0: 0c731063 bne t1,t2,80000490 +800003d4: 0ac59e63 bne a1,a2,80000490 + +800003d8 : +800003d8: 00e00193 li gp,14 +800003dc: 00002517 auipc a0,0x2 +800003e0: da450513 addi a0,a0,-604 # 80002180 +800003e4: 00053007 fld ft0,0(a0) +800003e8: 00853087 fld ft1,8(a0) +800003ec: 01053107 fld ft2,16(a0) +800003f0: 01852683 lw a3,24(a0) +800003f4: 01c52303 lw t1,28(a0) +800003f8: a2100553 fle.d a0,ft0,ft1 +800003fc: 00000393 li t2,0 +80000400: 001015f3 fsflags a1,zero +80000404: 01000613 li a2,16 +80000408: 08d51463 bne a0,a3,80000490 +8000040c: 08731263 bne t1,t2,80000490 +80000410: 08c59063 bne a1,a2,80000490 + +80000414 : +80000414: 00f00193 li gp,15 +80000418: 00002517 auipc a0,0x2 +8000041c: d8850513 addi a0,a0,-632 # 800021a0 +80000420: 00053007 fld ft0,0(a0) +80000424: 00853087 fld ft1,8(a0) +80000428: 01053107 fld ft2,16(a0) +8000042c: 01852683 lw a3,24(a0) +80000430: 01c52303 lw t1,28(a0) +80000434: a2100553 fle.d a0,ft0,ft1 +80000438: 00000393 li t2,0 +8000043c: 001015f3 fsflags a1,zero +80000440: 01000613 li a2,16 +80000444: 04d51663 bne a0,a3,80000490 +80000448: 04731463 bne t1,t2,80000490 +8000044c: 04c59263 bne a1,a2,80000490 + +80000450 : +80000450: 01000193 li gp,16 +80000454: 00002517 auipc a0,0x2 +80000458: d6c50513 addi a0,a0,-660 # 800021c0 +8000045c: 00053007 fld ft0,0(a0) +80000460: 00853087 fld ft1,8(a0) +80000464: 01053107 fld ft2,16(a0) +80000468: 01852683 lw a3,24(a0) +8000046c: 01c52303 lw t1,28(a0) +80000470: a2100553 fle.d a0,ft0,ft1 +80000474: 00000393 li t2,0 +80000478: 001015f3 fsflags a1,zero +8000047c: 01000613 li a2,16 +80000480: 00d51863 bne a0,a3,80000490 +80000484: 00731663 bne t1,t2,80000490 +80000488: 00c59463 bne a1,a2,80000490 +8000048c: 00301c63 bne zero,gp,800004a4 + +80000490 : +80000490: 0ff0000f fence +80000494: 00018063 beqz gp,80000494 +80000498: 00119193 slli gp,gp,0x1 +8000049c: 0011e193 ori gp,gp,1 +800004a0: 00000073 ecall + +800004a4 : +800004a4: 0ff0000f fence +800004a8: 00100193 li gp,1 +800004ac: 00000073 ecall +800004b0: c0001073 unimp +800004b4: 0000 unimp +800004b6: 0000 unimp +800004b8: 0000 unimp +800004ba: 0000 unimp +800004bc: 0000 unimp +800004be: 0000 unimp +800004c0: 0000 unimp +800004c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 5c28f5c3 0x5c28f5c3 +80002004: bff5c28f 0xbff5c28f +80002008: 5c28f5c3 0x5c28f5c3 +8000200c: bff5c28f 0xbff5c28f +80002010: 0000 unimp +80002012: 0000 unimp +80002014: 0000 unimp +80002016: 0000 unimp +80002018: 0001 nop +8000201a: 0000 unimp +8000201c: 0000 unimp +8000201e: 0000 unimp + +80002020 : +80002020: 5c28f5c3 0x5c28f5c3 +80002024: bff5c28f 0xbff5c28f +80002028: 5c28f5c3 0x5c28f5c3 +8000202c: bff5c28f 0xbff5c28f +80002030: 0000 unimp +80002032: 0000 unimp +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0001 nop +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 0000 unimp + +80002040 : +80002040: 5c28f5c3 0x5c28f5c3 +80002044: bff5c28f 0xbff5c28f +80002048: 5c28f5c3 0x5c28f5c3 +8000204c: bff5c28f 0xbff5c28f +80002050: 0000 unimp +80002052: 0000 unimp +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0000 unimp +8000205e: 0000 unimp + +80002060 : +80002060: 51ec lw a1,100(a1) +80002062: 1eb8 addi a4,sp,888 +80002064: eb85 bnez a5,80002094 +80002066: bff5 j 80002062 +80002068: 5c28f5c3 0x5c28f5c3 +8000206c: bff5c28f 0xbff5c28f +80002070: 0000 unimp +80002072: 0000 unimp +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: 0000 unimp +8000207e: 0000 unimp + +80002080 : +80002080: 51ec lw a1,100(a1) +80002082: 1eb8 addi a4,sp,888 +80002084: eb85 bnez a5,800020b4 +80002086: bff5 j 80002082 +80002088: 5c28f5c3 0x5c28f5c3 +8000208c: bff5c28f 0xbff5c28f +80002090: 0000 unimp +80002092: 0000 unimp +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0001 nop +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 0000 unimp + +800020a0 : +800020a0: 51ec lw a1,100(a1) +800020a2: 1eb8 addi a4,sp,888 +800020a4: eb85 bnez a5,800020d4 +800020a6: bff5 j 800020a2 +800020a8: 5c28f5c3 0x5c28f5c3 +800020ac: bff5c28f 0xbff5c28f +800020b0: 0000 unimp +800020b2: 0000 unimp +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0001 nop +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 0000 unimp + +800020c0 : +800020c0: ffff 0xffff +800020c2: ffff 0xffff +800020c4: ffff 0xffff +800020c6: 7fff 0x7fff +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 0000 unimp +800020d0: 0000 unimp +800020d2: 0000 unimp +800020d4: 0000 unimp +800020d6: 0000 unimp +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 0000 unimp + +800020e0 : +800020e0: ffff 0xffff +800020e2: ffff 0xffff +800020e4: ffff 0xffff +800020e6: 7fff 0x7fff +800020e8: ffff 0xffff +800020ea: ffff 0xffff +800020ec: ffff 0xffff +800020ee: 7fff 0x7fff +800020f0: 0000 unimp +800020f2: 0000 unimp +800020f4: 0000 unimp +800020f6: 0000 unimp +800020f8: 0000 unimp +800020fa: 0000 unimp +800020fc: 0000 unimp +800020fe: 0000 unimp + +80002100 : +80002100: 0001 nop +80002102: 0000 unimp +80002104: 0000 unimp +80002106: 7ff0 flw fa2,124(a5) +80002108: 0000 unimp +8000210a: 0000 unimp +8000210c: 0000 unimp +8000210e: 0000 unimp +80002110: 0000 unimp +80002112: 0000 unimp +80002114: 0000 unimp +80002116: 0000 unimp +80002118: 0000 unimp +8000211a: 0000 unimp +8000211c: 0000 unimp +8000211e: 0000 unimp + +80002120 : +80002120: ffff 0xffff +80002122: ffff 0xffff +80002124: ffff 0xffff +80002126: 7fff 0x7fff +80002128: 0000 unimp +8000212a: 0000 unimp +8000212c: 0000 unimp +8000212e: 0000 unimp +80002130: 0000 unimp +80002132: 0000 unimp +80002134: 0000 unimp +80002136: 0000 unimp +80002138: 0000 unimp +8000213a: 0000 unimp +8000213c: 0000 unimp +8000213e: 0000 unimp + +80002140 : +80002140: ffff 0xffff +80002142: ffff 0xffff +80002144: ffff 0xffff +80002146: 7fff 0x7fff +80002148: ffff 0xffff +8000214a: ffff 0xffff +8000214c: ffff 0xffff +8000214e: 7fff 0x7fff +80002150: 0000 unimp +80002152: 0000 unimp +80002154: 0000 unimp +80002156: 0000 unimp +80002158: 0000 unimp +8000215a: 0000 unimp +8000215c: 0000 unimp +8000215e: 0000 unimp + +80002160 : +80002160: 0001 nop +80002162: 0000 unimp +80002164: 0000 unimp +80002166: 7ff0 flw fa2,124(a5) +80002168: 0000 unimp +8000216a: 0000 unimp +8000216c: 0000 unimp +8000216e: 0000 unimp +80002170: 0000 unimp +80002172: 0000 unimp +80002174: 0000 unimp +80002176: 0000 unimp +80002178: 0000 unimp +8000217a: 0000 unimp +8000217c: 0000 unimp +8000217e: 0000 unimp + +80002180 : +80002180: ffff 0xffff +80002182: ffff 0xffff +80002184: ffff 0xffff +80002186: 7fff 0x7fff +80002188: 0000 unimp +8000218a: 0000 unimp +8000218c: 0000 unimp +8000218e: 0000 unimp +80002190: 0000 unimp +80002192: 0000 unimp +80002194: 0000 unimp +80002196: 0000 unimp +80002198: 0000 unimp +8000219a: 0000 unimp +8000219c: 0000 unimp +8000219e: 0000 unimp + +800021a0 : +800021a0: ffff 0xffff +800021a2: ffff 0xffff +800021a4: ffff 0xffff +800021a6: 7fff 0x7fff +800021a8: ffff 0xffff +800021aa: ffff 0xffff +800021ac: ffff 0xffff +800021ae: 7fff 0x7fff +800021b0: 0000 unimp +800021b2: 0000 unimp +800021b4: 0000 unimp +800021b6: 0000 unimp +800021b8: 0000 unimp +800021ba: 0000 unimp +800021bc: 0000 unimp +800021be: 0000 unimp + +800021c0 : +800021c0: 0001 nop +800021c2: 0000 unimp +800021c4: 0000 unimp +800021c6: 7ff0 flw fa2,124(a5) +800021c8: 0000 unimp +800021ca: 0000 unimp +800021cc: 0000 unimp +800021ce: 0000 unimp +800021d0: 0000 unimp +800021d2: 0000 unimp +800021d4: 0000 unimp +800021d6: 0000 unimp +800021d8: 0000 unimp +800021da: 0000 unimp +800021dc: 0000 unimp +800021de: 0000 unimp diff --git a/Tests/isa/rv32ud-p-fcvt b/Tests/isa/rv32ud-p-fcvt new file mode 100644 index 0000000..6dac328 Binary files /dev/null and b/Tests/isa/rv32ud-p-fcvt differ diff --git a/Tests/isa/rv32ud-p-fcvt.dump b/Tests/isa/rv32ud-p-fcvt.dump new file mode 100644 index 0000000..98a0897 --- /dev/null +++ b/Tests/isa/rv32ud-p-fcvt.dump @@ -0,0 +1,286 @@ + +rv32ud-p-fcvt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052683 lw a3,0(a0) +80000118: 00452703 lw a4,4(a0) +8000011c: 00200593 li a1,2 +80000120: d2058053 fcvt.d.w ft0,a1 +80000124: 00053027 fsd ft0,0(a0) +80000128: 00452583 lw a1,4(a0) +8000012c: 00052503 lw a0,0(a0) +80000130: 00101073 fsflags zero +80000134: 16d51263 bne a0,a3,80000298 +80000138: 16e59063 bne a1,a4,80000298 + +8000013c : +8000013c: 00300193 li gp,3 +80000140: 00002517 auipc a0,0x2 +80000144: ec850513 addi a0,a0,-312 # 80002008 +80000148: 00052683 lw a3,0(a0) +8000014c: 00452703 lw a4,4(a0) +80000150: ffe00593 li a1,-2 +80000154: d2058053 fcvt.d.w ft0,a1 +80000158: 00053027 fsd ft0,0(a0) +8000015c: 00452583 lw a1,4(a0) +80000160: 00052503 lw a0,0(a0) +80000164: 00101073 fsflags zero +80000168: 12d51863 bne a0,a3,80000298 +8000016c: 12e59663 bne a1,a4,80000298 + +80000170 : +80000170: 00400193 li gp,4 +80000174: 00002517 auipc a0,0x2 +80000178: e9c50513 addi a0,a0,-356 # 80002010 +8000017c: 00052683 lw a3,0(a0) +80000180: 00452703 lw a4,4(a0) +80000184: 00200593 li a1,2 +80000188: d2158053 fcvt.d.wu ft0,a1 +8000018c: 00053027 fsd ft0,0(a0) +80000190: 00452583 lw a1,4(a0) +80000194: 00052503 lw a0,0(a0) +80000198: 00101073 fsflags zero +8000019c: 0ed51e63 bne a0,a3,80000298 +800001a0: 0ee59c63 bne a1,a4,80000298 + +800001a4 : +800001a4: 00500193 li gp,5 +800001a8: 00002517 auipc a0,0x2 +800001ac: e7050513 addi a0,a0,-400 # 80002018 +800001b0: 00052683 lw a3,0(a0) +800001b4: 00452703 lw a4,4(a0) +800001b8: ffe00593 li a1,-2 +800001bc: d2158053 fcvt.d.wu ft0,a1 +800001c0: 00053027 fsd ft0,0(a0) +800001c4: 00452583 lw a1,4(a0) +800001c8: 00052503 lw a0,0(a0) +800001cc: 00101073 fsflags zero +800001d0: 0cd51463 bne a0,a3,80000298 +800001d4: 0ce59263 bne a1,a4,80000298 + +800001d8 : +800001d8: 00a00193 li gp,10 +800001dc: 00002517 auipc a0,0x2 +800001e0: e4450513 addi a0,a0,-444 # 80002020 +800001e4: 00053007 fld ft0,0(a0) +800001e8: 00853087 fld ft1,8(a0) +800001ec: 01053107 fld ft2,16(a0) +800001f0: 01852683 lw a3,24(a0) +800001f4: 01c52303 lw t1,28(a0) +800001f8: 401071d3 fcvt.s.d ft3,ft0 +800001fc: 420181d3 fcvt.d.s ft3,ft3 +80000200: 00353027 fsd ft3,0(a0) +80000204: 00452383 lw t2,4(a0) +80000208: 00052503 lw a0,0(a0) +8000020c: 001015f3 fsflags a1,zero +80000210: 00000613 li a2,0 +80000214: 08d51263 bne a0,a3,80000298 +80000218: 08731063 bne t1,t2,80000298 +8000021c: 06c59e63 bne a1,a2,80000298 + +80000220 : +80000220: 00b00193 li gp,11 +80000224: 00002517 auipc a0,0x2 +80000228: e1c50513 addi a0,a0,-484 # 80002040 +8000022c: 00052007 flw ft0,0(a0) +80000230: 00452087 flw ft1,4(a0) +80000234: 00852107 flw ft2,8(a0) +80000238: 00c52683 lw a3,12(a0) +8000023c: 420001d3 fcvt.d.s ft3,ft0 +80000240: 4011f1d3 fcvt.s.d ft3,ft3 +80000244: e0018553 fmv.x.w a0,ft3 +80000248: 001015f3 fsflags a1,zero +8000024c: 00000613 li a2,0 +80000250: 04d51463 bne a0,a3,80000298 +80000254: 04c59263 bne a1,a2,80000298 + +80000258 : +80000258: 00002597 auipc a1,0x2 +8000025c: e0858593 addi a1,a1,-504 # 80002060 +80000260: 0005b107 fld ft2,0(a1) +80000264: 40117153 fcvt.s.d ft2,ft2 +80000268: 42010153 fcvt.d.s ft2,ft2 +8000026c: 0025b027 fsd ft2,0(a1) +80000270: 0005a503 lw a0,0(a1) +80000274: 0045a583 lw a1,4(a1) +80000278: 00002f97 auipc t6,0x2 +8000027c: dd8f8f93 addi t6,t6,-552 # 80002050 +80000280: 000fae83 lw t4,0(t6) +80000284: 004faf83 lw t6,4(t6) +80000288: 00c00193 li gp,12 +8000028c: 01d51663 bne a0,t4,80000298 +80000290: 01f59463 bne a1,t6,80000298 +80000294: 00301c63 bne zero,gp,800002ac + +80000298 : +80000298: 0ff0000f fence +8000029c: 00018063 beqz gp,8000029c +800002a0: 00119193 slli gp,gp,0x1 +800002a4: 0011e193 ori gp,gp,1 +800002a8: 00000073 ecall + +800002ac : +800002ac: 0ff0000f fence +800002b0: 00100193 li gp,1 +800002b4: 00000073 ecall +800002b8: c0001073 unimp +800002bc: 0000 unimp +800002be: 0000 unimp +800002c0: 0000 unimp +800002c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 0000 unimp +80002004: 0000 unimp +80002006: 4000 lw s0,0(s0) + +80002008 : +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: c000 sw s0,0(s0) + +80002010 : +80002010: 0000 unimp +80002012: 0000 unimp +80002014: 0000 unimp +80002016: 4000 lw s0,0(s0) + +80002018 : +80002018: 0000 unimp +8000201a: ffc0 fsw fs0,60(a5) +8000201c: ffff 0xffff +8000201e: jal gp,8000601e <_end+0x3fae> + +80002020 : +80002020: 0000 unimp +80002022: 0000 unimp +80002024: 0000 unimp +80002026: bff8 fsd fa4,248(a5) +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp +80002030: 0000 unimp +80002032: 0000 unimp +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: bff8 fsd fa4,248(a5) + +80002040 : +80002040: 0000 unimp +80002042: bfc0 fsd fs0,184(a5) +80002044: 0000 unimp +80002046: 0000 unimp +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0000 unimp +8000204e: bfc0 fsd fs0,184(a5) + +80002050 : +80002050: 0000 unimp +80002052: 0000 unimp +80002054: 0000 unimp +80002056: 7ff8 flw fa4,124(a5) +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0000 unimp +8000205e: 0000 unimp + +80002060 : +80002060: 8004 0x8004 +80002062: ffff 0xffff +80002064: ffff 0xffff +80002066: 7ffc flw fa5,124(a5) +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 0000 unimp diff --git a/Tests/isa/rv32ud-p-fcvt_w b/Tests/isa/rv32ud-p-fcvt_w new file mode 100644 index 0000000..a6d51f1 Binary files /dev/null and b/Tests/isa/rv32ud-p-fcvt_w differ diff --git a/Tests/isa/rv32ud-p-fcvt_w.dump b/Tests/isa/rv32ud-p-fcvt_w.dump new file mode 100644 index 0000000..e7027cb --- /dev/null +++ b/Tests/isa/rv32ud-p-fcvt_w.dump @@ -0,0 +1,604 @@ + +rv32ud-p-fcvt_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052007 flw ft0,0(a0) +80000118: 00452087 flw ft1,4(a0) +8000011c: 00852107 flw ft2,8(a0) +80000120: 00c52683 lw a3,12(a0) +80000124: c0001553 fcvt.w.s a0,ft0,rtz +80000128: 001015f3 fsflags a1,zero +8000012c: 00100613 li a2,1 +80000130: 3cd51463 bne a0,a3,800004f8 +80000134: 3cc59263 bne a1,a2,800004f8 + +80000138 : +80000138: 00300193 li gp,3 +8000013c: 00002517 auipc a0,0x2 +80000140: ed450513 addi a0,a0,-300 # 80002010 +80000144: 00052007 flw ft0,0(a0) +80000148: 00452087 flw ft1,4(a0) +8000014c: 00852107 flw ft2,8(a0) +80000150: 00c52683 lw a3,12(a0) +80000154: c0001553 fcvt.w.s a0,ft0,rtz +80000158: 001015f3 fsflags a1,zero +8000015c: 00000613 li a2,0 +80000160: 38d51c63 bne a0,a3,800004f8 +80000164: 38c59a63 bne a1,a2,800004f8 + +80000168 : +80000168: 00400193 li gp,4 +8000016c: 00002517 auipc a0,0x2 +80000170: eb450513 addi a0,a0,-332 # 80002020 +80000174: 00052007 flw ft0,0(a0) +80000178: 00452087 flw ft1,4(a0) +8000017c: 00852107 flw ft2,8(a0) +80000180: 00c52683 lw a3,12(a0) +80000184: c0001553 fcvt.w.s a0,ft0,rtz +80000188: 001015f3 fsflags a1,zero +8000018c: 00100613 li a2,1 +80000190: 36d51463 bne a0,a3,800004f8 +80000194: 36c59263 bne a1,a2,800004f8 + +80000198 : +80000198: 00500193 li gp,5 +8000019c: 00002517 auipc a0,0x2 +800001a0: e9450513 addi a0,a0,-364 # 80002030 +800001a4: 00052007 flw ft0,0(a0) +800001a8: 00452087 flw ft1,4(a0) +800001ac: 00852107 flw ft2,8(a0) +800001b0: 00c52683 lw a3,12(a0) +800001b4: c0001553 fcvt.w.s a0,ft0,rtz +800001b8: 001015f3 fsflags a1,zero +800001bc: 00100613 li a2,1 +800001c0: 32d51c63 bne a0,a3,800004f8 +800001c4: 32c59a63 bne a1,a2,800004f8 + +800001c8 : +800001c8: 00600193 li gp,6 +800001cc: 00002517 auipc a0,0x2 +800001d0: e7450513 addi a0,a0,-396 # 80002040 +800001d4: 00052007 flw ft0,0(a0) +800001d8: 00452087 flw ft1,4(a0) +800001dc: 00852107 flw ft2,8(a0) +800001e0: 00c52683 lw a3,12(a0) +800001e4: c0001553 fcvt.w.s a0,ft0,rtz +800001e8: 001015f3 fsflags a1,zero +800001ec: 00000613 li a2,0 +800001f0: 30d51463 bne a0,a3,800004f8 +800001f4: 30c59263 bne a1,a2,800004f8 + +800001f8 : +800001f8: 00700193 li gp,7 +800001fc: 00002517 auipc a0,0x2 +80000200: e5450513 addi a0,a0,-428 # 80002050 +80000204: 00052007 flw ft0,0(a0) +80000208: 00452087 flw ft1,4(a0) +8000020c: 00852107 flw ft2,8(a0) +80000210: 00c52683 lw a3,12(a0) +80000214: c0001553 fcvt.w.s a0,ft0,rtz +80000218: 001015f3 fsflags a1,zero +8000021c: 00100613 li a2,1 +80000220: 2cd51c63 bne a0,a3,800004f8 +80000224: 2cc59a63 bne a1,a2,800004f8 + +80000228 : +80000228: 00800193 li gp,8 +8000022c: 00002517 auipc a0,0x2 +80000230: e3450513 addi a0,a0,-460 # 80002060 +80000234: 00052007 flw ft0,0(a0) +80000238: 00452087 flw ft1,4(a0) +8000023c: 00852107 flw ft2,8(a0) +80000240: 00c52683 lw a3,12(a0) +80000244: c0001553 fcvt.w.s a0,ft0,rtz +80000248: 001015f3 fsflags a1,zero +8000024c: 01000613 li a2,16 +80000250: 2ad51463 bne a0,a3,800004f8 +80000254: 2ac59263 bne a1,a2,800004f8 + +80000258 : +80000258: 00900193 li gp,9 +8000025c: 00002517 auipc a0,0x2 +80000260: e1450513 addi a0,a0,-492 # 80002070 +80000264: 00052007 flw ft0,0(a0) +80000268: 00452087 flw ft1,4(a0) +8000026c: 00852107 flw ft2,8(a0) +80000270: 00c52683 lw a3,12(a0) +80000274: c0001553 fcvt.w.s a0,ft0,rtz +80000278: 001015f3 fsflags a1,zero +8000027c: 01000613 li a2,16 +80000280: 26d51c63 bne a0,a3,800004f8 +80000284: 26c59a63 bne a1,a2,800004f8 + +80000288 : +80000288: 00c00193 li gp,12 +8000028c: 00002517 auipc a0,0x2 +80000290: df450513 addi a0,a0,-524 # 80002080 +80000294: 00052007 flw ft0,0(a0) +80000298: 00452087 flw ft1,4(a0) +8000029c: 00852107 flw ft2,8(a0) +800002a0: 00c52683 lw a3,12(a0) +800002a4: c0101553 fcvt.wu.s a0,ft0,rtz +800002a8: 001015f3 fsflags a1,zero +800002ac: 01000613 li a2,16 +800002b0: 24d51463 bne a0,a3,800004f8 +800002b4: 24c59263 bne a1,a2,800004f8 + +800002b8 : +800002b8: 00d00193 li gp,13 +800002bc: 00002517 auipc a0,0x2 +800002c0: dd450513 addi a0,a0,-556 # 80002090 +800002c4: 00052007 flw ft0,0(a0) +800002c8: 00452087 flw ft1,4(a0) +800002cc: 00852107 flw ft2,8(a0) +800002d0: 00c52683 lw a3,12(a0) +800002d4: c0101553 fcvt.wu.s a0,ft0,rtz +800002d8: 001015f3 fsflags a1,zero +800002dc: 01000613 li a2,16 +800002e0: 20d51c63 bne a0,a3,800004f8 +800002e4: 20c59a63 bne a1,a2,800004f8 + +800002e8 : +800002e8: 00e00193 li gp,14 +800002ec: 00002517 auipc a0,0x2 +800002f0: db450513 addi a0,a0,-588 # 800020a0 +800002f4: 00052007 flw ft0,0(a0) +800002f8: 00452087 flw ft1,4(a0) +800002fc: 00852107 flw ft2,8(a0) +80000300: 00c52683 lw a3,12(a0) +80000304: c0101553 fcvt.wu.s a0,ft0,rtz +80000308: 001015f3 fsflags a1,zero +8000030c: 00100613 li a2,1 +80000310: 1ed51463 bne a0,a3,800004f8 +80000314: 1ec59263 bne a1,a2,800004f8 + +80000318 : +80000318: 00f00193 li gp,15 +8000031c: 00002517 auipc a0,0x2 +80000320: d9450513 addi a0,a0,-620 # 800020b0 +80000324: 00052007 flw ft0,0(a0) +80000328: 00452087 flw ft1,4(a0) +8000032c: 00852107 flw ft2,8(a0) +80000330: 00c52683 lw a3,12(a0) +80000334: c0101553 fcvt.wu.s a0,ft0,rtz +80000338: 001015f3 fsflags a1,zero +8000033c: 00100613 li a2,1 +80000340: 1ad51c63 bne a0,a3,800004f8 +80000344: 1ac59a63 bne a1,a2,800004f8 + +80000348 : +80000348: 01000193 li gp,16 +8000034c: 00002517 auipc a0,0x2 +80000350: d7450513 addi a0,a0,-652 # 800020c0 +80000354: 00052007 flw ft0,0(a0) +80000358: 00452087 flw ft1,4(a0) +8000035c: 00852107 flw ft2,8(a0) +80000360: 00c52683 lw a3,12(a0) +80000364: c0101553 fcvt.wu.s a0,ft0,rtz +80000368: 001015f3 fsflags a1,zero +8000036c: 00000613 li a2,0 +80000370: 18d51463 bne a0,a3,800004f8 +80000374: 18c59263 bne a1,a2,800004f8 + +80000378 : +80000378: 01100193 li gp,17 +8000037c: 00002517 auipc a0,0x2 +80000380: d5450513 addi a0,a0,-684 # 800020d0 +80000384: 00052007 flw ft0,0(a0) +80000388: 00452087 flw ft1,4(a0) +8000038c: 00852107 flw ft2,8(a0) +80000390: 00c52683 lw a3,12(a0) +80000394: c0101553 fcvt.wu.s a0,ft0,rtz +80000398: 001015f3 fsflags a1,zero +8000039c: 00100613 li a2,1 +800003a0: 14d51c63 bne a0,a3,800004f8 +800003a4: 14c59a63 bne a1,a2,800004f8 + +800003a8 : +800003a8: 01200193 li gp,18 +800003ac: 00002517 auipc a0,0x2 +800003b0: d3450513 addi a0,a0,-716 # 800020e0 +800003b4: 00052007 flw ft0,0(a0) +800003b8: 00452087 flw ft1,4(a0) +800003bc: 00852107 flw ft2,8(a0) +800003c0: 00c52683 lw a3,12(a0) +800003c4: c0101553 fcvt.wu.s a0,ft0,rtz +800003c8: 001015f3 fsflags a1,zero +800003cc: 01000613 li a2,16 +800003d0: 12d51463 bne a0,a3,800004f8 +800003d4: 12c59263 bne a1,a2,800004f8 + +800003d8 : +800003d8: 01300193 li gp,19 +800003dc: 00002517 auipc a0,0x2 +800003e0: d1450513 addi a0,a0,-748 # 800020f0 +800003e4: 00052007 flw ft0,0(a0) +800003e8: 00452087 flw ft1,4(a0) +800003ec: 00852107 flw ft2,8(a0) +800003f0: 00c52683 lw a3,12(a0) +800003f4: c0101553 fcvt.wu.s a0,ft0,rtz +800003f8: 001015f3 fsflags a1,zero +800003fc: 00000613 li a2,0 +80000400: 0ed51c63 bne a0,a3,800004f8 +80000404: 0ec59a63 bne a1,a2,800004f8 + +80000408 : +80000408: 00002097 auipc ra,0x2 +8000040c: cf808093 addi ra,ra,-776 # 80002100 +80000410: 0000a087 flw ft1,0(ra) +80000414: c000f0d3 fcvt.w.s ra,ft1 +80000418: 80000eb7 lui t4,0x80000 +8000041c: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdecf> +80000420: 02a00193 li gp,42 +80000424: 0dd09a63 bne ra,t4,800004f8 + +80000428 : +80000428: 00002097 auipc ra,0x2 +8000042c: cd808093 addi ra,ra,-808 # 80002100 +80000430: 0080a087 flw ft1,8(ra) +80000434: c000f0d3 fcvt.w.s ra,ft1 +80000438: 80000eb7 lui t4,0x80000 +8000043c: 02c00193 li gp,44 +80000440: 0bd09c63 bne ra,t4,800004f8 + +80000444 : +80000444: 00002097 auipc ra,0x2 +80000448: cbc08093 addi ra,ra,-836 # 80002100 +8000044c: 0040a087 flw ft1,4(ra) +80000450: c000f0d3 fcvt.w.s ra,ft1 +80000454: 80000eb7 lui t4,0x80000 +80000458: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdecf> +8000045c: 03400193 li gp,52 +80000460: 09d09c63 bne ra,t4,800004f8 + +80000464 : +80000464: 00002097 auipc ra,0x2 +80000468: c9c08093 addi ra,ra,-868 # 80002100 +8000046c: 00c0a087 flw ft1,12(ra) +80000470: c000f0d3 fcvt.w.s ra,ft1 +80000474: 80000eb7 lui t4,0x80000 +80000478: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdecf> +8000047c: 03600193 li gp,54 +80000480: 07d09c63 bne ra,t4,800004f8 + +80000484 : +80000484: 00002097 auipc ra,0x2 +80000488: c7c08093 addi ra,ra,-900 # 80002100 +8000048c: 0000a087 flw ft1,0(ra) +80000490: c010f0d3 fcvt.wu.s ra,ft1 +80000494: fff00e93 li t4,-1 +80000498: 03e00193 li gp,62 +8000049c: 05d09e63 bne ra,t4,800004f8 + +800004a0 : +800004a0: 00002097 auipc ra,0x2 +800004a4: c6008093 addi ra,ra,-928 # 80002100 +800004a8: 0040a087 flw ft1,4(ra) +800004ac: c010f0d3 fcvt.wu.s ra,ft1 +800004b0: fff00e93 li t4,-1 +800004b4: 03f00193 li gp,63 +800004b8: 05d09063 bne ra,t4,800004f8 + +800004bc : +800004bc: 00002097 auipc ra,0x2 +800004c0: c4408093 addi ra,ra,-956 # 80002100 +800004c4: 0080a087 flw ft1,8(ra) +800004c8: c010f0d3 fcvt.wu.s ra,ft1 +800004cc: 00000e93 li t4,0 +800004d0: 04000193 li gp,64 +800004d4: 03d09263 bne ra,t4,800004f8 + +800004d8 : +800004d8: 00002097 auipc ra,0x2 +800004dc: c2808093 addi ra,ra,-984 # 80002100 +800004e0: 00c0a087 flw ft1,12(ra) +800004e4: c010f0d3 fcvt.wu.s ra,ft1 +800004e8: fff00e93 li t4,-1 +800004ec: 04100193 li gp,65 +800004f0: 01d09463 bne ra,t4,800004f8 +800004f4: 00301c63 bne zero,gp,8000050c + +800004f8 : +800004f8: 0ff0000f fence +800004fc: 00018063 beqz gp,800004fc +80000500: 00119193 slli gp,gp,0x1 +80000504: 0011e193 ori gp,gp,1 +80000508: 00000073 ecall + +8000050c : +8000050c: 0ff0000f fence +80000510: 00100193 li gp,1 +80000514: 00000073 ecall +80000518: c0001073 unimp +8000051c: 0000 unimp +8000051e: 0000 unimp +80000520: 0000 unimp +80000522: 0000 unimp +80000524: 0000 unimp +80000526: 0000 unimp +80000528: 0000 unimp +8000052a: 0000 unimp +8000052c: 0000 unimp +8000052e: 0000 unimp +80000530: 0000 unimp +80000532: 0000 unimp +80000534: 0000 unimp +80000536: 0000 unimp +80000538: 0000 unimp +8000053a: 0000 unimp +8000053c: 0000 unimp +8000053e: 0000 unimp +80000540: 0000 unimp +80000542: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: cccd beqz s1,800020ba +80002002: bf8c fsd fa1,56(a5) +80002004: 0000 unimp +80002006: 0000 unimp +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: ffff 0xffff +8000200e: ffff 0xffff + +80002010 : +80002010: 0000 unimp +80002012: bf80 fsd fs0,56(a5) +80002014: 0000 unimp +80002016: 0000 unimp +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: ffff 0xffff +8000201e: ffff 0xffff + +80002020 : +80002020: 6666 flw fa2,88(sp) +80002022: bf66 fsd fs9,440(sp) +80002024: 0000 unimp +80002026: 0000 unimp +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp + +80002030 : +80002030: 6666 flw fa2,88(sp) +80002032: 3f66 fld ft10,120(sp) +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 0000 unimp + +80002040 : +80002040: 0000 unimp +80002042: 3f80 fld fs0,56(a5) +80002044: 0000 unimp +80002046: 0000 unimp +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0001 nop +8000204e: 0000 unimp + +80002050 : +80002050: cccd beqz s1,8000210a +80002052: 3f8c fld fa1,56(a5) +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0001 nop +8000205e: 0000 unimp + +80002060 : +80002060: d05e sw s7,32(sp) +80002062: cf32 sw a2,156(sp) +80002064: 0000 unimp +80002066: 0000 unimp +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 8000 0x8000 + +80002070 : +80002070: d05e sw s7,32(sp) +80002072: 4f32 lw t5,12(sp) +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: ffff 0xffff +8000207e: 7fff 0x7fff + +80002080 : +80002080: 0000 unimp +80002082: c040 sw s0,4(s0) +80002084: 0000 unimp +80002086: 0000 unimp +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: 0000 unimp +8000208e: 0000 unimp + +80002090 : +80002090: 0000 unimp +80002092: bf80 fsd fs0,56(a5) +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 0000 unimp + +800020a0 : +800020a0: 6666 flw fa2,88(sp) +800020a2: bf66 fsd fs9,440(sp) +800020a4: 0000 unimp +800020a6: 0000 unimp +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: 0000 unimp + +800020b0 : +800020b0: 6666 flw fa2,88(sp) +800020b2: 3f66 fld ft10,120(sp) +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 0000 unimp + +800020c0 : +800020c0: 0000 unimp +800020c2: 3f80 fld fs0,56(a5) +800020c4: 0000 unimp +800020c6: 0000 unimp +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0001 nop +800020ce: 0000 unimp + +800020d0 : +800020d0: cccd beqz s1,8000218a <_end+0x5a> +800020d2: 3f8c fld fa1,56(a5) +800020d4: 0000 unimp +800020d6: 0000 unimp +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0001 nop +800020de: 0000 unimp + +800020e0 : +800020e0: d05e sw s7,32(sp) +800020e2: cf32 sw a2,156(sp) +800020e4: 0000 unimp +800020e6: 0000 unimp +800020e8: 0000 unimp +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 0000 unimp + +800020f0 : +800020f0: d05e sw s7,32(sp) +800020f2: 4f32 lw t5,12(sp) +800020f4: 0000 unimp +800020f6: 0000 unimp +800020f8: 0000 unimp +800020fa: 0000 unimp +800020fc: 5e00 lw s0,56(a2) +800020fe: b2d0 fsd fa2,160(a3) + +80002100 : +80002100: ffff 0xffff +80002102: ffff 0xffff +80002104: ffff 0xffff +80002106: 7fff 0x7fff +80002108: 0000 unimp +8000210a: ff80 fsw fs0,56(a5) +8000210c: 0000 unimp +8000210e: 7f80 flw fs0,56(a5) + +80002110 : +80002110: ffff 0xffff +80002112: ffff 0xffff +80002114: ffff 0xffff +80002116: ffff 0xffff +80002118: ffff 0xffff +8000211a: ffff 0xffff +8000211c: ffff 0xffff +8000211e: 7fff 0x7fff +80002120: 0000 unimp +80002122: 0000 unimp +80002124: 0000 unimp +80002126: fff0 fsw fa2,124(a5) +80002128: 0000 unimp +8000212a: 0000 unimp +8000212c: 0000 unimp +8000212e: 7ff0 flw fa2,124(a5) diff --git a/Tests/isa/rv32ud-p-fdiv b/Tests/isa/rv32ud-p-fdiv new file mode 100644 index 0000000..6249aa6 Binary files /dev/null and b/Tests/isa/rv32ud-p-fdiv differ diff --git a/Tests/isa/rv32ud-p-fdiv.dump b/Tests/isa/rv32ud-p-fdiv.dump new file mode 100644 index 0000000..f4dd59c --- /dev/null +++ b/Tests/isa/rv32ud-p-fdiv.dump @@ -0,0 +1,407 @@ + +rv32ud-p-fdiv: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00053007 fld ft0,0(a0) +80000118: 00853087 fld ft1,8(a0) +8000011c: 01053107 fld ft2,16(a0) +80000120: 01852683 lw a3,24(a0) +80000124: 01c52303 lw t1,28(a0) +80000128: 1a1071d3 fdiv.d ft3,ft0,ft1 +8000012c: 00353027 fsd ft3,0(a0) +80000130: 00452383 lw t2,4(a0) +80000134: 00052503 lw a0,0(a0) +80000138: 001015f3 fsflags a1,zero +8000013c: 00100613 li a2,1 +80000140: 1ed51663 bne a0,a3,8000032c +80000144: 1e731463 bne t1,t2,8000032c +80000148: 1ec59263 bne a1,a2,8000032c + +8000014c : +8000014c: 00300193 li gp,3 +80000150: 00002517 auipc a0,0x2 +80000154: ed050513 addi a0,a0,-304 # 80002020 +80000158: 00053007 fld ft0,0(a0) +8000015c: 00853087 fld ft1,8(a0) +80000160: 01053107 fld ft2,16(a0) +80000164: 01852683 lw a3,24(a0) +80000168: 01c52303 lw t1,28(a0) +8000016c: 1a1071d3 fdiv.d ft3,ft0,ft1 +80000170: 00353027 fsd ft3,0(a0) +80000174: 00452383 lw t2,4(a0) +80000178: 00052503 lw a0,0(a0) +8000017c: 001015f3 fsflags a1,zero +80000180: 00100613 li a2,1 +80000184: 1ad51463 bne a0,a3,8000032c +80000188: 1a731263 bne t1,t2,8000032c +8000018c: 1ac59063 bne a1,a2,8000032c + +80000190 : +80000190: 00400193 li gp,4 +80000194: 00002517 auipc a0,0x2 +80000198: eac50513 addi a0,a0,-340 # 80002040 +8000019c: 00053007 fld ft0,0(a0) +800001a0: 00853087 fld ft1,8(a0) +800001a4: 01053107 fld ft2,16(a0) +800001a8: 01852683 lw a3,24(a0) +800001ac: 01c52303 lw t1,28(a0) +800001b0: 1a1071d3 fdiv.d ft3,ft0,ft1 +800001b4: 00353027 fsd ft3,0(a0) +800001b8: 00452383 lw t2,4(a0) +800001bc: 00052503 lw a0,0(a0) +800001c0: 001015f3 fsflags a1,zero +800001c4: 00000613 li a2,0 +800001c8: 16d51263 bne a0,a3,8000032c +800001cc: 16731063 bne t1,t2,8000032c +800001d0: 14c59e63 bne a1,a2,8000032c + +800001d4 : +800001d4: 00500193 li gp,5 +800001d8: 00002517 auipc a0,0x2 +800001dc: e8850513 addi a0,a0,-376 # 80002060 +800001e0: 00053007 fld ft0,0(a0) +800001e4: 00853087 fld ft1,8(a0) +800001e8: 01053107 fld ft2,16(a0) +800001ec: 01852683 lw a3,24(a0) +800001f0: 01c52303 lw t1,28(a0) +800001f4: 5a0071d3 fsqrt.d ft3,ft0 +800001f8: 00353027 fsd ft3,0(a0) +800001fc: 00452383 lw t2,4(a0) +80000200: 00052503 lw a0,0(a0) +80000204: 001015f3 fsflags a1,zero +80000208: 00100613 li a2,1 +8000020c: 12d51063 bne a0,a3,8000032c +80000210: 10731e63 bne t1,t2,8000032c +80000214: 10c59c63 bne a1,a2,8000032c + +80000218 : +80000218: 00600193 li gp,6 +8000021c: 00002517 auipc a0,0x2 +80000220: e6450513 addi a0,a0,-412 # 80002080 +80000224: 00053007 fld ft0,0(a0) +80000228: 00853087 fld ft1,8(a0) +8000022c: 01053107 fld ft2,16(a0) +80000230: 01852683 lw a3,24(a0) +80000234: 01c52303 lw t1,28(a0) +80000238: 5a0071d3 fsqrt.d ft3,ft0 +8000023c: 00353027 fsd ft3,0(a0) +80000240: 00452383 lw t2,4(a0) +80000244: 00052503 lw a0,0(a0) +80000248: 001015f3 fsflags a1,zero +8000024c: 00000613 li a2,0 +80000250: 0cd51e63 bne a0,a3,8000032c +80000254: 0c731c63 bne t1,t2,8000032c +80000258: 0cc59a63 bne a1,a2,8000032c + +8000025c : +8000025c: 01000193 li gp,16 +80000260: 00002517 auipc a0,0x2 +80000264: e4050513 addi a0,a0,-448 # 800020a0 +80000268: 00053007 fld ft0,0(a0) +8000026c: 00853087 fld ft1,8(a0) +80000270: 01053107 fld ft2,16(a0) +80000274: 01852683 lw a3,24(a0) +80000278: 01c52303 lw t1,28(a0) +8000027c: 5a0071d3 fsqrt.d ft3,ft0 +80000280: 00353027 fsd ft3,0(a0) +80000284: 00452383 lw t2,4(a0) +80000288: 00052503 lw a0,0(a0) +8000028c: 001015f3 fsflags a1,zero +80000290: 01000613 li a2,16 +80000294: 08d51c63 bne a0,a3,8000032c +80000298: 08731a63 bne t1,t2,8000032c +8000029c: 08c59863 bne a1,a2,8000032c + +800002a0 : +800002a0: 00700193 li gp,7 +800002a4: 00002517 auipc a0,0x2 +800002a8: e1c50513 addi a0,a0,-484 # 800020c0 +800002ac: 00053007 fld ft0,0(a0) +800002b0: 00853087 fld ft1,8(a0) +800002b4: 01053107 fld ft2,16(a0) +800002b8: 01852683 lw a3,24(a0) +800002bc: 01c52303 lw t1,28(a0) +800002c0: 5a0071d3 fsqrt.d ft3,ft0 +800002c4: 00353027 fsd ft3,0(a0) +800002c8: 00452383 lw t2,4(a0) +800002cc: 00052503 lw a0,0(a0) +800002d0: 001015f3 fsflags a1,zero +800002d4: 00100613 li a2,1 +800002d8: 04d51a63 bne a0,a3,8000032c +800002dc: 04731863 bne t1,t2,8000032c +800002e0: 04c59663 bne a1,a2,8000032c + +800002e4 : +800002e4: 00800193 li gp,8 +800002e8: 00002517 auipc a0,0x2 +800002ec: df850513 addi a0,a0,-520 # 800020e0 +800002f0: 00053007 fld ft0,0(a0) +800002f4: 00853087 fld ft1,8(a0) +800002f8: 01053107 fld ft2,16(a0) +800002fc: 01852683 lw a3,24(a0) +80000300: 01c52303 lw t1,28(a0) +80000304: 5a0071d3 fsqrt.d ft3,ft0 +80000308: 00353027 fsd ft3,0(a0) +8000030c: 00452383 lw t2,4(a0) +80000310: 00052503 lw a0,0(a0) +80000314: 001015f3 fsflags a1,zero +80000318: 00100613 li a2,1 +8000031c: 00d51863 bne a0,a3,8000032c +80000320: 00731663 bne t1,t2,8000032c +80000324: 00c59463 bne a1,a2,8000032c +80000328: 00301c63 bne zero,gp,80000340 + +8000032c : +8000032c: 0ff0000f fence +80000330: 00018063 beqz gp,80000330 +80000334: 00119193 slli gp,gp,0x1 +80000338: 0011e193 ori gp,gp,1 +8000033c: 00000073 ecall + +80000340 : +80000340: 0ff0000f fence +80000344: 00100193 li gp,1 +80000348: 00000073 ecall +8000034c: c0001073 unimp +80000350: 0000 unimp +80000352: 0000 unimp +80000354: 0000 unimp +80000356: 0000 unimp +80000358: 0000 unimp +8000035a: 0000 unimp +8000035c: 0000 unimp +8000035e: 0000 unimp +80000360: 0000 unimp +80000362: 0000 unimp +80000364: 0000 unimp +80000366: 0000 unimp +80000368: 0000 unimp +8000036a: 0000 unimp +8000036c: 0000 unimp +8000036e: 0000 unimp +80000370: 0000 unimp +80000372: 0000 unimp +80000374: 0000 unimp +80000376: 0000 unimp +80000378: 0000 unimp +8000037a: 0000 unimp +8000037c: 0000 unimp +8000037e: 0000 unimp +80000380: 0000 unimp +80000382: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: d4f1 beqz s1,80001fcc +80002002: 53c8 lw a0,36(a5) +80002004: 400921fb 0x400921fb +80002008: b0dd j 800018ee +8000200a: 89f1 andi a1,a1,28 +8000200c: bf0a fsd ft2,440(sp) +8000200e: 4005 c.li zero,1 +80002010: 0000 unimp +80002012: 0000 unimp +80002014: 0000 unimp +80002016: 0000 unimp +80002018: 83ec 0x83ec +8000201a: 7ddbf6c3 0x7ddbf6c3 +8000201e: 3ff2 fld ft11,312(sp) + +80002020 : +80002020: 0000 unimp +80002022: 0000 unimp +80002024: 4800 lw s0,16(s0) +80002026: 6666c093 xori ra,a3,1638 +8000202a: 6666 flw fa2,88(sp) +8000202c: 4c66 lw s8,88(sp) +8000202e: 00004093 xori ra,zero,0 +80002032: 0000 unimp +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 29a5 jal 800024b0 <_end+0x3b0> +8000203a: 3e19 jal 80001b50 +8000203c: f8b4 fsw fa3,112(s1) +8000203e: jal t6,7ff1dd8c <_start-0xe2274> + +80002040 : +80002040: d4f1 beqz s1,8000200c +80002042: 53c8 lw a0,36(a5) +80002044: 400921fb 0x400921fb +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0000 unimp +8000204e: 3ff0 fld fa2,248(a5) +80002050: 0000 unimp +80002052: 0000 unimp +80002054: 0000 unimp +80002056: 0000 unimp +80002058: d4f1 beqz s1,80002024 +8000205a: 53c8 lw a0,36(a5) +8000205c: 400921fb 0x400921fb + +80002060 : +80002060: d4f1 beqz s1,8000202c +80002062: 53c8 lw a0,36(a5) +80002064: 400921fb 0x400921fb +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 0000 unimp +80002070: 0000 unimp +80002072: 0000 unimp +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 916f587b 0x916f587b +8000207c: 5bf8 lw a4,116(a5) +8000207e: 3ffc fld fa5,248(a5) + +80002080 : +80002080: 0000 unimp +80002082: 0000 unimp +80002084: 8800 0x8800 +80002086: 000040c3 fmadd.s ft1,ft0,ft0,ft0,rmm +8000208a: 0000 unimp +8000208c: 0000 unimp +8000208e: 0000 unimp +80002090: 0000 unimp +80002092: 0000 unimp +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 4059 c.li zero,22 + +800020a0 : +800020a0: 0000 unimp +800020a2: 0000 unimp +800020a4: 0000 unimp +800020a6: bff0 fsd fa2,248(a5) +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: 0000 unimp +800020b0: 0000 unimp +800020b2: 0000 unimp +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 7ff8 flw fa4,124(a5) + +800020c0 : +800020c0: 0000 unimp +800020c2: 0000 unimp +800020c4: 6000 flw fs0,0(s0) +800020c6: 4065 c.li zero,25 +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 0000 unimp +800020d0: 0000 unimp +800020d2: 0000 unimp +800020d4: 0000 unimp +800020d6: 0000 unimp +800020d8: 74f5 lui s1,0xffffd +800020da: ce96 sw t0,92(sp) +800020dc: 2744 fld fs1,136(a4) +800020de: 402a 0x402a + +800020e0 : +800020e0: a105 j 80002500 <_end+0x400> +800020e2: c70a sw sp,140(sp) +800020e4: 94df 3e85 0000 0x3e8594df +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 0000 unimp +800020f0: 0000 unimp +800020f2: 0000 unimp +800020f4: 0000 unimp +800020f6: 0000 unimp +800020f8: 7f99 lui t6,0xfffe6 +800020fa: 4789c0e3 blt s3,s8,80002d5a <_end+0xc5a> +800020fe: 3f3a fld ft10,424(sp) diff --git a/Tests/isa/rv32ud-p-fmadd b/Tests/isa/rv32ud-p-fmadd new file mode 100644 index 0000000..51468f4 Binary files /dev/null and b/Tests/isa/rv32ud-p-fmadd differ diff --git a/Tests/isa/rv32ud-p-fmadd.dump b/Tests/isa/rv32ud-p-fmadd.dump new file mode 100644 index 0000000..c7fb072 --- /dev/null +++ b/Tests/isa/rv32ud-p-fmadd.dump @@ -0,0 +1,555 @@ + +rv32ud-p-fmadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00053007 fld ft0,0(a0) +80000118: 00853087 fld ft1,8(a0) +8000011c: 01053107 fld ft2,16(a0) +80000120: 01852683 lw a3,24(a0) +80000124: 01c52303 lw t1,28(a0) +80000128: 121071c3 fmadd.d ft3,ft0,ft1,ft2 +8000012c: 00353027 fsd ft3,0(a0) +80000130: 00452383 lw t2,4(a0) +80000134: 00052503 lw a0,0(a0) +80000138: 001015f3 fsflags a1,zero +8000013c: 00000613 li a2,0 +80000140: 2ed51e63 bne a0,a3,8000043c +80000144: 2e731c63 bne t1,t2,8000043c +80000148: 2ec59a63 bne a1,a2,8000043c + +8000014c : +8000014c: 00300193 li gp,3 +80000150: 00002517 auipc a0,0x2 +80000154: ed050513 addi a0,a0,-304 # 80002020 +80000158: 00053007 fld ft0,0(a0) +8000015c: 00853087 fld ft1,8(a0) +80000160: 01053107 fld ft2,16(a0) +80000164: 01852683 lw a3,24(a0) +80000168: 01c52303 lw t1,28(a0) +8000016c: 121071c3 fmadd.d ft3,ft0,ft1,ft2 +80000170: 00353027 fsd ft3,0(a0) +80000174: 00452383 lw t2,4(a0) +80000178: 00052503 lw a0,0(a0) +8000017c: 001015f3 fsflags a1,zero +80000180: 00100613 li a2,1 +80000184: 2ad51c63 bne a0,a3,8000043c +80000188: 2a731a63 bne t1,t2,8000043c +8000018c: 2ac59863 bne a1,a2,8000043c + +80000190 : +80000190: 00400193 li gp,4 +80000194: 00002517 auipc a0,0x2 +80000198: eac50513 addi a0,a0,-340 # 80002040 +8000019c: 00053007 fld ft0,0(a0) +800001a0: 00853087 fld ft1,8(a0) +800001a4: 01053107 fld ft2,16(a0) +800001a8: 01852683 lw a3,24(a0) +800001ac: 01c52303 lw t1,28(a0) +800001b0: 121071c3 fmadd.d ft3,ft0,ft1,ft2 +800001b4: 00353027 fsd ft3,0(a0) +800001b8: 00452383 lw t2,4(a0) +800001bc: 00052503 lw a0,0(a0) +800001c0: 001015f3 fsflags a1,zero +800001c4: 00000613 li a2,0 +800001c8: 26d51a63 bne a0,a3,8000043c +800001cc: 26731863 bne t1,t2,8000043c +800001d0: 26c59663 bne a1,a2,8000043c + +800001d4 : +800001d4: 00500193 li gp,5 +800001d8: 00002517 auipc a0,0x2 +800001dc: e8850513 addi a0,a0,-376 # 80002060 +800001e0: 00053007 fld ft0,0(a0) +800001e4: 00853087 fld ft1,8(a0) +800001e8: 01053107 fld ft2,16(a0) +800001ec: 01852683 lw a3,24(a0) +800001f0: 01c52303 lw t1,28(a0) +800001f4: 121071cf fnmadd.d ft3,ft0,ft1,ft2 +800001f8: 00353027 fsd ft3,0(a0) +800001fc: 00452383 lw t2,4(a0) +80000200: 00052503 lw a0,0(a0) +80000204: 001015f3 fsflags a1,zero +80000208: 00000613 li a2,0 +8000020c: 22d51863 bne a0,a3,8000043c +80000210: 22731663 bne t1,t2,8000043c +80000214: 22c59463 bne a1,a2,8000043c + +80000218 : +80000218: 00600193 li gp,6 +8000021c: 00002517 auipc a0,0x2 +80000220: e6450513 addi a0,a0,-412 # 80002080 +80000224: 00053007 fld ft0,0(a0) +80000228: 00853087 fld ft1,8(a0) +8000022c: 01053107 fld ft2,16(a0) +80000230: 01852683 lw a3,24(a0) +80000234: 01c52303 lw t1,28(a0) +80000238: 121071cf fnmadd.d ft3,ft0,ft1,ft2 +8000023c: 00353027 fsd ft3,0(a0) +80000240: 00452383 lw t2,4(a0) +80000244: 00052503 lw a0,0(a0) +80000248: 001015f3 fsflags a1,zero +8000024c: 00100613 li a2,1 +80000250: 1ed51663 bne a0,a3,8000043c +80000254: 1e731463 bne t1,t2,8000043c +80000258: 1ec59263 bne a1,a2,8000043c + +8000025c : +8000025c: 00700193 li gp,7 +80000260: 00002517 auipc a0,0x2 +80000264: e4050513 addi a0,a0,-448 # 800020a0 +80000268: 00053007 fld ft0,0(a0) +8000026c: 00853087 fld ft1,8(a0) +80000270: 01053107 fld ft2,16(a0) +80000274: 01852683 lw a3,24(a0) +80000278: 01c52303 lw t1,28(a0) +8000027c: 121071cf fnmadd.d ft3,ft0,ft1,ft2 +80000280: 00353027 fsd ft3,0(a0) +80000284: 00452383 lw t2,4(a0) +80000288: 00052503 lw a0,0(a0) +8000028c: 001015f3 fsflags a1,zero +80000290: 00000613 li a2,0 +80000294: 1ad51463 bne a0,a3,8000043c +80000298: 1a731263 bne t1,t2,8000043c +8000029c: 1ac59063 bne a1,a2,8000043c + +800002a0 : +800002a0: 00800193 li gp,8 +800002a4: 00002517 auipc a0,0x2 +800002a8: e1c50513 addi a0,a0,-484 # 800020c0 +800002ac: 00053007 fld ft0,0(a0) +800002b0: 00853087 fld ft1,8(a0) +800002b4: 01053107 fld ft2,16(a0) +800002b8: 01852683 lw a3,24(a0) +800002bc: 01c52303 lw t1,28(a0) +800002c0: 121071c7 fmsub.d ft3,ft0,ft1,ft2 +800002c4: 00353027 fsd ft3,0(a0) +800002c8: 00452383 lw t2,4(a0) +800002cc: 00052503 lw a0,0(a0) +800002d0: 001015f3 fsflags a1,zero +800002d4: 00000613 li a2,0 +800002d8: 16d51263 bne a0,a3,8000043c +800002dc: 16731063 bne t1,t2,8000043c +800002e0: 14c59e63 bne a1,a2,8000043c + +800002e4 : +800002e4: 00900193 li gp,9 +800002e8: 00002517 auipc a0,0x2 +800002ec: df850513 addi a0,a0,-520 # 800020e0 +800002f0: 00053007 fld ft0,0(a0) +800002f4: 00853087 fld ft1,8(a0) +800002f8: 01053107 fld ft2,16(a0) +800002fc: 01852683 lw a3,24(a0) +80000300: 01c52303 lw t1,28(a0) +80000304: 121071c7 fmsub.d ft3,ft0,ft1,ft2 +80000308: 00353027 fsd ft3,0(a0) +8000030c: 00452383 lw t2,4(a0) +80000310: 00052503 lw a0,0(a0) +80000314: 001015f3 fsflags a1,zero +80000318: 00100613 li a2,1 +8000031c: 12d51063 bne a0,a3,8000043c +80000320: 10731e63 bne t1,t2,8000043c +80000324: 10c59c63 bne a1,a2,8000043c + +80000328 : +80000328: 00a00193 li gp,10 +8000032c: 00002517 auipc a0,0x2 +80000330: dd450513 addi a0,a0,-556 # 80002100 +80000334: 00053007 fld ft0,0(a0) +80000338: 00853087 fld ft1,8(a0) +8000033c: 01053107 fld ft2,16(a0) +80000340: 01852683 lw a3,24(a0) +80000344: 01c52303 lw t1,28(a0) +80000348: 121071c7 fmsub.d ft3,ft0,ft1,ft2 +8000034c: 00353027 fsd ft3,0(a0) +80000350: 00452383 lw t2,4(a0) +80000354: 00052503 lw a0,0(a0) +80000358: 001015f3 fsflags a1,zero +8000035c: 00000613 li a2,0 +80000360: 0cd51e63 bne a0,a3,8000043c +80000364: 0c731c63 bne t1,t2,8000043c +80000368: 0cc59a63 bne a1,a2,8000043c + +8000036c : +8000036c: 00b00193 li gp,11 +80000370: 00002517 auipc a0,0x2 +80000374: db050513 addi a0,a0,-592 # 80002120 +80000378: 00053007 fld ft0,0(a0) +8000037c: 00853087 fld ft1,8(a0) +80000380: 01053107 fld ft2,16(a0) +80000384: 01852683 lw a3,24(a0) +80000388: 01c52303 lw t1,28(a0) +8000038c: 121071cb fnmsub.d ft3,ft0,ft1,ft2 +80000390: 00353027 fsd ft3,0(a0) +80000394: 00452383 lw t2,4(a0) +80000398: 00052503 lw a0,0(a0) +8000039c: 001015f3 fsflags a1,zero +800003a0: 00000613 li a2,0 +800003a4: 08d51c63 bne a0,a3,8000043c +800003a8: 08731a63 bne t1,t2,8000043c +800003ac: 08c59863 bne a1,a2,8000043c + +800003b0 : +800003b0: 00c00193 li gp,12 +800003b4: 00002517 auipc a0,0x2 +800003b8: d8c50513 addi a0,a0,-628 # 80002140 +800003bc: 00053007 fld ft0,0(a0) +800003c0: 00853087 fld ft1,8(a0) +800003c4: 01053107 fld ft2,16(a0) +800003c8: 01852683 lw a3,24(a0) +800003cc: 01c52303 lw t1,28(a0) +800003d0: 121071cb fnmsub.d ft3,ft0,ft1,ft2 +800003d4: 00353027 fsd ft3,0(a0) +800003d8: 00452383 lw t2,4(a0) +800003dc: 00052503 lw a0,0(a0) +800003e0: 001015f3 fsflags a1,zero +800003e4: 00100613 li a2,1 +800003e8: 04d51a63 bne a0,a3,8000043c +800003ec: 04731863 bne t1,t2,8000043c +800003f0: 04c59663 bne a1,a2,8000043c + +800003f4 : +800003f4: 00d00193 li gp,13 +800003f8: 00002517 auipc a0,0x2 +800003fc: d6850513 addi a0,a0,-664 # 80002160 +80000400: 00053007 fld ft0,0(a0) +80000404: 00853087 fld ft1,8(a0) +80000408: 01053107 fld ft2,16(a0) +8000040c: 01852683 lw a3,24(a0) +80000410: 01c52303 lw t1,28(a0) +80000414: 121071cb fnmsub.d ft3,ft0,ft1,ft2 +80000418: 00353027 fsd ft3,0(a0) +8000041c: 00452383 lw t2,4(a0) +80000420: 00052503 lw a0,0(a0) +80000424: 001015f3 fsflags a1,zero +80000428: 00000613 li a2,0 +8000042c: 00d51863 bne a0,a3,8000043c +80000430: 00731663 bne t1,t2,8000043c +80000434: 00c59463 bne a1,a2,8000043c +80000438: 00301c63 bne zero,gp,80000450 + +8000043c : +8000043c: 0ff0000f fence +80000440: 00018063 beqz gp,80000440 +80000444: 00119193 slli gp,gp,0x1 +80000448: 0011e193 ori gp,gp,1 +8000044c: 00000073 ecall + +80000450 : +80000450: 0ff0000f fence +80000454: 00100193 li gp,1 +80000458: 00000073 ecall +8000045c: c0001073 unimp +80000460: 0000 unimp +80000462: 0000 unimp +80000464: 0000 unimp +80000466: 0000 unimp +80000468: 0000 unimp +8000046a: 0000 unimp +8000046c: 0000 unimp +8000046e: 0000 unimp +80000470: 0000 unimp +80000472: 0000 unimp +80000474: 0000 unimp +80000476: 0000 unimp +80000478: 0000 unimp +8000047a: 0000 unimp +8000047c: 0000 unimp +8000047e: 0000 unimp +80000480: 0000 unimp +80000482: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 0000 unimp +80002004: 0000 unimp +80002006: 3ff0 fld fa2,248(a5) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 4004 lw s1,0(s0) +80002010: 0000 unimp +80002012: 0000 unimp +80002014: 0000 unimp +80002016: 3ff0 fld fa2,248(a5) +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 0000 unimp +8000201e: 400c lw a1,0(s0) + +80002020 : +80002020: 0000 unimp +80002022: 0000 unimp +80002024: 0000 unimp +80002026: bff0 fsd fa2,248(a5) +80002028: 6666 flw fa2,88(sp) +8000202a: 6666 flw fa2,88(sp) +8000202c: 4c66 lw s8,88(sp) +8000202e: 999ac093 xori ra,s5,-1639 +80002032: 9999 andi a1,a1,-26 +80002034: 9999 andi a1,a1,-26 +80002036: 3ff1 jal 80002012 +80002038: cccc sw a1,28(s1) +8000203a: cccc sw a1,28(s1) +8000203c: 50cc lw a1,36(s1) +8000203e: xori ra,zero,0 + +80002040 : +80002040: 0000 unimp +80002042: 0000 unimp +80002044: 0000 unimp +80002046: 4000 lw s0,0(s0) +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0000 unimp +8000204e: c014 sw a3,0(s0) +80002050: 0000 unimp +80002052: 0000 unimp +80002054: 0000 unimp +80002056: c000 sw s0,0(s0) +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0000 unimp +8000205e: c028 sw a0,64(s0) + +80002060 : +80002060: 0000 unimp +80002062: 0000 unimp +80002064: 0000 unimp +80002066: 3ff0 fld fa2,248(a5) +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 4004 lw s1,0(s0) +80002070: 0000 unimp +80002072: 0000 unimp +80002074: 0000 unimp +80002076: 3ff0 fld fa2,248(a5) +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: 0000 unimp +8000207e: c00c sw a1,0(s0) + +80002080 : +80002080: 0000 unimp +80002082: 0000 unimp +80002084: 0000 unimp +80002086: bff0 fsd fa2,248(a5) +80002088: 6666 flw fa2,88(sp) +8000208a: 6666 flw fa2,88(sp) +8000208c: 4c66 lw s8,88(sp) +8000208e: 999ac093 xori ra,s5,-1639 +80002092: 9999 andi a1,a1,-26 +80002094: 9999 andi a1,a1,-26 +80002096: 3ff1 jal 80002072 +80002098: cccc sw a1,28(s1) +8000209a: cccc sw a1,28(s1) +8000209c: 50cc lw a1,36(s1) +8000209e: xori ra,ra,0 + +800020a0 : +800020a0: 0000 unimp +800020a2: 0000 unimp +800020a4: 0000 unimp +800020a6: 4000 lw s0,0(s0) +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: c014 sw a3,0(s0) +800020b0: 0000 unimp +800020b2: 0000 unimp +800020b4: 0000 unimp +800020b6: c000 sw s0,0(s0) +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 4028 lw a0,64(s0) + +800020c0 : +800020c0: 0000 unimp +800020c2: 0000 unimp +800020c4: 0000 unimp +800020c6: 3ff0 fld fa2,248(a5) +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 4004 lw s1,0(s0) +800020d0: 0000 unimp +800020d2: 0000 unimp +800020d4: 0000 unimp +800020d6: 3ff0 fld fa2,248(a5) +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 3ff8 fld fa4,248(a5) + +800020e0 : +800020e0: 0000 unimp +800020e2: 0000 unimp +800020e4: 0000 unimp +800020e6: bff0 fsd fa2,248(a5) +800020e8: 6666 flw fa2,88(sp) +800020ea: 6666 flw fa2,88(sp) +800020ec: 4c66 lw s8,88(sp) +800020ee: 999ac093 xori ra,s5,-1639 +800020f2: 9999 andi a1,a1,-26 +800020f4: 9999 andi a1,a1,-26 +800020f6: 3ff1 jal 800020d2 +800020f8: 0000 unimp +800020fa: 0000 unimp +800020fc: 4800 lw s0,16(s0) +800020fe: xori ra,zero,0 + +80002100 : +80002100: 0000 unimp +80002102: 0000 unimp +80002104: 0000 unimp +80002106: 4000 lw s0,0(s0) +80002108: 0000 unimp +8000210a: 0000 unimp +8000210c: 0000 unimp +8000210e: c014 sw a3,0(s0) +80002110: 0000 unimp +80002112: 0000 unimp +80002114: 0000 unimp +80002116: c000 sw s0,0(s0) +80002118: 0000 unimp +8000211a: 0000 unimp +8000211c: 0000 unimp +8000211e: c020 sw s0,64(s0) + +80002120 : +80002120: 0000 unimp +80002122: 0000 unimp +80002124: 0000 unimp +80002126: 3ff0 fld fa2,248(a5) +80002128: 0000 unimp +8000212a: 0000 unimp +8000212c: 0000 unimp +8000212e: 4004 lw s1,0(s0) +80002130: 0000 unimp +80002132: 0000 unimp +80002134: 0000 unimp +80002136: 3ff0 fld fa2,248(a5) +80002138: 0000 unimp +8000213a: 0000 unimp +8000213c: 0000 unimp +8000213e: bff8 fsd fa4,248(a5) + +80002140 : +80002140: 0000 unimp +80002142: 0000 unimp +80002144: 0000 unimp +80002146: bff0 fsd fa2,248(a5) +80002148: 6666 flw fa2,88(sp) +8000214a: 6666 flw fa2,88(sp) +8000214c: 4c66 lw s8,88(sp) +8000214e: 999ac093 xori ra,s5,-1639 +80002152: 9999 andi a1,a1,-26 +80002154: 9999 andi a1,a1,-26 +80002156: 3ff1 jal 80002132 +80002158: 0000 unimp +8000215a: 0000 unimp +8000215c: 4800 lw s0,16(s0) +8000215e: xori ra,ra,0 + +80002160 : +80002160: 0000 unimp +80002162: 0000 unimp +80002164: 0000 unimp +80002166: 4000 lw s0,0(s0) +80002168: 0000 unimp +8000216a: 0000 unimp +8000216c: 0000 unimp +8000216e: c014 sw a3,0(s0) +80002170: 0000 unimp +80002172: 0000 unimp +80002174: 0000 unimp +80002176: c000 sw s0,0(s0) +80002178: 0000 unimp +8000217a: 0000 unimp +8000217c: 0000 unimp +8000217e: 4020 lw s0,64(s0) diff --git a/Tests/isa/rv32ud-p-fmin b/Tests/isa/rv32ud-p-fmin new file mode 100644 index 0000000..78b9aea Binary files /dev/null and b/Tests/isa/rv32ud-p-fmin differ diff --git a/Tests/isa/rv32ud-p-fmin.dump b/Tests/isa/rv32ud-p-fmin.dump new file mode 100644 index 0000000..359df06 --- /dev/null +++ b/Tests/isa/rv32ud-p-fmin.dump @@ -0,0 +1,760 @@ + +rv32ud-p-fmin: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00053007 fld ft0,0(a0) +80000118: 00853087 fld ft1,8(a0) +8000011c: 01053107 fld ft2,16(a0) +80000120: 01852683 lw a3,24(a0) +80000124: 01c52303 lw t1,28(a0) +80000128: 2a1001d3 fmin.d ft3,ft0,ft1 +8000012c: 00353027 fsd ft3,0(a0) +80000130: 00452383 lw t2,4(a0) +80000134: 00052503 lw a0,0(a0) +80000138: 001015f3 fsflags a1,zero +8000013c: 00000613 li a2,0 +80000140: 48d51a63 bne a0,a3,800005d4 +80000144: 48731863 bne t1,t2,800005d4 +80000148: 48c59663 bne a1,a2,800005d4 + +8000014c : +8000014c: 00300193 li gp,3 +80000150: 00002517 auipc a0,0x2 +80000154: ed050513 addi a0,a0,-304 # 80002020 +80000158: 00053007 fld ft0,0(a0) +8000015c: 00853087 fld ft1,8(a0) +80000160: 01053107 fld ft2,16(a0) +80000164: 01852683 lw a3,24(a0) +80000168: 01c52303 lw t1,28(a0) +8000016c: 2a1001d3 fmin.d ft3,ft0,ft1 +80000170: 00353027 fsd ft3,0(a0) +80000174: 00452383 lw t2,4(a0) +80000178: 00052503 lw a0,0(a0) +8000017c: 001015f3 fsflags a1,zero +80000180: 00000613 li a2,0 +80000184: 44d51863 bne a0,a3,800005d4 +80000188: 44731663 bne t1,t2,800005d4 +8000018c: 44c59463 bne a1,a2,800005d4 + +80000190 : +80000190: 00400193 li gp,4 +80000194: 00002517 auipc a0,0x2 +80000198: eac50513 addi a0,a0,-340 # 80002040 +8000019c: 00053007 fld ft0,0(a0) +800001a0: 00853087 fld ft1,8(a0) +800001a4: 01053107 fld ft2,16(a0) +800001a8: 01852683 lw a3,24(a0) +800001ac: 01c52303 lw t1,28(a0) +800001b0: 2a1001d3 fmin.d ft3,ft0,ft1 +800001b4: 00353027 fsd ft3,0(a0) +800001b8: 00452383 lw t2,4(a0) +800001bc: 00052503 lw a0,0(a0) +800001c0: 001015f3 fsflags a1,zero +800001c4: 00000613 li a2,0 +800001c8: 40d51663 bne a0,a3,800005d4 +800001cc: 40731463 bne t1,t2,800005d4 +800001d0: 40c59263 bne a1,a2,800005d4 + +800001d4 : +800001d4: 00500193 li gp,5 +800001d8: 00002517 auipc a0,0x2 +800001dc: e8850513 addi a0,a0,-376 # 80002060 +800001e0: 00053007 fld ft0,0(a0) +800001e4: 00853087 fld ft1,8(a0) +800001e8: 01053107 fld ft2,16(a0) +800001ec: 01852683 lw a3,24(a0) +800001f0: 01c52303 lw t1,28(a0) +800001f4: 2a1001d3 fmin.d ft3,ft0,ft1 +800001f8: 00353027 fsd ft3,0(a0) +800001fc: 00452383 lw t2,4(a0) +80000200: 00052503 lw a0,0(a0) +80000204: 001015f3 fsflags a1,zero +80000208: 00000613 li a2,0 +8000020c: 3cd51463 bne a0,a3,800005d4 +80000210: 3c731263 bne t1,t2,800005d4 +80000214: 3cc59063 bne a1,a2,800005d4 + +80000218 : +80000218: 00600193 li gp,6 +8000021c: 00002517 auipc a0,0x2 +80000220: e6450513 addi a0,a0,-412 # 80002080 +80000224: 00053007 fld ft0,0(a0) +80000228: 00853087 fld ft1,8(a0) +8000022c: 01053107 fld ft2,16(a0) +80000230: 01852683 lw a3,24(a0) +80000234: 01c52303 lw t1,28(a0) +80000238: 2a1001d3 fmin.d ft3,ft0,ft1 +8000023c: 00353027 fsd ft3,0(a0) +80000240: 00452383 lw t2,4(a0) +80000244: 00052503 lw a0,0(a0) +80000248: 001015f3 fsflags a1,zero +8000024c: 00000613 li a2,0 +80000250: 38d51263 bne a0,a3,800005d4 +80000254: 38731063 bne t1,t2,800005d4 +80000258: 36c59e63 bne a1,a2,800005d4 + +8000025c : +8000025c: 00700193 li gp,7 +80000260: 00002517 auipc a0,0x2 +80000264: e4050513 addi a0,a0,-448 # 800020a0 +80000268: 00053007 fld ft0,0(a0) +8000026c: 00853087 fld ft1,8(a0) +80000270: 01053107 fld ft2,16(a0) +80000274: 01852683 lw a3,24(a0) +80000278: 01c52303 lw t1,28(a0) +8000027c: 2a1001d3 fmin.d ft3,ft0,ft1 +80000280: 00353027 fsd ft3,0(a0) +80000284: 00452383 lw t2,4(a0) +80000288: 00052503 lw a0,0(a0) +8000028c: 001015f3 fsflags a1,zero +80000290: 00000613 li a2,0 +80000294: 34d51063 bne a0,a3,800005d4 +80000298: 32731e63 bne t1,t2,800005d4 +8000029c: 32c59c63 bne a1,a2,800005d4 + +800002a0 : +800002a0: 00c00193 li gp,12 +800002a4: 00002517 auipc a0,0x2 +800002a8: e1c50513 addi a0,a0,-484 # 800020c0 +800002ac: 00053007 fld ft0,0(a0) +800002b0: 00853087 fld ft1,8(a0) +800002b4: 01053107 fld ft2,16(a0) +800002b8: 01852683 lw a3,24(a0) +800002bc: 01c52303 lw t1,28(a0) +800002c0: 2a1011d3 fmax.d ft3,ft0,ft1 +800002c4: 00353027 fsd ft3,0(a0) +800002c8: 00452383 lw t2,4(a0) +800002cc: 00052503 lw a0,0(a0) +800002d0: 001015f3 fsflags a1,zero +800002d4: 00000613 li a2,0 +800002d8: 2ed51e63 bne a0,a3,800005d4 +800002dc: 2e731c63 bne t1,t2,800005d4 +800002e0: 2ec59a63 bne a1,a2,800005d4 + +800002e4 : +800002e4: 00d00193 li gp,13 +800002e8: 00002517 auipc a0,0x2 +800002ec: df850513 addi a0,a0,-520 # 800020e0 +800002f0: 00053007 fld ft0,0(a0) +800002f4: 00853087 fld ft1,8(a0) +800002f8: 01053107 fld ft2,16(a0) +800002fc: 01852683 lw a3,24(a0) +80000300: 01c52303 lw t1,28(a0) +80000304: 2a1011d3 fmax.d ft3,ft0,ft1 +80000308: 00353027 fsd ft3,0(a0) +8000030c: 00452383 lw t2,4(a0) +80000310: 00052503 lw a0,0(a0) +80000314: 001015f3 fsflags a1,zero +80000318: 00000613 li a2,0 +8000031c: 2ad51c63 bne a0,a3,800005d4 +80000320: 2a731a63 bne t1,t2,800005d4 +80000324: 2ac59863 bne a1,a2,800005d4 + +80000328 : +80000328: 00e00193 li gp,14 +8000032c: 00002517 auipc a0,0x2 +80000330: dd450513 addi a0,a0,-556 # 80002100 +80000334: 00053007 fld ft0,0(a0) +80000338: 00853087 fld ft1,8(a0) +8000033c: 01053107 fld ft2,16(a0) +80000340: 01852683 lw a3,24(a0) +80000344: 01c52303 lw t1,28(a0) +80000348: 2a1011d3 fmax.d ft3,ft0,ft1 +8000034c: 00353027 fsd ft3,0(a0) +80000350: 00452383 lw t2,4(a0) +80000354: 00052503 lw a0,0(a0) +80000358: 001015f3 fsflags a1,zero +8000035c: 00000613 li a2,0 +80000360: 26d51a63 bne a0,a3,800005d4 +80000364: 26731863 bne t1,t2,800005d4 +80000368: 26c59663 bne a1,a2,800005d4 + +8000036c : +8000036c: 00f00193 li gp,15 +80000370: 00002517 auipc a0,0x2 +80000374: db050513 addi a0,a0,-592 # 80002120 +80000378: 00053007 fld ft0,0(a0) +8000037c: 00853087 fld ft1,8(a0) +80000380: 01053107 fld ft2,16(a0) +80000384: 01852683 lw a3,24(a0) +80000388: 01c52303 lw t1,28(a0) +8000038c: 2a1011d3 fmax.d ft3,ft0,ft1 +80000390: 00353027 fsd ft3,0(a0) +80000394: 00452383 lw t2,4(a0) +80000398: 00052503 lw a0,0(a0) +8000039c: 001015f3 fsflags a1,zero +800003a0: 00000613 li a2,0 +800003a4: 22d51863 bne a0,a3,800005d4 +800003a8: 22731663 bne t1,t2,800005d4 +800003ac: 22c59463 bne a1,a2,800005d4 + +800003b0 : +800003b0: 01000193 li gp,16 +800003b4: 00002517 auipc a0,0x2 +800003b8: d8c50513 addi a0,a0,-628 # 80002140 +800003bc: 00053007 fld ft0,0(a0) +800003c0: 00853087 fld ft1,8(a0) +800003c4: 01053107 fld ft2,16(a0) +800003c8: 01852683 lw a3,24(a0) +800003cc: 01c52303 lw t1,28(a0) +800003d0: 2a1011d3 fmax.d ft3,ft0,ft1 +800003d4: 00353027 fsd ft3,0(a0) +800003d8: 00452383 lw t2,4(a0) +800003dc: 00052503 lw a0,0(a0) +800003e0: 001015f3 fsflags a1,zero +800003e4: 00000613 li a2,0 +800003e8: 1ed51663 bne a0,a3,800005d4 +800003ec: 1e731463 bne t1,t2,800005d4 +800003f0: 1ec59263 bne a1,a2,800005d4 + +800003f4 : +800003f4: 01100193 li gp,17 +800003f8: 00002517 auipc a0,0x2 +800003fc: d6850513 addi a0,a0,-664 # 80002160 +80000400: 00053007 fld ft0,0(a0) +80000404: 00853087 fld ft1,8(a0) +80000408: 01053107 fld ft2,16(a0) +8000040c: 01852683 lw a3,24(a0) +80000410: 01c52303 lw t1,28(a0) +80000414: 2a1011d3 fmax.d ft3,ft0,ft1 +80000418: 00353027 fsd ft3,0(a0) +8000041c: 00452383 lw t2,4(a0) +80000420: 00052503 lw a0,0(a0) +80000424: 001015f3 fsflags a1,zero +80000428: 00000613 li a2,0 +8000042c: 1ad51463 bne a0,a3,800005d4 +80000430: 1a731263 bne t1,t2,800005d4 +80000434: 1ac59063 bne a1,a2,800005d4 + +80000438 : +80000438: 01400193 li gp,20 +8000043c: 00002517 auipc a0,0x2 +80000440: d4450513 addi a0,a0,-700 # 80002180 +80000444: 00053007 fld ft0,0(a0) +80000448: 00853087 fld ft1,8(a0) +8000044c: 01053107 fld ft2,16(a0) +80000450: 01852683 lw a3,24(a0) +80000454: 01c52303 lw t1,28(a0) +80000458: 2a1011d3 fmax.d ft3,ft0,ft1 +8000045c: 00353027 fsd ft3,0(a0) +80000460: 00452383 lw t2,4(a0) +80000464: 00052503 lw a0,0(a0) +80000468: 001015f3 fsflags a1,zero +8000046c: 01000613 li a2,16 +80000470: 16d51263 bne a0,a3,800005d4 +80000474: 16731063 bne t1,t2,800005d4 +80000478: 14c59e63 bne a1,a2,800005d4 + +8000047c : +8000047c: 01500193 li gp,21 +80000480: 00002517 auipc a0,0x2 +80000484: d2050513 addi a0,a0,-736 # 800021a0 +80000488: 00053007 fld ft0,0(a0) +8000048c: 00853087 fld ft1,8(a0) +80000490: 01053107 fld ft2,16(a0) +80000494: 01852683 lw a3,24(a0) +80000498: 01c52303 lw t1,28(a0) +8000049c: 2a1011d3 fmax.d ft3,ft0,ft1 +800004a0: 00353027 fsd ft3,0(a0) +800004a4: 00452383 lw t2,4(a0) +800004a8: 00052503 lw a0,0(a0) +800004ac: 001015f3 fsflags a1,zero +800004b0: 00000613 li a2,0 +800004b4: 12d51063 bne a0,a3,800005d4 +800004b8: 10731e63 bne t1,t2,800005d4 +800004bc: 10c59c63 bne a1,a2,800005d4 + +800004c0 : +800004c0: 01e00193 li gp,30 +800004c4: 00002517 auipc a0,0x2 +800004c8: cfc50513 addi a0,a0,-772 # 800021c0 +800004cc: 00053007 fld ft0,0(a0) +800004d0: 00853087 fld ft1,8(a0) +800004d4: 01053107 fld ft2,16(a0) +800004d8: 01852683 lw a3,24(a0) +800004dc: 01c52303 lw t1,28(a0) +800004e0: 2a1001d3 fmin.d ft3,ft0,ft1 +800004e4: 00353027 fsd ft3,0(a0) +800004e8: 00452383 lw t2,4(a0) +800004ec: 00052503 lw a0,0(a0) +800004f0: 001015f3 fsflags a1,zero +800004f4: 00000613 li a2,0 +800004f8: 0cd51e63 bne a0,a3,800005d4 +800004fc: 0c731c63 bne t1,t2,800005d4 +80000500: 0cc59a63 bne a1,a2,800005d4 + +80000504 : +80000504: 01f00193 li gp,31 +80000508: 00002517 auipc a0,0x2 +8000050c: cd850513 addi a0,a0,-808 # 800021e0 +80000510: 00053007 fld ft0,0(a0) +80000514: 00853087 fld ft1,8(a0) +80000518: 01053107 fld ft2,16(a0) +8000051c: 01852683 lw a3,24(a0) +80000520: 01c52303 lw t1,28(a0) +80000524: 2a1001d3 fmin.d ft3,ft0,ft1 +80000528: 00353027 fsd ft3,0(a0) +8000052c: 00452383 lw t2,4(a0) +80000530: 00052503 lw a0,0(a0) +80000534: 001015f3 fsflags a1,zero +80000538: 00000613 li a2,0 +8000053c: 08d51c63 bne a0,a3,800005d4 +80000540: 08731a63 bne t1,t2,800005d4 +80000544: 08c59863 bne a1,a2,800005d4 + +80000548 : +80000548: 02000193 li gp,32 +8000054c: 00002517 auipc a0,0x2 +80000550: cb450513 addi a0,a0,-844 # 80002200 +80000554: 00053007 fld ft0,0(a0) +80000558: 00853087 fld ft1,8(a0) +8000055c: 01053107 fld ft2,16(a0) +80000560: 01852683 lw a3,24(a0) +80000564: 01c52303 lw t1,28(a0) +80000568: 2a1011d3 fmax.d ft3,ft0,ft1 +8000056c: 00353027 fsd ft3,0(a0) +80000570: 00452383 lw t2,4(a0) +80000574: 00052503 lw a0,0(a0) +80000578: 001015f3 fsflags a1,zero +8000057c: 00000613 li a2,0 +80000580: 04d51a63 bne a0,a3,800005d4 +80000584: 04731863 bne t1,t2,800005d4 +80000588: 04c59663 bne a1,a2,800005d4 + +8000058c : +8000058c: 02100193 li gp,33 +80000590: 00002517 auipc a0,0x2 +80000594: c9050513 addi a0,a0,-880 # 80002220 +80000598: 00053007 fld ft0,0(a0) +8000059c: 00853087 fld ft1,8(a0) +800005a0: 01053107 fld ft2,16(a0) +800005a4: 01852683 lw a3,24(a0) +800005a8: 01c52303 lw t1,28(a0) +800005ac: 2a1011d3 fmax.d ft3,ft0,ft1 +800005b0: 00353027 fsd ft3,0(a0) +800005b4: 00452383 lw t2,4(a0) +800005b8: 00052503 lw a0,0(a0) +800005bc: 001015f3 fsflags a1,zero +800005c0: 00000613 li a2,0 +800005c4: 00d51863 bne a0,a3,800005d4 +800005c8: 00731663 bne t1,t2,800005d4 +800005cc: 00c59463 bne a1,a2,800005d4 +800005d0: 00301c63 bne zero,gp,800005e8 + +800005d4 : +800005d4: 0ff0000f fence +800005d8: 00018063 beqz gp,800005d8 +800005dc: 00119193 slli gp,gp,0x1 +800005e0: 0011e193 ori gp,gp,1 +800005e4: 00000073 ecall + +800005e8 : +800005e8: 0ff0000f fence +800005ec: 00100193 li gp,1 +800005f0: 00000073 ecall +800005f4: c0001073 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 0000 unimp +80002004: 0000 unimp +80002006: 4004 lw s1,0(s0) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 3ff0 fld fa2,248(a5) +80002010: 0000 unimp +80002012: 0000 unimp +80002014: 0000 unimp +80002016: 0000 unimp +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 0000 unimp +8000201e: 3ff0 fld fa2,248(a5) + +80002020 : +80002020: 6666 flw fa2,88(sp) +80002022: 6666 flw fa2,88(sp) +80002024: 4c66 lw s8,88(sp) +80002026: 999ac093 xori ra,s5,-1639 +8000202a: 9999 andi a1,a1,-26 +8000202c: 9999 andi a1,a1,-26 +8000202e: 3ff1 jal 8000200a +80002030: 0000 unimp +80002032: 0000 unimp +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 6666 flw fa2,88(sp) +8000203a: 6666 flw fa2,88(sp) +8000203c: 4c66 lw s8,88(sp) +8000203e: xori ra,s5,-1639 + +80002040 : +80002040: 999a add s3,s3,t1 +80002042: 9999 andi a1,a1,-26 +80002044: 9999 andi a1,a1,-26 +80002046: 3ff1 jal 80002022 +80002048: 6666 flw fa2,88(sp) +8000204a: 6666 flw fa2,88(sp) +8000204c: 4c66 lw s8,88(sp) +8000204e: 0000c093 xori ra,ra,0 +80002052: 0000 unimp +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 6666 flw fa2,88(sp) +8000205a: 6666 flw fa2,88(sp) +8000205c: 4c66 lw s8,88(sp) +8000205e: not ra,t6 + +80002060 : +80002060: ffff 0xffff +80002062: ffff 0xffff +80002064: ffff 0xffff +80002066: 7fff 0x7fff +80002068: 6666 flw fa2,88(sp) +8000206a: 6666 flw fa2,88(sp) +8000206c: 4c66 lw s8,88(sp) +8000206e: 0000c093 xori ra,ra,0 +80002072: 0000 unimp +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 6666 flw fa2,88(sp) +8000207a: 6666 flw fa2,88(sp) +8000207c: 4c66 lw s8,88(sp) +8000207e: xori ra,gp,-689 + +80002080 : +80002080: d4f1 beqz s1,8000204c +80002082: 53c8 lw a0,36(a5) +80002084: 400921fb 0x400921fb +80002088: 8c3a mv s8,a4 +8000208a: e230 fsw fa2,64(a2) +8000208c: 798e flw fs3,224(sp) +8000208e: 3e45 jal 80001c3e +80002090: 0000 unimp +80002092: 0000 unimp +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 8c3a mv s8,a4 +8000209a: e230 fsw fa2,64(a2) +8000209c: 798e flw fs3,224(sp) +8000209e: 3e45 jal 80001c4e + +800020a0 : +800020a0: 0000 unimp +800020a2: 0000 unimp +800020a4: 0000 unimp +800020a6: bff0 fsd fa2,248(a5) +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: c000 sw s0,0(s0) +800020b0: 0000 unimp +800020b2: 0000 unimp +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: c000 sw s0,0(s0) + +800020c0 : +800020c0: 0000 unimp +800020c2: 0000 unimp +800020c4: 0000 unimp +800020c6: 4004 lw s1,0(s0) +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 3ff0 fld fa2,248(a5) +800020d0: 0000 unimp +800020d2: 0000 unimp +800020d4: 0000 unimp +800020d6: 0000 unimp +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 4004 lw s1,0(s0) + +800020e0 : +800020e0: 6666 flw fa2,88(sp) +800020e2: 6666 flw fa2,88(sp) +800020e4: 4c66 lw s8,88(sp) +800020e6: 999ac093 xori ra,s5,-1639 +800020ea: 9999 andi a1,a1,-26 +800020ec: 9999 andi a1,a1,-26 +800020ee: 3ff1 jal 800020ca +800020f0: 0000 unimp +800020f2: 0000 unimp +800020f4: 0000 unimp +800020f6: 0000 unimp +800020f8: 999a add s3,s3,t1 +800020fa: 9999 andi a1,a1,-26 +800020fc: 9999 andi a1,a1,-26 +800020fe: 3ff1 jal 800020da + +80002100 : +80002100: 999a add s3,s3,t1 +80002102: 9999 andi a1,a1,-26 +80002104: 9999 andi a1,a1,-26 +80002106: 3ff1 jal 800020e2 +80002108: 6666 flw fa2,88(sp) +8000210a: 6666 flw fa2,88(sp) +8000210c: 4c66 lw s8,88(sp) +8000210e: 0000c093 xori ra,ra,0 +80002112: 0000 unimp +80002114: 0000 unimp +80002116: 0000 unimp +80002118: 999a add s3,s3,t1 +8000211a: 9999 andi a1,a1,-26 +8000211c: 9999 andi a1,a1,-26 +8000211e: 3ff1 jal 800020fa + +80002120 : +80002120: ffff 0xffff +80002122: ffff 0xffff +80002124: ffff 0xffff +80002126: 7fff 0x7fff +80002128: 6666 flw fa2,88(sp) +8000212a: 6666 flw fa2,88(sp) +8000212c: 4c66 lw s8,88(sp) +8000212e: 0000c093 xori ra,ra,0 +80002132: 0000 unimp +80002134: 0000 unimp +80002136: 0000 unimp +80002138: 6666 flw fa2,88(sp) +8000213a: 6666 flw fa2,88(sp) +8000213c: 4c66 lw s8,88(sp) +8000213e: xori ra,gp,-689 + +80002140 : +80002140: d4f1 beqz s1,8000210c +80002142: 53c8 lw a0,36(a5) +80002144: 400921fb 0x400921fb +80002148: 8c3a mv s8,a4 +8000214a: e230 fsw fa2,64(a2) +8000214c: 798e flw fs3,224(sp) +8000214e: 3e45 jal 80001cfe +80002150: 0000 unimp +80002152: 0000 unimp +80002154: 0000 unimp +80002156: 0000 unimp +80002158: d4f1 beqz s1,80002124 +8000215a: 53c8 lw a0,36(a5) +8000215c: 400921fb 0x400921fb + +80002160 : +80002160: 0000 unimp +80002162: 0000 unimp +80002164: 0000 unimp +80002166: bff0 fsd fa2,248(a5) +80002168: 0000 unimp +8000216a: 0000 unimp +8000216c: 0000 unimp +8000216e: c000 sw s0,0(s0) +80002170: 0000 unimp +80002172: 0000 unimp +80002174: 0000 unimp +80002176: 0000 unimp +80002178: 0000 unimp +8000217a: 0000 unimp +8000217c: 0000 unimp +8000217e: bff0 fsd fa2,248(a5) + +80002180 : +80002180: 0001 nop +80002182: 0000 unimp +80002184: 0000 unimp +80002186: 7ff0 flw fa2,124(a5) +80002188: 0000 unimp +8000218a: 0000 unimp +8000218c: 0000 unimp +8000218e: 3ff0 fld fa2,248(a5) +80002190: 0000 unimp +80002192: 0000 unimp +80002194: 0000 unimp +80002196: 0000 unimp +80002198: 0000 unimp +8000219a: 0000 unimp +8000219c: 0000 unimp +8000219e: 3ff0 fld fa2,248(a5) + +800021a0 : +800021a0: ffff 0xffff +800021a2: ffff 0xffff +800021a4: ffff 0xffff +800021a6: 7fff 0x7fff +800021a8: ffff 0xffff +800021aa: ffff 0xffff +800021ac: ffff 0xffff +800021ae: 7fff 0x7fff +800021b0: 0000 unimp +800021b2: 0000 unimp +800021b4: 0000 unimp +800021b6: 0000 unimp +800021b8: 0000 unimp +800021ba: 0000 unimp +800021bc: 0000 unimp +800021be: 7ff8 flw fa4,124(a5) + +800021c0 : +800021c0: 0000 unimp +800021c2: 0000 unimp +800021c4: 0000 unimp +800021c6: 8000 0x8000 +800021c8: 0000 unimp +800021ca: 0000 unimp +800021cc: 0000 unimp +800021ce: 0000 unimp +800021d0: 0000 unimp +800021d2: 0000 unimp +800021d4: 0000 unimp +800021d6: 0000 unimp +800021d8: 0000 unimp +800021da: 0000 unimp +800021dc: 0000 unimp +800021de: 8000 0x8000 + +800021e0 : +800021e0: 0000 unimp +800021e2: 0000 unimp +800021e4: 0000 unimp +800021e6: 0000 unimp +800021e8: 0000 unimp +800021ea: 0000 unimp +800021ec: 0000 unimp +800021ee: 8000 0x8000 +800021f0: 0000 unimp +800021f2: 0000 unimp +800021f4: 0000 unimp +800021f6: 0000 unimp +800021f8: 0000 unimp +800021fa: 0000 unimp +800021fc: 0000 unimp +800021fe: 8000 0x8000 + +80002200 : +80002200: 0000 unimp +80002202: 0000 unimp +80002204: 0000 unimp +80002206: 8000 0x8000 +80002208: 0000 unimp +8000220a: 0000 unimp +8000220c: 0000 unimp +8000220e: 0000 unimp +80002210: 0000 unimp +80002212: 0000 unimp +80002214: 0000 unimp +80002216: 0000 unimp +80002218: 0000 unimp +8000221a: 0000 unimp +8000221c: 0000 unimp +8000221e: 0000 unimp + +80002220 : +80002220: 0000 unimp +80002222: 0000 unimp +80002224: 0000 unimp +80002226: 0000 unimp +80002228: 0000 unimp +8000222a: 0000 unimp +8000222c: 0000 unimp +8000222e: 8000 0x8000 +80002230: 0000 unimp +80002232: 0000 unimp +80002234: 0000 unimp +80002236: 0000 unimp +80002238: 0000 unimp +8000223a: 0000 unimp +8000223c: 0000 unimp +8000223e: 0000 unimp diff --git a/Tests/isa/rv32ud-p-ldst b/Tests/isa/rv32ud-p-ldst new file mode 100644 index 0000000..baaf148 Binary files /dev/null and b/Tests/isa/rv32ud-p-ldst differ diff --git a/Tests/isa/rv32ud-p-ldst.dump b/Tests/isa/rv32ud-p-ldst.dump new file mode 100644 index 0000000..087b9f6 --- /dev/null +++ b/Tests/isa/rv32ud-p-ldst.dump @@ -0,0 +1,239 @@ + +rv32ud-p-ldst: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00002417 auipc s0,0x2 +8000010c: f2840413 addi s0,s0,-216 # 80002030 + +80000110 : +80000110: 00043107 fld ft2,0(s0) +80000114: 00243827 fsd ft2,16(s0) +80000118: 01042503 lw a0,16(s0) +8000011c: 01442583 lw a1,20(s0) +80000120: 00002f97 auipc t6,0x2 +80000124: ee0f8f93 addi t6,t6,-288 # 80002000 +80000128: 000fae83 lw t4,0(t6) +8000012c: 004faf83 lw t6,4(t6) +80000130: 00200193 li gp,2 +80000134: 0bd51e63 bne a0,t4,800001f0 +80000138: 0bf59c63 bne a1,t6,800001f0 + +8000013c : +8000013c: 00043107 fld ft2,0(s0) +80000140: 00242827 fsw ft2,16(s0) +80000144: 01042503 lw a0,16(s0) +80000148: 01442583 lw a1,20(s0) +8000014c: 00002f97 auipc t6,0x2 +80000150: ebcf8f93 addi t6,t6,-324 # 80002008 +80000154: 000fae83 lw t4,0(t6) +80000158: 004faf83 lw t6,4(t6) +8000015c: 00300193 li gp,3 +80000160: 09d51863 bne a0,t4,800001f0 +80000164: 09f59663 bne a1,t6,800001f0 + +80000168 : +80000168: 00042107 flw ft2,0(s0) +8000016c: 00242827 fsw ft2,16(s0) +80000170: 01042503 lw a0,16(s0) +80000174: 01442583 lw a1,20(s0) +80000178: 00002f97 auipc t6,0x2 +8000017c: e98f8f93 addi t6,t6,-360 # 80002010 +80000180: 000fae83 lw t4,0(t6) +80000184: 004faf83 lw t6,4(t6) +80000188: 00400193 li gp,4 +8000018c: 07d51263 bne a0,t4,800001f0 +80000190: 07f59063 bne a1,t6,800001f0 + +80000194 : +80000194: 00843107 fld ft2,8(s0) +80000198: 00243827 fsd ft2,16(s0) +8000019c: 01042503 lw a0,16(s0) +800001a0: 01442583 lw a1,20(s0) +800001a4: 00002f97 auipc t6,0x2 +800001a8: e74f8f93 addi t6,t6,-396 # 80002018 +800001ac: 000fae83 lw t4,0(t6) +800001b0: 004faf83 lw t6,4(t6) +800001b4: 00500193 li gp,5 +800001b8: 03d51c63 bne a0,t4,800001f0 +800001bc: 03f59a63 bne a1,t6,800001f0 + +800001c0 : +800001c0: 00842107 flw ft2,8(s0) +800001c4: 00243827 fsd ft2,16(s0) +800001c8: 01042503 lw a0,16(s0) +800001cc: 01442583 lw a1,20(s0) +800001d0: 00002f97 auipc t6,0x2 +800001d4: e50f8f93 addi t6,t6,-432 # 80002020 +800001d8: 000fae83 lw t4,0(t6) +800001dc: 004faf83 lw t6,4(t6) +800001e0: 00600193 li gp,6 +800001e4: 01d51663 bne a0,t4,800001f0 +800001e8: 01f59463 bne a1,t6,800001f0 +800001ec: 00301c63 bne zero,gp,80000204 + +800001f0 : +800001f0: 0ff0000f fence +800001f4: 00018063 beqz gp,800001f4 +800001f8: 00119193 slli gp,gp,0x1 +800001fc: 0011e193 ori gp,gp,1 +80000200: 00000073 ecall + +80000204 : +80000204: 0ff0000f fence +80000208: 00100193 li gp,1 +8000020c: 00000073 ecall +80000210: c0001073 unimp +80000214: 0000 unimp +80000216: 0000 unimp +80000218: 0000 unimp +8000021a: 0000 unimp +8000021c: 0000 unimp +8000021e: 0000 unimp +80000220: 0000 unimp +80000222: 0000 unimp +80000224: 0000 unimp +80000226: 0000 unimp +80000228: 0000 unimp +8000022a: 0000 unimp +8000022c: 0000 unimp +8000022e: 0000 unimp +80000230: 0000 unimp +80000232: 0000 unimp +80000234: 0000 unimp +80000236: 0000 unimp +80000238: 0000 unimp +8000023a: 0000 unimp +8000023c: 0000 unimp +8000023e: 0000 unimp +80000240: 0000 unimp +80000242: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: bf80 fsd fs0,56(a5) +80002004: 0000 unimp +80002006: 4000 lw s0,0(s0) + +80002008 : +80002008: 0000 unimp +8000200a: bf80 fsd fs0,56(a5) +8000200c: 0000 unimp +8000200e: 4000 lw s0,0(s0) + +80002010 : +80002010: 0000 unimp +80002012: bf80 fsd fs0,56(a5) +80002014: 0000 unimp +80002016: 4000 lw s0,0(s0) + +80002018 : +80002018: 0000 unimp +8000201a: 4040 lw s0,4(s0) +8000201c: 0000 unimp +8000201e: c080 sw s0,0(s1) + +80002020 : +80002020: 0000 unimp +80002022: 4040 lw s0,4(s0) +80002024: ffff 0xffff +80002026: ffff 0xffff +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp + +80002030 : +80002030: 0000 unimp +80002032: bf80 fsd fs0,56(a5) +80002034: 0000 unimp +80002036: 4000 lw s0,0(s0) +80002038: 0000 unimp +8000203a: 4040 lw s0,4(s0) +8000203c: 0000 unimp +8000203e: c080 sw s0,0(s1) +80002040: deadbeef jal t4,7ffdd62a <_start-0x229d6> +80002044: babe fsd fa5,368(sp) +80002046: cafe sw t6,84(sp) +80002048: 1dea slli s11,s11,0x3a +8000204a: abad j 800025c4 <_end+0x574> +8000204c: d00d beqz s0,80001f6e +8000204e: lui t1,0x1 diff --git a/Tests/isa/rv32ud-p-recoding b/Tests/isa/rv32ud-p-recoding new file mode 100644 index 0000000..ef23f58 Binary files /dev/null and b/Tests/isa/rv32ud-p-recoding differ diff --git a/Tests/isa/rv32ud-p-recoding.dump b/Tests/isa/rv32ud-p-recoding.dump new file mode 100644 index 0000000..ccdd200 --- /dev/null +++ b/Tests/isa/rv32ud-p-recoding.dump @@ -0,0 +1,162 @@ + +rv32ud-p-recoding: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00002517 auipc a0,0x2 +8000010c: ef852007 flw ft0,-264(a0) # 80002000 +80000110: 00002517 auipc a0,0x2 +80000114: ef452087 flw ft1,-268(a0) # 80002004 +80000118: 1000f0d3 fmul.s ft1,ft1,ft0 + +8000011c : +8000011c: a0102553 feq.s a0,ft0,ft1 +80000120: 00100e93 li t4,1 +80000124: 00200193 li gp,2 +80000128: 07d51463 bne a0,t4,80000190 + +8000012c : +8000012c: a0100553 fle.s a0,ft0,ft1 +80000130: 00100e93 li t4,1 +80000134: 00300193 li gp,3 +80000138: 05d51c63 bne a0,t4,80000190 + +8000013c : +8000013c: a0101553 flt.s a0,ft0,ft1 +80000140: 00000e93 li t4,0 +80000144: 00400193 li gp,4 +80000148: 05d51463 bne a0,t4,80000190 +8000014c: d0007053 fcvt.s.w ft0,zero +80000150: 00100513 li a0,1 +80000154: d00570d3 fcvt.s.w ft1,a0 +80000158: 1000f0d3 fmul.s ft1,ft1,ft0 + +8000015c : +8000015c: a0102553 feq.s a0,ft0,ft1 +80000160: 00100e93 li t4,1 +80000164: 00500193 li gp,5 +80000168: 03d51463 bne a0,t4,80000190 + +8000016c : +8000016c: a0100553 fle.s a0,ft0,ft1 +80000170: 00100e93 li t4,1 +80000174: 00600193 li gp,6 +80000178: 01d51c63 bne a0,t4,80000190 + +8000017c : +8000017c: a0101553 flt.s a0,ft0,ft1 +80000180: 00000e93 li t4,0 +80000184: 00700193 li gp,7 +80000188: 01d51463 bne a0,t4,80000190 +8000018c: 00301c63 bne zero,gp,800001a4 + +80000190 : +80000190: 0ff0000f fence +80000194: 00018063 beqz gp,80000194 +80000198: 00119193 slli gp,gp,0x1 +8000019c: 0011e193 ori gp,gp,1 +800001a0: 00000073 ecall + +800001a4 : +800001a4: 0ff0000f fence +800001a8: 00100193 li gp,1 +800001ac: 00000073 ecall +800001b0: c0001073 unimp +800001b4: 0000 unimp +800001b6: 0000 unimp +800001b8: 0000 unimp +800001ba: 0000 unimp +800001bc: 0000 unimp +800001be: 0000 unimp +800001c0: 0000 unimp +800001c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: ff80 fsw fs0,56(a5) + +80002004 : +80002004: 0000 unimp +80002006: 4040 lw s0,4(s0) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32ud-v-fadd b/Tests/isa/rv32ud-v-fadd new file mode 100644 index 0000000..c033c1e Binary files /dev/null and b/Tests/isa/rv32ud-v-fadd differ diff --git a/Tests/isa/rv32ud-v-fadd.dump b/Tests/isa/rv32ud-v-fadd.dump new file mode 100644 index 0000000..d8ed7e3 --- /dev/null +++ b/Tests/isa/rv32ud-v-fadd.dump @@ -0,0 +1,1273 @@ + +rv32ud-v-fadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9e458593 addi a1,a1,-1564 # 80002eac +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a0058593 addi a1,a1,-1536 # 80002f38 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 9ac58593 addi a1,a1,-1620 # 80002f50 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8e058593 addi a1,a1,-1824 # 80002ef0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8d058593 addi a1,a1,-1840 # 80003018 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 83858593 addi a1,a1,-1992 # 80002ff4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 73460613 addi a2,a2,1844 # 80003044 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 64460613 addi a2,a2,1604 # 80002fc0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5c460613 addi a2,a2,1476 # 80002f8c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 03300793 li a5,51 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0e7037b7 lui a5,0xe703 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 6e978793 addi a5,a5,1769 # e7036e9 <_start-0x718fc917> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00053007 fld ft0,0(a0) +80002bf4: 00853087 fld ft1,8(a0) +80002bf8: 01053107 fld ft2,16(a0) +80002bfc: 01852683 lw a3,24(a0) +80002c00: 01c52303 lw t1,28(a0) +80002c04: 021071d3 fadd.d ft3,ft0,ft1 +80002c08: 00353027 fsd ft3,0(a0) +80002c0c: 00452383 lw t2,4(a0) +80002c10: 00052503 lw a0,0(a0) +80002c14: 001015f3 fsflags a1,zero +80002c18: 00000613 li a2,0 +80002c1c: 26d51a63 bne a0,a3,80002e90 +80002c20: 26731863 bne t1,t2,80002e90 +80002c24: 26c59663 bne a1,a2,80002e90 + +80002c28 : +80002c28: 00300193 li gp,3 +80002c2c: 00001517 auipc a0,0x1 +80002c30: 3f450513 addi a0,a0,1012 # 80004020 +80002c34: 00053007 fld ft0,0(a0) +80002c38: 00853087 fld ft1,8(a0) +80002c3c: 01053107 fld ft2,16(a0) +80002c40: 01852683 lw a3,24(a0) +80002c44: 01c52303 lw t1,28(a0) +80002c48: 021071d3 fadd.d ft3,ft0,ft1 +80002c4c: 00353027 fsd ft3,0(a0) +80002c50: 00452383 lw t2,4(a0) +80002c54: 00052503 lw a0,0(a0) +80002c58: 001015f3 fsflags a1,zero +80002c5c: 00100613 li a2,1 +80002c60: 22d51863 bne a0,a3,80002e90 +80002c64: 22731663 bne t1,t2,80002e90 +80002c68: 22c59463 bne a1,a2,80002e90 + +80002c6c : +80002c6c: 00400193 li gp,4 +80002c70: 00001517 auipc a0,0x1 +80002c74: 3d050513 addi a0,a0,976 # 80004040 +80002c78: 00053007 fld ft0,0(a0) +80002c7c: 00853087 fld ft1,8(a0) +80002c80: 01053107 fld ft2,16(a0) +80002c84: 01852683 lw a3,24(a0) +80002c88: 01c52303 lw t1,28(a0) +80002c8c: 021071d3 fadd.d ft3,ft0,ft1 +80002c90: 00353027 fsd ft3,0(a0) +80002c94: 00452383 lw t2,4(a0) +80002c98: 00052503 lw a0,0(a0) +80002c9c: 001015f3 fsflags a1,zero +80002ca0: 00100613 li a2,1 +80002ca4: 1ed51663 bne a0,a3,80002e90 +80002ca8: 1e731463 bne t1,t2,80002e90 +80002cac: 1ec59263 bne a1,a2,80002e90 + +80002cb0 : +80002cb0: 00500193 li gp,5 +80002cb4: 00001517 auipc a0,0x1 +80002cb8: 3ac50513 addi a0,a0,940 # 80004060 +80002cbc: 00053007 fld ft0,0(a0) +80002cc0: 00853087 fld ft1,8(a0) +80002cc4: 01053107 fld ft2,16(a0) +80002cc8: 01852683 lw a3,24(a0) +80002ccc: 01c52303 lw t1,28(a0) +80002cd0: 0a1071d3 fsub.d ft3,ft0,ft1 +80002cd4: 00353027 fsd ft3,0(a0) +80002cd8: 00452383 lw t2,4(a0) +80002cdc: 00052503 lw a0,0(a0) +80002ce0: 001015f3 fsflags a1,zero +80002ce4: 00000613 li a2,0 +80002ce8: 1ad51463 bne a0,a3,80002e90 +80002cec: 1a731263 bne t1,t2,80002e90 +80002cf0: 1ac59063 bne a1,a2,80002e90 + +80002cf4 : +80002cf4: 00600193 li gp,6 +80002cf8: 00001517 auipc a0,0x1 +80002cfc: 38850513 addi a0,a0,904 # 80004080 +80002d00: 00053007 fld ft0,0(a0) +80002d04: 00853087 fld ft1,8(a0) +80002d08: 01053107 fld ft2,16(a0) +80002d0c: 01852683 lw a3,24(a0) +80002d10: 01c52303 lw t1,28(a0) +80002d14: 0a1071d3 fsub.d ft3,ft0,ft1 +80002d18: 00353027 fsd ft3,0(a0) +80002d1c: 00452383 lw t2,4(a0) +80002d20: 00052503 lw a0,0(a0) +80002d24: 001015f3 fsflags a1,zero +80002d28: 00100613 li a2,1 +80002d2c: 16d51263 bne a0,a3,80002e90 +80002d30: 16731063 bne t1,t2,80002e90 +80002d34: 14c59e63 bne a1,a2,80002e90 + +80002d38 : +80002d38: 00700193 li gp,7 +80002d3c: 00001517 auipc a0,0x1 +80002d40: 36450513 addi a0,a0,868 # 800040a0 +80002d44: 00053007 fld ft0,0(a0) +80002d48: 00853087 fld ft1,8(a0) +80002d4c: 01053107 fld ft2,16(a0) +80002d50: 01852683 lw a3,24(a0) +80002d54: 01c52303 lw t1,28(a0) +80002d58: 0a1071d3 fsub.d ft3,ft0,ft1 +80002d5c: 00353027 fsd ft3,0(a0) +80002d60: 00452383 lw t2,4(a0) +80002d64: 00052503 lw a0,0(a0) +80002d68: 001015f3 fsflags a1,zero +80002d6c: 00100613 li a2,1 +80002d70: 12d51063 bne a0,a3,80002e90 +80002d74: 10731e63 bne t1,t2,80002e90 +80002d78: 10c59c63 bne a1,a2,80002e90 + +80002d7c : +80002d7c: 00800193 li gp,8 +80002d80: 00001517 auipc a0,0x1 +80002d84: 34050513 addi a0,a0,832 # 800040c0 +80002d88: 00053007 fld ft0,0(a0) +80002d8c: 00853087 fld ft1,8(a0) +80002d90: 01053107 fld ft2,16(a0) +80002d94: 01852683 lw a3,24(a0) +80002d98: 01c52303 lw t1,28(a0) +80002d9c: 121071d3 fmul.d ft3,ft0,ft1 +80002da0: 00353027 fsd ft3,0(a0) +80002da4: 00452383 lw t2,4(a0) +80002da8: 00052503 lw a0,0(a0) +80002dac: 001015f3 fsflags a1,zero +80002db0: 00000613 li a2,0 +80002db4: 0cd51e63 bne a0,a3,80002e90 +80002db8: 0c731c63 bne t1,t2,80002e90 +80002dbc: 0cc59a63 bne a1,a2,80002e90 + +80002dc0 : +80002dc0: 00900193 li gp,9 +80002dc4: 00001517 auipc a0,0x1 +80002dc8: 31c50513 addi a0,a0,796 # 800040e0 +80002dcc: 00053007 fld ft0,0(a0) +80002dd0: 00853087 fld ft1,8(a0) +80002dd4: 01053107 fld ft2,16(a0) +80002dd8: 01852683 lw a3,24(a0) +80002ddc: 01c52303 lw t1,28(a0) +80002de0: 121071d3 fmul.d ft3,ft0,ft1 +80002de4: 00353027 fsd ft3,0(a0) +80002de8: 00452383 lw t2,4(a0) +80002dec: 00052503 lw a0,0(a0) +80002df0: 001015f3 fsflags a1,zero +80002df4: 00100613 li a2,1 +80002df8: 08d51c63 bne a0,a3,80002e90 +80002dfc: 08731a63 bne t1,t2,80002e90 +80002e00: 08c59863 bne a1,a2,80002e90 + +80002e04 : +80002e04: 00a00193 li gp,10 +80002e08: 00001517 auipc a0,0x1 +80002e0c: 2f850513 addi a0,a0,760 # 80004100 +80002e10: 00053007 fld ft0,0(a0) +80002e14: 00853087 fld ft1,8(a0) +80002e18: 01053107 fld ft2,16(a0) +80002e1c: 01852683 lw a3,24(a0) +80002e20: 01c52303 lw t1,28(a0) +80002e24: 121071d3 fmul.d ft3,ft0,ft1 +80002e28: 00353027 fsd ft3,0(a0) +80002e2c: 00452383 lw t2,4(a0) +80002e30: 00052503 lw a0,0(a0) +80002e34: 001015f3 fsflags a1,zero +80002e38: 00100613 li a2,1 +80002e3c: 04d51a63 bne a0,a3,80002e90 +80002e40: 04731863 bne t1,t2,80002e90 +80002e44: 04c59663 bne a1,a2,80002e90 + +80002e48 : +80002e48: 00b00193 li gp,11 +80002e4c: 00001517 auipc a0,0x1 +80002e50: 2d450513 addi a0,a0,724 # 80004120 +80002e54: 00053007 fld ft0,0(a0) +80002e58: 00853087 fld ft1,8(a0) +80002e5c: 01053107 fld ft2,16(a0) +80002e60: 01852683 lw a3,24(a0) +80002e64: 01c52303 lw t1,28(a0) +80002e68: 0a1071d3 fsub.d ft3,ft0,ft1 +80002e6c: 00353027 fsd ft3,0(a0) +80002e70: 00452383 lw t2,4(a0) +80002e74: 00052503 lw a0,0(a0) +80002e78: 001015f3 fsflags a1,zero +80002e7c: 01000613 li a2,16 +80002e80: 00d51863 bne a0,a3,80002e90 +80002e84: 00731663 bne t1,t2,80002e90 +80002e88: 00c59463 bne a1,a2,80002e90 +80002e8c: 00301a63 bne zero,gp,80002ea0 + +80002e90 : +80002e90: 00119513 slli a0,gp,0x1 +80002e94: 00050063 beqz a0,80002e94 +80002e98: 00156513 ori a0,a0,1 +80002e9c: 00000073 ecall + +80002ea0 : +80002ea0: 00100513 li a0,1 +80002ea4: 00000073 ecall +80002ea8: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 0000 unimp +80004002: 0000 unimp +80004004: 0000 unimp +80004006: 4004 lw s1,0(s0) +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: 0000 unimp +8000400e: 3ff0 fld fa2,248(a5) +80004010: 0000 unimp +80004012: 0000 unimp +80004014: 0000 unimp +80004016: 0000 unimp +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: 0000 unimp +8000401e: 400c lw a1,0(s0) + +80004020 : +80004020: 6666 flw fa2,88(sp) +80004022: 6666 flw fa2,88(sp) +80004024: 4c66 lw s8,88(sp) +80004026: 999ac093 xori ra,s5,-1639 +8000402a: 9999 andi a1,a1,-26 +8000402c: 9999 andi a1,a1,-26 +8000402e: 3ff1 jal 8000400a +80004030: 0000 unimp +80004032: 0000 unimp +80004034: 0000 unimp +80004036: 0000 unimp +80004038: 0000 unimp +8000403a: 0000 unimp +8000403c: 4800 lw s0,16(s0) +8000403e: xori ra,gp,-689 + +80004040 : +80004040: d4f1 beqz s1,8000400c +80004042: 53c8 lw a0,36(a5) +80004044: 400921fb 0x400921fb +80004048: 8c3a mv s8,a4 +8000404a: e230 fsw fa2,64(a2) +8000404c: 798e flw fs3,224(sp) +8000404e: 3e45 jal 80003bfe +80004050: 0000 unimp +80004052: 0000 unimp +80004054: 0000 unimp +80004056: 0000 unimp +80004058: 6ddf 5520 21fb 0x21fb55206ddf +8000405e: 4009 c.li zero,2 + +80004060 : +80004060: 0000 unimp +80004062: 0000 unimp +80004064: 0000 unimp +80004066: 4004 lw s1,0(s0) +80004068: 0000 unimp +8000406a: 0000 unimp +8000406c: 0000 unimp +8000406e: 3ff0 fld fa2,248(a5) +80004070: 0000 unimp +80004072: 0000 unimp +80004074: 0000 unimp +80004076: 0000 unimp +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: 0000 unimp +8000407e: 3ff8 fld fa4,248(a5) + +80004080 : +80004080: 6666 flw fa2,88(sp) +80004082: 6666 flw fa2,88(sp) +80004084: 4c66 lw s8,88(sp) +80004086: 999ac093 xori ra,s5,-1639 +8000408a: 9999 andi a1,a1,-26 +8000408c: 9999 andi a1,a1,-26 +8000408e: bff1 j 8000406a +80004090: 0000 unimp +80004092: 0000 unimp +80004094: 0000 unimp +80004096: 0000 unimp +80004098: 0000 unimp +8000409a: 0000 unimp +8000409c: 4800 lw s0,16(s0) +8000409e: xori ra,gp,-689 + +800040a0 : +800040a0: d4f1 beqz s1,8000406c +800040a2: 53c8 lw a0,36(a5) +800040a4: 400921fb 0x400921fb +800040a8: 8c3a mv s8,a4 +800040aa: e230 fsw fa2,64(a2) +800040ac: 798e flw fs3,224(sp) +800040ae: 3e45 jal 80003c5e +800040b0: 0000 unimp +800040b2: 0000 unimp +800040b4: 0000 unimp +800040b6: 0000 unimp +800040b8: 52713c03 0x52713c03 +800040bc: 400921fb 0x400921fb + +800040c0 : +800040c0: 0000 unimp +800040c2: 0000 unimp +800040c4: 0000 unimp +800040c6: 4004 lw s1,0(s0) +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0000 unimp +800040ce: 3ff0 fld fa2,248(a5) +800040d0: 0000 unimp +800040d2: 0000 unimp +800040d4: 0000 unimp +800040d6: 0000 unimp +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0000 unimp +800040de: 4004 lw s1,0(s0) + +800040e0 : +800040e0: 6666 flw fa2,88(sp) +800040e2: 6666 flw fa2,88(sp) +800040e4: 4c66 lw s8,88(sp) +800040e6: 999ac093 xori ra,s5,-1639 +800040ea: 9999 andi a1,a1,-26 +800040ec: 9999 andi a1,a1,-26 +800040ee: bff1 j 800040ca +800040f0: 0000 unimp +800040f2: 0000 unimp +800040f4: 0000 unimp +800040f6: 0000 unimp +800040f8: 0a3d addi s4,s4,15 +800040fa: 3a70a3d7 0x3a70a3d7 +800040fe: 4095 li ra,5 + +80004100 : +80004100: d4f1 beqz s1,800040cc +80004102: 53c8 lw a0,36(a5) +80004104: 400921fb 0x400921fb +80004108: 8c3a mv s8,a4 +8000410a: e230 fsw fa2,64(a2) +8000410c: 798e flw fs3,224(sp) +8000410e: 3e45 jal 80003cbe +80004110: 0000 unimp +80004112: 0000 unimp +80004114: 0000 unimp +80004116: 0000 unimp +80004118: ff09 bnez a4,80004032 +8000411a: a5c1 j 800047da +8000411c: ddc5 beqz a1,800040d4 +8000411e: 3e60 fld fs0,248(a2) + +80004120 : +80004120: 0000 unimp +80004122: 0000 unimp +80004124: 0000 unimp +80004126: 7ff0 flw fa2,124(a5) +80004128: 0000 unimp +8000412a: 0000 unimp +8000412c: 0000 unimp +8000412e: 7ff0 flw fa2,124(a5) +80004130: 0000 unimp +80004132: 0000 unimp +80004134: 0000 unimp +80004136: 0000 unimp +80004138: 0000 unimp +8000413a: 0000 unimp +8000413c: 0000 unimp +8000413e: 7ff8 flw fa4,124(a5) diff --git a/Tests/isa/rv32ud-v-fclass b/Tests/isa/rv32ud-v-fclass new file mode 100644 index 0000000..c080d2f Binary files /dev/null and b/Tests/isa/rv32ud-v-fclass differ diff --git a/Tests/isa/rv32ud-v-fclass.dump b/Tests/isa/rv32ud-v-fclass.dump new file mode 100644 index 0000000..f246ff5 --- /dev/null +++ b/Tests/isa/rv32ud-v-fclass.dump @@ -0,0 +1,1064 @@ + +rv32ud-v-fclass: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 85458593 addi a1,a1,-1964 # 80002d1c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 87058593 addi a1,a1,-1936 # 80002da8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 81c58593 addi a1,a1,-2020 # 80002dc0 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 75058593 addi a1,a1,1872 # 80002d60 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 74058593 addi a1,a1,1856 # 80002e88 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 6a858593 addi a1,a1,1704 # 80002e64 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 5a460613 addi a2,a2,1444 # 80002eb4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 4b460613 addi a2,a2,1204 # 80002e30 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 43460613 addi a2,a2,1076 # 80002dfc +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01b00793 li a5,27 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 05d877b7 lui a5,0x5d87 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 67d78793 addi a5,a5,1661 # 5d8767d <_start-0x7a278983> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00000517 auipc a0,0x0 +80002be8: 41c50513 addi a0,a0,1052 # 80003000 +80002bec: 00053507 fld fa0,0(a0) +80002bf0: e2051553 fclass.d a0,fa0 +80002bf4: 00100e93 li t4,1 +80002bf8: 00200193 li gp,2 +80002bfc: 11d51263 bne a0,t4,80002d00 + +80002c00 : +80002c00: 00000517 auipc a0,0x0 +80002c04: 40850513 addi a0,a0,1032 # 80003008 +80002c08: 00053507 fld fa0,0(a0) +80002c0c: e2051553 fclass.d a0,fa0 +80002c10: 00200e93 li t4,2 +80002c14: 00300193 li gp,3 +80002c18: 0fd51463 bne a0,t4,80002d00 + +80002c1c : +80002c1c: 00000517 auipc a0,0x0 +80002c20: 3f450513 addi a0,a0,1012 # 80003010 +80002c24: 00053507 fld fa0,0(a0) +80002c28: e2051553 fclass.d a0,fa0 +80002c2c: 00400e93 li t4,4 +80002c30: 00400193 li gp,4 +80002c34: 0dd51663 bne a0,t4,80002d00 + +80002c38 : +80002c38: 00000517 auipc a0,0x0 +80002c3c: 3e050513 addi a0,a0,992 # 80003018 +80002c40: 00053507 fld fa0,0(a0) +80002c44: e2051553 fclass.d a0,fa0 +80002c48: 00800e93 li t4,8 +80002c4c: 00500193 li gp,5 +80002c50: 0bd51863 bne a0,t4,80002d00 + +80002c54 : +80002c54: 00000517 auipc a0,0x0 +80002c58: 3cc50513 addi a0,a0,972 # 80003020 +80002c5c: 00053507 fld fa0,0(a0) +80002c60: e2051553 fclass.d a0,fa0 +80002c64: 01000e93 li t4,16 +80002c68: 00600193 li gp,6 +80002c6c: 09d51a63 bne a0,t4,80002d00 + +80002c70 : +80002c70: 00000517 auipc a0,0x0 +80002c74: 3b850513 addi a0,a0,952 # 80003028 +80002c78: 00053507 fld fa0,0(a0) +80002c7c: e2051553 fclass.d a0,fa0 +80002c80: 02000e93 li t4,32 +80002c84: 00700193 li gp,7 +80002c88: 07d51c63 bne a0,t4,80002d00 + +80002c8c : +80002c8c: 00000517 auipc a0,0x0 +80002c90: 3a450513 addi a0,a0,932 # 80003030 +80002c94: 00053507 fld fa0,0(a0) +80002c98: e2051553 fclass.d a0,fa0 +80002c9c: 04000e93 li t4,64 +80002ca0: 00800193 li gp,8 +80002ca4: 05d51e63 bne a0,t4,80002d00 + +80002ca8 : +80002ca8: 00000517 auipc a0,0x0 +80002cac: 39050513 addi a0,a0,912 # 80003038 +80002cb0: 00053507 fld fa0,0(a0) +80002cb4: e2051553 fclass.d a0,fa0 +80002cb8: 08000e93 li t4,128 +80002cbc: 00900193 li gp,9 +80002cc0: 05d51063 bne a0,t4,80002d00 + +80002cc4 : +80002cc4: 00000517 auipc a0,0x0 +80002cc8: 37c50513 addi a0,a0,892 # 80003040 +80002ccc: 00053507 fld fa0,0(a0) +80002cd0: e2051553 fclass.d a0,fa0 +80002cd4: 10000e93 li t4,256 +80002cd8: 00a00193 li gp,10 +80002cdc: 03d51263 bne a0,t4,80002d00 + +80002ce0 : +80002ce0: 00000517 auipc a0,0x0 +80002ce4: 36850513 addi a0,a0,872 # 80003048 +80002ce8: 00053507 fld fa0,0(a0) +80002cec: e2051553 fclass.d a0,fa0 +80002cf0: 20000e93 li t4,512 +80002cf4: 00b00193 li gp,11 +80002cf8: 01d51463 bne a0,t4,80002d00 +80002cfc: 00301a63 bne zero,gp,80002d10 + +80002d00 : +80002d00: 00119513 slli a0,gp,0x1 +80002d04: 00050063 beqz a0,80002d04 +80002d08: 00156513 ori a0,a0,1 +80002d0c: 00000073 ecall + +80002d10 : +80002d10: 00100513 li a0,1 +80002d14: 00000073 ecall +80002d18: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: 0000 unimp +80003004: 0000 unimp +80003006: fff0 fsw fa2,124(a5) + +80003008 : +80003008: 0000 unimp +8000300a: 0000 unimp +8000300c: 0000 unimp +8000300e: bff0 fsd fa2,248(a5) + +80003010 : +80003010: ffff 0xffff +80003012: ffff 0xffff +80003014: ffff 0xffff +80003016: 0x800f + +80003018 : +80003018: 0000 unimp +8000301a: 0000 unimp +8000301c: 0000 unimp +8000301e: 8000 0x8000 + +80003020 : +80003020: 0000 unimp +80003022: 0000 unimp +80003024: 0000 unimp +80003026: 0000 unimp + +80003028 : +80003028: ffff 0xffff +8000302a: ffff 0xffff +8000302c: ffff 0xffff +8000302e: fence unknown,unknown + +80003030 : +80003030: 0000 unimp +80003032: 0000 unimp +80003034: 0000 unimp +80003036: 3ff0 fld fa2,248(a5) + +80003038 : +80003038: 0000 unimp +8000303a: 0000 unimp +8000303c: 0000 unimp +8000303e: 7ff0 flw fa2,124(a5) + +80003040 : +80003040: 0001 nop +80003042: 0000 unimp +80003044: 0000 unimp +80003046: 7ff0 flw fa2,124(a5) + +80003048 : +80003048: 0000 unimp +8000304a: 0000 unimp +8000304c: 0000 unimp +8000304e: 7ff8 flw fa4,124(a5) diff --git a/Tests/isa/rv32ud-v-fcmp b/Tests/isa/rv32ud-v-fcmp new file mode 100644 index 0000000..515dde1 Binary files /dev/null and b/Tests/isa/rv32ud-v-fcmp differ diff --git a/Tests/isa/rv32ud-v-fcmp.dump b/Tests/isa/rv32ud-v-fcmp.dump new file mode 100644 index 0000000..e434ef9 --- /dev/null +++ b/Tests/isa/rv32ud-v-fcmp.dump @@ -0,0 +1,1421 @@ + +rv32ud-v-fcmp: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: ac058593 addi a1,a1,-1344 # 80002f88 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: adc58593 addi a1,a1,-1316 # 80003014 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: a8858593 addi a1,a1,-1400 # 8000302c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 9bc58593 addi a1,a1,-1604 # 80002fcc +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 9ac58593 addi a1,a1,-1620 # 800030f4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 91458593 addi a1,a1,-1772 # 800030d0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 81060613 addi a2,a2,-2032 # 80003120 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 72060613 addi a2,a2,1824 # 8000309c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 6a060613 addi a2,a2,1696 # 80003068 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 02b00793 li a5,43 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0d1287b7 lui a5,0xd128 +80002b9c: 00080637 lui a2,0x80 +80002ba0: c7f78793 addi a5,a5,-897 # d127c7f <_start-0x72ed8381> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00053007 fld ft0,0(a0) +80002bf4: 00853087 fld ft1,8(a0) +80002bf8: 01053107 fld ft2,16(a0) +80002bfc: 01852683 lw a3,24(a0) +80002c00: 01c52303 lw t1,28(a0) +80002c04: a2102553 feq.d a0,ft0,ft1 +80002c08: 00000393 li t2,0 +80002c0c: 001015f3 fsflags a1,zero +80002c10: 00000613 li a2,0 +80002c14: 34d51c63 bne a0,a3,80002f6c +80002c18: 34731a63 bne t1,t2,80002f6c +80002c1c: 34c59863 bne a1,a2,80002f6c + +80002c20 : +80002c20: 00300193 li gp,3 +80002c24: 00001517 auipc a0,0x1 +80002c28: 3fc50513 addi a0,a0,1020 # 80004020 +80002c2c: 00053007 fld ft0,0(a0) +80002c30: 00853087 fld ft1,8(a0) +80002c34: 01053107 fld ft2,16(a0) +80002c38: 01852683 lw a3,24(a0) +80002c3c: 01c52303 lw t1,28(a0) +80002c40: a2100553 fle.d a0,ft0,ft1 +80002c44: 00000393 li t2,0 +80002c48: 001015f3 fsflags a1,zero +80002c4c: 00000613 li a2,0 +80002c50: 30d51e63 bne a0,a3,80002f6c +80002c54: 30731c63 bne t1,t2,80002f6c +80002c58: 30c59a63 bne a1,a2,80002f6c + +80002c5c : +80002c5c: 00400193 li gp,4 +80002c60: 00001517 auipc a0,0x1 +80002c64: 3e050513 addi a0,a0,992 # 80004040 +80002c68: 00053007 fld ft0,0(a0) +80002c6c: 00853087 fld ft1,8(a0) +80002c70: 01053107 fld ft2,16(a0) +80002c74: 01852683 lw a3,24(a0) +80002c78: 01c52303 lw t1,28(a0) +80002c7c: a2101553 flt.d a0,ft0,ft1 +80002c80: 00000393 li t2,0 +80002c84: 001015f3 fsflags a1,zero +80002c88: 00000613 li a2,0 +80002c8c: 2ed51063 bne a0,a3,80002f6c +80002c90: 2c731e63 bne t1,t2,80002f6c +80002c94: 2cc59c63 bne a1,a2,80002f6c + +80002c98 : +80002c98: 00500193 li gp,5 +80002c9c: 00001517 auipc a0,0x1 +80002ca0: 3c450513 addi a0,a0,964 # 80004060 +80002ca4: 00053007 fld ft0,0(a0) +80002ca8: 00853087 fld ft1,8(a0) +80002cac: 01053107 fld ft2,16(a0) +80002cb0: 01852683 lw a3,24(a0) +80002cb4: 01c52303 lw t1,28(a0) +80002cb8: a2102553 feq.d a0,ft0,ft1 +80002cbc: 00000393 li t2,0 +80002cc0: 001015f3 fsflags a1,zero +80002cc4: 00000613 li a2,0 +80002cc8: 2ad51263 bne a0,a3,80002f6c +80002ccc: 2a731063 bne t1,t2,80002f6c +80002cd0: 28c59e63 bne a1,a2,80002f6c + +80002cd4 : +80002cd4: 00600193 li gp,6 +80002cd8: 00001517 auipc a0,0x1 +80002cdc: 3a850513 addi a0,a0,936 # 80004080 +80002ce0: 00053007 fld ft0,0(a0) +80002ce4: 00853087 fld ft1,8(a0) +80002ce8: 01053107 fld ft2,16(a0) +80002cec: 01852683 lw a3,24(a0) +80002cf0: 01c52303 lw t1,28(a0) +80002cf4: a2100553 fle.d a0,ft0,ft1 +80002cf8: 00000393 li t2,0 +80002cfc: 001015f3 fsflags a1,zero +80002d00: 00000613 li a2,0 +80002d04: 26d51463 bne a0,a3,80002f6c +80002d08: 26731263 bne t1,t2,80002f6c +80002d0c: 26c59063 bne a1,a2,80002f6c + +80002d10 : +80002d10: 00700193 li gp,7 +80002d14: 00001517 auipc a0,0x1 +80002d18: 38c50513 addi a0,a0,908 # 800040a0 +80002d1c: 00053007 fld ft0,0(a0) +80002d20: 00853087 fld ft1,8(a0) +80002d24: 01053107 fld ft2,16(a0) +80002d28: 01852683 lw a3,24(a0) +80002d2c: 01c52303 lw t1,28(a0) +80002d30: a2101553 flt.d a0,ft0,ft1 +80002d34: 00000393 li t2,0 +80002d38: 001015f3 fsflags a1,zero +80002d3c: 00000613 li a2,0 +80002d40: 22d51663 bne a0,a3,80002f6c +80002d44: 22731463 bne t1,t2,80002f6c +80002d48: 22c59263 bne a1,a2,80002f6c + +80002d4c : +80002d4c: 00800193 li gp,8 +80002d50: 00001517 auipc a0,0x1 +80002d54: 37050513 addi a0,a0,880 # 800040c0 +80002d58: 00053007 fld ft0,0(a0) +80002d5c: 00853087 fld ft1,8(a0) +80002d60: 01053107 fld ft2,16(a0) +80002d64: 01852683 lw a3,24(a0) +80002d68: 01c52303 lw t1,28(a0) +80002d6c: a2102553 feq.d a0,ft0,ft1 +80002d70: 00000393 li t2,0 +80002d74: 001015f3 fsflags a1,zero +80002d78: 00000613 li a2,0 +80002d7c: 1ed51863 bne a0,a3,80002f6c +80002d80: 1e731663 bne t1,t2,80002f6c +80002d84: 1ec59463 bne a1,a2,80002f6c + +80002d88 : +80002d88: 00900193 li gp,9 +80002d8c: 00001517 auipc a0,0x1 +80002d90: 35450513 addi a0,a0,852 # 800040e0 +80002d94: 00053007 fld ft0,0(a0) +80002d98: 00853087 fld ft1,8(a0) +80002d9c: 01053107 fld ft2,16(a0) +80002da0: 01852683 lw a3,24(a0) +80002da4: 01c52303 lw t1,28(a0) +80002da8: a2102553 feq.d a0,ft0,ft1 +80002dac: 00000393 li t2,0 +80002db0: 001015f3 fsflags a1,zero +80002db4: 00000613 li a2,0 +80002db8: 1ad51a63 bne a0,a3,80002f6c +80002dbc: 1a731863 bne t1,t2,80002f6c +80002dc0: 1ac59663 bne a1,a2,80002f6c + +80002dc4 : +80002dc4: 00a00193 li gp,10 +80002dc8: 00001517 auipc a0,0x1 +80002dcc: 33850513 addi a0,a0,824 # 80004100 +80002dd0: 00053007 fld ft0,0(a0) +80002dd4: 00853087 fld ft1,8(a0) +80002dd8: 01053107 fld ft2,16(a0) +80002ddc: 01852683 lw a3,24(a0) +80002de0: 01c52303 lw t1,28(a0) +80002de4: a2102553 feq.d a0,ft0,ft1 +80002de8: 00000393 li t2,0 +80002dec: 001015f3 fsflags a1,zero +80002df0: 01000613 li a2,16 +80002df4: 16d51c63 bne a0,a3,80002f6c +80002df8: 16731a63 bne t1,t2,80002f6c +80002dfc: 16c59863 bne a1,a2,80002f6c + +80002e00 : +80002e00: 00b00193 li gp,11 +80002e04: 00001517 auipc a0,0x1 +80002e08: 31c50513 addi a0,a0,796 # 80004120 +80002e0c: 00053007 fld ft0,0(a0) +80002e10: 00853087 fld ft1,8(a0) +80002e14: 01053107 fld ft2,16(a0) +80002e18: 01852683 lw a3,24(a0) +80002e1c: 01c52303 lw t1,28(a0) +80002e20: a2101553 flt.d a0,ft0,ft1 +80002e24: 00000393 li t2,0 +80002e28: 001015f3 fsflags a1,zero +80002e2c: 01000613 li a2,16 +80002e30: 12d51e63 bne a0,a3,80002f6c +80002e34: 12731c63 bne t1,t2,80002f6c +80002e38: 12c59a63 bne a1,a2,80002f6c + +80002e3c : +80002e3c: 00c00193 li gp,12 +80002e40: 00001517 auipc a0,0x1 +80002e44: 30050513 addi a0,a0,768 # 80004140 +80002e48: 00053007 fld ft0,0(a0) +80002e4c: 00853087 fld ft1,8(a0) +80002e50: 01053107 fld ft2,16(a0) +80002e54: 01852683 lw a3,24(a0) +80002e58: 01c52303 lw t1,28(a0) +80002e5c: a2101553 flt.d a0,ft0,ft1 +80002e60: 00000393 li t2,0 +80002e64: 001015f3 fsflags a1,zero +80002e68: 01000613 li a2,16 +80002e6c: 10d51063 bne a0,a3,80002f6c +80002e70: 0e731e63 bne t1,t2,80002f6c +80002e74: 0ec59c63 bne a1,a2,80002f6c + +80002e78 : +80002e78: 00d00193 li gp,13 +80002e7c: 00001517 auipc a0,0x1 +80002e80: 2e450513 addi a0,a0,740 # 80004160 +80002e84: 00053007 fld ft0,0(a0) +80002e88: 00853087 fld ft1,8(a0) +80002e8c: 01053107 fld ft2,16(a0) +80002e90: 01852683 lw a3,24(a0) +80002e94: 01c52303 lw t1,28(a0) +80002e98: a2101553 flt.d a0,ft0,ft1 +80002e9c: 00000393 li t2,0 +80002ea0: 001015f3 fsflags a1,zero +80002ea4: 01000613 li a2,16 +80002ea8: 0cd51263 bne a0,a3,80002f6c +80002eac: 0c731063 bne t1,t2,80002f6c +80002eb0: 0ac59e63 bne a1,a2,80002f6c + +80002eb4 : +80002eb4: 00e00193 li gp,14 +80002eb8: 00001517 auipc a0,0x1 +80002ebc: 2c850513 addi a0,a0,712 # 80004180 +80002ec0: 00053007 fld ft0,0(a0) +80002ec4: 00853087 fld ft1,8(a0) +80002ec8: 01053107 fld ft2,16(a0) +80002ecc: 01852683 lw a3,24(a0) +80002ed0: 01c52303 lw t1,28(a0) +80002ed4: a2100553 fle.d a0,ft0,ft1 +80002ed8: 00000393 li t2,0 +80002edc: 001015f3 fsflags a1,zero +80002ee0: 01000613 li a2,16 +80002ee4: 08d51463 bne a0,a3,80002f6c +80002ee8: 08731263 bne t1,t2,80002f6c +80002eec: 08c59063 bne a1,a2,80002f6c + +80002ef0 : +80002ef0: 00f00193 li gp,15 +80002ef4: 00001517 auipc a0,0x1 +80002ef8: 2ac50513 addi a0,a0,684 # 800041a0 +80002efc: 00053007 fld ft0,0(a0) +80002f00: 00853087 fld ft1,8(a0) +80002f04: 01053107 fld ft2,16(a0) +80002f08: 01852683 lw a3,24(a0) +80002f0c: 01c52303 lw t1,28(a0) +80002f10: a2100553 fle.d a0,ft0,ft1 +80002f14: 00000393 li t2,0 +80002f18: 001015f3 fsflags a1,zero +80002f1c: 01000613 li a2,16 +80002f20: 04d51663 bne a0,a3,80002f6c +80002f24: 04731463 bne t1,t2,80002f6c +80002f28: 04c59263 bne a1,a2,80002f6c + +80002f2c : +80002f2c: 01000193 li gp,16 +80002f30: 00001517 auipc a0,0x1 +80002f34: 29050513 addi a0,a0,656 # 800041c0 +80002f38: 00053007 fld ft0,0(a0) +80002f3c: 00853087 fld ft1,8(a0) +80002f40: 01053107 fld ft2,16(a0) +80002f44: 01852683 lw a3,24(a0) +80002f48: 01c52303 lw t1,28(a0) +80002f4c: a2100553 fle.d a0,ft0,ft1 +80002f50: 00000393 li t2,0 +80002f54: 001015f3 fsflags a1,zero +80002f58: 01000613 li a2,16 +80002f5c: 00d51863 bne a0,a3,80002f6c +80002f60: 00731663 bne t1,t2,80002f6c +80002f64: 00c59463 bne a1,a2,80002f6c +80002f68: 00301a63 bne zero,gp,80002f7c + +80002f6c : +80002f6c: 00119513 slli a0,gp,0x1 +80002f70: 00050063 beqz a0,80002f70 +80002f74: 00156513 ori a0,a0,1 +80002f78: 00000073 ecall + +80002f7c : +80002f7c: 00100513 li a0,1 +80002f80: 00000073 ecall +80002f84: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 5c28f5c3 0x5c28f5c3 +80004004: bff5c28f 0xbff5c28f +80004008: 5c28f5c3 0x5c28f5c3 +8000400c: bff5c28f 0xbff5c28f +80004010: 0000 unimp +80004012: 0000 unimp +80004014: 0000 unimp +80004016: 0000 unimp +80004018: 0001 nop +8000401a: 0000 unimp +8000401c: 0000 unimp +8000401e: 0000 unimp + +80004020 : +80004020: 5c28f5c3 0x5c28f5c3 +80004024: bff5c28f 0xbff5c28f +80004028: 5c28f5c3 0x5c28f5c3 +8000402c: bff5c28f 0xbff5c28f +80004030: 0000 unimp +80004032: 0000 unimp +80004034: 0000 unimp +80004036: 0000 unimp +80004038: 0001 nop +8000403a: 0000 unimp +8000403c: 0000 unimp +8000403e: 0000 unimp + +80004040 : +80004040: 5c28f5c3 0x5c28f5c3 +80004044: bff5c28f 0xbff5c28f +80004048: 5c28f5c3 0x5c28f5c3 +8000404c: bff5c28f 0xbff5c28f +80004050: 0000 unimp +80004052: 0000 unimp +80004054: 0000 unimp +80004056: 0000 unimp +80004058: 0000 unimp +8000405a: 0000 unimp +8000405c: 0000 unimp +8000405e: 0000 unimp + +80004060 : +80004060: 51ec lw a1,100(a1) +80004062: 1eb8 addi a4,sp,888 +80004064: eb85 bnez a5,80004094 +80004066: bff5 j 80004062 +80004068: 5c28f5c3 0x5c28f5c3 +8000406c: bff5c28f 0xbff5c28f +80004070: 0000 unimp +80004072: 0000 unimp +80004074: 0000 unimp +80004076: 0000 unimp +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: 0000 unimp +8000407e: 0000 unimp + +80004080 : +80004080: 51ec lw a1,100(a1) +80004082: 1eb8 addi a4,sp,888 +80004084: eb85 bnez a5,800040b4 +80004086: bff5 j 80004082 +80004088: 5c28f5c3 0x5c28f5c3 +8000408c: bff5c28f 0xbff5c28f +80004090: 0000 unimp +80004092: 0000 unimp +80004094: 0000 unimp +80004096: 0000 unimp +80004098: 0001 nop +8000409a: 0000 unimp +8000409c: 0000 unimp +8000409e: 0000 unimp + +800040a0 : +800040a0: 51ec lw a1,100(a1) +800040a2: 1eb8 addi a4,sp,888 +800040a4: eb85 bnez a5,800040d4 +800040a6: bff5 j 800040a2 +800040a8: 5c28f5c3 0x5c28f5c3 +800040ac: bff5c28f 0xbff5c28f +800040b0: 0000 unimp +800040b2: 0000 unimp +800040b4: 0000 unimp +800040b6: 0000 unimp +800040b8: 0001 nop +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: 0000 unimp + +800040c0 : +800040c0: ffff 0xffff +800040c2: ffff 0xffff +800040c4: ffff 0xffff +800040c6: 7fff 0x7fff +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0000 unimp +800040ce: 0000 unimp +800040d0: 0000 unimp +800040d2: 0000 unimp +800040d4: 0000 unimp +800040d6: 0000 unimp +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0000 unimp +800040de: 0000 unimp + +800040e0 : +800040e0: ffff 0xffff +800040e2: ffff 0xffff +800040e4: ffff 0xffff +800040e6: 7fff 0x7fff +800040e8: ffff 0xffff +800040ea: ffff 0xffff +800040ec: ffff 0xffff +800040ee: 7fff 0x7fff +800040f0: 0000 unimp +800040f2: 0000 unimp +800040f4: 0000 unimp +800040f6: 0000 unimp +800040f8: 0000 unimp +800040fa: 0000 unimp +800040fc: 0000 unimp +800040fe: 0000 unimp + +80004100 : +80004100: 0001 nop +80004102: 0000 unimp +80004104: 0000 unimp +80004106: 7ff0 flw fa2,124(a5) +80004108: 0000 unimp +8000410a: 0000 unimp +8000410c: 0000 unimp +8000410e: 0000 unimp +80004110: 0000 unimp +80004112: 0000 unimp +80004114: 0000 unimp +80004116: 0000 unimp +80004118: 0000 unimp +8000411a: 0000 unimp +8000411c: 0000 unimp +8000411e: 0000 unimp + +80004120 : +80004120: ffff 0xffff +80004122: ffff 0xffff +80004124: ffff 0xffff +80004126: 7fff 0x7fff +80004128: 0000 unimp +8000412a: 0000 unimp +8000412c: 0000 unimp +8000412e: 0000 unimp +80004130: 0000 unimp +80004132: 0000 unimp +80004134: 0000 unimp +80004136: 0000 unimp +80004138: 0000 unimp +8000413a: 0000 unimp +8000413c: 0000 unimp +8000413e: 0000 unimp + +80004140 : +80004140: ffff 0xffff +80004142: ffff 0xffff +80004144: ffff 0xffff +80004146: 7fff 0x7fff +80004148: ffff 0xffff +8000414a: ffff 0xffff +8000414c: ffff 0xffff +8000414e: 7fff 0x7fff +80004150: 0000 unimp +80004152: 0000 unimp +80004154: 0000 unimp +80004156: 0000 unimp +80004158: 0000 unimp +8000415a: 0000 unimp +8000415c: 0000 unimp +8000415e: 0000 unimp + +80004160 : +80004160: 0001 nop +80004162: 0000 unimp +80004164: 0000 unimp +80004166: 7ff0 flw fa2,124(a5) +80004168: 0000 unimp +8000416a: 0000 unimp +8000416c: 0000 unimp +8000416e: 0000 unimp +80004170: 0000 unimp +80004172: 0000 unimp +80004174: 0000 unimp +80004176: 0000 unimp +80004178: 0000 unimp +8000417a: 0000 unimp +8000417c: 0000 unimp +8000417e: 0000 unimp + +80004180 : +80004180: ffff 0xffff +80004182: ffff 0xffff +80004184: ffff 0xffff +80004186: 7fff 0x7fff +80004188: 0000 unimp +8000418a: 0000 unimp +8000418c: 0000 unimp +8000418e: 0000 unimp +80004190: 0000 unimp +80004192: 0000 unimp +80004194: 0000 unimp +80004196: 0000 unimp +80004198: 0000 unimp +8000419a: 0000 unimp +8000419c: 0000 unimp +8000419e: 0000 unimp + +800041a0 : +800041a0: ffff 0xffff +800041a2: ffff 0xffff +800041a4: ffff 0xffff +800041a6: 7fff 0x7fff +800041a8: ffff 0xffff +800041aa: ffff 0xffff +800041ac: ffff 0xffff +800041ae: 7fff 0x7fff +800041b0: 0000 unimp +800041b2: 0000 unimp +800041b4: 0000 unimp +800041b6: 0000 unimp +800041b8: 0000 unimp +800041ba: 0000 unimp +800041bc: 0000 unimp +800041be: 0000 unimp + +800041c0 : +800041c0: 0001 nop +800041c2: 0000 unimp +800041c4: 0000 unimp +800041c6: 7ff0 flw fa2,124(a5) +800041c8: 0000 unimp +800041ca: 0000 unimp +800041cc: 0000 unimp +800041ce: 0000 unimp +800041d0: 0000 unimp +800041d2: 0000 unimp +800041d4: 0000 unimp +800041d6: 0000 unimp +800041d8: 0000 unimp +800041da: 0000 unimp +800041dc: 0000 unimp +800041de: 0000 unimp diff --git a/Tests/isa/rv32ud-v-fcvt b/Tests/isa/rv32ud-v-fcvt new file mode 100644 index 0000000..2977dd6 Binary files /dev/null and b/Tests/isa/rv32ud-v-fcvt differ diff --git a/Tests/isa/rv32ud-v-fcvt.dump b/Tests/isa/rv32ud-v-fcvt.dump new file mode 100644 index 0000000..a32a65d --- /dev/null +++ b/Tests/isa/rv32ud-v-fcvt.dump @@ -0,0 +1,1095 @@ + +rv32ud-v-fcvt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 8c858593 addi a1,a1,-1848 # 80002d90 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 8e458593 addi a1,a1,-1820 # 80002e1c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 89058593 addi a1,a1,-1904 # 80002e34 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 7c458593 addi a1,a1,1988 # 80002dd4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 7b458593 addi a1,a1,1972 # 80002efc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 71c58593 addi a1,a1,1820 # 80002ed8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 61860613 addi a2,a2,1560 # 80002f28 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 52860613 addi a2,a2,1320 # 80002ea4 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 4a860613 addi a2,a2,1192 # 80002e70 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01900793 li a5,25 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0c98a7b7 lui a5,0xc98a +80002b9c: 00080637 lui a2,0x80 +80002ba0: 68178793 addi a5,a5,1665 # c98a681 <_start-0x7367597f> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00000517 auipc a0,0x0 +80002bec: 41850513 addi a0,a0,1048 # 80003000 +80002bf0: 00052683 lw a3,0(a0) +80002bf4: 00452703 lw a4,4(a0) +80002bf8: 00200593 li a1,2 +80002bfc: d2058053 fcvt.d.w ft0,a1 +80002c00: 00053027 fsd ft0,0(a0) +80002c04: 00452583 lw a1,4(a0) +80002c08: 00052503 lw a0,0(a0) +80002c0c: 00101073 fsflags zero +80002c10: 16d51263 bne a0,a3,80002d74 +80002c14: 16e59063 bne a1,a4,80002d74 + +80002c18 : +80002c18: 00300193 li gp,3 +80002c1c: 00000517 auipc a0,0x0 +80002c20: 3ec50513 addi a0,a0,1004 # 80003008 +80002c24: 00052683 lw a3,0(a0) +80002c28: 00452703 lw a4,4(a0) +80002c2c: ffe00593 li a1,-2 +80002c30: d2058053 fcvt.d.w ft0,a1 +80002c34: 00053027 fsd ft0,0(a0) +80002c38: 00452583 lw a1,4(a0) +80002c3c: 00052503 lw a0,0(a0) +80002c40: 00101073 fsflags zero +80002c44: 12d51863 bne a0,a3,80002d74 +80002c48: 12e59663 bne a1,a4,80002d74 + +80002c4c : +80002c4c: 00400193 li gp,4 +80002c50: 00000517 auipc a0,0x0 +80002c54: 3c050513 addi a0,a0,960 # 80003010 +80002c58: 00052683 lw a3,0(a0) +80002c5c: 00452703 lw a4,4(a0) +80002c60: 00200593 li a1,2 +80002c64: d2158053 fcvt.d.wu ft0,a1 +80002c68: 00053027 fsd ft0,0(a0) +80002c6c: 00452583 lw a1,4(a0) +80002c70: 00052503 lw a0,0(a0) +80002c74: 00101073 fsflags zero +80002c78: 0ed51e63 bne a0,a3,80002d74 +80002c7c: 0ee59c63 bne a1,a4,80002d74 + +80002c80 : +80002c80: 00500193 li gp,5 +80002c84: 00000517 auipc a0,0x0 +80002c88: 39450513 addi a0,a0,916 # 80003018 +80002c8c: 00052683 lw a3,0(a0) +80002c90: 00452703 lw a4,4(a0) +80002c94: ffe00593 li a1,-2 +80002c98: d2158053 fcvt.d.wu ft0,a1 +80002c9c: 00053027 fsd ft0,0(a0) +80002ca0: 00452583 lw a1,4(a0) +80002ca4: 00052503 lw a0,0(a0) +80002ca8: 00101073 fsflags zero +80002cac: 0cd51463 bne a0,a3,80002d74 +80002cb0: 0ce59263 bne a1,a4,80002d74 + +80002cb4 : +80002cb4: 00a00193 li gp,10 +80002cb8: 00000517 auipc a0,0x0 +80002cbc: 36850513 addi a0,a0,872 # 80003020 +80002cc0: 00053007 fld ft0,0(a0) +80002cc4: 00853087 fld ft1,8(a0) +80002cc8: 01053107 fld ft2,16(a0) +80002ccc: 01852683 lw a3,24(a0) +80002cd0: 01c52303 lw t1,28(a0) +80002cd4: 401071d3 fcvt.s.d ft3,ft0 +80002cd8: 420181d3 fcvt.d.s ft3,ft3 +80002cdc: 00353027 fsd ft3,0(a0) +80002ce0: 00452383 lw t2,4(a0) +80002ce4: 00052503 lw a0,0(a0) +80002ce8: 001015f3 fsflags a1,zero +80002cec: 00000613 li a2,0 +80002cf0: 08d51263 bne a0,a3,80002d74 +80002cf4: 08731063 bne t1,t2,80002d74 +80002cf8: 06c59e63 bne a1,a2,80002d74 + +80002cfc : +80002cfc: 00b00193 li gp,11 +80002d00: 00000517 auipc a0,0x0 +80002d04: 34050513 addi a0,a0,832 # 80003040 +80002d08: 00052007 flw ft0,0(a0) +80002d0c: 00452087 flw ft1,4(a0) +80002d10: 00852107 flw ft2,8(a0) +80002d14: 00c52683 lw a3,12(a0) +80002d18: 420001d3 fcvt.d.s ft3,ft0 +80002d1c: 4011f1d3 fcvt.s.d ft3,ft3 +80002d20: e0018553 fmv.x.w a0,ft3 +80002d24: 001015f3 fsflags a1,zero +80002d28: 00000613 li a2,0 +80002d2c: 04d51463 bne a0,a3,80002d74 +80002d30: 04c59263 bne a1,a2,80002d74 + +80002d34 : +80002d34: 00000597 auipc a1,0x0 +80002d38: 32c58593 addi a1,a1,812 # 80003060 +80002d3c: 0005b107 fld ft2,0(a1) +80002d40: 40117153 fcvt.s.d ft2,ft2 +80002d44: 42010153 fcvt.d.s ft2,ft2 +80002d48: 0025b027 fsd ft2,0(a1) +80002d4c: 0005a503 lw a0,0(a1) +80002d50: 0045a583 lw a1,4(a1) +80002d54: 00000f97 auipc t6,0x0 +80002d58: 2fcf8f93 addi t6,t6,764 # 80003050 +80002d5c: 000fae83 lw t4,0(t6) +80002d60: 004faf83 lw t6,4(t6) +80002d64: 00c00193 li gp,12 +80002d68: 01d51663 bne a0,t4,80002d74 +80002d6c: 01f59463 bne a1,t6,80002d74 +80002d70: 00301a63 bne zero,gp,80002d84 + +80002d74 : +80002d74: 00119513 slli a0,gp,0x1 +80002d78: 00050063 beqz a0,80002d78 +80002d7c: 00156513 ori a0,a0,1 +80002d80: 00000073 ecall + +80002d84 : +80002d84: 00100513 li a0,1 +80002d88: 00000073 ecall +80002d8c: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: 0000 unimp +80003004: 0000 unimp +80003006: 4000 lw s0,0(s0) + +80003008 : +80003008: 0000 unimp +8000300a: 0000 unimp +8000300c: 0000 unimp +8000300e: c000 sw s0,0(s0) + +80003010 : +80003010: 0000 unimp +80003012: 0000 unimp +80003014: 0000 unimp +80003016: 4000 lw s0,0(s0) + +80003018 : +80003018: 0000 unimp +8000301a: ffc0 fsw fs0,60(a5) +8000301c: ffff 0xffff +8000301e: jal gp,8000701e <_end+0xc26> + +80003020 : +80003020: 0000 unimp +80003022: 0000 unimp +80003024: 0000 unimp +80003026: bff8 fsd fa4,248(a5) +80003028: 0000 unimp +8000302a: 0000 unimp +8000302c: 0000 unimp +8000302e: 0000 unimp +80003030: 0000 unimp +80003032: 0000 unimp +80003034: 0000 unimp +80003036: 0000 unimp +80003038: 0000 unimp +8000303a: 0000 unimp +8000303c: 0000 unimp +8000303e: bff8 fsd fa4,248(a5) + +80003040 : +80003040: 0000 unimp +80003042: bfc0 fsd fs0,184(a5) +80003044: 0000 unimp +80003046: 0000 unimp +80003048: 0000 unimp +8000304a: 0000 unimp +8000304c: 0000 unimp +8000304e: bfc0 fsd fs0,184(a5) + +80003050 : +80003050: 0000 unimp +80003052: 0000 unimp +80003054: 0000 unimp +80003056: 7ff8 flw fa4,124(a5) +80003058: 0000 unimp +8000305a: 0000 unimp +8000305c: 0000 unimp +8000305e: 0000 unimp + +80003060 : +80003060: 8004 0x8004 +80003062: ffff 0xffff +80003064: ffff 0xffff +80003066: 7ffc flw fa5,124(a5) diff --git a/Tests/isa/rv32ud-v-fcvt_w b/Tests/isa/rv32ud-v-fcvt_w new file mode 100644 index 0000000..12e6a94 Binary files /dev/null and b/Tests/isa/rv32ud-v-fcvt_w differ diff --git a/Tests/isa/rv32ud-v-fcvt_w.dump b/Tests/isa/rv32ud-v-fcvt_w.dump new file mode 100644 index 0000000..5ead0f7 --- /dev/null +++ b/Tests/isa/rv32ud-v-fcvt_w.dump @@ -0,0 +1,1401 @@ + +rv32ud-v-fcvt_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: b2858593 addi a1,a1,-1240 # 80002ff0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: b4458593 addi a1,a1,-1212 # 8000307c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: af058593 addi a1,a1,-1296 # 80003094 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: a2458593 addi a1,a1,-1500 # 80003034 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: a1458593 addi a1,a1,-1516 # 8000315c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 97c58593 addi a1,a1,-1668 # 80003138 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 87860613 addi a2,a2,-1928 # 80003188 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 78860613 addi a2,a2,1928 # 80003104 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 70860613 addi a2,a2,1800 # 800030d0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 00e00793 li a5,14 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0ddd07b7 lui a5,0xddd0 +80002b9c: 00080637 lui a2,0x80 +80002ba0: ebd78793 addi a5,a5,-323 # ddcfebd <_start-0x72230143> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00052007 flw ft0,0(a0) +80002bf4: 00452087 flw ft1,4(a0) +80002bf8: 00852107 flw ft2,8(a0) +80002bfc: 00c52683 lw a3,12(a0) +80002c00: c0001553 fcvt.w.s a0,ft0,rtz +80002c04: 001015f3 fsflags a1,zero +80002c08: 00100613 li a2,1 +80002c0c: 3cd51463 bne a0,a3,80002fd4 +80002c10: 3cc59263 bne a1,a2,80002fd4 + +80002c14 : +80002c14: 00300193 li gp,3 +80002c18: 00001517 auipc a0,0x1 +80002c1c: 3f850513 addi a0,a0,1016 # 80004010 +80002c20: 00052007 flw ft0,0(a0) +80002c24: 00452087 flw ft1,4(a0) +80002c28: 00852107 flw ft2,8(a0) +80002c2c: 00c52683 lw a3,12(a0) +80002c30: c0001553 fcvt.w.s a0,ft0,rtz +80002c34: 001015f3 fsflags a1,zero +80002c38: 00000613 li a2,0 +80002c3c: 38d51c63 bne a0,a3,80002fd4 +80002c40: 38c59a63 bne a1,a2,80002fd4 + +80002c44 : +80002c44: 00400193 li gp,4 +80002c48: 00001517 auipc a0,0x1 +80002c4c: 3d850513 addi a0,a0,984 # 80004020 +80002c50: 00052007 flw ft0,0(a0) +80002c54: 00452087 flw ft1,4(a0) +80002c58: 00852107 flw ft2,8(a0) +80002c5c: 00c52683 lw a3,12(a0) +80002c60: c0001553 fcvt.w.s a0,ft0,rtz +80002c64: 001015f3 fsflags a1,zero +80002c68: 00100613 li a2,1 +80002c6c: 36d51463 bne a0,a3,80002fd4 +80002c70: 36c59263 bne a1,a2,80002fd4 + +80002c74 : +80002c74: 00500193 li gp,5 +80002c78: 00001517 auipc a0,0x1 +80002c7c: 3b850513 addi a0,a0,952 # 80004030 +80002c80: 00052007 flw ft0,0(a0) +80002c84: 00452087 flw ft1,4(a0) +80002c88: 00852107 flw ft2,8(a0) +80002c8c: 00c52683 lw a3,12(a0) +80002c90: c0001553 fcvt.w.s a0,ft0,rtz +80002c94: 001015f3 fsflags a1,zero +80002c98: 00100613 li a2,1 +80002c9c: 32d51c63 bne a0,a3,80002fd4 +80002ca0: 32c59a63 bne a1,a2,80002fd4 + +80002ca4 : +80002ca4: 00600193 li gp,6 +80002ca8: 00001517 auipc a0,0x1 +80002cac: 39850513 addi a0,a0,920 # 80004040 +80002cb0: 00052007 flw ft0,0(a0) +80002cb4: 00452087 flw ft1,4(a0) +80002cb8: 00852107 flw ft2,8(a0) +80002cbc: 00c52683 lw a3,12(a0) +80002cc0: c0001553 fcvt.w.s a0,ft0,rtz +80002cc4: 001015f3 fsflags a1,zero +80002cc8: 00000613 li a2,0 +80002ccc: 30d51463 bne a0,a3,80002fd4 +80002cd0: 30c59263 bne a1,a2,80002fd4 + +80002cd4 : +80002cd4: 00700193 li gp,7 +80002cd8: 00001517 auipc a0,0x1 +80002cdc: 37850513 addi a0,a0,888 # 80004050 +80002ce0: 00052007 flw ft0,0(a0) +80002ce4: 00452087 flw ft1,4(a0) +80002ce8: 00852107 flw ft2,8(a0) +80002cec: 00c52683 lw a3,12(a0) +80002cf0: c0001553 fcvt.w.s a0,ft0,rtz +80002cf4: 001015f3 fsflags a1,zero +80002cf8: 00100613 li a2,1 +80002cfc: 2cd51c63 bne a0,a3,80002fd4 +80002d00: 2cc59a63 bne a1,a2,80002fd4 + +80002d04 : +80002d04: 00800193 li gp,8 +80002d08: 00001517 auipc a0,0x1 +80002d0c: 35850513 addi a0,a0,856 # 80004060 +80002d10: 00052007 flw ft0,0(a0) +80002d14: 00452087 flw ft1,4(a0) +80002d18: 00852107 flw ft2,8(a0) +80002d1c: 00c52683 lw a3,12(a0) +80002d20: c0001553 fcvt.w.s a0,ft0,rtz +80002d24: 001015f3 fsflags a1,zero +80002d28: 01000613 li a2,16 +80002d2c: 2ad51463 bne a0,a3,80002fd4 +80002d30: 2ac59263 bne a1,a2,80002fd4 + +80002d34 : +80002d34: 00900193 li gp,9 +80002d38: 00001517 auipc a0,0x1 +80002d3c: 33850513 addi a0,a0,824 # 80004070 +80002d40: 00052007 flw ft0,0(a0) +80002d44: 00452087 flw ft1,4(a0) +80002d48: 00852107 flw ft2,8(a0) +80002d4c: 00c52683 lw a3,12(a0) +80002d50: c0001553 fcvt.w.s a0,ft0,rtz +80002d54: 001015f3 fsflags a1,zero +80002d58: 01000613 li a2,16 +80002d5c: 26d51c63 bne a0,a3,80002fd4 +80002d60: 26c59a63 bne a1,a2,80002fd4 + +80002d64 : +80002d64: 00c00193 li gp,12 +80002d68: 00001517 auipc a0,0x1 +80002d6c: 31850513 addi a0,a0,792 # 80004080 +80002d70: 00052007 flw ft0,0(a0) +80002d74: 00452087 flw ft1,4(a0) +80002d78: 00852107 flw ft2,8(a0) +80002d7c: 00c52683 lw a3,12(a0) +80002d80: c0101553 fcvt.wu.s a0,ft0,rtz +80002d84: 001015f3 fsflags a1,zero +80002d88: 01000613 li a2,16 +80002d8c: 24d51463 bne a0,a3,80002fd4 +80002d90: 24c59263 bne a1,a2,80002fd4 + +80002d94 : +80002d94: 00d00193 li gp,13 +80002d98: 00001517 auipc a0,0x1 +80002d9c: 2f850513 addi a0,a0,760 # 80004090 +80002da0: 00052007 flw ft0,0(a0) +80002da4: 00452087 flw ft1,4(a0) +80002da8: 00852107 flw ft2,8(a0) +80002dac: 00c52683 lw a3,12(a0) +80002db0: c0101553 fcvt.wu.s a0,ft0,rtz +80002db4: 001015f3 fsflags a1,zero +80002db8: 01000613 li a2,16 +80002dbc: 20d51c63 bne a0,a3,80002fd4 +80002dc0: 20c59a63 bne a1,a2,80002fd4 + +80002dc4 : +80002dc4: 00e00193 li gp,14 +80002dc8: 00001517 auipc a0,0x1 +80002dcc: 2d850513 addi a0,a0,728 # 800040a0 +80002dd0: 00052007 flw ft0,0(a0) +80002dd4: 00452087 flw ft1,4(a0) +80002dd8: 00852107 flw ft2,8(a0) +80002ddc: 00c52683 lw a3,12(a0) +80002de0: c0101553 fcvt.wu.s a0,ft0,rtz +80002de4: 001015f3 fsflags a1,zero +80002de8: 00100613 li a2,1 +80002dec: 1ed51463 bne a0,a3,80002fd4 +80002df0: 1ec59263 bne a1,a2,80002fd4 + +80002df4 : +80002df4: 00f00193 li gp,15 +80002df8: 00001517 auipc a0,0x1 +80002dfc: 2b850513 addi a0,a0,696 # 800040b0 +80002e00: 00052007 flw ft0,0(a0) +80002e04: 00452087 flw ft1,4(a0) +80002e08: 00852107 flw ft2,8(a0) +80002e0c: 00c52683 lw a3,12(a0) +80002e10: c0101553 fcvt.wu.s a0,ft0,rtz +80002e14: 001015f3 fsflags a1,zero +80002e18: 00100613 li a2,1 +80002e1c: 1ad51c63 bne a0,a3,80002fd4 +80002e20: 1ac59a63 bne a1,a2,80002fd4 + +80002e24 : +80002e24: 01000193 li gp,16 +80002e28: 00001517 auipc a0,0x1 +80002e2c: 29850513 addi a0,a0,664 # 800040c0 +80002e30: 00052007 flw ft0,0(a0) +80002e34: 00452087 flw ft1,4(a0) +80002e38: 00852107 flw ft2,8(a0) +80002e3c: 00c52683 lw a3,12(a0) +80002e40: c0101553 fcvt.wu.s a0,ft0,rtz +80002e44: 001015f3 fsflags a1,zero +80002e48: 00000613 li a2,0 +80002e4c: 18d51463 bne a0,a3,80002fd4 +80002e50: 18c59263 bne a1,a2,80002fd4 + +80002e54 : +80002e54: 01100193 li gp,17 +80002e58: 00001517 auipc a0,0x1 +80002e5c: 27850513 addi a0,a0,632 # 800040d0 +80002e60: 00052007 flw ft0,0(a0) +80002e64: 00452087 flw ft1,4(a0) +80002e68: 00852107 flw ft2,8(a0) +80002e6c: 00c52683 lw a3,12(a0) +80002e70: c0101553 fcvt.wu.s a0,ft0,rtz +80002e74: 001015f3 fsflags a1,zero +80002e78: 00100613 li a2,1 +80002e7c: 14d51c63 bne a0,a3,80002fd4 +80002e80: 14c59a63 bne a1,a2,80002fd4 + +80002e84 : +80002e84: 01200193 li gp,18 +80002e88: 00001517 auipc a0,0x1 +80002e8c: 25850513 addi a0,a0,600 # 800040e0 +80002e90: 00052007 flw ft0,0(a0) +80002e94: 00452087 flw ft1,4(a0) +80002e98: 00852107 flw ft2,8(a0) +80002e9c: 00c52683 lw a3,12(a0) +80002ea0: c0101553 fcvt.wu.s a0,ft0,rtz +80002ea4: 001015f3 fsflags a1,zero +80002ea8: 01000613 li a2,16 +80002eac: 12d51463 bne a0,a3,80002fd4 +80002eb0: 12c59263 bne a1,a2,80002fd4 + +80002eb4 : +80002eb4: 01300193 li gp,19 +80002eb8: 00001517 auipc a0,0x1 +80002ebc: 23850513 addi a0,a0,568 # 800040f0 +80002ec0: 00052007 flw ft0,0(a0) +80002ec4: 00452087 flw ft1,4(a0) +80002ec8: 00852107 flw ft2,8(a0) +80002ecc: 00c52683 lw a3,12(a0) +80002ed0: c0101553 fcvt.wu.s a0,ft0,rtz +80002ed4: 001015f3 fsflags a1,zero +80002ed8: 00000613 li a2,0 +80002edc: 0ed51c63 bne a0,a3,80002fd4 +80002ee0: 0ec59a63 bne a1,a2,80002fd4 + +80002ee4 : +80002ee4: 00001097 auipc ra,0x1 +80002ee8: 21c08093 addi ra,ra,540 # 80004100 +80002eec: 0000a087 flw ft1,0(ra) +80002ef0: c000f0d3 fcvt.w.s ra,ft1 +80002ef4: 80000eb7 lui t4,0x80000 +80002ef8: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff8c07> +80002efc: 02a00193 li gp,42 +80002f00: 0dd09a63 bne ra,t4,80002fd4 + +80002f04 : +80002f04: 00001097 auipc ra,0x1 +80002f08: 1fc08093 addi ra,ra,508 # 80004100 +80002f0c: 0080a087 flw ft1,8(ra) +80002f10: c000f0d3 fcvt.w.s ra,ft1 +80002f14: 80000eb7 lui t4,0x80000 +80002f18: 02c00193 li gp,44 +80002f1c: 0bd09c63 bne ra,t4,80002fd4 + +80002f20 : +80002f20: 00001097 auipc ra,0x1 +80002f24: 1e008093 addi ra,ra,480 # 80004100 +80002f28: 0040a087 flw ft1,4(ra) +80002f2c: c000f0d3 fcvt.w.s ra,ft1 +80002f30: 80000eb7 lui t4,0x80000 +80002f34: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff8c07> +80002f38: 03400193 li gp,52 +80002f3c: 09d09c63 bne ra,t4,80002fd4 + +80002f40 : +80002f40: 00001097 auipc ra,0x1 +80002f44: 1c008093 addi ra,ra,448 # 80004100 +80002f48: 00c0a087 flw ft1,12(ra) +80002f4c: c000f0d3 fcvt.w.s ra,ft1 +80002f50: 80000eb7 lui t4,0x80000 +80002f54: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff8c07> +80002f58: 03600193 li gp,54 +80002f5c: 07d09c63 bne ra,t4,80002fd4 + +80002f60 : +80002f60: 00001097 auipc ra,0x1 +80002f64: 1a008093 addi ra,ra,416 # 80004100 +80002f68: 0000a087 flw ft1,0(ra) +80002f6c: c010f0d3 fcvt.wu.s ra,ft1 +80002f70: fff00e93 li t4,-1 +80002f74: 03e00193 li gp,62 +80002f78: 05d09e63 bne ra,t4,80002fd4 + +80002f7c : +80002f7c: 00001097 auipc ra,0x1 +80002f80: 18408093 addi ra,ra,388 # 80004100 +80002f84: 0040a087 flw ft1,4(ra) +80002f88: c010f0d3 fcvt.wu.s ra,ft1 +80002f8c: fff00e93 li t4,-1 +80002f90: 03f00193 li gp,63 +80002f94: 05d09063 bne ra,t4,80002fd4 + +80002f98 : +80002f98: 00001097 auipc ra,0x1 +80002f9c: 16808093 addi ra,ra,360 # 80004100 +80002fa0: 0080a087 flw ft1,8(ra) +80002fa4: c010f0d3 fcvt.wu.s ra,ft1 +80002fa8: 00000e93 li t4,0 +80002fac: 04000193 li gp,64 +80002fb0: 03d09263 bne ra,t4,80002fd4 + +80002fb4 : +80002fb4: 00001097 auipc ra,0x1 +80002fb8: 14c08093 addi ra,ra,332 # 80004100 +80002fbc: 00c0a087 flw ft1,12(ra) +80002fc0: c010f0d3 fcvt.wu.s ra,ft1 +80002fc4: fff00e93 li t4,-1 +80002fc8: 04100193 li gp,65 +80002fcc: 01d09463 bne ra,t4,80002fd4 +80002fd0: 00301a63 bne zero,gp,80002fe4 + +80002fd4 : +80002fd4: 00119513 slli a0,gp,0x1 +80002fd8: 00050063 beqz a0,80002fd8 +80002fdc: 00156513 ori a0,a0,1 +80002fe0: 00000073 ecall + +80002fe4 : +80002fe4: 00100513 li a0,1 +80002fe8: 00000073 ecall +80002fec: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: cccd beqz s1,800040ba +80004002: bf8c fsd fa1,56(a5) +80004004: 0000 unimp +80004006: 0000 unimp +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: ffff 0xffff +8000400e: ffff 0xffff + +80004010 : +80004010: 0000 unimp +80004012: bf80 fsd fs0,56(a5) +80004014: 0000 unimp +80004016: 0000 unimp +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: ffff 0xffff +8000401e: ffff 0xffff + +80004020 : +80004020: 6666 flw fa2,88(sp) +80004022: bf66 fsd fs9,440(sp) +80004024: 0000 unimp +80004026: 0000 unimp +80004028: 0000 unimp +8000402a: 0000 unimp +8000402c: 0000 unimp +8000402e: 0000 unimp + +80004030 : +80004030: 6666 flw fa2,88(sp) +80004032: 3f66 fld ft10,120(sp) +80004034: 0000 unimp +80004036: 0000 unimp +80004038: 0000 unimp +8000403a: 0000 unimp +8000403c: 0000 unimp +8000403e: 0000 unimp + +80004040 : +80004040: 0000 unimp +80004042: 3f80 fld fs0,56(a5) +80004044: 0000 unimp +80004046: 0000 unimp +80004048: 0000 unimp +8000404a: 0000 unimp +8000404c: 0001 nop +8000404e: 0000 unimp + +80004050 : +80004050: cccd beqz s1,8000410a +80004052: 3f8c fld fa1,56(a5) +80004054: 0000 unimp +80004056: 0000 unimp +80004058: 0000 unimp +8000405a: 0000 unimp +8000405c: 0001 nop +8000405e: 0000 unimp + +80004060 : +80004060: d05e sw s7,32(sp) +80004062: cf32 sw a2,156(sp) +80004064: 0000 unimp +80004066: 0000 unimp +80004068: 0000 unimp +8000406a: 0000 unimp +8000406c: 0000 unimp +8000406e: 8000 0x8000 + +80004070 : +80004070: d05e sw s7,32(sp) +80004072: 4f32 lw t5,12(sp) +80004074: 0000 unimp +80004076: 0000 unimp +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: ffff 0xffff +8000407e: 7fff 0x7fff + +80004080 : +80004080: 0000 unimp +80004082: c040 sw s0,4(s0) +80004084: 0000 unimp +80004086: 0000 unimp +80004088: 0000 unimp +8000408a: 0000 unimp +8000408c: 0000 unimp +8000408e: 0000 unimp + +80004090 : +80004090: 0000 unimp +80004092: bf80 fsd fs0,56(a5) +80004094: 0000 unimp +80004096: 0000 unimp +80004098: 0000 unimp +8000409a: 0000 unimp +8000409c: 0000 unimp +8000409e: 0000 unimp + +800040a0 : +800040a0: 6666 flw fa2,88(sp) +800040a2: bf66 fsd fs9,440(sp) +800040a4: 0000 unimp +800040a6: 0000 unimp +800040a8: 0000 unimp +800040aa: 0000 unimp +800040ac: 0000 unimp +800040ae: 0000 unimp + +800040b0 : +800040b0: 6666 flw fa2,88(sp) +800040b2: 3f66 fld ft10,120(sp) +800040b4: 0000 unimp +800040b6: 0000 unimp +800040b8: 0000 unimp +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: 0000 unimp + +800040c0 : +800040c0: 0000 unimp +800040c2: 3f80 fld fs0,56(a5) +800040c4: 0000 unimp +800040c6: 0000 unimp +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0001 nop +800040ce: 0000 unimp + +800040d0 : +800040d0: cccd beqz s1,8000418a +800040d2: 3f8c fld fa1,56(a5) +800040d4: 0000 unimp +800040d6: 0000 unimp +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0001 nop +800040de: 0000 unimp + +800040e0 : +800040e0: d05e sw s7,32(sp) +800040e2: cf32 sw a2,156(sp) +800040e4: 0000 unimp +800040e6: 0000 unimp +800040e8: 0000 unimp +800040ea: 0000 unimp +800040ec: 0000 unimp +800040ee: 0000 unimp + +800040f0 : +800040f0: d05e sw s7,32(sp) +800040f2: 4f32 lw t5,12(sp) +800040f4: 0000 unimp +800040f6: 0000 unimp +800040f8: 0000 unimp +800040fa: 0000 unimp +800040fc: 5e00 lw s0,56(a2) +800040fe: b2d0 fsd fa2,160(a3) + +80004100 : +80004100: ffff 0xffff +80004102: ffff 0xffff +80004104: ffff 0xffff +80004106: 7fff 0x7fff +80004108: 0000 unimp +8000410a: ff80 fsw fs0,56(a5) +8000410c: 0000 unimp +8000410e: 7f80 flw fs0,56(a5) + +80004110 : +80004110: ffff 0xffff +80004112: ffff 0xffff +80004114: ffff 0xffff +80004116: ffff 0xffff +80004118: ffff 0xffff +8000411a: ffff 0xffff +8000411c: ffff 0xffff +8000411e: 7fff 0x7fff +80004120: 0000 unimp +80004122: 0000 unimp +80004124: 0000 unimp +80004126: fff0 fsw fa2,124(a5) +80004128: 0000 unimp +8000412a: 0000 unimp +8000412c: 0000 unimp +8000412e: 7ff0 flw fa2,124(a5) diff --git a/Tests/isa/rv32ud-v-fdiv b/Tests/isa/rv32ud-v-fdiv new file mode 100644 index 0000000..aa12095 Binary files /dev/null and b/Tests/isa/rv32ud-v-fdiv differ diff --git a/Tests/isa/rv32ud-v-fdiv.dump b/Tests/isa/rv32ud-v-fdiv.dump new file mode 100644 index 0000000..e9d1606 --- /dev/null +++ b/Tests/isa/rv32ud-v-fdiv.dump @@ -0,0 +1,1198 @@ + +rv32ud-v-fdiv: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 95c58593 addi a1,a1,-1700 # 80002e24 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 97858593 addi a1,a1,-1672 # 80002eb0 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 92458593 addi a1,a1,-1756 # 80002ec8 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 85858593 addi a1,a1,-1960 # 80002e68 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 84858593 addi a1,a1,-1976 # 80002f90 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 7b058593 addi a1,a1,1968 # 80002f6c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 6ac60613 addi a2,a2,1708 # 80002fbc +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 5bc60613 addi a2,a2,1468 # 80002f38 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 53c60613 addi a2,a2,1340 # 80002f04 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00300793 li a5,3 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 008197b7 lui a5,0x819 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 08678793 addi a5,a5,134 # 819086 <_start-0x7f7e6f7a> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00000517 auipc a0,0x0 +80002bec: 41850513 addi a0,a0,1048 # 80003000 +80002bf0: 00053007 fld ft0,0(a0) +80002bf4: 00853087 fld ft1,8(a0) +80002bf8: 01053107 fld ft2,16(a0) +80002bfc: 01852683 lw a3,24(a0) +80002c00: 01c52303 lw t1,28(a0) +80002c04: 1a1071d3 fdiv.d ft3,ft0,ft1 +80002c08: 00353027 fsd ft3,0(a0) +80002c0c: 00452383 lw t2,4(a0) +80002c10: 00052503 lw a0,0(a0) +80002c14: 001015f3 fsflags a1,zero +80002c18: 00100613 li a2,1 +80002c1c: 1ed51663 bne a0,a3,80002e08 +80002c20: 1e731463 bne t1,t2,80002e08 +80002c24: 1ec59263 bne a1,a2,80002e08 + +80002c28 : +80002c28: 00300193 li gp,3 +80002c2c: 00000517 auipc a0,0x0 +80002c30: 3f450513 addi a0,a0,1012 # 80003020 +80002c34: 00053007 fld ft0,0(a0) +80002c38: 00853087 fld ft1,8(a0) +80002c3c: 01053107 fld ft2,16(a0) +80002c40: 01852683 lw a3,24(a0) +80002c44: 01c52303 lw t1,28(a0) +80002c48: 1a1071d3 fdiv.d ft3,ft0,ft1 +80002c4c: 00353027 fsd ft3,0(a0) +80002c50: 00452383 lw t2,4(a0) +80002c54: 00052503 lw a0,0(a0) +80002c58: 001015f3 fsflags a1,zero +80002c5c: 00100613 li a2,1 +80002c60: 1ad51463 bne a0,a3,80002e08 +80002c64: 1a731263 bne t1,t2,80002e08 +80002c68: 1ac59063 bne a1,a2,80002e08 + +80002c6c : +80002c6c: 00400193 li gp,4 +80002c70: 00000517 auipc a0,0x0 +80002c74: 3d050513 addi a0,a0,976 # 80003040 +80002c78: 00053007 fld ft0,0(a0) +80002c7c: 00853087 fld ft1,8(a0) +80002c80: 01053107 fld ft2,16(a0) +80002c84: 01852683 lw a3,24(a0) +80002c88: 01c52303 lw t1,28(a0) +80002c8c: 1a1071d3 fdiv.d ft3,ft0,ft1 +80002c90: 00353027 fsd ft3,0(a0) +80002c94: 00452383 lw t2,4(a0) +80002c98: 00052503 lw a0,0(a0) +80002c9c: 001015f3 fsflags a1,zero +80002ca0: 00000613 li a2,0 +80002ca4: 16d51263 bne a0,a3,80002e08 +80002ca8: 16731063 bne t1,t2,80002e08 +80002cac: 14c59e63 bne a1,a2,80002e08 + +80002cb0 : +80002cb0: 00500193 li gp,5 +80002cb4: 00000517 auipc a0,0x0 +80002cb8: 3ac50513 addi a0,a0,940 # 80003060 +80002cbc: 00053007 fld ft0,0(a0) +80002cc0: 00853087 fld ft1,8(a0) +80002cc4: 01053107 fld ft2,16(a0) +80002cc8: 01852683 lw a3,24(a0) +80002ccc: 01c52303 lw t1,28(a0) +80002cd0: 5a0071d3 fsqrt.d ft3,ft0 +80002cd4: 00353027 fsd ft3,0(a0) +80002cd8: 00452383 lw t2,4(a0) +80002cdc: 00052503 lw a0,0(a0) +80002ce0: 001015f3 fsflags a1,zero +80002ce4: 00100613 li a2,1 +80002ce8: 12d51063 bne a0,a3,80002e08 +80002cec: 10731e63 bne t1,t2,80002e08 +80002cf0: 10c59c63 bne a1,a2,80002e08 + +80002cf4 : +80002cf4: 00600193 li gp,6 +80002cf8: 00000517 auipc a0,0x0 +80002cfc: 38850513 addi a0,a0,904 # 80003080 +80002d00: 00053007 fld ft0,0(a0) +80002d04: 00853087 fld ft1,8(a0) +80002d08: 01053107 fld ft2,16(a0) +80002d0c: 01852683 lw a3,24(a0) +80002d10: 01c52303 lw t1,28(a0) +80002d14: 5a0071d3 fsqrt.d ft3,ft0 +80002d18: 00353027 fsd ft3,0(a0) +80002d1c: 00452383 lw t2,4(a0) +80002d20: 00052503 lw a0,0(a0) +80002d24: 001015f3 fsflags a1,zero +80002d28: 00000613 li a2,0 +80002d2c: 0cd51e63 bne a0,a3,80002e08 +80002d30: 0c731c63 bne t1,t2,80002e08 +80002d34: 0cc59a63 bne a1,a2,80002e08 + +80002d38 : +80002d38: 01000193 li gp,16 +80002d3c: 00000517 auipc a0,0x0 +80002d40: 36450513 addi a0,a0,868 # 800030a0 +80002d44: 00053007 fld ft0,0(a0) +80002d48: 00853087 fld ft1,8(a0) +80002d4c: 01053107 fld ft2,16(a0) +80002d50: 01852683 lw a3,24(a0) +80002d54: 01c52303 lw t1,28(a0) +80002d58: 5a0071d3 fsqrt.d ft3,ft0 +80002d5c: 00353027 fsd ft3,0(a0) +80002d60: 00452383 lw t2,4(a0) +80002d64: 00052503 lw a0,0(a0) +80002d68: 001015f3 fsflags a1,zero +80002d6c: 01000613 li a2,16 +80002d70: 08d51c63 bne a0,a3,80002e08 +80002d74: 08731a63 bne t1,t2,80002e08 +80002d78: 08c59863 bne a1,a2,80002e08 + +80002d7c : +80002d7c: 00700193 li gp,7 +80002d80: 00000517 auipc a0,0x0 +80002d84: 34050513 addi a0,a0,832 # 800030c0 +80002d88: 00053007 fld ft0,0(a0) +80002d8c: 00853087 fld ft1,8(a0) +80002d90: 01053107 fld ft2,16(a0) +80002d94: 01852683 lw a3,24(a0) +80002d98: 01c52303 lw t1,28(a0) +80002d9c: 5a0071d3 fsqrt.d ft3,ft0 +80002da0: 00353027 fsd ft3,0(a0) +80002da4: 00452383 lw t2,4(a0) +80002da8: 00052503 lw a0,0(a0) +80002dac: 001015f3 fsflags a1,zero +80002db0: 00100613 li a2,1 +80002db4: 04d51a63 bne a0,a3,80002e08 +80002db8: 04731863 bne t1,t2,80002e08 +80002dbc: 04c59663 bne a1,a2,80002e08 + +80002dc0 : +80002dc0: 00800193 li gp,8 +80002dc4: 00000517 auipc a0,0x0 +80002dc8: 31c50513 addi a0,a0,796 # 800030e0 +80002dcc: 00053007 fld ft0,0(a0) +80002dd0: 00853087 fld ft1,8(a0) +80002dd4: 01053107 fld ft2,16(a0) +80002dd8: 01852683 lw a3,24(a0) +80002ddc: 01c52303 lw t1,28(a0) +80002de0: 5a0071d3 fsqrt.d ft3,ft0 +80002de4: 00353027 fsd ft3,0(a0) +80002de8: 00452383 lw t2,4(a0) +80002dec: 00052503 lw a0,0(a0) +80002df0: 001015f3 fsflags a1,zero +80002df4: 00100613 li a2,1 +80002df8: 00d51863 bne a0,a3,80002e08 +80002dfc: 00731663 bne t1,t2,80002e08 +80002e00: 00c59463 bne a1,a2,80002e08 +80002e04: 00301a63 bne zero,gp,80002e18 + +80002e08 : +80002e08: 00119513 slli a0,gp,0x1 +80002e0c: 00050063 beqz a0,80002e0c +80002e10: 00156513 ori a0,a0,1 +80002e14: 00000073 ecall + +80002e18 : +80002e18: 00100513 li a0,1 +80002e1c: 00000073 ecall +80002e20: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: d4f1 beqz s1,80002fcc +80003002: 53c8 lw a0,36(a5) +80003004: 400921fb 0x400921fb +80003008: b0dd j 800028ee +8000300a: 89f1 andi a1,a1,28 +8000300c: bf0a fsd ft2,440(sp) +8000300e: 4005 c.li zero,1 +80003010: 0000 unimp +80003012: 0000 unimp +80003014: 0000 unimp +80003016: 0000 unimp +80003018: 83ec 0x83ec +8000301a: 7ddbf6c3 0x7ddbf6c3 +8000301e: 3ff2 fld ft11,312(sp) + +80003020 : +80003020: 0000 unimp +80003022: 0000 unimp +80003024: 4800 lw s0,16(s0) +80003026: 6666c093 xori ra,a3,1638 +8000302a: 6666 flw fa2,88(sp) +8000302c: 4c66 lw s8,88(sp) +8000302e: 00004093 xori ra,zero,0 +80003032: 0000 unimp +80003034: 0000 unimp +80003036: 0000 unimp +80003038: 29a5 jal 800034b0 +8000303a: 3e19 jal 80002b50 +8000303c: f8b4 fsw fa3,112(s1) +8000303e: jal t6,7ff1ed8c <_start-0xe1274> + +80003040 : +80003040: d4f1 beqz s1,8000300c +80003042: 53c8 lw a0,36(a5) +80003044: 400921fb 0x400921fb +80003048: 0000 unimp +8000304a: 0000 unimp +8000304c: 0000 unimp +8000304e: 3ff0 fld fa2,248(a5) +80003050: 0000 unimp +80003052: 0000 unimp +80003054: 0000 unimp +80003056: 0000 unimp +80003058: d4f1 beqz s1,80003024 +8000305a: 53c8 lw a0,36(a5) +8000305c: 400921fb 0x400921fb + +80003060 : +80003060: d4f1 beqz s1,8000302c +80003062: 53c8 lw a0,36(a5) +80003064: 400921fb 0x400921fb +80003068: 0000 unimp +8000306a: 0000 unimp +8000306c: 0000 unimp +8000306e: 0000 unimp +80003070: 0000 unimp +80003072: 0000 unimp +80003074: 0000 unimp +80003076: 0000 unimp +80003078: 916f587b 0x916f587b +8000307c: 5bf8 lw a4,116(a5) +8000307e: 3ffc fld fa5,248(a5) + +80003080 : +80003080: 0000 unimp +80003082: 0000 unimp +80003084: 8800 0x8800 +80003086: 000040c3 fmadd.s ft1,ft0,ft0,ft0,rmm +8000308a: 0000 unimp +8000308c: 0000 unimp +8000308e: 0000 unimp +80003090: 0000 unimp +80003092: 0000 unimp +80003094: 0000 unimp +80003096: 0000 unimp +80003098: 0000 unimp +8000309a: 0000 unimp +8000309c: 0000 unimp +8000309e: 4059 c.li zero,22 + +800030a0 : +800030a0: 0000 unimp +800030a2: 0000 unimp +800030a4: 0000 unimp +800030a6: bff0 fsd fa2,248(a5) +800030a8: 0000 unimp +800030aa: 0000 unimp +800030ac: 0000 unimp +800030ae: 0000 unimp +800030b0: 0000 unimp +800030b2: 0000 unimp +800030b4: 0000 unimp +800030b6: 0000 unimp +800030b8: 0000 unimp +800030ba: 0000 unimp +800030bc: 0000 unimp +800030be: 7ff8 flw fa4,124(a5) + +800030c0 : +800030c0: 0000 unimp +800030c2: 0000 unimp +800030c4: 6000 flw fs0,0(s0) +800030c6: 4065 c.li zero,25 +800030c8: 0000 unimp +800030ca: 0000 unimp +800030cc: 0000 unimp +800030ce: 0000 unimp +800030d0: 0000 unimp +800030d2: 0000 unimp +800030d4: 0000 unimp +800030d6: 0000 unimp +800030d8: 74f5 lui s1,0xffffd +800030da: ce96 sw t0,92(sp) +800030dc: 2744 fld fs1,136(a4) +800030de: 402a 0x402a + +800030e0 : +800030e0: a105 j 80003500 +800030e2: c70a sw sp,140(sp) +800030e4: 94df 3e85 0000 0x3e8594df +800030ea: 0000 unimp +800030ec: 0000 unimp +800030ee: 0000 unimp +800030f0: 0000 unimp +800030f2: 0000 unimp +800030f4: 0000 unimp +800030f6: 0000 unimp +800030f8: 7f99 lui t6,0xfffe6 +800030fa: 4789c0e3 blt s3,s8,80003d5a +800030fe: 3f3a fld ft10,424(sp) diff --git a/Tests/isa/rv32ud-v-fmadd b/Tests/isa/rv32ud-v-fmadd new file mode 100644 index 0000000..07c4786 Binary files /dev/null and b/Tests/isa/rv32ud-v-fmadd differ diff --git a/Tests/isa/rv32ud-v-fmadd.dump b/Tests/isa/rv32ud-v-fmadd.dump new file mode 100644 index 0000000..61b6720 --- /dev/null +++ b/Tests/isa/rv32ud-v-fmadd.dump @@ -0,0 +1,1354 @@ + +rv32ud-v-fmadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: a6c58593 addi a1,a1,-1428 # 80002f34 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a8858593 addi a1,a1,-1400 # 80002fc0 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: a3458593 addi a1,a1,-1484 # 80002fd8 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 96858593 addi a1,a1,-1688 # 80002f78 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 95858593 addi a1,a1,-1704 # 800030a0 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 8c058593 addi a1,a1,-1856 # 8000307c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 7bc60613 addi a2,a2,1980 # 800030cc +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 6cc60613 addi a2,a2,1740 # 80003048 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 64c60613 addi a2,a2,1612 # 80003014 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 03b00793 li a5,59 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0d9687b7 lui a5,0xd968 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 7c078793 addi a5,a5,1984 # d9687c0 <_start-0x72697840> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00053007 fld ft0,0(a0) +80002bf4: 00853087 fld ft1,8(a0) +80002bf8: 01053107 fld ft2,16(a0) +80002bfc: 01852683 lw a3,24(a0) +80002c00: 01c52303 lw t1,28(a0) +80002c04: 121071c3 fmadd.d ft3,ft0,ft1,ft2 +80002c08: 00353027 fsd ft3,0(a0) +80002c0c: 00452383 lw t2,4(a0) +80002c10: 00052503 lw a0,0(a0) +80002c14: 001015f3 fsflags a1,zero +80002c18: 00000613 li a2,0 +80002c1c: 2ed51e63 bne a0,a3,80002f18 +80002c20: 2e731c63 bne t1,t2,80002f18 +80002c24: 2ec59a63 bne a1,a2,80002f18 + +80002c28 : +80002c28: 00300193 li gp,3 +80002c2c: 00001517 auipc a0,0x1 +80002c30: 3f450513 addi a0,a0,1012 # 80004020 +80002c34: 00053007 fld ft0,0(a0) +80002c38: 00853087 fld ft1,8(a0) +80002c3c: 01053107 fld ft2,16(a0) +80002c40: 01852683 lw a3,24(a0) +80002c44: 01c52303 lw t1,28(a0) +80002c48: 121071c3 fmadd.d ft3,ft0,ft1,ft2 +80002c4c: 00353027 fsd ft3,0(a0) +80002c50: 00452383 lw t2,4(a0) +80002c54: 00052503 lw a0,0(a0) +80002c58: 001015f3 fsflags a1,zero +80002c5c: 00100613 li a2,1 +80002c60: 2ad51c63 bne a0,a3,80002f18 +80002c64: 2a731a63 bne t1,t2,80002f18 +80002c68: 2ac59863 bne a1,a2,80002f18 + +80002c6c : +80002c6c: 00400193 li gp,4 +80002c70: 00001517 auipc a0,0x1 +80002c74: 3d050513 addi a0,a0,976 # 80004040 +80002c78: 00053007 fld ft0,0(a0) +80002c7c: 00853087 fld ft1,8(a0) +80002c80: 01053107 fld ft2,16(a0) +80002c84: 01852683 lw a3,24(a0) +80002c88: 01c52303 lw t1,28(a0) +80002c8c: 121071c3 fmadd.d ft3,ft0,ft1,ft2 +80002c90: 00353027 fsd ft3,0(a0) +80002c94: 00452383 lw t2,4(a0) +80002c98: 00052503 lw a0,0(a0) +80002c9c: 001015f3 fsflags a1,zero +80002ca0: 00000613 li a2,0 +80002ca4: 26d51a63 bne a0,a3,80002f18 +80002ca8: 26731863 bne t1,t2,80002f18 +80002cac: 26c59663 bne a1,a2,80002f18 + +80002cb0 : +80002cb0: 00500193 li gp,5 +80002cb4: 00001517 auipc a0,0x1 +80002cb8: 3ac50513 addi a0,a0,940 # 80004060 +80002cbc: 00053007 fld ft0,0(a0) +80002cc0: 00853087 fld ft1,8(a0) +80002cc4: 01053107 fld ft2,16(a0) +80002cc8: 01852683 lw a3,24(a0) +80002ccc: 01c52303 lw t1,28(a0) +80002cd0: 121071cf fnmadd.d ft3,ft0,ft1,ft2 +80002cd4: 00353027 fsd ft3,0(a0) +80002cd8: 00452383 lw t2,4(a0) +80002cdc: 00052503 lw a0,0(a0) +80002ce0: 001015f3 fsflags a1,zero +80002ce4: 00000613 li a2,0 +80002ce8: 22d51863 bne a0,a3,80002f18 +80002cec: 22731663 bne t1,t2,80002f18 +80002cf0: 22c59463 bne a1,a2,80002f18 + +80002cf4 : +80002cf4: 00600193 li gp,6 +80002cf8: 00001517 auipc a0,0x1 +80002cfc: 38850513 addi a0,a0,904 # 80004080 +80002d00: 00053007 fld ft0,0(a0) +80002d04: 00853087 fld ft1,8(a0) +80002d08: 01053107 fld ft2,16(a0) +80002d0c: 01852683 lw a3,24(a0) +80002d10: 01c52303 lw t1,28(a0) +80002d14: 121071cf fnmadd.d ft3,ft0,ft1,ft2 +80002d18: 00353027 fsd ft3,0(a0) +80002d1c: 00452383 lw t2,4(a0) +80002d20: 00052503 lw a0,0(a0) +80002d24: 001015f3 fsflags a1,zero +80002d28: 00100613 li a2,1 +80002d2c: 1ed51663 bne a0,a3,80002f18 +80002d30: 1e731463 bne t1,t2,80002f18 +80002d34: 1ec59263 bne a1,a2,80002f18 + +80002d38 : +80002d38: 00700193 li gp,7 +80002d3c: 00001517 auipc a0,0x1 +80002d40: 36450513 addi a0,a0,868 # 800040a0 +80002d44: 00053007 fld ft0,0(a0) +80002d48: 00853087 fld ft1,8(a0) +80002d4c: 01053107 fld ft2,16(a0) +80002d50: 01852683 lw a3,24(a0) +80002d54: 01c52303 lw t1,28(a0) +80002d58: 121071cf fnmadd.d ft3,ft0,ft1,ft2 +80002d5c: 00353027 fsd ft3,0(a0) +80002d60: 00452383 lw t2,4(a0) +80002d64: 00052503 lw a0,0(a0) +80002d68: 001015f3 fsflags a1,zero +80002d6c: 00000613 li a2,0 +80002d70: 1ad51463 bne a0,a3,80002f18 +80002d74: 1a731263 bne t1,t2,80002f18 +80002d78: 1ac59063 bne a1,a2,80002f18 + +80002d7c : +80002d7c: 00800193 li gp,8 +80002d80: 00001517 auipc a0,0x1 +80002d84: 34050513 addi a0,a0,832 # 800040c0 +80002d88: 00053007 fld ft0,0(a0) +80002d8c: 00853087 fld ft1,8(a0) +80002d90: 01053107 fld ft2,16(a0) +80002d94: 01852683 lw a3,24(a0) +80002d98: 01c52303 lw t1,28(a0) +80002d9c: 121071c7 fmsub.d ft3,ft0,ft1,ft2 +80002da0: 00353027 fsd ft3,0(a0) +80002da4: 00452383 lw t2,4(a0) +80002da8: 00052503 lw a0,0(a0) +80002dac: 001015f3 fsflags a1,zero +80002db0: 00000613 li a2,0 +80002db4: 16d51263 bne a0,a3,80002f18 +80002db8: 16731063 bne t1,t2,80002f18 +80002dbc: 14c59e63 bne a1,a2,80002f18 + +80002dc0 : +80002dc0: 00900193 li gp,9 +80002dc4: 00001517 auipc a0,0x1 +80002dc8: 31c50513 addi a0,a0,796 # 800040e0 +80002dcc: 00053007 fld ft0,0(a0) +80002dd0: 00853087 fld ft1,8(a0) +80002dd4: 01053107 fld ft2,16(a0) +80002dd8: 01852683 lw a3,24(a0) +80002ddc: 01c52303 lw t1,28(a0) +80002de0: 121071c7 fmsub.d ft3,ft0,ft1,ft2 +80002de4: 00353027 fsd ft3,0(a0) +80002de8: 00452383 lw t2,4(a0) +80002dec: 00052503 lw a0,0(a0) +80002df0: 001015f3 fsflags a1,zero +80002df4: 00100613 li a2,1 +80002df8: 12d51063 bne a0,a3,80002f18 +80002dfc: 10731e63 bne t1,t2,80002f18 +80002e00: 10c59c63 bne a1,a2,80002f18 + +80002e04 : +80002e04: 00a00193 li gp,10 +80002e08: 00001517 auipc a0,0x1 +80002e0c: 2f850513 addi a0,a0,760 # 80004100 +80002e10: 00053007 fld ft0,0(a0) +80002e14: 00853087 fld ft1,8(a0) +80002e18: 01053107 fld ft2,16(a0) +80002e1c: 01852683 lw a3,24(a0) +80002e20: 01c52303 lw t1,28(a0) +80002e24: 121071c7 fmsub.d ft3,ft0,ft1,ft2 +80002e28: 00353027 fsd ft3,0(a0) +80002e2c: 00452383 lw t2,4(a0) +80002e30: 00052503 lw a0,0(a0) +80002e34: 001015f3 fsflags a1,zero +80002e38: 00000613 li a2,0 +80002e3c: 0cd51e63 bne a0,a3,80002f18 +80002e40: 0c731c63 bne t1,t2,80002f18 +80002e44: 0cc59a63 bne a1,a2,80002f18 + +80002e48 : +80002e48: 00b00193 li gp,11 +80002e4c: 00001517 auipc a0,0x1 +80002e50: 2d450513 addi a0,a0,724 # 80004120 +80002e54: 00053007 fld ft0,0(a0) +80002e58: 00853087 fld ft1,8(a0) +80002e5c: 01053107 fld ft2,16(a0) +80002e60: 01852683 lw a3,24(a0) +80002e64: 01c52303 lw t1,28(a0) +80002e68: 121071cb fnmsub.d ft3,ft0,ft1,ft2 +80002e6c: 00353027 fsd ft3,0(a0) +80002e70: 00452383 lw t2,4(a0) +80002e74: 00052503 lw a0,0(a0) +80002e78: 001015f3 fsflags a1,zero +80002e7c: 00000613 li a2,0 +80002e80: 08d51c63 bne a0,a3,80002f18 +80002e84: 08731a63 bne t1,t2,80002f18 +80002e88: 08c59863 bne a1,a2,80002f18 + +80002e8c : +80002e8c: 00c00193 li gp,12 +80002e90: 00001517 auipc a0,0x1 +80002e94: 2b050513 addi a0,a0,688 # 80004140 +80002e98: 00053007 fld ft0,0(a0) +80002e9c: 00853087 fld ft1,8(a0) +80002ea0: 01053107 fld ft2,16(a0) +80002ea4: 01852683 lw a3,24(a0) +80002ea8: 01c52303 lw t1,28(a0) +80002eac: 121071cb fnmsub.d ft3,ft0,ft1,ft2 +80002eb0: 00353027 fsd ft3,0(a0) +80002eb4: 00452383 lw t2,4(a0) +80002eb8: 00052503 lw a0,0(a0) +80002ebc: 001015f3 fsflags a1,zero +80002ec0: 00100613 li a2,1 +80002ec4: 04d51a63 bne a0,a3,80002f18 +80002ec8: 04731863 bne t1,t2,80002f18 +80002ecc: 04c59663 bne a1,a2,80002f18 + +80002ed0 : +80002ed0: 00d00193 li gp,13 +80002ed4: 00001517 auipc a0,0x1 +80002ed8: 28c50513 addi a0,a0,652 # 80004160 +80002edc: 00053007 fld ft0,0(a0) +80002ee0: 00853087 fld ft1,8(a0) +80002ee4: 01053107 fld ft2,16(a0) +80002ee8: 01852683 lw a3,24(a0) +80002eec: 01c52303 lw t1,28(a0) +80002ef0: 121071cb fnmsub.d ft3,ft0,ft1,ft2 +80002ef4: 00353027 fsd ft3,0(a0) +80002ef8: 00452383 lw t2,4(a0) +80002efc: 00052503 lw a0,0(a0) +80002f00: 001015f3 fsflags a1,zero +80002f04: 00000613 li a2,0 +80002f08: 00d51863 bne a0,a3,80002f18 +80002f0c: 00731663 bne t1,t2,80002f18 +80002f10: 00c59463 bne a1,a2,80002f18 +80002f14: 00301a63 bne zero,gp,80002f28 + +80002f18 : +80002f18: 00119513 slli a0,gp,0x1 +80002f1c: 00050063 beqz a0,80002f1c +80002f20: 00156513 ori a0,a0,1 +80002f24: 00000073 ecall + +80002f28 : +80002f28: 00100513 li a0,1 +80002f2c: 00000073 ecall +80002f30: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 0000 unimp +80004002: 0000 unimp +80004004: 0000 unimp +80004006: 3ff0 fld fa2,248(a5) +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: 0000 unimp +8000400e: 4004 lw s1,0(s0) +80004010: 0000 unimp +80004012: 0000 unimp +80004014: 0000 unimp +80004016: 3ff0 fld fa2,248(a5) +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: 0000 unimp +8000401e: 400c lw a1,0(s0) + +80004020 : +80004020: 0000 unimp +80004022: 0000 unimp +80004024: 0000 unimp +80004026: bff0 fsd fa2,248(a5) +80004028: 6666 flw fa2,88(sp) +8000402a: 6666 flw fa2,88(sp) +8000402c: 4c66 lw s8,88(sp) +8000402e: 999ac093 xori ra,s5,-1639 +80004032: 9999 andi a1,a1,-26 +80004034: 9999 andi a1,a1,-26 +80004036: 3ff1 jal 80004012 +80004038: cccc sw a1,28(s1) +8000403a: cccc sw a1,28(s1) +8000403c: 50cc lw a1,36(s1) +8000403e: xori ra,zero,0 + +80004040 : +80004040: 0000 unimp +80004042: 0000 unimp +80004044: 0000 unimp +80004046: 4000 lw s0,0(s0) +80004048: 0000 unimp +8000404a: 0000 unimp +8000404c: 0000 unimp +8000404e: c014 sw a3,0(s0) +80004050: 0000 unimp +80004052: 0000 unimp +80004054: 0000 unimp +80004056: c000 sw s0,0(s0) +80004058: 0000 unimp +8000405a: 0000 unimp +8000405c: 0000 unimp +8000405e: c028 sw a0,64(s0) + +80004060 : +80004060: 0000 unimp +80004062: 0000 unimp +80004064: 0000 unimp +80004066: 3ff0 fld fa2,248(a5) +80004068: 0000 unimp +8000406a: 0000 unimp +8000406c: 0000 unimp +8000406e: 4004 lw s1,0(s0) +80004070: 0000 unimp +80004072: 0000 unimp +80004074: 0000 unimp +80004076: 3ff0 fld fa2,248(a5) +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: 0000 unimp +8000407e: c00c sw a1,0(s0) + +80004080 : +80004080: 0000 unimp +80004082: 0000 unimp +80004084: 0000 unimp +80004086: bff0 fsd fa2,248(a5) +80004088: 6666 flw fa2,88(sp) +8000408a: 6666 flw fa2,88(sp) +8000408c: 4c66 lw s8,88(sp) +8000408e: 999ac093 xori ra,s5,-1639 +80004092: 9999 andi a1,a1,-26 +80004094: 9999 andi a1,a1,-26 +80004096: 3ff1 jal 80004072 +80004098: cccc sw a1,28(s1) +8000409a: cccc sw a1,28(s1) +8000409c: 50cc lw a1,36(s1) +8000409e: xori ra,ra,0 + +800040a0 : +800040a0: 0000 unimp +800040a2: 0000 unimp +800040a4: 0000 unimp +800040a6: 4000 lw s0,0(s0) +800040a8: 0000 unimp +800040aa: 0000 unimp +800040ac: 0000 unimp +800040ae: c014 sw a3,0(s0) +800040b0: 0000 unimp +800040b2: 0000 unimp +800040b4: 0000 unimp +800040b6: c000 sw s0,0(s0) +800040b8: 0000 unimp +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: 4028 lw a0,64(s0) + +800040c0 : +800040c0: 0000 unimp +800040c2: 0000 unimp +800040c4: 0000 unimp +800040c6: 3ff0 fld fa2,248(a5) +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0000 unimp +800040ce: 4004 lw s1,0(s0) +800040d0: 0000 unimp +800040d2: 0000 unimp +800040d4: 0000 unimp +800040d6: 3ff0 fld fa2,248(a5) +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0000 unimp +800040de: 3ff8 fld fa4,248(a5) + +800040e0 : +800040e0: 0000 unimp +800040e2: 0000 unimp +800040e4: 0000 unimp +800040e6: bff0 fsd fa2,248(a5) +800040e8: 6666 flw fa2,88(sp) +800040ea: 6666 flw fa2,88(sp) +800040ec: 4c66 lw s8,88(sp) +800040ee: 999ac093 xori ra,s5,-1639 +800040f2: 9999 andi a1,a1,-26 +800040f4: 9999 andi a1,a1,-26 +800040f6: 3ff1 jal 800040d2 +800040f8: 0000 unimp +800040fa: 0000 unimp +800040fc: 4800 lw s0,16(s0) +800040fe: xori ra,zero,0 + +80004100 : +80004100: 0000 unimp +80004102: 0000 unimp +80004104: 0000 unimp +80004106: 4000 lw s0,0(s0) +80004108: 0000 unimp +8000410a: 0000 unimp +8000410c: 0000 unimp +8000410e: c014 sw a3,0(s0) +80004110: 0000 unimp +80004112: 0000 unimp +80004114: 0000 unimp +80004116: c000 sw s0,0(s0) +80004118: 0000 unimp +8000411a: 0000 unimp +8000411c: 0000 unimp +8000411e: c020 sw s0,64(s0) + +80004120 : +80004120: 0000 unimp +80004122: 0000 unimp +80004124: 0000 unimp +80004126: 3ff0 fld fa2,248(a5) +80004128: 0000 unimp +8000412a: 0000 unimp +8000412c: 0000 unimp +8000412e: 4004 lw s1,0(s0) +80004130: 0000 unimp +80004132: 0000 unimp +80004134: 0000 unimp +80004136: 3ff0 fld fa2,248(a5) +80004138: 0000 unimp +8000413a: 0000 unimp +8000413c: 0000 unimp +8000413e: bff8 fsd fa4,248(a5) + +80004140 : +80004140: 0000 unimp +80004142: 0000 unimp +80004144: 0000 unimp +80004146: bff0 fsd fa2,248(a5) +80004148: 6666 flw fa2,88(sp) +8000414a: 6666 flw fa2,88(sp) +8000414c: 4c66 lw s8,88(sp) +8000414e: 999ac093 xori ra,s5,-1639 +80004152: 9999 andi a1,a1,-26 +80004154: 9999 andi a1,a1,-26 +80004156: 3ff1 jal 80004132 +80004158: 0000 unimp +8000415a: 0000 unimp +8000415c: 4800 lw s0,16(s0) +8000415e: xori ra,ra,0 + +80004160 : +80004160: 0000 unimp +80004162: 0000 unimp +80004164: 0000 unimp +80004166: 4000 lw s0,0(s0) +80004168: 0000 unimp +8000416a: 0000 unimp +8000416c: 0000 unimp +8000416e: c014 sw a3,0(s0) +80004170: 0000 unimp +80004172: 0000 unimp +80004174: 0000 unimp +80004176: c000 sw s0,0(s0) +80004178: 0000 unimp +8000417a: 0000 unimp +8000417c: 0000 unimp +8000417e: 4020 lw s0,64(s0) diff --git a/Tests/isa/rv32ud-v-fmin b/Tests/isa/rv32ud-v-fmin new file mode 100644 index 0000000..9198e16 Binary files /dev/null and b/Tests/isa/rv32ud-v-fmin differ diff --git a/Tests/isa/rv32ud-v-fmin.dump b/Tests/isa/rv32ud-v-fmin.dump new file mode 100644 index 0000000..238e588 --- /dev/null +++ b/Tests/isa/rv32ud-v-fmin.dump @@ -0,0 +1,1571 @@ + +rv32ud-v-fmin: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: c0458593 addi a1,a1,-1020 # 800030cc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c2058593 addi a1,a1,-992 # 80003158 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bcc58593 addi a1,a1,-1076 # 80003170 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: b0058593 addi a1,a1,-1280 # 80003110 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: af058593 addi a1,a1,-1296 # 80003238 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a5858593 addi a1,a1,-1448 # 80003214 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 95460613 addi a2,a2,-1708 # 80003264 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 86460613 addi a2,a2,-1948 # 800031e0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7e460613 addi a2,a2,2020 # 800031ac +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 00100793 li a5,1 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0f1707b7 lui a5,0xf170 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 0b878793 addi a5,a5,184 # f1700b8 <_start-0x70e8ff48> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00053007 fld ft0,0(a0) +80002bf4: 00853087 fld ft1,8(a0) +80002bf8: 01053107 fld ft2,16(a0) +80002bfc: 01852683 lw a3,24(a0) +80002c00: 01c52303 lw t1,28(a0) +80002c04: 2a1001d3 fmin.d ft3,ft0,ft1 +80002c08: 00353027 fsd ft3,0(a0) +80002c0c: 00452383 lw t2,4(a0) +80002c10: 00052503 lw a0,0(a0) +80002c14: 001015f3 fsflags a1,zero +80002c18: 00000613 li a2,0 +80002c1c: 48d51a63 bne a0,a3,800030b0 +80002c20: 48731863 bne t1,t2,800030b0 +80002c24: 48c59663 bne a1,a2,800030b0 + +80002c28 : +80002c28: 00300193 li gp,3 +80002c2c: 00001517 auipc a0,0x1 +80002c30: 3f450513 addi a0,a0,1012 # 80004020 +80002c34: 00053007 fld ft0,0(a0) +80002c38: 00853087 fld ft1,8(a0) +80002c3c: 01053107 fld ft2,16(a0) +80002c40: 01852683 lw a3,24(a0) +80002c44: 01c52303 lw t1,28(a0) +80002c48: 2a1001d3 fmin.d ft3,ft0,ft1 +80002c4c: 00353027 fsd ft3,0(a0) +80002c50: 00452383 lw t2,4(a0) +80002c54: 00052503 lw a0,0(a0) +80002c58: 001015f3 fsflags a1,zero +80002c5c: 00000613 li a2,0 +80002c60: 44d51863 bne a0,a3,800030b0 +80002c64: 44731663 bne t1,t2,800030b0 +80002c68: 44c59463 bne a1,a2,800030b0 + +80002c6c : +80002c6c: 00400193 li gp,4 +80002c70: 00001517 auipc a0,0x1 +80002c74: 3d050513 addi a0,a0,976 # 80004040 +80002c78: 00053007 fld ft0,0(a0) +80002c7c: 00853087 fld ft1,8(a0) +80002c80: 01053107 fld ft2,16(a0) +80002c84: 01852683 lw a3,24(a0) +80002c88: 01c52303 lw t1,28(a0) +80002c8c: 2a1001d3 fmin.d ft3,ft0,ft1 +80002c90: 00353027 fsd ft3,0(a0) +80002c94: 00452383 lw t2,4(a0) +80002c98: 00052503 lw a0,0(a0) +80002c9c: 001015f3 fsflags a1,zero +80002ca0: 00000613 li a2,0 +80002ca4: 40d51663 bne a0,a3,800030b0 +80002ca8: 40731463 bne t1,t2,800030b0 +80002cac: 40c59263 bne a1,a2,800030b0 + +80002cb0 : +80002cb0: 00500193 li gp,5 +80002cb4: 00001517 auipc a0,0x1 +80002cb8: 3ac50513 addi a0,a0,940 # 80004060 +80002cbc: 00053007 fld ft0,0(a0) +80002cc0: 00853087 fld ft1,8(a0) +80002cc4: 01053107 fld ft2,16(a0) +80002cc8: 01852683 lw a3,24(a0) +80002ccc: 01c52303 lw t1,28(a0) +80002cd0: 2a1001d3 fmin.d ft3,ft0,ft1 +80002cd4: 00353027 fsd ft3,0(a0) +80002cd8: 00452383 lw t2,4(a0) +80002cdc: 00052503 lw a0,0(a0) +80002ce0: 001015f3 fsflags a1,zero +80002ce4: 00000613 li a2,0 +80002ce8: 3cd51463 bne a0,a3,800030b0 +80002cec: 3c731263 bne t1,t2,800030b0 +80002cf0: 3cc59063 bne a1,a2,800030b0 + +80002cf4 : +80002cf4: 00600193 li gp,6 +80002cf8: 00001517 auipc a0,0x1 +80002cfc: 38850513 addi a0,a0,904 # 80004080 +80002d00: 00053007 fld ft0,0(a0) +80002d04: 00853087 fld ft1,8(a0) +80002d08: 01053107 fld ft2,16(a0) +80002d0c: 01852683 lw a3,24(a0) +80002d10: 01c52303 lw t1,28(a0) +80002d14: 2a1001d3 fmin.d ft3,ft0,ft1 +80002d18: 00353027 fsd ft3,0(a0) +80002d1c: 00452383 lw t2,4(a0) +80002d20: 00052503 lw a0,0(a0) +80002d24: 001015f3 fsflags a1,zero +80002d28: 00000613 li a2,0 +80002d2c: 38d51263 bne a0,a3,800030b0 +80002d30: 38731063 bne t1,t2,800030b0 +80002d34: 36c59e63 bne a1,a2,800030b0 + +80002d38 : +80002d38: 00700193 li gp,7 +80002d3c: 00001517 auipc a0,0x1 +80002d40: 36450513 addi a0,a0,868 # 800040a0 +80002d44: 00053007 fld ft0,0(a0) +80002d48: 00853087 fld ft1,8(a0) +80002d4c: 01053107 fld ft2,16(a0) +80002d50: 01852683 lw a3,24(a0) +80002d54: 01c52303 lw t1,28(a0) +80002d58: 2a1001d3 fmin.d ft3,ft0,ft1 +80002d5c: 00353027 fsd ft3,0(a0) +80002d60: 00452383 lw t2,4(a0) +80002d64: 00052503 lw a0,0(a0) +80002d68: 001015f3 fsflags a1,zero +80002d6c: 00000613 li a2,0 +80002d70: 34d51063 bne a0,a3,800030b0 +80002d74: 32731e63 bne t1,t2,800030b0 +80002d78: 32c59c63 bne a1,a2,800030b0 + +80002d7c : +80002d7c: 00c00193 li gp,12 +80002d80: 00001517 auipc a0,0x1 +80002d84: 34050513 addi a0,a0,832 # 800040c0 +80002d88: 00053007 fld ft0,0(a0) +80002d8c: 00853087 fld ft1,8(a0) +80002d90: 01053107 fld ft2,16(a0) +80002d94: 01852683 lw a3,24(a0) +80002d98: 01c52303 lw t1,28(a0) +80002d9c: 2a1011d3 fmax.d ft3,ft0,ft1 +80002da0: 00353027 fsd ft3,0(a0) +80002da4: 00452383 lw t2,4(a0) +80002da8: 00052503 lw a0,0(a0) +80002dac: 001015f3 fsflags a1,zero +80002db0: 00000613 li a2,0 +80002db4: 2ed51e63 bne a0,a3,800030b0 +80002db8: 2e731c63 bne t1,t2,800030b0 +80002dbc: 2ec59a63 bne a1,a2,800030b0 + +80002dc0 : +80002dc0: 00d00193 li gp,13 +80002dc4: 00001517 auipc a0,0x1 +80002dc8: 31c50513 addi a0,a0,796 # 800040e0 +80002dcc: 00053007 fld ft0,0(a0) +80002dd0: 00853087 fld ft1,8(a0) +80002dd4: 01053107 fld ft2,16(a0) +80002dd8: 01852683 lw a3,24(a0) +80002ddc: 01c52303 lw t1,28(a0) +80002de0: 2a1011d3 fmax.d ft3,ft0,ft1 +80002de4: 00353027 fsd ft3,0(a0) +80002de8: 00452383 lw t2,4(a0) +80002dec: 00052503 lw a0,0(a0) +80002df0: 001015f3 fsflags a1,zero +80002df4: 00000613 li a2,0 +80002df8: 2ad51c63 bne a0,a3,800030b0 +80002dfc: 2a731a63 bne t1,t2,800030b0 +80002e00: 2ac59863 bne a1,a2,800030b0 + +80002e04 : +80002e04: 00e00193 li gp,14 +80002e08: 00001517 auipc a0,0x1 +80002e0c: 2f850513 addi a0,a0,760 # 80004100 +80002e10: 00053007 fld ft0,0(a0) +80002e14: 00853087 fld ft1,8(a0) +80002e18: 01053107 fld ft2,16(a0) +80002e1c: 01852683 lw a3,24(a0) +80002e20: 01c52303 lw t1,28(a0) +80002e24: 2a1011d3 fmax.d ft3,ft0,ft1 +80002e28: 00353027 fsd ft3,0(a0) +80002e2c: 00452383 lw t2,4(a0) +80002e30: 00052503 lw a0,0(a0) +80002e34: 001015f3 fsflags a1,zero +80002e38: 00000613 li a2,0 +80002e3c: 26d51a63 bne a0,a3,800030b0 +80002e40: 26731863 bne t1,t2,800030b0 +80002e44: 26c59663 bne a1,a2,800030b0 + +80002e48 : +80002e48: 00f00193 li gp,15 +80002e4c: 00001517 auipc a0,0x1 +80002e50: 2d450513 addi a0,a0,724 # 80004120 +80002e54: 00053007 fld ft0,0(a0) +80002e58: 00853087 fld ft1,8(a0) +80002e5c: 01053107 fld ft2,16(a0) +80002e60: 01852683 lw a3,24(a0) +80002e64: 01c52303 lw t1,28(a0) +80002e68: 2a1011d3 fmax.d ft3,ft0,ft1 +80002e6c: 00353027 fsd ft3,0(a0) +80002e70: 00452383 lw t2,4(a0) +80002e74: 00052503 lw a0,0(a0) +80002e78: 001015f3 fsflags a1,zero +80002e7c: 00000613 li a2,0 +80002e80: 22d51863 bne a0,a3,800030b0 +80002e84: 22731663 bne t1,t2,800030b0 +80002e88: 22c59463 bne a1,a2,800030b0 + +80002e8c : +80002e8c: 01000193 li gp,16 +80002e90: 00001517 auipc a0,0x1 +80002e94: 2b050513 addi a0,a0,688 # 80004140 +80002e98: 00053007 fld ft0,0(a0) +80002e9c: 00853087 fld ft1,8(a0) +80002ea0: 01053107 fld ft2,16(a0) +80002ea4: 01852683 lw a3,24(a0) +80002ea8: 01c52303 lw t1,28(a0) +80002eac: 2a1011d3 fmax.d ft3,ft0,ft1 +80002eb0: 00353027 fsd ft3,0(a0) +80002eb4: 00452383 lw t2,4(a0) +80002eb8: 00052503 lw a0,0(a0) +80002ebc: 001015f3 fsflags a1,zero +80002ec0: 00000613 li a2,0 +80002ec4: 1ed51663 bne a0,a3,800030b0 +80002ec8: 1e731463 bne t1,t2,800030b0 +80002ecc: 1ec59263 bne a1,a2,800030b0 + +80002ed0 : +80002ed0: 01100193 li gp,17 +80002ed4: 00001517 auipc a0,0x1 +80002ed8: 28c50513 addi a0,a0,652 # 80004160 +80002edc: 00053007 fld ft0,0(a0) +80002ee0: 00853087 fld ft1,8(a0) +80002ee4: 01053107 fld ft2,16(a0) +80002ee8: 01852683 lw a3,24(a0) +80002eec: 01c52303 lw t1,28(a0) +80002ef0: 2a1011d3 fmax.d ft3,ft0,ft1 +80002ef4: 00353027 fsd ft3,0(a0) +80002ef8: 00452383 lw t2,4(a0) +80002efc: 00052503 lw a0,0(a0) +80002f00: 001015f3 fsflags a1,zero +80002f04: 00000613 li a2,0 +80002f08: 1ad51463 bne a0,a3,800030b0 +80002f0c: 1a731263 bne t1,t2,800030b0 +80002f10: 1ac59063 bne a1,a2,800030b0 + +80002f14 : +80002f14: 01400193 li gp,20 +80002f18: 00001517 auipc a0,0x1 +80002f1c: 26850513 addi a0,a0,616 # 80004180 +80002f20: 00053007 fld ft0,0(a0) +80002f24: 00853087 fld ft1,8(a0) +80002f28: 01053107 fld ft2,16(a0) +80002f2c: 01852683 lw a3,24(a0) +80002f30: 01c52303 lw t1,28(a0) +80002f34: 2a1011d3 fmax.d ft3,ft0,ft1 +80002f38: 00353027 fsd ft3,0(a0) +80002f3c: 00452383 lw t2,4(a0) +80002f40: 00052503 lw a0,0(a0) +80002f44: 001015f3 fsflags a1,zero +80002f48: 01000613 li a2,16 +80002f4c: 16d51263 bne a0,a3,800030b0 +80002f50: 16731063 bne t1,t2,800030b0 +80002f54: 14c59e63 bne a1,a2,800030b0 + +80002f58 : +80002f58: 01500193 li gp,21 +80002f5c: 00001517 auipc a0,0x1 +80002f60: 24450513 addi a0,a0,580 # 800041a0 +80002f64: 00053007 fld ft0,0(a0) +80002f68: 00853087 fld ft1,8(a0) +80002f6c: 01053107 fld ft2,16(a0) +80002f70: 01852683 lw a3,24(a0) +80002f74: 01c52303 lw t1,28(a0) +80002f78: 2a1011d3 fmax.d ft3,ft0,ft1 +80002f7c: 00353027 fsd ft3,0(a0) +80002f80: 00452383 lw t2,4(a0) +80002f84: 00052503 lw a0,0(a0) +80002f88: 001015f3 fsflags a1,zero +80002f8c: 00000613 li a2,0 +80002f90: 12d51063 bne a0,a3,800030b0 +80002f94: 10731e63 bne t1,t2,800030b0 +80002f98: 10c59c63 bne a1,a2,800030b0 + +80002f9c : +80002f9c: 01e00193 li gp,30 +80002fa0: 00001517 auipc a0,0x1 +80002fa4: 22050513 addi a0,a0,544 # 800041c0 +80002fa8: 00053007 fld ft0,0(a0) +80002fac: 00853087 fld ft1,8(a0) +80002fb0: 01053107 fld ft2,16(a0) +80002fb4: 01852683 lw a3,24(a0) +80002fb8: 01c52303 lw t1,28(a0) +80002fbc: 2a1001d3 fmin.d ft3,ft0,ft1 +80002fc0: 00353027 fsd ft3,0(a0) +80002fc4: 00452383 lw t2,4(a0) +80002fc8: 00052503 lw a0,0(a0) +80002fcc: 001015f3 fsflags a1,zero +80002fd0: 00000613 li a2,0 +80002fd4: 0cd51e63 bne a0,a3,800030b0 +80002fd8: 0c731c63 bne t1,t2,800030b0 +80002fdc: 0cc59a63 bne a1,a2,800030b0 + +80002fe0 : +80002fe0: 01f00193 li gp,31 +80002fe4: 00001517 auipc a0,0x1 +80002fe8: 1fc50513 addi a0,a0,508 # 800041e0 +80002fec: 00053007 fld ft0,0(a0) +80002ff0: 00853087 fld ft1,8(a0) +80002ff4: 01053107 fld ft2,16(a0) +80002ff8: 01852683 lw a3,24(a0) +80002ffc: 01c52303 lw t1,28(a0) +80003000: 2a1001d3 fmin.d ft3,ft0,ft1 +80003004: 00353027 fsd ft3,0(a0) +80003008: 00452383 lw t2,4(a0) +8000300c: 00052503 lw a0,0(a0) +80003010: 001015f3 fsflags a1,zero +80003014: 00000613 li a2,0 +80003018: 08d51c63 bne a0,a3,800030b0 +8000301c: 08731a63 bne t1,t2,800030b0 +80003020: 08c59863 bne a1,a2,800030b0 + +80003024 : +80003024: 02000193 li gp,32 +80003028: 00001517 auipc a0,0x1 +8000302c: 1d850513 addi a0,a0,472 # 80004200 +80003030: 00053007 fld ft0,0(a0) +80003034: 00853087 fld ft1,8(a0) +80003038: 01053107 fld ft2,16(a0) +8000303c: 01852683 lw a3,24(a0) +80003040: 01c52303 lw t1,28(a0) +80003044: 2a1011d3 fmax.d ft3,ft0,ft1 +80003048: 00353027 fsd ft3,0(a0) +8000304c: 00452383 lw t2,4(a0) +80003050: 00052503 lw a0,0(a0) +80003054: 001015f3 fsflags a1,zero +80003058: 00000613 li a2,0 +8000305c: 04d51a63 bne a0,a3,800030b0 +80003060: 04731863 bne t1,t2,800030b0 +80003064: 04c59663 bne a1,a2,800030b0 + +80003068 : +80003068: 02100193 li gp,33 +8000306c: 00001517 auipc a0,0x1 +80003070: 1b450513 addi a0,a0,436 # 80004220 +80003074: 00053007 fld ft0,0(a0) +80003078: 00853087 fld ft1,8(a0) +8000307c: 01053107 fld ft2,16(a0) +80003080: 01852683 lw a3,24(a0) +80003084: 01c52303 lw t1,28(a0) +80003088: 2a1011d3 fmax.d ft3,ft0,ft1 +8000308c: 00353027 fsd ft3,0(a0) +80003090: 00452383 lw t2,4(a0) +80003094: 00052503 lw a0,0(a0) +80003098: 001015f3 fsflags a1,zero +8000309c: 00000613 li a2,0 +800030a0: 00d51863 bne a0,a3,800030b0 +800030a4: 00731663 bne t1,t2,800030b0 +800030a8: 00c59463 bne a1,a2,800030b0 +800030ac: 00301a63 bne zero,gp,800030c0 + +800030b0 : +800030b0: 00119513 slli a0,gp,0x1 +800030b4: 00050063 beqz a0,800030b4 +800030b8: 00156513 ori a0,a0,1 +800030bc: 00000073 ecall + +800030c0 : +800030c0: 00100513 li a0,1 +800030c4: 00000073 ecall +800030c8: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 0000 unimp +80004002: 0000 unimp +80004004: 0000 unimp +80004006: 4004 lw s1,0(s0) +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: 0000 unimp +8000400e: 3ff0 fld fa2,248(a5) +80004010: 0000 unimp +80004012: 0000 unimp +80004014: 0000 unimp +80004016: 0000 unimp +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: 0000 unimp +8000401e: 3ff0 fld fa2,248(a5) + +80004020 : +80004020: 6666 flw fa2,88(sp) +80004022: 6666 flw fa2,88(sp) +80004024: 4c66 lw s8,88(sp) +80004026: 999ac093 xori ra,s5,-1639 +8000402a: 9999 andi a1,a1,-26 +8000402c: 9999 andi a1,a1,-26 +8000402e: 3ff1 jal 8000400a +80004030: 0000 unimp +80004032: 0000 unimp +80004034: 0000 unimp +80004036: 0000 unimp +80004038: 6666 flw fa2,88(sp) +8000403a: 6666 flw fa2,88(sp) +8000403c: 4c66 lw s8,88(sp) +8000403e: xori ra,s5,-1639 + +80004040 : +80004040: 999a add s3,s3,t1 +80004042: 9999 andi a1,a1,-26 +80004044: 9999 andi a1,a1,-26 +80004046: 3ff1 jal 80004022 +80004048: 6666 flw fa2,88(sp) +8000404a: 6666 flw fa2,88(sp) +8000404c: 4c66 lw s8,88(sp) +8000404e: 0000c093 xori ra,ra,0 +80004052: 0000 unimp +80004054: 0000 unimp +80004056: 0000 unimp +80004058: 6666 flw fa2,88(sp) +8000405a: 6666 flw fa2,88(sp) +8000405c: 4c66 lw s8,88(sp) +8000405e: not ra,t6 + +80004060 : +80004060: ffff 0xffff +80004062: ffff 0xffff +80004064: ffff 0xffff +80004066: 7fff 0x7fff +80004068: 6666 flw fa2,88(sp) +8000406a: 6666 flw fa2,88(sp) +8000406c: 4c66 lw s8,88(sp) +8000406e: 0000c093 xori ra,ra,0 +80004072: 0000 unimp +80004074: 0000 unimp +80004076: 0000 unimp +80004078: 6666 flw fa2,88(sp) +8000407a: 6666 flw fa2,88(sp) +8000407c: 4c66 lw s8,88(sp) +8000407e: xori ra,gp,-689 + +80004080 : +80004080: d4f1 beqz s1,8000404c +80004082: 53c8 lw a0,36(a5) +80004084: 400921fb 0x400921fb +80004088: 8c3a mv s8,a4 +8000408a: e230 fsw fa2,64(a2) +8000408c: 798e flw fs3,224(sp) +8000408e: 3e45 jal 80003c3e +80004090: 0000 unimp +80004092: 0000 unimp +80004094: 0000 unimp +80004096: 0000 unimp +80004098: 8c3a mv s8,a4 +8000409a: e230 fsw fa2,64(a2) +8000409c: 798e flw fs3,224(sp) +8000409e: 3e45 jal 80003c4e + +800040a0 : +800040a0: 0000 unimp +800040a2: 0000 unimp +800040a4: 0000 unimp +800040a6: bff0 fsd fa2,248(a5) +800040a8: 0000 unimp +800040aa: 0000 unimp +800040ac: 0000 unimp +800040ae: c000 sw s0,0(s0) +800040b0: 0000 unimp +800040b2: 0000 unimp +800040b4: 0000 unimp +800040b6: 0000 unimp +800040b8: 0000 unimp +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: c000 sw s0,0(s0) + +800040c0 : +800040c0: 0000 unimp +800040c2: 0000 unimp +800040c4: 0000 unimp +800040c6: 4004 lw s1,0(s0) +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0000 unimp +800040ce: 3ff0 fld fa2,248(a5) +800040d0: 0000 unimp +800040d2: 0000 unimp +800040d4: 0000 unimp +800040d6: 0000 unimp +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0000 unimp +800040de: 4004 lw s1,0(s0) + +800040e0 : +800040e0: 6666 flw fa2,88(sp) +800040e2: 6666 flw fa2,88(sp) +800040e4: 4c66 lw s8,88(sp) +800040e6: 999ac093 xori ra,s5,-1639 +800040ea: 9999 andi a1,a1,-26 +800040ec: 9999 andi a1,a1,-26 +800040ee: 3ff1 jal 800040ca +800040f0: 0000 unimp +800040f2: 0000 unimp +800040f4: 0000 unimp +800040f6: 0000 unimp +800040f8: 999a add s3,s3,t1 +800040fa: 9999 andi a1,a1,-26 +800040fc: 9999 andi a1,a1,-26 +800040fe: 3ff1 jal 800040da + +80004100 : +80004100: 999a add s3,s3,t1 +80004102: 9999 andi a1,a1,-26 +80004104: 9999 andi a1,a1,-26 +80004106: 3ff1 jal 800040e2 +80004108: 6666 flw fa2,88(sp) +8000410a: 6666 flw fa2,88(sp) +8000410c: 4c66 lw s8,88(sp) +8000410e: 0000c093 xori ra,ra,0 +80004112: 0000 unimp +80004114: 0000 unimp +80004116: 0000 unimp +80004118: 999a add s3,s3,t1 +8000411a: 9999 andi a1,a1,-26 +8000411c: 9999 andi a1,a1,-26 +8000411e: 3ff1 jal 800040fa + +80004120 : +80004120: ffff 0xffff +80004122: ffff 0xffff +80004124: ffff 0xffff +80004126: 7fff 0x7fff +80004128: 6666 flw fa2,88(sp) +8000412a: 6666 flw fa2,88(sp) +8000412c: 4c66 lw s8,88(sp) +8000412e: 0000c093 xori ra,ra,0 +80004132: 0000 unimp +80004134: 0000 unimp +80004136: 0000 unimp +80004138: 6666 flw fa2,88(sp) +8000413a: 6666 flw fa2,88(sp) +8000413c: 4c66 lw s8,88(sp) +8000413e: xori ra,gp,-689 + +80004140 : +80004140: d4f1 beqz s1,8000410c +80004142: 53c8 lw a0,36(a5) +80004144: 400921fb 0x400921fb +80004148: 8c3a mv s8,a4 +8000414a: e230 fsw fa2,64(a2) +8000414c: 798e flw fs3,224(sp) +8000414e: 3e45 jal 80003cfe +80004150: 0000 unimp +80004152: 0000 unimp +80004154: 0000 unimp +80004156: 0000 unimp +80004158: d4f1 beqz s1,80004124 +8000415a: 53c8 lw a0,36(a5) +8000415c: 400921fb 0x400921fb + +80004160 : +80004160: 0000 unimp +80004162: 0000 unimp +80004164: 0000 unimp +80004166: bff0 fsd fa2,248(a5) +80004168: 0000 unimp +8000416a: 0000 unimp +8000416c: 0000 unimp +8000416e: c000 sw s0,0(s0) +80004170: 0000 unimp +80004172: 0000 unimp +80004174: 0000 unimp +80004176: 0000 unimp +80004178: 0000 unimp +8000417a: 0000 unimp +8000417c: 0000 unimp +8000417e: bff0 fsd fa2,248(a5) + +80004180 : +80004180: 0001 nop +80004182: 0000 unimp +80004184: 0000 unimp +80004186: 7ff0 flw fa2,124(a5) +80004188: 0000 unimp +8000418a: 0000 unimp +8000418c: 0000 unimp +8000418e: 3ff0 fld fa2,248(a5) +80004190: 0000 unimp +80004192: 0000 unimp +80004194: 0000 unimp +80004196: 0000 unimp +80004198: 0000 unimp +8000419a: 0000 unimp +8000419c: 0000 unimp +8000419e: 3ff0 fld fa2,248(a5) + +800041a0 : +800041a0: ffff 0xffff +800041a2: ffff 0xffff +800041a4: ffff 0xffff +800041a6: 7fff 0x7fff +800041a8: ffff 0xffff +800041aa: ffff 0xffff +800041ac: ffff 0xffff +800041ae: 7fff 0x7fff +800041b0: 0000 unimp +800041b2: 0000 unimp +800041b4: 0000 unimp +800041b6: 0000 unimp +800041b8: 0000 unimp +800041ba: 0000 unimp +800041bc: 0000 unimp +800041be: 7ff8 flw fa4,124(a5) + +800041c0 : +800041c0: 0000 unimp +800041c2: 0000 unimp +800041c4: 0000 unimp +800041c6: 8000 0x8000 +800041c8: 0000 unimp +800041ca: 0000 unimp +800041cc: 0000 unimp +800041ce: 0000 unimp +800041d0: 0000 unimp +800041d2: 0000 unimp +800041d4: 0000 unimp +800041d6: 0000 unimp +800041d8: 0000 unimp +800041da: 0000 unimp +800041dc: 0000 unimp +800041de: 8000 0x8000 + +800041e0 : +800041e0: 0000 unimp +800041e2: 0000 unimp +800041e4: 0000 unimp +800041e6: 0000 unimp +800041e8: 0000 unimp +800041ea: 0000 unimp +800041ec: 0000 unimp +800041ee: 8000 0x8000 +800041f0: 0000 unimp +800041f2: 0000 unimp +800041f4: 0000 unimp +800041f6: 0000 unimp +800041f8: 0000 unimp +800041fa: 0000 unimp +800041fc: 0000 unimp +800041fe: 8000 0x8000 + +80004200 : +80004200: 0000 unimp +80004202: 0000 unimp +80004204: 0000 unimp +80004206: 8000 0x8000 +80004208: 0000 unimp +8000420a: 0000 unimp +8000420c: 0000 unimp +8000420e: 0000 unimp +80004210: 0000 unimp +80004212: 0000 unimp +80004214: 0000 unimp +80004216: 0000 unimp +80004218: 0000 unimp +8000421a: 0000 unimp +8000421c: 0000 unimp +8000421e: 0000 unimp + +80004220 : +80004220: 0000 unimp +80004222: 0000 unimp +80004224: 0000 unimp +80004226: 0000 unimp +80004228: 0000 unimp +8000422a: 0000 unimp +8000422c: 0000 unimp +8000422e: 8000 0x8000 +80004230: 0000 unimp +80004232: 0000 unimp +80004234: 0000 unimp +80004236: 0000 unimp +80004238: 0000 unimp +8000423a: 0000 unimp +8000423c: 0000 unimp +8000423e: 0000 unimp diff --git a/Tests/isa/rv32ud-v-ldst b/Tests/isa/rv32ud-v-ldst new file mode 100644 index 0000000..3128c17 Binary files /dev/null and b/Tests/isa/rv32ud-v-ldst differ diff --git a/Tests/isa/rv32ud-v-ldst.dump b/Tests/isa/rv32ud-v-ldst.dump new file mode 100644 index 0000000..97b4faa --- /dev/null +++ b/Tests/isa/rv32ud-v-ldst.dump @@ -0,0 +1,1032 @@ + +rv32ud-v-ldst: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 82058593 addi a1,a1,-2016 # 80002ce8 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 83c58593 addi a1,a1,-1988 # 80002d74 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 7e858593 addi a1,a1,2024 # 80002d8c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 71c58593 addi a1,a1,1820 # 80002d2c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 70c58593 addi a1,a1,1804 # 80002e54 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 67458593 addi a1,a1,1652 # 80002e30 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 57060613 addi a2,a2,1392 # 80002e80 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 48060613 addi a2,a2,1152 # 80002dfc +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 40060613 addi a2,a2,1024 # 80002dc8 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 02d00793 li a5,45 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0d0947b7 lui a5,0xd094 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 2be78793 addi a5,a5,702 # d0942be <_start-0x72f6bd42> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero +80002be4: 00000417 auipc s0,0x0 +80002be8: 44c40413 addi s0,s0,1100 # 80003030 + +80002bec : +80002bec: 00043107 fld ft2,0(s0) +80002bf0: 00243827 fsd ft2,16(s0) +80002bf4: 01042503 lw a0,16(s0) +80002bf8: 01442583 lw a1,20(s0) +80002bfc: 00000f97 auipc t6,0x0 +80002c00: 404f8f93 addi t6,t6,1028 # 80003000 +80002c04: 000fae83 lw t4,0(t6) +80002c08: 004faf83 lw t6,4(t6) +80002c0c: 00200193 li gp,2 +80002c10: 0bd51e63 bne a0,t4,80002ccc +80002c14: 0bf59c63 bne a1,t6,80002ccc + +80002c18 : +80002c18: 00043107 fld ft2,0(s0) +80002c1c: 00242827 fsw ft2,16(s0) +80002c20: 01042503 lw a0,16(s0) +80002c24: 01442583 lw a1,20(s0) +80002c28: 00000f97 auipc t6,0x0 +80002c2c: 3e0f8f93 addi t6,t6,992 # 80003008 +80002c30: 000fae83 lw t4,0(t6) +80002c34: 004faf83 lw t6,4(t6) +80002c38: 00300193 li gp,3 +80002c3c: 09d51863 bne a0,t4,80002ccc +80002c40: 09f59663 bne a1,t6,80002ccc + +80002c44 : +80002c44: 00042107 flw ft2,0(s0) +80002c48: 00242827 fsw ft2,16(s0) +80002c4c: 01042503 lw a0,16(s0) +80002c50: 01442583 lw a1,20(s0) +80002c54: 00000f97 auipc t6,0x0 +80002c58: 3bcf8f93 addi t6,t6,956 # 80003010 +80002c5c: 000fae83 lw t4,0(t6) +80002c60: 004faf83 lw t6,4(t6) +80002c64: 00400193 li gp,4 +80002c68: 07d51263 bne a0,t4,80002ccc +80002c6c: 07f59063 bne a1,t6,80002ccc + +80002c70 : +80002c70: 00843107 fld ft2,8(s0) +80002c74: 00243827 fsd ft2,16(s0) +80002c78: 01042503 lw a0,16(s0) +80002c7c: 01442583 lw a1,20(s0) +80002c80: 00000f97 auipc t6,0x0 +80002c84: 398f8f93 addi t6,t6,920 # 80003018 +80002c88: 000fae83 lw t4,0(t6) +80002c8c: 004faf83 lw t6,4(t6) +80002c90: 00500193 li gp,5 +80002c94: 03d51c63 bne a0,t4,80002ccc +80002c98: 03f59a63 bne a1,t6,80002ccc + +80002c9c : +80002c9c: 00842107 flw ft2,8(s0) +80002ca0: 00243827 fsd ft2,16(s0) +80002ca4: 01042503 lw a0,16(s0) +80002ca8: 01442583 lw a1,20(s0) +80002cac: 00000f97 auipc t6,0x0 +80002cb0: 374f8f93 addi t6,t6,884 # 80003020 +80002cb4: 000fae83 lw t4,0(t6) +80002cb8: 004faf83 lw t6,4(t6) +80002cbc: 00600193 li gp,6 +80002cc0: 01d51663 bne a0,t4,80002ccc +80002cc4: 01f59463 bne a1,t6,80002ccc +80002cc8: 00301a63 bne zero,gp,80002cdc + +80002ccc : +80002ccc: 00119513 slli a0,gp,0x1 +80002cd0: 00050063 beqz a0,80002cd0 +80002cd4: 00156513 ori a0,a0,1 +80002cd8: 00000073 ecall + +80002cdc : +80002cdc: 00100513 li a0,1 +80002ce0: 00000073 ecall +80002ce4: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: bf80 fsd fs0,56(a5) +80003004: 0000 unimp +80003006: 4000 lw s0,0(s0) + +80003008 : +80003008: 0000 unimp +8000300a: bf80 fsd fs0,56(a5) +8000300c: 0000 unimp +8000300e: 4000 lw s0,0(s0) + +80003010 : +80003010: 0000 unimp +80003012: bf80 fsd fs0,56(a5) +80003014: 0000 unimp +80003016: 4000 lw s0,0(s0) + +80003018 : +80003018: 0000 unimp +8000301a: 4040 lw s0,4(s0) +8000301c: 0000 unimp +8000301e: c080 sw s0,0(s1) + +80003020 : +80003020: 0000 unimp +80003022: 4040 lw s0,4(s0) +80003024: ffff 0xffff +80003026: ffff 0xffff +80003028: 0000 unimp +8000302a: 0000 unimp +8000302c: 0000 unimp +8000302e: 0000 unimp + +80003030 : +80003030: 0000 unimp +80003032: bf80 fsd fs0,56(a5) +80003034: 0000 unimp +80003036: 4000 lw s0,0(s0) +80003038: 0000 unimp +8000303a: 4040 lw s0,4(s0) +8000303c: 0000 unimp +8000303e: c080 sw s0,0(s1) +80003040: deadbeef jal t4,7ffde62a <_start-0x219d6> +80003044: babe fsd fa5,368(sp) +80003046: cafe sw t6,84(sp) +80003048: 1dea slli s11,s11,0x3a +8000304a: abad j 800035c4 +8000304c: d00d beqz s0,80002f6e +8000304e: lui t1,0x1 diff --git a/Tests/isa/rv32ud-v-recoding b/Tests/isa/rv32ud-v-recoding new file mode 100644 index 0000000..17df830 Binary files /dev/null and b/Tests/isa/rv32ud-v-recoding differ diff --git a/Tests/isa/rv32ud-v-recoding.dump b/Tests/isa/rv32ud-v-recoding.dump new file mode 100644 index 0000000..f0c72e2 --- /dev/null +++ b/Tests/isa/rv32ud-v-recoding.dump @@ -0,0 +1,967 @@ + +rv32ud-v-recoding: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 7c058593 addi a1,a1,1984 # 80002c88 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7dc58593 addi a1,a1,2012 # 80002d14 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 78858593 addi a1,a1,1928 # 80002d2c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 6bc58593 addi a1,a1,1724 # 80002ccc +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6ac58593 addi a1,a1,1708 # 80002df4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 61458593 addi a1,a1,1556 # 80002dd0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 51060613 addi a2,a2,1296 # 80002e20 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 42060613 addi a2,a2,1056 # 80002d9c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3a060613 addi a2,a2,928 # 80002d68 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01000793 li a5,16 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0f5667b7 lui a5,0xf566 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 8a278793 addi a5,a5,-1886 # f5658a2 <_start-0x70a9a75e> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero +80002be4: 00000517 auipc a0,0x0 +80002be8: 41c52007 flw ft0,1052(a0) # 80003000 +80002bec: 00000517 auipc a0,0x0 +80002bf0: 41852087 flw ft1,1048(a0) # 80003004 +80002bf4: 1000f0d3 fmul.s ft1,ft1,ft0 + +80002bf8 : +80002bf8: a0102553 feq.s a0,ft0,ft1 +80002bfc: 00100e93 li t4,1 +80002c00: 00200193 li gp,2 +80002c04: 07d51463 bne a0,t4,80002c6c + +80002c08 : +80002c08: a0100553 fle.s a0,ft0,ft1 +80002c0c: 00100e93 li t4,1 +80002c10: 00300193 li gp,3 +80002c14: 05d51c63 bne a0,t4,80002c6c + +80002c18 : +80002c18: a0101553 flt.s a0,ft0,ft1 +80002c1c: 00000e93 li t4,0 +80002c20: 00400193 li gp,4 +80002c24: 05d51463 bne a0,t4,80002c6c +80002c28: d0007053 fcvt.s.w ft0,zero +80002c2c: 00100513 li a0,1 +80002c30: d00570d3 fcvt.s.w ft1,a0 +80002c34: 1000f0d3 fmul.s ft1,ft1,ft0 + +80002c38 : +80002c38: a0102553 feq.s a0,ft0,ft1 +80002c3c: 00100e93 li t4,1 +80002c40: 00500193 li gp,5 +80002c44: 03d51463 bne a0,t4,80002c6c + +80002c48 : +80002c48: a0100553 fle.s a0,ft0,ft1 +80002c4c: 00100e93 li t4,1 +80002c50: 00600193 li gp,6 +80002c54: 01d51c63 bne a0,t4,80002c6c + +80002c58 : +80002c58: a0101553 flt.s a0,ft0,ft1 +80002c5c: 00000e93 li t4,0 +80002c60: 00700193 li gp,7 +80002c64: 01d51463 bne a0,t4,80002c6c +80002c68: 00301a63 bne zero,gp,80002c7c + +80002c6c : +80002c6c: 00119513 slli a0,gp,0x1 +80002c70: 00050063 beqz a0,80002c70 +80002c74: 00156513 ori a0,a0,1 +80002c78: 00000073 ecall + +80002c7c : +80002c7c: 00100513 li a0,1 +80002c80: 00000073 ecall +80002c84: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: ff80 fsw fs0,56(a5) + +80003004 : +80003004: 0000 unimp +80003006: 4040 lw s0,4(s0) diff --git a/Tests/isa/rv32uf-p-fadd b/Tests/isa/rv32uf-p-fadd new file mode 100644 index 0000000..7b12189 Binary files /dev/null and b/Tests/isa/rv32uf-p-fadd differ diff --git a/Tests/isa/rv32uf-p-fadd.dump b/Tests/isa/rv32uf-p-fadd.dump new file mode 100644 index 0000000..8214d0a --- /dev/null +++ b/Tests/isa/rv32uf-p-fadd.dump @@ -0,0 +1,342 @@ + +rv32uf-p-fadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052007 flw ft0,0(a0) +80000118: 00452087 flw ft1,4(a0) +8000011c: 00852107 flw ft2,8(a0) +80000120: 00c52683 lw a3,12(a0) +80000124: 001071d3 fadd.s ft3,ft0,ft1 +80000128: e0018553 fmv.x.w a0,ft3 +8000012c: 001015f3 fsflags a1,zero +80000130: 00000613 li a2,0 +80000134: 1ed51063 bne a0,a3,80000314 +80000138: 1cc59e63 bne a1,a2,80000314 + +8000013c : +8000013c: 00300193 li gp,3 +80000140: 00002517 auipc a0,0x2 +80000144: ed050513 addi a0,a0,-304 # 80002010 +80000148: 00052007 flw ft0,0(a0) +8000014c: 00452087 flw ft1,4(a0) +80000150: 00852107 flw ft2,8(a0) +80000154: 00c52683 lw a3,12(a0) +80000158: 001071d3 fadd.s ft3,ft0,ft1 +8000015c: e0018553 fmv.x.w a0,ft3 +80000160: 001015f3 fsflags a1,zero +80000164: 00100613 li a2,1 +80000168: 1ad51663 bne a0,a3,80000314 +8000016c: 1ac59463 bne a1,a2,80000314 + +80000170 : +80000170: 00400193 li gp,4 +80000174: 00002517 auipc a0,0x2 +80000178: eac50513 addi a0,a0,-340 # 80002020 +8000017c: 00052007 flw ft0,0(a0) +80000180: 00452087 flw ft1,4(a0) +80000184: 00852107 flw ft2,8(a0) +80000188: 00c52683 lw a3,12(a0) +8000018c: 001071d3 fadd.s ft3,ft0,ft1 +80000190: e0018553 fmv.x.w a0,ft3 +80000194: 001015f3 fsflags a1,zero +80000198: 00100613 li a2,1 +8000019c: 16d51c63 bne a0,a3,80000314 +800001a0: 16c59a63 bne a1,a2,80000314 + +800001a4 : +800001a4: 00500193 li gp,5 +800001a8: 00002517 auipc a0,0x2 +800001ac: e8850513 addi a0,a0,-376 # 80002030 +800001b0: 00052007 flw ft0,0(a0) +800001b4: 00452087 flw ft1,4(a0) +800001b8: 00852107 flw ft2,8(a0) +800001bc: 00c52683 lw a3,12(a0) +800001c0: 081071d3 fsub.s ft3,ft0,ft1 +800001c4: e0018553 fmv.x.w a0,ft3 +800001c8: 001015f3 fsflags a1,zero +800001cc: 00000613 li a2,0 +800001d0: 14d51263 bne a0,a3,80000314 +800001d4: 14c59063 bne a1,a2,80000314 + +800001d8 : +800001d8: 00600193 li gp,6 +800001dc: 00002517 auipc a0,0x2 +800001e0: e6450513 addi a0,a0,-412 # 80002040 +800001e4: 00052007 flw ft0,0(a0) +800001e8: 00452087 flw ft1,4(a0) +800001ec: 00852107 flw ft2,8(a0) +800001f0: 00c52683 lw a3,12(a0) +800001f4: 081071d3 fsub.s ft3,ft0,ft1 +800001f8: e0018553 fmv.x.w a0,ft3 +800001fc: 001015f3 fsflags a1,zero +80000200: 00100613 li a2,1 +80000204: 10d51863 bne a0,a3,80000314 +80000208: 10c59663 bne a1,a2,80000314 + +8000020c : +8000020c: 00700193 li gp,7 +80000210: 00002517 auipc a0,0x2 +80000214: e4050513 addi a0,a0,-448 # 80002050 +80000218: 00052007 flw ft0,0(a0) +8000021c: 00452087 flw ft1,4(a0) +80000220: 00852107 flw ft2,8(a0) +80000224: 00c52683 lw a3,12(a0) +80000228: 081071d3 fsub.s ft3,ft0,ft1 +8000022c: e0018553 fmv.x.w a0,ft3 +80000230: 001015f3 fsflags a1,zero +80000234: 00100613 li a2,1 +80000238: 0cd51e63 bne a0,a3,80000314 +8000023c: 0cc59c63 bne a1,a2,80000314 + +80000240 : +80000240: 00800193 li gp,8 +80000244: 00002517 auipc a0,0x2 +80000248: e1c50513 addi a0,a0,-484 # 80002060 +8000024c: 00052007 flw ft0,0(a0) +80000250: 00452087 flw ft1,4(a0) +80000254: 00852107 flw ft2,8(a0) +80000258: 00c52683 lw a3,12(a0) +8000025c: 101071d3 fmul.s ft3,ft0,ft1 +80000260: e0018553 fmv.x.w a0,ft3 +80000264: 001015f3 fsflags a1,zero +80000268: 00000613 li a2,0 +8000026c: 0ad51463 bne a0,a3,80000314 +80000270: 0ac59263 bne a1,a2,80000314 + +80000274 : +80000274: 00900193 li gp,9 +80000278: 00002517 auipc a0,0x2 +8000027c: df850513 addi a0,a0,-520 # 80002070 +80000280: 00052007 flw ft0,0(a0) +80000284: 00452087 flw ft1,4(a0) +80000288: 00852107 flw ft2,8(a0) +8000028c: 00c52683 lw a3,12(a0) +80000290: 101071d3 fmul.s ft3,ft0,ft1 +80000294: e0018553 fmv.x.w a0,ft3 +80000298: 001015f3 fsflags a1,zero +8000029c: 00100613 li a2,1 +800002a0: 06d51a63 bne a0,a3,80000314 +800002a4: 06c59863 bne a1,a2,80000314 + +800002a8 : +800002a8: 00a00193 li gp,10 +800002ac: 00002517 auipc a0,0x2 +800002b0: dd450513 addi a0,a0,-556 # 80002080 +800002b4: 00052007 flw ft0,0(a0) +800002b8: 00452087 flw ft1,4(a0) +800002bc: 00852107 flw ft2,8(a0) +800002c0: 00c52683 lw a3,12(a0) +800002c4: 101071d3 fmul.s ft3,ft0,ft1 +800002c8: e0018553 fmv.x.w a0,ft3 +800002cc: 001015f3 fsflags a1,zero +800002d0: 00100613 li a2,1 +800002d4: 04d51063 bne a0,a3,80000314 +800002d8: 02c59e63 bne a1,a2,80000314 + +800002dc : +800002dc: 00b00193 li gp,11 +800002e0: 00002517 auipc a0,0x2 +800002e4: db050513 addi a0,a0,-592 # 80002090 +800002e8: 00052007 flw ft0,0(a0) +800002ec: 00452087 flw ft1,4(a0) +800002f0: 00852107 flw ft2,8(a0) +800002f4: 00c52683 lw a3,12(a0) +800002f8: 081071d3 fsub.s ft3,ft0,ft1 +800002fc: e0018553 fmv.x.w a0,ft3 +80000300: 001015f3 fsflags a1,zero +80000304: 01000613 li a2,16 +80000308: 00d51663 bne a0,a3,80000314 +8000030c: 00c59463 bne a1,a2,80000314 +80000310: 00301c63 bne zero,gp,80000328 + +80000314 : +80000314: 0ff0000f fence +80000318: 00018063 beqz gp,80000318 +8000031c: 00119193 slli gp,gp,0x1 +80000320: 0011e193 ori gp,gp,1 +80000324: 00000073 ecall + +80000328 : +80000328: 0ff0000f fence +8000032c: 00100193 li gp,1 +80000330: 00000073 ecall +80000334: c0001073 unimp +80000338: 0000 unimp +8000033a: 0000 unimp +8000033c: 0000 unimp +8000033e: 0000 unimp +80000340: 0000 unimp +80000342: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 4020 lw s0,64(s0) +80002004: 0000 unimp +80002006: 3f80 fld fs0,56(a5) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 4060 lw s0,68(s0) + +80002010 : +80002010: c49a6333 0xc49a6333 +80002014: cccd beqz s1,800020ce <_end+0x2e> +80002016: 3f8c fld fa1,56(a5) +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 4000 lw s0,0(s0) +8000201e: c49a sw t1,72(sp) + +80002020 : +80002020: 40490fdb 0x40490fdb +80002024: 322bcc77 0x322bcc77 +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 40490fdb 0x40490fdb + +80002030 : +80002030: 0000 unimp +80002032: 4020 lw s0,64(s0) +80002034: 0000 unimp +80002036: 3f80 fld fs0,56(a5) +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 3fc0 fld fs0,184(a5) + +80002040 : +80002040: c49a6333 0xc49a6333 +80002044: cccd beqz s1,800020fe <_end+0x5e> +80002046: bf8c fsd fa1,56(a5) +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 4000 lw s0,0(s0) +8000204e: c49a sw t1,72(sp) + +80002050 : +80002050: 40490fdb 0x40490fdb +80002054: 322bcc77 0x322bcc77 +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 40490fdb 0x40490fdb + +80002060 : +80002060: 0000 unimp +80002062: 4020 lw s0,64(s0) +80002064: 0000 unimp +80002066: 3f80 fld fs0,56(a5) +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 4020 lw s0,64(s0) + +80002070 : +80002070: c49a6333 0xc49a6333 +80002074: cccd beqz s1,8000212e <_end+0x8e> +80002076: bf8c fsd fa1,56(a5) +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: d385 beqz a5,80001f9c +8000207e: 44a9 li s1,10 + +80002080 : +80002080: 40490fdb 0x40490fdb +80002084: 322bcc77 0x322bcc77 +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: ee2d bnez a2,80002106 <_end+0x66> +8000208e: 3306 fld ft6,96(sp) + +80002090 : +80002090: 0000 unimp +80002092: 7f80 flw fs0,56(a5) +80002094: 0000 unimp +80002096: 7f80 flw fs0,56(a5) +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 7fc0 flw fs0,60(a5) diff --git a/Tests/isa/rv32uf-p-fclass b/Tests/isa/rv32uf-p-fclass new file mode 100644 index 0000000..ed27bba Binary files /dev/null and b/Tests/isa/rv32uf-p-fclass differ diff --git a/Tests/isa/rv32uf-p-fclass.dump b/Tests/isa/rv32uf-p-fclass.dump new file mode 100644 index 0000000..6b32b55 --- /dev/null +++ b/Tests/isa/rv32uf-p-fclass.dump @@ -0,0 +1,190 @@ + +rv32uf-p-fclass: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: ff800537 lui a0,0xff800 +8000010c: f0050553 fmv.w.x fa0,a0 +80000110: e0051553 fclass.s a0,fa0 +80000114: 00100e93 li t4,1 +80000118: 00200193 li gp,2 +8000011c: 0fd51663 bne a0,t4,80000208 + +80000120 : +80000120: bf800537 lui a0,0xbf800 +80000124: f0050553 fmv.w.x fa0,a0 +80000128: e0051553 fclass.s a0,fa0 +8000012c: 00200e93 li t4,2 +80000130: 00300193 li gp,3 +80000134: 0dd51a63 bne a0,t4,80000208 + +80000138 : +80000138: 80800537 lui a0,0x80800 +8000013c: fff50513 addi a0,a0,-1 # 807fffff <_end+0x7fdfff> +80000140: f0050553 fmv.w.x fa0,a0 +80000144: e0051553 fclass.s a0,fa0 +80000148: 00400e93 li t4,4 +8000014c: 00400193 li gp,4 +80000150: 0bd51c63 bne a0,t4,80000208 + +80000154 : +80000154: 80000537 lui a0,0x80000 +80000158: f0050553 fmv.w.x fa0,a0 +8000015c: e0051553 fclass.s a0,fa0 +80000160: 00800e93 li t4,8 +80000164: 00500193 li gp,5 +80000168: 0bd51063 bne a0,t4,80000208 + +8000016c : +8000016c: 00000513 li a0,0 +80000170: f0050553 fmv.w.x fa0,a0 +80000174: e0051553 fclass.s a0,fa0 +80000178: 01000e93 li t4,16 +8000017c: 00600193 li gp,6 +80000180: 09d51463 bne a0,t4,80000208 + +80000184 : +80000184: 00800537 lui a0,0x800 +80000188: fff50513 addi a0,a0,-1 # 7fffff <_start-0x7f800001> +8000018c: f0050553 fmv.w.x fa0,a0 +80000190: e0051553 fclass.s a0,fa0 +80000194: 02000e93 li t4,32 +80000198: 00700193 li gp,7 +8000019c: 07d51663 bne a0,t4,80000208 + +800001a0 : +800001a0: 3f800537 lui a0,0x3f800 +800001a4: f0050553 fmv.w.x fa0,a0 +800001a8: e0051553 fclass.s a0,fa0 +800001ac: 04000e93 li t4,64 +800001b0: 00800193 li gp,8 +800001b4: 05d51a63 bne a0,t4,80000208 + +800001b8 : +800001b8: 7f800537 lui a0,0x7f800 +800001bc: f0050553 fmv.w.x fa0,a0 +800001c0: e0051553 fclass.s a0,fa0 +800001c4: 08000e93 li t4,128 +800001c8: 00900193 li gp,9 +800001cc: 03d51e63 bne a0,t4,80000208 + +800001d0 : +800001d0: 7f800537 lui a0,0x7f800 +800001d4: 00150513 addi a0,a0,1 # 7f800001 <_start-0x7fffff> +800001d8: f0050553 fmv.w.x fa0,a0 +800001dc: e0051553 fclass.s a0,fa0 +800001e0: 10000e93 li t4,256 +800001e4: 00a00193 li gp,10 +800001e8: 03d51063 bne a0,t4,80000208 + +800001ec : +800001ec: 7fc00537 lui a0,0x7fc00 +800001f0: f0050553 fmv.w.x fa0,a0 +800001f4: e0051553 fclass.s a0,fa0 +800001f8: 20000e93 li t4,512 +800001fc: 00b00193 li gp,11 +80000200: 01d51463 bne a0,t4,80000208 +80000204: 00301c63 bne zero,gp,8000021c + +80000208 : +80000208: 0ff0000f fence +8000020c: 00018063 beqz gp,8000020c +80000210: 00119193 slli gp,gp,0x1 +80000214: 0011e193 ori gp,gp,1 +80000218: 00000073 ecall + +8000021c : +8000021c: 0ff0000f fence +80000220: 00100193 li gp,1 +80000224: 00000073 ecall +80000228: c0001073 unimp +8000022c: 0000 unimp +8000022e: 0000 unimp +80000230: 0000 unimp +80000232: 0000 unimp +80000234: 0000 unimp +80000236: 0000 unimp +80000238: 0000 unimp +8000023a: 0000 unimp +8000023c: 0000 unimp +8000023e: 0000 unimp +80000240: 0000 unimp +80000242: 0000 unimp diff --git a/Tests/isa/rv32uf-p-fcmp b/Tests/isa/rv32uf-p-fcmp new file mode 100644 index 0000000..2b0d629 Binary files /dev/null and b/Tests/isa/rv32uf-p-fcmp differ diff --git a/Tests/isa/rv32uf-p-fcmp.dump b/Tests/isa/rv32uf-p-fcmp.dump new file mode 100644 index 0000000..0674288 --- /dev/null +++ b/Tests/isa/rv32uf-p-fcmp.dump @@ -0,0 +1,450 @@ + +rv32uf-p-fcmp: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052007 flw ft0,0(a0) +80000118: 00452087 flw ft1,4(a0) +8000011c: 00852107 flw ft2,8(a0) +80000120: 00c52683 lw a3,12(a0) +80000124: a0102553 feq.s a0,ft0,ft1 +80000128: 001015f3 fsflags a1,zero +8000012c: 00000613 li a2,0 +80000130: 2ad51663 bne a0,a3,800003dc +80000134: 2ac59463 bne a1,a2,800003dc + +80000138 : +80000138: 00300193 li gp,3 +8000013c: 00002517 auipc a0,0x2 +80000140: ed450513 addi a0,a0,-300 # 80002010 +80000144: 00052007 flw ft0,0(a0) +80000148: 00452087 flw ft1,4(a0) +8000014c: 00852107 flw ft2,8(a0) +80000150: 00c52683 lw a3,12(a0) +80000154: a0100553 fle.s a0,ft0,ft1 +80000158: 001015f3 fsflags a1,zero +8000015c: 00000613 li a2,0 +80000160: 26d51e63 bne a0,a3,800003dc +80000164: 26c59c63 bne a1,a2,800003dc + +80000168 : +80000168: 00400193 li gp,4 +8000016c: 00002517 auipc a0,0x2 +80000170: eb450513 addi a0,a0,-332 # 80002020 +80000174: 00052007 flw ft0,0(a0) +80000178: 00452087 flw ft1,4(a0) +8000017c: 00852107 flw ft2,8(a0) +80000180: 00c52683 lw a3,12(a0) +80000184: a0101553 flt.s a0,ft0,ft1 +80000188: 001015f3 fsflags a1,zero +8000018c: 00000613 li a2,0 +80000190: 24d51663 bne a0,a3,800003dc +80000194: 24c59463 bne a1,a2,800003dc + +80000198 : +80000198: 00500193 li gp,5 +8000019c: 00002517 auipc a0,0x2 +800001a0: e9450513 addi a0,a0,-364 # 80002030 +800001a4: 00052007 flw ft0,0(a0) +800001a8: 00452087 flw ft1,4(a0) +800001ac: 00852107 flw ft2,8(a0) +800001b0: 00c52683 lw a3,12(a0) +800001b4: a0102553 feq.s a0,ft0,ft1 +800001b8: 001015f3 fsflags a1,zero +800001bc: 00000613 li a2,0 +800001c0: 20d51e63 bne a0,a3,800003dc +800001c4: 20c59c63 bne a1,a2,800003dc + +800001c8 : +800001c8: 00600193 li gp,6 +800001cc: 00002517 auipc a0,0x2 +800001d0: e7450513 addi a0,a0,-396 # 80002040 +800001d4: 00052007 flw ft0,0(a0) +800001d8: 00452087 flw ft1,4(a0) +800001dc: 00852107 flw ft2,8(a0) +800001e0: 00c52683 lw a3,12(a0) +800001e4: a0100553 fle.s a0,ft0,ft1 +800001e8: 001015f3 fsflags a1,zero +800001ec: 00000613 li a2,0 +800001f0: 1ed51663 bne a0,a3,800003dc +800001f4: 1ec59463 bne a1,a2,800003dc + +800001f8 : +800001f8: 00700193 li gp,7 +800001fc: 00002517 auipc a0,0x2 +80000200: e5450513 addi a0,a0,-428 # 80002050 +80000204: 00052007 flw ft0,0(a0) +80000208: 00452087 flw ft1,4(a0) +8000020c: 00852107 flw ft2,8(a0) +80000210: 00c52683 lw a3,12(a0) +80000214: a0101553 flt.s a0,ft0,ft1 +80000218: 001015f3 fsflags a1,zero +8000021c: 00000613 li a2,0 +80000220: 1ad51e63 bne a0,a3,800003dc +80000224: 1ac59c63 bne a1,a2,800003dc + +80000228 : +80000228: 00800193 li gp,8 +8000022c: 00002517 auipc a0,0x2 +80000230: e3450513 addi a0,a0,-460 # 80002060 +80000234: 00052007 flw ft0,0(a0) +80000238: 00452087 flw ft1,4(a0) +8000023c: 00852107 flw ft2,8(a0) +80000240: 00c52683 lw a3,12(a0) +80000244: a0102553 feq.s a0,ft0,ft1 +80000248: 001015f3 fsflags a1,zero +8000024c: 00000613 li a2,0 +80000250: 18d51663 bne a0,a3,800003dc +80000254: 18c59463 bne a1,a2,800003dc + +80000258 : +80000258: 00900193 li gp,9 +8000025c: 00002517 auipc a0,0x2 +80000260: e1450513 addi a0,a0,-492 # 80002070 +80000264: 00052007 flw ft0,0(a0) +80000268: 00452087 flw ft1,4(a0) +8000026c: 00852107 flw ft2,8(a0) +80000270: 00c52683 lw a3,12(a0) +80000274: a0102553 feq.s a0,ft0,ft1 +80000278: 001015f3 fsflags a1,zero +8000027c: 00000613 li a2,0 +80000280: 14d51e63 bne a0,a3,800003dc +80000284: 14c59c63 bne a1,a2,800003dc + +80000288 : +80000288: 00a00193 li gp,10 +8000028c: 00002517 auipc a0,0x2 +80000290: df450513 addi a0,a0,-524 # 80002080 +80000294: 00052007 flw ft0,0(a0) +80000298: 00452087 flw ft1,4(a0) +8000029c: 00852107 flw ft2,8(a0) +800002a0: 00c52683 lw a3,12(a0) +800002a4: a0102553 feq.s a0,ft0,ft1 +800002a8: 001015f3 fsflags a1,zero +800002ac: 01000613 li a2,16 +800002b0: 12d51663 bne a0,a3,800003dc +800002b4: 12c59463 bne a1,a2,800003dc + +800002b8 : +800002b8: 00b00193 li gp,11 +800002bc: 00002517 auipc a0,0x2 +800002c0: dd450513 addi a0,a0,-556 # 80002090 +800002c4: 00052007 flw ft0,0(a0) +800002c8: 00452087 flw ft1,4(a0) +800002cc: 00852107 flw ft2,8(a0) +800002d0: 00c52683 lw a3,12(a0) +800002d4: a0101553 flt.s a0,ft0,ft1 +800002d8: 001015f3 fsflags a1,zero +800002dc: 01000613 li a2,16 +800002e0: 0ed51e63 bne a0,a3,800003dc +800002e4: 0ec59c63 bne a1,a2,800003dc + +800002e8 : +800002e8: 00c00193 li gp,12 +800002ec: 00002517 auipc a0,0x2 +800002f0: db450513 addi a0,a0,-588 # 800020a0 +800002f4: 00052007 flw ft0,0(a0) +800002f8: 00452087 flw ft1,4(a0) +800002fc: 00852107 flw ft2,8(a0) +80000300: 00c52683 lw a3,12(a0) +80000304: a0101553 flt.s a0,ft0,ft1 +80000308: 001015f3 fsflags a1,zero +8000030c: 01000613 li a2,16 +80000310: 0cd51663 bne a0,a3,800003dc +80000314: 0cc59463 bne a1,a2,800003dc + +80000318 : +80000318: 00d00193 li gp,13 +8000031c: 00002517 auipc a0,0x2 +80000320: d9450513 addi a0,a0,-620 # 800020b0 +80000324: 00052007 flw ft0,0(a0) +80000328: 00452087 flw ft1,4(a0) +8000032c: 00852107 flw ft2,8(a0) +80000330: 00c52683 lw a3,12(a0) +80000334: a0101553 flt.s a0,ft0,ft1 +80000338: 001015f3 fsflags a1,zero +8000033c: 01000613 li a2,16 +80000340: 08d51e63 bne a0,a3,800003dc +80000344: 08c59c63 bne a1,a2,800003dc + +80000348 : +80000348: 00e00193 li gp,14 +8000034c: 00002517 auipc a0,0x2 +80000350: d7450513 addi a0,a0,-652 # 800020c0 +80000354: 00052007 flw ft0,0(a0) +80000358: 00452087 flw ft1,4(a0) +8000035c: 00852107 flw ft2,8(a0) +80000360: 00c52683 lw a3,12(a0) +80000364: a0100553 fle.s a0,ft0,ft1 +80000368: 001015f3 fsflags a1,zero +8000036c: 01000613 li a2,16 +80000370: 06d51663 bne a0,a3,800003dc +80000374: 06c59463 bne a1,a2,800003dc + +80000378 : +80000378: 00f00193 li gp,15 +8000037c: 00002517 auipc a0,0x2 +80000380: d5450513 addi a0,a0,-684 # 800020d0 +80000384: 00052007 flw ft0,0(a0) +80000388: 00452087 flw ft1,4(a0) +8000038c: 00852107 flw ft2,8(a0) +80000390: 00c52683 lw a3,12(a0) +80000394: a0100553 fle.s a0,ft0,ft1 +80000398: 001015f3 fsflags a1,zero +8000039c: 01000613 li a2,16 +800003a0: 02d51e63 bne a0,a3,800003dc +800003a4: 02c59c63 bne a1,a2,800003dc + +800003a8 : +800003a8: 01000193 li gp,16 +800003ac: 00002517 auipc a0,0x2 +800003b0: d3450513 addi a0,a0,-716 # 800020e0 +800003b4: 00052007 flw ft0,0(a0) +800003b8: 00452087 flw ft1,4(a0) +800003bc: 00852107 flw ft2,8(a0) +800003c0: 00c52683 lw a3,12(a0) +800003c4: a0100553 fle.s a0,ft0,ft1 +800003c8: 001015f3 fsflags a1,zero +800003cc: 01000613 li a2,16 +800003d0: 00d51663 bne a0,a3,800003dc +800003d4: 00c59463 bne a1,a2,800003dc +800003d8: 00301c63 bne zero,gp,800003f0 + +800003dc : +800003dc: 0ff0000f fence +800003e0: 00018063 beqz gp,800003e0 +800003e4: 00119193 slli gp,gp,0x1 +800003e8: 0011e193 ori gp,gp,1 +800003ec: 00000073 ecall + +800003f0 : +800003f0: 0ff0000f fence +800003f4: 00100193 li gp,1 +800003f8: 00000073 ecall +800003fc: c0001073 unimp +80000400: 0000 unimp +80000402: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: bfae147b 0xbfae147b +80002004: bfae147b 0xbfae147b +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0001 nop +8000200e: 0000 unimp + +80002010 : +80002010: bfae147b 0xbfae147b +80002014: bfae147b 0xbfae147b +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 0001 nop +8000201e: 0000 unimp + +80002020 : +80002020: bfae147b 0xbfae147b +80002024: bfae147b 0xbfae147b +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp + +80002030 : +80002030: 5c29 li s8,-22 +80002032: 147bbfaf 0x147bbfaf +80002036: bfae fsd fa1,504(sp) +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 0000 unimp + +80002040 : +80002040: 5c29 li s8,-22 +80002042: 147bbfaf 0x147bbfaf +80002046: bfae fsd fa1,504(sp) +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0001 nop +8000204e: 0000 unimp + +80002050 : +80002050: 5c29 li s8,-22 +80002052: 147bbfaf 0x147bbfaf +80002056: bfae fsd fa1,504(sp) +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0001 nop +8000205e: 0000 unimp + +80002060 : +80002060: ffff 0xffff +80002062: 7fff 0x7fff +80002064: 0000 unimp +80002066: 0000 unimp +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 0000 unimp + +80002070 : +80002070: ffff 0xffff +80002072: 7fff 0x7fff +80002074: ffff 0xffff +80002076: 7fff 0x7fff +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: 0000 unimp +8000207e: 0000 unimp + +80002080 : +80002080: 0001 nop +80002082: 7f80 flw fs0,56(a5) +80002084: 0000 unimp +80002086: 0000 unimp +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: 0000 unimp +8000208e: 0000 unimp + +80002090 : +80002090: ffff 0xffff +80002092: 7fff 0x7fff +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 0000 unimp + +800020a0 : +800020a0: ffff 0xffff +800020a2: 7fff 0x7fff +800020a4: ffff 0xffff +800020a6: 7fff 0x7fff +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: 0000 unimp + +800020b0 : +800020b0: 0001 nop +800020b2: 7f80 flw fs0,56(a5) +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 0000 unimp + +800020c0 : +800020c0: ffff 0xffff +800020c2: 7fff 0x7fff +800020c4: 0000 unimp +800020c6: 0000 unimp +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 0000 unimp + +800020d0 : +800020d0: ffff 0xffff +800020d2: 7fff 0x7fff +800020d4: ffff 0xffff +800020d6: 7fff 0x7fff +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 0000 unimp + +800020e0 : +800020e0: 0001 nop +800020e2: 7f80 flw fs0,56(a5) +800020e4: 0000 unimp +800020e6: 0000 unimp +800020e8: 0000 unimp +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 0000 unimp diff --git a/Tests/isa/rv32uf-p-fcvt b/Tests/isa/rv32uf-p-fcvt new file mode 100644 index 0000000..9e0c116 Binary files /dev/null and b/Tests/isa/rv32uf-p-fcvt differ diff --git a/Tests/isa/rv32uf-p-fcvt.dump b/Tests/isa/rv32uf-p-fcvt.dump new file mode 100644 index 0000000..1afed49 --- /dev/null +++ b/Tests/isa/rv32uf-p-fcvt.dump @@ -0,0 +1,159 @@ + +rv32uf-p-fcvt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052683 lw a3,0(a0) +80000118: 00200513 li a0,2 +8000011c: d0057053 fcvt.s.w ft0,a0 +80000120: 00101073 fsflags zero +80000124: e0000553 fmv.x.w a0,ft0 +80000128: 06d51a63 bne a0,a3,8000019c + +8000012c : +8000012c: 00300193 li gp,3 +80000130: 00002517 auipc a0,0x2 +80000134: ed450513 addi a0,a0,-300 # 80002004 +80000138: 00052683 lw a3,0(a0) +8000013c: ffe00513 li a0,-2 +80000140: d0057053 fcvt.s.w ft0,a0 +80000144: 00101073 fsflags zero +80000148: e0000553 fmv.x.w a0,ft0 +8000014c: 04d51863 bne a0,a3,8000019c + +80000150 : +80000150: 00400193 li gp,4 +80000154: 00002517 auipc a0,0x2 +80000158: eb450513 addi a0,a0,-332 # 80002008 +8000015c: 00052683 lw a3,0(a0) +80000160: 00200513 li a0,2 +80000164: d0157053 fcvt.s.wu ft0,a0 +80000168: 00101073 fsflags zero +8000016c: e0000553 fmv.x.w a0,ft0 +80000170: 02d51663 bne a0,a3,8000019c + +80000174 : +80000174: 00500193 li gp,5 +80000178: 00002517 auipc a0,0x2 +8000017c: e9450513 addi a0,a0,-364 # 8000200c +80000180: 00052683 lw a3,0(a0) +80000184: ffe00513 li a0,-2 +80000188: d0157053 fcvt.s.wu ft0,a0 +8000018c: 00101073 fsflags zero +80000190: e0000553 fmv.x.w a0,ft0 +80000194: 00d51463 bne a0,a3,8000019c +80000198: 00301c63 bne zero,gp,800001b0 + +8000019c : +8000019c: 0ff0000f fence +800001a0: 00018063 beqz gp,800001a0 +800001a4: 00119193 slli gp,gp,0x1 +800001a8: 0011e193 ori gp,gp,1 +800001ac: 00000073 ecall + +800001b0 : +800001b0: 0ff0000f fence +800001b4: 00100193 li gp,1 +800001b8: 00000073 ecall +800001bc: c0001073 unimp +800001c0: 0000 unimp +800001c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 4000 lw s0,0(s0) + +80002004 : +80002004: 0000 unimp +80002006: c000 sw s0,0(s0) + +80002008 : +80002008: 0000 unimp +8000200a: 4000 lw s0,0(s0) + +8000200c : +8000200c: 0000 unimp +8000200e: 4f80 lw s0,24(a5) diff --git a/Tests/isa/rv32uf-p-fcvt_w b/Tests/isa/rv32uf-p-fcvt_w new file mode 100644 index 0000000..a3ca0c8 Binary files /dev/null and b/Tests/isa/rv32uf-p-fcvt_w differ diff --git a/Tests/isa/rv32uf-p-fcvt_w.dump b/Tests/isa/rv32uf-p-fcvt_w.dump new file mode 100644 index 0000000..728571c --- /dev/null +++ b/Tests/isa/rv32uf-p-fcvt_w.dump @@ -0,0 +1,604 @@ + +rv32uf-p-fcvt_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052007 flw ft0,0(a0) +80000118: 00452087 flw ft1,4(a0) +8000011c: 00852107 flw ft2,8(a0) +80000120: 00c52683 lw a3,12(a0) +80000124: c0001553 fcvt.w.s a0,ft0,rtz +80000128: 001015f3 fsflags a1,zero +8000012c: 00100613 li a2,1 +80000130: 3cd51463 bne a0,a3,800004f8 +80000134: 3cc59263 bne a1,a2,800004f8 + +80000138 : +80000138: 00300193 li gp,3 +8000013c: 00002517 auipc a0,0x2 +80000140: ed450513 addi a0,a0,-300 # 80002010 +80000144: 00052007 flw ft0,0(a0) +80000148: 00452087 flw ft1,4(a0) +8000014c: 00852107 flw ft2,8(a0) +80000150: 00c52683 lw a3,12(a0) +80000154: c0001553 fcvt.w.s a0,ft0,rtz +80000158: 001015f3 fsflags a1,zero +8000015c: 00000613 li a2,0 +80000160: 38d51c63 bne a0,a3,800004f8 +80000164: 38c59a63 bne a1,a2,800004f8 + +80000168 : +80000168: 00400193 li gp,4 +8000016c: 00002517 auipc a0,0x2 +80000170: eb450513 addi a0,a0,-332 # 80002020 +80000174: 00052007 flw ft0,0(a0) +80000178: 00452087 flw ft1,4(a0) +8000017c: 00852107 flw ft2,8(a0) +80000180: 00c52683 lw a3,12(a0) +80000184: c0001553 fcvt.w.s a0,ft0,rtz +80000188: 001015f3 fsflags a1,zero +8000018c: 00100613 li a2,1 +80000190: 36d51463 bne a0,a3,800004f8 +80000194: 36c59263 bne a1,a2,800004f8 + +80000198 : +80000198: 00500193 li gp,5 +8000019c: 00002517 auipc a0,0x2 +800001a0: e9450513 addi a0,a0,-364 # 80002030 +800001a4: 00052007 flw ft0,0(a0) +800001a8: 00452087 flw ft1,4(a0) +800001ac: 00852107 flw ft2,8(a0) +800001b0: 00c52683 lw a3,12(a0) +800001b4: c0001553 fcvt.w.s a0,ft0,rtz +800001b8: 001015f3 fsflags a1,zero +800001bc: 00100613 li a2,1 +800001c0: 32d51c63 bne a0,a3,800004f8 +800001c4: 32c59a63 bne a1,a2,800004f8 + +800001c8 : +800001c8: 00600193 li gp,6 +800001cc: 00002517 auipc a0,0x2 +800001d0: e7450513 addi a0,a0,-396 # 80002040 +800001d4: 00052007 flw ft0,0(a0) +800001d8: 00452087 flw ft1,4(a0) +800001dc: 00852107 flw ft2,8(a0) +800001e0: 00c52683 lw a3,12(a0) +800001e4: c0001553 fcvt.w.s a0,ft0,rtz +800001e8: 001015f3 fsflags a1,zero +800001ec: 00000613 li a2,0 +800001f0: 30d51463 bne a0,a3,800004f8 +800001f4: 30c59263 bne a1,a2,800004f8 + +800001f8 : +800001f8: 00700193 li gp,7 +800001fc: 00002517 auipc a0,0x2 +80000200: e5450513 addi a0,a0,-428 # 80002050 +80000204: 00052007 flw ft0,0(a0) +80000208: 00452087 flw ft1,4(a0) +8000020c: 00852107 flw ft2,8(a0) +80000210: 00c52683 lw a3,12(a0) +80000214: c0001553 fcvt.w.s a0,ft0,rtz +80000218: 001015f3 fsflags a1,zero +8000021c: 00100613 li a2,1 +80000220: 2cd51c63 bne a0,a3,800004f8 +80000224: 2cc59a63 bne a1,a2,800004f8 + +80000228 : +80000228: 00800193 li gp,8 +8000022c: 00002517 auipc a0,0x2 +80000230: e3450513 addi a0,a0,-460 # 80002060 +80000234: 00052007 flw ft0,0(a0) +80000238: 00452087 flw ft1,4(a0) +8000023c: 00852107 flw ft2,8(a0) +80000240: 00c52683 lw a3,12(a0) +80000244: c0001553 fcvt.w.s a0,ft0,rtz +80000248: 001015f3 fsflags a1,zero +8000024c: 01000613 li a2,16 +80000250: 2ad51463 bne a0,a3,800004f8 +80000254: 2ac59263 bne a1,a2,800004f8 + +80000258 : +80000258: 00900193 li gp,9 +8000025c: 00002517 auipc a0,0x2 +80000260: e1450513 addi a0,a0,-492 # 80002070 +80000264: 00052007 flw ft0,0(a0) +80000268: 00452087 flw ft1,4(a0) +8000026c: 00852107 flw ft2,8(a0) +80000270: 00c52683 lw a3,12(a0) +80000274: c0001553 fcvt.w.s a0,ft0,rtz +80000278: 001015f3 fsflags a1,zero +8000027c: 01000613 li a2,16 +80000280: 26d51c63 bne a0,a3,800004f8 +80000284: 26c59a63 bne a1,a2,800004f8 + +80000288 : +80000288: 00c00193 li gp,12 +8000028c: 00002517 auipc a0,0x2 +80000290: df450513 addi a0,a0,-524 # 80002080 +80000294: 00052007 flw ft0,0(a0) +80000298: 00452087 flw ft1,4(a0) +8000029c: 00852107 flw ft2,8(a0) +800002a0: 00c52683 lw a3,12(a0) +800002a4: c0101553 fcvt.wu.s a0,ft0,rtz +800002a8: 001015f3 fsflags a1,zero +800002ac: 01000613 li a2,16 +800002b0: 24d51463 bne a0,a3,800004f8 +800002b4: 24c59263 bne a1,a2,800004f8 + +800002b8 : +800002b8: 00d00193 li gp,13 +800002bc: 00002517 auipc a0,0x2 +800002c0: dd450513 addi a0,a0,-556 # 80002090 +800002c4: 00052007 flw ft0,0(a0) +800002c8: 00452087 flw ft1,4(a0) +800002cc: 00852107 flw ft2,8(a0) +800002d0: 00c52683 lw a3,12(a0) +800002d4: c0101553 fcvt.wu.s a0,ft0,rtz +800002d8: 001015f3 fsflags a1,zero +800002dc: 01000613 li a2,16 +800002e0: 20d51c63 bne a0,a3,800004f8 +800002e4: 20c59a63 bne a1,a2,800004f8 + +800002e8 : +800002e8: 00e00193 li gp,14 +800002ec: 00002517 auipc a0,0x2 +800002f0: db450513 addi a0,a0,-588 # 800020a0 +800002f4: 00052007 flw ft0,0(a0) +800002f8: 00452087 flw ft1,4(a0) +800002fc: 00852107 flw ft2,8(a0) +80000300: 00c52683 lw a3,12(a0) +80000304: c0101553 fcvt.wu.s a0,ft0,rtz +80000308: 001015f3 fsflags a1,zero +8000030c: 00100613 li a2,1 +80000310: 1ed51463 bne a0,a3,800004f8 +80000314: 1ec59263 bne a1,a2,800004f8 + +80000318 : +80000318: 00f00193 li gp,15 +8000031c: 00002517 auipc a0,0x2 +80000320: d9450513 addi a0,a0,-620 # 800020b0 +80000324: 00052007 flw ft0,0(a0) +80000328: 00452087 flw ft1,4(a0) +8000032c: 00852107 flw ft2,8(a0) +80000330: 00c52683 lw a3,12(a0) +80000334: c0101553 fcvt.wu.s a0,ft0,rtz +80000338: 001015f3 fsflags a1,zero +8000033c: 00100613 li a2,1 +80000340: 1ad51c63 bne a0,a3,800004f8 +80000344: 1ac59a63 bne a1,a2,800004f8 + +80000348 : +80000348: 01000193 li gp,16 +8000034c: 00002517 auipc a0,0x2 +80000350: d7450513 addi a0,a0,-652 # 800020c0 +80000354: 00052007 flw ft0,0(a0) +80000358: 00452087 flw ft1,4(a0) +8000035c: 00852107 flw ft2,8(a0) +80000360: 00c52683 lw a3,12(a0) +80000364: c0101553 fcvt.wu.s a0,ft0,rtz +80000368: 001015f3 fsflags a1,zero +8000036c: 00000613 li a2,0 +80000370: 18d51463 bne a0,a3,800004f8 +80000374: 18c59263 bne a1,a2,800004f8 + +80000378 : +80000378: 01100193 li gp,17 +8000037c: 00002517 auipc a0,0x2 +80000380: d5450513 addi a0,a0,-684 # 800020d0 +80000384: 00052007 flw ft0,0(a0) +80000388: 00452087 flw ft1,4(a0) +8000038c: 00852107 flw ft2,8(a0) +80000390: 00c52683 lw a3,12(a0) +80000394: c0101553 fcvt.wu.s a0,ft0,rtz +80000398: 001015f3 fsflags a1,zero +8000039c: 00100613 li a2,1 +800003a0: 14d51c63 bne a0,a3,800004f8 +800003a4: 14c59a63 bne a1,a2,800004f8 + +800003a8 : +800003a8: 01200193 li gp,18 +800003ac: 00002517 auipc a0,0x2 +800003b0: d3450513 addi a0,a0,-716 # 800020e0 +800003b4: 00052007 flw ft0,0(a0) +800003b8: 00452087 flw ft1,4(a0) +800003bc: 00852107 flw ft2,8(a0) +800003c0: 00c52683 lw a3,12(a0) +800003c4: c0101553 fcvt.wu.s a0,ft0,rtz +800003c8: 001015f3 fsflags a1,zero +800003cc: 01000613 li a2,16 +800003d0: 12d51463 bne a0,a3,800004f8 +800003d4: 12c59263 bne a1,a2,800004f8 + +800003d8 : +800003d8: 01300193 li gp,19 +800003dc: 00002517 auipc a0,0x2 +800003e0: d1450513 addi a0,a0,-748 # 800020f0 +800003e4: 00052007 flw ft0,0(a0) +800003e8: 00452087 flw ft1,4(a0) +800003ec: 00852107 flw ft2,8(a0) +800003f0: 00c52683 lw a3,12(a0) +800003f4: c0101553 fcvt.wu.s a0,ft0,rtz +800003f8: 001015f3 fsflags a1,zero +800003fc: 00000613 li a2,0 +80000400: 0ed51c63 bne a0,a3,800004f8 +80000404: 0ec59a63 bne a1,a2,800004f8 + +80000408 : +80000408: 00002097 auipc ra,0x2 +8000040c: cf808093 addi ra,ra,-776 # 80002100 +80000410: 0000a087 flw ft1,0(ra) +80000414: c000f0d3 fcvt.w.s ra,ft1 +80000418: 80000eb7 lui t4,0x80000 +8000041c: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdecf> +80000420: 02a00193 li gp,42 +80000424: 0dd09a63 bne ra,t4,800004f8 + +80000428 : +80000428: 00002097 auipc ra,0x2 +8000042c: cd808093 addi ra,ra,-808 # 80002100 +80000430: 0080a087 flw ft1,8(ra) +80000434: c000f0d3 fcvt.w.s ra,ft1 +80000438: 80000eb7 lui t4,0x80000 +8000043c: 02c00193 li gp,44 +80000440: 0bd09c63 bne ra,t4,800004f8 + +80000444 : +80000444: 00002097 auipc ra,0x2 +80000448: cbc08093 addi ra,ra,-836 # 80002100 +8000044c: 0040a087 flw ft1,4(ra) +80000450: c000f0d3 fcvt.w.s ra,ft1 +80000454: 80000eb7 lui t4,0x80000 +80000458: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdecf> +8000045c: 03400193 li gp,52 +80000460: 09d09c63 bne ra,t4,800004f8 + +80000464 : +80000464: 00002097 auipc ra,0x2 +80000468: c9c08093 addi ra,ra,-868 # 80002100 +8000046c: 00c0a087 flw ft1,12(ra) +80000470: c000f0d3 fcvt.w.s ra,ft1 +80000474: 80000eb7 lui t4,0x80000 +80000478: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdecf> +8000047c: 03600193 li gp,54 +80000480: 07d09c63 bne ra,t4,800004f8 + +80000484 : +80000484: 00002097 auipc ra,0x2 +80000488: c7c08093 addi ra,ra,-900 # 80002100 +8000048c: 0000a087 flw ft1,0(ra) +80000490: c010f0d3 fcvt.wu.s ra,ft1 +80000494: fff00e93 li t4,-1 +80000498: 03e00193 li gp,62 +8000049c: 05d09e63 bne ra,t4,800004f8 + +800004a0 : +800004a0: 00002097 auipc ra,0x2 +800004a4: c6008093 addi ra,ra,-928 # 80002100 +800004a8: 0040a087 flw ft1,4(ra) +800004ac: c010f0d3 fcvt.wu.s ra,ft1 +800004b0: fff00e93 li t4,-1 +800004b4: 03f00193 li gp,63 +800004b8: 05d09063 bne ra,t4,800004f8 + +800004bc : +800004bc: 00002097 auipc ra,0x2 +800004c0: c4408093 addi ra,ra,-956 # 80002100 +800004c4: 0080a087 flw ft1,8(ra) +800004c8: c010f0d3 fcvt.wu.s ra,ft1 +800004cc: 00000e93 li t4,0 +800004d0: 04000193 li gp,64 +800004d4: 03d09263 bne ra,t4,800004f8 + +800004d8 : +800004d8: 00002097 auipc ra,0x2 +800004dc: c2808093 addi ra,ra,-984 # 80002100 +800004e0: 00c0a087 flw ft1,12(ra) +800004e4: c010f0d3 fcvt.wu.s ra,ft1 +800004e8: fff00e93 li t4,-1 +800004ec: 04100193 li gp,65 +800004f0: 01d09463 bne ra,t4,800004f8 +800004f4: 00301c63 bne zero,gp,8000050c + +800004f8 : +800004f8: 0ff0000f fence +800004fc: 00018063 beqz gp,800004fc +80000500: 00119193 slli gp,gp,0x1 +80000504: 0011e193 ori gp,gp,1 +80000508: 00000073 ecall + +8000050c : +8000050c: 0ff0000f fence +80000510: 00100193 li gp,1 +80000514: 00000073 ecall +80000518: c0001073 unimp +8000051c: 0000 unimp +8000051e: 0000 unimp +80000520: 0000 unimp +80000522: 0000 unimp +80000524: 0000 unimp +80000526: 0000 unimp +80000528: 0000 unimp +8000052a: 0000 unimp +8000052c: 0000 unimp +8000052e: 0000 unimp +80000530: 0000 unimp +80000532: 0000 unimp +80000534: 0000 unimp +80000536: 0000 unimp +80000538: 0000 unimp +8000053a: 0000 unimp +8000053c: 0000 unimp +8000053e: 0000 unimp +80000540: 0000 unimp +80000542: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: cccd beqz s1,800020ba +80002002: bf8c fsd fa1,56(a5) +80002004: 0000 unimp +80002006: 0000 unimp +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: ffff 0xffff +8000200e: ffff 0xffff + +80002010 : +80002010: 0000 unimp +80002012: bf80 fsd fs0,56(a5) +80002014: 0000 unimp +80002016: 0000 unimp +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: ffff 0xffff +8000201e: ffff 0xffff + +80002020 : +80002020: 6666 flw fa2,88(sp) +80002022: bf66 fsd fs9,440(sp) +80002024: 0000 unimp +80002026: 0000 unimp +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp + +80002030 : +80002030: 6666 flw fa2,88(sp) +80002032: 3f66 fld ft10,120(sp) +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 0000 unimp + +80002040 : +80002040: 0000 unimp +80002042: 3f80 fld fs0,56(a5) +80002044: 0000 unimp +80002046: 0000 unimp +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0001 nop +8000204e: 0000 unimp + +80002050 : +80002050: cccd beqz s1,8000210a +80002052: 3f8c fld fa1,56(a5) +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0001 nop +8000205e: 0000 unimp + +80002060 : +80002060: d05e sw s7,32(sp) +80002062: cf32 sw a2,156(sp) +80002064: 0000 unimp +80002066: 0000 unimp +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 8000 0x8000 + +80002070 : +80002070: d05e sw s7,32(sp) +80002072: 4f32 lw t5,12(sp) +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: ffff 0xffff +8000207e: 7fff 0x7fff + +80002080 : +80002080: 0000 unimp +80002082: c040 sw s0,4(s0) +80002084: 0000 unimp +80002086: 0000 unimp +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: 0000 unimp +8000208e: 0000 unimp + +80002090 : +80002090: 0000 unimp +80002092: bf80 fsd fs0,56(a5) +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 0000 unimp + +800020a0 : +800020a0: 6666 flw fa2,88(sp) +800020a2: bf66 fsd fs9,440(sp) +800020a4: 0000 unimp +800020a6: 0000 unimp +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: 0000 unimp + +800020b0 : +800020b0: 6666 flw fa2,88(sp) +800020b2: 3f66 fld ft10,120(sp) +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 0000 unimp + +800020c0 : +800020c0: 0000 unimp +800020c2: 3f80 fld fs0,56(a5) +800020c4: 0000 unimp +800020c6: 0000 unimp +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0001 nop +800020ce: 0000 unimp + +800020d0 : +800020d0: cccd beqz s1,8000218a <_end+0x5a> +800020d2: 3f8c fld fa1,56(a5) +800020d4: 0000 unimp +800020d6: 0000 unimp +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0001 nop +800020de: 0000 unimp + +800020e0 : +800020e0: d05e sw s7,32(sp) +800020e2: cf32 sw a2,156(sp) +800020e4: 0000 unimp +800020e6: 0000 unimp +800020e8: 0000 unimp +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 0000 unimp + +800020f0 : +800020f0: d05e sw s7,32(sp) +800020f2: 4f32 lw t5,12(sp) +800020f4: 0000 unimp +800020f6: 0000 unimp +800020f8: 0000 unimp +800020fa: 0000 unimp +800020fc: 5e00 lw s0,56(a2) +800020fe: b2d0 fsd fa2,160(a3) + +80002100 : +80002100: ffff 0xffff +80002102: ffff 0xffff +80002104: ffff 0xffff +80002106: 7fff 0x7fff +80002108: 0000 unimp +8000210a: ff80 fsw fs0,56(a5) +8000210c: 0000 unimp +8000210e: 7f80 flw fs0,56(a5) + +80002110 : +80002110: ffff 0xffff +80002112: ffff 0xffff +80002114: ffff 0xffff +80002116: ffff 0xffff +80002118: ffff 0xffff +8000211a: ffff 0xffff +8000211c: ffff 0xffff +8000211e: 7fff 0x7fff +80002120: 0000 unimp +80002122: 0000 unimp +80002124: 0000 unimp +80002126: fff0 fsw fa2,124(a5) +80002128: 0000 unimp +8000212a: 0000 unimp +8000212c: 0000 unimp +8000212e: 7ff0 flw fa2,124(a5) diff --git a/Tests/isa/rv32uf-p-fdiv b/Tests/isa/rv32uf-p-fdiv new file mode 100644 index 0000000..5063ad1 Binary files /dev/null and b/Tests/isa/rv32uf-p-fdiv differ diff --git a/Tests/isa/rv32uf-p-fdiv.dump b/Tests/isa/rv32uf-p-fdiv.dump new file mode 100644 index 0000000..1f44e60 --- /dev/null +++ b/Tests/isa/rv32uf-p-fdiv.dump @@ -0,0 +1,294 @@ + +rv32uf-p-fdiv: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052007 flw ft0,0(a0) +80000118: 00452087 flw ft1,4(a0) +8000011c: 00852107 flw ft2,8(a0) +80000120: 00c52683 lw a3,12(a0) +80000124: 181071d3 fdiv.s ft3,ft0,ft1 +80000128: e0018553 fmv.x.w a0,ft3 +8000012c: 001015f3 fsflags a1,zero +80000130: 00100613 li a2,1 +80000134: 14d51263 bne a0,a3,80000278 +80000138: 14c59063 bne a1,a2,80000278 + +8000013c : +8000013c: 00300193 li gp,3 +80000140: 00002517 auipc a0,0x2 +80000144: ed050513 addi a0,a0,-304 # 80002010 +80000148: 00052007 flw ft0,0(a0) +8000014c: 00452087 flw ft1,4(a0) +80000150: 00852107 flw ft2,8(a0) +80000154: 00c52683 lw a3,12(a0) +80000158: 181071d3 fdiv.s ft3,ft0,ft1 +8000015c: e0018553 fmv.x.w a0,ft3 +80000160: 001015f3 fsflags a1,zero +80000164: 00100613 li a2,1 +80000168: 10d51863 bne a0,a3,80000278 +8000016c: 10c59663 bne a1,a2,80000278 + +80000170 : +80000170: 00400193 li gp,4 +80000174: 00002517 auipc a0,0x2 +80000178: eac50513 addi a0,a0,-340 # 80002020 +8000017c: 00052007 flw ft0,0(a0) +80000180: 00452087 flw ft1,4(a0) +80000184: 00852107 flw ft2,8(a0) +80000188: 00c52683 lw a3,12(a0) +8000018c: 181071d3 fdiv.s ft3,ft0,ft1 +80000190: e0018553 fmv.x.w a0,ft3 +80000194: 001015f3 fsflags a1,zero +80000198: 00000613 li a2,0 +8000019c: 0cd51e63 bne a0,a3,80000278 +800001a0: 0cc59c63 bne a1,a2,80000278 + +800001a4 : +800001a4: 00500193 li gp,5 +800001a8: 00002517 auipc a0,0x2 +800001ac: e8850513 addi a0,a0,-376 # 80002030 +800001b0: 00052007 flw ft0,0(a0) +800001b4: 00452087 flw ft1,4(a0) +800001b8: 00852107 flw ft2,8(a0) +800001bc: 00c52683 lw a3,12(a0) +800001c0: 580071d3 fsqrt.s ft3,ft0 +800001c4: e0018553 fmv.x.w a0,ft3 +800001c8: 001015f3 fsflags a1,zero +800001cc: 00100613 li a2,1 +800001d0: 0ad51463 bne a0,a3,80000278 +800001d4: 0ac59263 bne a1,a2,80000278 + +800001d8 : +800001d8: 00600193 li gp,6 +800001dc: 00002517 auipc a0,0x2 +800001e0: e6450513 addi a0,a0,-412 # 80002040 +800001e4: 00052007 flw ft0,0(a0) +800001e8: 00452087 flw ft1,4(a0) +800001ec: 00852107 flw ft2,8(a0) +800001f0: 00c52683 lw a3,12(a0) +800001f4: 580071d3 fsqrt.s ft3,ft0 +800001f8: e0018553 fmv.x.w a0,ft3 +800001fc: 001015f3 fsflags a1,zero +80000200: 00000613 li a2,0 +80000204: 06d51a63 bne a0,a3,80000278 +80000208: 06c59863 bne a1,a2,80000278 + +8000020c : +8000020c: 00700193 li gp,7 +80000210: 00002517 auipc a0,0x2 +80000214: e4050513 addi a0,a0,-448 # 80002050 +80000218: 00052007 flw ft0,0(a0) +8000021c: 00452087 flw ft1,4(a0) +80000220: 00852107 flw ft2,8(a0) +80000224: 00c52683 lw a3,12(a0) +80000228: 580071d3 fsqrt.s ft3,ft0 +8000022c: e0018553 fmv.x.w a0,ft3 +80000230: 001015f3 fsflags a1,zero +80000234: 01000613 li a2,16 +80000238: 04d51063 bne a0,a3,80000278 +8000023c: 02c59e63 bne a1,a2,80000278 + +80000240 : +80000240: 00800193 li gp,8 +80000244: 00002517 auipc a0,0x2 +80000248: e2050513 addi a0,a0,-480 # 80002064 +8000024c: 00052007 flw ft0,0(a0) +80000250: 00452087 flw ft1,4(a0) +80000254: 00852107 flw ft2,8(a0) +80000258: 00c52683 lw a3,12(a0) +8000025c: 580071d3 fsqrt.s ft3,ft0 +80000260: e0018553 fmv.x.w a0,ft3 +80000264: 001015f3 fsflags a1,zero +80000268: 00100613 li a2,1 +8000026c: 00d51663 bne a0,a3,80000278 +80000270: 00c59463 bne a1,a2,80000278 +80000274: 00301c63 bne zero,gp,8000028c + +80000278 : +80000278: 0ff0000f fence +8000027c: 00018063 beqz gp,8000027c +80000280: 00119193 slli gp,gp,0x1 +80000284: 0011e193 ori gp,gp,1 +80000288: 00000073 ecall + +8000028c : +8000028c: 0ff0000f fence +80000290: 00100193 li gp,1 +80000294: 00000073 ecall +80000298: c0001073 unimp +8000029c: 0000 unimp +8000029e: 0000 unimp +800002a0: 0000 unimp +800002a2: 0000 unimp +800002a4: 0000 unimp +800002a6: 0000 unimp +800002a8: 0000 unimp +800002aa: 0000 unimp +800002ac: 0000 unimp +800002ae: 0000 unimp +800002b0: 0000 unimp +800002b2: 0000 unimp +800002b4: 0000 unimp +800002b6: 0000 unimp +800002b8: 0000 unimp +800002ba: 0000 unimp +800002bc: 0000 unimp +800002be: 0000 unimp +800002c0: 0000 unimp +800002c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 40490fdb 0x40490fdb +80002004: f854 fsw fa3,52(s0) +80002006: 402d c.li zero,11 +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: eee0 fsw fs0,92(a3) +8000200e: sltiu t6,zero,1024 + +80002010 : +80002010: 4000 lw s0,0(s0) +80002012: c49a sw t1,72(sp) +80002014: 449a6333 0x449a6333 +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: c5a2 sw s0,200(sp) +8000201e: bf7f 0xbf7f + +80002020 : +80002020: 40490fdb 0x40490fdb +80002024: 0000 unimp +80002026: 3f80 fld fs0,56(a5) +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 40490fdb 0x40490fdb + +80002030 : +80002030: 40490fdb 0x40490fdb +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: dfc5 beqz a5,80001ff4 +8000203e: 3fe2 fld ft11,56(sp) + +80002040 : +80002040: 4000 lw s0,0(s0) +80002042: 461c lw a5,8(a2) +80002044: 0000 unimp +80002046: 0000 unimp +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0000 unimp +8000204e: 42c8 lw a0,4(a3) + +80002050 : +80002050: 0000 unimp +80002052: bf80 fsd fs0,56(a5) +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0000 unimp +8000205e: 7fc0 flw fs0,60(a5) +80002060: 0000 unimp +80002062: 0000 unimp + +80002064 : +80002064: 0000 unimp +80002066: 0000432b 0x432b +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 0000 unimp +80002070: 3a26 fld fs4,104(sp) +80002072: 4151 li sp,20 +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: 0000 unimp +8000207e: 0000 unimp diff --git a/Tests/isa/rv32uf-p-fmadd b/Tests/isa/rv32uf-p-fmadd new file mode 100644 index 0000000..a2af0a7 Binary files /dev/null and b/Tests/isa/rv32uf-p-fmadd differ diff --git a/Tests/isa/rv32uf-p-fmadd.dump b/Tests/isa/rv32uf-p-fmadd.dump new file mode 100644 index 0000000..fd13da7 --- /dev/null +++ b/Tests/isa/rv32uf-p-fmadd.dump @@ -0,0 +1,411 @@ + +rv32uf-p-fmadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052007 flw ft0,0(a0) +80000118: 00452087 flw ft1,4(a0) +8000011c: 00852107 flw ft2,8(a0) +80000120: 00c52683 lw a3,12(a0) +80000124: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +80000128: e0018553 fmv.x.w a0,ft3 +8000012c: 001015f3 fsflags a1,zero +80000130: 00000613 li a2,0 +80000134: 24d51463 bne a0,a3,8000037c +80000138: 24c59263 bne a1,a2,8000037c + +8000013c : +8000013c: 00300193 li gp,3 +80000140: 00002517 auipc a0,0x2 +80000144: ed050513 addi a0,a0,-304 # 80002010 +80000148: 00052007 flw ft0,0(a0) +8000014c: 00452087 flw ft1,4(a0) +80000150: 00852107 flw ft2,8(a0) +80000154: 00c52683 lw a3,12(a0) +80000158: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +8000015c: e0018553 fmv.x.w a0,ft3 +80000160: 001015f3 fsflags a1,zero +80000164: 00100613 li a2,1 +80000168: 20d51a63 bne a0,a3,8000037c +8000016c: 20c59863 bne a1,a2,8000037c + +80000170 : +80000170: 00400193 li gp,4 +80000174: 00002517 auipc a0,0x2 +80000178: eac50513 addi a0,a0,-340 # 80002020 +8000017c: 00052007 flw ft0,0(a0) +80000180: 00452087 flw ft1,4(a0) +80000184: 00852107 flw ft2,8(a0) +80000188: 00c52683 lw a3,12(a0) +8000018c: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +80000190: e0018553 fmv.x.w a0,ft3 +80000194: 001015f3 fsflags a1,zero +80000198: 00000613 li a2,0 +8000019c: 1ed51063 bne a0,a3,8000037c +800001a0: 1cc59e63 bne a1,a2,8000037c + +800001a4 : +800001a4: 00500193 li gp,5 +800001a8: 00002517 auipc a0,0x2 +800001ac: e8850513 addi a0,a0,-376 # 80002030 +800001b0: 00052007 flw ft0,0(a0) +800001b4: 00452087 flw ft1,4(a0) +800001b8: 00852107 flw ft2,8(a0) +800001bc: 00c52683 lw a3,12(a0) +800001c0: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +800001c4: e0018553 fmv.x.w a0,ft3 +800001c8: 001015f3 fsflags a1,zero +800001cc: 00000613 li a2,0 +800001d0: 1ad51663 bne a0,a3,8000037c +800001d4: 1ac59463 bne a1,a2,8000037c + +800001d8 : +800001d8: 00600193 li gp,6 +800001dc: 00002517 auipc a0,0x2 +800001e0: e6450513 addi a0,a0,-412 # 80002040 +800001e4: 00052007 flw ft0,0(a0) +800001e8: 00452087 flw ft1,4(a0) +800001ec: 00852107 flw ft2,8(a0) +800001f0: 00c52683 lw a3,12(a0) +800001f4: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +800001f8: e0018553 fmv.x.w a0,ft3 +800001fc: 001015f3 fsflags a1,zero +80000200: 00100613 li a2,1 +80000204: 16d51c63 bne a0,a3,8000037c +80000208: 16c59a63 bne a1,a2,8000037c + +8000020c : +8000020c: 00700193 li gp,7 +80000210: 00002517 auipc a0,0x2 +80000214: e4050513 addi a0,a0,-448 # 80002050 +80000218: 00052007 flw ft0,0(a0) +8000021c: 00452087 flw ft1,4(a0) +80000220: 00852107 flw ft2,8(a0) +80000224: 00c52683 lw a3,12(a0) +80000228: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +8000022c: e0018553 fmv.x.w a0,ft3 +80000230: 001015f3 fsflags a1,zero +80000234: 00000613 li a2,0 +80000238: 14d51263 bne a0,a3,8000037c +8000023c: 14c59063 bne a1,a2,8000037c + +80000240 : +80000240: 00800193 li gp,8 +80000244: 00002517 auipc a0,0x2 +80000248: e1c50513 addi a0,a0,-484 # 80002060 +8000024c: 00052007 flw ft0,0(a0) +80000250: 00452087 flw ft1,4(a0) +80000254: 00852107 flw ft2,8(a0) +80000258: 00c52683 lw a3,12(a0) +8000025c: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +80000260: e0018553 fmv.x.w a0,ft3 +80000264: 001015f3 fsflags a1,zero +80000268: 00000613 li a2,0 +8000026c: 10d51863 bne a0,a3,8000037c +80000270: 10c59663 bne a1,a2,8000037c + +80000274 : +80000274: 00900193 li gp,9 +80000278: 00002517 auipc a0,0x2 +8000027c: df850513 addi a0,a0,-520 # 80002070 +80000280: 00052007 flw ft0,0(a0) +80000284: 00452087 flw ft1,4(a0) +80000288: 00852107 flw ft2,8(a0) +8000028c: 00c52683 lw a3,12(a0) +80000290: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +80000294: e0018553 fmv.x.w a0,ft3 +80000298: 001015f3 fsflags a1,zero +8000029c: 00100613 li a2,1 +800002a0: 0cd51e63 bne a0,a3,8000037c +800002a4: 0cc59c63 bne a1,a2,8000037c + +800002a8 : +800002a8: 00a00193 li gp,10 +800002ac: 00002517 auipc a0,0x2 +800002b0: dd450513 addi a0,a0,-556 # 80002080 +800002b4: 00052007 flw ft0,0(a0) +800002b8: 00452087 flw ft1,4(a0) +800002bc: 00852107 flw ft2,8(a0) +800002c0: 00c52683 lw a3,12(a0) +800002c4: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +800002c8: e0018553 fmv.x.w a0,ft3 +800002cc: 001015f3 fsflags a1,zero +800002d0: 00000613 li a2,0 +800002d4: 0ad51463 bne a0,a3,8000037c +800002d8: 0ac59263 bne a1,a2,8000037c + +800002dc : +800002dc: 00b00193 li gp,11 +800002e0: 00002517 auipc a0,0x2 +800002e4: db050513 addi a0,a0,-592 # 80002090 +800002e8: 00052007 flw ft0,0(a0) +800002ec: 00452087 flw ft1,4(a0) +800002f0: 00852107 flw ft2,8(a0) +800002f4: 00c52683 lw a3,12(a0) +800002f8: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +800002fc: e0018553 fmv.x.w a0,ft3 +80000300: 001015f3 fsflags a1,zero +80000304: 00000613 li a2,0 +80000308: 06d51a63 bne a0,a3,8000037c +8000030c: 06c59863 bne a1,a2,8000037c + +80000310 : +80000310: 00c00193 li gp,12 +80000314: 00002517 auipc a0,0x2 +80000318: d8c50513 addi a0,a0,-628 # 800020a0 +8000031c: 00052007 flw ft0,0(a0) +80000320: 00452087 flw ft1,4(a0) +80000324: 00852107 flw ft2,8(a0) +80000328: 00c52683 lw a3,12(a0) +8000032c: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +80000330: e0018553 fmv.x.w a0,ft3 +80000334: 001015f3 fsflags a1,zero +80000338: 00100613 li a2,1 +8000033c: 04d51063 bne a0,a3,8000037c +80000340: 02c59e63 bne a1,a2,8000037c + +80000344 : +80000344: 00d00193 li gp,13 +80000348: 00002517 auipc a0,0x2 +8000034c: d6850513 addi a0,a0,-664 # 800020b0 +80000350: 00052007 flw ft0,0(a0) +80000354: 00452087 flw ft1,4(a0) +80000358: 00852107 flw ft2,8(a0) +8000035c: 00c52683 lw a3,12(a0) +80000360: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +80000364: e0018553 fmv.x.w a0,ft3 +80000368: 001015f3 fsflags a1,zero +8000036c: 00000613 li a2,0 +80000370: 00d51663 bne a0,a3,8000037c +80000374: 00c59463 bne a1,a2,8000037c +80000378: 00301c63 bne zero,gp,80000390 + +8000037c : +8000037c: 0ff0000f fence +80000380: 00018063 beqz gp,80000380 +80000384: 00119193 slli gp,gp,0x1 +80000388: 0011e193 ori gp,gp,1 +8000038c: 00000073 ecall + +80000390 : +80000390: 0ff0000f fence +80000394: 00100193 li gp,1 +80000398: 00000073 ecall +8000039c: c0001073 unimp +800003a0: 0000 unimp +800003a2: 0000 unimp +800003a4: 0000 unimp +800003a6: 0000 unimp +800003a8: 0000 unimp +800003aa: 0000 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 3f80 fld fs0,56(a5) +80002004: 0000 unimp +80002006: 4020 lw s0,64(s0) +80002008: 0000 unimp +8000200a: 3f80 fld fs0,56(a5) +8000200c: 0000 unimp +8000200e: 4060 lw s0,68(s0) + +80002010 : +80002010: 0000 unimp +80002012: bf80 fsd fs0,56(a5) +80002014: c49a6333 0xc49a6333 +80002018: cccd beqz s1,800020d2 <_end+0x12> +8000201a: 3f8c fld fa1,56(a5) +8000201c: 8666 mv a2,s9 +8000201e: 449a lw s1,132(sp) + +80002020 : +80002020: 0000 unimp +80002022: 4000 lw s0,0(s0) +80002024: 0000 unimp +80002026: c0a0 sw s0,64(s1) +80002028: 0000 unimp +8000202a: c000 sw s0,0(s0) +8000202c: 0000 unimp +8000202e: c140 sw s0,4(a0) + +80002030 : +80002030: 0000 unimp +80002032: 3f80 fld fs0,56(a5) +80002034: 0000 unimp +80002036: 4020 lw s0,64(s0) +80002038: 0000 unimp +8000203a: 3f80 fld fs0,56(a5) +8000203c: 0000 unimp +8000203e: c060 sw s0,68(s0) + +80002040 : +80002040: 0000 unimp +80002042: bf80 fsd fs0,56(a5) +80002044: c49a6333 0xc49a6333 +80002048: cccd beqz s1,80002102 <_end+0x42> +8000204a: 3f8c fld fa1,56(a5) +8000204c: 8666 mv a2,s9 +8000204e: c49a sw t1,72(sp) + +80002050 : +80002050: 0000 unimp +80002052: 4000 lw s0,0(s0) +80002054: 0000 unimp +80002056: c0a0 sw s0,64(s1) +80002058: 0000 unimp +8000205a: c000 sw s0,0(s0) +8000205c: 0000 unimp +8000205e: 4140 lw s0,4(a0) + +80002060 : +80002060: 0000 unimp +80002062: 3f80 fld fs0,56(a5) +80002064: 0000 unimp +80002066: 4020 lw s0,64(s0) +80002068: 0000 unimp +8000206a: 3f80 fld fs0,56(a5) +8000206c: 0000 unimp +8000206e: 3fc0 fld fs0,184(a5) + +80002070 : +80002070: 0000 unimp +80002072: bf80 fsd fs0,56(a5) +80002074: c49a6333 0xc49a6333 +80002078: cccd beqz s1,80002132 <_end+0x72> +8000207a: 3f8c fld fa1,56(a5) +8000207c: 4000 lw s0,0(s0) +8000207e: 449a lw s1,132(sp) + +80002080 : +80002080: 0000 unimp +80002082: 4000 lw s0,0(s0) +80002084: 0000 unimp +80002086: c0a0 sw s0,64(s1) +80002088: 0000 unimp +8000208a: c000 sw s0,0(s0) +8000208c: 0000 unimp +8000208e: c100 sw s0,0(a0) + +80002090 : +80002090: 0000 unimp +80002092: 3f80 fld fs0,56(a5) +80002094: 0000 unimp +80002096: 4020 lw s0,64(s0) +80002098: 0000 unimp +8000209a: 3f80 fld fs0,56(a5) +8000209c: 0000 unimp +8000209e: bfc0 fsd fs0,184(a5) + +800020a0 : +800020a0: 0000 unimp +800020a2: bf80 fsd fs0,56(a5) +800020a4: c49a6333 0xc49a6333 +800020a8: cccd beqz s1,80002162 <_end+0xa2> +800020aa: 3f8c fld fa1,56(a5) +800020ac: 4000 lw s0,0(s0) +800020ae: c49a sw t1,72(sp) + +800020b0 : +800020b0: 0000 unimp +800020b2: 4000 lw s0,0(s0) +800020b4: 0000 unimp +800020b6: c0a0 sw s0,64(s1) +800020b8: 0000 unimp +800020ba: c000 sw s0,0(s0) +800020bc: 0000 unimp +800020be: 4100 lw s0,0(a0) diff --git a/Tests/isa/rv32uf-p-fmin b/Tests/isa/rv32uf-p-fmin new file mode 100644 index 0000000..2072a61 Binary files /dev/null and b/Tests/isa/rv32uf-p-fmin differ diff --git a/Tests/isa/rv32uf-p-fmin.dump b/Tests/isa/rv32uf-p-fmin.dump new file mode 100644 index 0000000..88a685c --- /dev/null +++ b/Tests/isa/rv32uf-p-fmin.dump @@ -0,0 +1,553 @@ + +rv32uf-p-fmin: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00200193 li gp,2 +8000010c: 00002517 auipc a0,0x2 +80000110: ef450513 addi a0,a0,-268 # 80002000 +80000114: 00052007 flw ft0,0(a0) +80000118: 00452087 flw ft1,4(a0) +8000011c: 00852107 flw ft2,8(a0) +80000120: 00c52683 lw a3,12(a0) +80000124: 281001d3 fmin.s ft3,ft0,ft1 +80000128: e0018553 fmv.x.w a0,ft3 +8000012c: 001015f3 fsflags a1,zero +80000130: 00000613 li a2,0 +80000134: 38d51063 bne a0,a3,800004b4 +80000138: 36c59e63 bne a1,a2,800004b4 + +8000013c : +8000013c: 00300193 li gp,3 +80000140: 00002517 auipc a0,0x2 +80000144: ed050513 addi a0,a0,-304 # 80002010 +80000148: 00052007 flw ft0,0(a0) +8000014c: 00452087 flw ft1,4(a0) +80000150: 00852107 flw ft2,8(a0) +80000154: 00c52683 lw a3,12(a0) +80000158: 281001d3 fmin.s ft3,ft0,ft1 +8000015c: e0018553 fmv.x.w a0,ft3 +80000160: 001015f3 fsflags a1,zero +80000164: 00000613 li a2,0 +80000168: 34d51663 bne a0,a3,800004b4 +8000016c: 34c59463 bne a1,a2,800004b4 + +80000170 : +80000170: 00400193 li gp,4 +80000174: 00002517 auipc a0,0x2 +80000178: eac50513 addi a0,a0,-340 # 80002020 +8000017c: 00052007 flw ft0,0(a0) +80000180: 00452087 flw ft1,4(a0) +80000184: 00852107 flw ft2,8(a0) +80000188: 00c52683 lw a3,12(a0) +8000018c: 281001d3 fmin.s ft3,ft0,ft1 +80000190: e0018553 fmv.x.w a0,ft3 +80000194: 001015f3 fsflags a1,zero +80000198: 00000613 li a2,0 +8000019c: 30d51c63 bne a0,a3,800004b4 +800001a0: 30c59a63 bne a1,a2,800004b4 + +800001a4 : +800001a4: 00500193 li gp,5 +800001a8: 00002517 auipc a0,0x2 +800001ac: e8850513 addi a0,a0,-376 # 80002030 +800001b0: 00052007 flw ft0,0(a0) +800001b4: 00452087 flw ft1,4(a0) +800001b8: 00852107 flw ft2,8(a0) +800001bc: 00c52683 lw a3,12(a0) +800001c0: 281001d3 fmin.s ft3,ft0,ft1 +800001c4: e0018553 fmv.x.w a0,ft3 +800001c8: 001015f3 fsflags a1,zero +800001cc: 00000613 li a2,0 +800001d0: 2ed51263 bne a0,a3,800004b4 +800001d4: 2ec59063 bne a1,a2,800004b4 + +800001d8 : +800001d8: 00600193 li gp,6 +800001dc: 00002517 auipc a0,0x2 +800001e0: e6450513 addi a0,a0,-412 # 80002040 +800001e4: 00052007 flw ft0,0(a0) +800001e8: 00452087 flw ft1,4(a0) +800001ec: 00852107 flw ft2,8(a0) +800001f0: 00c52683 lw a3,12(a0) +800001f4: 281001d3 fmin.s ft3,ft0,ft1 +800001f8: e0018553 fmv.x.w a0,ft3 +800001fc: 001015f3 fsflags a1,zero +80000200: 00000613 li a2,0 +80000204: 2ad51863 bne a0,a3,800004b4 +80000208: 2ac59663 bne a1,a2,800004b4 + +8000020c : +8000020c: 00700193 li gp,7 +80000210: 00002517 auipc a0,0x2 +80000214: e4050513 addi a0,a0,-448 # 80002050 +80000218: 00052007 flw ft0,0(a0) +8000021c: 00452087 flw ft1,4(a0) +80000220: 00852107 flw ft2,8(a0) +80000224: 00c52683 lw a3,12(a0) +80000228: 281001d3 fmin.s ft3,ft0,ft1 +8000022c: e0018553 fmv.x.w a0,ft3 +80000230: 001015f3 fsflags a1,zero +80000234: 00000613 li a2,0 +80000238: 26d51e63 bne a0,a3,800004b4 +8000023c: 26c59c63 bne a1,a2,800004b4 + +80000240 : +80000240: 00c00193 li gp,12 +80000244: 00002517 auipc a0,0x2 +80000248: e1c50513 addi a0,a0,-484 # 80002060 +8000024c: 00052007 flw ft0,0(a0) +80000250: 00452087 flw ft1,4(a0) +80000254: 00852107 flw ft2,8(a0) +80000258: 00c52683 lw a3,12(a0) +8000025c: 281011d3 fmax.s ft3,ft0,ft1 +80000260: e0018553 fmv.x.w a0,ft3 +80000264: 001015f3 fsflags a1,zero +80000268: 00000613 li a2,0 +8000026c: 24d51463 bne a0,a3,800004b4 +80000270: 24c59263 bne a1,a2,800004b4 + +80000274 : +80000274: 00d00193 li gp,13 +80000278: 00002517 auipc a0,0x2 +8000027c: df850513 addi a0,a0,-520 # 80002070 +80000280: 00052007 flw ft0,0(a0) +80000284: 00452087 flw ft1,4(a0) +80000288: 00852107 flw ft2,8(a0) +8000028c: 00c52683 lw a3,12(a0) +80000290: 281011d3 fmax.s ft3,ft0,ft1 +80000294: e0018553 fmv.x.w a0,ft3 +80000298: 001015f3 fsflags a1,zero +8000029c: 00000613 li a2,0 +800002a0: 20d51a63 bne a0,a3,800004b4 +800002a4: 20c59863 bne a1,a2,800004b4 + +800002a8 : +800002a8: 00e00193 li gp,14 +800002ac: 00002517 auipc a0,0x2 +800002b0: dd450513 addi a0,a0,-556 # 80002080 +800002b4: 00052007 flw ft0,0(a0) +800002b8: 00452087 flw ft1,4(a0) +800002bc: 00852107 flw ft2,8(a0) +800002c0: 00c52683 lw a3,12(a0) +800002c4: 281011d3 fmax.s ft3,ft0,ft1 +800002c8: e0018553 fmv.x.w a0,ft3 +800002cc: 001015f3 fsflags a1,zero +800002d0: 00000613 li a2,0 +800002d4: 1ed51063 bne a0,a3,800004b4 +800002d8: 1cc59e63 bne a1,a2,800004b4 + +800002dc : +800002dc: 00f00193 li gp,15 +800002e0: 00002517 auipc a0,0x2 +800002e4: db050513 addi a0,a0,-592 # 80002090 +800002e8: 00052007 flw ft0,0(a0) +800002ec: 00452087 flw ft1,4(a0) +800002f0: 00852107 flw ft2,8(a0) +800002f4: 00c52683 lw a3,12(a0) +800002f8: 281011d3 fmax.s ft3,ft0,ft1 +800002fc: e0018553 fmv.x.w a0,ft3 +80000300: 001015f3 fsflags a1,zero +80000304: 00000613 li a2,0 +80000308: 1ad51663 bne a0,a3,800004b4 +8000030c: 1ac59463 bne a1,a2,800004b4 + +80000310 : +80000310: 01000193 li gp,16 +80000314: 00002517 auipc a0,0x2 +80000318: d8c50513 addi a0,a0,-628 # 800020a0 +8000031c: 00052007 flw ft0,0(a0) +80000320: 00452087 flw ft1,4(a0) +80000324: 00852107 flw ft2,8(a0) +80000328: 00c52683 lw a3,12(a0) +8000032c: 281011d3 fmax.s ft3,ft0,ft1 +80000330: e0018553 fmv.x.w a0,ft3 +80000334: 001015f3 fsflags a1,zero +80000338: 00000613 li a2,0 +8000033c: 16d51c63 bne a0,a3,800004b4 +80000340: 16c59a63 bne a1,a2,800004b4 + +80000344 : +80000344: 01100193 li gp,17 +80000348: 00002517 auipc a0,0x2 +8000034c: d6850513 addi a0,a0,-664 # 800020b0 +80000350: 00052007 flw ft0,0(a0) +80000354: 00452087 flw ft1,4(a0) +80000358: 00852107 flw ft2,8(a0) +8000035c: 00c52683 lw a3,12(a0) +80000360: 281011d3 fmax.s ft3,ft0,ft1 +80000364: e0018553 fmv.x.w a0,ft3 +80000368: 001015f3 fsflags a1,zero +8000036c: 00000613 li a2,0 +80000370: 14d51263 bne a0,a3,800004b4 +80000374: 14c59063 bne a1,a2,800004b4 + +80000378 : +80000378: 01400193 li gp,20 +8000037c: 00002517 auipc a0,0x2 +80000380: d4450513 addi a0,a0,-700 # 800020c0 +80000384: 00052007 flw ft0,0(a0) +80000388: 00452087 flw ft1,4(a0) +8000038c: 00852107 flw ft2,8(a0) +80000390: 00c52683 lw a3,12(a0) +80000394: 281011d3 fmax.s ft3,ft0,ft1 +80000398: e0018553 fmv.x.w a0,ft3 +8000039c: 001015f3 fsflags a1,zero +800003a0: 01000613 li a2,16 +800003a4: 10d51863 bne a0,a3,800004b4 +800003a8: 10c59663 bne a1,a2,800004b4 + +800003ac : +800003ac: 01500193 li gp,21 +800003b0: 00002517 auipc a0,0x2 +800003b4: d2050513 addi a0,a0,-736 # 800020d0 +800003b8: 00052007 flw ft0,0(a0) +800003bc: 00452087 flw ft1,4(a0) +800003c0: 00852107 flw ft2,8(a0) +800003c4: 00c52683 lw a3,12(a0) +800003c8: 281011d3 fmax.s ft3,ft0,ft1 +800003cc: e0018553 fmv.x.w a0,ft3 +800003d0: 001015f3 fsflags a1,zero +800003d4: 00000613 li a2,0 +800003d8: 0cd51e63 bne a0,a3,800004b4 +800003dc: 0cc59c63 bne a1,a2,800004b4 + +800003e0 : +800003e0: 01e00193 li gp,30 +800003e4: 00002517 auipc a0,0x2 +800003e8: cfc50513 addi a0,a0,-772 # 800020e0 +800003ec: 00052007 flw ft0,0(a0) +800003f0: 00452087 flw ft1,4(a0) +800003f4: 00852107 flw ft2,8(a0) +800003f8: 00c52683 lw a3,12(a0) +800003fc: 281001d3 fmin.s ft3,ft0,ft1 +80000400: e0018553 fmv.x.w a0,ft3 +80000404: 001015f3 fsflags a1,zero +80000408: 00000613 li a2,0 +8000040c: 0ad51463 bne a0,a3,800004b4 +80000410: 0ac59263 bne a1,a2,800004b4 + +80000414 : +80000414: 01f00193 li gp,31 +80000418: 00002517 auipc a0,0x2 +8000041c: cd850513 addi a0,a0,-808 # 800020f0 +80000420: 00052007 flw ft0,0(a0) +80000424: 00452087 flw ft1,4(a0) +80000428: 00852107 flw ft2,8(a0) +8000042c: 00c52683 lw a3,12(a0) +80000430: 281001d3 fmin.s ft3,ft0,ft1 +80000434: e0018553 fmv.x.w a0,ft3 +80000438: 001015f3 fsflags a1,zero +8000043c: 00000613 li a2,0 +80000440: 06d51a63 bne a0,a3,800004b4 +80000444: 06c59863 bne a1,a2,800004b4 + +80000448 : +80000448: 02000193 li gp,32 +8000044c: 00002517 auipc a0,0x2 +80000450: cb450513 addi a0,a0,-844 # 80002100 +80000454: 00052007 flw ft0,0(a0) +80000458: 00452087 flw ft1,4(a0) +8000045c: 00852107 flw ft2,8(a0) +80000460: 00c52683 lw a3,12(a0) +80000464: 281011d3 fmax.s ft3,ft0,ft1 +80000468: e0018553 fmv.x.w a0,ft3 +8000046c: 001015f3 fsflags a1,zero +80000470: 00000613 li a2,0 +80000474: 04d51063 bne a0,a3,800004b4 +80000478: 02c59e63 bne a1,a2,800004b4 + +8000047c : +8000047c: 02100193 li gp,33 +80000480: 00002517 auipc a0,0x2 +80000484: c9050513 addi a0,a0,-880 # 80002110 +80000488: 00052007 flw ft0,0(a0) +8000048c: 00452087 flw ft1,4(a0) +80000490: 00852107 flw ft2,8(a0) +80000494: 00c52683 lw a3,12(a0) +80000498: 281011d3 fmax.s ft3,ft0,ft1 +8000049c: e0018553 fmv.x.w a0,ft3 +800004a0: 001015f3 fsflags a1,zero +800004a4: 00000613 li a2,0 +800004a8: 00d51663 bne a0,a3,800004b4 +800004ac: 00c59463 bne a1,a2,800004b4 +800004b0: 00301c63 bne zero,gp,800004c8 + +800004b4 : +800004b4: 0ff0000f fence +800004b8: 00018063 beqz gp,800004b8 +800004bc: 00119193 slli gp,gp,0x1 +800004c0: 0011e193 ori gp,gp,1 +800004c4: 00000073 ecall + +800004c8 : +800004c8: 0ff0000f fence +800004cc: 00100193 li gp,1 +800004d0: 00000073 ecall +800004d4: c0001073 unimp +800004d8: 0000 unimp +800004da: 0000 unimp +800004dc: 0000 unimp +800004de: 0000 unimp +800004e0: 0000 unimp +800004e2: 0000 unimp +800004e4: 0000 unimp +800004e6: 0000 unimp +800004e8: 0000 unimp +800004ea: 0000 unimp +800004ec: 0000 unimp +800004ee: 0000 unimp +800004f0: 0000 unimp +800004f2: 0000 unimp +800004f4: 0000 unimp +800004f6: 0000 unimp +800004f8: 0000 unimp +800004fa: 0000 unimp +800004fc: 0000 unimp +800004fe: 0000 unimp +80000500: 0000 unimp +80000502: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 4020 lw s0,64(s0) +80002004: 0000 unimp +80002006: 3f80 fld fs0,56(a5) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 3f80 fld fs0,56(a5) + +80002010 : +80002010: c49a6333 0xc49a6333 +80002014: cccd beqz s1,800020ce +80002016: 3f8c fld fa1,56(a5) +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: c49a6333 0xc49a6333 + +80002020 : +80002020: cccd beqz s1,800020da +80002022: 3f8c fld fa1,56(a5) +80002024: c49a6333 0xc49a6333 +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: c49a6333 0xc49a6333 + +80002030 : +80002030: ffff 0xffff +80002032: 7fff 0x7fff +80002034: c49a6333 0xc49a6333 +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: c49a6333 0xc49a6333 + +80002040 : +80002040: 40490fdb 0x40490fdb +80002044: 322bcc77 0x322bcc77 +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 322bcc77 0x322bcc77 + +80002050 : +80002050: 0000 unimp +80002052: bf80 fsd fs0,56(a5) +80002054: 0000 unimp +80002056: c000 sw s0,0(s0) +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0000 unimp +8000205e: c000 sw s0,0(s0) + +80002060 : +80002060: 0000 unimp +80002062: 4020 lw s0,64(s0) +80002064: 0000 unimp +80002066: 3f80 fld fs0,56(a5) +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 4020 lw s0,64(s0) + +80002070 : +80002070: c49a6333 0xc49a6333 +80002074: cccd beqz s1,8000212e <_end+0xe> +80002076: 3f8c fld fa1,56(a5) +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: cccd beqz s1,80002136 <_end+0x16> +8000207e: 3f8c fld fa1,56(a5) + +80002080 : +80002080: cccd beqz s1,8000213a <_end+0x1a> +80002082: 3f8c fld fa1,56(a5) +80002084: c49a6333 0xc49a6333 +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: cccd beqz s1,80002146 <_end+0x26> +8000208e: 3f8c fld fa1,56(a5) + +80002090 : +80002090: ffff 0xffff +80002092: 7fff 0x7fff +80002094: c49a6333 0xc49a6333 +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: c49a6333 0xc49a6333 + +800020a0 : +800020a0: 40490fdb 0x40490fdb +800020a4: 322bcc77 0x322bcc77 +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 40490fdb 0x40490fdb + +800020b0 : +800020b0: 0000 unimp +800020b2: bf80 fsd fs0,56(a5) +800020b4: 0000 unimp +800020b6: c000 sw s0,0(s0) +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: bf80 fsd fs0,56(a5) + +800020c0 : +800020c0: 0001 nop +800020c2: 7f80 flw fs0,56(a5) +800020c4: 0000 unimp +800020c6: 3f80 fld fs0,56(a5) +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 3f80 fld fs0,56(a5) + +800020d0 : +800020d0: ffff 0xffff +800020d2: 7fff 0x7fff +800020d4: ffff 0xffff +800020d6: 7fff 0x7fff +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 7fc0 flw fs0,60(a5) + +800020e0 : +800020e0: 0000 unimp +800020e2: 8000 0x8000 +800020e4: 0000 unimp +800020e6: 0000 unimp +800020e8: 0000 unimp +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 8000 0x8000 + +800020f0 : +800020f0: 0000 unimp +800020f2: 0000 unimp +800020f4: 0000 unimp +800020f6: 8000 0x8000 +800020f8: 0000 unimp +800020fa: 0000 unimp +800020fc: 0000 unimp +800020fe: 8000 0x8000 + +80002100 : +80002100: 0000 unimp +80002102: 8000 0x8000 +80002104: 0000 unimp +80002106: 0000 unimp +80002108: 0000 unimp +8000210a: 0000 unimp +8000210c: 0000 unimp +8000210e: 0000 unimp + +80002110 : +80002110: 0000 unimp +80002112: 0000 unimp +80002114: 0000 unimp +80002116: 8000 0x8000 +80002118: 0000 unimp +8000211a: 0000 unimp +8000211c: 0000 unimp +8000211e: 0000 unimp diff --git a/Tests/isa/rv32uf-p-ldst b/Tests/isa/rv32uf-p-ldst new file mode 100644 index 0000000..a4ee0f2 Binary files /dev/null and b/Tests/isa/rv32uf-p-ldst differ diff --git a/Tests/isa/rv32uf-p-ldst.dump b/Tests/isa/rv32uf-p-ldst.dump new file mode 100644 index 0000000..4ac43d1 --- /dev/null +++ b/Tests/isa/rv32uf-p-ldst.dump @@ -0,0 +1,144 @@ + +rv32uf-p-ldst: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 00002597 auipc a1,0x2 +8000010c: ef858593 addi a1,a1,-264 # 80002000 +80000110: 0045a087 flw ft1,4(a1) +80000114: 0015aa27 fsw ft1,20(a1) +80000118: 0145a503 lw a0,20(a1) +8000011c: 40000eb7 lui t4,0x40000 +80000120: 00200193 li gp,2 +80000124: 03d51463 bne a0,t4,8000014c + +80000128 : +80000128: 00002597 auipc a1,0x2 +8000012c: ed858593 addi a1,a1,-296 # 80002000 +80000130: 0005a087 flw ft1,0(a1) +80000134: 0015ac27 fsw ft1,24(a1) +80000138: 0185a503 lw a0,24(a1) +8000013c: bf800eb7 lui t4,0xbf800 +80000140: 00300193 li gp,3 +80000144: 01d51463 bne a0,t4,8000014c +80000148: 00301c63 bne zero,gp,80000160 + +8000014c : +8000014c: 0ff0000f fence +80000150: 00018063 beqz gp,80000150 +80000154: 00119193 slli gp,gp,0x1 +80000158: 0011e193 ori gp,gp,1 +8000015c: 00000073 ecall + +80000160 : +80000160: 0ff0000f fence +80000164: 00100193 li gp,1 +80000168: 00000073 ecall +8000016c: c0001073 unimp +80000170: 0000 unimp +80000172: 0000 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: bf80 fsd fs0,56(a5) +80002004: 0000 unimp +80002006: 4000 lw s0,0(s0) +80002008: 0000 unimp +8000200a: 4040 lw s0,4(s0) +8000200c: 0000 unimp +8000200e: c080 sw s0,0(s1) +80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> +80002014: babe fsd fa5,368(sp) +80002016: cafe sw t6,84(sp) +80002018: 1dea slli s11,s11,0x3a +8000201a: abad j 80002594 <_end+0x574> +8000201c: d00d beqz s0,80001f3e +8000201e: lui t1,0x1 diff --git a/Tests/isa/rv32uf-p-move b/Tests/isa/rv32uf-p-move new file mode 100644 index 0000000..a9cc1af Binary files /dev/null and b/Tests/isa/rv32uf-p-move differ diff --git a/Tests/isa/rv32uf-p-move.dump b/Tests/isa/rv32uf-p-move.dump new file mode 100644 index 0000000..86c340a --- /dev/null +++ b/Tests/isa/rv32uf-p-move.dump @@ -0,0 +1,300 @@ + +rv32uf-p-move: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret + +80000108 : +80000108: 0030d073 csrwi fcsr,1 +8000010c: 00001537 lui a0,0x1 +80000110: 23450513 addi a0,a0,564 # 1234 <_start-0x7fffedcc> +80000114: 003515f3 fssr a1,a0 +80000118: 00100e93 li t4,1 +8000011c: 00200193 li gp,2 +80000120: 27d59c63 bne a1,t4,80000398 + +80000124 : +80000124: 00302573 frsr a0 +80000128: 03400e93 li t4,52 +8000012c: 00300193 li gp,3 +80000130: 27d51463 bne a0,t4,80000398 + +80000134 : +80000134: 00102573 frflags a0 +80000138: 01400e93 li t4,20 +8000013c: 00400193 li gp,4 +80000140: 25d51c63 bne a0,t4,80000398 + +80000144 : +80000144: 00215573 fsrmi a0,2 +80000148: 00100e93 li t4,1 +8000014c: 00500193 li gp,5 +80000150: 25d51463 bne a0,t4,80000398 + +80000154 : +80000154: 00302573 frsr a0 +80000158: 05400e93 li t4,84 +8000015c: 00600193 li gp,6 +80000160: 23d51c63 bne a0,t4,80000398 + +80000164 : +80000164: 00127573 csrrci a0,fflags,4 +80000168: 01400e93 li t4,20 +8000016c: 00700193 li gp,7 +80000170: 23d51463 bne a0,t4,80000398 + +80000174 : +80000174: 00302573 frsr a0 +80000178: 05000e93 li t4,80 +8000017c: 00800193 li gp,8 +80000180: 21d51c63 bne a0,t4,80000398 + +80000184 : +80000184: 123455b7 lui a1,0x12345 +80000188: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +8000018c: 00000613 li a2,0 +80000190: f00580d3 fmv.w.x ft1,a1 +80000194: f0060153 fmv.w.x ft2,a2 +80000198: 20208053 fsgnj.s ft0,ft1,ft2 +8000019c: e0000553 fmv.x.w a0,ft0 +800001a0: 12345eb7 lui t4,0x12345 +800001a4: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +800001a8: 00a00193 li gp,10 +800001ac: 1fd51663 bne a0,t4,80000398 + +800001b0 : +800001b0: 123455b7 lui a1,0x12345 +800001b4: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +800001b8: fff00613 li a2,-1 +800001bc: f00580d3 fmv.w.x ft1,a1 +800001c0: f0060153 fmv.w.x ft2,a2 +800001c4: 20208053 fsgnj.s ft0,ft1,ft2 +800001c8: e0000553 fmv.x.w a0,ft0 +800001cc: 92345eb7 lui t4,0x92345 +800001d0: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x12343678> +800001d4: 00b00193 li gp,11 +800001d8: 1dd51063 bne a0,t4,80000398 + +800001dc : +800001dc: 923455b7 lui a1,0x92345 +800001e0: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +800001e4: 00000613 li a2,0 +800001e8: f00580d3 fmv.w.x ft1,a1 +800001ec: f0060153 fmv.w.x ft2,a2 +800001f0: 20208053 fsgnj.s ft0,ft1,ft2 +800001f4: e0000553 fmv.x.w a0,ft0 +800001f8: 12345eb7 lui t4,0x12345 +800001fc: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80000200: 00c00193 li gp,12 +80000204: 19d51a63 bne a0,t4,80000398 + +80000208 : +80000208: 923455b7 lui a1,0x92345 +8000020c: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000210: fff00613 li a2,-1 +80000214: f00580d3 fmv.w.x ft1,a1 +80000218: f0060153 fmv.w.x ft2,a2 +8000021c: 20208053 fsgnj.s ft0,ft1,ft2 +80000220: e0000553 fmv.x.w a0,ft0 +80000224: 92345eb7 lui t4,0x92345 +80000228: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x12343678> +8000022c: 00d00193 li gp,13 +80000230: 17d51463 bne a0,t4,80000398 + +80000234 : +80000234: 123455b7 lui a1,0x12345 +80000238: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +8000023c: 00000613 li a2,0 +80000240: f00580d3 fmv.w.x ft1,a1 +80000244: f0060153 fmv.w.x ft2,a2 +80000248: 20209053 fsgnjn.s ft0,ft1,ft2 +8000024c: e0000553 fmv.x.w a0,ft0 +80000250: 92345eb7 lui t4,0x92345 +80000254: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x12343678> +80000258: 01400193 li gp,20 +8000025c: 13d51e63 bne a0,t4,80000398 + +80000260 : +80000260: 123455b7 lui a1,0x12345 +80000264: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80000268: fff00613 li a2,-1 +8000026c: f00580d3 fmv.w.x ft1,a1 +80000270: f0060153 fmv.w.x ft2,a2 +80000274: 20209053 fsgnjn.s ft0,ft1,ft2 +80000278: e0000553 fmv.x.w a0,ft0 +8000027c: 12345eb7 lui t4,0x12345 +80000280: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80000284: 01500193 li gp,21 +80000288: 11d51863 bne a0,t4,80000398 + +8000028c : +8000028c: 923455b7 lui a1,0x92345 +80000290: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000294: 00000613 li a2,0 +80000298: f00580d3 fmv.w.x ft1,a1 +8000029c: f0060153 fmv.w.x ft2,a2 +800002a0: 20209053 fsgnjn.s ft0,ft1,ft2 +800002a4: e0000553 fmv.x.w a0,ft0 +800002a8: 92345eb7 lui t4,0x92345 +800002ac: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x12343678> +800002b0: 01600193 li gp,22 +800002b4: 0fd51263 bne a0,t4,80000398 + +800002b8 : +800002b8: 923455b7 lui a1,0x92345 +800002bc: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +800002c0: fff00613 li a2,-1 +800002c4: f00580d3 fmv.w.x ft1,a1 +800002c8: f0060153 fmv.w.x ft2,a2 +800002cc: 20209053 fsgnjn.s ft0,ft1,ft2 +800002d0: e0000553 fmv.x.w a0,ft0 +800002d4: 12345eb7 lui t4,0x12345 +800002d8: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +800002dc: 01700193 li gp,23 +800002e0: 0bd51c63 bne a0,t4,80000398 + +800002e4 : +800002e4: 123455b7 lui a1,0x12345 +800002e8: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +800002ec: 00000613 li a2,0 +800002f0: f00580d3 fmv.w.x ft1,a1 +800002f4: f0060153 fmv.w.x ft2,a2 +800002f8: 2020a053 fsgnjx.s ft0,ft1,ft2 +800002fc: e0000553 fmv.x.w a0,ft0 +80000300: 12345eb7 lui t4,0x12345 +80000304: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80000308: 01e00193 li gp,30 +8000030c: 09d51663 bne a0,t4,80000398 + +80000310 : +80000310: 123455b7 lui a1,0x12345 +80000314: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80000318: fff00613 li a2,-1 +8000031c: f00580d3 fmv.w.x ft1,a1 +80000320: f0060153 fmv.w.x ft2,a2 +80000324: 2020a053 fsgnjx.s ft0,ft1,ft2 +80000328: e0000553 fmv.x.w a0,ft0 +8000032c: 92345eb7 lui t4,0x92345 +80000330: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x12343678> +80000334: 01f00193 li gp,31 +80000338: 07d51063 bne a0,t4,80000398 + +8000033c : +8000033c: 923455b7 lui a1,0x92345 +80000340: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000344: 00000613 li a2,0 +80000348: f00580d3 fmv.w.x ft1,a1 +8000034c: f0060153 fmv.w.x ft2,a2 +80000350: 2020a053 fsgnjx.s ft0,ft1,ft2 +80000354: e0000553 fmv.x.w a0,ft0 +80000358: 92345eb7 lui t4,0x92345 +8000035c: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x12343678> +80000360: 02000193 li gp,32 +80000364: 03d51a63 bne a0,t4,80000398 + +80000368 : +80000368: 923455b7 lui a1,0x92345 +8000036c: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000370: fff00613 li a2,-1 +80000374: f00580d3 fmv.w.x ft1,a1 +80000378: f0060153 fmv.w.x ft2,a2 +8000037c: 2020a053 fsgnjx.s ft0,ft1,ft2 +80000380: e0000553 fmv.x.w a0,ft0 +80000384: 12345eb7 lui t4,0x12345 +80000388: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +8000038c: 02100193 li gp,33 +80000390: 01d51463 bne a0,t4,80000398 +80000394: 00301c63 bne zero,gp,800003ac + +80000398 : +80000398: 0ff0000f fence +8000039c: 00018063 beqz gp,8000039c +800003a0: 00119193 slli gp,gp,0x1 +800003a4: 0011e193 ori gp,gp,1 +800003a8: 00000073 ecall + +800003ac : +800003ac: 0ff0000f fence +800003b0: 00100193 li gp,1 +800003b4: 00000073 ecall +800003b8: c0001073 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp diff --git a/Tests/isa/rv32uf-p-recoding b/Tests/isa/rv32uf-p-recoding new file mode 100644 index 0000000..f8f6c2b Binary files /dev/null and b/Tests/isa/rv32uf-p-recoding differ diff --git a/Tests/isa/rv32uf-p-recoding.dump b/Tests/isa/rv32uf-p-recoding.dump new file mode 100644 index 0000000..eb97d4a --- /dev/null +++ b/Tests/isa/rv32uf-p-recoding.dump @@ -0,0 +1,162 @@ + +rv32uf-p-recoding: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00002537 lui a0,0x2 +800000ec: 30052073 csrs mstatus,a0 +800000f0: 00305073 csrwi fcsr,0 +800000f4: 00000297 auipc t0,0x0 +800000f8: 01428293 addi t0,t0,20 # 80000108 +800000fc: 34129073 csrw mepc,t0 +80000100: f1402573 csrr a0,mhartid +80000104: 30200073 mret +80000108: 00002517 auipc a0,0x2 +8000010c: ef852007 flw ft0,-264(a0) # 80002000 +80000110: 00002517 auipc a0,0x2 +80000114: ef452087 flw ft1,-268(a0) # 80002004 +80000118: 1000f0d3 fmul.s ft1,ft1,ft0 + +8000011c : +8000011c: a0102553 feq.s a0,ft0,ft1 +80000120: 00100e93 li t4,1 +80000124: 00200193 li gp,2 +80000128: 07d51463 bne a0,t4,80000190 + +8000012c : +8000012c: a0100553 fle.s a0,ft0,ft1 +80000130: 00100e93 li t4,1 +80000134: 00300193 li gp,3 +80000138: 05d51c63 bne a0,t4,80000190 + +8000013c : +8000013c: a0101553 flt.s a0,ft0,ft1 +80000140: 00000e93 li t4,0 +80000144: 00400193 li gp,4 +80000148: 05d51463 bne a0,t4,80000190 +8000014c: d0007053 fcvt.s.w ft0,zero +80000150: 00100513 li a0,1 +80000154: d00570d3 fcvt.s.w ft1,a0 +80000158: 1000f0d3 fmul.s ft1,ft1,ft0 + +8000015c : +8000015c: a0102553 feq.s a0,ft0,ft1 +80000160: 00100e93 li t4,1 +80000164: 00500193 li gp,5 +80000168: 03d51463 bne a0,t4,80000190 + +8000016c : +8000016c: a0100553 fle.s a0,ft0,ft1 +80000170: 00100e93 li t4,1 +80000174: 00600193 li gp,6 +80000178: 01d51c63 bne a0,t4,80000190 + +8000017c : +8000017c: a0101553 flt.s a0,ft0,ft1 +80000180: 00000e93 li t4,0 +80000184: 00700193 li gp,7 +80000188: 01d51463 bne a0,t4,80000190 +8000018c: 00301c63 bne zero,gp,800001a4 + +80000190 : +80000190: 0ff0000f fence +80000194: 00018063 beqz gp,80000194 +80000198: 00119193 slli gp,gp,0x1 +8000019c: 0011e193 ori gp,gp,1 +800001a0: 00000073 ecall + +800001a4 : +800001a4: 0ff0000f fence +800001a8: 00100193 li gp,1 +800001ac: 00000073 ecall +800001b0: c0001073 unimp +800001b4: 0000 unimp +800001b6: 0000 unimp +800001b8: 0000 unimp +800001ba: 0000 unimp +800001bc: 0000 unimp +800001be: 0000 unimp +800001c0: 0000 unimp +800001c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: ff80 fsw fs0,56(a5) + +80002004 : +80002004: 0000 unimp +80002006: 4040 lw s0,4(s0) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32uf-v-fadd b/Tests/isa/rv32uf-v-fadd new file mode 100644 index 0000000..ac45186 Binary files /dev/null and b/Tests/isa/rv32uf-v-fadd differ diff --git a/Tests/isa/rv32uf-v-fadd.dump b/Tests/isa/rv32uf-v-fadd.dump new file mode 100644 index 0000000..467698b --- /dev/null +++ b/Tests/isa/rv32uf-v-fadd.dump @@ -0,0 +1,1153 @@ + +rv32uf-v-fadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 94458593 addi a1,a1,-1724 # 80002e0c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 96058593 addi a1,a1,-1696 # 80002e98 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 90c58593 addi a1,a1,-1780 # 80002eb0 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 84058593 addi a1,a1,-1984 # 80002e50 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 83058593 addi a1,a1,-2000 # 80002f78 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 79858593 addi a1,a1,1944 # 80002f54 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 69460613 addi a2,a2,1684 # 80002fa4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 5a460613 addi a2,a2,1444 # 80002f20 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 52460613 addi a2,a2,1316 # 80002eec +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 02200793 li a5,34 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 029657b7 lui a5,0x2965 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 30878793 addi a5,a5,776 # 2965308 <_start-0x7d69acf8> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00000517 auipc a0,0x0 +80002bec: 41850513 addi a0,a0,1048 # 80003000 +80002bf0: 00052007 flw ft0,0(a0) +80002bf4: 00452087 flw ft1,4(a0) +80002bf8: 00852107 flw ft2,8(a0) +80002bfc: 00c52683 lw a3,12(a0) +80002c00: 001071d3 fadd.s ft3,ft0,ft1 +80002c04: e0018553 fmv.x.w a0,ft3 +80002c08: 001015f3 fsflags a1,zero +80002c0c: 00000613 li a2,0 +80002c10: 1ed51063 bne a0,a3,80002df0 +80002c14: 1cc59e63 bne a1,a2,80002df0 + +80002c18 : +80002c18: 00300193 li gp,3 +80002c1c: 00000517 auipc a0,0x0 +80002c20: 3f450513 addi a0,a0,1012 # 80003010 +80002c24: 00052007 flw ft0,0(a0) +80002c28: 00452087 flw ft1,4(a0) +80002c2c: 00852107 flw ft2,8(a0) +80002c30: 00c52683 lw a3,12(a0) +80002c34: 001071d3 fadd.s ft3,ft0,ft1 +80002c38: e0018553 fmv.x.w a0,ft3 +80002c3c: 001015f3 fsflags a1,zero +80002c40: 00100613 li a2,1 +80002c44: 1ad51663 bne a0,a3,80002df0 +80002c48: 1ac59463 bne a1,a2,80002df0 + +80002c4c : +80002c4c: 00400193 li gp,4 +80002c50: 00000517 auipc a0,0x0 +80002c54: 3d050513 addi a0,a0,976 # 80003020 +80002c58: 00052007 flw ft0,0(a0) +80002c5c: 00452087 flw ft1,4(a0) +80002c60: 00852107 flw ft2,8(a0) +80002c64: 00c52683 lw a3,12(a0) +80002c68: 001071d3 fadd.s ft3,ft0,ft1 +80002c6c: e0018553 fmv.x.w a0,ft3 +80002c70: 001015f3 fsflags a1,zero +80002c74: 00100613 li a2,1 +80002c78: 16d51c63 bne a0,a3,80002df0 +80002c7c: 16c59a63 bne a1,a2,80002df0 + +80002c80 : +80002c80: 00500193 li gp,5 +80002c84: 00000517 auipc a0,0x0 +80002c88: 3ac50513 addi a0,a0,940 # 80003030 +80002c8c: 00052007 flw ft0,0(a0) +80002c90: 00452087 flw ft1,4(a0) +80002c94: 00852107 flw ft2,8(a0) +80002c98: 00c52683 lw a3,12(a0) +80002c9c: 081071d3 fsub.s ft3,ft0,ft1 +80002ca0: e0018553 fmv.x.w a0,ft3 +80002ca4: 001015f3 fsflags a1,zero +80002ca8: 00000613 li a2,0 +80002cac: 14d51263 bne a0,a3,80002df0 +80002cb0: 14c59063 bne a1,a2,80002df0 + +80002cb4 : +80002cb4: 00600193 li gp,6 +80002cb8: 00000517 auipc a0,0x0 +80002cbc: 38850513 addi a0,a0,904 # 80003040 +80002cc0: 00052007 flw ft0,0(a0) +80002cc4: 00452087 flw ft1,4(a0) +80002cc8: 00852107 flw ft2,8(a0) +80002ccc: 00c52683 lw a3,12(a0) +80002cd0: 081071d3 fsub.s ft3,ft0,ft1 +80002cd4: e0018553 fmv.x.w a0,ft3 +80002cd8: 001015f3 fsflags a1,zero +80002cdc: 00100613 li a2,1 +80002ce0: 10d51863 bne a0,a3,80002df0 +80002ce4: 10c59663 bne a1,a2,80002df0 + +80002ce8 : +80002ce8: 00700193 li gp,7 +80002cec: 00000517 auipc a0,0x0 +80002cf0: 36450513 addi a0,a0,868 # 80003050 +80002cf4: 00052007 flw ft0,0(a0) +80002cf8: 00452087 flw ft1,4(a0) +80002cfc: 00852107 flw ft2,8(a0) +80002d00: 00c52683 lw a3,12(a0) +80002d04: 081071d3 fsub.s ft3,ft0,ft1 +80002d08: e0018553 fmv.x.w a0,ft3 +80002d0c: 001015f3 fsflags a1,zero +80002d10: 00100613 li a2,1 +80002d14: 0cd51e63 bne a0,a3,80002df0 +80002d18: 0cc59c63 bne a1,a2,80002df0 + +80002d1c : +80002d1c: 00800193 li gp,8 +80002d20: 00000517 auipc a0,0x0 +80002d24: 34050513 addi a0,a0,832 # 80003060 +80002d28: 00052007 flw ft0,0(a0) +80002d2c: 00452087 flw ft1,4(a0) +80002d30: 00852107 flw ft2,8(a0) +80002d34: 00c52683 lw a3,12(a0) +80002d38: 101071d3 fmul.s ft3,ft0,ft1 +80002d3c: e0018553 fmv.x.w a0,ft3 +80002d40: 001015f3 fsflags a1,zero +80002d44: 00000613 li a2,0 +80002d48: 0ad51463 bne a0,a3,80002df0 +80002d4c: 0ac59263 bne a1,a2,80002df0 + +80002d50 : +80002d50: 00900193 li gp,9 +80002d54: 00000517 auipc a0,0x0 +80002d58: 31c50513 addi a0,a0,796 # 80003070 +80002d5c: 00052007 flw ft0,0(a0) +80002d60: 00452087 flw ft1,4(a0) +80002d64: 00852107 flw ft2,8(a0) +80002d68: 00c52683 lw a3,12(a0) +80002d6c: 101071d3 fmul.s ft3,ft0,ft1 +80002d70: e0018553 fmv.x.w a0,ft3 +80002d74: 001015f3 fsflags a1,zero +80002d78: 00100613 li a2,1 +80002d7c: 06d51a63 bne a0,a3,80002df0 +80002d80: 06c59863 bne a1,a2,80002df0 + +80002d84 : +80002d84: 00a00193 li gp,10 +80002d88: 00000517 auipc a0,0x0 +80002d8c: 2f850513 addi a0,a0,760 # 80003080 +80002d90: 00052007 flw ft0,0(a0) +80002d94: 00452087 flw ft1,4(a0) +80002d98: 00852107 flw ft2,8(a0) +80002d9c: 00c52683 lw a3,12(a0) +80002da0: 101071d3 fmul.s ft3,ft0,ft1 +80002da4: e0018553 fmv.x.w a0,ft3 +80002da8: 001015f3 fsflags a1,zero +80002dac: 00100613 li a2,1 +80002db0: 04d51063 bne a0,a3,80002df0 +80002db4: 02c59e63 bne a1,a2,80002df0 + +80002db8 : +80002db8: 00b00193 li gp,11 +80002dbc: 00000517 auipc a0,0x0 +80002dc0: 2d450513 addi a0,a0,724 # 80003090 +80002dc4: 00052007 flw ft0,0(a0) +80002dc8: 00452087 flw ft1,4(a0) +80002dcc: 00852107 flw ft2,8(a0) +80002dd0: 00c52683 lw a3,12(a0) +80002dd4: 081071d3 fsub.s ft3,ft0,ft1 +80002dd8: e0018553 fmv.x.w a0,ft3 +80002ddc: 001015f3 fsflags a1,zero +80002de0: 01000613 li a2,16 +80002de4: 00d51663 bne a0,a3,80002df0 +80002de8: 00c59463 bne a1,a2,80002df0 +80002dec: 00301a63 bne zero,gp,80002e00 + +80002df0 : +80002df0: 00119513 slli a0,gp,0x1 +80002df4: 00050063 beqz a0,80002df4 +80002df8: 00156513 ori a0,a0,1 +80002dfc: 00000073 ecall + +80002e00 : +80002e00: 00100513 li a0,1 +80002e04: 00000073 ecall +80002e08: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: 4020 lw s0,64(s0) +80003004: 0000 unimp +80003006: 3f80 fld fs0,56(a5) +80003008: 0000 unimp +8000300a: 0000 unimp +8000300c: 0000 unimp +8000300e: 4060 lw s0,68(s0) + +80003010 : +80003010: c49a6333 0xc49a6333 +80003014: cccd beqz s1,800030ce +80003016: 3f8c fld fa1,56(a5) +80003018: 0000 unimp +8000301a: 0000 unimp +8000301c: 4000 lw s0,0(s0) +8000301e: c49a sw t1,72(sp) + +80003020 : +80003020: 40490fdb 0x40490fdb +80003024: 322bcc77 0x322bcc77 +80003028: 0000 unimp +8000302a: 0000 unimp +8000302c: 40490fdb 0x40490fdb + +80003030 : +80003030: 0000 unimp +80003032: 4020 lw s0,64(s0) +80003034: 0000 unimp +80003036: 3f80 fld fs0,56(a5) +80003038: 0000 unimp +8000303a: 0000 unimp +8000303c: 0000 unimp +8000303e: 3fc0 fld fs0,184(a5) + +80003040 : +80003040: c49a6333 0xc49a6333 +80003044: cccd beqz s1,800030fe +80003046: bf8c fsd fa1,56(a5) +80003048: 0000 unimp +8000304a: 0000 unimp +8000304c: 4000 lw s0,0(s0) +8000304e: c49a sw t1,72(sp) + +80003050 : +80003050: 40490fdb 0x40490fdb +80003054: 322bcc77 0x322bcc77 +80003058: 0000 unimp +8000305a: 0000 unimp +8000305c: 40490fdb 0x40490fdb + +80003060 : +80003060: 0000 unimp +80003062: 4020 lw s0,64(s0) +80003064: 0000 unimp +80003066: 3f80 fld fs0,56(a5) +80003068: 0000 unimp +8000306a: 0000 unimp +8000306c: 0000 unimp +8000306e: 4020 lw s0,64(s0) + +80003070 : +80003070: c49a6333 0xc49a6333 +80003074: cccd beqz s1,8000312e +80003076: bf8c fsd fa1,56(a5) +80003078: 0000 unimp +8000307a: 0000 unimp +8000307c: d385 beqz a5,80002f9c +8000307e: 44a9 li s1,10 + +80003080 : +80003080: 40490fdb 0x40490fdb +80003084: 322bcc77 0x322bcc77 +80003088: 0000 unimp +8000308a: 0000 unimp +8000308c: ee2d bnez a2,80003106 +8000308e: 3306 fld ft6,96(sp) + +80003090 : +80003090: 0000 unimp +80003092: 7f80 flw fs0,56(a5) +80003094: 0000 unimp +80003096: 7f80 flw fs0,56(a5) +80003098: 0000 unimp +8000309a: 0000 unimp +8000309c: 0000 unimp +8000309e: 7fc0 flw fs0,60(a5) diff --git a/Tests/isa/rv32uf-v-fclass b/Tests/isa/rv32uf-v-fclass new file mode 100644 index 0000000..5c60b10 Binary files /dev/null and b/Tests/isa/rv32uf-v-fclass differ diff --git a/Tests/isa/rv32uf-v-fclass.dump b/Tests/isa/rv32uf-v-fclass.dump new file mode 100644 index 0000000..4aa95df --- /dev/null +++ b/Tests/isa/rv32uf-v-fclass.dump @@ -0,0 +1,995 @@ + +rv32uf-v-fclass: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 83858593 addi a1,a1,-1992 # 80002d00 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 85458593 addi a1,a1,-1964 # 80002d8c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 80058593 addi a1,a1,-2048 # 80002da4 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 73458593 addi a1,a1,1844 # 80002d44 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 72458593 addi a1,a1,1828 # 80002e6c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 68c58593 addi a1,a1,1676 # 80002e48 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 58860613 addi a2,a2,1416 # 80002e98 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 49860613 addi a2,a2,1176 # 80002e14 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 41860613 addi a2,a2,1048 # 80002de0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 02400793 li a5,36 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 06cb57b7 lui a5,0x6cb5 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 32878793 addi a5,a5,808 # 6cb5328 <_start-0x7934acd8> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: ff800537 lui a0,0xff800 +80002be8: f0050553 fmv.w.x fa0,a0 +80002bec: e0051553 fclass.s a0,fa0 +80002bf0: 00100e93 li t4,1 +80002bf4: 00200193 li gp,2 +80002bf8: 0fd51663 bne a0,t4,80002ce4 + +80002bfc : +80002bfc: bf800537 lui a0,0xbf800 +80002c00: f0050553 fmv.w.x fa0,a0 +80002c04: e0051553 fclass.s a0,fa0 +80002c08: 00200e93 li t4,2 +80002c0c: 00300193 li gp,3 +80002c10: 0dd51a63 bne a0,t4,80002ce4 + +80002c14 : +80002c14: 80800537 lui a0,0x80800 +80002c18: fff50513 addi a0,a0,-1 # 807fffff <_end+0x7fac07> +80002c1c: f0050553 fmv.w.x fa0,a0 +80002c20: e0051553 fclass.s a0,fa0 +80002c24: 00400e93 li t4,4 +80002c28: 00400193 li gp,4 +80002c2c: 0bd51c63 bne a0,t4,80002ce4 + +80002c30 : +80002c30: 80000537 lui a0,0x80000 +80002c34: f0050553 fmv.w.x fa0,a0 +80002c38: e0051553 fclass.s a0,fa0 +80002c3c: 00800e93 li t4,8 +80002c40: 00500193 li gp,5 +80002c44: 0bd51063 bne a0,t4,80002ce4 + +80002c48 : +80002c48: 00000513 li a0,0 +80002c4c: f0050553 fmv.w.x fa0,a0 +80002c50: e0051553 fclass.s a0,fa0 +80002c54: 01000e93 li t4,16 +80002c58: 00600193 li gp,6 +80002c5c: 09d51463 bne a0,t4,80002ce4 + +80002c60 : +80002c60: 00800537 lui a0,0x800 +80002c64: fff50513 addi a0,a0,-1 # 7fffff <_start-0x7f800001> +80002c68: f0050553 fmv.w.x fa0,a0 +80002c6c: e0051553 fclass.s a0,fa0 +80002c70: 02000e93 li t4,32 +80002c74: 00700193 li gp,7 +80002c78: 07d51663 bne a0,t4,80002ce4 + +80002c7c : +80002c7c: 3f800537 lui a0,0x3f800 +80002c80: f0050553 fmv.w.x fa0,a0 +80002c84: e0051553 fclass.s a0,fa0 +80002c88: 04000e93 li t4,64 +80002c8c: 00800193 li gp,8 +80002c90: 05d51a63 bne a0,t4,80002ce4 + +80002c94 : +80002c94: 7f800537 lui a0,0x7f800 +80002c98: f0050553 fmv.w.x fa0,a0 +80002c9c: e0051553 fclass.s a0,fa0 +80002ca0: 08000e93 li t4,128 +80002ca4: 00900193 li gp,9 +80002ca8: 03d51e63 bne a0,t4,80002ce4 + +80002cac : +80002cac: 7f800537 lui a0,0x7f800 +80002cb0: 00150513 addi a0,a0,1 # 7f800001 <_start-0x7fffff> +80002cb4: f0050553 fmv.w.x fa0,a0 +80002cb8: e0051553 fclass.s a0,fa0 +80002cbc: 10000e93 li t4,256 +80002cc0: 00a00193 li gp,10 +80002cc4: 03d51063 bne a0,t4,80002ce4 + +80002cc8 : +80002cc8: 7fc00537 lui a0,0x7fc00 +80002ccc: f0050553 fmv.w.x fa0,a0 +80002cd0: e0051553 fclass.s a0,fa0 +80002cd4: 20000e93 li t4,512 +80002cd8: 00b00193 li gp,11 +80002cdc: 01d51463 bne a0,t4,80002ce4 +80002ce0: 00301a63 bne zero,gp,80002cf4 + +80002ce4 : +80002ce4: 00119513 slli a0,gp,0x1 +80002ce8: 00050063 beqz a0,80002ce8 +80002cec: 00156513 ori a0,a0,1 +80002cf0: 00000073 ecall + +80002cf4 : +80002cf4: 00100513 li a0,1 +80002cf8: 00000073 ecall +80002cfc: c0001073 unimp diff --git a/Tests/isa/rv32uf-v-fcmp b/Tests/isa/rv32uf-v-fcmp new file mode 100644 index 0000000..1085326 Binary files /dev/null and b/Tests/isa/rv32uf-v-fcmp differ diff --git a/Tests/isa/rv32uf-v-fcmp.dump b/Tests/isa/rv32uf-v-fcmp.dump new file mode 100644 index 0000000..8a20fff --- /dev/null +++ b/Tests/isa/rv32uf-v-fcmp.dump @@ -0,0 +1,1265 @@ + +rv32uf-v-fcmp: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: a0c58593 addi a1,a1,-1524 # 80002ed4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a2858593 addi a1,a1,-1496 # 80002f60 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 9d458593 addi a1,a1,-1580 # 80002f78 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 90858593 addi a1,a1,-1784 # 80002f18 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8f858593 addi a1,a1,-1800 # 80003040 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 86058593 addi a1,a1,-1952 # 8000301c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 75c60613 addi a2,a2,1884 # 8000306c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 66c60613 addi a2,a2,1644 # 80002fe8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5ec60613 addi a2,a2,1516 # 80002fb4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 01200793 li a5,18 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0760b7b7 lui a5,0x760b +80002b9c: 00080637 lui a2,0x80 +80002ba0: 68c78793 addi a5,a5,1676 # 760b68c <_start-0x789f4974> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00052007 flw ft0,0(a0) +80002bf4: 00452087 flw ft1,4(a0) +80002bf8: 00852107 flw ft2,8(a0) +80002bfc: 00c52683 lw a3,12(a0) +80002c00: a0102553 feq.s a0,ft0,ft1 +80002c04: 001015f3 fsflags a1,zero +80002c08: 00000613 li a2,0 +80002c0c: 2ad51663 bne a0,a3,80002eb8 +80002c10: 2ac59463 bne a1,a2,80002eb8 + +80002c14 : +80002c14: 00300193 li gp,3 +80002c18: 00001517 auipc a0,0x1 +80002c1c: 3f850513 addi a0,a0,1016 # 80004010 +80002c20: 00052007 flw ft0,0(a0) +80002c24: 00452087 flw ft1,4(a0) +80002c28: 00852107 flw ft2,8(a0) +80002c2c: 00c52683 lw a3,12(a0) +80002c30: a0100553 fle.s a0,ft0,ft1 +80002c34: 001015f3 fsflags a1,zero +80002c38: 00000613 li a2,0 +80002c3c: 26d51e63 bne a0,a3,80002eb8 +80002c40: 26c59c63 bne a1,a2,80002eb8 + +80002c44 : +80002c44: 00400193 li gp,4 +80002c48: 00001517 auipc a0,0x1 +80002c4c: 3d850513 addi a0,a0,984 # 80004020 +80002c50: 00052007 flw ft0,0(a0) +80002c54: 00452087 flw ft1,4(a0) +80002c58: 00852107 flw ft2,8(a0) +80002c5c: 00c52683 lw a3,12(a0) +80002c60: a0101553 flt.s a0,ft0,ft1 +80002c64: 001015f3 fsflags a1,zero +80002c68: 00000613 li a2,0 +80002c6c: 24d51663 bne a0,a3,80002eb8 +80002c70: 24c59463 bne a1,a2,80002eb8 + +80002c74 : +80002c74: 00500193 li gp,5 +80002c78: 00001517 auipc a0,0x1 +80002c7c: 3b850513 addi a0,a0,952 # 80004030 +80002c80: 00052007 flw ft0,0(a0) +80002c84: 00452087 flw ft1,4(a0) +80002c88: 00852107 flw ft2,8(a0) +80002c8c: 00c52683 lw a3,12(a0) +80002c90: a0102553 feq.s a0,ft0,ft1 +80002c94: 001015f3 fsflags a1,zero +80002c98: 00000613 li a2,0 +80002c9c: 20d51e63 bne a0,a3,80002eb8 +80002ca0: 20c59c63 bne a1,a2,80002eb8 + +80002ca4 : +80002ca4: 00600193 li gp,6 +80002ca8: 00001517 auipc a0,0x1 +80002cac: 39850513 addi a0,a0,920 # 80004040 +80002cb0: 00052007 flw ft0,0(a0) +80002cb4: 00452087 flw ft1,4(a0) +80002cb8: 00852107 flw ft2,8(a0) +80002cbc: 00c52683 lw a3,12(a0) +80002cc0: a0100553 fle.s a0,ft0,ft1 +80002cc4: 001015f3 fsflags a1,zero +80002cc8: 00000613 li a2,0 +80002ccc: 1ed51663 bne a0,a3,80002eb8 +80002cd0: 1ec59463 bne a1,a2,80002eb8 + +80002cd4 : +80002cd4: 00700193 li gp,7 +80002cd8: 00001517 auipc a0,0x1 +80002cdc: 37850513 addi a0,a0,888 # 80004050 +80002ce0: 00052007 flw ft0,0(a0) +80002ce4: 00452087 flw ft1,4(a0) +80002ce8: 00852107 flw ft2,8(a0) +80002cec: 00c52683 lw a3,12(a0) +80002cf0: a0101553 flt.s a0,ft0,ft1 +80002cf4: 001015f3 fsflags a1,zero +80002cf8: 00000613 li a2,0 +80002cfc: 1ad51e63 bne a0,a3,80002eb8 +80002d00: 1ac59c63 bne a1,a2,80002eb8 + +80002d04 : +80002d04: 00800193 li gp,8 +80002d08: 00001517 auipc a0,0x1 +80002d0c: 35850513 addi a0,a0,856 # 80004060 +80002d10: 00052007 flw ft0,0(a0) +80002d14: 00452087 flw ft1,4(a0) +80002d18: 00852107 flw ft2,8(a0) +80002d1c: 00c52683 lw a3,12(a0) +80002d20: a0102553 feq.s a0,ft0,ft1 +80002d24: 001015f3 fsflags a1,zero +80002d28: 00000613 li a2,0 +80002d2c: 18d51663 bne a0,a3,80002eb8 +80002d30: 18c59463 bne a1,a2,80002eb8 + +80002d34 : +80002d34: 00900193 li gp,9 +80002d38: 00001517 auipc a0,0x1 +80002d3c: 33850513 addi a0,a0,824 # 80004070 +80002d40: 00052007 flw ft0,0(a0) +80002d44: 00452087 flw ft1,4(a0) +80002d48: 00852107 flw ft2,8(a0) +80002d4c: 00c52683 lw a3,12(a0) +80002d50: a0102553 feq.s a0,ft0,ft1 +80002d54: 001015f3 fsflags a1,zero +80002d58: 00000613 li a2,0 +80002d5c: 14d51e63 bne a0,a3,80002eb8 +80002d60: 14c59c63 bne a1,a2,80002eb8 + +80002d64 : +80002d64: 00a00193 li gp,10 +80002d68: 00001517 auipc a0,0x1 +80002d6c: 31850513 addi a0,a0,792 # 80004080 +80002d70: 00052007 flw ft0,0(a0) +80002d74: 00452087 flw ft1,4(a0) +80002d78: 00852107 flw ft2,8(a0) +80002d7c: 00c52683 lw a3,12(a0) +80002d80: a0102553 feq.s a0,ft0,ft1 +80002d84: 001015f3 fsflags a1,zero +80002d88: 01000613 li a2,16 +80002d8c: 12d51663 bne a0,a3,80002eb8 +80002d90: 12c59463 bne a1,a2,80002eb8 + +80002d94 : +80002d94: 00b00193 li gp,11 +80002d98: 00001517 auipc a0,0x1 +80002d9c: 2f850513 addi a0,a0,760 # 80004090 +80002da0: 00052007 flw ft0,0(a0) +80002da4: 00452087 flw ft1,4(a0) +80002da8: 00852107 flw ft2,8(a0) +80002dac: 00c52683 lw a3,12(a0) +80002db0: a0101553 flt.s a0,ft0,ft1 +80002db4: 001015f3 fsflags a1,zero +80002db8: 01000613 li a2,16 +80002dbc: 0ed51e63 bne a0,a3,80002eb8 +80002dc0: 0ec59c63 bne a1,a2,80002eb8 + +80002dc4 : +80002dc4: 00c00193 li gp,12 +80002dc8: 00001517 auipc a0,0x1 +80002dcc: 2d850513 addi a0,a0,728 # 800040a0 +80002dd0: 00052007 flw ft0,0(a0) +80002dd4: 00452087 flw ft1,4(a0) +80002dd8: 00852107 flw ft2,8(a0) +80002ddc: 00c52683 lw a3,12(a0) +80002de0: a0101553 flt.s a0,ft0,ft1 +80002de4: 001015f3 fsflags a1,zero +80002de8: 01000613 li a2,16 +80002dec: 0cd51663 bne a0,a3,80002eb8 +80002df0: 0cc59463 bne a1,a2,80002eb8 + +80002df4 : +80002df4: 00d00193 li gp,13 +80002df8: 00001517 auipc a0,0x1 +80002dfc: 2b850513 addi a0,a0,696 # 800040b0 +80002e00: 00052007 flw ft0,0(a0) +80002e04: 00452087 flw ft1,4(a0) +80002e08: 00852107 flw ft2,8(a0) +80002e0c: 00c52683 lw a3,12(a0) +80002e10: a0101553 flt.s a0,ft0,ft1 +80002e14: 001015f3 fsflags a1,zero +80002e18: 01000613 li a2,16 +80002e1c: 08d51e63 bne a0,a3,80002eb8 +80002e20: 08c59c63 bne a1,a2,80002eb8 + +80002e24 : +80002e24: 00e00193 li gp,14 +80002e28: 00001517 auipc a0,0x1 +80002e2c: 29850513 addi a0,a0,664 # 800040c0 +80002e30: 00052007 flw ft0,0(a0) +80002e34: 00452087 flw ft1,4(a0) +80002e38: 00852107 flw ft2,8(a0) +80002e3c: 00c52683 lw a3,12(a0) +80002e40: a0100553 fle.s a0,ft0,ft1 +80002e44: 001015f3 fsflags a1,zero +80002e48: 01000613 li a2,16 +80002e4c: 06d51663 bne a0,a3,80002eb8 +80002e50: 06c59463 bne a1,a2,80002eb8 + +80002e54 : +80002e54: 00f00193 li gp,15 +80002e58: 00001517 auipc a0,0x1 +80002e5c: 27850513 addi a0,a0,632 # 800040d0 +80002e60: 00052007 flw ft0,0(a0) +80002e64: 00452087 flw ft1,4(a0) +80002e68: 00852107 flw ft2,8(a0) +80002e6c: 00c52683 lw a3,12(a0) +80002e70: a0100553 fle.s a0,ft0,ft1 +80002e74: 001015f3 fsflags a1,zero +80002e78: 01000613 li a2,16 +80002e7c: 02d51e63 bne a0,a3,80002eb8 +80002e80: 02c59c63 bne a1,a2,80002eb8 + +80002e84 : +80002e84: 01000193 li gp,16 +80002e88: 00001517 auipc a0,0x1 +80002e8c: 25850513 addi a0,a0,600 # 800040e0 +80002e90: 00052007 flw ft0,0(a0) +80002e94: 00452087 flw ft1,4(a0) +80002e98: 00852107 flw ft2,8(a0) +80002e9c: 00c52683 lw a3,12(a0) +80002ea0: a0100553 fle.s a0,ft0,ft1 +80002ea4: 001015f3 fsflags a1,zero +80002ea8: 01000613 li a2,16 +80002eac: 00d51663 bne a0,a3,80002eb8 +80002eb0: 00c59463 bne a1,a2,80002eb8 +80002eb4: 00301a63 bne zero,gp,80002ec8 + +80002eb8 : +80002eb8: 00119513 slli a0,gp,0x1 +80002ebc: 00050063 beqz a0,80002ebc +80002ec0: 00156513 ori a0,a0,1 +80002ec4: 00000073 ecall + +80002ec8 : +80002ec8: 00100513 li a0,1 +80002ecc: 00000073 ecall +80002ed0: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: bfae147b 0xbfae147b +80004004: bfae147b 0xbfae147b +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: 0001 nop +8000400e: 0000 unimp + +80004010 : +80004010: bfae147b 0xbfae147b +80004014: bfae147b 0xbfae147b +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: 0001 nop +8000401e: 0000 unimp + +80004020 : +80004020: bfae147b 0xbfae147b +80004024: bfae147b 0xbfae147b +80004028: 0000 unimp +8000402a: 0000 unimp +8000402c: 0000 unimp +8000402e: 0000 unimp + +80004030 : +80004030: 5c29 li s8,-22 +80004032: 147bbfaf 0x147bbfaf +80004036: bfae fsd fa1,504(sp) +80004038: 0000 unimp +8000403a: 0000 unimp +8000403c: 0000 unimp +8000403e: 0000 unimp + +80004040 : +80004040: 5c29 li s8,-22 +80004042: 147bbfaf 0x147bbfaf +80004046: bfae fsd fa1,504(sp) +80004048: 0000 unimp +8000404a: 0000 unimp +8000404c: 0001 nop +8000404e: 0000 unimp + +80004050 : +80004050: 5c29 li s8,-22 +80004052: 147bbfaf 0x147bbfaf +80004056: bfae fsd fa1,504(sp) +80004058: 0000 unimp +8000405a: 0000 unimp +8000405c: 0001 nop +8000405e: 0000 unimp + +80004060 : +80004060: ffff 0xffff +80004062: 7fff 0x7fff +80004064: 0000 unimp +80004066: 0000 unimp +80004068: 0000 unimp +8000406a: 0000 unimp +8000406c: 0000 unimp +8000406e: 0000 unimp + +80004070 : +80004070: ffff 0xffff +80004072: 7fff 0x7fff +80004074: ffff 0xffff +80004076: 7fff 0x7fff +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: 0000 unimp +8000407e: 0000 unimp + +80004080 : +80004080: 0001 nop +80004082: 7f80 flw fs0,56(a5) +80004084: 0000 unimp +80004086: 0000 unimp +80004088: 0000 unimp +8000408a: 0000 unimp +8000408c: 0000 unimp +8000408e: 0000 unimp + +80004090 : +80004090: ffff 0xffff +80004092: 7fff 0x7fff +80004094: 0000 unimp +80004096: 0000 unimp +80004098: 0000 unimp +8000409a: 0000 unimp +8000409c: 0000 unimp +8000409e: 0000 unimp + +800040a0 : +800040a0: ffff 0xffff +800040a2: 7fff 0x7fff +800040a4: ffff 0xffff +800040a6: 7fff 0x7fff +800040a8: 0000 unimp +800040aa: 0000 unimp +800040ac: 0000 unimp +800040ae: 0000 unimp + +800040b0 : +800040b0: 0001 nop +800040b2: 7f80 flw fs0,56(a5) +800040b4: 0000 unimp +800040b6: 0000 unimp +800040b8: 0000 unimp +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: 0000 unimp + +800040c0 : +800040c0: ffff 0xffff +800040c2: 7fff 0x7fff +800040c4: 0000 unimp +800040c6: 0000 unimp +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0000 unimp +800040ce: 0000 unimp + +800040d0 : +800040d0: ffff 0xffff +800040d2: 7fff 0x7fff +800040d4: ffff 0xffff +800040d6: 7fff 0x7fff +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0000 unimp +800040de: 0000 unimp + +800040e0 : +800040e0: 0001 nop +800040e2: 7f80 flw fs0,56(a5) +800040e4: 0000 unimp +800040e6: 0000 unimp +800040e8: 0000 unimp +800040ea: 0000 unimp +800040ec: 0000 unimp +800040ee: 0000 unimp diff --git a/Tests/isa/rv32uf-v-fcvt b/Tests/isa/rv32uf-v-fcvt new file mode 100644 index 0000000..5af58b8 Binary files /dev/null and b/Tests/isa/rv32uf-v-fcvt differ diff --git a/Tests/isa/rv32uf-v-fcvt.dump b/Tests/isa/rv32uf-v-fcvt.dump new file mode 100644 index 0000000..1a588d3 --- /dev/null +++ b/Tests/isa/rv32uf-v-fcvt.dump @@ -0,0 +1,974 @@ + +rv32uf-v-fcvt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 7cc58593 addi a1,a1,1996 # 80002c94 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7e858593 addi a1,a1,2024 # 80002d20 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 79458593 addi a1,a1,1940 # 80002d38 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 6c858593 addi a1,a1,1736 # 80002cd8 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6b858593 addi a1,a1,1720 # 80002e00 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 62058593 addi a1,a1,1568 # 80002ddc +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 51c60613 addi a2,a2,1308 # 80002e2c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 42c60613 addi a2,a2,1068 # 80002da8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3ac60613 addi a2,a2,940 # 80002d74 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03200793 li a5,50 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 072117b7 lui a5,0x7211 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 20978793 addi a5,a5,521 # 7211209 <_start-0x78deedf7> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00000517 auipc a0,0x0 +80002bec: 41850513 addi a0,a0,1048 # 80003000 +80002bf0: 00052683 lw a3,0(a0) +80002bf4: 00200513 li a0,2 +80002bf8: d0057053 fcvt.s.w ft0,a0 +80002bfc: 00101073 fsflags zero +80002c00: e0000553 fmv.x.w a0,ft0 +80002c04: 06d51a63 bne a0,a3,80002c78 + +80002c08 : +80002c08: 00300193 li gp,3 +80002c0c: 00000517 auipc a0,0x0 +80002c10: 3f850513 addi a0,a0,1016 # 80003004 +80002c14: 00052683 lw a3,0(a0) +80002c18: ffe00513 li a0,-2 +80002c1c: d0057053 fcvt.s.w ft0,a0 +80002c20: 00101073 fsflags zero +80002c24: e0000553 fmv.x.w a0,ft0 +80002c28: 04d51863 bne a0,a3,80002c78 + +80002c2c : +80002c2c: 00400193 li gp,4 +80002c30: 00000517 auipc a0,0x0 +80002c34: 3d850513 addi a0,a0,984 # 80003008 +80002c38: 00052683 lw a3,0(a0) +80002c3c: 00200513 li a0,2 +80002c40: d0157053 fcvt.s.wu ft0,a0 +80002c44: 00101073 fsflags zero +80002c48: e0000553 fmv.x.w a0,ft0 +80002c4c: 02d51663 bne a0,a3,80002c78 + +80002c50 : +80002c50: 00500193 li gp,5 +80002c54: 00000517 auipc a0,0x0 +80002c58: 3b850513 addi a0,a0,952 # 8000300c +80002c5c: 00052683 lw a3,0(a0) +80002c60: ffe00513 li a0,-2 +80002c64: d0157053 fcvt.s.wu ft0,a0 +80002c68: 00101073 fsflags zero +80002c6c: e0000553 fmv.x.w a0,ft0 +80002c70: 00d51463 bne a0,a3,80002c78 +80002c74: 00301a63 bne zero,gp,80002c88 + +80002c78 : +80002c78: 00119513 slli a0,gp,0x1 +80002c7c: 00050063 beqz a0,80002c7c +80002c80: 00156513 ori a0,a0,1 +80002c84: 00000073 ecall + +80002c88 : +80002c88: 00100513 li a0,1 +80002c8c: 00000073 ecall +80002c90: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: 4000 lw s0,0(s0) + +80003004 : +80003004: 0000 unimp +80003006: c000 sw s0,0(s0) + +80003008 : +80003008: 0000 unimp +8000300a: 4000 lw s0,0(s0) + +8000300c : +8000300c: 0000 unimp +8000300e: 4f80 lw s0,24(a5) diff --git a/Tests/isa/rv32uf-v-fcvt_w b/Tests/isa/rv32uf-v-fcvt_w new file mode 100644 index 0000000..f362190 Binary files /dev/null and b/Tests/isa/rv32uf-v-fcvt_w differ diff --git a/Tests/isa/rv32uf-v-fcvt_w.dump b/Tests/isa/rv32uf-v-fcvt_w.dump new file mode 100644 index 0000000..4bda2a4 --- /dev/null +++ b/Tests/isa/rv32uf-v-fcvt_w.dump @@ -0,0 +1,1401 @@ + +rv32uf-v-fcvt_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: b2858593 addi a1,a1,-1240 # 80002ff0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: b4458593 addi a1,a1,-1212 # 8000307c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: af058593 addi a1,a1,-1296 # 80003094 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: a2458593 addi a1,a1,-1500 # 80003034 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: a1458593 addi a1,a1,-1516 # 8000315c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 97c58593 addi a1,a1,-1668 # 80003138 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 87860613 addi a2,a2,-1928 # 80003188 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 78860613 addi a2,a2,1928 # 80003104 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 70860613 addi a2,a2,1800 # 800030d0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 03200793 li a5,50 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 020b57b7 lui a5,0x20b5 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 26e78793 addi a5,a5,622 # 20b526e <_start-0x7df4ad92> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00052007 flw ft0,0(a0) +80002bf4: 00452087 flw ft1,4(a0) +80002bf8: 00852107 flw ft2,8(a0) +80002bfc: 00c52683 lw a3,12(a0) +80002c00: c0001553 fcvt.w.s a0,ft0,rtz +80002c04: 001015f3 fsflags a1,zero +80002c08: 00100613 li a2,1 +80002c0c: 3cd51463 bne a0,a3,80002fd4 +80002c10: 3cc59263 bne a1,a2,80002fd4 + +80002c14 : +80002c14: 00300193 li gp,3 +80002c18: 00001517 auipc a0,0x1 +80002c1c: 3f850513 addi a0,a0,1016 # 80004010 +80002c20: 00052007 flw ft0,0(a0) +80002c24: 00452087 flw ft1,4(a0) +80002c28: 00852107 flw ft2,8(a0) +80002c2c: 00c52683 lw a3,12(a0) +80002c30: c0001553 fcvt.w.s a0,ft0,rtz +80002c34: 001015f3 fsflags a1,zero +80002c38: 00000613 li a2,0 +80002c3c: 38d51c63 bne a0,a3,80002fd4 +80002c40: 38c59a63 bne a1,a2,80002fd4 + +80002c44 : +80002c44: 00400193 li gp,4 +80002c48: 00001517 auipc a0,0x1 +80002c4c: 3d850513 addi a0,a0,984 # 80004020 +80002c50: 00052007 flw ft0,0(a0) +80002c54: 00452087 flw ft1,4(a0) +80002c58: 00852107 flw ft2,8(a0) +80002c5c: 00c52683 lw a3,12(a0) +80002c60: c0001553 fcvt.w.s a0,ft0,rtz +80002c64: 001015f3 fsflags a1,zero +80002c68: 00100613 li a2,1 +80002c6c: 36d51463 bne a0,a3,80002fd4 +80002c70: 36c59263 bne a1,a2,80002fd4 + +80002c74 : +80002c74: 00500193 li gp,5 +80002c78: 00001517 auipc a0,0x1 +80002c7c: 3b850513 addi a0,a0,952 # 80004030 +80002c80: 00052007 flw ft0,0(a0) +80002c84: 00452087 flw ft1,4(a0) +80002c88: 00852107 flw ft2,8(a0) +80002c8c: 00c52683 lw a3,12(a0) +80002c90: c0001553 fcvt.w.s a0,ft0,rtz +80002c94: 001015f3 fsflags a1,zero +80002c98: 00100613 li a2,1 +80002c9c: 32d51c63 bne a0,a3,80002fd4 +80002ca0: 32c59a63 bne a1,a2,80002fd4 + +80002ca4 : +80002ca4: 00600193 li gp,6 +80002ca8: 00001517 auipc a0,0x1 +80002cac: 39850513 addi a0,a0,920 # 80004040 +80002cb0: 00052007 flw ft0,0(a0) +80002cb4: 00452087 flw ft1,4(a0) +80002cb8: 00852107 flw ft2,8(a0) +80002cbc: 00c52683 lw a3,12(a0) +80002cc0: c0001553 fcvt.w.s a0,ft0,rtz +80002cc4: 001015f3 fsflags a1,zero +80002cc8: 00000613 li a2,0 +80002ccc: 30d51463 bne a0,a3,80002fd4 +80002cd0: 30c59263 bne a1,a2,80002fd4 + +80002cd4 : +80002cd4: 00700193 li gp,7 +80002cd8: 00001517 auipc a0,0x1 +80002cdc: 37850513 addi a0,a0,888 # 80004050 +80002ce0: 00052007 flw ft0,0(a0) +80002ce4: 00452087 flw ft1,4(a0) +80002ce8: 00852107 flw ft2,8(a0) +80002cec: 00c52683 lw a3,12(a0) +80002cf0: c0001553 fcvt.w.s a0,ft0,rtz +80002cf4: 001015f3 fsflags a1,zero +80002cf8: 00100613 li a2,1 +80002cfc: 2cd51c63 bne a0,a3,80002fd4 +80002d00: 2cc59a63 bne a1,a2,80002fd4 + +80002d04 : +80002d04: 00800193 li gp,8 +80002d08: 00001517 auipc a0,0x1 +80002d0c: 35850513 addi a0,a0,856 # 80004060 +80002d10: 00052007 flw ft0,0(a0) +80002d14: 00452087 flw ft1,4(a0) +80002d18: 00852107 flw ft2,8(a0) +80002d1c: 00c52683 lw a3,12(a0) +80002d20: c0001553 fcvt.w.s a0,ft0,rtz +80002d24: 001015f3 fsflags a1,zero +80002d28: 01000613 li a2,16 +80002d2c: 2ad51463 bne a0,a3,80002fd4 +80002d30: 2ac59263 bne a1,a2,80002fd4 + +80002d34 : +80002d34: 00900193 li gp,9 +80002d38: 00001517 auipc a0,0x1 +80002d3c: 33850513 addi a0,a0,824 # 80004070 +80002d40: 00052007 flw ft0,0(a0) +80002d44: 00452087 flw ft1,4(a0) +80002d48: 00852107 flw ft2,8(a0) +80002d4c: 00c52683 lw a3,12(a0) +80002d50: c0001553 fcvt.w.s a0,ft0,rtz +80002d54: 001015f3 fsflags a1,zero +80002d58: 01000613 li a2,16 +80002d5c: 26d51c63 bne a0,a3,80002fd4 +80002d60: 26c59a63 bne a1,a2,80002fd4 + +80002d64 : +80002d64: 00c00193 li gp,12 +80002d68: 00001517 auipc a0,0x1 +80002d6c: 31850513 addi a0,a0,792 # 80004080 +80002d70: 00052007 flw ft0,0(a0) +80002d74: 00452087 flw ft1,4(a0) +80002d78: 00852107 flw ft2,8(a0) +80002d7c: 00c52683 lw a3,12(a0) +80002d80: c0101553 fcvt.wu.s a0,ft0,rtz +80002d84: 001015f3 fsflags a1,zero +80002d88: 01000613 li a2,16 +80002d8c: 24d51463 bne a0,a3,80002fd4 +80002d90: 24c59263 bne a1,a2,80002fd4 + +80002d94 : +80002d94: 00d00193 li gp,13 +80002d98: 00001517 auipc a0,0x1 +80002d9c: 2f850513 addi a0,a0,760 # 80004090 +80002da0: 00052007 flw ft0,0(a0) +80002da4: 00452087 flw ft1,4(a0) +80002da8: 00852107 flw ft2,8(a0) +80002dac: 00c52683 lw a3,12(a0) +80002db0: c0101553 fcvt.wu.s a0,ft0,rtz +80002db4: 001015f3 fsflags a1,zero +80002db8: 01000613 li a2,16 +80002dbc: 20d51c63 bne a0,a3,80002fd4 +80002dc0: 20c59a63 bne a1,a2,80002fd4 + +80002dc4 : +80002dc4: 00e00193 li gp,14 +80002dc8: 00001517 auipc a0,0x1 +80002dcc: 2d850513 addi a0,a0,728 # 800040a0 +80002dd0: 00052007 flw ft0,0(a0) +80002dd4: 00452087 flw ft1,4(a0) +80002dd8: 00852107 flw ft2,8(a0) +80002ddc: 00c52683 lw a3,12(a0) +80002de0: c0101553 fcvt.wu.s a0,ft0,rtz +80002de4: 001015f3 fsflags a1,zero +80002de8: 00100613 li a2,1 +80002dec: 1ed51463 bne a0,a3,80002fd4 +80002df0: 1ec59263 bne a1,a2,80002fd4 + +80002df4 : +80002df4: 00f00193 li gp,15 +80002df8: 00001517 auipc a0,0x1 +80002dfc: 2b850513 addi a0,a0,696 # 800040b0 +80002e00: 00052007 flw ft0,0(a0) +80002e04: 00452087 flw ft1,4(a0) +80002e08: 00852107 flw ft2,8(a0) +80002e0c: 00c52683 lw a3,12(a0) +80002e10: c0101553 fcvt.wu.s a0,ft0,rtz +80002e14: 001015f3 fsflags a1,zero +80002e18: 00100613 li a2,1 +80002e1c: 1ad51c63 bne a0,a3,80002fd4 +80002e20: 1ac59a63 bne a1,a2,80002fd4 + +80002e24 : +80002e24: 01000193 li gp,16 +80002e28: 00001517 auipc a0,0x1 +80002e2c: 29850513 addi a0,a0,664 # 800040c0 +80002e30: 00052007 flw ft0,0(a0) +80002e34: 00452087 flw ft1,4(a0) +80002e38: 00852107 flw ft2,8(a0) +80002e3c: 00c52683 lw a3,12(a0) +80002e40: c0101553 fcvt.wu.s a0,ft0,rtz +80002e44: 001015f3 fsflags a1,zero +80002e48: 00000613 li a2,0 +80002e4c: 18d51463 bne a0,a3,80002fd4 +80002e50: 18c59263 bne a1,a2,80002fd4 + +80002e54 : +80002e54: 01100193 li gp,17 +80002e58: 00001517 auipc a0,0x1 +80002e5c: 27850513 addi a0,a0,632 # 800040d0 +80002e60: 00052007 flw ft0,0(a0) +80002e64: 00452087 flw ft1,4(a0) +80002e68: 00852107 flw ft2,8(a0) +80002e6c: 00c52683 lw a3,12(a0) +80002e70: c0101553 fcvt.wu.s a0,ft0,rtz +80002e74: 001015f3 fsflags a1,zero +80002e78: 00100613 li a2,1 +80002e7c: 14d51c63 bne a0,a3,80002fd4 +80002e80: 14c59a63 bne a1,a2,80002fd4 + +80002e84 : +80002e84: 01200193 li gp,18 +80002e88: 00001517 auipc a0,0x1 +80002e8c: 25850513 addi a0,a0,600 # 800040e0 +80002e90: 00052007 flw ft0,0(a0) +80002e94: 00452087 flw ft1,4(a0) +80002e98: 00852107 flw ft2,8(a0) +80002e9c: 00c52683 lw a3,12(a0) +80002ea0: c0101553 fcvt.wu.s a0,ft0,rtz +80002ea4: 001015f3 fsflags a1,zero +80002ea8: 01000613 li a2,16 +80002eac: 12d51463 bne a0,a3,80002fd4 +80002eb0: 12c59263 bne a1,a2,80002fd4 + +80002eb4 : +80002eb4: 01300193 li gp,19 +80002eb8: 00001517 auipc a0,0x1 +80002ebc: 23850513 addi a0,a0,568 # 800040f0 +80002ec0: 00052007 flw ft0,0(a0) +80002ec4: 00452087 flw ft1,4(a0) +80002ec8: 00852107 flw ft2,8(a0) +80002ecc: 00c52683 lw a3,12(a0) +80002ed0: c0101553 fcvt.wu.s a0,ft0,rtz +80002ed4: 001015f3 fsflags a1,zero +80002ed8: 00000613 li a2,0 +80002edc: 0ed51c63 bne a0,a3,80002fd4 +80002ee0: 0ec59a63 bne a1,a2,80002fd4 + +80002ee4 : +80002ee4: 00001097 auipc ra,0x1 +80002ee8: 21c08093 addi ra,ra,540 # 80004100 +80002eec: 0000a087 flw ft1,0(ra) +80002ef0: c000f0d3 fcvt.w.s ra,ft1 +80002ef4: 80000eb7 lui t4,0x80000 +80002ef8: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff8c07> +80002efc: 02a00193 li gp,42 +80002f00: 0dd09a63 bne ra,t4,80002fd4 + +80002f04 : +80002f04: 00001097 auipc ra,0x1 +80002f08: 1fc08093 addi ra,ra,508 # 80004100 +80002f0c: 0080a087 flw ft1,8(ra) +80002f10: c000f0d3 fcvt.w.s ra,ft1 +80002f14: 80000eb7 lui t4,0x80000 +80002f18: 02c00193 li gp,44 +80002f1c: 0bd09c63 bne ra,t4,80002fd4 + +80002f20 : +80002f20: 00001097 auipc ra,0x1 +80002f24: 1e008093 addi ra,ra,480 # 80004100 +80002f28: 0040a087 flw ft1,4(ra) +80002f2c: c000f0d3 fcvt.w.s ra,ft1 +80002f30: 80000eb7 lui t4,0x80000 +80002f34: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff8c07> +80002f38: 03400193 li gp,52 +80002f3c: 09d09c63 bne ra,t4,80002fd4 + +80002f40 : +80002f40: 00001097 auipc ra,0x1 +80002f44: 1c008093 addi ra,ra,448 # 80004100 +80002f48: 00c0a087 flw ft1,12(ra) +80002f4c: c000f0d3 fcvt.w.s ra,ft1 +80002f50: 80000eb7 lui t4,0x80000 +80002f54: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff8c07> +80002f58: 03600193 li gp,54 +80002f5c: 07d09c63 bne ra,t4,80002fd4 + +80002f60 : +80002f60: 00001097 auipc ra,0x1 +80002f64: 1a008093 addi ra,ra,416 # 80004100 +80002f68: 0000a087 flw ft1,0(ra) +80002f6c: c010f0d3 fcvt.wu.s ra,ft1 +80002f70: fff00e93 li t4,-1 +80002f74: 03e00193 li gp,62 +80002f78: 05d09e63 bne ra,t4,80002fd4 + +80002f7c : +80002f7c: 00001097 auipc ra,0x1 +80002f80: 18408093 addi ra,ra,388 # 80004100 +80002f84: 0040a087 flw ft1,4(ra) +80002f88: c010f0d3 fcvt.wu.s ra,ft1 +80002f8c: fff00e93 li t4,-1 +80002f90: 03f00193 li gp,63 +80002f94: 05d09063 bne ra,t4,80002fd4 + +80002f98 : +80002f98: 00001097 auipc ra,0x1 +80002f9c: 16808093 addi ra,ra,360 # 80004100 +80002fa0: 0080a087 flw ft1,8(ra) +80002fa4: c010f0d3 fcvt.wu.s ra,ft1 +80002fa8: 00000e93 li t4,0 +80002fac: 04000193 li gp,64 +80002fb0: 03d09263 bne ra,t4,80002fd4 + +80002fb4 : +80002fb4: 00001097 auipc ra,0x1 +80002fb8: 14c08093 addi ra,ra,332 # 80004100 +80002fbc: 00c0a087 flw ft1,12(ra) +80002fc0: c010f0d3 fcvt.wu.s ra,ft1 +80002fc4: fff00e93 li t4,-1 +80002fc8: 04100193 li gp,65 +80002fcc: 01d09463 bne ra,t4,80002fd4 +80002fd0: 00301a63 bne zero,gp,80002fe4 + +80002fd4 : +80002fd4: 00119513 slli a0,gp,0x1 +80002fd8: 00050063 beqz a0,80002fd8 +80002fdc: 00156513 ori a0,a0,1 +80002fe0: 00000073 ecall + +80002fe4 : +80002fe4: 00100513 li a0,1 +80002fe8: 00000073 ecall +80002fec: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: cccd beqz s1,800040ba +80004002: bf8c fsd fa1,56(a5) +80004004: 0000 unimp +80004006: 0000 unimp +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: ffff 0xffff +8000400e: ffff 0xffff + +80004010 : +80004010: 0000 unimp +80004012: bf80 fsd fs0,56(a5) +80004014: 0000 unimp +80004016: 0000 unimp +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: ffff 0xffff +8000401e: ffff 0xffff + +80004020 : +80004020: 6666 flw fa2,88(sp) +80004022: bf66 fsd fs9,440(sp) +80004024: 0000 unimp +80004026: 0000 unimp +80004028: 0000 unimp +8000402a: 0000 unimp +8000402c: 0000 unimp +8000402e: 0000 unimp + +80004030 : +80004030: 6666 flw fa2,88(sp) +80004032: 3f66 fld ft10,120(sp) +80004034: 0000 unimp +80004036: 0000 unimp +80004038: 0000 unimp +8000403a: 0000 unimp +8000403c: 0000 unimp +8000403e: 0000 unimp + +80004040 : +80004040: 0000 unimp +80004042: 3f80 fld fs0,56(a5) +80004044: 0000 unimp +80004046: 0000 unimp +80004048: 0000 unimp +8000404a: 0000 unimp +8000404c: 0001 nop +8000404e: 0000 unimp + +80004050 : +80004050: cccd beqz s1,8000410a +80004052: 3f8c fld fa1,56(a5) +80004054: 0000 unimp +80004056: 0000 unimp +80004058: 0000 unimp +8000405a: 0000 unimp +8000405c: 0001 nop +8000405e: 0000 unimp + +80004060 : +80004060: d05e sw s7,32(sp) +80004062: cf32 sw a2,156(sp) +80004064: 0000 unimp +80004066: 0000 unimp +80004068: 0000 unimp +8000406a: 0000 unimp +8000406c: 0000 unimp +8000406e: 8000 0x8000 + +80004070 : +80004070: d05e sw s7,32(sp) +80004072: 4f32 lw t5,12(sp) +80004074: 0000 unimp +80004076: 0000 unimp +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: ffff 0xffff +8000407e: 7fff 0x7fff + +80004080 : +80004080: 0000 unimp +80004082: c040 sw s0,4(s0) +80004084: 0000 unimp +80004086: 0000 unimp +80004088: 0000 unimp +8000408a: 0000 unimp +8000408c: 0000 unimp +8000408e: 0000 unimp + +80004090 : +80004090: 0000 unimp +80004092: bf80 fsd fs0,56(a5) +80004094: 0000 unimp +80004096: 0000 unimp +80004098: 0000 unimp +8000409a: 0000 unimp +8000409c: 0000 unimp +8000409e: 0000 unimp + +800040a0 : +800040a0: 6666 flw fa2,88(sp) +800040a2: bf66 fsd fs9,440(sp) +800040a4: 0000 unimp +800040a6: 0000 unimp +800040a8: 0000 unimp +800040aa: 0000 unimp +800040ac: 0000 unimp +800040ae: 0000 unimp + +800040b0 : +800040b0: 6666 flw fa2,88(sp) +800040b2: 3f66 fld ft10,120(sp) +800040b4: 0000 unimp +800040b6: 0000 unimp +800040b8: 0000 unimp +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: 0000 unimp + +800040c0 : +800040c0: 0000 unimp +800040c2: 3f80 fld fs0,56(a5) +800040c4: 0000 unimp +800040c6: 0000 unimp +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0001 nop +800040ce: 0000 unimp + +800040d0 : +800040d0: cccd beqz s1,8000418a +800040d2: 3f8c fld fa1,56(a5) +800040d4: 0000 unimp +800040d6: 0000 unimp +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0001 nop +800040de: 0000 unimp + +800040e0 : +800040e0: d05e sw s7,32(sp) +800040e2: cf32 sw a2,156(sp) +800040e4: 0000 unimp +800040e6: 0000 unimp +800040e8: 0000 unimp +800040ea: 0000 unimp +800040ec: 0000 unimp +800040ee: 0000 unimp + +800040f0 : +800040f0: d05e sw s7,32(sp) +800040f2: 4f32 lw t5,12(sp) +800040f4: 0000 unimp +800040f6: 0000 unimp +800040f8: 0000 unimp +800040fa: 0000 unimp +800040fc: 5e00 lw s0,56(a2) +800040fe: b2d0 fsd fa2,160(a3) + +80004100 : +80004100: ffff 0xffff +80004102: ffff 0xffff +80004104: ffff 0xffff +80004106: 7fff 0x7fff +80004108: 0000 unimp +8000410a: ff80 fsw fs0,56(a5) +8000410c: 0000 unimp +8000410e: 7f80 flw fs0,56(a5) + +80004110 : +80004110: ffff 0xffff +80004112: ffff 0xffff +80004114: ffff 0xffff +80004116: ffff 0xffff +80004118: ffff 0xffff +8000411a: ffff 0xffff +8000411c: ffff 0xffff +8000411e: 7fff 0x7fff +80004120: 0000 unimp +80004122: 0000 unimp +80004124: 0000 unimp +80004126: fff0 fsw fa2,124(a5) +80004128: 0000 unimp +8000412a: 0000 unimp +8000412c: 0000 unimp +8000412e: 7ff0 flw fa2,124(a5) diff --git a/Tests/isa/rv32uf-v-fdiv b/Tests/isa/rv32uf-v-fdiv new file mode 100644 index 0000000..658833b Binary files /dev/null and b/Tests/isa/rv32uf-v-fdiv differ diff --git a/Tests/isa/rv32uf-v-fdiv.dump b/Tests/isa/rv32uf-v-fdiv.dump new file mode 100644 index 0000000..519232f --- /dev/null +++ b/Tests/isa/rv32uf-v-fdiv.dump @@ -0,0 +1,1091 @@ + +rv32uf-v-fdiv: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 8a858593 addi a1,a1,-1880 # 80002d70 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 8c458593 addi a1,a1,-1852 # 80002dfc +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 87058593 addi a1,a1,-1936 # 80002e14 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 7a458593 addi a1,a1,1956 # 80002db4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 79458593 addi a1,a1,1940 # 80002edc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 6fc58593 addi a1,a1,1788 # 80002eb8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 5f860613 addi a2,a2,1528 # 80002f08 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 50860613 addi a2,a2,1288 # 80002e84 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 48860613 addi a2,a2,1160 # 80002e50 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01000793 li a5,16 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 036ca7b7 lui a5,0x36ca +80002b9c: 00080637 lui a2,0x80 +80002ba0: f2a78793 addi a5,a5,-214 # 36c9f2a <_start-0x7c9360d6> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00000517 auipc a0,0x0 +80002bec: 41850513 addi a0,a0,1048 # 80003000 +80002bf0: 00052007 flw ft0,0(a0) +80002bf4: 00452087 flw ft1,4(a0) +80002bf8: 00852107 flw ft2,8(a0) +80002bfc: 00c52683 lw a3,12(a0) +80002c00: 181071d3 fdiv.s ft3,ft0,ft1 +80002c04: e0018553 fmv.x.w a0,ft3 +80002c08: 001015f3 fsflags a1,zero +80002c0c: 00100613 li a2,1 +80002c10: 14d51263 bne a0,a3,80002d54 +80002c14: 14c59063 bne a1,a2,80002d54 + +80002c18 : +80002c18: 00300193 li gp,3 +80002c1c: 00000517 auipc a0,0x0 +80002c20: 3f450513 addi a0,a0,1012 # 80003010 +80002c24: 00052007 flw ft0,0(a0) +80002c28: 00452087 flw ft1,4(a0) +80002c2c: 00852107 flw ft2,8(a0) +80002c30: 00c52683 lw a3,12(a0) +80002c34: 181071d3 fdiv.s ft3,ft0,ft1 +80002c38: e0018553 fmv.x.w a0,ft3 +80002c3c: 001015f3 fsflags a1,zero +80002c40: 00100613 li a2,1 +80002c44: 10d51863 bne a0,a3,80002d54 +80002c48: 10c59663 bne a1,a2,80002d54 + +80002c4c : +80002c4c: 00400193 li gp,4 +80002c50: 00000517 auipc a0,0x0 +80002c54: 3d050513 addi a0,a0,976 # 80003020 +80002c58: 00052007 flw ft0,0(a0) +80002c5c: 00452087 flw ft1,4(a0) +80002c60: 00852107 flw ft2,8(a0) +80002c64: 00c52683 lw a3,12(a0) +80002c68: 181071d3 fdiv.s ft3,ft0,ft1 +80002c6c: e0018553 fmv.x.w a0,ft3 +80002c70: 001015f3 fsflags a1,zero +80002c74: 00000613 li a2,0 +80002c78: 0cd51e63 bne a0,a3,80002d54 +80002c7c: 0cc59c63 bne a1,a2,80002d54 + +80002c80 : +80002c80: 00500193 li gp,5 +80002c84: 00000517 auipc a0,0x0 +80002c88: 3ac50513 addi a0,a0,940 # 80003030 +80002c8c: 00052007 flw ft0,0(a0) +80002c90: 00452087 flw ft1,4(a0) +80002c94: 00852107 flw ft2,8(a0) +80002c98: 00c52683 lw a3,12(a0) +80002c9c: 580071d3 fsqrt.s ft3,ft0 +80002ca0: e0018553 fmv.x.w a0,ft3 +80002ca4: 001015f3 fsflags a1,zero +80002ca8: 00100613 li a2,1 +80002cac: 0ad51463 bne a0,a3,80002d54 +80002cb0: 0ac59263 bne a1,a2,80002d54 + +80002cb4 : +80002cb4: 00600193 li gp,6 +80002cb8: 00000517 auipc a0,0x0 +80002cbc: 38850513 addi a0,a0,904 # 80003040 +80002cc0: 00052007 flw ft0,0(a0) +80002cc4: 00452087 flw ft1,4(a0) +80002cc8: 00852107 flw ft2,8(a0) +80002ccc: 00c52683 lw a3,12(a0) +80002cd0: 580071d3 fsqrt.s ft3,ft0 +80002cd4: e0018553 fmv.x.w a0,ft3 +80002cd8: 001015f3 fsflags a1,zero +80002cdc: 00000613 li a2,0 +80002ce0: 06d51a63 bne a0,a3,80002d54 +80002ce4: 06c59863 bne a1,a2,80002d54 + +80002ce8 : +80002ce8: 00700193 li gp,7 +80002cec: 00000517 auipc a0,0x0 +80002cf0: 36450513 addi a0,a0,868 # 80003050 +80002cf4: 00052007 flw ft0,0(a0) +80002cf8: 00452087 flw ft1,4(a0) +80002cfc: 00852107 flw ft2,8(a0) +80002d00: 00c52683 lw a3,12(a0) +80002d04: 580071d3 fsqrt.s ft3,ft0 +80002d08: e0018553 fmv.x.w a0,ft3 +80002d0c: 001015f3 fsflags a1,zero +80002d10: 01000613 li a2,16 +80002d14: 04d51063 bne a0,a3,80002d54 +80002d18: 02c59e63 bne a1,a2,80002d54 + +80002d1c : +80002d1c: 00800193 li gp,8 +80002d20: 00000517 auipc a0,0x0 +80002d24: 34450513 addi a0,a0,836 # 80003064 +80002d28: 00052007 flw ft0,0(a0) +80002d2c: 00452087 flw ft1,4(a0) +80002d30: 00852107 flw ft2,8(a0) +80002d34: 00c52683 lw a3,12(a0) +80002d38: 580071d3 fsqrt.s ft3,ft0 +80002d3c: e0018553 fmv.x.w a0,ft3 +80002d40: 001015f3 fsflags a1,zero +80002d44: 00100613 li a2,1 +80002d48: 00d51663 bne a0,a3,80002d54 +80002d4c: 00c59463 bne a1,a2,80002d54 +80002d50: 00301a63 bne zero,gp,80002d64 + +80002d54 : +80002d54: 00119513 slli a0,gp,0x1 +80002d58: 00050063 beqz a0,80002d58 +80002d5c: 00156513 ori a0,a0,1 +80002d60: 00000073 ecall + +80002d64 : +80002d64: 00100513 li a0,1 +80002d68: 00000073 ecall +80002d6c: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 40490fdb 0x40490fdb +80003004: f854 fsw fa3,52(s0) +80003006: 402d c.li zero,11 +80003008: 0000 unimp +8000300a: 0000 unimp +8000300c: eee0 fsw fs0,92(a3) +8000300e: sltiu t6,zero,1024 + +80003010 : +80003010: 4000 lw s0,0(s0) +80003012: c49a sw t1,72(sp) +80003014: 449a6333 0x449a6333 +80003018: 0000 unimp +8000301a: 0000 unimp +8000301c: c5a2 sw s0,200(sp) +8000301e: bf7f 0xbf7f + +80003020 : +80003020: 40490fdb 0x40490fdb +80003024: 0000 unimp +80003026: 3f80 fld fs0,56(a5) +80003028: 0000 unimp +8000302a: 0000 unimp +8000302c: 40490fdb 0x40490fdb + +80003030 : +80003030: 40490fdb 0x40490fdb +80003034: 0000 unimp +80003036: 0000 unimp +80003038: 0000 unimp +8000303a: 0000 unimp +8000303c: dfc5 beqz a5,80002ff4 +8000303e: 3fe2 fld ft11,56(sp) + +80003040 : +80003040: 4000 lw s0,0(s0) +80003042: 461c lw a5,8(a2) +80003044: 0000 unimp +80003046: 0000 unimp +80003048: 0000 unimp +8000304a: 0000 unimp +8000304c: 0000 unimp +8000304e: 42c8 lw a0,4(a3) + +80003050 : +80003050: 0000 unimp +80003052: bf80 fsd fs0,56(a5) +80003054: 0000 unimp +80003056: 0000 unimp +80003058: 0000 unimp +8000305a: 0000 unimp +8000305c: 0000 unimp +8000305e: 7fc0 flw fs0,60(a5) +80003060: 0000 unimp +80003062: 0000 unimp + +80003064 : +80003064: 0000 unimp +80003066: 0000432b 0x432b +8000306a: 0000 unimp +8000306c: 0000 unimp +8000306e: 0000 unimp +80003070: 3a26 fld fs4,104(sp) +80003072: 4151 li sp,20 +80003074: 0000 unimp +80003076: 0000 unimp +80003078: 0000 unimp +8000307a: 0000 unimp +8000307c: 0000 unimp +8000307e: 0000 unimp diff --git a/Tests/isa/rv32uf-v-fmadd b/Tests/isa/rv32uf-v-fmadd new file mode 100644 index 0000000..ff50cc1 Binary files /dev/null and b/Tests/isa/rv32uf-v-fmadd differ diff --git a/Tests/isa/rv32uf-v-fmadd.dump b/Tests/isa/rv32uf-v-fmadd.dump new file mode 100644 index 0000000..684e7ce --- /dev/null +++ b/Tests/isa/rv32uf-v-fmadd.dump @@ -0,0 +1,1210 @@ + +rv32uf-v-fmadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9ac58593 addi a1,a1,-1620 # 80002e74 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9c858593 addi a1,a1,-1592 # 80002f00 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 97458593 addi a1,a1,-1676 # 80002f18 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8a858593 addi a1,a1,-1880 # 80002eb8 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 89858593 addi a1,a1,-1896 # 80002fe0 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 80058593 addi a1,a1,-2048 # 80002fbc +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 6fc60613 addi a2,a2,1788 # 8000300c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 60c60613 addi a2,a2,1548 # 80002f88 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 58c60613 addi a2,a2,1420 # 80002f54 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 00900793 li a5,9 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0eae77b7 lui a5,0xeae7 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 51278793 addi a5,a5,1298 # eae7512 <_start-0x71518aee> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00052007 flw ft0,0(a0) +80002bf4: 00452087 flw ft1,4(a0) +80002bf8: 00852107 flw ft2,8(a0) +80002bfc: 00c52683 lw a3,12(a0) +80002c00: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +80002c04: e0018553 fmv.x.w a0,ft3 +80002c08: 001015f3 fsflags a1,zero +80002c0c: 00000613 li a2,0 +80002c10: 24d51463 bne a0,a3,80002e58 +80002c14: 24c59263 bne a1,a2,80002e58 + +80002c18 : +80002c18: 00300193 li gp,3 +80002c1c: 00001517 auipc a0,0x1 +80002c20: 3f450513 addi a0,a0,1012 # 80004010 +80002c24: 00052007 flw ft0,0(a0) +80002c28: 00452087 flw ft1,4(a0) +80002c2c: 00852107 flw ft2,8(a0) +80002c30: 00c52683 lw a3,12(a0) +80002c34: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +80002c38: e0018553 fmv.x.w a0,ft3 +80002c3c: 001015f3 fsflags a1,zero +80002c40: 00100613 li a2,1 +80002c44: 20d51a63 bne a0,a3,80002e58 +80002c48: 20c59863 bne a1,a2,80002e58 + +80002c4c : +80002c4c: 00400193 li gp,4 +80002c50: 00001517 auipc a0,0x1 +80002c54: 3d050513 addi a0,a0,976 # 80004020 +80002c58: 00052007 flw ft0,0(a0) +80002c5c: 00452087 flw ft1,4(a0) +80002c60: 00852107 flw ft2,8(a0) +80002c64: 00c52683 lw a3,12(a0) +80002c68: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +80002c6c: e0018553 fmv.x.w a0,ft3 +80002c70: 001015f3 fsflags a1,zero +80002c74: 00000613 li a2,0 +80002c78: 1ed51063 bne a0,a3,80002e58 +80002c7c: 1cc59e63 bne a1,a2,80002e58 + +80002c80 : +80002c80: 00500193 li gp,5 +80002c84: 00001517 auipc a0,0x1 +80002c88: 3ac50513 addi a0,a0,940 # 80004030 +80002c8c: 00052007 flw ft0,0(a0) +80002c90: 00452087 flw ft1,4(a0) +80002c94: 00852107 flw ft2,8(a0) +80002c98: 00c52683 lw a3,12(a0) +80002c9c: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +80002ca0: e0018553 fmv.x.w a0,ft3 +80002ca4: 001015f3 fsflags a1,zero +80002ca8: 00000613 li a2,0 +80002cac: 1ad51663 bne a0,a3,80002e58 +80002cb0: 1ac59463 bne a1,a2,80002e58 + +80002cb4 : +80002cb4: 00600193 li gp,6 +80002cb8: 00001517 auipc a0,0x1 +80002cbc: 38850513 addi a0,a0,904 # 80004040 +80002cc0: 00052007 flw ft0,0(a0) +80002cc4: 00452087 flw ft1,4(a0) +80002cc8: 00852107 flw ft2,8(a0) +80002ccc: 00c52683 lw a3,12(a0) +80002cd0: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +80002cd4: e0018553 fmv.x.w a0,ft3 +80002cd8: 001015f3 fsflags a1,zero +80002cdc: 00100613 li a2,1 +80002ce0: 16d51c63 bne a0,a3,80002e58 +80002ce4: 16c59a63 bne a1,a2,80002e58 + +80002ce8 : +80002ce8: 00700193 li gp,7 +80002cec: 00001517 auipc a0,0x1 +80002cf0: 36450513 addi a0,a0,868 # 80004050 +80002cf4: 00052007 flw ft0,0(a0) +80002cf8: 00452087 flw ft1,4(a0) +80002cfc: 00852107 flw ft2,8(a0) +80002d00: 00c52683 lw a3,12(a0) +80002d04: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +80002d08: e0018553 fmv.x.w a0,ft3 +80002d0c: 001015f3 fsflags a1,zero +80002d10: 00000613 li a2,0 +80002d14: 14d51263 bne a0,a3,80002e58 +80002d18: 14c59063 bne a1,a2,80002e58 + +80002d1c : +80002d1c: 00800193 li gp,8 +80002d20: 00001517 auipc a0,0x1 +80002d24: 34050513 addi a0,a0,832 # 80004060 +80002d28: 00052007 flw ft0,0(a0) +80002d2c: 00452087 flw ft1,4(a0) +80002d30: 00852107 flw ft2,8(a0) +80002d34: 00c52683 lw a3,12(a0) +80002d38: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +80002d3c: e0018553 fmv.x.w a0,ft3 +80002d40: 001015f3 fsflags a1,zero +80002d44: 00000613 li a2,0 +80002d48: 10d51863 bne a0,a3,80002e58 +80002d4c: 10c59663 bne a1,a2,80002e58 + +80002d50 : +80002d50: 00900193 li gp,9 +80002d54: 00001517 auipc a0,0x1 +80002d58: 31c50513 addi a0,a0,796 # 80004070 +80002d5c: 00052007 flw ft0,0(a0) +80002d60: 00452087 flw ft1,4(a0) +80002d64: 00852107 flw ft2,8(a0) +80002d68: 00c52683 lw a3,12(a0) +80002d6c: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +80002d70: e0018553 fmv.x.w a0,ft3 +80002d74: 001015f3 fsflags a1,zero +80002d78: 00100613 li a2,1 +80002d7c: 0cd51e63 bne a0,a3,80002e58 +80002d80: 0cc59c63 bne a1,a2,80002e58 + +80002d84 : +80002d84: 00a00193 li gp,10 +80002d88: 00001517 auipc a0,0x1 +80002d8c: 2f850513 addi a0,a0,760 # 80004080 +80002d90: 00052007 flw ft0,0(a0) +80002d94: 00452087 flw ft1,4(a0) +80002d98: 00852107 flw ft2,8(a0) +80002d9c: 00c52683 lw a3,12(a0) +80002da0: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +80002da4: e0018553 fmv.x.w a0,ft3 +80002da8: 001015f3 fsflags a1,zero +80002dac: 00000613 li a2,0 +80002db0: 0ad51463 bne a0,a3,80002e58 +80002db4: 0ac59263 bne a1,a2,80002e58 + +80002db8 : +80002db8: 00b00193 li gp,11 +80002dbc: 00001517 auipc a0,0x1 +80002dc0: 2d450513 addi a0,a0,724 # 80004090 +80002dc4: 00052007 flw ft0,0(a0) +80002dc8: 00452087 flw ft1,4(a0) +80002dcc: 00852107 flw ft2,8(a0) +80002dd0: 00c52683 lw a3,12(a0) +80002dd4: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +80002dd8: e0018553 fmv.x.w a0,ft3 +80002ddc: 001015f3 fsflags a1,zero +80002de0: 00000613 li a2,0 +80002de4: 06d51a63 bne a0,a3,80002e58 +80002de8: 06c59863 bne a1,a2,80002e58 + +80002dec : +80002dec: 00c00193 li gp,12 +80002df0: 00001517 auipc a0,0x1 +80002df4: 2b050513 addi a0,a0,688 # 800040a0 +80002df8: 00052007 flw ft0,0(a0) +80002dfc: 00452087 flw ft1,4(a0) +80002e00: 00852107 flw ft2,8(a0) +80002e04: 00c52683 lw a3,12(a0) +80002e08: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +80002e0c: e0018553 fmv.x.w a0,ft3 +80002e10: 001015f3 fsflags a1,zero +80002e14: 00100613 li a2,1 +80002e18: 04d51063 bne a0,a3,80002e58 +80002e1c: 02c59e63 bne a1,a2,80002e58 + +80002e20 : +80002e20: 00d00193 li gp,13 +80002e24: 00001517 auipc a0,0x1 +80002e28: 28c50513 addi a0,a0,652 # 800040b0 +80002e2c: 00052007 flw ft0,0(a0) +80002e30: 00452087 flw ft1,4(a0) +80002e34: 00852107 flw ft2,8(a0) +80002e38: 00c52683 lw a3,12(a0) +80002e3c: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +80002e40: e0018553 fmv.x.w a0,ft3 +80002e44: 001015f3 fsflags a1,zero +80002e48: 00000613 li a2,0 +80002e4c: 00d51663 bne a0,a3,80002e58 +80002e50: 00c59463 bne a1,a2,80002e58 +80002e54: 00301a63 bne zero,gp,80002e68 + +80002e58 : +80002e58: 00119513 slli a0,gp,0x1 +80002e5c: 00050063 beqz a0,80002e5c +80002e60: 00156513 ori a0,a0,1 +80002e64: 00000073 ecall + +80002e68 : +80002e68: 00100513 li a0,1 +80002e6c: 00000073 ecall +80002e70: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 0000 unimp +80004002: 3f80 fld fs0,56(a5) +80004004: 0000 unimp +80004006: 4020 lw s0,64(s0) +80004008: 0000 unimp +8000400a: 3f80 fld fs0,56(a5) +8000400c: 0000 unimp +8000400e: 4060 lw s0,68(s0) + +80004010 : +80004010: 0000 unimp +80004012: bf80 fsd fs0,56(a5) +80004014: c49a6333 0xc49a6333 +80004018: cccd beqz s1,800040d2 +8000401a: 3f8c fld fa1,56(a5) +8000401c: 8666 mv a2,s9 +8000401e: 449a lw s1,132(sp) + +80004020 : +80004020: 0000 unimp +80004022: 4000 lw s0,0(s0) +80004024: 0000 unimp +80004026: c0a0 sw s0,64(s1) +80004028: 0000 unimp +8000402a: c000 sw s0,0(s0) +8000402c: 0000 unimp +8000402e: c140 sw s0,4(a0) + +80004030 : +80004030: 0000 unimp +80004032: 3f80 fld fs0,56(a5) +80004034: 0000 unimp +80004036: 4020 lw s0,64(s0) +80004038: 0000 unimp +8000403a: 3f80 fld fs0,56(a5) +8000403c: 0000 unimp +8000403e: c060 sw s0,68(s0) + +80004040 : +80004040: 0000 unimp +80004042: bf80 fsd fs0,56(a5) +80004044: c49a6333 0xc49a6333 +80004048: cccd beqz s1,80004102 +8000404a: 3f8c fld fa1,56(a5) +8000404c: 8666 mv a2,s9 +8000404e: c49a sw t1,72(sp) + +80004050 : +80004050: 0000 unimp +80004052: 4000 lw s0,0(s0) +80004054: 0000 unimp +80004056: c0a0 sw s0,64(s1) +80004058: 0000 unimp +8000405a: c000 sw s0,0(s0) +8000405c: 0000 unimp +8000405e: 4140 lw s0,4(a0) + +80004060 : +80004060: 0000 unimp +80004062: 3f80 fld fs0,56(a5) +80004064: 0000 unimp +80004066: 4020 lw s0,64(s0) +80004068: 0000 unimp +8000406a: 3f80 fld fs0,56(a5) +8000406c: 0000 unimp +8000406e: 3fc0 fld fs0,184(a5) + +80004070 : +80004070: 0000 unimp +80004072: bf80 fsd fs0,56(a5) +80004074: c49a6333 0xc49a6333 +80004078: cccd beqz s1,80004132 +8000407a: 3f8c fld fa1,56(a5) +8000407c: 4000 lw s0,0(s0) +8000407e: 449a lw s1,132(sp) + +80004080 : +80004080: 0000 unimp +80004082: 4000 lw s0,0(s0) +80004084: 0000 unimp +80004086: c0a0 sw s0,64(s1) +80004088: 0000 unimp +8000408a: c000 sw s0,0(s0) +8000408c: 0000 unimp +8000408e: c100 sw s0,0(a0) + +80004090 : +80004090: 0000 unimp +80004092: 3f80 fld fs0,56(a5) +80004094: 0000 unimp +80004096: 4020 lw s0,64(s0) +80004098: 0000 unimp +8000409a: 3f80 fld fs0,56(a5) +8000409c: 0000 unimp +8000409e: bfc0 fsd fs0,184(a5) + +800040a0 : +800040a0: 0000 unimp +800040a2: bf80 fsd fs0,56(a5) +800040a4: c49a6333 0xc49a6333 +800040a8: cccd beqz s1,80004162 +800040aa: 3f8c fld fa1,56(a5) +800040ac: 4000 lw s0,0(s0) +800040ae: c49a sw t1,72(sp) + +800040b0 : +800040b0: 0000 unimp +800040b2: 4000 lw s0,0(s0) +800040b4: 0000 unimp +800040b6: c0a0 sw s0,64(s1) +800040b8: 0000 unimp +800040ba: c000 sw s0,0(s0) +800040bc: 0000 unimp +800040be: 4100 lw s0,0(a0) diff --git a/Tests/isa/rv32uf-v-fmin b/Tests/isa/rv32uf-v-fmin new file mode 100644 index 0000000..3c355a7 Binary files /dev/null and b/Tests/isa/rv32uf-v-fmin differ diff --git a/Tests/isa/rv32uf-v-fmin.dump b/Tests/isa/rv32uf-v-fmin.dump new file mode 100644 index 0000000..310715a --- /dev/null +++ b/Tests/isa/rv32uf-v-fmin.dump @@ -0,0 +1,1348 @@ + +rv32uf-v-fmin: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: ae458593 addi a1,a1,-1308 # 80002fac +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: b0058593 addi a1,a1,-1280 # 80003038 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: aac58593 addi a1,a1,-1364 # 80003050 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 9e058593 addi a1,a1,-1568 # 80002ff0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 9d058593 addi a1,a1,-1584 # 80003118 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 93858593 addi a1,a1,-1736 # 800030f4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 83460613 addi a2,a2,-1996 # 80003144 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 74460613 addi a2,a2,1860 # 800030c0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 6c460613 addi a2,a2,1732 # 8000308c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 03200793 li a5,50 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 025e77b7 lui a5,0x25e7 +80002b9c: 00080637 lui a2,0x80 +80002ba0: a0978793 addi a5,a5,-1527 # 25e6a09 <_start-0x7da195f7> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00200193 li gp,2 +80002be8: 00001517 auipc a0,0x1 +80002bec: 41850513 addi a0,a0,1048 # 80004000 +80002bf0: 00052007 flw ft0,0(a0) +80002bf4: 00452087 flw ft1,4(a0) +80002bf8: 00852107 flw ft2,8(a0) +80002bfc: 00c52683 lw a3,12(a0) +80002c00: 281001d3 fmin.s ft3,ft0,ft1 +80002c04: e0018553 fmv.x.w a0,ft3 +80002c08: 001015f3 fsflags a1,zero +80002c0c: 00000613 li a2,0 +80002c10: 38d51063 bne a0,a3,80002f90 +80002c14: 36c59e63 bne a1,a2,80002f90 + +80002c18 : +80002c18: 00300193 li gp,3 +80002c1c: 00001517 auipc a0,0x1 +80002c20: 3f450513 addi a0,a0,1012 # 80004010 +80002c24: 00052007 flw ft0,0(a0) +80002c28: 00452087 flw ft1,4(a0) +80002c2c: 00852107 flw ft2,8(a0) +80002c30: 00c52683 lw a3,12(a0) +80002c34: 281001d3 fmin.s ft3,ft0,ft1 +80002c38: e0018553 fmv.x.w a0,ft3 +80002c3c: 001015f3 fsflags a1,zero +80002c40: 00000613 li a2,0 +80002c44: 34d51663 bne a0,a3,80002f90 +80002c48: 34c59463 bne a1,a2,80002f90 + +80002c4c : +80002c4c: 00400193 li gp,4 +80002c50: 00001517 auipc a0,0x1 +80002c54: 3d050513 addi a0,a0,976 # 80004020 +80002c58: 00052007 flw ft0,0(a0) +80002c5c: 00452087 flw ft1,4(a0) +80002c60: 00852107 flw ft2,8(a0) +80002c64: 00c52683 lw a3,12(a0) +80002c68: 281001d3 fmin.s ft3,ft0,ft1 +80002c6c: e0018553 fmv.x.w a0,ft3 +80002c70: 001015f3 fsflags a1,zero +80002c74: 00000613 li a2,0 +80002c78: 30d51c63 bne a0,a3,80002f90 +80002c7c: 30c59a63 bne a1,a2,80002f90 + +80002c80 : +80002c80: 00500193 li gp,5 +80002c84: 00001517 auipc a0,0x1 +80002c88: 3ac50513 addi a0,a0,940 # 80004030 +80002c8c: 00052007 flw ft0,0(a0) +80002c90: 00452087 flw ft1,4(a0) +80002c94: 00852107 flw ft2,8(a0) +80002c98: 00c52683 lw a3,12(a0) +80002c9c: 281001d3 fmin.s ft3,ft0,ft1 +80002ca0: e0018553 fmv.x.w a0,ft3 +80002ca4: 001015f3 fsflags a1,zero +80002ca8: 00000613 li a2,0 +80002cac: 2ed51263 bne a0,a3,80002f90 +80002cb0: 2ec59063 bne a1,a2,80002f90 + +80002cb4 : +80002cb4: 00600193 li gp,6 +80002cb8: 00001517 auipc a0,0x1 +80002cbc: 38850513 addi a0,a0,904 # 80004040 +80002cc0: 00052007 flw ft0,0(a0) +80002cc4: 00452087 flw ft1,4(a0) +80002cc8: 00852107 flw ft2,8(a0) +80002ccc: 00c52683 lw a3,12(a0) +80002cd0: 281001d3 fmin.s ft3,ft0,ft1 +80002cd4: e0018553 fmv.x.w a0,ft3 +80002cd8: 001015f3 fsflags a1,zero +80002cdc: 00000613 li a2,0 +80002ce0: 2ad51863 bne a0,a3,80002f90 +80002ce4: 2ac59663 bne a1,a2,80002f90 + +80002ce8 : +80002ce8: 00700193 li gp,7 +80002cec: 00001517 auipc a0,0x1 +80002cf0: 36450513 addi a0,a0,868 # 80004050 +80002cf4: 00052007 flw ft0,0(a0) +80002cf8: 00452087 flw ft1,4(a0) +80002cfc: 00852107 flw ft2,8(a0) +80002d00: 00c52683 lw a3,12(a0) +80002d04: 281001d3 fmin.s ft3,ft0,ft1 +80002d08: e0018553 fmv.x.w a0,ft3 +80002d0c: 001015f3 fsflags a1,zero +80002d10: 00000613 li a2,0 +80002d14: 26d51e63 bne a0,a3,80002f90 +80002d18: 26c59c63 bne a1,a2,80002f90 + +80002d1c : +80002d1c: 00c00193 li gp,12 +80002d20: 00001517 auipc a0,0x1 +80002d24: 34050513 addi a0,a0,832 # 80004060 +80002d28: 00052007 flw ft0,0(a0) +80002d2c: 00452087 flw ft1,4(a0) +80002d30: 00852107 flw ft2,8(a0) +80002d34: 00c52683 lw a3,12(a0) +80002d38: 281011d3 fmax.s ft3,ft0,ft1 +80002d3c: e0018553 fmv.x.w a0,ft3 +80002d40: 001015f3 fsflags a1,zero +80002d44: 00000613 li a2,0 +80002d48: 24d51463 bne a0,a3,80002f90 +80002d4c: 24c59263 bne a1,a2,80002f90 + +80002d50 : +80002d50: 00d00193 li gp,13 +80002d54: 00001517 auipc a0,0x1 +80002d58: 31c50513 addi a0,a0,796 # 80004070 +80002d5c: 00052007 flw ft0,0(a0) +80002d60: 00452087 flw ft1,4(a0) +80002d64: 00852107 flw ft2,8(a0) +80002d68: 00c52683 lw a3,12(a0) +80002d6c: 281011d3 fmax.s ft3,ft0,ft1 +80002d70: e0018553 fmv.x.w a0,ft3 +80002d74: 001015f3 fsflags a1,zero +80002d78: 00000613 li a2,0 +80002d7c: 20d51a63 bne a0,a3,80002f90 +80002d80: 20c59863 bne a1,a2,80002f90 + +80002d84 : +80002d84: 00e00193 li gp,14 +80002d88: 00001517 auipc a0,0x1 +80002d8c: 2f850513 addi a0,a0,760 # 80004080 +80002d90: 00052007 flw ft0,0(a0) +80002d94: 00452087 flw ft1,4(a0) +80002d98: 00852107 flw ft2,8(a0) +80002d9c: 00c52683 lw a3,12(a0) +80002da0: 281011d3 fmax.s ft3,ft0,ft1 +80002da4: e0018553 fmv.x.w a0,ft3 +80002da8: 001015f3 fsflags a1,zero +80002dac: 00000613 li a2,0 +80002db0: 1ed51063 bne a0,a3,80002f90 +80002db4: 1cc59e63 bne a1,a2,80002f90 + +80002db8 : +80002db8: 00f00193 li gp,15 +80002dbc: 00001517 auipc a0,0x1 +80002dc0: 2d450513 addi a0,a0,724 # 80004090 +80002dc4: 00052007 flw ft0,0(a0) +80002dc8: 00452087 flw ft1,4(a0) +80002dcc: 00852107 flw ft2,8(a0) +80002dd0: 00c52683 lw a3,12(a0) +80002dd4: 281011d3 fmax.s ft3,ft0,ft1 +80002dd8: e0018553 fmv.x.w a0,ft3 +80002ddc: 001015f3 fsflags a1,zero +80002de0: 00000613 li a2,0 +80002de4: 1ad51663 bne a0,a3,80002f90 +80002de8: 1ac59463 bne a1,a2,80002f90 + +80002dec : +80002dec: 01000193 li gp,16 +80002df0: 00001517 auipc a0,0x1 +80002df4: 2b050513 addi a0,a0,688 # 800040a0 +80002df8: 00052007 flw ft0,0(a0) +80002dfc: 00452087 flw ft1,4(a0) +80002e00: 00852107 flw ft2,8(a0) +80002e04: 00c52683 lw a3,12(a0) +80002e08: 281011d3 fmax.s ft3,ft0,ft1 +80002e0c: e0018553 fmv.x.w a0,ft3 +80002e10: 001015f3 fsflags a1,zero +80002e14: 00000613 li a2,0 +80002e18: 16d51c63 bne a0,a3,80002f90 +80002e1c: 16c59a63 bne a1,a2,80002f90 + +80002e20 : +80002e20: 01100193 li gp,17 +80002e24: 00001517 auipc a0,0x1 +80002e28: 28c50513 addi a0,a0,652 # 800040b0 +80002e2c: 00052007 flw ft0,0(a0) +80002e30: 00452087 flw ft1,4(a0) +80002e34: 00852107 flw ft2,8(a0) +80002e38: 00c52683 lw a3,12(a0) +80002e3c: 281011d3 fmax.s ft3,ft0,ft1 +80002e40: e0018553 fmv.x.w a0,ft3 +80002e44: 001015f3 fsflags a1,zero +80002e48: 00000613 li a2,0 +80002e4c: 14d51263 bne a0,a3,80002f90 +80002e50: 14c59063 bne a1,a2,80002f90 + +80002e54 : +80002e54: 01400193 li gp,20 +80002e58: 00001517 auipc a0,0x1 +80002e5c: 26850513 addi a0,a0,616 # 800040c0 +80002e60: 00052007 flw ft0,0(a0) +80002e64: 00452087 flw ft1,4(a0) +80002e68: 00852107 flw ft2,8(a0) +80002e6c: 00c52683 lw a3,12(a0) +80002e70: 281011d3 fmax.s ft3,ft0,ft1 +80002e74: e0018553 fmv.x.w a0,ft3 +80002e78: 001015f3 fsflags a1,zero +80002e7c: 01000613 li a2,16 +80002e80: 10d51863 bne a0,a3,80002f90 +80002e84: 10c59663 bne a1,a2,80002f90 + +80002e88 : +80002e88: 01500193 li gp,21 +80002e8c: 00001517 auipc a0,0x1 +80002e90: 24450513 addi a0,a0,580 # 800040d0 +80002e94: 00052007 flw ft0,0(a0) +80002e98: 00452087 flw ft1,4(a0) +80002e9c: 00852107 flw ft2,8(a0) +80002ea0: 00c52683 lw a3,12(a0) +80002ea4: 281011d3 fmax.s ft3,ft0,ft1 +80002ea8: e0018553 fmv.x.w a0,ft3 +80002eac: 001015f3 fsflags a1,zero +80002eb0: 00000613 li a2,0 +80002eb4: 0cd51e63 bne a0,a3,80002f90 +80002eb8: 0cc59c63 bne a1,a2,80002f90 + +80002ebc : +80002ebc: 01e00193 li gp,30 +80002ec0: 00001517 auipc a0,0x1 +80002ec4: 22050513 addi a0,a0,544 # 800040e0 +80002ec8: 00052007 flw ft0,0(a0) +80002ecc: 00452087 flw ft1,4(a0) +80002ed0: 00852107 flw ft2,8(a0) +80002ed4: 00c52683 lw a3,12(a0) +80002ed8: 281001d3 fmin.s ft3,ft0,ft1 +80002edc: e0018553 fmv.x.w a0,ft3 +80002ee0: 001015f3 fsflags a1,zero +80002ee4: 00000613 li a2,0 +80002ee8: 0ad51463 bne a0,a3,80002f90 +80002eec: 0ac59263 bne a1,a2,80002f90 + +80002ef0 : +80002ef0: 01f00193 li gp,31 +80002ef4: 00001517 auipc a0,0x1 +80002ef8: 1fc50513 addi a0,a0,508 # 800040f0 +80002efc: 00052007 flw ft0,0(a0) +80002f00: 00452087 flw ft1,4(a0) +80002f04: 00852107 flw ft2,8(a0) +80002f08: 00c52683 lw a3,12(a0) +80002f0c: 281001d3 fmin.s ft3,ft0,ft1 +80002f10: e0018553 fmv.x.w a0,ft3 +80002f14: 001015f3 fsflags a1,zero +80002f18: 00000613 li a2,0 +80002f1c: 06d51a63 bne a0,a3,80002f90 +80002f20: 06c59863 bne a1,a2,80002f90 + +80002f24 : +80002f24: 02000193 li gp,32 +80002f28: 00001517 auipc a0,0x1 +80002f2c: 1d850513 addi a0,a0,472 # 80004100 +80002f30: 00052007 flw ft0,0(a0) +80002f34: 00452087 flw ft1,4(a0) +80002f38: 00852107 flw ft2,8(a0) +80002f3c: 00c52683 lw a3,12(a0) +80002f40: 281011d3 fmax.s ft3,ft0,ft1 +80002f44: e0018553 fmv.x.w a0,ft3 +80002f48: 001015f3 fsflags a1,zero +80002f4c: 00000613 li a2,0 +80002f50: 04d51063 bne a0,a3,80002f90 +80002f54: 02c59e63 bne a1,a2,80002f90 + +80002f58 : +80002f58: 02100193 li gp,33 +80002f5c: 00001517 auipc a0,0x1 +80002f60: 1b450513 addi a0,a0,436 # 80004110 +80002f64: 00052007 flw ft0,0(a0) +80002f68: 00452087 flw ft1,4(a0) +80002f6c: 00852107 flw ft2,8(a0) +80002f70: 00c52683 lw a3,12(a0) +80002f74: 281011d3 fmax.s ft3,ft0,ft1 +80002f78: e0018553 fmv.x.w a0,ft3 +80002f7c: 001015f3 fsflags a1,zero +80002f80: 00000613 li a2,0 +80002f84: 00d51663 bne a0,a3,80002f90 +80002f88: 00c59463 bne a1,a2,80002f90 +80002f8c: 00301a63 bne zero,gp,80002fa0 + +80002f90 : +80002f90: 00119513 slli a0,gp,0x1 +80002f94: 00050063 beqz a0,80002f94 +80002f98: 00156513 ori a0,a0,1 +80002f9c: 00000073 ecall + +80002fa0 : +80002fa0: 00100513 li a0,1 +80002fa4: 00000073 ecall +80002fa8: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 0000 unimp +80004002: 4020 lw s0,64(s0) +80004004: 0000 unimp +80004006: 3f80 fld fs0,56(a5) +80004008: 0000 unimp +8000400a: 0000 unimp +8000400c: 0000 unimp +8000400e: 3f80 fld fs0,56(a5) + +80004010 : +80004010: c49a6333 0xc49a6333 +80004014: cccd beqz s1,800040ce +80004016: 3f8c fld fa1,56(a5) +80004018: 0000 unimp +8000401a: 0000 unimp +8000401c: c49a6333 0xc49a6333 + +80004020 : +80004020: cccd beqz s1,800040da +80004022: 3f8c fld fa1,56(a5) +80004024: c49a6333 0xc49a6333 +80004028: 0000 unimp +8000402a: 0000 unimp +8000402c: c49a6333 0xc49a6333 + +80004030 : +80004030: ffff 0xffff +80004032: 7fff 0x7fff +80004034: c49a6333 0xc49a6333 +80004038: 0000 unimp +8000403a: 0000 unimp +8000403c: c49a6333 0xc49a6333 + +80004040 : +80004040: 40490fdb 0x40490fdb +80004044: 322bcc77 0x322bcc77 +80004048: 0000 unimp +8000404a: 0000 unimp +8000404c: 322bcc77 0x322bcc77 + +80004050 : +80004050: 0000 unimp +80004052: bf80 fsd fs0,56(a5) +80004054: 0000 unimp +80004056: c000 sw s0,0(s0) +80004058: 0000 unimp +8000405a: 0000 unimp +8000405c: 0000 unimp +8000405e: c000 sw s0,0(s0) + +80004060 : +80004060: 0000 unimp +80004062: 4020 lw s0,64(s0) +80004064: 0000 unimp +80004066: 3f80 fld fs0,56(a5) +80004068: 0000 unimp +8000406a: 0000 unimp +8000406c: 0000 unimp +8000406e: 4020 lw s0,64(s0) + +80004070 : +80004070: c49a6333 0xc49a6333 +80004074: cccd beqz s1,8000412e +80004076: 3f8c fld fa1,56(a5) +80004078: 0000 unimp +8000407a: 0000 unimp +8000407c: cccd beqz s1,80004136 +8000407e: 3f8c fld fa1,56(a5) + +80004080 : +80004080: cccd beqz s1,8000413a +80004082: 3f8c fld fa1,56(a5) +80004084: c49a6333 0xc49a6333 +80004088: 0000 unimp +8000408a: 0000 unimp +8000408c: cccd beqz s1,80004146 +8000408e: 3f8c fld fa1,56(a5) + +80004090 : +80004090: ffff 0xffff +80004092: 7fff 0x7fff +80004094: c49a6333 0xc49a6333 +80004098: 0000 unimp +8000409a: 0000 unimp +8000409c: c49a6333 0xc49a6333 + +800040a0 : +800040a0: 40490fdb 0x40490fdb +800040a4: 322bcc77 0x322bcc77 +800040a8: 0000 unimp +800040aa: 0000 unimp +800040ac: 40490fdb 0x40490fdb + +800040b0 : +800040b0: 0000 unimp +800040b2: bf80 fsd fs0,56(a5) +800040b4: 0000 unimp +800040b6: c000 sw s0,0(s0) +800040b8: 0000 unimp +800040ba: 0000 unimp +800040bc: 0000 unimp +800040be: bf80 fsd fs0,56(a5) + +800040c0 : +800040c0: 0001 nop +800040c2: 7f80 flw fs0,56(a5) +800040c4: 0000 unimp +800040c6: 3f80 fld fs0,56(a5) +800040c8: 0000 unimp +800040ca: 0000 unimp +800040cc: 0000 unimp +800040ce: 3f80 fld fs0,56(a5) + +800040d0 : +800040d0: ffff 0xffff +800040d2: 7fff 0x7fff +800040d4: ffff 0xffff +800040d6: 7fff 0x7fff +800040d8: 0000 unimp +800040da: 0000 unimp +800040dc: 0000 unimp +800040de: 7fc0 flw fs0,60(a5) + +800040e0 : +800040e0: 0000 unimp +800040e2: 8000 0x8000 +800040e4: 0000 unimp +800040e6: 0000 unimp +800040e8: 0000 unimp +800040ea: 0000 unimp +800040ec: 0000 unimp +800040ee: 8000 0x8000 + +800040f0 : +800040f0: 0000 unimp +800040f2: 0000 unimp +800040f4: 0000 unimp +800040f6: 8000 0x8000 +800040f8: 0000 unimp +800040fa: 0000 unimp +800040fc: 0000 unimp +800040fe: 8000 0x8000 + +80004100 : +80004100: 0000 unimp +80004102: 8000 0x8000 +80004104: 0000 unimp +80004106: 0000 unimp +80004108: 0000 unimp +8000410a: 0000 unimp +8000410c: 0000 unimp +8000410e: 0000 unimp + +80004110 : +80004110: 0000 unimp +80004112: 0000 unimp +80004114: 0000 unimp +80004116: 8000 0x8000 +80004118: 0000 unimp +8000411a: 0000 unimp +8000411c: 0000 unimp +8000411e: 0000 unimp diff --git a/Tests/isa/rv32uf-v-ldst b/Tests/isa/rv32uf-v-ldst new file mode 100644 index 0000000..bb50def Binary files /dev/null and b/Tests/isa/rv32uf-v-ldst differ diff --git a/Tests/isa/rv32uf-v-ldst.dump b/Tests/isa/rv32uf-v-ldst.dump new file mode 100644 index 0000000..52a8bed --- /dev/null +++ b/Tests/isa/rv32uf-v-ldst.dump @@ -0,0 +1,951 @@ + +rv32uf-v-ldst: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 77c58593 addi a1,a1,1916 # 80002c44 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 79858593 addi a1,a1,1944 # 80002cd0 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 74458593 addi a1,a1,1860 # 80002ce8 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 67858593 addi a1,a1,1656 # 80002c88 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 66858593 addi a1,a1,1640 # 80002db0 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5d058593 addi a1,a1,1488 # 80002d8c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4cc60613 addi a2,a2,1228 # 80002ddc +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3dc60613 addi a2,a2,988 # 80002d58 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 35c60613 addi a2,a2,860 # 80002d24 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01500793 li a5,21 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 068257b7 lui a5,0x6825 +80002b9c: 00080637 lui a2,0x80 +80002ba0: cd578793 addi a5,a5,-811 # 6824cd5 <_start-0x797db32b> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 00000597 auipc a1,0x0 +80002be8: 41c58593 addi a1,a1,1052 # 80003000 +80002bec: 0045a087 flw ft1,4(a1) +80002bf0: 0015aa27 fsw ft1,20(a1) +80002bf4: 0145a503 lw a0,20(a1) +80002bf8: 40000eb7 lui t4,0x40000 +80002bfc: 00200193 li gp,2 +80002c00: 03d51463 bne a0,t4,80002c28 + +80002c04 : +80002c04: 00000597 auipc a1,0x0 +80002c08: 3fc58593 addi a1,a1,1020 # 80003000 +80002c0c: 0005a087 flw ft1,0(a1) +80002c10: 0015ac27 fsw ft1,24(a1) +80002c14: 0185a503 lw a0,24(a1) +80002c18: bf800eb7 lui t4,0xbf800 +80002c1c: 00300193 li gp,3 +80002c20: 01d51463 bne a0,t4,80002c28 +80002c24: 00301a63 bne zero,gp,80002c38 + +80002c28 : +80002c28: 00119513 slli a0,gp,0x1 +80002c2c: 00050063 beqz a0,80002c2c +80002c30: 00156513 ori a0,a0,1 +80002c34: 00000073 ecall + +80002c38 : +80002c38: 00100513 li a0,1 +80002c3c: 00000073 ecall +80002c40: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: bf80 fsd fs0,56(a5) +80003004: 0000 unimp +80003006: 4000 lw s0,0(s0) +80003008: 0000 unimp +8000300a: 4040 lw s0,4(s0) +8000300c: 0000 unimp +8000300e: c080 sw s0,0(s1) +80003010: deadbeef jal t4,7ffde5fa <_start-0x21a06> +80003014: babe fsd fa5,368(sp) +80003016: cafe sw t6,84(sp) +80003018: 1dea slli s11,s11,0x3a +8000301a: abad j 80003594 +8000301c: d00d beqz s0,80002f3e +8000301e: lui t1,0x1 diff --git a/Tests/isa/rv32uf-v-move b/Tests/isa/rv32uf-v-move new file mode 100644 index 0000000..7c24ca0 Binary files /dev/null and b/Tests/isa/rv32uf-v-move differ diff --git a/Tests/isa/rv32uf-v-move.dump b/Tests/isa/rv32uf-v-move.dump new file mode 100644 index 0000000..a08545a --- /dev/null +++ b/Tests/isa/rv32uf-v-move.dump @@ -0,0 +1,1113 @@ + +rv32uf-v-move: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9c858593 addi a1,a1,-1592 # 80002e90 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9e458593 addi a1,a1,-1564 # 80002f1c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 99058593 addi a1,a1,-1648 # 80002f34 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8c458593 addi a1,a1,-1852 # 80002ed4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8b458593 addi a1,a1,-1868 # 80002ffc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 81c58593 addi a1,a1,-2020 # 80002fd8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 71860613 addi a2,a2,1816 # 80003028 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 62860613 addi a2,a2,1576 # 80002fa4 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5a860613 addi a2,a2,1448 # 80002f70 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01000793 li a5,16 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0062b7b7 lui a5,0x62b +80002b9c: 00080637 lui a2,0x80 +80002ba0: c9978793 addi a5,a5,-871 # 62ac99 <_start-0x7f9d5367> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero + +80002be4 : +80002be4: 0030d073 csrwi fcsr,1 +80002be8: 00001537 lui a0,0x1 +80002bec: 23450513 addi a0,a0,564 # 1234 <_start-0x7fffedcc> +80002bf0: 003515f3 fssr a1,a0 +80002bf4: 00100e93 li t4,1 +80002bf8: 00200193 li gp,2 +80002bfc: 27d59c63 bne a1,t4,80002e74 + +80002c00 : +80002c00: 00302573 frsr a0 +80002c04: 03400e93 li t4,52 +80002c08: 00300193 li gp,3 +80002c0c: 27d51463 bne a0,t4,80002e74 + +80002c10 : +80002c10: 00102573 frflags a0 +80002c14: 01400e93 li t4,20 +80002c18: 00400193 li gp,4 +80002c1c: 25d51c63 bne a0,t4,80002e74 + +80002c20 : +80002c20: 00215573 fsrmi a0,2 +80002c24: 00100e93 li t4,1 +80002c28: 00500193 li gp,5 +80002c2c: 25d51463 bne a0,t4,80002e74 + +80002c30 : +80002c30: 00302573 frsr a0 +80002c34: 05400e93 li t4,84 +80002c38: 00600193 li gp,6 +80002c3c: 23d51c63 bne a0,t4,80002e74 + +80002c40 : +80002c40: 00127573 csrrci a0,fflags,4 +80002c44: 01400e93 li t4,20 +80002c48: 00700193 li gp,7 +80002c4c: 23d51463 bne a0,t4,80002e74 + +80002c50 : +80002c50: 00302573 frsr a0 +80002c54: 05000e93 li t4,80 +80002c58: 00800193 li gp,8 +80002c5c: 21d51c63 bne a0,t4,80002e74 + +80002c60 : +80002c60: 123455b7 lui a1,0x12345 +80002c64: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80002c68: 00000613 li a2,0 +80002c6c: f00580d3 fmv.w.x ft1,a1 +80002c70: f0060153 fmv.w.x ft2,a2 +80002c74: 20208053 fsgnj.s ft0,ft1,ft2 +80002c78: e0000553 fmv.x.w a0,ft0 +80002c7c: 12345eb7 lui t4,0x12345 +80002c80: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80002c84: 00a00193 li gp,10 +80002c88: 1fd51663 bne a0,t4,80002e74 + +80002c8c : +80002c8c: 123455b7 lui a1,0x12345 +80002c90: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80002c94: fff00613 li a2,-1 +80002c98: f00580d3 fmv.w.x ft1,a1 +80002c9c: f0060153 fmv.w.x ft2,a2 +80002ca0: 20208053 fsgnj.s ft0,ft1,ft2 +80002ca4: e0000553 fmv.x.w a0,ft0 +80002ca8: 92345eb7 lui t4,0x92345 +80002cac: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x1233f280> +80002cb0: 00b00193 li gp,11 +80002cb4: 1dd51063 bne a0,t4,80002e74 + +80002cb8 : +80002cb8: 923455b7 lui a1,0x92345 +80002cbc: 67858593 addi a1,a1,1656 # 92345678 <_end+0x1233f280> +80002cc0: 00000613 li a2,0 +80002cc4: f00580d3 fmv.w.x ft1,a1 +80002cc8: f0060153 fmv.w.x ft2,a2 +80002ccc: 20208053 fsgnj.s ft0,ft1,ft2 +80002cd0: e0000553 fmv.x.w a0,ft0 +80002cd4: 12345eb7 lui t4,0x12345 +80002cd8: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80002cdc: 00c00193 li gp,12 +80002ce0: 19d51a63 bne a0,t4,80002e74 + +80002ce4 : +80002ce4: 923455b7 lui a1,0x92345 +80002ce8: 67858593 addi a1,a1,1656 # 92345678 <_end+0x1233f280> +80002cec: fff00613 li a2,-1 +80002cf0: f00580d3 fmv.w.x ft1,a1 +80002cf4: f0060153 fmv.w.x ft2,a2 +80002cf8: 20208053 fsgnj.s ft0,ft1,ft2 +80002cfc: e0000553 fmv.x.w a0,ft0 +80002d00: 92345eb7 lui t4,0x92345 +80002d04: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x1233f280> +80002d08: 00d00193 li gp,13 +80002d0c: 17d51463 bne a0,t4,80002e74 + +80002d10 : +80002d10: 123455b7 lui a1,0x12345 +80002d14: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80002d18: 00000613 li a2,0 +80002d1c: f00580d3 fmv.w.x ft1,a1 +80002d20: f0060153 fmv.w.x ft2,a2 +80002d24: 20209053 fsgnjn.s ft0,ft1,ft2 +80002d28: e0000553 fmv.x.w a0,ft0 +80002d2c: 92345eb7 lui t4,0x92345 +80002d30: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x1233f280> +80002d34: 01400193 li gp,20 +80002d38: 13d51e63 bne a0,t4,80002e74 + +80002d3c : +80002d3c: 123455b7 lui a1,0x12345 +80002d40: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80002d44: fff00613 li a2,-1 +80002d48: f00580d3 fmv.w.x ft1,a1 +80002d4c: f0060153 fmv.w.x ft2,a2 +80002d50: 20209053 fsgnjn.s ft0,ft1,ft2 +80002d54: e0000553 fmv.x.w a0,ft0 +80002d58: 12345eb7 lui t4,0x12345 +80002d5c: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80002d60: 01500193 li gp,21 +80002d64: 11d51863 bne a0,t4,80002e74 + +80002d68 : +80002d68: 923455b7 lui a1,0x92345 +80002d6c: 67858593 addi a1,a1,1656 # 92345678 <_end+0x1233f280> +80002d70: 00000613 li a2,0 +80002d74: f00580d3 fmv.w.x ft1,a1 +80002d78: f0060153 fmv.w.x ft2,a2 +80002d7c: 20209053 fsgnjn.s ft0,ft1,ft2 +80002d80: e0000553 fmv.x.w a0,ft0 +80002d84: 92345eb7 lui t4,0x92345 +80002d88: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x1233f280> +80002d8c: 01600193 li gp,22 +80002d90: 0fd51263 bne a0,t4,80002e74 + +80002d94 : +80002d94: 923455b7 lui a1,0x92345 +80002d98: 67858593 addi a1,a1,1656 # 92345678 <_end+0x1233f280> +80002d9c: fff00613 li a2,-1 +80002da0: f00580d3 fmv.w.x ft1,a1 +80002da4: f0060153 fmv.w.x ft2,a2 +80002da8: 20209053 fsgnjn.s ft0,ft1,ft2 +80002dac: e0000553 fmv.x.w a0,ft0 +80002db0: 12345eb7 lui t4,0x12345 +80002db4: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80002db8: 01700193 li gp,23 +80002dbc: 0bd51c63 bne a0,t4,80002e74 + +80002dc0 : +80002dc0: 123455b7 lui a1,0x12345 +80002dc4: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80002dc8: 00000613 li a2,0 +80002dcc: f00580d3 fmv.w.x ft1,a1 +80002dd0: f0060153 fmv.w.x ft2,a2 +80002dd4: 2020a053 fsgnjx.s ft0,ft1,ft2 +80002dd8: e0000553 fmv.x.w a0,ft0 +80002ddc: 12345eb7 lui t4,0x12345 +80002de0: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80002de4: 01e00193 li gp,30 +80002de8: 09d51663 bne a0,t4,80002e74 + +80002dec : +80002dec: 123455b7 lui a1,0x12345 +80002df0: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80002df4: fff00613 li a2,-1 +80002df8: f00580d3 fmv.w.x ft1,a1 +80002dfc: f0060153 fmv.w.x ft2,a2 +80002e00: 2020a053 fsgnjx.s ft0,ft1,ft2 +80002e04: e0000553 fmv.x.w a0,ft0 +80002e08: 92345eb7 lui t4,0x92345 +80002e0c: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x1233f280> +80002e10: 01f00193 li gp,31 +80002e14: 07d51063 bne a0,t4,80002e74 + +80002e18 : +80002e18: 923455b7 lui a1,0x92345 +80002e1c: 67858593 addi a1,a1,1656 # 92345678 <_end+0x1233f280> +80002e20: 00000613 li a2,0 +80002e24: f00580d3 fmv.w.x ft1,a1 +80002e28: f0060153 fmv.w.x ft2,a2 +80002e2c: 2020a053 fsgnjx.s ft0,ft1,ft2 +80002e30: e0000553 fmv.x.w a0,ft0 +80002e34: 92345eb7 lui t4,0x92345 +80002e38: 678e8e93 addi t4,t4,1656 # 92345678 <_end+0x1233f280> +80002e3c: 02000193 li gp,32 +80002e40: 03d51a63 bne a0,t4,80002e74 + +80002e44 : +80002e44: 923455b7 lui a1,0x92345 +80002e48: 67858593 addi a1,a1,1656 # 92345678 <_end+0x1233f280> +80002e4c: fff00613 li a2,-1 +80002e50: f00580d3 fmv.w.x ft1,a1 +80002e54: f0060153 fmv.w.x ft2,a2 +80002e58: 2020a053 fsgnjx.s ft0,ft1,ft2 +80002e5c: e0000553 fmv.x.w a0,ft0 +80002e60: 12345eb7 lui t4,0x12345 +80002e64: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80002e68: 02100193 li gp,33 +80002e6c: 01d51463 bne a0,t4,80002e74 +80002e70: 00301a63 bne zero,gp,80002e84 + +80002e74 : +80002e74: 00119513 slli a0,gp,0x1 +80002e78: 00050063 beqz a0,80002e78 +80002e7c: 00156513 ori a0,a0,1 +80002e80: 00000073 ecall + +80002e84 : +80002e84: 00100513 li a0,1 +80002e88: 00000073 ecall +80002e8c: c0001073 unimp diff --git a/Tests/isa/rv32uf-v-recoding b/Tests/isa/rv32uf-v-recoding new file mode 100644 index 0000000..09f9001 Binary files /dev/null and b/Tests/isa/rv32uf-v-recoding differ diff --git a/Tests/isa/rv32uf-v-recoding.dump b/Tests/isa/rv32uf-v-recoding.dump new file mode 100644 index 0000000..66a843b --- /dev/null +++ b/Tests/isa/rv32uf-v-recoding.dump @@ -0,0 +1,967 @@ + +rv32uf-v-recoding: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 7c058593 addi a1,a1,1984 # 80002c88 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7dc58593 addi a1,a1,2012 # 80002d14 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 78858593 addi a1,a1,1928 # 80002d2c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 6bc58593 addi a1,a1,1724 # 80002ccc +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6ac58593 addi a1,a1,1708 # 80002df4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 61458593 addi a1,a1,1556 # 80002dd0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 51060613 addi a2,a2,1296 # 80002e20 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 42060613 addi a2,a2,1056 # 80002d9c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3a060613 addi a2,a2,928 # 80002d68 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03500793 li a5,53 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 08d387b7 lui a5,0x8d38 +80002b9c: 00080637 lui a2,0x80 +80002ba0: e4678793 addi a5,a5,-442 # 8d37e46 <_start-0x772c81ba> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00301073 fssr zero +80002be4: 00000517 auipc a0,0x0 +80002be8: 41c52007 flw ft0,1052(a0) # 80003000 +80002bec: 00000517 auipc a0,0x0 +80002bf0: 41852087 flw ft1,1048(a0) # 80003004 +80002bf4: 1000f0d3 fmul.s ft1,ft1,ft0 + +80002bf8 : +80002bf8: a0102553 feq.s a0,ft0,ft1 +80002bfc: 00100e93 li t4,1 +80002c00: 00200193 li gp,2 +80002c04: 07d51463 bne a0,t4,80002c6c + +80002c08 : +80002c08: a0100553 fle.s a0,ft0,ft1 +80002c0c: 00100e93 li t4,1 +80002c10: 00300193 li gp,3 +80002c14: 05d51c63 bne a0,t4,80002c6c + +80002c18 : +80002c18: a0101553 flt.s a0,ft0,ft1 +80002c1c: 00000e93 li t4,0 +80002c20: 00400193 li gp,4 +80002c24: 05d51463 bne a0,t4,80002c6c +80002c28: d0007053 fcvt.s.w ft0,zero +80002c2c: 00100513 li a0,1 +80002c30: d00570d3 fcvt.s.w ft1,a0 +80002c34: 1000f0d3 fmul.s ft1,ft1,ft0 + +80002c38 : +80002c38: a0102553 feq.s a0,ft0,ft1 +80002c3c: 00100e93 li t4,1 +80002c40: 00500193 li gp,5 +80002c44: 03d51463 bne a0,t4,80002c6c + +80002c48 : +80002c48: a0100553 fle.s a0,ft0,ft1 +80002c4c: 00100e93 li t4,1 +80002c50: 00600193 li gp,6 +80002c54: 01d51c63 bne a0,t4,80002c6c + +80002c58 : +80002c58: a0101553 flt.s a0,ft0,ft1 +80002c5c: 00000e93 li t4,0 +80002c60: 00700193 li gp,7 +80002c64: 01d51463 bne a0,t4,80002c6c +80002c68: 00301a63 bne zero,gp,80002c7c + +80002c6c : +80002c6c: 00119513 slli a0,gp,0x1 +80002c70: 00050063 beqz a0,80002c70 +80002c74: 00156513 ori a0,a0,1 +80002c78: 00000073 ecall + +80002c7c : +80002c7c: 00100513 li a0,1 +80002c80: 00000073 ecall +80002c84: c0001073 unimp + +Disassembly of section .data: + +80003000 : +80003000: 0000 unimp +80003002: ff80 fsw fs0,56(a5) + +80003004 : +80003004: 0000 unimp +80003006: 4040 lw s0,4(s0) diff --git a/Tests/isa/rv32ui-p-add b/Tests/isa/rv32ui-p-add new file mode 100644 index 0000000..0d91324 Binary files /dev/null and b/Tests/isa/rv32ui-p-add differ diff --git a/Tests/isa/rv32ui-p-add.dump b/Tests/isa/rv32ui-p-add.dump new file mode 100644 index 0000000..90edaa4 --- /dev/null +++ b/Tests/isa/rv32ui-p-add.dump @@ -0,0 +1,479 @@ + +rv32ui-p-add: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00000113 li sp,0 +80000104: 00208f33 add t5,ra,sp +80000108: 00000e93 li t4,0 +8000010c: 00200193 li gp,2 +80000110: 4ddf1663 bne t5,t4,800005dc + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 00208f33 add t5,ra,sp +80000120: 00200e93 li t4,2 +80000124: 00300193 li gp,3 +80000128: 4bdf1a63 bne t5,t4,800005dc + +8000012c : +8000012c: 00300093 li ra,3 +80000130: 00700113 li sp,7 +80000134: 00208f33 add t5,ra,sp +80000138: 00a00e93 li t4,10 +8000013c: 00400193 li gp,4 +80000140: 49df1e63 bne t5,t4,800005dc + +80000144 : +80000144: 00000093 li ra,0 +80000148: ffff8137 lui sp,0xffff8 +8000014c: 00208f33 add t5,ra,sp +80000150: ffff8eb7 lui t4,0xffff8 +80000154: 00500193 li gp,5 +80000158: 49df1263 bne t5,t4,800005dc + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00000113 li sp,0 +80000164: 00208f33 add t5,ra,sp +80000168: 80000eb7 lui t4,0x80000 +8000016c: 00600193 li gp,6 +80000170: 47df1663 bne t5,t4,800005dc + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: ffff8137 lui sp,0xffff8 +8000017c: 00208f33 add t5,ra,sp +80000180: 7fff8eb7 lui t4,0x7fff8 +80000184: 00700193 li gp,7 +80000188: 45df1a63 bne t5,t4,800005dc + +8000018c : +8000018c: 00000093 li ra,0 +80000190: 00008137 lui sp,0x8 +80000194: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80000198: 00208f33 add t5,ra,sp +8000019c: 00008eb7 lui t4,0x8 +800001a0: fffe8e93 addi t4,t4,-1 # 7fff <_start-0x7fff8001> +800001a4: 00800193 li gp,8 +800001a8: 43df1a63 bne t5,t4,800005dc + +800001ac : +800001ac: 800000b7 lui ra,0x80000 +800001b0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001b4: 00000113 li sp,0 +800001b8: 00208f33 add t5,ra,sp +800001bc: 80000eb7 lui t4,0x80000 +800001c0: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> +800001c4: 00900193 li gp,9 +800001c8: 41df1a63 bne t5,t4,800005dc + +800001cc : +800001cc: 800000b7 lui ra,0x80000 +800001d0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001d4: 00008137 lui sp,0x8 +800001d8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001dc: 00208f33 add t5,ra,sp +800001e0: 80008eb7 lui t4,0x80008 +800001e4: ffee8e93 addi t4,t4,-2 # 80007ffe <_end+0x5ffe> +800001e8: 00a00193 li gp,10 +800001ec: 3fdf1863 bne t5,t4,800005dc + +800001f0 : +800001f0: 800000b7 lui ra,0x80000 +800001f4: 00008137 lui sp,0x8 +800001f8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001fc: 00208f33 add t5,ra,sp +80000200: 80008eb7 lui t4,0x80008 +80000204: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x5fff> +80000208: 00b00193 li gp,11 +8000020c: 3ddf1863 bne t5,t4,800005dc + +80000210 : +80000210: 800000b7 lui ra,0x80000 +80000214: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000218: ffff8137 lui sp,0xffff8 +8000021c: 00208f33 add t5,ra,sp +80000220: 7fff8eb7 lui t4,0x7fff8 +80000224: fffe8e93 addi t4,t4,-1 # 7fff7fff <_start-0x8001> +80000228: 00c00193 li gp,12 +8000022c: 3bdf1863 bne t5,t4,800005dc + +80000230 : +80000230: 00000093 li ra,0 +80000234: fff00113 li sp,-1 +80000238: 00208f33 add t5,ra,sp +8000023c: fff00e93 li t4,-1 +80000240: 00d00193 li gp,13 +80000244: 39df1c63 bne t5,t4,800005dc + +80000248 : +80000248: fff00093 li ra,-1 +8000024c: 00100113 li sp,1 +80000250: 00208f33 add t5,ra,sp +80000254: 00000e93 li t4,0 +80000258: 00e00193 li gp,14 +8000025c: 39df1063 bne t5,t4,800005dc + +80000260 : +80000260: fff00093 li ra,-1 +80000264: fff00113 li sp,-1 +80000268: 00208f33 add t5,ra,sp +8000026c: ffe00e93 li t4,-2 +80000270: 00f00193 li gp,15 +80000274: 37df1463 bne t5,t4,800005dc + +80000278 : +80000278: 00100093 li ra,1 +8000027c: 80000137 lui sp,0x80000 +80000280: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffffdfff> +80000284: 00208f33 add t5,ra,sp +80000288: 80000eb7 lui t4,0x80000 +8000028c: 01000193 li gp,16 +80000290: 35df1663 bne t5,t4,800005dc + +80000294 : +80000294: 00d00093 li ra,13 +80000298: 00b00113 li sp,11 +8000029c: 002080b3 add ra,ra,sp +800002a0: 01800e93 li t4,24 +800002a4: 01100193 li gp,17 +800002a8: 33d09a63 bne ra,t4,800005dc + +800002ac : +800002ac: 00e00093 li ra,14 +800002b0: 00b00113 li sp,11 +800002b4: 00208133 add sp,ra,sp +800002b8: 01900e93 li t4,25 +800002bc: 01200193 li gp,18 +800002c0: 31d11e63 bne sp,t4,800005dc + +800002c4 : +800002c4: 00d00093 li ra,13 +800002c8: 001080b3 add ra,ra,ra +800002cc: 01a00e93 li t4,26 +800002d0: 01300193 li gp,19 +800002d4: 31d09463 bne ra,t4,800005dc + +800002d8 : +800002d8: 00000213 li tp,0 +800002dc: 00d00093 li ra,13 +800002e0: 00b00113 li sp,11 +800002e4: 00208f33 add t5,ra,sp +800002e8: 000f0313 mv t1,t5 +800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f0: 00200293 li t0,2 +800002f4: fe5214e3 bne tp,t0,800002dc +800002f8: 01800e93 li t4,24 +800002fc: 01400193 li gp,20 +80000300: 2dd31e63 bne t1,t4,800005dc + +80000304 : +80000304: 00000213 li tp,0 +80000308: 00e00093 li ra,14 +8000030c: 00b00113 li sp,11 +80000310: 00208f33 add t5,ra,sp +80000314: 00000013 nop +80000318: 000f0313 mv t1,t5 +8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000320: 00200293 li t0,2 +80000324: fe5212e3 bne tp,t0,80000308 +80000328: 01900e93 li t4,25 +8000032c: 01500193 li gp,21 +80000330: 2bd31663 bne t1,t4,800005dc + +80000334 : +80000334: 00000213 li tp,0 +80000338: 00f00093 li ra,15 +8000033c: 00b00113 li sp,11 +80000340: 00208f33 add t5,ra,sp +80000344: 00000013 nop +80000348: 00000013 nop +8000034c: 000f0313 mv t1,t5 +80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000354: 00200293 li t0,2 +80000358: fe5210e3 bne tp,t0,80000338 +8000035c: 01a00e93 li t4,26 +80000360: 01600193 li gp,22 +80000364: 27d31c63 bne t1,t4,800005dc + +80000368 : +80000368: 00000213 li tp,0 +8000036c: 00d00093 li ra,13 +80000370: 00b00113 li sp,11 +80000374: 00208f33 add t5,ra,sp +80000378: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000037c: 00200293 li t0,2 +80000380: fe5216e3 bne tp,t0,8000036c +80000384: 01800e93 li t4,24 +80000388: 01700193 li gp,23 +8000038c: 25df1863 bne t5,t4,800005dc + +80000390 : +80000390: 00000213 li tp,0 +80000394: 00e00093 li ra,14 +80000398: 00b00113 li sp,11 +8000039c: 00000013 nop +800003a0: 00208f33 add t5,ra,sp +800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003a8: 00200293 li t0,2 +800003ac: fe5214e3 bne tp,t0,80000394 +800003b0: 01900e93 li t4,25 +800003b4: 01800193 li gp,24 +800003b8: 23df1263 bne t5,t4,800005dc + +800003bc : +800003bc: 00000213 li tp,0 +800003c0: 00f00093 li ra,15 +800003c4: 00b00113 li sp,11 +800003c8: 00000013 nop +800003cc: 00000013 nop +800003d0: 00208f33 add t5,ra,sp +800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003d8: 00200293 li t0,2 +800003dc: fe5212e3 bne tp,t0,800003c0 +800003e0: 01a00e93 li t4,26 +800003e4: 01900193 li gp,25 +800003e8: 1fdf1a63 bne t5,t4,800005dc + +800003ec : +800003ec: 00000213 li tp,0 +800003f0: 00d00093 li ra,13 +800003f4: 00000013 nop +800003f8: 00b00113 li sp,11 +800003fc: 00208f33 add t5,ra,sp +80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000404: 00200293 li t0,2 +80000408: fe5214e3 bne tp,t0,800003f0 +8000040c: 01800e93 li t4,24 +80000410: 01a00193 li gp,26 +80000414: 1ddf1463 bne t5,t4,800005dc + +80000418 : +80000418: 00000213 li tp,0 +8000041c: 00e00093 li ra,14 +80000420: 00000013 nop +80000424: 00b00113 li sp,11 +80000428: 00000013 nop +8000042c: 00208f33 add t5,ra,sp +80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000434: 00200293 li t0,2 +80000438: fe5212e3 bne tp,t0,8000041c +8000043c: 01900e93 li t4,25 +80000440: 01b00193 li gp,27 +80000444: 19df1c63 bne t5,t4,800005dc + +80000448 : +80000448: 00000213 li tp,0 +8000044c: 00f00093 li ra,15 +80000450: 00000013 nop +80000454: 00000013 nop +80000458: 00b00113 li sp,11 +8000045c: 00208f33 add t5,ra,sp +80000460: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000464: 00200293 li t0,2 +80000468: fe5212e3 bne tp,t0,8000044c +8000046c: 01a00e93 li t4,26 +80000470: 01c00193 li gp,28 +80000474: 17df1463 bne t5,t4,800005dc + +80000478 : +80000478: 00000213 li tp,0 +8000047c: 00b00113 li sp,11 +80000480: 00d00093 li ra,13 +80000484: 00208f33 add t5,ra,sp +80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000048c: 00200293 li t0,2 +80000490: fe5216e3 bne tp,t0,8000047c +80000494: 01800e93 li t4,24 +80000498: 01d00193 li gp,29 +8000049c: 15df1063 bne t5,t4,800005dc + +800004a0 : +800004a0: 00000213 li tp,0 +800004a4: 00b00113 li sp,11 +800004a8: 00e00093 li ra,14 +800004ac: 00000013 nop +800004b0: 00208f33 add t5,ra,sp +800004b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004b8: 00200293 li t0,2 +800004bc: fe5214e3 bne tp,t0,800004a4 +800004c0: 01900e93 li t4,25 +800004c4: 01e00193 li gp,30 +800004c8: 11df1a63 bne t5,t4,800005dc + +800004cc : +800004cc: 00000213 li tp,0 +800004d0: 00b00113 li sp,11 +800004d4: 00f00093 li ra,15 +800004d8: 00000013 nop +800004dc: 00000013 nop +800004e0: 00208f33 add t5,ra,sp +800004e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004e8: 00200293 li t0,2 +800004ec: fe5212e3 bne tp,t0,800004d0 +800004f0: 01a00e93 li t4,26 +800004f4: 01f00193 li gp,31 +800004f8: 0fdf1263 bne t5,t4,800005dc + +800004fc : +800004fc: 00000213 li tp,0 +80000500: 00b00113 li sp,11 +80000504: 00000013 nop +80000508: 00d00093 li ra,13 +8000050c: 00208f33 add t5,ra,sp +80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000514: 00200293 li t0,2 +80000518: fe5214e3 bne tp,t0,80000500 +8000051c: 01800e93 li t4,24 +80000520: 02000193 li gp,32 +80000524: 0bdf1c63 bne t5,t4,800005dc + +80000528 : +80000528: 00000213 li tp,0 +8000052c: 00b00113 li sp,11 +80000530: 00000013 nop +80000534: 00e00093 li ra,14 +80000538: 00000013 nop +8000053c: 00208f33 add t5,ra,sp +80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000544: 00200293 li t0,2 +80000548: fe5212e3 bne tp,t0,8000052c +8000054c: 01900e93 li t4,25 +80000550: 02100193 li gp,33 +80000554: 09df1463 bne t5,t4,800005dc + +80000558 : +80000558: 00000213 li tp,0 +8000055c: 00b00113 li sp,11 +80000560: 00000013 nop +80000564: 00000013 nop +80000568: 00f00093 li ra,15 +8000056c: 00208f33 add t5,ra,sp +80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000574: 00200293 li t0,2 +80000578: fe5212e3 bne tp,t0,8000055c +8000057c: 01a00e93 li t4,26 +80000580: 02200193 li gp,34 +80000584: 05df1c63 bne t5,t4,800005dc + +80000588 : +80000588: 00f00093 li ra,15 +8000058c: 00100133 add sp,zero,ra +80000590: 00f00e93 li t4,15 +80000594: 02300193 li gp,35 +80000598: 05d11263 bne sp,t4,800005dc + +8000059c : +8000059c: 02000093 li ra,32 +800005a0: 00008133 add sp,ra,zero +800005a4: 02000e93 li t4,32 +800005a8: 02400193 li gp,36 +800005ac: 03d11863 bne sp,t4,800005dc + +800005b0 : +800005b0: 000000b3 add ra,zero,zero +800005b4: 00000e93 li t4,0 +800005b8: 02500193 li gp,37 +800005bc: 03d09063 bne ra,t4,800005dc + +800005c0 : +800005c0: 01000093 li ra,16 +800005c4: 01e00113 li sp,30 +800005c8: 00208033 add zero,ra,sp +800005cc: 00000e93 li t4,0 +800005d0: 02600193 li gp,38 +800005d4: 01d01463 bne zero,t4,800005dc +800005d8: 00301c63 bne zero,gp,800005f0 + +800005dc : +800005dc: 0ff0000f fence +800005e0: 00018063 beqz gp,800005e0 +800005e4: 00119193 slli gp,gp,0x1 +800005e8: 0011e193 ori gp,gp,1 +800005ec: 00000073 ecall + +800005f0 : +800005f0: 0ff0000f fence +800005f4: 00100193 li gp,1 +800005f8: 00000073 ecall +800005fc: c0001073 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32ui-p-addi b/Tests/isa/rv32ui-p-addi new file mode 100644 index 0000000..b809c3a Binary files /dev/null and b/Tests/isa/rv32ui-p-addi differ diff --git a/Tests/isa/rv32ui-p-addi.dump b/Tests/isa/rv32ui-p-addi.dump new file mode 100644 index 0000000..d72c7b3 --- /dev/null +++ b/Tests/isa/rv32ui-p-addi.dump @@ -0,0 +1,315 @@ + +rv32ui-p-addi: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00008f13 mv t5,ra +80000104: 00000e93 li t4,0 +80000108: 00200193 li gp,2 +8000010c: 27df1c63 bne t5,t4,80000384 + +80000110 : +80000110: 00100093 li ra,1 +80000114: 00108f13 addi t5,ra,1 +80000118: 00200e93 li t4,2 +8000011c: 00300193 li gp,3 +80000120: 27df1263 bne t5,t4,80000384 + +80000124 : +80000124: 00300093 li ra,3 +80000128: 00708f13 addi t5,ra,7 +8000012c: 00a00e93 li t4,10 +80000130: 00400193 li gp,4 +80000134: 25df1863 bne t5,t4,80000384 + +80000138 : +80000138: 00000093 li ra,0 +8000013c: 80008f13 addi t5,ra,-2048 +80000140: 80000e93 li t4,-2048 +80000144: 00500193 li gp,5 +80000148: 23df1e63 bne t5,t4,80000384 + +8000014c : +8000014c: 800000b7 lui ra,0x80000 +80000150: 00008f13 mv t5,ra +80000154: 80000eb7 lui t4,0x80000 +80000158: 00600193 li gp,6 +8000015c: 23df1463 bne t5,t4,80000384 + +80000160 : +80000160: 800000b7 lui ra,0x80000 +80000164: 80008f13 addi t5,ra,-2048 # 7ffff800 <_end+0xffffd800> +80000168: 80000eb7 lui t4,0x80000 +8000016c: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd800> +80000170: 00700193 li gp,7 +80000174: 21df1863 bne t5,t4,80000384 + +80000178 : +80000178: 00000093 li ra,0 +8000017c: 7ff08f13 addi t5,ra,2047 +80000180: 7ff00e93 li t4,2047 +80000184: 00800193 li gp,8 +80000188: 1fdf1e63 bne t5,t4,80000384 + +8000018c : +8000018c: 800000b7 lui ra,0x80000 +80000190: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000194: 00008f13 mv t5,ra +80000198: 80000eb7 lui t4,0x80000 +8000019c: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> +800001a0: 00900193 li gp,9 +800001a4: 1fdf1063 bne t5,t4,80000384 + +800001a8 : +800001a8: 800000b7 lui ra,0x80000 +800001ac: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001b0: 7ff08f13 addi t5,ra,2047 +800001b4: 80000eb7 lui t4,0x80000 +800001b8: 7fee8e93 addi t4,t4,2046 # 800007fe <_end+0xffffe7fe> +800001bc: 00a00193 li gp,10 +800001c0: 1ddf1263 bne t5,t4,80000384 + +800001c4 : +800001c4: 800000b7 lui ra,0x80000 +800001c8: 7ff08f13 addi t5,ra,2047 # 800007ff <_end+0xffffe7ff> +800001cc: 80000eb7 lui t4,0x80000 +800001d0: 7ffe8e93 addi t4,t4,2047 # 800007ff <_end+0xffffe7ff> +800001d4: 00b00193 li gp,11 +800001d8: 1bdf1663 bne t5,t4,80000384 + +800001dc : +800001dc: 800000b7 lui ra,0x80000 +800001e0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001e4: 80008f13 addi t5,ra,-2048 +800001e8: 7ffffeb7 lui t4,0x7ffff +800001ec: 7ffe8e93 addi t4,t4,2047 # 7ffff7ff <_start-0x801> +800001f0: 00c00193 li gp,12 +800001f4: 19df1863 bne t5,t4,80000384 + +800001f8 : +800001f8: 00000093 li ra,0 +800001fc: fff08f13 addi t5,ra,-1 +80000200: fff00e93 li t4,-1 +80000204: 00d00193 li gp,13 +80000208: 17df1e63 bne t5,t4,80000384 + +8000020c : +8000020c: fff00093 li ra,-1 +80000210: 00108f13 addi t5,ra,1 +80000214: 00000e93 li t4,0 +80000218: 00e00193 li gp,14 +8000021c: 17df1463 bne t5,t4,80000384 + +80000220 : +80000220: fff00093 li ra,-1 +80000224: fff08f13 addi t5,ra,-1 +80000228: ffe00e93 li t4,-2 +8000022c: 00f00193 li gp,15 +80000230: 15df1a63 bne t5,t4,80000384 + +80000234 : +80000234: 800000b7 lui ra,0x80000 +80000238: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +8000023c: 00108f13 addi t5,ra,1 +80000240: 80000eb7 lui t4,0x80000 +80000244: 01000193 li gp,16 +80000248: 13df1e63 bne t5,t4,80000384 + +8000024c : +8000024c: 00d00093 li ra,13 +80000250: 00b08093 addi ra,ra,11 +80000254: 01800e93 li t4,24 +80000258: 01100193 li gp,17 +8000025c: 13d09463 bne ra,t4,80000384 + +80000260 : +80000260: 00000213 li tp,0 +80000264: 00d00093 li ra,13 +80000268: 00b08f13 addi t5,ra,11 +8000026c: 000f0313 mv t1,t5 +80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000274: 00200293 li t0,2 +80000278: fe5216e3 bne tp,t0,80000264 +8000027c: 01800e93 li t4,24 +80000280: 01200193 li gp,18 +80000284: 11d31063 bne t1,t4,80000384 + +80000288 : +80000288: 00000213 li tp,0 +8000028c: 00d00093 li ra,13 +80000290: 00a08f13 addi t5,ra,10 +80000294: 00000013 nop +80000298: 000f0313 mv t1,t5 +8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a0: 00200293 li t0,2 +800002a4: fe5214e3 bne tp,t0,8000028c +800002a8: 01700e93 li t4,23 +800002ac: 01300193 li gp,19 +800002b0: 0dd31a63 bne t1,t4,80000384 + +800002b4 : +800002b4: 00000213 li tp,0 +800002b8: 00d00093 li ra,13 +800002bc: 00908f13 addi t5,ra,9 +800002c0: 00000013 nop +800002c4: 00000013 nop +800002c8: 000f0313 mv t1,t5 +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5212e3 bne tp,t0,800002b8 +800002d8: 01600e93 li t4,22 +800002dc: 01400193 li gp,20 +800002e0: 0bd31263 bne t1,t4,80000384 + +800002e4 : +800002e4: 00000213 li tp,0 +800002e8: 00d00093 li ra,13 +800002ec: 00b08f13 addi t5,ra,11 +800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f4: 00200293 li t0,2 +800002f8: fe5218e3 bne tp,t0,800002e8 +800002fc: 01800e93 li t4,24 +80000300: 01500193 li gp,21 +80000304: 09df1063 bne t5,t4,80000384 + +80000308 : +80000308: 00000213 li tp,0 +8000030c: 00d00093 li ra,13 +80000310: 00000013 nop +80000314: 00a08f13 addi t5,ra,10 +80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000031c: 00200293 li t0,2 +80000320: fe5216e3 bne tp,t0,8000030c +80000324: 01700e93 li t4,23 +80000328: 01600193 li gp,22 +8000032c: 05df1c63 bne t5,t4,80000384 + +80000330 : +80000330: 00000213 li tp,0 +80000334: 00d00093 li ra,13 +80000338: 00000013 nop +8000033c: 00000013 nop +80000340: 00908f13 addi t5,ra,9 +80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000348: 00200293 li t0,2 +8000034c: fe5214e3 bne tp,t0,80000334 +80000350: 01600e93 li t4,22 +80000354: 01700193 li gp,23 +80000358: 03df1663 bne t5,t4,80000384 + +8000035c : +8000035c: 02000093 li ra,32 +80000360: 02000e93 li t4,32 +80000364: 01800193 li gp,24 +80000368: 01d09e63 bne ra,t4,80000384 + +8000036c : +8000036c: 02100093 li ra,33 +80000370: 03208013 addi zero,ra,50 +80000374: 00000e93 li t4,0 +80000378: 01900193 li gp,25 +8000037c: 01d01463 bne zero,t4,80000384 +80000380: 00301c63 bne zero,gp,80000398 + +80000384 : +80000384: 0ff0000f fence +80000388: 00018063 beqz gp,80000388 +8000038c: 00119193 slli gp,gp,0x1 +80000390: 0011e193 ori gp,gp,1 +80000394: 00000073 ecall + +80000398 : +80000398: 0ff0000f fence +8000039c: 00100193 li gp,1 +800003a0: 00000073 ecall +800003a4: c0001073 unimp +800003a8: 0000 unimp +800003aa: 0000 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp diff --git a/Tests/isa/rv32ui-p-and b/Tests/isa/rv32ui-p-and new file mode 100644 index 0000000..3699041 Binary files /dev/null and b/Tests/isa/rv32ui-p-and differ diff --git a/Tests/isa/rv32ui-p-and.dump b/Tests/isa/rv32ui-p-and.dump new file mode 100644 index 0000000..ee8af53 --- /dev/null +++ b/Tests/isa/rv32ui-p-and.dump @@ -0,0 +1,467 @@ + +rv32ui-p-and: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: ff0100b7 lui ra,0xff010 +80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000104: 0f0f1137 lui sp,0xf0f1 +80000108: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +8000010c: 0020ff33 and t5,ra,sp +80000110: 0f001eb7 lui t4,0xf001 +80000114: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80000118: 00200193 li gp,2 +8000011c: 49df1c63 bne t5,t4,800005b4 + +80000120 : +80000120: 0ff010b7 lui ra,0xff01 +80000124: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000128: f0f0f137 lui sp,0xf0f0f +8000012c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000130: 0020ff33 and t5,ra,sp +80000134: 00f00eb7 lui t4,0xf00 +80000138: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +8000013c: 00300193 li gp,3 +80000140: 47df1a63 bne t5,t4,800005b4 + +80000144 : +80000144: 00ff00b7 lui ra,0xff0 +80000148: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000014c: 0f0f1137 lui sp,0xf0f1 +80000150: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000154: 0020ff33 and t5,ra,sp +80000158: 000f0eb7 lui t4,0xf0 +8000015c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80000160: 00400193 li gp,4 +80000164: 45df1863 bne t5,t4,800005b4 + +80000168 : +80000168: f00ff0b7 lui ra,0xf00ff +8000016c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +80000170: f0f0f137 lui sp,0xf0f0f +80000174: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000178: 0020ff33 and t5,ra,sp +8000017c: f000feb7 lui t4,0xf000f +80000180: 00500193 li gp,5 +80000184: 43df1863 bne t5,t4,800005b4 + +80000188 : +80000188: ff0100b7 lui ra,0xff010 +8000018c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000190: 0f0f1137 lui sp,0xf0f1 +80000194: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000198: 0020f0b3 and ra,ra,sp +8000019c: 0f001eb7 lui t4,0xf001 +800001a0: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +800001a4: 00600193 li gp,6 +800001a8: 41d09663 bne ra,t4,800005b4 + +800001ac : +800001ac: 0ff010b7 lui ra,0xff01 +800001b0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +800001b4: f0f0f137 lui sp,0xf0f0f +800001b8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +800001bc: 0020f133 and sp,ra,sp +800001c0: 00f00eb7 lui t4,0xf00 +800001c4: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +800001c8: 00700193 li gp,7 +800001cc: 3fd11463 bne sp,t4,800005b4 + +800001d0 : +800001d0: ff0100b7 lui ra,0xff010 +800001d4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001d8: 0010f0b3 and ra,ra,ra +800001dc: ff010eb7 lui t4,0xff010 +800001e0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +800001e4: 00800193 li gp,8 +800001e8: 3dd09663 bne ra,t4,800005b4 + +800001ec : +800001ec: 00000213 li tp,0 +800001f0: ff0100b7 lui ra,0xff010 +800001f4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001f8: 0f0f1137 lui sp,0xf0f1 +800001fc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000200: 0020ff33 and t5,ra,sp +80000204: 000f0313 mv t1,t5 +80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000020c: 00200293 li t0,2 +80000210: fe5210e3 bne tp,t0,800001f0 +80000214: 0f001eb7 lui t4,0xf001 +80000218: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +8000021c: 00900193 li gp,9 +80000220: 39d31a63 bne t1,t4,800005b4 + +80000224 : +80000224: 00000213 li tp,0 +80000228: 0ff010b7 lui ra,0xff01 +8000022c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000230: f0f0f137 lui sp,0xf0f0f +80000234: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000238: 0020ff33 and t5,ra,sp +8000023c: 00000013 nop +80000240: 000f0313 mv t1,t5 +80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000248: 00200293 li t0,2 +8000024c: fc521ee3 bne tp,t0,80000228 +80000250: 00f00eb7 lui t4,0xf00 +80000254: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80000258: 00a00193 li gp,10 +8000025c: 35d31c63 bne t1,t4,800005b4 + +80000260 : +80000260: 00000213 li tp,0 +80000264: 00ff00b7 lui ra,0xff0 +80000268: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000026c: 0f0f1137 lui sp,0xf0f1 +80000270: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000274: 0020ff33 and t5,ra,sp +80000278: 00000013 nop +8000027c: 00000013 nop +80000280: 000f0313 mv t1,t5 +80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000288: 00200293 li t0,2 +8000028c: fc521ce3 bne tp,t0,80000264 +80000290: 000f0eb7 lui t4,0xf0 +80000294: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80000298: 00b00193 li gp,11 +8000029c: 31d31c63 bne t1,t4,800005b4 + +800002a0 : +800002a0: 00000213 li tp,0 +800002a4: ff0100b7 lui ra,0xff010 +800002a8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800002ac: 0f0f1137 lui sp,0xf0f1 +800002b0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800002b4: 0020ff33 and t5,ra,sp +800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002bc: 00200293 li t0,2 +800002c0: fe5212e3 bne tp,t0,800002a4 +800002c4: 0f001eb7 lui t4,0xf001 +800002c8: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +800002cc: 00c00193 li gp,12 +800002d0: 2fdf1263 bne t5,t4,800005b4 + +800002d4 : +800002d4: 00000213 li tp,0 +800002d8: 0ff010b7 lui ra,0xff01 +800002dc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +800002e0: f0f0f137 lui sp,0xf0f0f +800002e4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +800002e8: 00000013 nop +800002ec: 0020ff33 and t5,ra,sp +800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f4: 00200293 li t0,2 +800002f8: fe5210e3 bne tp,t0,800002d8 +800002fc: 00f00eb7 lui t4,0xf00 +80000300: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80000304: 00d00193 li gp,13 +80000308: 2bdf1663 bne t5,t4,800005b4 + +8000030c : +8000030c: 00000213 li tp,0 +80000310: 00ff00b7 lui ra,0xff0 +80000314: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000318: 0f0f1137 lui sp,0xf0f1 +8000031c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000320: 00000013 nop +80000324: 00000013 nop +80000328: 0020ff33 and t5,ra,sp +8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000330: 00200293 li t0,2 +80000334: fc521ee3 bne tp,t0,80000310 +80000338: 000f0eb7 lui t4,0xf0 +8000033c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80000340: 00e00193 li gp,14 +80000344: 27df1863 bne t5,t4,800005b4 + +80000348 : +80000348: 00000213 li tp,0 +8000034c: ff0100b7 lui ra,0xff010 +80000350: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000354: 00000013 nop +80000358: 0f0f1137 lui sp,0xf0f1 +8000035c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000360: 0020ff33 and t5,ra,sp +80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000368: 00200293 li t0,2 +8000036c: fe5210e3 bne tp,t0,8000034c +80000370: 0f001eb7 lui t4,0xf001 +80000374: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80000378: 00f00193 li gp,15 +8000037c: 23df1c63 bne t5,t4,800005b4 + +80000380 : +80000380: 00000213 li tp,0 +80000384: 0ff010b7 lui ra,0xff01 +80000388: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +8000038c: 00000013 nop +80000390: f0f0f137 lui sp,0xf0f0f +80000394: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000398: 00000013 nop +8000039c: 0020ff33 and t5,ra,sp +800003a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003a4: 00200293 li t0,2 +800003a8: fc521ee3 bne tp,t0,80000384 +800003ac: 00f00eb7 lui t4,0xf00 +800003b0: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +800003b4: 01000193 li gp,16 +800003b8: 1fdf1e63 bne t5,t4,800005b4 + +800003bc : +800003bc: 00000213 li tp,0 +800003c0: 00ff00b7 lui ra,0xff0 +800003c4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800003c8: 00000013 nop +800003cc: 00000013 nop +800003d0: 0f0f1137 lui sp,0xf0f1 +800003d4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800003d8: 0020ff33 and t5,ra,sp +800003dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003e0: 00200293 li t0,2 +800003e4: fc521ee3 bne tp,t0,800003c0 +800003e8: 000f0eb7 lui t4,0xf0 +800003ec: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +800003f0: 01100193 li gp,17 +800003f4: 1ddf1063 bne t5,t4,800005b4 + +800003f8 : +800003f8: 00000213 li tp,0 +800003fc: 0f0f1137 lui sp,0xf0f1 +80000400: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000404: ff0100b7 lui ra,0xff010 +80000408: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +8000040c: 0020ff33 and t5,ra,sp +80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000414: 00200293 li t0,2 +80000418: fe5212e3 bne tp,t0,800003fc +8000041c: 0f001eb7 lui t4,0xf001 +80000420: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80000424: 01200193 li gp,18 +80000428: 19df1663 bne t5,t4,800005b4 + +8000042c : +8000042c: 00000213 li tp,0 +80000430: f0f0f137 lui sp,0xf0f0f +80000434: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000438: 0ff010b7 lui ra,0xff01 +8000043c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000440: 00000013 nop +80000444: 0020ff33 and t5,ra,sp +80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000044c: 00200293 li t0,2 +80000450: fe5210e3 bne tp,t0,80000430 +80000454: 00f00eb7 lui t4,0xf00 +80000458: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +8000045c: 01300193 li gp,19 +80000460: 15df1a63 bne t5,t4,800005b4 + +80000464 : +80000464: 00000213 li tp,0 +80000468: 0f0f1137 lui sp,0xf0f1 +8000046c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000470: 00ff00b7 lui ra,0xff0 +80000474: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000478: 00000013 nop +8000047c: 00000013 nop +80000480: 0020ff33 and t5,ra,sp +80000484: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000488: 00200293 li t0,2 +8000048c: fc521ee3 bne tp,t0,80000468 +80000490: 000f0eb7 lui t4,0xf0 +80000494: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80000498: 01400193 li gp,20 +8000049c: 11df1c63 bne t5,t4,800005b4 + +800004a0 : +800004a0: 00000213 li tp,0 +800004a4: 0f0f1137 lui sp,0xf0f1 +800004a8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800004ac: 00000013 nop +800004b0: ff0100b7 lui ra,0xff010 +800004b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800004b8: 0020ff33 and t5,ra,sp +800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004c0: 00200293 li t0,2 +800004c4: fe5210e3 bne tp,t0,800004a4 +800004c8: 0f001eb7 lui t4,0xf001 +800004cc: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +800004d0: 01500193 li gp,21 +800004d4: 0fdf1063 bne t5,t4,800005b4 + +800004d8 : +800004d8: 00000213 li tp,0 +800004dc: f0f0f137 lui sp,0xf0f0f +800004e0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +800004e4: 00000013 nop +800004e8: 0ff010b7 lui ra,0xff01 +800004ec: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +800004f0: 00000013 nop +800004f4: 0020ff33 and t5,ra,sp +800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004fc: 00200293 li t0,2 +80000500: fc521ee3 bne tp,t0,800004dc +80000504: 00f00eb7 lui t4,0xf00 +80000508: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +8000050c: 01600193 li gp,22 +80000510: 0bdf1263 bne t5,t4,800005b4 + +80000514 : +80000514: 00000213 li tp,0 +80000518: 0f0f1137 lui sp,0xf0f1 +8000051c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000520: 00000013 nop +80000524: 00000013 nop +80000528: 00ff00b7 lui ra,0xff0 +8000052c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000530: 0020ff33 and t5,ra,sp +80000534: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000538: 00200293 li t0,2 +8000053c: fc521ee3 bne tp,t0,80000518 +80000540: 000f0eb7 lui t4,0xf0 +80000544: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80000548: 01700193 li gp,23 +8000054c: 07df1463 bne t5,t4,800005b4 + +80000550 : +80000550: ff0100b7 lui ra,0xff010 +80000554: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000558: 00107133 and sp,zero,ra +8000055c: 00000e93 li t4,0 +80000560: 01800193 li gp,24 +80000564: 05d11863 bne sp,t4,800005b4 + +80000568 : +80000568: 00ff00b7 lui ra,0xff0 +8000056c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000570: 0000f133 and sp,ra,zero +80000574: 00000e93 li t4,0 +80000578: 01900193 li gp,25 +8000057c: 03d11c63 bne sp,t4,800005b4 + +80000580 : +80000580: 000070b3 and ra,zero,zero +80000584: 00000e93 li t4,0 +80000588: 01a00193 li gp,26 +8000058c: 03d09463 bne ra,t4,800005b4 + +80000590 : +80000590: 111110b7 lui ra,0x11111 +80000594: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> +80000598: 22222137 lui sp,0x22222 +8000059c: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> +800005a0: 0020f033 and zero,ra,sp +800005a4: 00000e93 li t4,0 +800005a8: 01b00193 li gp,27 +800005ac: 01d01463 bne zero,t4,800005b4 +800005b0: 00301c63 bne zero,gp,800005c8 + +800005b4 : +800005b4: 0ff0000f fence +800005b8: 00018063 beqz gp,800005b8 +800005bc: 00119193 slli gp,gp,0x1 +800005c0: 0011e193 ori gp,gp,1 +800005c4: 00000073 ecall + +800005c8 : +800005c8: 0ff0000f fence +800005cc: 00100193 li gp,1 +800005d0: 00000073 ecall +800005d4: c0001073 unimp +800005d8: 0000 unimp +800005da: 0000 unimp +800005dc: 0000 unimp +800005de: 0000 unimp +800005e0: 0000 unimp +800005e2: 0000 unimp +800005e4: 0000 unimp +800005e6: 0000 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32ui-p-andi b/Tests/isa/rv32ui-p-andi new file mode 100644 index 0000000..b649cec Binary files /dev/null and b/Tests/isa/rv32ui-p-andi differ diff --git a/Tests/isa/rv32ui-p-andi.dump b/Tests/isa/rv32ui-p-andi.dump new file mode 100644 index 0000000..38ed8b2 --- /dev/null +++ b/Tests/isa/rv32ui-p-andi.dump @@ -0,0 +1,247 @@ + +rv32ui-p-andi: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: ff0100b7 lui ra,0xff010 +80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000104: f0f0ff13 andi t5,ra,-241 +80000108: ff010eb7 lui t4,0xff010 +8000010c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +80000110: 00200193 li gp,2 +80000114: 1bdf1463 bne t5,t4,800002bc + +80000118 : +80000118: 0ff010b7 lui ra,0xff01 +8000011c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000120: 0f00ff13 andi t5,ra,240 +80000124: 0f000e93 li t4,240 +80000128: 00300193 li gp,3 +8000012c: 19df1863 bne t5,t4,800002bc + +80000130 : +80000130: 00ff00b7 lui ra,0xff0 +80000134: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000138: 70f0ff13 andi t5,ra,1807 +8000013c: 00f00e93 li t4,15 +80000140: 00400193 li gp,4 +80000144: 17df1c63 bne t5,t4,800002bc + +80000148 : +80000148: f00ff0b7 lui ra,0xf00ff +8000014c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +80000150: 0f00ff13 andi t5,ra,240 +80000154: 00000e93 li t4,0 +80000158: 00500193 li gp,5 +8000015c: 17df1063 bne t5,t4,800002bc + +80000160 : +80000160: ff0100b7 lui ra,0xff010 +80000164: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000168: 0f00f093 andi ra,ra,240 +8000016c: 00000e93 li t4,0 +80000170: 00600193 li gp,6 +80000174: 15d09463 bne ra,t4,800002bc + +80000178 : +80000178: 00000213 li tp,0 +8000017c: 0ff010b7 lui ra,0xff01 +80000180: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000184: 70f0ff13 andi t5,ra,1807 +80000188: 000f0313 mv t1,t5 +8000018c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000190: 00200293 li t0,2 +80000194: fe5214e3 bne tp,t0,8000017c +80000198: 70000e93 li t4,1792 +8000019c: 00700193 li gp,7 +800001a0: 11d31e63 bne t1,t4,800002bc + +800001a4 : +800001a4: 00000213 li tp,0 +800001a8: 00ff00b7 lui ra,0xff0 +800001ac: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800001b0: 0f00ff13 andi t5,ra,240 +800001b4: 00000013 nop +800001b8: 000f0313 mv t1,t5 +800001bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001c0: 00200293 li t0,2 +800001c4: fe5212e3 bne tp,t0,800001a8 +800001c8: 0f000e93 li t4,240 +800001cc: 00800193 li gp,8 +800001d0: 0fd31663 bne t1,t4,800002bc + +800001d4 : +800001d4: 00000213 li tp,0 +800001d8: f00ff0b7 lui ra,0xf00ff +800001dc: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +800001e0: f0f0ff13 andi t5,ra,-241 +800001e4: 00000013 nop +800001e8: 00000013 nop +800001ec: 000f0313 mv t1,t5 +800001f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001f4: 00200293 li t0,2 +800001f8: fe5210e3 bne tp,t0,800001d8 +800001fc: f00ffeb7 lui t4,0xf00ff +80000200: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +80000204: 00900193 li gp,9 +80000208: 0bd31a63 bne t1,t4,800002bc + +8000020c : +8000020c: 00000213 li tp,0 +80000210: 0ff010b7 lui ra,0xff01 +80000214: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000218: 70f0ff13 andi t5,ra,1807 +8000021c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000220: 00200293 li t0,2 +80000224: fe5216e3 bne tp,t0,80000210 +80000228: 70000e93 li t4,1792 +8000022c: 00a00193 li gp,10 +80000230: 09df1663 bne t5,t4,800002bc + +80000234 : +80000234: 00000213 li tp,0 +80000238: 00ff00b7 lui ra,0xff0 +8000023c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000240: 00000013 nop +80000244: 0f00ff13 andi t5,ra,240 +80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000024c: 00200293 li t0,2 +80000250: fe5214e3 bne tp,t0,80000238 +80000254: 0f000e93 li t4,240 +80000258: 00b00193 li gp,11 +8000025c: 07df1063 bne t5,t4,800002bc + +80000260 : +80000260: 00000213 li tp,0 +80000264: f00ff0b7 lui ra,0xf00ff +80000268: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +8000026c: 00000013 nop +80000270: 00000013 nop +80000274: 70f0ff13 andi t5,ra,1807 +80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000027c: 00200293 li t0,2 +80000280: fe5212e3 bne tp,t0,80000264 +80000284: 00f00e93 li t4,15 +80000288: 00c00193 li gp,12 +8000028c: 03df1863 bne t5,t4,800002bc + +80000290 : +80000290: 0f007093 andi ra,zero,240 +80000294: 00000e93 li t4,0 +80000298: 00d00193 li gp,13 +8000029c: 03d09063 bne ra,t4,800002bc + +800002a0 : +800002a0: 00ff00b7 lui ra,0xff0 +800002a4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800002a8: 70f0f013 andi zero,ra,1807 +800002ac: 00000e93 li t4,0 +800002b0: 00e00193 li gp,14 +800002b4: 01d01463 bne zero,t4,800002bc +800002b8: 00301c63 bne zero,gp,800002d0 + +800002bc : +800002bc: 0ff0000f fence +800002c0: 00018063 beqz gp,800002c0 +800002c4: 00119193 slli gp,gp,0x1 +800002c8: 0011e193 ori gp,gp,1 +800002cc: 00000073 ecall + +800002d0 : +800002d0: 0ff0000f fence +800002d4: 00100193 li gp,1 +800002d8: 00000073 ecall +800002dc: c0001073 unimp +800002e0: 0000 unimp +800002e2: 0000 unimp +800002e4: 0000 unimp +800002e6: 0000 unimp +800002e8: 0000 unimp +800002ea: 0000 unimp +800002ec: 0000 unimp +800002ee: 0000 unimp +800002f0: 0000 unimp +800002f2: 0000 unimp +800002f4: 0000 unimp +800002f6: 0000 unimp +800002f8: 0000 unimp +800002fa: 0000 unimp +800002fc: 0000 unimp +800002fe: 0000 unimp +80000300: 0000 unimp +80000302: 0000 unimp diff --git a/Tests/isa/rv32ui-p-auipc b/Tests/isa/rv32ui-p-auipc new file mode 100644 index 0000000..30b533f Binary files /dev/null and b/Tests/isa/rv32ui-p-auipc differ diff --git a/Tests/isa/rv32ui-p-auipc.dump b/Tests/isa/rv32ui-p-auipc.dump new file mode 100644 index 0000000..89355fa --- /dev/null +++ b/Tests/isa/rv32ui-p-auipc.dump @@ -0,0 +1,125 @@ + +rv32ui-p-auipc: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000013 nop +80000100: 00002517 auipc a0,0x2 +80000104: 71c50513 addi a0,a0,1820 # 8000281c <_end+0x81c> +80000108: 004005ef jal a1,8000010c +8000010c: 40b50533 sub a0,a0,a1 +80000110: 00002eb7 lui t4,0x2 +80000114: 710e8e93 addi t4,t4,1808 # 2710 <_start-0x7fffd8f0> +80000118: 00200193 li gp,2 +8000011c: 03d51463 bne a0,t4,80000144 + +80000120 : +80000120: ffffe517 auipc a0,0xffffe +80000124: 8fc50513 addi a0,a0,-1796 # 7fffda1c <_start-0x25e4> +80000128: 004005ef jal a1,8000012c +8000012c: 40b50533 sub a0,a0,a1 +80000130: ffffeeb7 lui t4,0xffffe +80000134: 8f0e8e93 addi t4,t4,-1808 # ffffd8f0 <_end+0x7fffb8f0> +80000138: 00300193 li gp,3 +8000013c: 01d51463 bne a0,t4,80000144 +80000140: 00301c63 bne zero,gp,80000158 + +80000144 : +80000144: 0ff0000f fence +80000148: 00018063 beqz gp,80000148 +8000014c: 00119193 slli gp,gp,0x1 +80000150: 0011e193 ori gp,gp,1 +80000154: 00000073 ecall + +80000158 : +80000158: 0ff0000f fence +8000015c: 00100193 li gp,1 +80000160: 00000073 ecall +80000164: c0001073 unimp +80000168: 0000 unimp +8000016a: 0000 unimp +8000016c: 0000 unimp +8000016e: 0000 unimp +80000170: 0000 unimp +80000172: 0000 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp diff --git a/Tests/isa/rv32ui-p-beq b/Tests/isa/rv32ui-p-beq new file mode 100644 index 0000000..67ace1d Binary files /dev/null and b/Tests/isa/rv32ui-p-beq differ diff --git a/Tests/isa/rv32ui-p-beq.dump b/Tests/isa/rv32ui-p-beq.dump new file mode 100644 index 0000000..6b07e03 --- /dev/null +++ b/Tests/isa/rv32ui-p-beq.dump @@ -0,0 +1,325 @@ + +rv32ui-p-beq: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000093 li ra,0 +80000104: 00000113 li sp,0 +80000108: 00208663 beq ra,sp,80000114 +8000010c: 2a301863 bne zero,gp,800003bc +80000110: 00301663 bne zero,gp,8000011c +80000114: fe208ee3 beq ra,sp,80000110 +80000118: 2a301263 bne zero,gp,800003bc + +8000011c : +8000011c: 00300193 li gp,3 +80000120: 00100093 li ra,1 +80000124: 00100113 li sp,1 +80000128: 00208663 beq ra,sp,80000134 +8000012c: 28301863 bne zero,gp,800003bc +80000130: 00301663 bne zero,gp,8000013c +80000134: fe208ee3 beq ra,sp,80000130 +80000138: 28301263 bne zero,gp,800003bc + +8000013c : +8000013c: 00400193 li gp,4 +80000140: fff00093 li ra,-1 +80000144: fff00113 li sp,-1 +80000148: 00208663 beq ra,sp,80000154 +8000014c: 26301863 bne zero,gp,800003bc +80000150: 00301663 bne zero,gp,8000015c +80000154: fe208ee3 beq ra,sp,80000150 +80000158: 26301263 bne zero,gp,800003bc + +8000015c : +8000015c: 00500193 li gp,5 +80000160: 00000093 li ra,0 +80000164: 00100113 li sp,1 +80000168: 00208463 beq ra,sp,80000170 +8000016c: 00301463 bne zero,gp,80000174 +80000170: 24301663 bne zero,gp,800003bc +80000174: fe208ee3 beq ra,sp,80000170 + +80000178 : +80000178: 00600193 li gp,6 +8000017c: 00100093 li ra,1 +80000180: 00000113 li sp,0 +80000184: 00208463 beq ra,sp,8000018c +80000188: 00301463 bne zero,gp,80000190 +8000018c: 22301863 bne zero,gp,800003bc +80000190: fe208ee3 beq ra,sp,8000018c + +80000194 : +80000194: 00700193 li gp,7 +80000198: fff00093 li ra,-1 +8000019c: 00100113 li sp,1 +800001a0: 00208463 beq ra,sp,800001a8 +800001a4: 00301463 bne zero,gp,800001ac +800001a8: 20301a63 bne zero,gp,800003bc +800001ac: fe208ee3 beq ra,sp,800001a8 + +800001b0 : +800001b0: 00800193 li gp,8 +800001b4: 00100093 li ra,1 +800001b8: fff00113 li sp,-1 +800001bc: 00208463 beq ra,sp,800001c4 +800001c0: 00301463 bne zero,gp,800001c8 +800001c4: 1e301c63 bne zero,gp,800003bc +800001c8: fe208ee3 beq ra,sp,800001c4 + +800001cc : +800001cc: 00900193 li gp,9 +800001d0: 00000213 li tp,0 +800001d4: 00000093 li ra,0 +800001d8: fff00113 li sp,-1 +800001dc: 1e208063 beq ra,sp,800003bc +800001e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001e4: 00200293 li t0,2 +800001e8: fe5216e3 bne tp,t0,800001d4 + +800001ec : +800001ec: 00a00193 li gp,10 +800001f0: 00000213 li tp,0 +800001f4: 00000093 li ra,0 +800001f8: fff00113 li sp,-1 +800001fc: 00000013 nop +80000200: 1a208e63 beq ra,sp,800003bc +80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000208: 00200293 li t0,2 +8000020c: fe5214e3 bne tp,t0,800001f4 + +80000210 : +80000210: 00b00193 li gp,11 +80000214: 00000213 li tp,0 +80000218: 00000093 li ra,0 +8000021c: fff00113 li sp,-1 +80000220: 00000013 nop +80000224: 00000013 nop +80000228: 18208a63 beq ra,sp,800003bc +8000022c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000230: 00200293 li t0,2 +80000234: fe5212e3 bne tp,t0,80000218 + +80000238 : +80000238: 00c00193 li gp,12 +8000023c: 00000213 li tp,0 +80000240: 00000093 li ra,0 +80000244: 00000013 nop +80000248: fff00113 li sp,-1 +8000024c: 16208863 beq ra,sp,800003bc +80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000254: 00200293 li t0,2 +80000258: fe5214e3 bne tp,t0,80000240 + +8000025c : +8000025c: 00d00193 li gp,13 +80000260: 00000213 li tp,0 +80000264: 00000093 li ra,0 +80000268: 00000013 nop +8000026c: fff00113 li sp,-1 +80000270: 00000013 nop +80000274: 14208463 beq ra,sp,800003bc +80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000027c: 00200293 li t0,2 +80000280: fe5212e3 bne tp,t0,80000264 + +80000284 : +80000284: 00e00193 li gp,14 +80000288: 00000213 li tp,0 +8000028c: 00000093 li ra,0 +80000290: 00000013 nop +80000294: 00000013 nop +80000298: fff00113 li sp,-1 +8000029c: 12208063 beq ra,sp,800003bc +800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a4: 00200293 li t0,2 +800002a8: fe5212e3 bne tp,t0,8000028c + +800002ac : +800002ac: 00f00193 li gp,15 +800002b0: 00000213 li tp,0 +800002b4: 00000093 li ra,0 +800002b8: fff00113 li sp,-1 +800002bc: 10208063 beq ra,sp,800003bc +800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c4: 00200293 li t0,2 +800002c8: fe5216e3 bne tp,t0,800002b4 + +800002cc : +800002cc: 01000193 li gp,16 +800002d0: 00000213 li tp,0 +800002d4: 00000093 li ra,0 +800002d8: fff00113 li sp,-1 +800002dc: 00000013 nop +800002e0: 0c208e63 beq ra,sp,800003bc +800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002e8: 00200293 li t0,2 +800002ec: fe5214e3 bne tp,t0,800002d4 + +800002f0 : +800002f0: 01100193 li gp,17 +800002f4: 00000213 li tp,0 +800002f8: 00000093 li ra,0 +800002fc: fff00113 li sp,-1 +80000300: 00000013 nop +80000304: 00000013 nop +80000308: 0a208a63 beq ra,sp,800003bc +8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000310: 00200293 li t0,2 +80000314: fe5212e3 bne tp,t0,800002f8 + +80000318 : +80000318: 01200193 li gp,18 +8000031c: 00000213 li tp,0 +80000320: 00000093 li ra,0 +80000324: 00000013 nop +80000328: fff00113 li sp,-1 +8000032c: 08208863 beq ra,sp,800003bc +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fe5214e3 bne tp,t0,80000320 + +8000033c : +8000033c: 01300193 li gp,19 +80000340: 00000213 li tp,0 +80000344: 00000093 li ra,0 +80000348: 00000013 nop +8000034c: fff00113 li sp,-1 +80000350: 00000013 nop +80000354: 06208463 beq ra,sp,800003bc +80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000035c: 00200293 li t0,2 +80000360: fe5212e3 bne tp,t0,80000344 + +80000364 : +80000364: 01400193 li gp,20 +80000368: 00000213 li tp,0 +8000036c: 00000093 li ra,0 +80000370: 00000013 nop +80000374: 00000013 nop +80000378: fff00113 li sp,-1 +8000037c: 04208063 beq ra,sp,800003bc +80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000384: 00200293 li t0,2 +80000388: fe5212e3 bne tp,t0,8000036c + +8000038c : +8000038c: 00100093 li ra,1 +80000390: 00000a63 beqz zero,800003a4 +80000394: 00108093 addi ra,ra,1 +80000398: 00108093 addi ra,ra,1 +8000039c: 00108093 addi ra,ra,1 +800003a0: 00108093 addi ra,ra,1 +800003a4: 00108093 addi ra,ra,1 +800003a8: 00108093 addi ra,ra,1 +800003ac: 00300e93 li t4,3 +800003b0: 01500193 li gp,21 +800003b4: 01d09463 bne ra,t4,800003bc +800003b8: 00301c63 bne zero,gp,800003d0 + +800003bc : +800003bc: 0ff0000f fence +800003c0: 00018063 beqz gp,800003c0 +800003c4: 00119193 slli gp,gp,0x1 +800003c8: 0011e193 ori gp,gp,1 +800003cc: 00000073 ecall + +800003d0 : +800003d0: 0ff0000f fence +800003d4: 00100193 li gp,1 +800003d8: 00000073 ecall +800003dc: c0001073 unimp +800003e0: 0000 unimp +800003e2: 0000 unimp +800003e4: 0000 unimp +800003e6: 0000 unimp +800003e8: 0000 unimp +800003ea: 0000 unimp +800003ec: 0000 unimp +800003ee: 0000 unimp +800003f0: 0000 unimp +800003f2: 0000 unimp +800003f4: 0000 unimp +800003f6: 0000 unimp +800003f8: 0000 unimp +800003fa: 0000 unimp +800003fc: 0000 unimp +800003fe: 0000 unimp +80000400: 0000 unimp +80000402: 0000 unimp diff --git a/Tests/isa/rv32ui-p-bge b/Tests/isa/rv32ui-p-bge new file mode 100644 index 0000000..1be506a Binary files /dev/null and b/Tests/isa/rv32ui-p-bge differ diff --git a/Tests/isa/rv32ui-p-bge.dump b/Tests/isa/rv32ui-p-bge.dump new file mode 100644 index 0000000..84ffbb3 --- /dev/null +++ b/Tests/isa/rv32ui-p-bge.dump @@ -0,0 +1,339 @@ + +rv32ui-p-bge: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000093 li ra,0 +80000104: 00000113 li sp,0 +80000108: 0020d663 ble sp,ra,80000114 +8000010c: 30301863 bne zero,gp,8000041c +80000110: 00301663 bne zero,gp,8000011c +80000114: fe20dee3 ble sp,ra,80000110 +80000118: 30301263 bne zero,gp,8000041c + +8000011c : +8000011c: 00300193 li gp,3 +80000120: 00100093 li ra,1 +80000124: 00100113 li sp,1 +80000128: 0020d663 ble sp,ra,80000134 +8000012c: 2e301863 bne zero,gp,8000041c +80000130: 00301663 bne zero,gp,8000013c +80000134: fe20dee3 ble sp,ra,80000130 +80000138: 2e301263 bne zero,gp,8000041c + +8000013c : +8000013c: 00400193 li gp,4 +80000140: fff00093 li ra,-1 +80000144: fff00113 li sp,-1 +80000148: 0020d663 ble sp,ra,80000154 +8000014c: 2c301863 bne zero,gp,8000041c +80000150: 00301663 bne zero,gp,8000015c +80000154: fe20dee3 ble sp,ra,80000150 +80000158: 2c301263 bne zero,gp,8000041c + +8000015c : +8000015c: 00500193 li gp,5 +80000160: 00100093 li ra,1 +80000164: 00000113 li sp,0 +80000168: 0020d663 ble sp,ra,80000174 +8000016c: 2a301863 bne zero,gp,8000041c +80000170: 00301663 bne zero,gp,8000017c +80000174: fe20dee3 ble sp,ra,80000170 +80000178: 2a301263 bne zero,gp,8000041c + +8000017c : +8000017c: 00600193 li gp,6 +80000180: 00100093 li ra,1 +80000184: fff00113 li sp,-1 +80000188: 0020d663 ble sp,ra,80000194 +8000018c: 28301863 bne zero,gp,8000041c +80000190: 00301663 bne zero,gp,8000019c +80000194: fe20dee3 ble sp,ra,80000190 +80000198: 28301263 bne zero,gp,8000041c + +8000019c : +8000019c: 00700193 li gp,7 +800001a0: fff00093 li ra,-1 +800001a4: ffe00113 li sp,-2 +800001a8: 0020d663 ble sp,ra,800001b4 +800001ac: 26301863 bne zero,gp,8000041c +800001b0: 00301663 bne zero,gp,800001bc +800001b4: fe20dee3 ble sp,ra,800001b0 +800001b8: 26301263 bne zero,gp,8000041c + +800001bc : +800001bc: 00800193 li gp,8 +800001c0: 00000093 li ra,0 +800001c4: 00100113 li sp,1 +800001c8: 0020d463 ble sp,ra,800001d0 +800001cc: 00301463 bne zero,gp,800001d4 +800001d0: 24301663 bne zero,gp,8000041c +800001d4: fe20dee3 ble sp,ra,800001d0 + +800001d8 : +800001d8: 00900193 li gp,9 +800001dc: fff00093 li ra,-1 +800001e0: 00100113 li sp,1 +800001e4: 0020d463 ble sp,ra,800001ec +800001e8: 00301463 bne zero,gp,800001f0 +800001ec: 22301863 bne zero,gp,8000041c +800001f0: fe20dee3 ble sp,ra,800001ec + +800001f4 : +800001f4: 00a00193 li gp,10 +800001f8: ffe00093 li ra,-2 +800001fc: fff00113 li sp,-1 +80000200: 0020d463 ble sp,ra,80000208 +80000204: 00301463 bne zero,gp,8000020c +80000208: 20301a63 bne zero,gp,8000041c +8000020c: fe20dee3 ble sp,ra,80000208 + +80000210 : +80000210: 00b00193 li gp,11 +80000214: ffe00093 li ra,-2 +80000218: 00100113 li sp,1 +8000021c: 0020d463 ble sp,ra,80000224 +80000220: 00301463 bne zero,gp,80000228 +80000224: 1e301c63 bne zero,gp,8000041c +80000228: fe20dee3 ble sp,ra,80000224 + +8000022c : +8000022c: 00c00193 li gp,12 +80000230: 00000213 li tp,0 +80000234: fff00093 li ra,-1 +80000238: 00000113 li sp,0 +8000023c: 1e20d063 ble sp,ra,8000041c +80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000244: 00200293 li t0,2 +80000248: fe5216e3 bne tp,t0,80000234 + +8000024c : +8000024c: 00d00193 li gp,13 +80000250: 00000213 li tp,0 +80000254: fff00093 li ra,-1 +80000258: 00000113 li sp,0 +8000025c: 00000013 nop +80000260: 1a20de63 ble sp,ra,8000041c +80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000268: 00200293 li t0,2 +8000026c: fe5214e3 bne tp,t0,80000254 + +80000270 : +80000270: 00e00193 li gp,14 +80000274: 00000213 li tp,0 +80000278: fff00093 li ra,-1 +8000027c: 00000113 li sp,0 +80000280: 00000013 nop +80000284: 00000013 nop +80000288: 1820da63 ble sp,ra,8000041c +8000028c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000290: 00200293 li t0,2 +80000294: fe5212e3 bne tp,t0,80000278 + +80000298 : +80000298: 00f00193 li gp,15 +8000029c: 00000213 li tp,0 +800002a0: fff00093 li ra,-1 +800002a4: 00000013 nop +800002a8: 00000113 li sp,0 +800002ac: 1620d863 ble sp,ra,8000041c +800002b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002b4: 00200293 li t0,2 +800002b8: fe5214e3 bne tp,t0,800002a0 + +800002bc : +800002bc: 01000193 li gp,16 +800002c0: 00000213 li tp,0 +800002c4: fff00093 li ra,-1 +800002c8: 00000013 nop +800002cc: 00000113 li sp,0 +800002d0: 00000013 nop +800002d4: 1420d463 ble sp,ra,8000041c +800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002dc: 00200293 li t0,2 +800002e0: fe5212e3 bne tp,t0,800002c4 + +800002e4 : +800002e4: 01100193 li gp,17 +800002e8: 00000213 li tp,0 +800002ec: fff00093 li ra,-1 +800002f0: 00000013 nop +800002f4: 00000013 nop +800002f8: 00000113 li sp,0 +800002fc: 1220d063 ble sp,ra,8000041c +80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000304: 00200293 li t0,2 +80000308: fe5212e3 bne tp,t0,800002ec + +8000030c : +8000030c: 01200193 li gp,18 +80000310: 00000213 li tp,0 +80000314: fff00093 li ra,-1 +80000318: 00000113 li sp,0 +8000031c: 1020d063 ble sp,ra,8000041c +80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000324: 00200293 li t0,2 +80000328: fe5216e3 bne tp,t0,80000314 + +8000032c : +8000032c: 01300193 li gp,19 +80000330: 00000213 li tp,0 +80000334: fff00093 li ra,-1 +80000338: 00000113 li sp,0 +8000033c: 00000013 nop +80000340: 0c20de63 ble sp,ra,8000041c +80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000348: 00200293 li t0,2 +8000034c: fe5214e3 bne tp,t0,80000334 + +80000350 : +80000350: 01400193 li gp,20 +80000354: 00000213 li tp,0 +80000358: fff00093 li ra,-1 +8000035c: 00000113 li sp,0 +80000360: 00000013 nop +80000364: 00000013 nop +80000368: 0a20da63 ble sp,ra,8000041c +8000036c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000370: 00200293 li t0,2 +80000374: fe5212e3 bne tp,t0,80000358 + +80000378 : +80000378: 01500193 li gp,21 +8000037c: 00000213 li tp,0 +80000380: fff00093 li ra,-1 +80000384: 00000013 nop +80000388: 00000113 li sp,0 +8000038c: 0820d863 ble sp,ra,8000041c +80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000394: 00200293 li t0,2 +80000398: fe5214e3 bne tp,t0,80000380 + +8000039c : +8000039c: 01600193 li gp,22 +800003a0: 00000213 li tp,0 +800003a4: fff00093 li ra,-1 +800003a8: 00000013 nop +800003ac: 00000113 li sp,0 +800003b0: 00000013 nop +800003b4: 0620d463 ble sp,ra,8000041c +800003b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003bc: 00200293 li t0,2 +800003c0: fe5212e3 bne tp,t0,800003a4 + +800003c4 : +800003c4: 01700193 li gp,23 +800003c8: 00000213 li tp,0 +800003cc: fff00093 li ra,-1 +800003d0: 00000013 nop +800003d4: 00000013 nop +800003d8: 00000113 li sp,0 +800003dc: 0420d063 ble sp,ra,8000041c +800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003e4: 00200293 li t0,2 +800003e8: fe5212e3 bne tp,t0,800003cc + +800003ec : +800003ec: 00100093 li ra,1 +800003f0: 0000da63 bgez ra,80000404 +800003f4: 00108093 addi ra,ra,1 +800003f8: 00108093 addi ra,ra,1 +800003fc: 00108093 addi ra,ra,1 +80000400: 00108093 addi ra,ra,1 +80000404: 00108093 addi ra,ra,1 +80000408: 00108093 addi ra,ra,1 +8000040c: 00300e93 li t4,3 +80000410: 01800193 li gp,24 +80000414: 01d09463 bne ra,t4,8000041c +80000418: 00301c63 bne zero,gp,80000430 + +8000041c : +8000041c: 0ff0000f fence +80000420: 00018063 beqz gp,80000420 +80000424: 00119193 slli gp,gp,0x1 +80000428: 0011e193 ori gp,gp,1 +8000042c: 00000073 ecall + +80000430 : +80000430: 0ff0000f fence +80000434: 00100193 li gp,1 +80000438: 00000073 ecall +8000043c: c0001073 unimp +80000440: 0000 unimp +80000442: 0000 unimp diff --git a/Tests/isa/rv32ui-p-bgeu b/Tests/isa/rv32ui-p-bgeu new file mode 100644 index 0000000..284b89a Binary files /dev/null and b/Tests/isa/rv32ui-p-bgeu differ diff --git a/Tests/isa/rv32ui-p-bgeu.dump b/Tests/isa/rv32ui-p-bgeu.dump new file mode 100644 index 0000000..bc6f3c2 --- /dev/null +++ b/Tests/isa/rv32ui-p-bgeu.dump @@ -0,0 +1,358 @@ + +rv32ui-p-bgeu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000093 li ra,0 +80000104: 00000113 li sp,0 +80000108: 0020f663 bleu sp,ra,80000114 +8000010c: 34301263 bne zero,gp,80000450 +80000110: 00301663 bne zero,gp,8000011c +80000114: fe20fee3 bleu sp,ra,80000110 +80000118: 32301c63 bne zero,gp,80000450 + +8000011c : +8000011c: 00300193 li gp,3 +80000120: 00100093 li ra,1 +80000124: 00100113 li sp,1 +80000128: 0020f663 bleu sp,ra,80000134 +8000012c: 32301263 bne zero,gp,80000450 +80000130: 00301663 bne zero,gp,8000013c +80000134: fe20fee3 bleu sp,ra,80000130 +80000138: 30301c63 bne zero,gp,80000450 + +8000013c : +8000013c: 00400193 li gp,4 +80000140: fff00093 li ra,-1 +80000144: fff00113 li sp,-1 +80000148: 0020f663 bleu sp,ra,80000154 +8000014c: 30301263 bne zero,gp,80000450 +80000150: 00301663 bne zero,gp,8000015c +80000154: fe20fee3 bleu sp,ra,80000150 +80000158: 2e301c63 bne zero,gp,80000450 + +8000015c : +8000015c: 00500193 li gp,5 +80000160: 00100093 li ra,1 +80000164: 00000113 li sp,0 +80000168: 0020f663 bleu sp,ra,80000174 +8000016c: 2e301263 bne zero,gp,80000450 +80000170: 00301663 bne zero,gp,8000017c +80000174: fe20fee3 bleu sp,ra,80000170 +80000178: 2c301c63 bne zero,gp,80000450 + +8000017c : +8000017c: 00600193 li gp,6 +80000180: fff00093 li ra,-1 +80000184: ffe00113 li sp,-2 +80000188: 0020f663 bleu sp,ra,80000194 +8000018c: 2c301263 bne zero,gp,80000450 +80000190: 00301663 bne zero,gp,8000019c +80000194: fe20fee3 bleu sp,ra,80000190 +80000198: 2a301c63 bne zero,gp,80000450 + +8000019c : +8000019c: 00700193 li gp,7 +800001a0: fff00093 li ra,-1 +800001a4: 00000113 li sp,0 +800001a8: 0020f663 bleu sp,ra,800001b4 +800001ac: 2a301263 bne zero,gp,80000450 +800001b0: 00301663 bne zero,gp,800001bc +800001b4: fe20fee3 bleu sp,ra,800001b0 +800001b8: 28301c63 bne zero,gp,80000450 + +800001bc : +800001bc: 00800193 li gp,8 +800001c0: 00000093 li ra,0 +800001c4: 00100113 li sp,1 +800001c8: 0020f463 bleu sp,ra,800001d0 +800001cc: 00301463 bne zero,gp,800001d4 +800001d0: 28301063 bne zero,gp,80000450 +800001d4: fe20fee3 bleu sp,ra,800001d0 + +800001d8 : +800001d8: 00900193 li gp,9 +800001dc: ffe00093 li ra,-2 +800001e0: fff00113 li sp,-1 +800001e4: 0020f463 bleu sp,ra,800001ec +800001e8: 00301463 bne zero,gp,800001f0 +800001ec: 26301263 bne zero,gp,80000450 +800001f0: fe20fee3 bleu sp,ra,800001ec + +800001f4 : +800001f4: 00a00193 li gp,10 +800001f8: 00000093 li ra,0 +800001fc: fff00113 li sp,-1 +80000200: 0020f463 bleu sp,ra,80000208 +80000204: 00301463 bne zero,gp,8000020c +80000208: 24301463 bne zero,gp,80000450 +8000020c: fe20fee3 bleu sp,ra,80000208 + +80000210 : +80000210: 00b00193 li gp,11 +80000214: 800000b7 lui ra,0x80000 +80000218: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +8000021c: 80000137 lui sp,0x80000 +80000220: 0020f463 bleu sp,ra,80000228 +80000224: 00301463 bne zero,gp,8000022c +80000228: 22301463 bne zero,gp,80000450 +8000022c: fe20fee3 bleu sp,ra,80000228 + +80000230 : +80000230: 00c00193 li gp,12 +80000234: 00000213 li tp,0 +80000238: f00000b7 lui ra,0xf0000 +8000023c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +80000240: f0000137 lui sp,0xf0000 +80000244: 2020f663 bleu sp,ra,80000450 +80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000024c: 00200293 li t0,2 +80000250: fe5214e3 bne tp,t0,80000238 + +80000254 : +80000254: 00d00193 li gp,13 +80000258: 00000213 li tp,0 +8000025c: f00000b7 lui ra,0xf0000 +80000260: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +80000264: f0000137 lui sp,0xf0000 +80000268: 00000013 nop +8000026c: 1e20f263 bleu sp,ra,80000450 +80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000274: 00200293 li t0,2 +80000278: fe5212e3 bne tp,t0,8000025c + +8000027c : +8000027c: 00e00193 li gp,14 +80000280: 00000213 li tp,0 +80000284: f00000b7 lui ra,0xf0000 +80000288: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +8000028c: f0000137 lui sp,0xf0000 +80000290: 00000013 nop +80000294: 00000013 nop +80000298: 1a20fc63 bleu sp,ra,80000450 +8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a0: 00200293 li t0,2 +800002a4: fe5210e3 bne tp,t0,80000284 + +800002a8 : +800002a8: 00f00193 li gp,15 +800002ac: 00000213 li tp,0 +800002b0: f00000b7 lui ra,0xf0000 +800002b4: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +800002b8: 00000013 nop +800002bc: f0000137 lui sp,0xf0000 +800002c0: 1820f863 bleu sp,ra,80000450 +800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c8: 00200293 li t0,2 +800002cc: fe5212e3 bne tp,t0,800002b0 + +800002d0 : +800002d0: 01000193 li gp,16 +800002d4: 00000213 li tp,0 +800002d8: f00000b7 lui ra,0xf0000 +800002dc: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +800002e0: 00000013 nop +800002e4: f0000137 lui sp,0xf0000 +800002e8: 00000013 nop +800002ec: 1620f263 bleu sp,ra,80000450 +800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f4: 00200293 li t0,2 +800002f8: fe5210e3 bne tp,t0,800002d8 + +800002fc : +800002fc: 01100193 li gp,17 +80000300: 00000213 li tp,0 +80000304: f00000b7 lui ra,0xf0000 +80000308: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +8000030c: 00000013 nop +80000310: 00000013 nop +80000314: f0000137 lui sp,0xf0000 +80000318: 1220fc63 bleu sp,ra,80000450 +8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000320: 00200293 li t0,2 +80000324: fe5210e3 bne tp,t0,80000304 + +80000328 : +80000328: 01200193 li gp,18 +8000032c: 00000213 li tp,0 +80000330: f00000b7 lui ra,0xf0000 +80000334: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +80000338: f0000137 lui sp,0xf0000 +8000033c: 1020fa63 bleu sp,ra,80000450 +80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000344: 00200293 li t0,2 +80000348: fe5214e3 bne tp,t0,80000330 + +8000034c : +8000034c: 01300193 li gp,19 +80000350: 00000213 li tp,0 +80000354: f00000b7 lui ra,0xf0000 +80000358: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +8000035c: f0000137 lui sp,0xf0000 +80000360: 00000013 nop +80000364: 0e20f663 bleu sp,ra,80000450 +80000368: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000036c: 00200293 li t0,2 +80000370: fe5212e3 bne tp,t0,80000354 + +80000374 : +80000374: 01400193 li gp,20 +80000378: 00000213 li tp,0 +8000037c: f00000b7 lui ra,0xf0000 +80000380: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +80000384: f0000137 lui sp,0xf0000 +80000388: 00000013 nop +8000038c: 00000013 nop +80000390: 0c20f063 bleu sp,ra,80000450 +80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000398: 00200293 li t0,2 +8000039c: fe5210e3 bne tp,t0,8000037c + +800003a0 : +800003a0: 01500193 li gp,21 +800003a4: 00000213 li tp,0 +800003a8: f00000b7 lui ra,0xf0000 +800003ac: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +800003b0: 00000013 nop +800003b4: f0000137 lui sp,0xf0000 +800003b8: 0820fc63 bleu sp,ra,80000450 +800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c0: 00200293 li t0,2 +800003c4: fe5212e3 bne tp,t0,800003a8 + +800003c8 : +800003c8: 01600193 li gp,22 +800003cc: 00000213 li tp,0 +800003d0: f00000b7 lui ra,0xf0000 +800003d4: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +800003d8: 00000013 nop +800003dc: f0000137 lui sp,0xf0000 +800003e0: 00000013 nop +800003e4: 0620f663 bleu sp,ra,80000450 +800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003ec: 00200293 li t0,2 +800003f0: fe5210e3 bne tp,t0,800003d0 + +800003f4 : +800003f4: 01700193 li gp,23 +800003f8: 00000213 li tp,0 +800003fc: f00000b7 lui ra,0xf0000 +80000400: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff> +80000404: 00000013 nop +80000408: 00000013 nop +8000040c: f0000137 lui sp,0xf0000 +80000410: 0420f063 bleu sp,ra,80000450 +80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000418: 00200293 li t0,2 +8000041c: fe5210e3 bne tp,t0,800003fc + +80000420 : +80000420: 00100093 li ra,1 +80000424: 0000fa63 bleu zero,ra,80000438 +80000428: 00108093 addi ra,ra,1 +8000042c: 00108093 addi ra,ra,1 +80000430: 00108093 addi ra,ra,1 +80000434: 00108093 addi ra,ra,1 +80000438: 00108093 addi ra,ra,1 +8000043c: 00108093 addi ra,ra,1 +80000440: 00300e93 li t4,3 +80000444: 01800193 li gp,24 +80000448: 01d09463 bne ra,t4,80000450 +8000044c: 00301c63 bne zero,gp,80000464 + +80000450 : +80000450: 0ff0000f fence +80000454: 00018063 beqz gp,80000454 +80000458: 00119193 slli gp,gp,0x1 +8000045c: 0011e193 ori gp,gp,1 +80000460: 00000073 ecall + +80000464 : +80000464: 0ff0000f fence +80000468: 00100193 li gp,1 +8000046c: 00000073 ecall +80000470: c0001073 unimp +80000474: 0000 unimp +80000476: 0000 unimp +80000478: 0000 unimp +8000047a: 0000 unimp +8000047c: 0000 unimp +8000047e: 0000 unimp +80000480: 0000 unimp +80000482: 0000 unimp diff --git a/Tests/isa/rv32ui-p-blt b/Tests/isa/rv32ui-p-blt new file mode 100644 index 0000000..14356e1 Binary files /dev/null and b/Tests/isa/rv32ui-p-blt differ diff --git a/Tests/isa/rv32ui-p-blt.dump b/Tests/isa/rv32ui-p-blt.dump new file mode 100644 index 0000000..300a412 --- /dev/null +++ b/Tests/isa/rv32ui-p-blt.dump @@ -0,0 +1,325 @@ + +rv32ui-p-blt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000093 li ra,0 +80000104: 00100113 li sp,1 +80000108: 0020c663 blt ra,sp,80000114 +8000010c: 2a301863 bne zero,gp,800003bc +80000110: 00301663 bne zero,gp,8000011c +80000114: fe20cee3 blt ra,sp,80000110 +80000118: 2a301263 bne zero,gp,800003bc + +8000011c : +8000011c: 00300193 li gp,3 +80000120: fff00093 li ra,-1 +80000124: 00100113 li sp,1 +80000128: 0020c663 blt ra,sp,80000134 +8000012c: 28301863 bne zero,gp,800003bc +80000130: 00301663 bne zero,gp,8000013c +80000134: fe20cee3 blt ra,sp,80000130 +80000138: 28301263 bne zero,gp,800003bc + +8000013c : +8000013c: 00400193 li gp,4 +80000140: ffe00093 li ra,-2 +80000144: fff00113 li sp,-1 +80000148: 0020c663 blt ra,sp,80000154 +8000014c: 26301863 bne zero,gp,800003bc +80000150: 00301663 bne zero,gp,8000015c +80000154: fe20cee3 blt ra,sp,80000150 +80000158: 26301263 bne zero,gp,800003bc + +8000015c : +8000015c: 00500193 li gp,5 +80000160: 00100093 li ra,1 +80000164: 00000113 li sp,0 +80000168: 0020c463 blt ra,sp,80000170 +8000016c: 00301463 bne zero,gp,80000174 +80000170: 24301663 bne zero,gp,800003bc +80000174: fe20cee3 blt ra,sp,80000170 + +80000178 : +80000178: 00600193 li gp,6 +8000017c: 00100093 li ra,1 +80000180: fff00113 li sp,-1 +80000184: 0020c463 blt ra,sp,8000018c +80000188: 00301463 bne zero,gp,80000190 +8000018c: 22301863 bne zero,gp,800003bc +80000190: fe20cee3 blt ra,sp,8000018c + +80000194 : +80000194: 00700193 li gp,7 +80000198: fff00093 li ra,-1 +8000019c: ffe00113 li sp,-2 +800001a0: 0020c463 blt ra,sp,800001a8 +800001a4: 00301463 bne zero,gp,800001ac +800001a8: 20301a63 bne zero,gp,800003bc +800001ac: fe20cee3 blt ra,sp,800001a8 + +800001b0 : +800001b0: 00800193 li gp,8 +800001b4: 00100093 li ra,1 +800001b8: ffe00113 li sp,-2 +800001bc: 0020c463 blt ra,sp,800001c4 +800001c0: 00301463 bne zero,gp,800001c8 +800001c4: 1e301c63 bne zero,gp,800003bc +800001c8: fe20cee3 blt ra,sp,800001c4 + +800001cc : +800001cc: 00900193 li gp,9 +800001d0: 00000213 li tp,0 +800001d4: 00000093 li ra,0 +800001d8: fff00113 li sp,-1 +800001dc: 1e20c063 blt ra,sp,800003bc +800001e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001e4: 00200293 li t0,2 +800001e8: fe5216e3 bne tp,t0,800001d4 + +800001ec : +800001ec: 00a00193 li gp,10 +800001f0: 00000213 li tp,0 +800001f4: 00000093 li ra,0 +800001f8: fff00113 li sp,-1 +800001fc: 00000013 nop +80000200: 1a20ce63 blt ra,sp,800003bc +80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000208: 00200293 li t0,2 +8000020c: fe5214e3 bne tp,t0,800001f4 + +80000210 : +80000210: 00b00193 li gp,11 +80000214: 00000213 li tp,0 +80000218: 00000093 li ra,0 +8000021c: fff00113 li sp,-1 +80000220: 00000013 nop +80000224: 00000013 nop +80000228: 1820ca63 blt ra,sp,800003bc +8000022c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000230: 00200293 li t0,2 +80000234: fe5212e3 bne tp,t0,80000218 + +80000238 : +80000238: 00c00193 li gp,12 +8000023c: 00000213 li tp,0 +80000240: 00000093 li ra,0 +80000244: 00000013 nop +80000248: fff00113 li sp,-1 +8000024c: 1620c863 blt ra,sp,800003bc +80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000254: 00200293 li t0,2 +80000258: fe5214e3 bne tp,t0,80000240 + +8000025c : +8000025c: 00d00193 li gp,13 +80000260: 00000213 li tp,0 +80000264: 00000093 li ra,0 +80000268: 00000013 nop +8000026c: fff00113 li sp,-1 +80000270: 00000013 nop +80000274: 1420c463 blt ra,sp,800003bc +80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000027c: 00200293 li t0,2 +80000280: fe5212e3 bne tp,t0,80000264 + +80000284 : +80000284: 00e00193 li gp,14 +80000288: 00000213 li tp,0 +8000028c: 00000093 li ra,0 +80000290: 00000013 nop +80000294: 00000013 nop +80000298: fff00113 li sp,-1 +8000029c: 1220c063 blt ra,sp,800003bc +800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a4: 00200293 li t0,2 +800002a8: fe5212e3 bne tp,t0,8000028c + +800002ac : +800002ac: 00f00193 li gp,15 +800002b0: 00000213 li tp,0 +800002b4: 00000093 li ra,0 +800002b8: fff00113 li sp,-1 +800002bc: 1020c063 blt ra,sp,800003bc +800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c4: 00200293 li t0,2 +800002c8: fe5216e3 bne tp,t0,800002b4 + +800002cc : +800002cc: 01000193 li gp,16 +800002d0: 00000213 li tp,0 +800002d4: 00000093 li ra,0 +800002d8: fff00113 li sp,-1 +800002dc: 00000013 nop +800002e0: 0c20ce63 blt ra,sp,800003bc +800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002e8: 00200293 li t0,2 +800002ec: fe5214e3 bne tp,t0,800002d4 + +800002f0 : +800002f0: 01100193 li gp,17 +800002f4: 00000213 li tp,0 +800002f8: 00000093 li ra,0 +800002fc: fff00113 li sp,-1 +80000300: 00000013 nop +80000304: 00000013 nop +80000308: 0a20ca63 blt ra,sp,800003bc +8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000310: 00200293 li t0,2 +80000314: fe5212e3 bne tp,t0,800002f8 + +80000318 : +80000318: 01200193 li gp,18 +8000031c: 00000213 li tp,0 +80000320: 00000093 li ra,0 +80000324: 00000013 nop +80000328: fff00113 li sp,-1 +8000032c: 0820c863 blt ra,sp,800003bc +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fe5214e3 bne tp,t0,80000320 + +8000033c : +8000033c: 01300193 li gp,19 +80000340: 00000213 li tp,0 +80000344: 00000093 li ra,0 +80000348: 00000013 nop +8000034c: fff00113 li sp,-1 +80000350: 00000013 nop +80000354: 0620c463 blt ra,sp,800003bc +80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000035c: 00200293 li t0,2 +80000360: fe5212e3 bne tp,t0,80000344 + +80000364 : +80000364: 01400193 li gp,20 +80000368: 00000213 li tp,0 +8000036c: 00000093 li ra,0 +80000370: 00000013 nop +80000374: 00000013 nop +80000378: fff00113 li sp,-1 +8000037c: 0420c063 blt ra,sp,800003bc +80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000384: 00200293 li t0,2 +80000388: fe5212e3 bne tp,t0,8000036c + +8000038c : +8000038c: 00100093 li ra,1 +80000390: 00104a63 bgtz ra,800003a4 +80000394: 00108093 addi ra,ra,1 +80000398: 00108093 addi ra,ra,1 +8000039c: 00108093 addi ra,ra,1 +800003a0: 00108093 addi ra,ra,1 +800003a4: 00108093 addi ra,ra,1 +800003a8: 00108093 addi ra,ra,1 +800003ac: 00300e93 li t4,3 +800003b0: 01500193 li gp,21 +800003b4: 01d09463 bne ra,t4,800003bc +800003b8: 00301c63 bne zero,gp,800003d0 + +800003bc : +800003bc: 0ff0000f fence +800003c0: 00018063 beqz gp,800003c0 +800003c4: 00119193 slli gp,gp,0x1 +800003c8: 0011e193 ori gp,gp,1 +800003cc: 00000073 ecall + +800003d0 : +800003d0: 0ff0000f fence +800003d4: 00100193 li gp,1 +800003d8: 00000073 ecall +800003dc: c0001073 unimp +800003e0: 0000 unimp +800003e2: 0000 unimp +800003e4: 0000 unimp +800003e6: 0000 unimp +800003e8: 0000 unimp +800003ea: 0000 unimp +800003ec: 0000 unimp +800003ee: 0000 unimp +800003f0: 0000 unimp +800003f2: 0000 unimp +800003f4: 0000 unimp +800003f6: 0000 unimp +800003f8: 0000 unimp +800003fa: 0000 unimp +800003fc: 0000 unimp +800003fe: 0000 unimp +80000400: 0000 unimp +80000402: 0000 unimp diff --git a/Tests/isa/rv32ui-p-bltu b/Tests/isa/rv32ui-p-bltu new file mode 100644 index 0000000..9e867a9 Binary files /dev/null and b/Tests/isa/rv32ui-p-bltu differ diff --git a/Tests/isa/rv32ui-p-bltu.dump b/Tests/isa/rv32ui-p-bltu.dump new file mode 100644 index 0000000..b2e00bd --- /dev/null +++ b/Tests/isa/rv32ui-p-bltu.dump @@ -0,0 +1,344 @@ + +rv32ui-p-bltu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000093 li ra,0 +80000104: 00100113 li sp,1 +80000108: 0020e663 bltu ra,sp,80000114 +8000010c: 2e301263 bne zero,gp,800003f0 +80000110: 00301663 bne zero,gp,8000011c +80000114: fe20eee3 bltu ra,sp,80000110 +80000118: 2c301c63 bne zero,gp,800003f0 + +8000011c : +8000011c: 00300193 li gp,3 +80000120: ffe00093 li ra,-2 +80000124: fff00113 li sp,-1 +80000128: 0020e663 bltu ra,sp,80000134 +8000012c: 2c301263 bne zero,gp,800003f0 +80000130: 00301663 bne zero,gp,8000013c +80000134: fe20eee3 bltu ra,sp,80000130 +80000138: 2a301c63 bne zero,gp,800003f0 + +8000013c : +8000013c: 00400193 li gp,4 +80000140: 00000093 li ra,0 +80000144: fff00113 li sp,-1 +80000148: 0020e663 bltu ra,sp,80000154 +8000014c: 2a301263 bne zero,gp,800003f0 +80000150: 00301663 bne zero,gp,8000015c +80000154: fe20eee3 bltu ra,sp,80000150 +80000158: 28301c63 bne zero,gp,800003f0 + +8000015c : +8000015c: 00500193 li gp,5 +80000160: 00100093 li ra,1 +80000164: 00000113 li sp,0 +80000168: 0020e463 bltu ra,sp,80000170 +8000016c: 00301463 bne zero,gp,80000174 +80000170: 28301063 bne zero,gp,800003f0 +80000174: fe20eee3 bltu ra,sp,80000170 + +80000178 : +80000178: 00600193 li gp,6 +8000017c: fff00093 li ra,-1 +80000180: ffe00113 li sp,-2 +80000184: 0020e463 bltu ra,sp,8000018c +80000188: 00301463 bne zero,gp,80000190 +8000018c: 26301263 bne zero,gp,800003f0 +80000190: fe20eee3 bltu ra,sp,8000018c + +80000194 : +80000194: 00700193 li gp,7 +80000198: fff00093 li ra,-1 +8000019c: 00000113 li sp,0 +800001a0: 0020e463 bltu ra,sp,800001a8 +800001a4: 00301463 bne zero,gp,800001ac +800001a8: 24301463 bne zero,gp,800003f0 +800001ac: fe20eee3 bltu ra,sp,800001a8 + +800001b0 : +800001b0: 00800193 li gp,8 +800001b4: 800000b7 lui ra,0x80000 +800001b8: 80000137 lui sp,0x80000 +800001bc: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffffdfff> +800001c0: 0020e463 bltu ra,sp,800001c8 +800001c4: 00301463 bne zero,gp,800001cc +800001c8: 22301463 bne zero,gp,800003f0 +800001cc: fe20eee3 bltu ra,sp,800001c8 + +800001d0 : +800001d0: 00900193 li gp,9 +800001d4: 00000213 li tp,0 +800001d8: f00000b7 lui ra,0xf0000 +800001dc: f0000137 lui sp,0xf0000 +800001e0: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +800001e4: 2020e663 bltu ra,sp,800003f0 +800001e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001ec: 00200293 li t0,2 +800001f0: fe5214e3 bne tp,t0,800001d8 + +800001f4 : +800001f4: 00a00193 li gp,10 +800001f8: 00000213 li tp,0 +800001fc: f00000b7 lui ra,0xf0000 +80000200: f0000137 lui sp,0xf0000 +80000204: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000208: 00000013 nop +8000020c: 1e20e263 bltu ra,sp,800003f0 +80000210: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000214: 00200293 li t0,2 +80000218: fe5212e3 bne tp,t0,800001fc + +8000021c : +8000021c: 00b00193 li gp,11 +80000220: 00000213 li tp,0 +80000224: f00000b7 lui ra,0xf0000 +80000228: f0000137 lui sp,0xf0000 +8000022c: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000230: 00000013 nop +80000234: 00000013 nop +80000238: 1a20ec63 bltu ra,sp,800003f0 +8000023c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000240: 00200293 li t0,2 +80000244: fe5210e3 bne tp,t0,80000224 + +80000248 : +80000248: 00c00193 li gp,12 +8000024c: 00000213 li tp,0 +80000250: f00000b7 lui ra,0xf0000 +80000254: 00000013 nop +80000258: f0000137 lui sp,0xf0000 +8000025c: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000260: 1820e863 bltu ra,sp,800003f0 +80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000268: 00200293 li t0,2 +8000026c: fe5212e3 bne tp,t0,80000250 + +80000270 : +80000270: 00d00193 li gp,13 +80000274: 00000213 li tp,0 +80000278: f00000b7 lui ra,0xf0000 +8000027c: 00000013 nop +80000280: f0000137 lui sp,0xf0000 +80000284: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000288: 00000013 nop +8000028c: 1620e263 bltu ra,sp,800003f0 +80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000294: 00200293 li t0,2 +80000298: fe5210e3 bne tp,t0,80000278 + +8000029c : +8000029c: 00e00193 li gp,14 +800002a0: 00000213 li tp,0 +800002a4: f00000b7 lui ra,0xf0000 +800002a8: 00000013 nop +800002ac: 00000013 nop +800002b0: f0000137 lui sp,0xf0000 +800002b4: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +800002b8: 1220ec63 bltu ra,sp,800003f0 +800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c0: 00200293 li t0,2 +800002c4: fe5210e3 bne tp,t0,800002a4 + +800002c8 : +800002c8: 00f00193 li gp,15 +800002cc: 00000213 li tp,0 +800002d0: f00000b7 lui ra,0xf0000 +800002d4: f0000137 lui sp,0xf0000 +800002d8: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +800002dc: 1020ea63 bltu ra,sp,800003f0 +800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002e4: 00200293 li t0,2 +800002e8: fe5214e3 bne tp,t0,800002d0 + +800002ec : +800002ec: 01000193 li gp,16 +800002f0: 00000213 li tp,0 +800002f4: f00000b7 lui ra,0xf0000 +800002f8: f0000137 lui sp,0xf0000 +800002fc: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000300: 00000013 nop +80000304: 0e20e663 bltu ra,sp,800003f0 +80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000030c: 00200293 li t0,2 +80000310: fe5212e3 bne tp,t0,800002f4 + +80000314 : +80000314: 01100193 li gp,17 +80000318: 00000213 li tp,0 +8000031c: f00000b7 lui ra,0xf0000 +80000320: f0000137 lui sp,0xf0000 +80000324: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000328: 00000013 nop +8000032c: 00000013 nop +80000330: 0c20e063 bltu ra,sp,800003f0 +80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000338: 00200293 li t0,2 +8000033c: fe5210e3 bne tp,t0,8000031c + +80000340 : +80000340: 01200193 li gp,18 +80000344: 00000213 li tp,0 +80000348: f00000b7 lui ra,0xf0000 +8000034c: 00000013 nop +80000350: f0000137 lui sp,0xf0000 +80000354: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000358: 0820ec63 bltu ra,sp,800003f0 +8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000360: 00200293 li t0,2 +80000364: fe5212e3 bne tp,t0,80000348 + +80000368 : +80000368: 01300193 li gp,19 +8000036c: 00000213 li tp,0 +80000370: f00000b7 lui ra,0xf0000 +80000374: 00000013 nop +80000378: f0000137 lui sp,0xf0000 +8000037c: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +80000380: 00000013 nop +80000384: 0620e663 bltu ra,sp,800003f0 +80000388: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000038c: 00200293 li t0,2 +80000390: fe5210e3 bne tp,t0,80000370 + +80000394 : +80000394: 01400193 li gp,20 +80000398: 00000213 li tp,0 +8000039c: f00000b7 lui ra,0xf0000 +800003a0: 00000013 nop +800003a4: 00000013 nop +800003a8: f0000137 lui sp,0xf0000 +800003ac: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff> +800003b0: 0420e063 bltu ra,sp,800003f0 +800003b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003b8: 00200293 li t0,2 +800003bc: fe5210e3 bne tp,t0,8000039c + +800003c0 : +800003c0: 00100093 li ra,1 +800003c4: 00106a63 bltu zero,ra,800003d8 +800003c8: 00108093 addi ra,ra,1 # f0000001 <_end+0x6fffe001> +800003cc: 00108093 addi ra,ra,1 +800003d0: 00108093 addi ra,ra,1 +800003d4: 00108093 addi ra,ra,1 +800003d8: 00108093 addi ra,ra,1 +800003dc: 00108093 addi ra,ra,1 +800003e0: 00300e93 li t4,3 +800003e4: 01500193 li gp,21 +800003e8: 01d09463 bne ra,t4,800003f0 +800003ec: 00301c63 bne zero,gp,80000404 + +800003f0 : +800003f0: 0ff0000f fence +800003f4: 00018063 beqz gp,800003f4 +800003f8: 00119193 slli gp,gp,0x1 +800003fc: 0011e193 ori gp,gp,1 +80000400: 00000073 ecall + +80000404 : +80000404: 0ff0000f fence +80000408: 00100193 li gp,1 +8000040c: 00000073 ecall +80000410: c0001073 unimp +80000414: 0000 unimp +80000416: 0000 unimp +80000418: 0000 unimp +8000041a: 0000 unimp +8000041c: 0000 unimp +8000041e: 0000 unimp +80000420: 0000 unimp +80000422: 0000 unimp +80000424: 0000 unimp +80000426: 0000 unimp +80000428: 0000 unimp +8000042a: 0000 unimp +8000042c: 0000 unimp +8000042e: 0000 unimp +80000430: 0000 unimp +80000432: 0000 unimp +80000434: 0000 unimp +80000436: 0000 unimp +80000438: 0000 unimp +8000043a: 0000 unimp +8000043c: 0000 unimp +8000043e: 0000 unimp +80000440: 0000 unimp +80000442: 0000 unimp diff --git a/Tests/isa/rv32ui-p-bne b/Tests/isa/rv32ui-p-bne new file mode 100644 index 0000000..4cca321 Binary files /dev/null and b/Tests/isa/rv32ui-p-bne differ diff --git a/Tests/isa/rv32ui-p-bne.dump b/Tests/isa/rv32ui-p-bne.dump new file mode 100644 index 0000000..2878664 --- /dev/null +++ b/Tests/isa/rv32ui-p-bne.dump @@ -0,0 +1,324 @@ + +rv32ui-p-bne: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000093 li ra,0 +80000104: 00100113 li sp,1 +80000108: 00209663 bne ra,sp,80000114 +8000010c: 2a301a63 bne zero,gp,800003c0 +80000110: 00301663 bne zero,gp,8000011c +80000114: fe209ee3 bne ra,sp,80000110 +80000118: 2a301463 bne zero,gp,800003c0 + +8000011c : +8000011c: 00300193 li gp,3 +80000120: 00100093 li ra,1 +80000124: 00000113 li sp,0 +80000128: 00209663 bne ra,sp,80000134 +8000012c: 28301a63 bne zero,gp,800003c0 +80000130: 00301663 bne zero,gp,8000013c +80000134: fe209ee3 bne ra,sp,80000130 +80000138: 28301463 bne zero,gp,800003c0 + +8000013c : +8000013c: 00400193 li gp,4 +80000140: fff00093 li ra,-1 +80000144: 00100113 li sp,1 +80000148: 00209663 bne ra,sp,80000154 +8000014c: 26301a63 bne zero,gp,800003c0 +80000150: 00301663 bne zero,gp,8000015c +80000154: fe209ee3 bne ra,sp,80000150 +80000158: 26301463 bne zero,gp,800003c0 + +8000015c : +8000015c: 00500193 li gp,5 +80000160: 00100093 li ra,1 +80000164: fff00113 li sp,-1 +80000168: 00209663 bne ra,sp,80000174 +8000016c: 24301a63 bne zero,gp,800003c0 +80000170: 00301663 bne zero,gp,8000017c +80000174: fe209ee3 bne ra,sp,80000170 +80000178: 24301463 bne zero,gp,800003c0 + +8000017c : +8000017c: 00600193 li gp,6 +80000180: 00000093 li ra,0 +80000184: 00000113 li sp,0 +80000188: 00209463 bne ra,sp,80000190 +8000018c: 00301463 bne zero,gp,80000194 +80000190: 22301863 bne zero,gp,800003c0 +80000194: fe209ee3 bne ra,sp,80000190 + +80000198 : +80000198: 00700193 li gp,7 +8000019c: 00100093 li ra,1 +800001a0: 00100113 li sp,1 +800001a4: 00209463 bne ra,sp,800001ac +800001a8: 00301463 bne zero,gp,800001b0 +800001ac: 20301a63 bne zero,gp,800003c0 +800001b0: fe209ee3 bne ra,sp,800001ac + +800001b4 : +800001b4: 00800193 li gp,8 +800001b8: fff00093 li ra,-1 +800001bc: fff00113 li sp,-1 +800001c0: 00209463 bne ra,sp,800001c8 +800001c4: 00301463 bne zero,gp,800001cc +800001c8: 1e301c63 bne zero,gp,800003c0 +800001cc: fe209ee3 bne ra,sp,800001c8 + +800001d0 : +800001d0: 00900193 li gp,9 +800001d4: 00000213 li tp,0 +800001d8: 00000093 li ra,0 +800001dc: 00000113 li sp,0 +800001e0: 1e209063 bne ra,sp,800003c0 +800001e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001e8: 00200293 li t0,2 +800001ec: fe5216e3 bne tp,t0,800001d8 + +800001f0 : +800001f0: 00a00193 li gp,10 +800001f4: 00000213 li tp,0 +800001f8: 00000093 li ra,0 +800001fc: 00000113 li sp,0 +80000200: 00000013 nop +80000204: 1a209e63 bne ra,sp,800003c0 +80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000020c: 00200293 li t0,2 +80000210: fe5214e3 bne tp,t0,800001f8 + +80000214 : +80000214: 00b00193 li gp,11 +80000218: 00000213 li tp,0 +8000021c: 00000093 li ra,0 +80000220: 00000113 li sp,0 +80000224: 00000013 nop +80000228: 00000013 nop +8000022c: 18209a63 bne ra,sp,800003c0 +80000230: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000234: 00200293 li t0,2 +80000238: fe5212e3 bne tp,t0,8000021c + +8000023c : +8000023c: 00c00193 li gp,12 +80000240: 00000213 li tp,0 +80000244: 00000093 li ra,0 +80000248: 00000013 nop +8000024c: 00000113 li sp,0 +80000250: 16209863 bne ra,sp,800003c0 +80000254: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000258: 00200293 li t0,2 +8000025c: fe5214e3 bne tp,t0,80000244 + +80000260 : +80000260: 00d00193 li gp,13 +80000264: 00000213 li tp,0 +80000268: 00000093 li ra,0 +8000026c: 00000013 nop +80000270: 00000113 li sp,0 +80000274: 00000013 nop +80000278: 14209463 bne ra,sp,800003c0 +8000027c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000280: 00200293 li t0,2 +80000284: fe5212e3 bne tp,t0,80000268 + +80000288 : +80000288: 00e00193 li gp,14 +8000028c: 00000213 li tp,0 +80000290: 00000093 li ra,0 +80000294: 00000013 nop +80000298: 00000013 nop +8000029c: 00000113 li sp,0 +800002a0: 12209063 bne ra,sp,800003c0 +800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a8: 00200293 li t0,2 +800002ac: fe5212e3 bne tp,t0,80000290 + +800002b0 : +800002b0: 00f00193 li gp,15 +800002b4: 00000213 li tp,0 +800002b8: 00000093 li ra,0 +800002bc: 00000113 li sp,0 +800002c0: 10209063 bne ra,sp,800003c0 +800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c8: 00200293 li t0,2 +800002cc: fe5216e3 bne tp,t0,800002b8 + +800002d0 : +800002d0: 01000193 li gp,16 +800002d4: 00000213 li tp,0 +800002d8: 00000093 li ra,0 +800002dc: 00000113 li sp,0 +800002e0: 00000013 nop +800002e4: 0c209e63 bne ra,sp,800003c0 +800002e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002ec: 00200293 li t0,2 +800002f0: fe5214e3 bne tp,t0,800002d8 + +800002f4 : +800002f4: 01100193 li gp,17 +800002f8: 00000213 li tp,0 +800002fc: 00000093 li ra,0 +80000300: 00000113 li sp,0 +80000304: 00000013 nop +80000308: 00000013 nop +8000030c: 0a209a63 bne ra,sp,800003c0 +80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000314: 00200293 li t0,2 +80000318: fe5212e3 bne tp,t0,800002fc + +8000031c : +8000031c: 01200193 li gp,18 +80000320: 00000213 li tp,0 +80000324: 00000093 li ra,0 +80000328: 00000013 nop +8000032c: 00000113 li sp,0 +80000330: 08209863 bne ra,sp,800003c0 +80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000338: 00200293 li t0,2 +8000033c: fe5214e3 bne tp,t0,80000324 + +80000340 : +80000340: 01300193 li gp,19 +80000344: 00000213 li tp,0 +80000348: 00000093 li ra,0 +8000034c: 00000013 nop +80000350: 00000113 li sp,0 +80000354: 00000013 nop +80000358: 06209463 bne ra,sp,800003c0 +8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000360: 00200293 li t0,2 +80000364: fe5212e3 bne tp,t0,80000348 + +80000368 : +80000368: 01400193 li gp,20 +8000036c: 00000213 li tp,0 +80000370: 00000093 li ra,0 +80000374: 00000013 nop +80000378: 00000013 nop +8000037c: 00000113 li sp,0 +80000380: 04209063 bne ra,sp,800003c0 +80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000388: 00200293 li t0,2 +8000038c: fe5212e3 bne tp,t0,80000370 + +80000390 : +80000390: 00100093 li ra,1 +80000394: 00009a63 bnez ra,800003a8 +80000398: 00108093 addi ra,ra,1 +8000039c: 00108093 addi ra,ra,1 +800003a0: 00108093 addi ra,ra,1 +800003a4: 00108093 addi ra,ra,1 +800003a8: 00108093 addi ra,ra,1 +800003ac: 00108093 addi ra,ra,1 +800003b0: 00300e93 li t4,3 +800003b4: 01500193 li gp,21 +800003b8: 01d09463 bne ra,t4,800003c0 +800003bc: 00301c63 bne zero,gp,800003d4 + +800003c0 : +800003c0: 0ff0000f fence +800003c4: 00018063 beqz gp,800003c4 +800003c8: 00119193 slli gp,gp,0x1 +800003cc: 0011e193 ori gp,gp,1 +800003d0: 00000073 ecall + +800003d4 : +800003d4: 0ff0000f fence +800003d8: 00100193 li gp,1 +800003dc: 00000073 ecall +800003e0: c0001073 unimp +800003e4: 0000 unimp +800003e6: 0000 unimp +800003e8: 0000 unimp +800003ea: 0000 unimp +800003ec: 0000 unimp +800003ee: 0000 unimp +800003f0: 0000 unimp +800003f2: 0000 unimp +800003f4: 0000 unimp +800003f6: 0000 unimp +800003f8: 0000 unimp +800003fa: 0000 unimp +800003fc: 0000 unimp +800003fe: 0000 unimp +80000400: 0000 unimp +80000402: 0000 unimp diff --git a/Tests/isa/rv32ui-p-fence_i b/Tests/isa/rv32ui-p-fence_i new file mode 100644 index 0000000..117bc4c Binary files /dev/null and b/Tests/isa/rv32ui-p-fence_i differ diff --git a/Tests/isa/rv32ui-p-fence_i.dump b/Tests/isa/rv32ui-p-fence_i.dump new file mode 100644 index 0000000..2b9bfc4 --- /dev/null +++ b/Tests/isa/rv32ui-p-fence_i.dump @@ -0,0 +1,189 @@ + +rv32ui-p-fence_i: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret +800000fc: 06f00693 li a3,111 +80000100: 00002517 auipc a0,0x2 +80000104: f0051503 lh a0,-256(a0) # 80002000 +80000108: 00002597 auipc a1,0x2 +8000010c: efa59583 lh a1,-262(a1) # 80002002 +80000110: 00000013 nop +80000114: 00000013 nop +80000118: 00000013 nop +8000011c: 00000013 nop +80000120: 00000013 nop +80000124: 00000013 nop +80000128: 00000013 nop +8000012c: 00000013 nop +80000130: 00000013 nop +80000134: 00000013 nop +80000138: 00000013 nop +8000013c: 00000013 nop +80000140: 00000297 auipc t0,0x0 +80000144: 00a29a23 sh a0,20(t0) # 80000154 +80000148: 00000297 auipc t0,0x0 +8000014c: 00b29723 sh a1,14(t0) # 80000156 +80000150: 0000100f fence.i +80000154: 0de68693 addi a3,a3,222 + +80000158 : +80000158: 00000013 nop +8000015c: 1bc00e93 li t4,444 +80000160: 00200193 li gp,2 +80000164: 07d69a63 bne a3,t4,800001d8 +80000168: 06400713 li a4,100 +8000016c: fff70713 addi a4,a4,-1 +80000170: fe071ee3 bnez a4,8000016c +80000174: 00000297 auipc t0,0x0 +80000178: 04a29623 sh a0,76(t0) # 800001c0 +8000017c: 00000297 auipc t0,0x0 +80000180: 04b29323 sh a1,70(t0) # 800001c2 +80000184: 0000100f fence.i +80000188: 00000013 nop +8000018c: 00000013 nop +80000190: 00000013 nop +80000194: 00000013 nop +80000198: 00000013 nop +8000019c: 00000013 nop +800001a0: 00000013 nop +800001a4: 00000013 nop +800001a8: 00000013 nop +800001ac: 00000013 nop +800001b0: 00000013 nop +800001b4: 00000013 nop +800001b8: 00000013 nop +800001bc: 00000013 nop +800001c0: 22b68693 addi a3,a3,555 + +800001c4 : +800001c4: 00000013 nop +800001c8: 30900e93 li t4,777 +800001cc: 00300193 li gp,3 +800001d0: 01d69463 bne a3,t4,800001d8 +800001d4: 00301c63 bne zero,gp,800001ec + +800001d8 : +800001d8: 0ff0000f fence +800001dc: 00018063 beqz gp,800001dc +800001e0: 00119193 slli gp,gp,0x1 +800001e4: 0011e193 ori gp,gp,1 +800001e8: 00000073 ecall + +800001ec : +800001ec: 0ff0000f fence +800001f0: 00100193 li gp,1 +800001f4: 00000073 ecall +800001f8: c0001073 unimp +800001fc: 0000 unimp +800001fe: 0000 unimp +80000200: 0000 unimp +80000202: 0000 unimp +80000204: 0000 unimp +80000206: 0000 unimp +80000208: 0000 unimp +8000020a: 0000 unimp +8000020c: 0000 unimp +8000020e: 0000 unimp +80000210: 0000 unimp +80000212: 0000 unimp +80000214: 0000 unimp +80000216: 0000 unimp +80000218: 0000 unimp +8000021a: 0000 unimp +8000021c: 0000 unimp +8000021e: 0000 unimp +80000220: 0000 unimp +80000222: 0000 unimp +80000224: 0000 unimp +80000226: 0000 unimp +80000228: 0000 unimp +8000022a: 0000 unimp +8000022c: 0000 unimp +8000022e: 0000 unimp +80000230: 0000 unimp +80000232: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 14d68693 addi a3,a3,333 +80002004: 0000 unimp +80002006: 0000 unimp +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32ui-p-jal b/Tests/isa/rv32ui-p-jal new file mode 100644 index 0000000..3c2310d Binary files /dev/null and b/Tests/isa/rv32ui-p-jal differ diff --git a/Tests/isa/rv32ui-p-jal.dump b/Tests/isa/rv32ui-p-jal.dump new file mode 100644 index 0000000..4fa9613 --- /dev/null +++ b/Tests/isa/rv32ui-p-jal.dump @@ -0,0 +1,128 @@ + +rv32ui-p-jal: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000093 li ra,0 +80000104: 0100026f jal tp,80000114 + +80000108 : +80000108: 00000013 nop +8000010c: 00000013 nop +80000110: 0400006f j 80000150 + +80000114 : +80000114: 00000117 auipc sp,0x0 +80000118: ff410113 addi sp,sp,-12 # 80000108 +8000011c: 02411a63 bne sp,tp,80000150 + +80000120 : +80000120: 00100093 li ra,1 +80000124: 0140006f j 80000138 +80000128: 00108093 addi ra,ra,1 +8000012c: 00108093 addi ra,ra,1 +80000130: 00108093 addi ra,ra,1 +80000134: 00108093 addi ra,ra,1 +80000138: 00108093 addi ra,ra,1 +8000013c: 00108093 addi ra,ra,1 +80000140: 00300e93 li t4,3 +80000144: 00300193 li gp,3 +80000148: 01d09463 bne ra,t4,80000150 +8000014c: 00301c63 bne zero,gp,80000164 + +80000150 : +80000150: 0ff0000f fence +80000154: 00018063 beqz gp,80000154 +80000158: 00119193 slli gp,gp,0x1 +8000015c: 0011e193 ori gp,gp,1 +80000160: 00000073 ecall + +80000164 : +80000164: 0ff0000f fence +80000168: 00100193 li gp,1 +8000016c: 00000073 ecall +80000170: c0001073 unimp +80000174: 0000 unimp +80000176: 0000 unimp +80000178: 0000 unimp +8000017a: 0000 unimp +8000017c: 0000 unimp +8000017e: 0000 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ui-p-jalr b/Tests/isa/rv32ui-p-jalr new file mode 100644 index 0000000..779364d Binary files /dev/null and b/Tests/isa/rv32ui-p-jalr differ diff --git a/Tests/isa/rv32ui-p-jalr.dump b/Tests/isa/rv32ui-p-jalr.dump new file mode 100644 index 0000000..09fdd35 --- /dev/null +++ b/Tests/isa/rv32ui-p-jalr.dump @@ -0,0 +1,166 @@ + +rv32ui-p-jalr: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00200193 li gp,2 +80000100: 00000293 li t0,0 +80000104: 00000317 auipc t1,0x0 +80000108: 01030313 addi t1,t1,16 # 80000114 +8000010c: 000302e7 jalr t0,t1 + +80000110 : +80000110: 0c00006f j 800001d0 + +80000114 : +80000114: 00000317 auipc t1,0x0 +80000118: ffc30313 addi t1,t1,-4 # 80000110 +8000011c: 0a629a63 bne t0,t1,800001d0 + +80000120 : +80000120: 00400193 li gp,4 +80000124: 00000213 li tp,0 +80000128: 00000317 auipc t1,0x0 +8000012c: 01030313 addi t1,t1,16 # 80000138 +80000130: 000309e7 jalr s3,t1 +80000134: 08301e63 bne zero,gp,800001d0 +80000138: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000013c: 00200293 li t0,2 +80000140: fe5214e3 bne tp,t0,80000128 + +80000144 : +80000144: 00500193 li gp,5 +80000148: 00000213 li tp,0 +8000014c: 00000317 auipc t1,0x0 +80000150: 01430313 addi t1,t1,20 # 80000160 +80000154: 00000013 nop +80000158: 000309e7 jalr s3,t1 +8000015c: 06301a63 bne zero,gp,800001d0 +80000160: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000164: 00200293 li t0,2 +80000168: fe5212e3 bne tp,t0,8000014c + +8000016c : +8000016c: 00600193 li gp,6 +80000170: 00000213 li tp,0 +80000174: 00000317 auipc t1,0x0 +80000178: 01830313 addi t1,t1,24 # 8000018c +8000017c: 00000013 nop +80000180: 00000013 nop +80000184: 000309e7 jalr s3,t1 +80000188: 04301463 bne zero,gp,800001d0 +8000018c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000190: 00200293 li t0,2 +80000194: fe5210e3 bne tp,t0,80000174 + +80000198 : +80000198: 00100293 li t0,1 +8000019c: 00000317 auipc t1,0x0 +800001a0: 01c30313 addi t1,t1,28 # 800001b8 +800001a4: ffc30067 jr -4(t1) +800001a8: 00128293 addi t0,t0,1 +800001ac: 00128293 addi t0,t0,1 +800001b0: 00128293 addi t0,t0,1 +800001b4: 00128293 addi t0,t0,1 +800001b8: 00128293 addi t0,t0,1 +800001bc: 00128293 addi t0,t0,1 +800001c0: 00400e93 li t4,4 +800001c4: 00700193 li gp,7 +800001c8: 01d29463 bne t0,t4,800001d0 +800001cc: 00301c63 bne zero,gp,800001e4 + +800001d0 : +800001d0: 0ff0000f fence +800001d4: 00018063 beqz gp,800001d4 +800001d8: 00119193 slli gp,gp,0x1 +800001dc: 0011e193 ori gp,gp,1 +800001e0: 00000073 ecall + +800001e4 : +800001e4: 0ff0000f fence +800001e8: 00100193 li gp,1 +800001ec: 00000073 ecall +800001f0: c0001073 unimp +800001f4: 0000 unimp +800001f6: 0000 unimp +800001f8: 0000 unimp +800001fa: 0000 unimp +800001fc: 0000 unimp +800001fe: 0000 unimp +80000200: 0000 unimp +80000202: 0000 unimp diff --git a/Tests/isa/rv32ui-p-lb b/Tests/isa/rv32ui-p-lb new file mode 100644 index 0000000..7fe62f3 Binary files /dev/null and b/Tests/isa/rv32ui-p-lb differ diff --git a/Tests/isa/rv32ui-p-lb.dump b/Tests/isa/rv32ui-p-lb.dump new file mode 100644 index 0000000..d7e051a --- /dev/null +++ b/Tests/isa/rv32ui-p-lb.dump @@ -0,0 +1,306 @@ + +rv32ui-p-lb: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: 00008f03 lb t5,0(ra) +80000108: fff00e93 li t4,-1 +8000010c: 00200193 li gp,2 +80000110: 23df1c63 bne t5,t4,80000348 + +80000114 : +80000114: 00002097 auipc ra,0x2 +80000118: eec08093 addi ra,ra,-276 # 80002000 +8000011c: 00108f03 lb t5,1(ra) +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 23df1063 bne t5,t4,80000348 + +8000012c : +8000012c: 00002097 auipc ra,0x2 +80000130: ed408093 addi ra,ra,-300 # 80002000 +80000134: 00208f03 lb t5,2(ra) +80000138: ff000e93 li t4,-16 +8000013c: 00400193 li gp,4 +80000140: 21df1463 bne t5,t4,80000348 + +80000144 : +80000144: 00002097 auipc ra,0x2 +80000148: ebc08093 addi ra,ra,-324 # 80002000 +8000014c: 00308f03 lb t5,3(ra) +80000150: 00f00e93 li t4,15 +80000154: 00500193 li gp,5 +80000158: 1fdf1863 bne t5,t4,80000348 + +8000015c : +8000015c: 00002097 auipc ra,0x2 +80000160: ea708093 addi ra,ra,-345 # 80002003 +80000164: ffd08f03 lb t5,-3(ra) +80000168: fff00e93 li t4,-1 +8000016c: 00600193 li gp,6 +80000170: 1ddf1c63 bne t5,t4,80000348 + +80000174 : +80000174: 00002097 auipc ra,0x2 +80000178: e8f08093 addi ra,ra,-369 # 80002003 +8000017c: ffe08f03 lb t5,-2(ra) +80000180: 00000e93 li t4,0 +80000184: 00700193 li gp,7 +80000188: 1ddf1063 bne t5,t4,80000348 + +8000018c : +8000018c: 00002097 auipc ra,0x2 +80000190: e7708093 addi ra,ra,-393 # 80002003 +80000194: fff08f03 lb t5,-1(ra) +80000198: ff000e93 li t4,-16 +8000019c: 00800193 li gp,8 +800001a0: 1bdf1463 bne t5,t4,80000348 + +800001a4 : +800001a4: 00002097 auipc ra,0x2 +800001a8: e5f08093 addi ra,ra,-417 # 80002003 +800001ac: 00008f03 lb t5,0(ra) +800001b0: 00f00e93 li t4,15 +800001b4: 00900193 li gp,9 +800001b8: 19df1863 bne t5,t4,80000348 + +800001bc : +800001bc: 00002097 auipc ra,0x2 +800001c0: e4408093 addi ra,ra,-444 # 80002000 +800001c4: fe008093 addi ra,ra,-32 +800001c8: 02008283 lb t0,32(ra) +800001cc: fff00e93 li t4,-1 +800001d0: 00a00193 li gp,10 +800001d4: 17d29a63 bne t0,t4,80000348 + +800001d8 : +800001d8: 00002097 auipc ra,0x2 +800001dc: e2808093 addi ra,ra,-472 # 80002000 +800001e0: ffa08093 addi ra,ra,-6 +800001e4: 00708283 lb t0,7(ra) +800001e8: 00000e93 li t4,0 +800001ec: 00b00193 li gp,11 +800001f0: 15d29c63 bne t0,t4,80000348 + +800001f4 : +800001f4: 00c00193 li gp,12 +800001f8: 00000213 li tp,0 +800001fc: 00002097 auipc ra,0x2 +80000200: e0508093 addi ra,ra,-507 # 80002001 +80000204: 00108f03 lb t5,1(ra) +80000208: 000f0313 mv t1,t5 +8000020c: ff000e93 li t4,-16 +80000210: 13d31c63 bne t1,t4,80000348 +80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000218: 00200293 li t0,2 +8000021c: fe5210e3 bne tp,t0,800001fc + +80000220 : +80000220: 00d00193 li gp,13 +80000224: 00000213 li tp,0 +80000228: 00002097 auipc ra,0x2 +8000022c: dda08093 addi ra,ra,-550 # 80002002 +80000230: 00108f03 lb t5,1(ra) +80000234: 00000013 nop +80000238: 000f0313 mv t1,t5 +8000023c: 00f00e93 li t4,15 +80000240: 11d31463 bne t1,t4,80000348 +80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000248: 00200293 li t0,2 +8000024c: fc521ee3 bne tp,t0,80000228 + +80000250 : +80000250: 00e00193 li gp,14 +80000254: 00000213 li tp,0 +80000258: 00002097 auipc ra,0x2 +8000025c: da808093 addi ra,ra,-600 # 80002000 +80000260: 00108f03 lb t5,1(ra) +80000264: 00000013 nop +80000268: 00000013 nop +8000026c: 000f0313 mv t1,t5 +80000270: 00000e93 li t4,0 +80000274: 0dd31a63 bne t1,t4,80000348 +80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000027c: 00200293 li t0,2 +80000280: fc521ce3 bne tp,t0,80000258 + +80000284 : +80000284: 00f00193 li gp,15 +80000288: 00000213 li tp,0 +8000028c: 00002097 auipc ra,0x2 +80000290: d7508093 addi ra,ra,-651 # 80002001 +80000294: 00108f03 lb t5,1(ra) +80000298: ff000e93 li t4,-16 +8000029c: 0bdf1663 bne t5,t4,80000348 +800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a4: 00200293 li t0,2 +800002a8: fe5212e3 bne tp,t0,8000028c + +800002ac : +800002ac: 01000193 li gp,16 +800002b0: 00000213 li tp,0 +800002b4: 00002097 auipc ra,0x2 +800002b8: d4e08093 addi ra,ra,-690 # 80002002 +800002bc: 00000013 nop +800002c0: 00108f03 lb t5,1(ra) +800002c4: 00f00e93 li t4,15 +800002c8: 09df1063 bne t5,t4,80000348 +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5210e3 bne tp,t0,800002b4 + +800002d8 : +800002d8: 01100193 li gp,17 +800002dc: 00000213 li tp,0 +800002e0: 00002097 auipc ra,0x2 +800002e4: d2008093 addi ra,ra,-736 # 80002000 +800002e8: 00000013 nop +800002ec: 00000013 nop +800002f0: 00108f03 lb t5,1(ra) +800002f4: 00000e93 li t4,0 +800002f8: 05df1863 bne t5,t4,80000348 +800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000300: 00200293 li t0,2 +80000304: fc521ee3 bne tp,t0,800002e0 + +80000308 : +80000308: 00002297 auipc t0,0x2 +8000030c: cf828293 addi t0,t0,-776 # 80002000 +80000310: 00028103 lb sp,0(t0) +80000314: 00200113 li sp,2 +80000318: 00200e93 li t4,2 +8000031c: 01200193 li gp,18 +80000320: 03d11463 bne sp,t4,80000348 + +80000324 : +80000324: 00002297 auipc t0,0x2 +80000328: cdc28293 addi t0,t0,-804 # 80002000 +8000032c: 00028103 lb sp,0(t0) +80000330: 00000013 nop +80000334: 00200113 li sp,2 +80000338: 00200e93 li t4,2 +8000033c: 01300193 li gp,19 +80000340: 01d11463 bne sp,t4,80000348 +80000344: 00301c63 bne zero,gp,8000035c + +80000348 : +80000348: 0ff0000f fence +8000034c: 00018063 beqz gp,8000034c +80000350: 00119193 slli gp,gp,0x1 +80000354: 0011e193 ori gp,gp,1 +80000358: 00000073 ecall + +8000035c : +8000035c: 0ff0000f fence +80000360: 00100193 li gp,1 +80000364: 00000073 ecall +80000368: c0001073 unimp +8000036c: 0000 unimp +8000036e: 0000 unimp +80000370: 0000 unimp +80000372: 0000 unimp +80000374: 0000 unimp +80000376: 0000 unimp +80000378: 0000 unimp +8000037a: 0000 unimp +8000037c: 0000 unimp +8000037e: 0000 unimp +80000380: 0000 unimp +80000382: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0xff + +80002001 : +80002001: fsw fs0,32(s0) + +80002002 : +80002002: addi a2,sp,988 + +80002003 : +80002003: 0000000f fence unknown,unknown +80002007: 0000 unimp +80002009: 0000 unimp +8000200b: 0000 unimp +8000200d: 0000 unimp +8000200f: 00 Address 0x000000008000200f is out of bounds. + diff --git a/Tests/isa/rv32ui-p-lbu b/Tests/isa/rv32ui-p-lbu new file mode 100644 index 0000000..2f40da0 Binary files /dev/null and b/Tests/isa/rv32ui-p-lbu differ diff --git a/Tests/isa/rv32ui-p-lbu.dump b/Tests/isa/rv32ui-p-lbu.dump new file mode 100644 index 0000000..ca55e4d --- /dev/null +++ b/Tests/isa/rv32ui-p-lbu.dump @@ -0,0 +1,306 @@ + +rv32ui-p-lbu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: 0000cf03 lbu t5,0(ra) +80000108: 0ff00e93 li t4,255 +8000010c: 00200193 li gp,2 +80000110: 23df1c63 bne t5,t4,80000348 + +80000114 : +80000114: 00002097 auipc ra,0x2 +80000118: eec08093 addi ra,ra,-276 # 80002000 +8000011c: 0010cf03 lbu t5,1(ra) +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 23df1063 bne t5,t4,80000348 + +8000012c : +8000012c: 00002097 auipc ra,0x2 +80000130: ed408093 addi ra,ra,-300 # 80002000 +80000134: 0020cf03 lbu t5,2(ra) +80000138: 0f000e93 li t4,240 +8000013c: 00400193 li gp,4 +80000140: 21df1463 bne t5,t4,80000348 + +80000144 : +80000144: 00002097 auipc ra,0x2 +80000148: ebc08093 addi ra,ra,-324 # 80002000 +8000014c: 0030cf03 lbu t5,3(ra) +80000150: 00f00e93 li t4,15 +80000154: 00500193 li gp,5 +80000158: 1fdf1863 bne t5,t4,80000348 + +8000015c : +8000015c: 00002097 auipc ra,0x2 +80000160: ea708093 addi ra,ra,-345 # 80002003 +80000164: ffd0cf03 lbu t5,-3(ra) +80000168: 0ff00e93 li t4,255 +8000016c: 00600193 li gp,6 +80000170: 1ddf1c63 bne t5,t4,80000348 + +80000174 : +80000174: 00002097 auipc ra,0x2 +80000178: e8f08093 addi ra,ra,-369 # 80002003 +8000017c: ffe0cf03 lbu t5,-2(ra) +80000180: 00000e93 li t4,0 +80000184: 00700193 li gp,7 +80000188: 1ddf1063 bne t5,t4,80000348 + +8000018c : +8000018c: 00002097 auipc ra,0x2 +80000190: e7708093 addi ra,ra,-393 # 80002003 +80000194: fff0cf03 lbu t5,-1(ra) +80000198: 0f000e93 li t4,240 +8000019c: 00800193 li gp,8 +800001a0: 1bdf1463 bne t5,t4,80000348 + +800001a4 : +800001a4: 00002097 auipc ra,0x2 +800001a8: e5f08093 addi ra,ra,-417 # 80002003 +800001ac: 0000cf03 lbu t5,0(ra) +800001b0: 00f00e93 li t4,15 +800001b4: 00900193 li gp,9 +800001b8: 19df1863 bne t5,t4,80000348 + +800001bc : +800001bc: 00002097 auipc ra,0x2 +800001c0: e4408093 addi ra,ra,-444 # 80002000 +800001c4: fe008093 addi ra,ra,-32 +800001c8: 0200c283 lbu t0,32(ra) +800001cc: 0ff00e93 li t4,255 +800001d0: 00a00193 li gp,10 +800001d4: 17d29a63 bne t0,t4,80000348 + +800001d8 : +800001d8: 00002097 auipc ra,0x2 +800001dc: e2808093 addi ra,ra,-472 # 80002000 +800001e0: ffa08093 addi ra,ra,-6 +800001e4: 0070c283 lbu t0,7(ra) +800001e8: 00000e93 li t4,0 +800001ec: 00b00193 li gp,11 +800001f0: 15d29c63 bne t0,t4,80000348 + +800001f4 : +800001f4: 00c00193 li gp,12 +800001f8: 00000213 li tp,0 +800001fc: 00002097 auipc ra,0x2 +80000200: e0508093 addi ra,ra,-507 # 80002001 +80000204: 0010cf03 lbu t5,1(ra) +80000208: 000f0313 mv t1,t5 +8000020c: 0f000e93 li t4,240 +80000210: 13d31c63 bne t1,t4,80000348 +80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000218: 00200293 li t0,2 +8000021c: fe5210e3 bne tp,t0,800001fc + +80000220 : +80000220: 00d00193 li gp,13 +80000224: 00000213 li tp,0 +80000228: 00002097 auipc ra,0x2 +8000022c: dda08093 addi ra,ra,-550 # 80002002 +80000230: 0010cf03 lbu t5,1(ra) +80000234: 00000013 nop +80000238: 000f0313 mv t1,t5 +8000023c: 00f00e93 li t4,15 +80000240: 11d31463 bne t1,t4,80000348 +80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000248: 00200293 li t0,2 +8000024c: fc521ee3 bne tp,t0,80000228 + +80000250 : +80000250: 00e00193 li gp,14 +80000254: 00000213 li tp,0 +80000258: 00002097 auipc ra,0x2 +8000025c: da808093 addi ra,ra,-600 # 80002000 +80000260: 0010cf03 lbu t5,1(ra) +80000264: 00000013 nop +80000268: 00000013 nop +8000026c: 000f0313 mv t1,t5 +80000270: 00000e93 li t4,0 +80000274: 0dd31a63 bne t1,t4,80000348 +80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000027c: 00200293 li t0,2 +80000280: fc521ce3 bne tp,t0,80000258 + +80000284 : +80000284: 00f00193 li gp,15 +80000288: 00000213 li tp,0 +8000028c: 00002097 auipc ra,0x2 +80000290: d7508093 addi ra,ra,-651 # 80002001 +80000294: 0010cf03 lbu t5,1(ra) +80000298: 0f000e93 li t4,240 +8000029c: 0bdf1663 bne t5,t4,80000348 +800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a4: 00200293 li t0,2 +800002a8: fe5212e3 bne tp,t0,8000028c + +800002ac : +800002ac: 01000193 li gp,16 +800002b0: 00000213 li tp,0 +800002b4: 00002097 auipc ra,0x2 +800002b8: d4e08093 addi ra,ra,-690 # 80002002 +800002bc: 00000013 nop +800002c0: 0010cf03 lbu t5,1(ra) +800002c4: 00f00e93 li t4,15 +800002c8: 09df1063 bne t5,t4,80000348 +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5210e3 bne tp,t0,800002b4 + +800002d8 : +800002d8: 01100193 li gp,17 +800002dc: 00000213 li tp,0 +800002e0: 00002097 auipc ra,0x2 +800002e4: d2008093 addi ra,ra,-736 # 80002000 +800002e8: 00000013 nop +800002ec: 00000013 nop +800002f0: 0010cf03 lbu t5,1(ra) +800002f4: 00000e93 li t4,0 +800002f8: 05df1863 bne t5,t4,80000348 +800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000300: 00200293 li t0,2 +80000304: fc521ee3 bne tp,t0,800002e0 + +80000308 : +80000308: 00002297 auipc t0,0x2 +8000030c: cf828293 addi t0,t0,-776 # 80002000 +80000310: 0002c103 lbu sp,0(t0) +80000314: 00200113 li sp,2 +80000318: 00200e93 li t4,2 +8000031c: 01200193 li gp,18 +80000320: 03d11463 bne sp,t4,80000348 + +80000324 : +80000324: 00002297 auipc t0,0x2 +80000328: cdc28293 addi t0,t0,-804 # 80002000 +8000032c: 0002c103 lbu sp,0(t0) +80000330: 00000013 nop +80000334: 00200113 li sp,2 +80000338: 00200e93 li t4,2 +8000033c: 01300193 li gp,19 +80000340: 01d11463 bne sp,t4,80000348 +80000344: 00301c63 bne zero,gp,8000035c + +80000348 : +80000348: 0ff0000f fence +8000034c: 00018063 beqz gp,8000034c +80000350: 00119193 slli gp,gp,0x1 +80000354: 0011e193 ori gp,gp,1 +80000358: 00000073 ecall + +8000035c : +8000035c: 0ff0000f fence +80000360: 00100193 li gp,1 +80000364: 00000073 ecall +80000368: c0001073 unimp +8000036c: 0000 unimp +8000036e: 0000 unimp +80000370: 0000 unimp +80000372: 0000 unimp +80000374: 0000 unimp +80000376: 0000 unimp +80000378: 0000 unimp +8000037a: 0000 unimp +8000037c: 0000 unimp +8000037e: 0000 unimp +80000380: 0000 unimp +80000382: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0xff + +80002001 : +80002001: fsw fs0,32(s0) + +80002002 : +80002002: addi a2,sp,988 + +80002003 : +80002003: 0000000f fence unknown,unknown +80002007: 0000 unimp +80002009: 0000 unimp +8000200b: 0000 unimp +8000200d: 0000 unimp +8000200f: 00 Address 0x000000008000200f is out of bounds. + diff --git a/Tests/isa/rv32ui-p-lh b/Tests/isa/rv32ui-p-lh new file mode 100644 index 0000000..d6a54a2 Binary files /dev/null and b/Tests/isa/rv32ui-p-lh differ diff --git a/Tests/isa/rv32ui-p-lh.dump b/Tests/isa/rv32ui-p-lh.dump new file mode 100644 index 0000000..df4c8d8 --- /dev/null +++ b/Tests/isa/rv32ui-p-lh.dump @@ -0,0 +1,327 @@ + +rv32ui-p-lh: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: 00009f03 lh t5,0(ra) +80000108: 0ff00e93 li t4,255 +8000010c: 00200193 li gp,2 +80000110: 25df1c63 bne t5,t4,80000368 + +80000114 : +80000114: 00002097 auipc ra,0x2 +80000118: eec08093 addi ra,ra,-276 # 80002000 +8000011c: 00209f03 lh t5,2(ra) +80000120: f0000e93 li t4,-256 +80000124: 00300193 li gp,3 +80000128: 25df1063 bne t5,t4,80000368 + +8000012c : +8000012c: 00002097 auipc ra,0x2 +80000130: ed408093 addi ra,ra,-300 # 80002000 +80000134: 00409f03 lh t5,4(ra) +80000138: 00001eb7 lui t4,0x1 +8000013c: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80000140: 00400193 li gp,4 +80000144: 23df1263 bne t5,t4,80000368 + +80000148 : +80000148: 00002097 auipc ra,0x2 +8000014c: eb808093 addi ra,ra,-328 # 80002000 +80000150: 00609f03 lh t5,6(ra) +80000154: fffffeb7 lui t4,0xfffff +80000158: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> +8000015c: 00500193 li gp,5 +80000160: 21df1463 bne t5,t4,80000368 + +80000164 : +80000164: 00002097 auipc ra,0x2 +80000168: ea208093 addi ra,ra,-350 # 80002006 +8000016c: ffa09f03 lh t5,-6(ra) +80000170: 0ff00e93 li t4,255 +80000174: 00600193 li gp,6 +80000178: 1fdf1863 bne t5,t4,80000368 + +8000017c : +8000017c: 00002097 auipc ra,0x2 +80000180: e8a08093 addi ra,ra,-374 # 80002006 +80000184: ffc09f03 lh t5,-4(ra) +80000188: f0000e93 li t4,-256 +8000018c: 00700193 li gp,7 +80000190: 1ddf1c63 bne t5,t4,80000368 + +80000194 : +80000194: 00002097 auipc ra,0x2 +80000198: e7208093 addi ra,ra,-398 # 80002006 +8000019c: ffe09f03 lh t5,-2(ra) +800001a0: 00001eb7 lui t4,0x1 +800001a4: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +800001a8: 00800193 li gp,8 +800001ac: 1bdf1e63 bne t5,t4,80000368 + +800001b0 : +800001b0: 00002097 auipc ra,0x2 +800001b4: e5608093 addi ra,ra,-426 # 80002006 +800001b8: 00009f03 lh t5,0(ra) +800001bc: fffffeb7 lui t4,0xfffff +800001c0: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> +800001c4: 00900193 li gp,9 +800001c8: 1bdf1063 bne t5,t4,80000368 + +800001cc : +800001cc: 00002097 auipc ra,0x2 +800001d0: e3408093 addi ra,ra,-460 # 80002000 +800001d4: fe008093 addi ra,ra,-32 +800001d8: 02009283 lh t0,32(ra) +800001dc: 0ff00e93 li t4,255 +800001e0: 00a00193 li gp,10 +800001e4: 19d29263 bne t0,t4,80000368 + +800001e8 : +800001e8: 00002097 auipc ra,0x2 +800001ec: e1808093 addi ra,ra,-488 # 80002000 +800001f0: ffb08093 addi ra,ra,-5 +800001f4: 00709283 lh t0,7(ra) +800001f8: f0000e93 li t4,-256 +800001fc: 00b00193 li gp,11 +80000200: 17d29463 bne t0,t4,80000368 + +80000204 : +80000204: 00c00193 li gp,12 +80000208: 00000213 li tp,0 +8000020c: 00002097 auipc ra,0x2 +80000210: df608093 addi ra,ra,-522 # 80002002 +80000214: 00209f03 lh t5,2(ra) +80000218: 000f0313 mv t1,t5 +8000021c: 00001eb7 lui t4,0x1 +80000220: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80000224: 15d31263 bne t1,t4,80000368 +80000228: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000022c: 00200293 li t0,2 +80000230: fc521ee3 bne tp,t0,8000020c + +80000234 : +80000234: 00d00193 li gp,13 +80000238: 00000213 li tp,0 +8000023c: 00002097 auipc ra,0x2 +80000240: dc808093 addi ra,ra,-568 # 80002004 +80000244: 00209f03 lh t5,2(ra) +80000248: 00000013 nop +8000024c: 000f0313 mv t1,t5 +80000250: fffffeb7 lui t4,0xfffff +80000254: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> +80000258: 11d31863 bne t1,t4,80000368 +8000025c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000260: 00200293 li t0,2 +80000264: fc521ce3 bne tp,t0,8000023c + +80000268 : +80000268: 00e00193 li gp,14 +8000026c: 00000213 li tp,0 +80000270: 00002097 auipc ra,0x2 +80000274: d9008093 addi ra,ra,-624 # 80002000 +80000278: 00209f03 lh t5,2(ra) +8000027c: 00000013 nop +80000280: 00000013 nop +80000284: 000f0313 mv t1,t5 +80000288: f0000e93 li t4,-256 +8000028c: 0dd31e63 bne t1,t4,80000368 +80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000294: 00200293 li t0,2 +80000298: fc521ce3 bne tp,t0,80000270 + +8000029c : +8000029c: 00f00193 li gp,15 +800002a0: 00000213 li tp,0 +800002a4: 00002097 auipc ra,0x2 +800002a8: d5e08093 addi ra,ra,-674 # 80002002 +800002ac: 00209f03 lh t5,2(ra) +800002b0: 00001eb7 lui t4,0x1 +800002b4: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +800002b8: 0bdf1863 bne t5,t4,80000368 +800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c0: 00200293 li t0,2 +800002c4: fe5210e3 bne tp,t0,800002a4 + +800002c8 : +800002c8: 01000193 li gp,16 +800002cc: 00000213 li tp,0 +800002d0: 00002097 auipc ra,0x2 +800002d4: d3408093 addi ra,ra,-716 # 80002004 +800002d8: 00000013 nop +800002dc: 00209f03 lh t5,2(ra) +800002e0: fffffeb7 lui t4,0xfffff +800002e4: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff> +800002e8: 09df1063 bne t5,t4,80000368 +800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f0: 00200293 li t0,2 +800002f4: fc521ee3 bne tp,t0,800002d0 + +800002f8 : +800002f8: 01100193 li gp,17 +800002fc: 00000213 li tp,0 +80000300: 00002097 auipc ra,0x2 +80000304: d0008093 addi ra,ra,-768 # 80002000 +80000308: 00000013 nop +8000030c: 00000013 nop +80000310: 00209f03 lh t5,2(ra) +80000314: f0000e93 li t4,-256 +80000318: 05df1863 bne t5,t4,80000368 +8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000320: 00200293 li t0,2 +80000324: fc521ee3 bne tp,t0,80000300 + +80000328 : +80000328: 00002297 auipc t0,0x2 +8000032c: cd828293 addi t0,t0,-808 # 80002000 +80000330: 00029103 lh sp,0(t0) +80000334: 00200113 li sp,2 +80000338: 00200e93 li t4,2 +8000033c: 01200193 li gp,18 +80000340: 03d11463 bne sp,t4,80000368 + +80000344 : +80000344: 00002297 auipc t0,0x2 +80000348: cbc28293 addi t0,t0,-836 # 80002000 +8000034c: 00029103 lh sp,0(t0) +80000350: 00000013 nop +80000354: 00200113 li sp,2 +80000358: 00200e93 li t4,2 +8000035c: 01300193 li gp,19 +80000360: 01d11463 bne sp,t4,80000368 +80000364: 00301c63 bne zero,gp,8000037c + +80000368 : +80000368: 0ff0000f fence +8000036c: 00018063 beqz gp,8000036c +80000370: 00119193 slli gp,gp,0x1 +80000374: 0011e193 ori gp,gp,1 +80000378: 00000073 ecall + +8000037c : +8000037c: 0ff0000f fence +80000380: 00100193 li gp,1 +80000384: 00000073 ecall +80000388: c0001073 unimp +8000038c: 0000 unimp +8000038e: 0000 unimp +80000390: 0000 unimp +80000392: 0000 unimp +80000394: 0000 unimp +80000396: 0000 unimp +80000398: 0000 unimp +8000039a: 0000 unimp +8000039c: 0000 unimp +8000039e: 0000 unimp +800003a0: 0000 unimp +800003a2: 0000 unimp +800003a4: 0000 unimp +800003a6: 0000 unimp +800003a8: 0000 unimp +800003aa: 0000 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 00ff 0xff + +80002002 : +80002002: ff00 fsw fs0,56(a4) + +80002004 : +80002004: 0ff0 addi a2,sp,988 + +80002006 : +80002006: 0000f00f 0xf00f +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32ui-p-lhu b/Tests/isa/rv32ui-p-lhu new file mode 100644 index 0000000..bb6aeee Binary files /dev/null and b/Tests/isa/rv32ui-p-lhu differ diff --git a/Tests/isa/rv32ui-p-lhu.dump b/Tests/isa/rv32ui-p-lhu.dump new file mode 100644 index 0000000..2457f63 --- /dev/null +++ b/Tests/isa/rv32ui-p-lhu.dump @@ -0,0 +1,322 @@ + +rv32ui-p-lhu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: 0000df03 lhu t5,0(ra) +80000108: 0ff00e93 li t4,255 +8000010c: 00200193 li gp,2 +80000110: 27df1663 bne t5,t4,8000037c + +80000114 : +80000114: 00002097 auipc ra,0x2 +80000118: eec08093 addi ra,ra,-276 # 80002000 +8000011c: 0020df03 lhu t5,2(ra) +80000120: 00010eb7 lui t4,0x10 +80000124: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80000128: 00300193 li gp,3 +8000012c: 25df1863 bne t5,t4,8000037c + +80000130 : +80000130: 00002097 auipc ra,0x2 +80000134: ed008093 addi ra,ra,-304 # 80002000 +80000138: 0040df03 lhu t5,4(ra) +8000013c: 00001eb7 lui t4,0x1 +80000140: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80000144: 00400193 li gp,4 +80000148: 23df1a63 bne t5,t4,8000037c + +8000014c : +8000014c: 00002097 auipc ra,0x2 +80000150: eb408093 addi ra,ra,-332 # 80002000 +80000154: 0060df03 lhu t5,6(ra) +80000158: 0000feb7 lui t4,0xf +8000015c: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +80000160: 00500193 li gp,5 +80000164: 21df1c63 bne t5,t4,8000037c + +80000168 : +80000168: 00002097 auipc ra,0x2 +8000016c: e9e08093 addi ra,ra,-354 # 80002006 +80000170: ffa0df03 lhu t5,-6(ra) +80000174: 0ff00e93 li t4,255 +80000178: 00600193 li gp,6 +8000017c: 21df1063 bne t5,t4,8000037c + +80000180 : +80000180: 00002097 auipc ra,0x2 +80000184: e8608093 addi ra,ra,-378 # 80002006 +80000188: ffc0df03 lhu t5,-4(ra) +8000018c: 00010eb7 lui t4,0x10 +80000190: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80000194: 00700193 li gp,7 +80000198: 1fdf1263 bne t5,t4,8000037c + +8000019c : +8000019c: 00002097 auipc ra,0x2 +800001a0: e6a08093 addi ra,ra,-406 # 80002006 +800001a4: ffe0df03 lhu t5,-2(ra) +800001a8: 00001eb7 lui t4,0x1 +800001ac: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +800001b0: 00800193 li gp,8 +800001b4: 1ddf1463 bne t5,t4,8000037c + +800001b8 : +800001b8: 00002097 auipc ra,0x2 +800001bc: e4e08093 addi ra,ra,-434 # 80002006 +800001c0: 0000df03 lhu t5,0(ra) +800001c4: 0000feb7 lui t4,0xf +800001c8: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +800001cc: 00900193 li gp,9 +800001d0: 1bdf1663 bne t5,t4,8000037c + +800001d4 : +800001d4: 00002097 auipc ra,0x2 +800001d8: e2c08093 addi ra,ra,-468 # 80002000 +800001dc: fe008093 addi ra,ra,-32 +800001e0: 0200d283 lhu t0,32(ra) +800001e4: 0ff00e93 li t4,255 +800001e8: 00a00193 li gp,10 +800001ec: 19d29863 bne t0,t4,8000037c + +800001f0 : +800001f0: 00002097 auipc ra,0x2 +800001f4: e1008093 addi ra,ra,-496 # 80002000 +800001f8: ffb08093 addi ra,ra,-5 +800001fc: 0070d283 lhu t0,7(ra) +80000200: 00010eb7 lui t4,0x10 +80000204: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80000208: 00b00193 li gp,11 +8000020c: 17d29863 bne t0,t4,8000037c + +80000210 : +80000210: 00c00193 li gp,12 +80000214: 00000213 li tp,0 +80000218: 00002097 auipc ra,0x2 +8000021c: dea08093 addi ra,ra,-534 # 80002002 +80000220: 0020df03 lhu t5,2(ra) +80000224: 000f0313 mv t1,t5 +80000228: 00001eb7 lui t4,0x1 +8000022c: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80000230: 15d31663 bne t1,t4,8000037c +80000234: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000238: 00200293 li t0,2 +8000023c: fc521ee3 bne tp,t0,80000218 + +80000240 : +80000240: 00d00193 li gp,13 +80000244: 00000213 li tp,0 +80000248: 00002097 auipc ra,0x2 +8000024c: dbc08093 addi ra,ra,-580 # 80002004 +80000250: 0020df03 lhu t5,2(ra) +80000254: 00000013 nop +80000258: 000f0313 mv t1,t5 +8000025c: 0000feb7 lui t4,0xf +80000260: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +80000264: 11d31c63 bne t1,t4,8000037c +80000268: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000026c: 00200293 li t0,2 +80000270: fc521ce3 bne tp,t0,80000248 + +80000274 : +80000274: 00e00193 li gp,14 +80000278: 00000213 li tp,0 +8000027c: 00002097 auipc ra,0x2 +80000280: d8408093 addi ra,ra,-636 # 80002000 +80000284: 0020df03 lhu t5,2(ra) +80000288: 00000013 nop +8000028c: 00000013 nop +80000290: 000f0313 mv t1,t5 +80000294: 00010eb7 lui t4,0x10 +80000298: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +8000029c: 0fd31063 bne t1,t4,8000037c +800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002a4: 00200293 li t0,2 +800002a8: fc521ae3 bne tp,t0,8000027c + +800002ac : +800002ac: 00f00193 li gp,15 +800002b0: 00000213 li tp,0 +800002b4: 00002097 auipc ra,0x2 +800002b8: d4e08093 addi ra,ra,-690 # 80002002 +800002bc: 0020df03 lhu t5,2(ra) +800002c0: 00001eb7 lui t4,0x1 +800002c4: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +800002c8: 0bdf1a63 bne t5,t4,8000037c +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5210e3 bne tp,t0,800002b4 + +800002d8 : +800002d8: 01000193 li gp,16 +800002dc: 00000213 li tp,0 +800002e0: 00002097 auipc ra,0x2 +800002e4: d2408093 addi ra,ra,-732 # 80002004 +800002e8: 00000013 nop +800002ec: 0020df03 lhu t5,2(ra) +800002f0: 0000feb7 lui t4,0xf +800002f4: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +800002f8: 09df1263 bne t5,t4,8000037c +800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000300: 00200293 li t0,2 +80000304: fc521ee3 bne tp,t0,800002e0 + +80000308 : +80000308: 01100193 li gp,17 +8000030c: 00000213 li tp,0 +80000310: 00002097 auipc ra,0x2 +80000314: cf008093 addi ra,ra,-784 # 80002000 +80000318: 00000013 nop +8000031c: 00000013 nop +80000320: 0020df03 lhu t5,2(ra) +80000324: 00010eb7 lui t4,0x10 +80000328: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +8000032c: 05df1863 bne t5,t4,8000037c +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fc521ce3 bne tp,t0,80000310 + +8000033c : +8000033c: 00002297 auipc t0,0x2 +80000340: cc428293 addi t0,t0,-828 # 80002000 +80000344: 0002d103 lhu sp,0(t0) +80000348: 00200113 li sp,2 +8000034c: 00200e93 li t4,2 +80000350: 01200193 li gp,18 +80000354: 03d11463 bne sp,t4,8000037c + +80000358 : +80000358: 00002297 auipc t0,0x2 +8000035c: ca828293 addi t0,t0,-856 # 80002000 +80000360: 0002d103 lhu sp,0(t0) +80000364: 00000013 nop +80000368: 00200113 li sp,2 +8000036c: 00200e93 li t4,2 +80000370: 01300193 li gp,19 +80000374: 01d11463 bne sp,t4,8000037c +80000378: 00301c63 bne zero,gp,80000390 + +8000037c : +8000037c: 0ff0000f fence +80000380: 00018063 beqz gp,80000380 +80000384: 00119193 slli gp,gp,0x1 +80000388: 0011e193 ori gp,gp,1 +8000038c: 00000073 ecall + +80000390 : +80000390: 0ff0000f fence +80000394: 00100193 li gp,1 +80000398: 00000073 ecall +8000039c: c0001073 unimp +800003a0: 0000 unimp +800003a2: 0000 unimp +800003a4: 0000 unimp +800003a6: 0000 unimp +800003a8: 0000 unimp +800003aa: 0000 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 00ff 0xff + +80002002 : +80002002: ff00 fsw fs0,56(a4) + +80002004 : +80002004: 0ff0 addi a2,sp,988 + +80002006 : +80002006: 0000f00f 0xf00f +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/Tests/isa/rv32ui-p-lui b/Tests/isa/rv32ui-p-lui new file mode 100644 index 0000000..54c606b Binary files /dev/null and b/Tests/isa/rv32ui-p-lui differ diff --git a/Tests/isa/rv32ui-p-lui.dump b/Tests/isa/rv32ui-p-lui.dump new file mode 100644 index 0000000..380c8e1 --- /dev/null +++ b/Tests/isa/rv32ui-p-lui.dump @@ -0,0 +1,127 @@ + +rv32ui-p-lui: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 000000b7 lui ra,0x0 +80000100: 00000e93 li t4,0 +80000104: 00200193 li gp,2 +80000108: 05d09a63 bne ra,t4,8000015c + +8000010c : +8000010c: fffff0b7 lui ra,0xfffff +80000110: 4010d093 srai ra,ra,0x1 +80000114: 80000e93 li t4,-2048 +80000118: 00300193 li gp,3 +8000011c: 05d09063 bne ra,t4,8000015c + +80000120 : +80000120: 7ffff0b7 lui ra,0x7ffff +80000124: 4140d093 srai ra,ra,0x14 +80000128: 7ff00e93 li t4,2047 +8000012c: 00400193 li gp,4 +80000130: 03d09663 bne ra,t4,8000015c + +80000134 : +80000134: 800000b7 lui ra,0x80000 +80000138: 4140d093 srai ra,ra,0x14 +8000013c: 80000e93 li t4,-2048 +80000140: 00500193 li gp,5 +80000144: 01d09c63 bne ra,t4,8000015c + +80000148 : +80000148: 80000037 lui zero,0x80000 +8000014c: 00000e93 li t4,0 +80000150: 00600193 li gp,6 +80000154: 01d01463 bne zero,t4,8000015c +80000158: 00301c63 bne zero,gp,80000170 + +8000015c : +8000015c: 0ff0000f fence +80000160: 00018063 beqz gp,80000160 +80000164: 00119193 slli gp,gp,0x1 +80000168: 0011e193 ori gp,gp,1 +8000016c: 00000073 ecall + +80000170 : +80000170: 0ff0000f fence +80000174: 00100193 li gp,1 +80000178: 00000073 ecall +8000017c: c0001073 unimp +80000180: 0000 unimp +80000182: 0000 unimp diff --git a/Tests/isa/rv32ui-p-lw b/Tests/isa/rv32ui-p-lw new file mode 100644 index 0000000..ae9b2ad Binary files /dev/null and b/Tests/isa/rv32ui-p-lw differ diff --git a/Tests/isa/rv32ui-p-lw.dump b/Tests/isa/rv32ui-p-lw.dump new file mode 100644 index 0000000..031df75 --- /dev/null +++ b/Tests/isa/rv32ui-p-lw.dump @@ -0,0 +1,319 @@ + +rv32ui-p-lw: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: 0000af03 lw t5,0(ra) +80000108: 00ff0eb7 lui t4,0xff0 +8000010c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80000110: 00200193 li gp,2 +80000114: 27df1a63 bne t5,t4,80000388 + +80000118 : +80000118: 00002097 auipc ra,0x2 +8000011c: ee808093 addi ra,ra,-280 # 80002000 +80000120: 0040af03 lw t5,4(ra) +80000124: ff010eb7 lui t4,0xff010 +80000128: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> +8000012c: 00300193 li gp,3 +80000130: 25df1c63 bne t5,t4,80000388 + +80000134 : +80000134: 00002097 auipc ra,0x2 +80000138: ecc08093 addi ra,ra,-308 # 80002000 +8000013c: 0080af03 lw t5,8(ra) +80000140: 0ff01eb7 lui t4,0xff01 +80000144: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000148: 00400193 li gp,4 +8000014c: 23df1e63 bne t5,t4,80000388 + +80000150 : +80000150: 00002097 auipc ra,0x2 +80000154: eb008093 addi ra,ra,-336 # 80002000 +80000158: 00c0af03 lw t5,12(ra) +8000015c: f00ffeb7 lui t4,0xf00ff +80000160: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> +80000164: 00500193 li gp,5 +80000168: 23df1063 bne t5,t4,80000388 + +8000016c : +8000016c: 00002097 auipc ra,0x2 +80000170: ea008093 addi ra,ra,-352 # 8000200c +80000174: ff40af03 lw t5,-12(ra) +80000178: 00ff0eb7 lui t4,0xff0 +8000017c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80000180: 00600193 li gp,6 +80000184: 21df1263 bne t5,t4,80000388 + +80000188 : +80000188: 00002097 auipc ra,0x2 +8000018c: e8408093 addi ra,ra,-380 # 8000200c +80000190: ff80af03 lw t5,-8(ra) +80000194: ff010eb7 lui t4,0xff010 +80000198: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> +8000019c: 00700193 li gp,7 +800001a0: 1fdf1463 bne t5,t4,80000388 + +800001a4 : +800001a4: 00002097 auipc ra,0x2 +800001a8: e6808093 addi ra,ra,-408 # 8000200c +800001ac: ffc0af03 lw t5,-4(ra) +800001b0: 0ff01eb7 lui t4,0xff01 +800001b4: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +800001b8: 00800193 li gp,8 +800001bc: 1ddf1663 bne t5,t4,80000388 + +800001c0 : +800001c0: 00002097 auipc ra,0x2 +800001c4: e4c08093 addi ra,ra,-436 # 8000200c +800001c8: 0000af03 lw t5,0(ra) +800001cc: f00ffeb7 lui t4,0xf00ff +800001d0: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> +800001d4: 00900193 li gp,9 +800001d8: 1bdf1863 bne t5,t4,80000388 + +800001dc : +800001dc: 00002097 auipc ra,0x2 +800001e0: e2408093 addi ra,ra,-476 # 80002000 +800001e4: fe008093 addi ra,ra,-32 +800001e8: 0200a283 lw t0,32(ra) +800001ec: 00ff0eb7 lui t4,0xff0 +800001f0: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +800001f4: 00a00193 li gp,10 +800001f8: 19d29863 bne t0,t4,80000388 + +800001fc : +800001fc: 00002097 auipc ra,0x2 +80000200: e0408093 addi ra,ra,-508 # 80002000 +80000204: ffd08093 addi ra,ra,-3 +80000208: 0070a283 lw t0,7(ra) +8000020c: ff010eb7 lui t4,0xff010 +80000210: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> +80000214: 00b00193 li gp,11 +80000218: 17d29863 bne t0,t4,80000388 + +8000021c : +8000021c: 00c00193 li gp,12 +80000220: 00000213 li tp,0 +80000224: 00002097 auipc ra,0x2 +80000228: de008093 addi ra,ra,-544 # 80002004 +8000022c: 0040af03 lw t5,4(ra) +80000230: 000f0313 mv t1,t5 +80000234: 0ff01eb7 lui t4,0xff01 +80000238: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +8000023c: 15d31663 bne t1,t4,80000388 +80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000244: 00200293 li t0,2 +80000248: fc521ee3 bne tp,t0,80000224 + +8000024c : +8000024c: 00d00193 li gp,13 +80000250: 00000213 li tp,0 +80000254: 00002097 auipc ra,0x2 +80000258: db408093 addi ra,ra,-588 # 80002008 +8000025c: 0040af03 lw t5,4(ra) +80000260: 00000013 nop +80000264: 000f0313 mv t1,t5 +80000268: f00ffeb7 lui t4,0xf00ff +8000026c: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> +80000270: 11d31c63 bne t1,t4,80000388 +80000274: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000278: 00200293 li t0,2 +8000027c: fc521ce3 bne tp,t0,80000254 + +80000280 : +80000280: 00e00193 li gp,14 +80000284: 00000213 li tp,0 +80000288: 00002097 auipc ra,0x2 +8000028c: d7808093 addi ra,ra,-648 # 80002000 +80000290: 0040af03 lw t5,4(ra) +80000294: 00000013 nop +80000298: 00000013 nop +8000029c: 000f0313 mv t1,t5 +800002a0: ff010eb7 lui t4,0xff010 +800002a4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> +800002a8: 0fd31063 bne t1,t4,80000388 +800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002b0: 00200293 li t0,2 +800002b4: fc521ae3 bne tp,t0,80000288 + +800002b8 : +800002b8: 00f00193 li gp,15 +800002bc: 00000213 li tp,0 +800002c0: 00002097 auipc ra,0x2 +800002c4: d4408093 addi ra,ra,-700 # 80002004 +800002c8: 0040af03 lw t5,4(ra) +800002cc: 0ff01eb7 lui t4,0xff01 +800002d0: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +800002d4: 0bdf1a63 bne t5,t4,80000388 +800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002dc: 00200293 li t0,2 +800002e0: fe5210e3 bne tp,t0,800002c0 + +800002e4 : +800002e4: 01000193 li gp,16 +800002e8: 00000213 li tp,0 +800002ec: 00002097 auipc ra,0x2 +800002f0: d1c08093 addi ra,ra,-740 # 80002008 +800002f4: 00000013 nop +800002f8: 0040af03 lw t5,4(ra) +800002fc: f00ffeb7 lui t4,0xf00ff +80000300: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff> +80000304: 09df1263 bne t5,t4,80000388 +80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000030c: 00200293 li t0,2 +80000310: fc521ee3 bne tp,t0,800002ec + +80000314 : +80000314: 01100193 li gp,17 +80000318: 00000213 li tp,0 +8000031c: 00002097 auipc ra,0x2 +80000320: ce408093 addi ra,ra,-796 # 80002000 +80000324: 00000013 nop +80000328: 00000013 nop +8000032c: 0040af03 lw t5,4(ra) +80000330: ff010eb7 lui t4,0xff010 +80000334: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0> +80000338: 05df1863 bne t5,t4,80000388 +8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000340: 00200293 li t0,2 +80000344: fc521ce3 bne tp,t0,8000031c + +80000348 : +80000348: 00002297 auipc t0,0x2 +8000034c: cb828293 addi t0,t0,-840 # 80002000 +80000350: 0002a103 lw sp,0(t0) +80000354: 00200113 li sp,2 +80000358: 00200e93 li t4,2 +8000035c: 01200193 li gp,18 +80000360: 03d11463 bne sp,t4,80000388 + +80000364 : +80000364: 00002297 auipc t0,0x2 +80000368: c9c28293 addi t0,t0,-868 # 80002000 +8000036c: 0002a103 lw sp,0(t0) +80000370: 00000013 nop +80000374: 00200113 li sp,2 +80000378: 00200e93 li t4,2 +8000037c: 01300193 li gp,19 +80000380: 01d11463 bne sp,t4,80000388 +80000384: 00301c63 bne zero,gp,8000039c + +80000388 : +80000388: 0ff0000f fence +8000038c: 00018063 beqz gp,8000038c +80000390: 00119193 slli gp,gp,0x1 +80000394: 0011e193 ori gp,gp,1 +80000398: 00000073 ecall + +8000039c : +8000039c: 0ff0000f fence +800003a0: 00100193 li gp,1 +800003a4: 00000073 ecall +800003a8: c0001073 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 00ff 0xff +80002002: 00ff 0xff + +80002004 : +80002004: ff00 fsw fs0,56(a4) +80002006: ff00 fsw fs0,56(a4) + +80002008 : +80002008: 0ff0 addi a2,sp,988 +8000200a: 0ff0 addi a2,sp,988 + +8000200c : +8000200c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv32ui-p-or b/Tests/isa/rv32ui-p-or new file mode 100644 index 0000000..e7dbce6 Binary files /dev/null and b/Tests/isa/rv32ui-p-or differ diff --git a/Tests/isa/rv32ui-p-or.dump b/Tests/isa/rv32ui-p-or.dump new file mode 100644 index 0000000..5d8d60a --- /dev/null +++ b/Tests/isa/rv32ui-p-or.dump @@ -0,0 +1,464 @@ + +rv32ui-p-or: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: ff0100b7 lui ra,0xff010 +80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000104: 0f0f1137 lui sp,0xf0f1 +80000108: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +8000010c: 0020ef33 or t5,ra,sp +80000110: ff100eb7 lui t4,0xff100 +80000114: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +80000118: 00200193 li gp,2 +8000011c: 4bdf1263 bne t5,t4,800005c0 + +80000120 : +80000120: 0ff010b7 lui ra,0xff01 +80000124: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000128: f0f0f137 lui sp,0xf0f0f +8000012c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000130: 0020ef33 or t5,ra,sp +80000134: fff10eb7 lui t4,0xfff10 +80000138: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> +8000013c: 00300193 li gp,3 +80000140: 49df1063 bne t5,t4,800005c0 + +80000144 : +80000144: 00ff00b7 lui ra,0xff0 +80000148: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000014c: 0f0f1137 lui sp,0xf0f1 +80000150: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000154: 0020ef33 or t5,ra,sp +80000158: 0fff1eb7 lui t4,0xfff1 +8000015c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80000160: 00400193 li gp,4 +80000164: 45df1e63 bne t5,t4,800005c0 + +80000168 : +80000168: f00ff0b7 lui ra,0xf00ff +8000016c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +80000170: f0f0f137 lui sp,0xf0f0f +80000174: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000178: 0020ef33 or t5,ra,sp +8000017c: f0fffeb7 lui t4,0xf0fff +80000180: 0ffe8e93 addi t4,t4,255 # f0fff0ff <_end+0x70ffd0ff> +80000184: 00500193 li gp,5 +80000188: 43df1c63 bne t5,t4,800005c0 + +8000018c : +8000018c: ff0100b7 lui ra,0xff010 +80000190: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000194: 0f0f1137 lui sp,0xf0f1 +80000198: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +8000019c: 0020e0b3 or ra,ra,sp +800001a0: ff100eb7 lui t4,0xff100 +800001a4: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +800001a8: 00600193 li gp,6 +800001ac: 41d09a63 bne ra,t4,800005c0 + +800001b0 : +800001b0: ff0100b7 lui ra,0xff010 +800001b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001b8: 0f0f1137 lui sp,0xf0f1 +800001bc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800001c0: 0020e133 or sp,ra,sp +800001c4: ff100eb7 lui t4,0xff100 +800001c8: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +800001cc: 00700193 li gp,7 +800001d0: 3fd11863 bne sp,t4,800005c0 + +800001d4 : +800001d4: ff0100b7 lui ra,0xff010 +800001d8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001dc: 0010e0b3 or ra,ra,ra +800001e0: ff010eb7 lui t4,0xff010 +800001e4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +800001e8: 00800193 li gp,8 +800001ec: 3dd09a63 bne ra,t4,800005c0 + +800001f0 : +800001f0: 00000213 li tp,0 +800001f4: ff0100b7 lui ra,0xff010 +800001f8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001fc: 0f0f1137 lui sp,0xf0f1 +80000200: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000204: 0020ef33 or t5,ra,sp +80000208: 000f0313 mv t1,t5 +8000020c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000210: 00200293 li t0,2 +80000214: fe5210e3 bne tp,t0,800001f4 +80000218: ff100eb7 lui t4,0xff100 +8000021c: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +80000220: 00900193 li gp,9 +80000224: 39d31e63 bne t1,t4,800005c0 + +80000228 : +80000228: 00000213 li tp,0 +8000022c: 0ff010b7 lui ra,0xff01 +80000230: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000234: f0f0f137 lui sp,0xf0f0f +80000238: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +8000023c: 0020ef33 or t5,ra,sp +80000240: 00000013 nop +80000244: 000f0313 mv t1,t5 +80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000024c: 00200293 li t0,2 +80000250: fc521ee3 bne tp,t0,8000022c +80000254: fff10eb7 lui t4,0xfff10 +80000258: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> +8000025c: 00a00193 li gp,10 +80000260: 37d31063 bne t1,t4,800005c0 + +80000264 : +80000264: 00000213 li tp,0 +80000268: 00ff00b7 lui ra,0xff0 +8000026c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000270: 0f0f1137 lui sp,0xf0f1 +80000274: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000278: 0020ef33 or t5,ra,sp +8000027c: 00000013 nop +80000280: 00000013 nop +80000284: 000f0313 mv t1,t5 +80000288: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000028c: 00200293 li t0,2 +80000290: fc521ce3 bne tp,t0,80000268 +80000294: 0fff1eb7 lui t4,0xfff1 +80000298: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +8000029c: 00b00193 li gp,11 +800002a0: 33d31063 bne t1,t4,800005c0 + +800002a4 : +800002a4: 00000213 li tp,0 +800002a8: ff0100b7 lui ra,0xff010 +800002ac: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800002b0: 0f0f1137 lui sp,0xf0f1 +800002b4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800002b8: 0020ef33 or t5,ra,sp +800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c0: 00200293 li t0,2 +800002c4: fe5212e3 bne tp,t0,800002a8 +800002c8: ff100eb7 lui t4,0xff100 +800002cc: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +800002d0: 00c00193 li gp,12 +800002d4: 2fdf1663 bne t5,t4,800005c0 + +800002d8 : +800002d8: 00000213 li tp,0 +800002dc: 0ff010b7 lui ra,0xff01 +800002e0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +800002e4: f0f0f137 lui sp,0xf0f0f +800002e8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +800002ec: 00000013 nop +800002f0: 0020ef33 or t5,ra,sp +800002f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f8: 00200293 li t0,2 +800002fc: fe5210e3 bne tp,t0,800002dc +80000300: fff10eb7 lui t4,0xfff10 +80000304: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> +80000308: 00d00193 li gp,13 +8000030c: 2bdf1a63 bne t5,t4,800005c0 + +80000310 : +80000310: 00000213 li tp,0 +80000314: 00ff00b7 lui ra,0xff0 +80000318: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000031c: 0f0f1137 lui sp,0xf0f1 +80000320: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000324: 00000013 nop +80000328: 00000013 nop +8000032c: 0020ef33 or t5,ra,sp +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fc521ee3 bne tp,t0,80000314 +8000033c: 0fff1eb7 lui t4,0xfff1 +80000340: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80000344: 00e00193 li gp,14 +80000348: 27df1c63 bne t5,t4,800005c0 + +8000034c : +8000034c: 00000213 li tp,0 +80000350: ff0100b7 lui ra,0xff010 +80000354: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000358: 00000013 nop +8000035c: 0f0f1137 lui sp,0xf0f1 +80000360: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000364: 0020ef33 or t5,ra,sp +80000368: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000036c: 00200293 li t0,2 +80000370: fe5210e3 bne tp,t0,80000350 +80000374: ff100eb7 lui t4,0xff100 +80000378: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +8000037c: 00f00193 li gp,15 +80000380: 25df1063 bne t5,t4,800005c0 + +80000384 : +80000384: 00000213 li tp,0 +80000388: 0ff010b7 lui ra,0xff01 +8000038c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000390: 00000013 nop +80000394: f0f0f137 lui sp,0xf0f0f +80000398: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +8000039c: 00000013 nop +800003a0: 0020ef33 or t5,ra,sp +800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003a8: 00200293 li t0,2 +800003ac: fc521ee3 bne tp,t0,80000388 +800003b0: fff10eb7 lui t4,0xfff10 +800003b4: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> +800003b8: 01000193 li gp,16 +800003bc: 21df1263 bne t5,t4,800005c0 + +800003c0 : +800003c0: 00000213 li tp,0 +800003c4: 00ff00b7 lui ra,0xff0 +800003c8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800003cc: 00000013 nop +800003d0: 00000013 nop +800003d4: 0f0f1137 lui sp,0xf0f1 +800003d8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800003dc: 0020ef33 or t5,ra,sp +800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003e4: 00200293 li t0,2 +800003e8: fc521ee3 bne tp,t0,800003c4 +800003ec: 0fff1eb7 lui t4,0xfff1 +800003f0: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +800003f4: 01100193 li gp,17 +800003f8: 1ddf1463 bne t5,t4,800005c0 + +800003fc : +800003fc: 00000213 li tp,0 +80000400: 0f0f1137 lui sp,0xf0f1 +80000404: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000408: ff0100b7 lui ra,0xff010 +8000040c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000410: 0020ef33 or t5,ra,sp +80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000418: 00200293 li t0,2 +8000041c: fe5212e3 bne tp,t0,80000400 +80000420: ff100eb7 lui t4,0xff100 +80000424: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +80000428: 01200193 li gp,18 +8000042c: 19df1a63 bne t5,t4,800005c0 + +80000430 : +80000430: 00000213 li tp,0 +80000434: f0f0f137 lui sp,0xf0f0f +80000438: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +8000043c: 0ff010b7 lui ra,0xff01 +80000440: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000444: 00000013 nop +80000448: 0020ef33 or t5,ra,sp +8000044c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000450: 00200293 li t0,2 +80000454: fe5210e3 bne tp,t0,80000434 +80000458: fff10eb7 lui t4,0xfff10 +8000045c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> +80000460: 01300193 li gp,19 +80000464: 15df1e63 bne t5,t4,800005c0 + +80000468 : +80000468: 00000213 li tp,0 +8000046c: 0f0f1137 lui sp,0xf0f1 +80000470: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000474: 00ff00b7 lui ra,0xff0 +80000478: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000047c: 00000013 nop +80000480: 00000013 nop +80000484: 0020ef33 or t5,ra,sp +80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000048c: 00200293 li t0,2 +80000490: fc521ee3 bne tp,t0,8000046c +80000494: 0fff1eb7 lui t4,0xfff1 +80000498: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +8000049c: 01400193 li gp,20 +800004a0: 13df1063 bne t5,t4,800005c0 + +800004a4 : +800004a4: 00000213 li tp,0 +800004a8: 0f0f1137 lui sp,0xf0f1 +800004ac: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800004b0: 00000013 nop +800004b4: ff0100b7 lui ra,0xff010 +800004b8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800004bc: 0020ef33 or t5,ra,sp +800004c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004c4: 00200293 li t0,2 +800004c8: fe5210e3 bne tp,t0,800004a8 +800004cc: ff100eb7 lui t4,0xff100 +800004d0: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f> +800004d4: 01500193 li gp,21 +800004d8: 0fdf1463 bne t5,t4,800005c0 + +800004dc : +800004dc: 00000213 li tp,0 +800004e0: f0f0f137 lui sp,0xf0f0f +800004e4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +800004e8: 00000013 nop +800004ec: 0ff010b7 lui ra,0xff01 +800004f0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +800004f4: 00000013 nop +800004f8: 0020ef33 or t5,ra,sp +800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000500: 00200293 li t0,2 +80000504: fc521ee3 bne tp,t0,800004e0 +80000508: fff10eb7 lui t4,0xfff10 +8000050c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0> +80000510: 01600193 li gp,22 +80000514: 0bdf1663 bne t5,t4,800005c0 + +80000518 : +80000518: 00000213 li tp,0 +8000051c: 0f0f1137 lui sp,0xf0f1 +80000520: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000524: 00000013 nop +80000528: 00000013 nop +8000052c: 00ff00b7 lui ra,0xff0 +80000530: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000534: 0020ef33 or t5,ra,sp +80000538: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000053c: 00200293 li t0,2 +80000540: fc521ee3 bne tp,t0,8000051c +80000544: 0fff1eb7 lui t4,0xfff1 +80000548: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +8000054c: 01700193 li gp,23 +80000550: 07df1863 bne t5,t4,800005c0 + +80000554 : +80000554: ff0100b7 lui ra,0xff010 +80000558: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +8000055c: 00106133 or sp,zero,ra +80000560: ff010eb7 lui t4,0xff010 +80000564: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +80000568: 01800193 li gp,24 +8000056c: 05d11a63 bne sp,t4,800005c0 + +80000570 : +80000570: 00ff00b7 lui ra,0xff0 +80000574: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000578: 0000e133 or sp,ra,zero +8000057c: 00ff0eb7 lui t4,0xff0 +80000580: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80000584: 01900193 li gp,25 +80000588: 03d11c63 bne sp,t4,800005c0 + +8000058c : +8000058c: 000060b3 or ra,zero,zero +80000590: 00000e93 li t4,0 +80000594: 01a00193 li gp,26 +80000598: 03d09463 bne ra,t4,800005c0 + +8000059c : +8000059c: 111110b7 lui ra,0x11111 +800005a0: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> +800005a4: 22222137 lui sp,0x22222 +800005a8: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> +800005ac: 0020e033 or zero,ra,sp +800005b0: 00000e93 li t4,0 +800005b4: 01b00193 li gp,27 +800005b8: 01d01463 bne zero,t4,800005c0 +800005bc: 00301c63 bne zero,gp,800005d4 + +800005c0 : +800005c0: 0ff0000f fence +800005c4: 00018063 beqz gp,800005c4 +800005c8: 00119193 slli gp,gp,0x1 +800005cc: 0011e193 ori gp,gp,1 +800005d0: 00000073 ecall + +800005d4 : +800005d4: 0ff0000f fence +800005d8: 00100193 li gp,1 +800005dc: 00000073 ecall +800005e0: c0001073 unimp +800005e4: 0000 unimp +800005e6: 0000 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32ui-p-ori b/Tests/isa/rv32ui-p-ori new file mode 100644 index 0000000..acc902a Binary files /dev/null and b/Tests/isa/rv32ui-p-ori differ diff --git a/Tests/isa/rv32ui-p-ori.dump b/Tests/isa/rv32ui-p-ori.dump new file mode 100644 index 0000000..a6a5ed8 --- /dev/null +++ b/Tests/isa/rv32ui-p-ori.dump @@ -0,0 +1,240 @@ + +rv32ui-p-ori: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: ff0100b7 lui ra,0xff010 +80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000104: f0f0ef13 ori t5,ra,-241 +80000108: f0f00e93 li t4,-241 +8000010c: 00200193 li gp,2 +80000110: 1ddf1463 bne t5,t4,800002d8 + +80000114 : +80000114: 0ff010b7 lui ra,0xff01 +80000118: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +8000011c: 0f00ef13 ori t5,ra,240 +80000120: 0ff01eb7 lui t4,0xff01 +80000124: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000128: 00300193 li gp,3 +8000012c: 1bdf1663 bne t5,t4,800002d8 + +80000130 : +80000130: 00ff00b7 lui ra,0xff0 +80000134: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000138: 70f0ef13 ori t5,ra,1807 +8000013c: 00ff0eb7 lui t4,0xff0 +80000140: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801> +80000144: 00400193 li gp,4 +80000148: 19df1863 bne t5,t4,800002d8 + +8000014c : +8000014c: f00ff0b7 lui ra,0xf00ff +80000150: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +80000154: 0f00ef13 ori t5,ra,240 +80000158: f00ffeb7 lui t4,0xf00ff +8000015c: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> +80000160: 00500193 li gp,5 +80000164: 17df1a63 bne t5,t4,800002d8 + +80000168 : +80000168: ff0100b7 lui ra,0xff010 +8000016c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000170: 0f00e093 ori ra,ra,240 +80000174: ff010eb7 lui t4,0xff010 +80000178: ff0e8e93 addi t4,t4,-16 # ff00fff0 <_end+0x7f00dff0> +8000017c: 00600193 li gp,6 +80000180: 15d09c63 bne ra,t4,800002d8 + +80000184 : +80000184: 00000213 li tp,0 +80000188: 0ff010b7 lui ra,0xff01 +8000018c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000190: 0f00ef13 ori t5,ra,240 +80000194: 000f0313 mv t1,t5 +80000198: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000019c: 00200293 li t0,2 +800001a0: fe5214e3 bne tp,t0,80000188 +800001a4: 0ff01eb7 lui t4,0xff01 +800001a8: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +800001ac: 00700193 li gp,7 +800001b0: 13d31463 bne t1,t4,800002d8 + +800001b4 : +800001b4: 00000213 li tp,0 +800001b8: 00ff00b7 lui ra,0xff0 +800001bc: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800001c0: 70f0ef13 ori t5,ra,1807 +800001c4: 00000013 nop +800001c8: 000f0313 mv t1,t5 +800001cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001d0: 00200293 li t0,2 +800001d4: fe5212e3 bne tp,t0,800001b8 +800001d8: 00ff0eb7 lui t4,0xff0 +800001dc: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801> +800001e0: 00800193 li gp,8 +800001e4: 0fd31a63 bne t1,t4,800002d8 + +800001e8 : +800001e8: 00000213 li tp,0 +800001ec: f00ff0b7 lui ra,0xf00ff +800001f0: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +800001f4: 0f00ef13 ori t5,ra,240 +800001f8: 00000013 nop +800001fc: 00000013 nop +80000200: 000f0313 mv t1,t5 +80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000208: 00200293 li t0,2 +8000020c: fe5210e3 bne tp,t0,800001ec +80000210: f00ffeb7 lui t4,0xf00ff +80000214: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> +80000218: 00900193 li gp,9 +8000021c: 0bd31e63 bne t1,t4,800002d8 + +80000220 : +80000220: 00000213 li tp,0 +80000224: 0ff010b7 lui ra,0xff01 +80000228: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +8000022c: 0f00ef13 ori t5,ra,240 +80000230: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000234: 00200293 li t0,2 +80000238: fe5216e3 bne tp,t0,80000224 +8000023c: 0ff01eb7 lui t4,0xff01 +80000240: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000244: 00a00193 li gp,10 +80000248: 09df1863 bne t5,t4,800002d8 + +8000024c : +8000024c: 00000213 li tp,0 +80000250: 00ff00b7 lui ra,0xff0 +80000254: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000258: 00000013 nop +8000025c: f0f0ef13 ori t5,ra,-241 +80000260: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000264: 00200293 li t0,2 +80000268: fe5214e3 bne tp,t0,80000250 +8000026c: fff00e93 li t4,-1 +80000270: 00b00193 li gp,11 +80000274: 07df1263 bne t5,t4,800002d8 + +80000278 : +80000278: 00000213 li tp,0 +8000027c: f00ff0b7 lui ra,0xf00ff +80000280: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +80000284: 00000013 nop +80000288: 00000013 nop +8000028c: 0f00ef13 ori t5,ra,240 +80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000294: 00200293 li t0,2 +80000298: fe5212e3 bne tp,t0,8000027c +8000029c: f00ffeb7 lui t4,0xf00ff +800002a0: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> +800002a4: 00c00193 li gp,12 +800002a8: 03df1863 bne t5,t4,800002d8 + +800002ac : +800002ac: 0f006093 ori ra,zero,240 +800002b0: 0f000e93 li t4,240 +800002b4: 00d00193 li gp,13 +800002b8: 03d09063 bne ra,t4,800002d8 + +800002bc : +800002bc: 00ff00b7 lui ra,0xff0 +800002c0: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800002c4: 70f0e013 ori zero,ra,1807 +800002c8: 00000e93 li t4,0 +800002cc: 00e00193 li gp,14 +800002d0: 01d01463 bne zero,t4,800002d8 +800002d4: 00301c63 bne zero,gp,800002ec + +800002d8 : +800002d8: 0ff0000f fence +800002dc: 00018063 beqz gp,800002dc +800002e0: 00119193 slli gp,gp,0x1 +800002e4: 0011e193 ori gp,gp,1 +800002e8: 00000073 ecall + +800002ec : +800002ec: 0ff0000f fence +800002f0: 00100193 li gp,1 +800002f4: 00000073 ecall +800002f8: c0001073 unimp +800002fc: 0000 unimp +800002fe: 0000 unimp +80000300: 0000 unimp +80000302: 0000 unimp diff --git a/Tests/isa/rv32ui-p-sb b/Tests/isa/rv32ui-p-sb new file mode 100644 index 0000000..e71c1be Binary files /dev/null and b/Tests/isa/rv32ui-p-sb differ diff --git a/Tests/isa/rv32ui-p-sb.dump b/Tests/isa/rv32ui-p-sb.dump new file mode 100644 index 0000000..d0a187a --- /dev/null +++ b/Tests/isa/rv32ui-p-sb.dump @@ -0,0 +1,447 @@ + +rv32ui-p-sb: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: faa00113 li sp,-86 +80000108: 00208023 sb sp,0(ra) +8000010c: 00008f03 lb t5,0(ra) +80000110: faa00e93 li t4,-86 +80000114: 00200193 li gp,2 +80000118: 3ddf1c63 bne t5,t4,800004f0 + +8000011c : +8000011c: 00002097 auipc ra,0x2 +80000120: ee408093 addi ra,ra,-284 # 80002000 +80000124: 00000113 li sp,0 +80000128: 002080a3 sb sp,1(ra) +8000012c: 00108f03 lb t5,1(ra) +80000130: 00000e93 li t4,0 +80000134: 00300193 li gp,3 +80000138: 3bdf1c63 bne t5,t4,800004f0 + +8000013c : +8000013c: 00002097 auipc ra,0x2 +80000140: ec408093 addi ra,ra,-316 # 80002000 +80000144: fffff137 lui sp,0xfffff +80000148: fa010113 addi sp,sp,-96 # ffffefa0 <_end+0x7fffcf90> +8000014c: 00208123 sb sp,2(ra) +80000150: 00209f03 lh t5,2(ra) +80000154: fffffeb7 lui t4,0xfffff +80000158: fa0e8e93 addi t4,t4,-96 # ffffefa0 <_end+0x7fffcf90> +8000015c: 00400193 li gp,4 +80000160: 39df1863 bne t5,t4,800004f0 + +80000164 : +80000164: 00002097 auipc ra,0x2 +80000168: e9c08093 addi ra,ra,-356 # 80002000 +8000016c: 00a00113 li sp,10 +80000170: 002081a3 sb sp,3(ra) +80000174: 00308f03 lb t5,3(ra) +80000178: 00a00e93 li t4,10 +8000017c: 00500193 li gp,5 +80000180: 37df1863 bne t5,t4,800004f0 + +80000184 : +80000184: 00002097 auipc ra,0x2 +80000188: e8308093 addi ra,ra,-381 # 80002007 +8000018c: faa00113 li sp,-86 +80000190: fe208ea3 sb sp,-3(ra) +80000194: ffd08f03 lb t5,-3(ra) +80000198: faa00e93 li t4,-86 +8000019c: 00600193 li gp,6 +800001a0: 35df1863 bne t5,t4,800004f0 + +800001a4 : +800001a4: 00002097 auipc ra,0x2 +800001a8: e6308093 addi ra,ra,-413 # 80002007 +800001ac: 00000113 li sp,0 +800001b0: fe208f23 sb sp,-2(ra) +800001b4: ffe08f03 lb t5,-2(ra) +800001b8: 00000e93 li t4,0 +800001bc: 00700193 li gp,7 +800001c0: 33df1863 bne t5,t4,800004f0 + +800001c4 : +800001c4: 00002097 auipc ra,0x2 +800001c8: e4308093 addi ra,ra,-445 # 80002007 +800001cc: fa000113 li sp,-96 +800001d0: fe208fa3 sb sp,-1(ra) +800001d4: fff08f03 lb t5,-1(ra) +800001d8: fa000e93 li t4,-96 +800001dc: 00800193 li gp,8 +800001e0: 31df1863 bne t5,t4,800004f0 + +800001e4 : +800001e4: 00002097 auipc ra,0x2 +800001e8: e2308093 addi ra,ra,-477 # 80002007 +800001ec: 00a00113 li sp,10 +800001f0: 00208023 sb sp,0(ra) +800001f4: 00008f03 lb t5,0(ra) +800001f8: 00a00e93 li t4,10 +800001fc: 00900193 li gp,9 +80000200: 2fdf1863 bne t5,t4,800004f0 + +80000204 : +80000204: 00002097 auipc ra,0x2 +80000208: e0408093 addi ra,ra,-508 # 80002008 +8000020c: 12345137 lui sp,0x12345 +80000210: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> +80000214: fe008213 addi tp,ra,-32 +80000218: 02220023 sb sp,32(tp) # 20 <_start-0x7fffffe0> +8000021c: 00008283 lb t0,0(ra) +80000220: 07800e93 li t4,120 +80000224: 00a00193 li gp,10 +80000228: 2dd29463 bne t0,t4,800004f0 + +8000022c : +8000022c: 00002097 auipc ra,0x2 +80000230: ddc08093 addi ra,ra,-548 # 80002008 +80000234: 00003137 lui sp,0x3 +80000238: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68> +8000023c: ffa08093 addi ra,ra,-6 +80000240: 002083a3 sb sp,7(ra) +80000244: 00002217 auipc tp,0x2 +80000248: dc520213 addi tp,tp,-571 # 80002009 +8000024c: 00020283 lb t0,0(tp) # 0 <_start-0x80000000> +80000250: f9800e93 li t4,-104 +80000254: 00b00193 li gp,11 +80000258: 29d29c63 bne t0,t4,800004f0 + +8000025c : +8000025c: 00c00193 li gp,12 +80000260: 00000213 li tp,0 +80000264: fdd00093 li ra,-35 +80000268: 00002117 auipc sp,0x2 +8000026c: d9810113 addi sp,sp,-616 # 80002000 +80000270: 00110023 sb ra,0(sp) +80000274: 00010f03 lb t5,0(sp) +80000278: fdd00e93 li t4,-35 +8000027c: 27df1a63 bne t5,t4,800004f0 +80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000284: 00200293 li t0,2 +80000288: fc521ee3 bne tp,t0,80000264 + +8000028c : +8000028c: 00d00193 li gp,13 +80000290: 00000213 li tp,0 +80000294: fcd00093 li ra,-51 +80000298: 00002117 auipc sp,0x2 +8000029c: d6810113 addi sp,sp,-664 # 80002000 +800002a0: 00000013 nop +800002a4: 001100a3 sb ra,1(sp) +800002a8: 00110f03 lb t5,1(sp) +800002ac: fcd00e93 li t4,-51 +800002b0: 25df1063 bne t5,t4,800004f0 +800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002b8: 00200293 li t0,2 +800002bc: fc521ce3 bne tp,t0,80000294 + +800002c0 : +800002c0: 00e00193 li gp,14 +800002c4: 00000213 li tp,0 +800002c8: fcc00093 li ra,-52 +800002cc: 00002117 auipc sp,0x2 +800002d0: d3410113 addi sp,sp,-716 # 80002000 +800002d4: 00000013 nop +800002d8: 00000013 nop +800002dc: 00110123 sb ra,2(sp) +800002e0: 00210f03 lb t5,2(sp) +800002e4: fcc00e93 li t4,-52 +800002e8: 21df1463 bne t5,t4,800004f0 +800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f0: 00200293 li t0,2 +800002f4: fc521ae3 bne tp,t0,800002c8 + +800002f8 : +800002f8: 00f00193 li gp,15 +800002fc: 00000213 li tp,0 +80000300: fbc00093 li ra,-68 +80000304: 00000013 nop +80000308: 00002117 auipc sp,0x2 +8000030c: cf810113 addi sp,sp,-776 # 80002000 +80000310: 001101a3 sb ra,3(sp) +80000314: 00310f03 lb t5,3(sp) +80000318: fbc00e93 li t4,-68 +8000031c: 1ddf1a63 bne t5,t4,800004f0 +80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000324: 00200293 li t0,2 +80000328: fc521ce3 bne tp,t0,80000300 + +8000032c : +8000032c: 01000193 li gp,16 +80000330: 00000213 li tp,0 +80000334: fbb00093 li ra,-69 +80000338: 00000013 nop +8000033c: 00002117 auipc sp,0x2 +80000340: cc410113 addi sp,sp,-828 # 80002000 +80000344: 00000013 nop +80000348: 00110223 sb ra,4(sp) +8000034c: 00410f03 lb t5,4(sp) +80000350: fbb00e93 li t4,-69 +80000354: 19df1e63 bne t5,t4,800004f0 +80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000035c: 00200293 li t0,2 +80000360: fc521ae3 bne tp,t0,80000334 + +80000364 : +80000364: 01100193 li gp,17 +80000368: 00000213 li tp,0 +8000036c: fab00093 li ra,-85 +80000370: 00000013 nop +80000374: 00000013 nop +80000378: 00002117 auipc sp,0x2 +8000037c: c8810113 addi sp,sp,-888 # 80002000 +80000380: 001102a3 sb ra,5(sp) +80000384: 00510f03 lb t5,5(sp) +80000388: fab00e93 li t4,-85 +8000038c: 17df1263 bne t5,t4,800004f0 +80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000394: 00200293 li t0,2 +80000398: fc521ae3 bne tp,t0,8000036c + +8000039c : +8000039c: 01200193 li gp,18 +800003a0: 00000213 li tp,0 +800003a4: 00002117 auipc sp,0x2 +800003a8: c5c10113 addi sp,sp,-932 # 80002000 +800003ac: 03300093 li ra,51 +800003b0: 00110023 sb ra,0(sp) +800003b4: 00010f03 lb t5,0(sp) +800003b8: 03300e93 li t4,51 +800003bc: 13df1a63 bne t5,t4,800004f0 +800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c4: 00200293 li t0,2 +800003c8: fc521ee3 bne tp,t0,800003a4 + +800003cc : +800003cc: 01300193 li gp,19 +800003d0: 00000213 li tp,0 +800003d4: 00002117 auipc sp,0x2 +800003d8: c2c10113 addi sp,sp,-980 # 80002000 +800003dc: 02300093 li ra,35 +800003e0: 00000013 nop +800003e4: 001100a3 sb ra,1(sp) +800003e8: 00110f03 lb t5,1(sp) +800003ec: 02300e93 li t4,35 +800003f0: 11df1063 bne t5,t4,800004f0 +800003f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003f8: 00200293 li t0,2 +800003fc: fc521ce3 bne tp,t0,800003d4 + +80000400 : +80000400: 01400193 li gp,20 +80000404: 00000213 li tp,0 +80000408: 00002117 auipc sp,0x2 +8000040c: bf810113 addi sp,sp,-1032 # 80002000 +80000410: 02200093 li ra,34 +80000414: 00000013 nop +80000418: 00000013 nop +8000041c: 00110123 sb ra,2(sp) +80000420: 00210f03 lb t5,2(sp) +80000424: 02200e93 li t4,34 +80000428: 0ddf1463 bne t5,t4,800004f0 +8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000430: 00200293 li t0,2 +80000434: fc521ae3 bne tp,t0,80000408 + +80000438 : +80000438: 01500193 li gp,21 +8000043c: 00000213 li tp,0 +80000440: 00002117 auipc sp,0x2 +80000444: bc010113 addi sp,sp,-1088 # 80002000 +80000448: 00000013 nop +8000044c: 01200093 li ra,18 +80000450: 001101a3 sb ra,3(sp) +80000454: 00310f03 lb t5,3(sp) +80000458: 01200e93 li t4,18 +8000045c: 09df1a63 bne t5,t4,800004f0 +80000460: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000464: 00200293 li t0,2 +80000468: fc521ce3 bne tp,t0,80000440 + +8000046c : +8000046c: 01600193 li gp,22 +80000470: 00000213 li tp,0 +80000474: 00002117 auipc sp,0x2 +80000478: b8c10113 addi sp,sp,-1140 # 80002000 +8000047c: 00000013 nop +80000480: 01100093 li ra,17 +80000484: 00000013 nop +80000488: 00110223 sb ra,4(sp) +8000048c: 00410f03 lb t5,4(sp) +80000490: 01100e93 li t4,17 +80000494: 05df1e63 bne t5,t4,800004f0 +80000498: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000049c: 00200293 li t0,2 +800004a0: fc521ae3 bne tp,t0,80000474 + +800004a4 : +800004a4: 01700193 li gp,23 +800004a8: 00000213 li tp,0 +800004ac: 00002117 auipc sp,0x2 +800004b0: b5410113 addi sp,sp,-1196 # 80002000 +800004b4: 00000013 nop +800004b8: 00000013 nop +800004bc: 00100093 li ra,1 +800004c0: 001102a3 sb ra,5(sp) +800004c4: 00510f03 lb t5,5(sp) +800004c8: 00100e93 li t4,1 +800004cc: 03df1263 bne t5,t4,800004f0 +800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004d4: 00200293 li t0,2 +800004d8: fc521ae3 bne tp,t0,800004ac +800004dc: 0ef00513 li a0,239 +800004e0: 00002597 auipc a1,0x2 +800004e4: b2058593 addi a1,a1,-1248 # 80002000 +800004e8: 00a581a3 sb a0,3(a1) +800004ec: 00301c63 bne zero,gp,80000504 + +800004f0 : +800004f0: 0ff0000f fence +800004f4: 00018063 beqz gp,800004f4 +800004f8: 00119193 slli gp,gp,0x1 +800004fc: 0011e193 ori gp,gp,1 +80000500: 00000073 ecall + +80000504 : +80000504: 0ff0000f fence +80000508: 00100193 li gp,1 +8000050c: 00000073 ecall +80000510: c0001073 unimp +80000514: 0000 unimp +80000516: 0000 unimp +80000518: 0000 unimp +8000051a: 0000 unimp +8000051c: 0000 unimp +8000051e: 0000 unimp +80000520: 0000 unimp +80000522: 0000 unimp +80000524: 0000 unimp +80000526: 0000 unimp +80000528: 0000 unimp +8000052a: 0000 unimp +8000052c: 0000 unimp +8000052e: 0000 unimp +80000530: 0000 unimp +80000532: 0000 unimp +80000534: 0000 unimp +80000536: 0000 unimp +80000538: 0000 unimp +8000053a: 0000 unimp +8000053c: 0000 unimp +8000053e: 0000 unimp +80000540: 0000 unimp +80000542: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: jal t6,800006fe + +80002001 : +80002001: jal t6,800006ff + +80002002 : +80002002: jal t6,80000700 + +80002003 : +80002003: jal t6,80000701 + +80002004 : +80002004: jal t6,80000702 + +80002005 : +80002005: jal t6,80000703 + +80002006 : +80002006: jal t6,80000704 + +80002007 : +80002007: jal t6,80100015 <_end+0xfe005> + +80002008 : +80002008: jal t6,80010008 <_end+0xdff8> + +80002009 : +80002009: 000000ef jal ra,80002009 +8000200d: 0000 unimp +8000200f: 00 Address 0x000000008000200f is out of bounds. + diff --git a/Tests/isa/rv32ui-p-sh b/Tests/isa/rv32ui-p-sh new file mode 100644 index 0000000..f37fd75 Binary files /dev/null and b/Tests/isa/rv32ui-p-sh differ diff --git a/Tests/isa/rv32ui-p-sh.dump b/Tests/isa/rv32ui-p-sh.dump new file mode 100644 index 0000000..d4bbbcb --- /dev/null +++ b/Tests/isa/rv32ui-p-sh.dump @@ -0,0 +1,480 @@ + +rv32ui-p-sh: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: 0aa00113 li sp,170 +80000108: 00209023 sh sp,0(ra) +8000010c: 00009f03 lh t5,0(ra) +80000110: 0aa00e93 li t4,170 +80000114: 00200193 li gp,2 +80000118: 45df1e63 bne t5,t4,80000574 + +8000011c : +8000011c: 00002097 auipc ra,0x2 +80000120: ee408093 addi ra,ra,-284 # 80002000 +80000124: ffffb137 lui sp,0xffffb +80000128: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff89e0> +8000012c: 00209123 sh sp,2(ra) +80000130: 00209f03 lh t5,2(ra) +80000134: ffffbeb7 lui t4,0xffffb +80000138: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff89e0> +8000013c: 00300193 li gp,3 +80000140: 43df1a63 bne t5,t4,80000574 + +80000144 : +80000144: 00002097 auipc ra,0x2 +80000148: ebc08093 addi ra,ra,-324 # 80002000 +8000014c: beef1137 lui sp,0xbeef1 +80000150: aa010113 addi sp,sp,-1376 # beef0aa0 <_end+0x3eeeea80> +80000154: 00209223 sh sp,4(ra) +80000158: 0040af03 lw t5,4(ra) +8000015c: beef1eb7 lui t4,0xbeef1 +80000160: aa0e8e93 addi t4,t4,-1376 # beef0aa0 <_end+0x3eeeea80> +80000164: 00400193 li gp,4 +80000168: 41df1663 bne t5,t4,80000574 + +8000016c : +8000016c: 00002097 auipc ra,0x2 +80000170: e9408093 addi ra,ra,-364 # 80002000 +80000174: ffffa137 lui sp,0xffffa +80000178: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff7fea> +8000017c: 00209323 sh sp,6(ra) +80000180: 00609f03 lh t5,6(ra) +80000184: ffffaeb7 lui t4,0xffffa +80000188: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff7fea> +8000018c: 00500193 li gp,5 +80000190: 3fdf1263 bne t5,t4,80000574 + +80000194 : +80000194: 00002097 auipc ra,0x2 +80000198: e7a08093 addi ra,ra,-390 # 8000200e +8000019c: 0aa00113 li sp,170 +800001a0: fe209d23 sh sp,-6(ra) +800001a4: ffa09f03 lh t5,-6(ra) +800001a8: 0aa00e93 li t4,170 +800001ac: 00600193 li gp,6 +800001b0: 3ddf1263 bne t5,t4,80000574 + +800001b4 : +800001b4: 00002097 auipc ra,0x2 +800001b8: e5a08093 addi ra,ra,-422 # 8000200e +800001bc: ffffb137 lui sp,0xffffb +800001c0: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff89e0> +800001c4: fe209e23 sh sp,-4(ra) +800001c8: ffc09f03 lh t5,-4(ra) +800001cc: ffffbeb7 lui t4,0xffffb +800001d0: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff89e0> +800001d4: 00700193 li gp,7 +800001d8: 39df1e63 bne t5,t4,80000574 + +800001dc : +800001dc: 00002097 auipc ra,0x2 +800001e0: e3208093 addi ra,ra,-462 # 8000200e +800001e4: 00001137 lui sp,0x1 +800001e8: aa010113 addi sp,sp,-1376 # aa0 <_start-0x7ffff560> +800001ec: fe209f23 sh sp,-2(ra) +800001f0: ffe09f03 lh t5,-2(ra) +800001f4: 00001eb7 lui t4,0x1 +800001f8: aa0e8e93 addi t4,t4,-1376 # aa0 <_start-0x7ffff560> +800001fc: 00800193 li gp,8 +80000200: 37df1a63 bne t5,t4,80000574 + +80000204 : +80000204: 00002097 auipc ra,0x2 +80000208: e0a08093 addi ra,ra,-502 # 8000200e +8000020c: ffffa137 lui sp,0xffffa +80000210: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff7fea> +80000214: 00209023 sh sp,0(ra) +80000218: 00009f03 lh t5,0(ra) +8000021c: ffffaeb7 lui t4,0xffffa +80000220: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff7fea> +80000224: 00900193 li gp,9 +80000228: 35df1663 bne t5,t4,80000574 + +8000022c : +8000022c: 00002097 auipc ra,0x2 +80000230: de408093 addi ra,ra,-540 # 80002010 +80000234: 12345137 lui sp,0x12345 +80000238: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> +8000023c: fe008213 addi tp,ra,-32 +80000240: 02221023 sh sp,32(tp) # 20 <_start-0x7fffffe0> +80000244: 00009283 lh t0,0(ra) +80000248: 00005eb7 lui t4,0x5 +8000024c: 678e8e93 addi t4,t4,1656 # 5678 <_start-0x7fffa988> +80000250: 00a00193 li gp,10 +80000254: 33d29063 bne t0,t4,80000574 + +80000258 : +80000258: 00002097 auipc ra,0x2 +8000025c: db808093 addi ra,ra,-584 # 80002010 +80000260: 00003137 lui sp,0x3 +80000264: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68> +80000268: ffb08093 addi ra,ra,-5 +8000026c: 002093a3 sh sp,7(ra) +80000270: 00002217 auipc tp,0x2 +80000274: da220213 addi tp,tp,-606 # 80002012 +80000278: 00021283 lh t0,0(tp) # 0 <_start-0x80000000> +8000027c: 00003eb7 lui t4,0x3 +80000280: 098e8e93 addi t4,t4,152 # 3098 <_start-0x7fffcf68> +80000284: 00b00193 li gp,11 +80000288: 2fd29663 bne t0,t4,80000574 + +8000028c : +8000028c: 00c00193 li gp,12 +80000290: 00000213 li tp,0 +80000294: ffffd0b7 lui ra,0xffffd +80000298: cdd08093 addi ra,ra,-803 # ffffccdd <_end+0x7fffacbd> +8000029c: 00002117 auipc sp,0x2 +800002a0: d6410113 addi sp,sp,-668 # 80002000 +800002a4: 00111023 sh ra,0(sp) +800002a8: 00011f03 lh t5,0(sp) +800002ac: ffffdeb7 lui t4,0xffffd +800002b0: cdde8e93 addi t4,t4,-803 # ffffccdd <_end+0x7fffacbd> +800002b4: 2ddf1063 bne t5,t4,80000574 +800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002bc: 00200293 li t0,2 +800002c0: fc521ae3 bne tp,t0,80000294 + +800002c4 : +800002c4: 00d00193 li gp,13 +800002c8: 00000213 li tp,0 +800002cc: ffffc0b7 lui ra,0xffffc +800002d0: ccd08093 addi ra,ra,-819 # ffffbccd <_end+0x7fff9cad> +800002d4: 00002117 auipc sp,0x2 +800002d8: d2c10113 addi sp,sp,-724 # 80002000 +800002dc: 00000013 nop +800002e0: 00111123 sh ra,2(sp) +800002e4: 00211f03 lh t5,2(sp) +800002e8: ffffceb7 lui t4,0xffffc +800002ec: ccde8e93 addi t4,t4,-819 # ffffbccd <_end+0x7fff9cad> +800002f0: 29df1263 bne t5,t4,80000574 +800002f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f8: 00200293 li t0,2 +800002fc: fc5218e3 bne tp,t0,800002cc + +80000300 : +80000300: 00e00193 li gp,14 +80000304: 00000213 li tp,0 +80000308: ffffc0b7 lui ra,0xffffc +8000030c: bcc08093 addi ra,ra,-1076 # ffffbbcc <_end+0x7fff9bac> +80000310: 00002117 auipc sp,0x2 +80000314: cf010113 addi sp,sp,-784 # 80002000 +80000318: 00000013 nop +8000031c: 00000013 nop +80000320: 00111223 sh ra,4(sp) +80000324: 00411f03 lh t5,4(sp) +80000328: ffffceb7 lui t4,0xffffc +8000032c: bcce8e93 addi t4,t4,-1076 # ffffbbcc <_end+0x7fff9bac> +80000330: 25df1263 bne t5,t4,80000574 +80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000338: 00200293 li t0,2 +8000033c: fc5216e3 bne tp,t0,80000308 + +80000340 : +80000340: 00f00193 li gp,15 +80000344: 00000213 li tp,0 +80000348: ffffb0b7 lui ra,0xffffb +8000034c: bbc08093 addi ra,ra,-1092 # ffffabbc <_end+0x7fff8b9c> +80000350: 00000013 nop +80000354: 00002117 auipc sp,0x2 +80000358: cac10113 addi sp,sp,-852 # 80002000 +8000035c: 00111323 sh ra,6(sp) +80000360: 00611f03 lh t5,6(sp) +80000364: ffffbeb7 lui t4,0xffffb +80000368: bbce8e93 addi t4,t4,-1092 # ffffabbc <_end+0x7fff8b9c> +8000036c: 21df1463 bne t5,t4,80000574 +80000370: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000374: 00200293 li t0,2 +80000378: fc5218e3 bne tp,t0,80000348 + +8000037c : +8000037c: 01000193 li gp,16 +80000380: 00000213 li tp,0 +80000384: ffffb0b7 lui ra,0xffffb +80000388: abb08093 addi ra,ra,-1349 # ffffaabb <_end+0x7fff8a9b> +8000038c: 00000013 nop +80000390: 00002117 auipc sp,0x2 +80000394: c7010113 addi sp,sp,-912 # 80002000 +80000398: 00000013 nop +8000039c: 00111423 sh ra,8(sp) +800003a0: 00811f03 lh t5,8(sp) +800003a4: ffffbeb7 lui t4,0xffffb +800003a8: abbe8e93 addi t4,t4,-1349 # ffffaabb <_end+0x7fff8a9b> +800003ac: 1ddf1463 bne t5,t4,80000574 +800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003b4: 00200293 li t0,2 +800003b8: fc5216e3 bne tp,t0,80000384 + +800003bc : +800003bc: 01100193 li gp,17 +800003c0: 00000213 li tp,0 +800003c4: ffffe0b7 lui ra,0xffffe +800003c8: aab08093 addi ra,ra,-1365 # ffffdaab <_end+0x7fffba8b> +800003cc: 00000013 nop +800003d0: 00000013 nop +800003d4: 00002117 auipc sp,0x2 +800003d8: c2c10113 addi sp,sp,-980 # 80002000 +800003dc: 00111523 sh ra,10(sp) +800003e0: 00a11f03 lh t5,10(sp) +800003e4: ffffeeb7 lui t4,0xffffe +800003e8: aabe8e93 addi t4,t4,-1365 # ffffdaab <_end+0x7fffba8b> +800003ec: 19df1463 bne t5,t4,80000574 +800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003f4: 00200293 li t0,2 +800003f8: fc5216e3 bne tp,t0,800003c4 + +800003fc : +800003fc: 01200193 li gp,18 +80000400: 00000213 li tp,0 +80000404: 00002117 auipc sp,0x2 +80000408: bfc10113 addi sp,sp,-1028 # 80002000 +8000040c: 000020b7 lui ra,0x2 +80000410: 23308093 addi ra,ra,563 # 2233 <_start-0x7fffddcd> +80000414: 00111023 sh ra,0(sp) +80000418: 00011f03 lh t5,0(sp) +8000041c: 00002eb7 lui t4,0x2 +80000420: 233e8e93 addi t4,t4,563 # 2233 <_start-0x7fffddcd> +80000424: 15df1863 bne t5,t4,80000574 +80000428: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000042c: 00200293 li t0,2 +80000430: fc521ae3 bne tp,t0,80000404 + +80000434 : +80000434: 01300193 li gp,19 +80000438: 00000213 li tp,0 +8000043c: 00002117 auipc sp,0x2 +80000440: bc410113 addi sp,sp,-1084 # 80002000 +80000444: 000010b7 lui ra,0x1 +80000448: 22308093 addi ra,ra,547 # 1223 <_start-0x7fffeddd> +8000044c: 00000013 nop +80000450: 00111123 sh ra,2(sp) +80000454: 00211f03 lh t5,2(sp) +80000458: 00001eb7 lui t4,0x1 +8000045c: 223e8e93 addi t4,t4,547 # 1223 <_start-0x7fffeddd> +80000460: 11df1a63 bne t5,t4,80000574 +80000464: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000468: 00200293 li t0,2 +8000046c: fc5218e3 bne tp,t0,8000043c + +80000470 : +80000470: 01400193 li gp,20 +80000474: 00000213 li tp,0 +80000478: 00002117 auipc sp,0x2 +8000047c: b8810113 addi sp,sp,-1144 # 80002000 +80000480: 000010b7 lui ra,0x1 +80000484: 12208093 addi ra,ra,290 # 1122 <_start-0x7fffeede> +80000488: 00000013 nop +8000048c: 00000013 nop +80000490: 00111223 sh ra,4(sp) +80000494: 00411f03 lh t5,4(sp) +80000498: 00001eb7 lui t4,0x1 +8000049c: 122e8e93 addi t4,t4,290 # 1122 <_start-0x7fffeede> +800004a0: 0ddf1a63 bne t5,t4,80000574 +800004a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004a8: 00200293 li t0,2 +800004ac: fc5216e3 bne tp,t0,80000478 + +800004b0 : +800004b0: 01500193 li gp,21 +800004b4: 00000213 li tp,0 +800004b8: 00002117 auipc sp,0x2 +800004bc: b4810113 addi sp,sp,-1208 # 80002000 +800004c0: 00000013 nop +800004c4: 11200093 li ra,274 +800004c8: 00111323 sh ra,6(sp) +800004cc: 00611f03 lh t5,6(sp) +800004d0: 11200e93 li t4,274 +800004d4: 0bdf1063 bne t5,t4,80000574 +800004d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004dc: 00200293 li t0,2 +800004e0: fc521ce3 bne tp,t0,800004b8 + +800004e4 : +800004e4: 01600193 li gp,22 +800004e8: 00000213 li tp,0 +800004ec: 00002117 auipc sp,0x2 +800004f0: b1410113 addi sp,sp,-1260 # 80002000 +800004f4: 00000013 nop +800004f8: 01100093 li ra,17 +800004fc: 00000013 nop +80000500: 00111423 sh ra,8(sp) +80000504: 00811f03 lh t5,8(sp) +80000508: 01100e93 li t4,17 +8000050c: 07df1463 bne t5,t4,80000574 +80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000514: 00200293 li t0,2 +80000518: fc521ae3 bne tp,t0,800004ec + +8000051c : +8000051c: 01700193 li gp,23 +80000520: 00000213 li tp,0 +80000524: 00002117 auipc sp,0x2 +80000528: adc10113 addi sp,sp,-1316 # 80002000 +8000052c: 00000013 nop +80000530: 00000013 nop +80000534: 000030b7 lui ra,0x3 +80000538: 00108093 addi ra,ra,1 # 3001 <_start-0x7fffcfff> +8000053c: 00111523 sh ra,10(sp) +80000540: 00a11f03 lh t5,10(sp) +80000544: 00003eb7 lui t4,0x3 +80000548: 001e8e93 addi t4,t4,1 # 3001 <_start-0x7fffcfff> +8000054c: 03df1463 bne t5,t4,80000574 +80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000554: 00200293 li t0,2 +80000558: fc5216e3 bne tp,t0,80000524 +8000055c: 0000c537 lui a0,0xc +80000560: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111> +80000564: 00002597 auipc a1,0x2 +80000568: a9c58593 addi a1,a1,-1380 # 80002000 +8000056c: 00a59323 sh a0,6(a1) +80000570: 00301c63 bne zero,gp,80000588 + +80000574 : +80000574: 0ff0000f fence +80000578: 00018063 beqz gp,80000578 +8000057c: 00119193 slli gp,gp,0x1 +80000580: 0011e193 ori gp,gp,1 +80000584: 00000073 ecall + +80000588 : +80000588: 0ff0000f fence +8000058c: 00100193 li gp,1 +80000590: 00000073 ecall +80000594: c0001073 unimp +80000598: 0000 unimp +8000059a: 0000 unimp +8000059c: 0000 unimp +8000059e: 0000 unimp +800005a0: 0000 unimp +800005a2: 0000 unimp +800005a4: 0000 unimp +800005a6: 0000 unimp +800005a8: 0000 unimp +800005aa: 0000 unimp +800005ac: 0000 unimp +800005ae: 0000 unimp +800005b0: 0000 unimp +800005b2: 0000 unimp +800005b4: 0000 unimp +800005b6: 0000 unimp +800005b8: 0000 unimp +800005ba: 0000 unimp +800005bc: 0000 unimp +800005be: 0000 unimp +800005c0: 0000 unimp +800005c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: jal t4,7fffd3ee <_start-0x2c12> + +80002002 : +80002002: jal t4,7fffd3f0 <_start-0x2c10> + +80002004 : +80002004: jal t4,7fffd3f2 <_start-0x2c0e> + +80002006 : +80002006: jal t4,7fffd3f4 <_start-0x2c0c> + +80002008 : +80002008: jal t4,7fffd3f6 <_start-0x2c0a> + +8000200a : +8000200a: jal t4,7fffd3f8 <_start-0x2c08> + +8000200c : +8000200c: jal t4,7fffd3fa <_start-0x2c06> + +8000200e : +8000200e: jal t4,7fffd3fc <_start-0x2c04> + +80002010 : +80002010: jal t4,7fffd3fe <_start-0x2c02> + +80002012 : +80002012: 0000beef jal t4,8000d012 <_end+0xaff2> +80002016: 0000 unimp +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 0000 unimp +8000201e: 0000 unimp diff --git a/Tests/isa/rv32ui-p-simple b/Tests/isa/rv32ui-p-simple new file mode 100644 index 0000000..faae359 Binary files /dev/null and b/Tests/isa/rv32ui-p-simple differ diff --git a/Tests/isa/rv32ui-p-simple.dump b/Tests/isa/rv32ui-p-simple.dump new file mode 100644 index 0000000..3ab5134 --- /dev/null +++ b/Tests/isa/rv32ui-p-simple.dump @@ -0,0 +1,110 @@ + +rv32ui-p-simple: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret +800000fc: 0ff0000f fence +80000100: 00100193 li gp,1 +80000104: 00000073 ecall +80000108: c0001073 unimp +8000010c: 0000 unimp +8000010e: 0000 unimp +80000110: 0000 unimp +80000112: 0000 unimp +80000114: 0000 unimp +80000116: 0000 unimp +80000118: 0000 unimp +8000011a: 0000 unimp +8000011c: 0000 unimp +8000011e: 0000 unimp +80000120: 0000 unimp +80000122: 0000 unimp +80000124: 0000 unimp +80000126: 0000 unimp +80000128: 0000 unimp +8000012a: 0000 unimp +8000012c: 0000 unimp +8000012e: 0000 unimp +80000130: 0000 unimp +80000132: 0000 unimp +80000134: 0000 unimp +80000136: 0000 unimp +80000138: 0000 unimp +8000013a: 0000 unimp +8000013c: 0000 unimp +8000013e: 0000 unimp +80000140: 0000 unimp +80000142: 0000 unimp diff --git a/Tests/isa/rv32ui-p-sll b/Tests/isa/rv32ui-p-sll new file mode 100644 index 0000000..a706e98 Binary files /dev/null and b/Tests/isa/rv32ui-p-sll differ diff --git a/Tests/isa/rv32ui-p-sll.dump b/Tests/isa/rv32ui-p-sll.dump new file mode 100644 index 0000000..b1bd1b6 --- /dev/null +++ b/Tests/isa/rv32ui-p-sll.dump @@ -0,0 +1,523 @@ + +rv32ui-p-sll: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00100093 li ra,1 +80000100: 00000113 li sp,0 +80000104: 00209f33 sll t5,ra,sp +80000108: 00100e93 li t4,1 +8000010c: 00200193 li gp,2 +80000110: 53df1e63 bne t5,t4,8000064c + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 00209f33 sll t5,ra,sp +80000120: 00200e93 li t4,2 +80000124: 00300193 li gp,3 +80000128: 53df1263 bne t5,t4,8000064c + +8000012c : +8000012c: 00100093 li ra,1 +80000130: 00700113 li sp,7 +80000134: 00209f33 sll t5,ra,sp +80000138: 08000e93 li t4,128 +8000013c: 00400193 li gp,4 +80000140: 51df1663 bne t5,t4,8000064c + +80000144 : +80000144: 00100093 li ra,1 +80000148: 00e00113 li sp,14 +8000014c: 00209f33 sll t5,ra,sp +80000150: 00004eb7 lui t4,0x4 +80000154: 00500193 li gp,5 +80000158: 4fdf1a63 bne t5,t4,8000064c + +8000015c : +8000015c: 00100093 li ra,1 +80000160: 01f00113 li sp,31 +80000164: 00209f33 sll t5,ra,sp +80000168: 80000eb7 lui t4,0x80000 +8000016c: 00600193 li gp,6 +80000170: 4ddf1e63 bne t5,t4,8000064c + +80000174 : +80000174: fff00093 li ra,-1 +80000178: 00000113 li sp,0 +8000017c: 00209f33 sll t5,ra,sp +80000180: fff00e93 li t4,-1 +80000184: 00700193 li gp,7 +80000188: 4ddf1263 bne t5,t4,8000064c + +8000018c : +8000018c: fff00093 li ra,-1 +80000190: 00100113 li sp,1 +80000194: 00209f33 sll t5,ra,sp +80000198: ffe00e93 li t4,-2 +8000019c: 00800193 li gp,8 +800001a0: 4bdf1663 bne t5,t4,8000064c + +800001a4 : +800001a4: fff00093 li ra,-1 +800001a8: 00700113 li sp,7 +800001ac: 00209f33 sll t5,ra,sp +800001b0: f8000e93 li t4,-128 +800001b4: 00900193 li gp,9 +800001b8: 49df1a63 bne t5,t4,8000064c + +800001bc : +800001bc: fff00093 li ra,-1 +800001c0: 00e00113 li sp,14 +800001c4: 00209f33 sll t5,ra,sp +800001c8: ffffceb7 lui t4,0xffffc +800001cc: 00a00193 li gp,10 +800001d0: 47df1e63 bne t5,t4,8000064c + +800001d4 : +800001d4: fff00093 li ra,-1 +800001d8: 01f00113 li sp,31 +800001dc: 00209f33 sll t5,ra,sp +800001e0: 80000eb7 lui t4,0x80000 +800001e4: 00b00193 li gp,11 +800001e8: 47df1263 bne t5,t4,8000064c + +800001ec : +800001ec: 212120b7 lui ra,0x21212 +800001f0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800001f4: 00000113 li sp,0 +800001f8: 00209f33 sll t5,ra,sp +800001fc: 21212eb7 lui t4,0x21212 +80000200: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80000204: 00c00193 li gp,12 +80000208: 45df1263 bne t5,t4,8000064c + +8000020c : +8000020c: 212120b7 lui ra,0x21212 +80000210: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000214: 00100113 li sp,1 +80000218: 00209f33 sll t5,ra,sp +8000021c: 42424eb7 lui t4,0x42424 +80000220: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> +80000224: 00d00193 li gp,13 +80000228: 43df1263 bne t5,t4,8000064c + +8000022c : +8000022c: 212120b7 lui ra,0x21212 +80000230: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000234: 00700113 li sp,7 +80000238: 00209f33 sll t5,ra,sp +8000023c: 90909eb7 lui t4,0x90909 +80000240: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080> +80000244: 00e00193 li gp,14 +80000248: 41df1263 bne t5,t4,8000064c + +8000024c : +8000024c: 212120b7 lui ra,0x21212 +80000250: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000254: 00e00113 li sp,14 +80000258: 00209f33 sll t5,ra,sp +8000025c: 48484eb7 lui t4,0x48484 +80000260: 00f00193 li gp,15 +80000264: 3fdf1463 bne t5,t4,8000064c + +80000268 : +80000268: 212120b7 lui ra,0x21212 +8000026c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000270: 01f00113 li sp,31 +80000274: 00209f33 sll t5,ra,sp +80000278: 80000eb7 lui t4,0x80000 +8000027c: 01000193 li gp,16 +80000280: 3ddf1663 bne t5,t4,8000064c + +80000284 : +80000284: 212120b7 lui ra,0x21212 +80000288: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +8000028c: fc000113 li sp,-64 +80000290: 00209f33 sll t5,ra,sp +80000294: 21212eb7 lui t4,0x21212 +80000298: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +8000029c: 01100193 li gp,17 +800002a0: 3bdf1663 bne t5,t4,8000064c + +800002a4 : +800002a4: 212120b7 lui ra,0x21212 +800002a8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800002ac: fc100113 li sp,-63 +800002b0: 00209f33 sll t5,ra,sp +800002b4: 42424eb7 lui t4,0x42424 +800002b8: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> +800002bc: 01200193 li gp,18 +800002c0: 39df1663 bne t5,t4,8000064c + +800002c4 : +800002c4: 212120b7 lui ra,0x21212 +800002c8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800002cc: fc700113 li sp,-57 +800002d0: 00209f33 sll t5,ra,sp +800002d4: 90909eb7 lui t4,0x90909 +800002d8: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080> +800002dc: 01300193 li gp,19 +800002e0: 37df1663 bne t5,t4,8000064c + +800002e4 : +800002e4: 212120b7 lui ra,0x21212 +800002e8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800002ec: fce00113 li sp,-50 +800002f0: 00209f33 sll t5,ra,sp +800002f4: 48484eb7 lui t4,0x48484 +800002f8: 01400193 li gp,20 +800002fc: 35df1863 bne t5,t4,8000064c + +80000300 : +80000300: 00100093 li ra,1 +80000304: 00700113 li sp,7 +80000308: 002090b3 sll ra,ra,sp +8000030c: 08000e93 li t4,128 +80000310: 01600193 li gp,22 +80000314: 33d09c63 bne ra,t4,8000064c + +80000318 : +80000318: 00100093 li ra,1 +8000031c: 00e00113 li sp,14 +80000320: 00209133 sll sp,ra,sp +80000324: 00004eb7 lui t4,0x4 +80000328: 01700193 li gp,23 +8000032c: 33d11063 bne sp,t4,8000064c + +80000330 : +80000330: 00300093 li ra,3 +80000334: 001090b3 sll ra,ra,ra +80000338: 01800e93 li t4,24 +8000033c: 01800193 li gp,24 +80000340: 31d09663 bne ra,t4,8000064c + +80000344 : +80000344: 00000213 li tp,0 +80000348: 00100093 li ra,1 +8000034c: 00700113 li sp,7 +80000350: 00209f33 sll t5,ra,sp +80000354: 000f0313 mv t1,t5 +80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000035c: 00200293 li t0,2 +80000360: fe5214e3 bne tp,t0,80000348 +80000364: 08000e93 li t4,128 +80000368: 01900193 li gp,25 +8000036c: 2fd31063 bne t1,t4,8000064c + +80000370 : +80000370: 00000213 li tp,0 +80000374: 00100093 li ra,1 +80000378: 00e00113 li sp,14 +8000037c: 00209f33 sll t5,ra,sp +80000380: 00000013 nop +80000384: 000f0313 mv t1,t5 +80000388: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000038c: 00200293 li t0,2 +80000390: fe5212e3 bne tp,t0,80000374 +80000394: 00004eb7 lui t4,0x4 +80000398: 01a00193 li gp,26 +8000039c: 2bd31863 bne t1,t4,8000064c + +800003a0 : +800003a0: 00000213 li tp,0 +800003a4: 00100093 li ra,1 +800003a8: 01f00113 li sp,31 +800003ac: 00209f33 sll t5,ra,sp +800003b0: 00000013 nop +800003b4: 00000013 nop +800003b8: 000f0313 mv t1,t5 +800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c0: 00200293 li t0,2 +800003c4: fe5210e3 bne tp,t0,800003a4 +800003c8: 80000eb7 lui t4,0x80000 +800003cc: 01b00193 li gp,27 +800003d0: 27d31e63 bne t1,t4,8000064c + +800003d4 : +800003d4: 00000213 li tp,0 +800003d8: 00100093 li ra,1 +800003dc: 00700113 li sp,7 +800003e0: 00209f33 sll t5,ra,sp +800003e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003e8: 00200293 li t0,2 +800003ec: fe5216e3 bne tp,t0,800003d8 +800003f0: 08000e93 li t4,128 +800003f4: 01c00193 li gp,28 +800003f8: 25df1a63 bne t5,t4,8000064c + +800003fc : +800003fc: 00000213 li tp,0 +80000400: 00100093 li ra,1 +80000404: 00e00113 li sp,14 +80000408: 00000013 nop +8000040c: 00209f33 sll t5,ra,sp +80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000414: 00200293 li t0,2 +80000418: fe5214e3 bne tp,t0,80000400 +8000041c: 00004eb7 lui t4,0x4 +80000420: 01d00193 li gp,29 +80000424: 23df1463 bne t5,t4,8000064c + +80000428 : +80000428: 00000213 li tp,0 +8000042c: 00100093 li ra,1 +80000430: 01f00113 li sp,31 +80000434: 00000013 nop +80000438: 00000013 nop +8000043c: 00209f33 sll t5,ra,sp +80000440: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000444: 00200293 li t0,2 +80000448: fe5212e3 bne tp,t0,8000042c +8000044c: 80000eb7 lui t4,0x80000 +80000450: 01e00193 li gp,30 +80000454: 1fdf1c63 bne t5,t4,8000064c + +80000458 : +80000458: 00000213 li tp,0 +8000045c: 00100093 li ra,1 +80000460: 00000013 nop +80000464: 00700113 li sp,7 +80000468: 00209f33 sll t5,ra,sp +8000046c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000470: 00200293 li t0,2 +80000474: fe5214e3 bne tp,t0,8000045c +80000478: 08000e93 li t4,128 +8000047c: 01f00193 li gp,31 +80000480: 1ddf1663 bne t5,t4,8000064c + +80000484 : +80000484: 00000213 li tp,0 +80000488: 00100093 li ra,1 +8000048c: 00000013 nop +80000490: 00e00113 li sp,14 +80000494: 00000013 nop +80000498: 00209f33 sll t5,ra,sp +8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004a0: 00200293 li t0,2 +800004a4: fe5212e3 bne tp,t0,80000488 +800004a8: 00004eb7 lui t4,0x4 +800004ac: 02000193 li gp,32 +800004b0: 19df1e63 bne t5,t4,8000064c + +800004b4 : +800004b4: 00000213 li tp,0 +800004b8: 00100093 li ra,1 +800004bc: 00000013 nop +800004c0: 00000013 nop +800004c4: 01f00113 li sp,31 +800004c8: 00209f33 sll t5,ra,sp +800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004d0: 00200293 li t0,2 +800004d4: fe5212e3 bne tp,t0,800004b8 +800004d8: 80000eb7 lui t4,0x80000 +800004dc: 02100193 li gp,33 +800004e0: 17df1663 bne t5,t4,8000064c + +800004e4 : +800004e4: 00000213 li tp,0 +800004e8: 00700113 li sp,7 +800004ec: 00100093 li ra,1 +800004f0: 00209f33 sll t5,ra,sp +800004f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004f8: 00200293 li t0,2 +800004fc: fe5216e3 bne tp,t0,800004e8 +80000500: 08000e93 li t4,128 +80000504: 02200193 li gp,34 +80000508: 15df1263 bne t5,t4,8000064c + +8000050c : +8000050c: 00000213 li tp,0 +80000510: 00e00113 li sp,14 +80000514: 00100093 li ra,1 +80000518: 00000013 nop +8000051c: 00209f33 sll t5,ra,sp +80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000524: 00200293 li t0,2 +80000528: fe5214e3 bne tp,t0,80000510 +8000052c: 00004eb7 lui t4,0x4 +80000530: 02300193 li gp,35 +80000534: 11df1c63 bne t5,t4,8000064c + +80000538 : +80000538: 00000213 li tp,0 +8000053c: 01f00113 li sp,31 +80000540: 00100093 li ra,1 +80000544: 00000013 nop +80000548: 00000013 nop +8000054c: 00209f33 sll t5,ra,sp +80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000554: 00200293 li t0,2 +80000558: fe5212e3 bne tp,t0,8000053c +8000055c: 80000eb7 lui t4,0x80000 +80000560: 02400193 li gp,36 +80000564: 0fdf1463 bne t5,t4,8000064c + +80000568 : +80000568: 00000213 li tp,0 +8000056c: 00700113 li sp,7 +80000570: 00000013 nop +80000574: 00100093 li ra,1 +80000578: 00209f33 sll t5,ra,sp +8000057c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000580: 00200293 li t0,2 +80000584: fe5214e3 bne tp,t0,8000056c +80000588: 08000e93 li t4,128 +8000058c: 02500193 li gp,37 +80000590: 0bdf1e63 bne t5,t4,8000064c + +80000594 : +80000594: 00000213 li tp,0 +80000598: 00e00113 li sp,14 +8000059c: 00000013 nop +800005a0: 00100093 li ra,1 +800005a4: 00000013 nop +800005a8: 00209f33 sll t5,ra,sp +800005ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800005b0: 00200293 li t0,2 +800005b4: fe5212e3 bne tp,t0,80000598 +800005b8: 00004eb7 lui t4,0x4 +800005bc: 02600193 li gp,38 +800005c0: 09df1663 bne t5,t4,8000064c + +800005c4 : +800005c4: 00000213 li tp,0 +800005c8: 01f00113 li sp,31 +800005cc: 00000013 nop +800005d0: 00000013 nop +800005d4: 00100093 li ra,1 +800005d8: 00209f33 sll t5,ra,sp +800005dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800005e0: 00200293 li t0,2 +800005e4: fe5212e3 bne tp,t0,800005c8 +800005e8: 80000eb7 lui t4,0x80000 +800005ec: 02700193 li gp,39 +800005f0: 05df1e63 bne t5,t4,8000064c + +800005f4 : +800005f4: 00f00093 li ra,15 +800005f8: 00101133 sll sp,zero,ra +800005fc: 00000e93 li t4,0 +80000600: 02800193 li gp,40 +80000604: 05d11463 bne sp,t4,8000064c + +80000608 : +80000608: 02000093 li ra,32 +8000060c: 00009133 sll sp,ra,zero +80000610: 02000e93 li t4,32 +80000614: 02900193 li gp,41 +80000618: 03d11a63 bne sp,t4,8000064c + +8000061c : +8000061c: 000010b3 sll ra,zero,zero +80000620: 00000e93 li t4,0 +80000624: 02a00193 li gp,42 +80000628: 03d09263 bne ra,t4,8000064c + +8000062c : +8000062c: 40000093 li ra,1024 +80000630: 00001137 lui sp,0x1 +80000634: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> +80000638: 00209033 sll zero,ra,sp +8000063c: 00000e93 li t4,0 +80000640: 02b00193 li gp,43 +80000644: 01d01463 bne zero,t4,8000064c +80000648: 00301c63 bne zero,gp,80000660 + +8000064c : +8000064c: 0ff0000f fence +80000650: 00018063 beqz gp,80000650 +80000654: 00119193 slli gp,gp,0x1 +80000658: 0011e193 ori gp,gp,1 +8000065c: 00000073 ecall + +80000660 : +80000660: 0ff0000f fence +80000664: 00100193 li gp,1 +80000668: 00000073 ecall +8000066c: c0001073 unimp +80000670: 0000 unimp +80000672: 0000 unimp +80000674: 0000 unimp +80000676: 0000 unimp +80000678: 0000 unimp +8000067a: 0000 unimp +8000067c: 0000 unimp +8000067e: 0000 unimp +80000680: 0000 unimp +80000682: 0000 unimp diff --git a/Tests/isa/rv32ui-p-slli b/Tests/isa/rv32ui-p-slli new file mode 100644 index 0000000..7eeafa2 Binary files /dev/null and b/Tests/isa/rv32ui-p-slli differ diff --git a/Tests/isa/rv32ui-p-slli.dump b/Tests/isa/rv32ui-p-slli.dump new file mode 100644 index 0000000..0408e2e --- /dev/null +++ b/Tests/isa/rv32ui-p-slli.dump @@ -0,0 +1,316 @@ + +rv32ui-p-slli: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00100093 li ra,1 +80000100: 00009f13 slli t5,ra,0x0 +80000104: 00100e93 li t4,1 +80000108: 00200193 li gp,2 +8000010c: 27df1a63 bne t5,t4,80000380 + +80000110 : +80000110: 00100093 li ra,1 +80000114: 00109f13 slli t5,ra,0x1 +80000118: 00200e93 li t4,2 +8000011c: 00300193 li gp,3 +80000120: 27df1063 bne t5,t4,80000380 + +80000124 : +80000124: 00100093 li ra,1 +80000128: 00709f13 slli t5,ra,0x7 +8000012c: 08000e93 li t4,128 +80000130: 00400193 li gp,4 +80000134: 25df1663 bne t5,t4,80000380 + +80000138 : +80000138: 00100093 li ra,1 +8000013c: 00e09f13 slli t5,ra,0xe +80000140: 00004eb7 lui t4,0x4 +80000144: 00500193 li gp,5 +80000148: 23df1c63 bne t5,t4,80000380 + +8000014c : +8000014c: 00100093 li ra,1 +80000150: 01f09f13 slli t5,ra,0x1f +80000154: 80000eb7 lui t4,0x80000 +80000158: 00600193 li gp,6 +8000015c: 23df1263 bne t5,t4,80000380 + +80000160 : +80000160: fff00093 li ra,-1 +80000164: 00009f13 slli t5,ra,0x0 +80000168: fff00e93 li t4,-1 +8000016c: 00700193 li gp,7 +80000170: 21df1863 bne t5,t4,80000380 + +80000174 : +80000174: fff00093 li ra,-1 +80000178: 00109f13 slli t5,ra,0x1 +8000017c: ffe00e93 li t4,-2 +80000180: 00800193 li gp,8 +80000184: 1fdf1e63 bne t5,t4,80000380 + +80000188 : +80000188: fff00093 li ra,-1 +8000018c: 00709f13 slli t5,ra,0x7 +80000190: f8000e93 li t4,-128 +80000194: 00900193 li gp,9 +80000198: 1fdf1463 bne t5,t4,80000380 + +8000019c : +8000019c: fff00093 li ra,-1 +800001a0: 00e09f13 slli t5,ra,0xe +800001a4: ffffceb7 lui t4,0xffffc +800001a8: 00a00193 li gp,10 +800001ac: 1ddf1a63 bne t5,t4,80000380 + +800001b0 : +800001b0: fff00093 li ra,-1 +800001b4: 01f09f13 slli t5,ra,0x1f +800001b8: 80000eb7 lui t4,0x80000 +800001bc: 00b00193 li gp,11 +800001c0: 1ddf1063 bne t5,t4,80000380 + +800001c4 : +800001c4: 212120b7 lui ra,0x21212 +800001c8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800001cc: 00009f13 slli t5,ra,0x0 +800001d0: 21212eb7 lui t4,0x21212 +800001d4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +800001d8: 00c00193 li gp,12 +800001dc: 1bdf1263 bne t5,t4,80000380 + +800001e0 : +800001e0: 212120b7 lui ra,0x21212 +800001e4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800001e8: 00109f13 slli t5,ra,0x1 +800001ec: 42424eb7 lui t4,0x42424 +800001f0: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> +800001f4: 00d00193 li gp,13 +800001f8: 19df1463 bne t5,t4,80000380 + +800001fc : +800001fc: 212120b7 lui ra,0x21212 +80000200: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000204: 00709f13 slli t5,ra,0x7 +80000208: 90909eb7 lui t4,0x90909 +8000020c: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080> +80000210: 00e00193 li gp,14 +80000214: 17df1663 bne t5,t4,80000380 + +80000218 : +80000218: 212120b7 lui ra,0x21212 +8000021c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000220: 00e09f13 slli t5,ra,0xe +80000224: 48484eb7 lui t4,0x48484 +80000228: 00f00193 li gp,15 +8000022c: 15df1a63 bne t5,t4,80000380 + +80000230 : +80000230: 212120b7 lui ra,0x21212 +80000234: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000238: 01f09f13 slli t5,ra,0x1f +8000023c: 80000eb7 lui t4,0x80000 +80000240: 01000193 li gp,16 +80000244: 13df1e63 bne t5,t4,80000380 + +80000248 : +80000248: 00100093 li ra,1 +8000024c: 00709093 slli ra,ra,0x7 +80000250: 08000e93 li t4,128 +80000254: 01100193 li gp,17 +80000258: 13d09463 bne ra,t4,80000380 + +8000025c : +8000025c: 00000213 li tp,0 +80000260: 00100093 li ra,1 +80000264: 00709f13 slli t5,ra,0x7 +80000268: 000f0313 mv t1,t5 +8000026c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000270: 00200293 li t0,2 +80000274: fe5216e3 bne tp,t0,80000260 +80000278: 08000e93 li t4,128 +8000027c: 01200193 li gp,18 +80000280: 11d31063 bne t1,t4,80000380 + +80000284 : +80000284: 00000213 li tp,0 +80000288: 00100093 li ra,1 +8000028c: 00e09f13 slli t5,ra,0xe +80000290: 00000013 nop +80000294: 000f0313 mv t1,t5 +80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000029c: 00200293 li t0,2 +800002a0: fe5214e3 bne tp,t0,80000288 +800002a4: 00004eb7 lui t4,0x4 +800002a8: 01300193 li gp,19 +800002ac: 0dd31a63 bne t1,t4,80000380 + +800002b0 : +800002b0: 00000213 li tp,0 +800002b4: 00100093 li ra,1 +800002b8: 01f09f13 slli t5,ra,0x1f +800002bc: 00000013 nop +800002c0: 00000013 nop +800002c4: 000f0313 mv t1,t5 +800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002cc: 00200293 li t0,2 +800002d0: fe5212e3 bne tp,t0,800002b4 +800002d4: 80000eb7 lui t4,0x80000 +800002d8: 01400193 li gp,20 +800002dc: 0bd31263 bne t1,t4,80000380 + +800002e0 : +800002e0: 00000213 li tp,0 +800002e4: 00100093 li ra,1 +800002e8: 00709f13 slli t5,ra,0x7 +800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f0: 00200293 li t0,2 +800002f4: fe5218e3 bne tp,t0,800002e4 +800002f8: 08000e93 li t4,128 +800002fc: 01500193 li gp,21 +80000300: 09df1063 bne t5,t4,80000380 + +80000304 : +80000304: 00000213 li tp,0 +80000308: 00100093 li ra,1 +8000030c: 00000013 nop +80000310: 00e09f13 slli t5,ra,0xe +80000314: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000318: 00200293 li t0,2 +8000031c: fe5216e3 bne tp,t0,80000308 +80000320: 00004eb7 lui t4,0x4 +80000324: 01600193 li gp,22 +80000328: 05df1c63 bne t5,t4,80000380 + +8000032c : +8000032c: 00000213 li tp,0 +80000330: 00100093 li ra,1 +80000334: 00000013 nop +80000338: 00000013 nop +8000033c: 01f09f13 slli t5,ra,0x1f +80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000344: 00200293 li t0,2 +80000348: fe5214e3 bne tp,t0,80000330 +8000034c: 80000eb7 lui t4,0x80000 +80000350: 01700193 li gp,23 +80000354: 03df1663 bne t5,t4,80000380 + +80000358 : +80000358: 01f01093 slli ra,zero,0x1f +8000035c: 00000e93 li t4,0 +80000360: 01800193 li gp,24 +80000364: 01d09e63 bne ra,t4,80000380 + +80000368 : +80000368: 02100093 li ra,33 +8000036c: 01409013 slli zero,ra,0x14 +80000370: 00000e93 li t4,0 +80000374: 01900193 li gp,25 +80000378: 01d01463 bne zero,t4,80000380 +8000037c: 00301c63 bne zero,gp,80000394 + +80000380 : +80000380: 0ff0000f fence +80000384: 00018063 beqz gp,80000384 +80000388: 00119193 slli gp,gp,0x1 +8000038c: 0011e193 ori gp,gp,1 +80000390: 00000073 ecall + +80000394 : +80000394: 0ff0000f fence +80000398: 00100193 li gp,1 +8000039c: 00000073 ecall +800003a0: c0001073 unimp +800003a4: 0000 unimp +800003a6: 0000 unimp +800003a8: 0000 unimp +800003aa: 0000 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp diff --git a/Tests/isa/rv32ui-p-slt b/Tests/isa/rv32ui-p-slt new file mode 100644 index 0000000..b3fa885 Binary files /dev/null and b/Tests/isa/rv32ui-p-slt differ diff --git a/Tests/isa/rv32ui-p-slt.dump b/Tests/isa/rv32ui-p-slt.dump new file mode 100644 index 0000000..115adee --- /dev/null +++ b/Tests/isa/rv32ui-p-slt.dump @@ -0,0 +1,485 @@ + +rv32ui-p-slt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00000113 li sp,0 +80000104: 0020af33 slt t5,ra,sp +80000108: 00000e93 li t4,0 +8000010c: 00200193 li gp,2 +80000110: 4bdf1a63 bne t5,t4,800005c4 + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 0020af33 slt t5,ra,sp +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 49df1e63 bne t5,t4,800005c4 + +8000012c : +8000012c: 00300093 li ra,3 +80000130: 00700113 li sp,7 +80000134: 0020af33 slt t5,ra,sp +80000138: 00100e93 li t4,1 +8000013c: 00400193 li gp,4 +80000140: 49df1263 bne t5,t4,800005c4 + +80000144 : +80000144: 00700093 li ra,7 +80000148: 00300113 li sp,3 +8000014c: 0020af33 slt t5,ra,sp +80000150: 00000e93 li t4,0 +80000154: 00500193 li gp,5 +80000158: 47df1663 bne t5,t4,800005c4 + +8000015c : +8000015c: 00000093 li ra,0 +80000160: ffff8137 lui sp,0xffff8 +80000164: 0020af33 slt t5,ra,sp +80000168: 00000e93 li t4,0 +8000016c: 00600193 li gp,6 +80000170: 45df1a63 bne t5,t4,800005c4 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: 00000113 li sp,0 +8000017c: 0020af33 slt t5,ra,sp +80000180: 00100e93 li t4,1 +80000184: 00700193 li gp,7 +80000188: 43df1e63 bne t5,t4,800005c4 + +8000018c : +8000018c: 800000b7 lui ra,0x80000 +80000190: ffff8137 lui sp,0xffff8 +80000194: 0020af33 slt t5,ra,sp +80000198: 00100e93 li t4,1 +8000019c: 00800193 li gp,8 +800001a0: 43df1263 bne t5,t4,800005c4 + +800001a4 : +800001a4: 00000093 li ra,0 +800001a8: 00008137 lui sp,0x8 +800001ac: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001b0: 0020af33 slt t5,ra,sp +800001b4: 00100e93 li t4,1 +800001b8: 00900193 li gp,9 +800001bc: 41df1463 bne t5,t4,800005c4 + +800001c0 : +800001c0: 800000b7 lui ra,0x80000 +800001c4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001c8: 00000113 li sp,0 +800001cc: 0020af33 slt t5,ra,sp +800001d0: 00000e93 li t4,0 +800001d4: 00a00193 li gp,10 +800001d8: 3fdf1663 bne t5,t4,800005c4 + +800001dc : +800001dc: 800000b7 lui ra,0x80000 +800001e0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001e4: 00008137 lui sp,0x8 +800001e8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001ec: 0020af33 slt t5,ra,sp +800001f0: 00000e93 li t4,0 +800001f4: 00b00193 li gp,11 +800001f8: 3ddf1663 bne t5,t4,800005c4 + +800001fc : +800001fc: 800000b7 lui ra,0x80000 +80000200: 00008137 lui sp,0x8 +80000204: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80000208: 0020af33 slt t5,ra,sp +8000020c: 00100e93 li t4,1 +80000210: 00c00193 li gp,12 +80000214: 3bdf1863 bne t5,t4,800005c4 + +80000218 : +80000218: 800000b7 lui ra,0x80000 +8000021c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000220: ffff8137 lui sp,0xffff8 +80000224: 0020af33 slt t5,ra,sp +80000228: 00000e93 li t4,0 +8000022c: 00d00193 li gp,13 +80000230: 39df1a63 bne t5,t4,800005c4 + +80000234 : +80000234: 00000093 li ra,0 +80000238: fff00113 li sp,-1 +8000023c: 0020af33 slt t5,ra,sp +80000240: 00000e93 li t4,0 +80000244: 00e00193 li gp,14 +80000248: 37df1e63 bne t5,t4,800005c4 + +8000024c : +8000024c: fff00093 li ra,-1 +80000250: 00100113 li sp,1 +80000254: 0020af33 slt t5,ra,sp +80000258: 00100e93 li t4,1 +8000025c: 00f00193 li gp,15 +80000260: 37df1263 bne t5,t4,800005c4 + +80000264 : +80000264: fff00093 li ra,-1 +80000268: fff00113 li sp,-1 +8000026c: 0020af33 slt t5,ra,sp +80000270: 00000e93 li t4,0 +80000274: 01000193 li gp,16 +80000278: 35df1663 bne t5,t4,800005c4 + +8000027c : +8000027c: 00e00093 li ra,14 +80000280: 00d00113 li sp,13 +80000284: 0020a0b3 slt ra,ra,sp +80000288: 00000e93 li t4,0 +8000028c: 01100193 li gp,17 +80000290: 33d09a63 bne ra,t4,800005c4 + +80000294 : +80000294: 00b00093 li ra,11 +80000298: 00d00113 li sp,13 +8000029c: 0020a133 slt sp,ra,sp +800002a0: 00100e93 li t4,1 +800002a4: 01200193 li gp,18 +800002a8: 31d11e63 bne sp,t4,800005c4 + +800002ac : +800002ac: 00d00093 li ra,13 +800002b0: 0010a0b3 slt ra,ra,ra +800002b4: 00000e93 li t4,0 +800002b8: 01300193 li gp,19 +800002bc: 31d09463 bne ra,t4,800005c4 + +800002c0 : +800002c0: 00000213 li tp,0 +800002c4: 00b00093 li ra,11 +800002c8: 00d00113 li sp,13 +800002cc: 0020af33 slt t5,ra,sp +800002d0: 000f0313 mv t1,t5 +800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d8: 00200293 li t0,2 +800002dc: fe5214e3 bne tp,t0,800002c4 +800002e0: 00100e93 li t4,1 +800002e4: 01400193 li gp,20 +800002e8: 2dd31e63 bne t1,t4,800005c4 + +800002ec : +800002ec: 00000213 li tp,0 +800002f0: 00e00093 li ra,14 +800002f4: 00d00113 li sp,13 +800002f8: 0020af33 slt t5,ra,sp +800002fc: 00000013 nop +80000300: 000f0313 mv t1,t5 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fe5212e3 bne tp,t0,800002f0 +80000310: 00000e93 li t4,0 +80000314: 01500193 li gp,21 +80000318: 2bd31663 bne t1,t4,800005c4 + +8000031c : +8000031c: 00000213 li tp,0 +80000320: 00c00093 li ra,12 +80000324: 00d00113 li sp,13 +80000328: 0020af33 slt t5,ra,sp +8000032c: 00000013 nop +80000330: 00000013 nop +80000334: 000f0313 mv t1,t5 +80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000033c: 00200293 li t0,2 +80000340: fe5210e3 bne tp,t0,80000320 +80000344: 00100e93 li t4,1 +80000348: 01600193 li gp,22 +8000034c: 27d31c63 bne t1,t4,800005c4 + +80000350 : +80000350: 00000213 li tp,0 +80000354: 00e00093 li ra,14 +80000358: 00d00113 li sp,13 +8000035c: 0020af33 slt t5,ra,sp +80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000364: 00200293 li t0,2 +80000368: fe5216e3 bne tp,t0,80000354 +8000036c: 00000e93 li t4,0 +80000370: 01700193 li gp,23 +80000374: 25df1863 bne t5,t4,800005c4 + +80000378 : +80000378: 00000213 li tp,0 +8000037c: 00b00093 li ra,11 +80000380: 00d00113 li sp,13 +80000384: 00000013 nop +80000388: 0020af33 slt t5,ra,sp +8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000390: 00200293 li t0,2 +80000394: fe5214e3 bne tp,t0,8000037c +80000398: 00100e93 li t4,1 +8000039c: 01800193 li gp,24 +800003a0: 23df1263 bne t5,t4,800005c4 + +800003a4 : +800003a4: 00000213 li tp,0 +800003a8: 00f00093 li ra,15 +800003ac: 00d00113 li sp,13 +800003b0: 00000013 nop +800003b4: 00000013 nop +800003b8: 0020af33 slt t5,ra,sp +800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c0: 00200293 li t0,2 +800003c4: fe5212e3 bne tp,t0,800003a8 +800003c8: 00000e93 li t4,0 +800003cc: 01900193 li gp,25 +800003d0: 1fdf1a63 bne t5,t4,800005c4 + +800003d4 : +800003d4: 00000213 li tp,0 +800003d8: 00a00093 li ra,10 +800003dc: 00000013 nop +800003e0: 00d00113 li sp,13 +800003e4: 0020af33 slt t5,ra,sp +800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003ec: 00200293 li t0,2 +800003f0: fe5214e3 bne tp,t0,800003d8 +800003f4: 00100e93 li t4,1 +800003f8: 01a00193 li gp,26 +800003fc: 1ddf1463 bne t5,t4,800005c4 + +80000400 : +80000400: 00000213 li tp,0 +80000404: 01000093 li ra,16 +80000408: 00000013 nop +8000040c: 00d00113 li sp,13 +80000410: 00000013 nop +80000414: 0020af33 slt t5,ra,sp +80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000041c: 00200293 li t0,2 +80000420: fe5212e3 bne tp,t0,80000404 +80000424: 00000e93 li t4,0 +80000428: 01b00193 li gp,27 +8000042c: 19df1c63 bne t5,t4,800005c4 + +80000430 : +80000430: 00000213 li tp,0 +80000434: 00900093 li ra,9 +80000438: 00000013 nop +8000043c: 00000013 nop +80000440: 00d00113 li sp,13 +80000444: 0020af33 slt t5,ra,sp +80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000044c: 00200293 li t0,2 +80000450: fe5212e3 bne tp,t0,80000434 +80000454: 00100e93 li t4,1 +80000458: 01c00193 li gp,28 +8000045c: 17df1463 bne t5,t4,800005c4 + +80000460 : +80000460: 00000213 li tp,0 +80000464: 00d00113 li sp,13 +80000468: 01100093 li ra,17 +8000046c: 0020af33 slt t5,ra,sp +80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000474: 00200293 li t0,2 +80000478: fe5216e3 bne tp,t0,80000464 +8000047c: 00000e93 li t4,0 +80000480: 01d00193 li gp,29 +80000484: 15df1063 bne t5,t4,800005c4 + +80000488 : +80000488: 00000213 li tp,0 +8000048c: 00d00113 li sp,13 +80000490: 00800093 li ra,8 +80000494: 00000013 nop +80000498: 0020af33 slt t5,ra,sp +8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004a0: 00200293 li t0,2 +800004a4: fe5214e3 bne tp,t0,8000048c +800004a8: 00100e93 li t4,1 +800004ac: 01e00193 li gp,30 +800004b0: 11df1a63 bne t5,t4,800005c4 + +800004b4 : +800004b4: 00000213 li tp,0 +800004b8: 00d00113 li sp,13 +800004bc: 01200093 li ra,18 +800004c0: 00000013 nop +800004c4: 00000013 nop +800004c8: 0020af33 slt t5,ra,sp +800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004d0: 00200293 li t0,2 +800004d4: fe5212e3 bne tp,t0,800004b8 +800004d8: 00000e93 li t4,0 +800004dc: 01f00193 li gp,31 +800004e0: 0fdf1263 bne t5,t4,800005c4 + +800004e4 : +800004e4: 00000213 li tp,0 +800004e8: 00d00113 li sp,13 +800004ec: 00000013 nop +800004f0: 00700093 li ra,7 +800004f4: 0020af33 slt t5,ra,sp +800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004fc: 00200293 li t0,2 +80000500: fe5214e3 bne tp,t0,800004e8 +80000504: 00100e93 li t4,1 +80000508: 02000193 li gp,32 +8000050c: 0bdf1c63 bne t5,t4,800005c4 + +80000510 : +80000510: 00000213 li tp,0 +80000514: 00d00113 li sp,13 +80000518: 00000013 nop +8000051c: 01300093 li ra,19 +80000520: 00000013 nop +80000524: 0020af33 slt t5,ra,sp +80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000052c: 00200293 li t0,2 +80000530: fe5212e3 bne tp,t0,80000514 +80000534: 00000e93 li t4,0 +80000538: 02100193 li gp,33 +8000053c: 09df1463 bne t5,t4,800005c4 + +80000540 : +80000540: 00000213 li tp,0 +80000544: 00d00113 li sp,13 +80000548: 00000013 nop +8000054c: 00000013 nop +80000550: 00600093 li ra,6 +80000554: 0020af33 slt t5,ra,sp +80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000055c: 00200293 li t0,2 +80000560: fe5212e3 bne tp,t0,80000544 +80000564: 00100e93 li t4,1 +80000568: 02200193 li gp,34 +8000056c: 05df1c63 bne t5,t4,800005c4 + +80000570 : +80000570: fff00093 li ra,-1 +80000574: 00102133 sgtz sp,ra +80000578: 00000e93 li t4,0 +8000057c: 02300193 li gp,35 +80000580: 05d11263 bne sp,t4,800005c4 + +80000584 : +80000584: fff00093 li ra,-1 +80000588: 0000a133 sltz sp,ra +8000058c: 00100e93 li t4,1 +80000590: 02400193 li gp,36 +80000594: 03d11863 bne sp,t4,800005c4 + +80000598 : +80000598: 000020b3 sltz ra,zero +8000059c: 00000e93 li t4,0 +800005a0: 02500193 li gp,37 +800005a4: 03d09063 bne ra,t4,800005c4 + +800005a8 : +800005a8: 01000093 li ra,16 +800005ac: 01e00113 li sp,30 +800005b0: 0020a033 slt zero,ra,sp +800005b4: 00000e93 li t4,0 +800005b8: 02600193 li gp,38 +800005bc: 01d01463 bne zero,t4,800005c4 +800005c0: 00301c63 bne zero,gp,800005d8 + +800005c4 : +800005c4: 0ff0000f fence +800005c8: 00018063 beqz gp,800005c8 +800005cc: 00119193 slli gp,gp,0x1 +800005d0: 0011e193 ori gp,gp,1 +800005d4: 00000073 ecall + +800005d8 : +800005d8: 0ff0000f fence +800005dc: 00100193 li gp,1 +800005e0: 00000073 ecall +800005e4: c0001073 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32ui-p-slti b/Tests/isa/rv32ui-p-slti new file mode 100644 index 0000000..9076a0a Binary files /dev/null and b/Tests/isa/rv32ui-p-slti differ diff --git a/Tests/isa/rv32ui-p-slti.dump b/Tests/isa/rv32ui-p-slti.dump new file mode 100644 index 0000000..522eb49 --- /dev/null +++ b/Tests/isa/rv32ui-p-slti.dump @@ -0,0 +1,320 @@ + +rv32ui-p-slti: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 0000af13 slti t5,ra,0 +80000104: 00000e93 li t4,0 +80000108: 00200193 li gp,2 +8000010c: 27df1263 bne t5,t4,80000370 + +80000110 : +80000110: 00100093 li ra,1 +80000114: 0010af13 slti t5,ra,1 +80000118: 00000e93 li t4,0 +8000011c: 00300193 li gp,3 +80000120: 25df1863 bne t5,t4,80000370 + +80000124 : +80000124: 00300093 li ra,3 +80000128: 0070af13 slti t5,ra,7 +8000012c: 00100e93 li t4,1 +80000130: 00400193 li gp,4 +80000134: 23df1e63 bne t5,t4,80000370 + +80000138 : +80000138: 00700093 li ra,7 +8000013c: 0030af13 slti t5,ra,3 +80000140: 00000e93 li t4,0 +80000144: 00500193 li gp,5 +80000148: 23df1463 bne t5,t4,80000370 + +8000014c : +8000014c: 00000093 li ra,0 +80000150: 8000af13 slti t5,ra,-2048 +80000154: 00000e93 li t4,0 +80000158: 00600193 li gp,6 +8000015c: 21df1a63 bne t5,t4,80000370 + +80000160 : +80000160: 800000b7 lui ra,0x80000 +80000164: 0000af13 slti t5,ra,0 +80000168: 00100e93 li t4,1 +8000016c: 00700193 li gp,7 +80000170: 21df1063 bne t5,t4,80000370 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: 8000af13 slti t5,ra,-2048 +8000017c: 00100e93 li t4,1 +80000180: 00800193 li gp,8 +80000184: 1fdf1663 bne t5,t4,80000370 + +80000188 : +80000188: 00000093 li ra,0 +8000018c: 7ff0af13 slti t5,ra,2047 +80000190: 00100e93 li t4,1 +80000194: 00900193 li gp,9 +80000198: 1ddf1c63 bne t5,t4,80000370 + +8000019c : +8000019c: 800000b7 lui ra,0x80000 +800001a0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001a4: 0000af13 slti t5,ra,0 +800001a8: 00000e93 li t4,0 +800001ac: 00a00193 li gp,10 +800001b0: 1ddf1063 bne t5,t4,80000370 + +800001b4 : +800001b4: 800000b7 lui ra,0x80000 +800001b8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001bc: 7ff0af13 slti t5,ra,2047 +800001c0: 00000e93 li t4,0 +800001c4: 00b00193 li gp,11 +800001c8: 1bdf1463 bne t5,t4,80000370 + +800001cc : +800001cc: 800000b7 lui ra,0x80000 +800001d0: 7ff0af13 slti t5,ra,2047 +800001d4: 00100e93 li t4,1 +800001d8: 00c00193 li gp,12 +800001dc: 19df1a63 bne t5,t4,80000370 + +800001e0 : +800001e0: 800000b7 lui ra,0x80000 +800001e4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001e8: 8000af13 slti t5,ra,-2048 +800001ec: 00000e93 li t4,0 +800001f0: 00d00193 li gp,13 +800001f4: 17df1e63 bne t5,t4,80000370 + +800001f8 : +800001f8: 00000093 li ra,0 +800001fc: fff0af13 slti t5,ra,-1 +80000200: 00000e93 li t4,0 +80000204: 00e00193 li gp,14 +80000208: 17df1463 bne t5,t4,80000370 + +8000020c : +8000020c: fff00093 li ra,-1 +80000210: 0010af13 slti t5,ra,1 +80000214: 00100e93 li t4,1 +80000218: 00f00193 li gp,15 +8000021c: 15df1a63 bne t5,t4,80000370 + +80000220 : +80000220: fff00093 li ra,-1 +80000224: fff0af13 slti t5,ra,-1 +80000228: 00000e93 li t4,0 +8000022c: 01000193 li gp,16 +80000230: 15df1063 bne t5,t4,80000370 + +80000234 : +80000234: 00b00093 li ra,11 +80000238: 00d0a093 slti ra,ra,13 +8000023c: 00100e93 li t4,1 +80000240: 01100193 li gp,17 +80000244: 13d09663 bne ra,t4,80000370 + +80000248 : +80000248: 00000213 li tp,0 +8000024c: 00f00093 li ra,15 +80000250: 00a0af13 slti t5,ra,10 +80000254: 000f0313 mv t1,t5 +80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000025c: 00200293 li t0,2 +80000260: fe5216e3 bne tp,t0,8000024c +80000264: 00000e93 li t4,0 +80000268: 01200193 li gp,18 +8000026c: 11d31263 bne t1,t4,80000370 + +80000270 : +80000270: 00000213 li tp,0 +80000274: 00a00093 li ra,10 +80000278: 0100af13 slti t5,ra,16 +8000027c: 00000013 nop +80000280: 000f0313 mv t1,t5 +80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000288: 00200293 li t0,2 +8000028c: fe5214e3 bne tp,t0,80000274 +80000290: 00100e93 li t4,1 +80000294: 01300193 li gp,19 +80000298: 0dd31c63 bne t1,t4,80000370 + +8000029c : +8000029c: 00000213 li tp,0 +800002a0: 01000093 li ra,16 +800002a4: 0090af13 slti t5,ra,9 +800002a8: 00000013 nop +800002ac: 00000013 nop +800002b0: 000f0313 mv t1,t5 +800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002b8: 00200293 li t0,2 +800002bc: fe5212e3 bne tp,t0,800002a0 +800002c0: 00000e93 li t4,0 +800002c4: 01400193 li gp,20 +800002c8: 0bd31463 bne t1,t4,80000370 + +800002cc : +800002cc: 00000213 li tp,0 +800002d0: 00b00093 li ra,11 +800002d4: 00f0af13 slti t5,ra,15 +800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002dc: 00200293 li t0,2 +800002e0: fe5218e3 bne tp,t0,800002d0 +800002e4: 00100e93 li t4,1 +800002e8: 01500193 li gp,21 +800002ec: 09df1263 bne t5,t4,80000370 + +800002f0 : +800002f0: 00000213 li tp,0 +800002f4: 01100093 li ra,17 +800002f8: 00000013 nop +800002fc: 0080af13 slti t5,ra,8 +80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000304: 00200293 li t0,2 +80000308: fe5216e3 bne tp,t0,800002f4 +8000030c: 00000e93 li t4,0 +80000310: 01600193 li gp,22 +80000314: 05df1e63 bne t5,t4,80000370 + +80000318 : +80000318: 00000213 li tp,0 +8000031c: 00c00093 li ra,12 +80000320: 00000013 nop +80000324: 00000013 nop +80000328: 00e0af13 slti t5,ra,14 +8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000330: 00200293 li t0,2 +80000334: fe5214e3 bne tp,t0,8000031c +80000338: 00100e93 li t4,1 +8000033c: 01700193 li gp,23 +80000340: 03df1863 bne t5,t4,80000370 + +80000344 : +80000344: fff02093 slti ra,zero,-1 +80000348: 00000e93 li t4,0 +8000034c: 01800193 li gp,24 +80000350: 03d09063 bne ra,t4,80000370 + +80000354 : +80000354: 00ff00b7 lui ra,0xff0 +80000358: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000035c: fff0a013 slti zero,ra,-1 +80000360: 00000e93 li t4,0 +80000364: 01900193 li gp,25 +80000368: 01d01463 bne zero,t4,80000370 +8000036c: 00301c63 bne zero,gp,80000384 + +80000370 : +80000370: 0ff0000f fence +80000374: 00018063 beqz gp,80000374 +80000378: 00119193 slli gp,gp,0x1 +8000037c: 0011e193 ori gp,gp,1 +80000380: 00000073 ecall + +80000384 : +80000384: 0ff0000f fence +80000388: 00100193 li gp,1 +8000038c: 00000073 ecall +80000390: c0001073 unimp +80000394: 0000 unimp +80000396: 0000 unimp +80000398: 0000 unimp +8000039a: 0000 unimp +8000039c: 0000 unimp +8000039e: 0000 unimp +800003a0: 0000 unimp +800003a2: 0000 unimp +800003a4: 0000 unimp +800003a6: 0000 unimp +800003a8: 0000 unimp +800003aa: 0000 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp diff --git a/Tests/isa/rv32ui-p-sltiu b/Tests/isa/rv32ui-p-sltiu new file mode 100644 index 0000000..9cfbb58 Binary files /dev/null and b/Tests/isa/rv32ui-p-sltiu differ diff --git a/Tests/isa/rv32ui-p-sltiu.dump b/Tests/isa/rv32ui-p-sltiu.dump new file mode 100644 index 0000000..7055814 --- /dev/null +++ b/Tests/isa/rv32ui-p-sltiu.dump @@ -0,0 +1,320 @@ + +rv32ui-p-sltiu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 0000bf13 sltiu t5,ra,0 +80000104: 00000e93 li t4,0 +80000108: 00200193 li gp,2 +8000010c: 27df1263 bne t5,t4,80000370 + +80000110 : +80000110: 00100093 li ra,1 +80000114: 0010bf13 seqz t5,ra +80000118: 00000e93 li t4,0 +8000011c: 00300193 li gp,3 +80000120: 25df1863 bne t5,t4,80000370 + +80000124 : +80000124: 00300093 li ra,3 +80000128: 0070bf13 sltiu t5,ra,7 +8000012c: 00100e93 li t4,1 +80000130: 00400193 li gp,4 +80000134: 23df1e63 bne t5,t4,80000370 + +80000138 : +80000138: 00700093 li ra,7 +8000013c: 0030bf13 sltiu t5,ra,3 +80000140: 00000e93 li t4,0 +80000144: 00500193 li gp,5 +80000148: 23df1463 bne t5,t4,80000370 + +8000014c : +8000014c: 00000093 li ra,0 +80000150: 8000bf13 sltiu t5,ra,-2048 +80000154: 00100e93 li t4,1 +80000158: 00600193 li gp,6 +8000015c: 21df1a63 bne t5,t4,80000370 + +80000160 : +80000160: 800000b7 lui ra,0x80000 +80000164: 0000bf13 sltiu t5,ra,0 +80000168: 00000e93 li t4,0 +8000016c: 00700193 li gp,7 +80000170: 21df1063 bne t5,t4,80000370 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: 8000bf13 sltiu t5,ra,-2048 +8000017c: 00100e93 li t4,1 +80000180: 00800193 li gp,8 +80000184: 1fdf1663 bne t5,t4,80000370 + +80000188 : +80000188: 00000093 li ra,0 +8000018c: 7ff0bf13 sltiu t5,ra,2047 +80000190: 00100e93 li t4,1 +80000194: 00900193 li gp,9 +80000198: 1ddf1c63 bne t5,t4,80000370 + +8000019c : +8000019c: 800000b7 lui ra,0x80000 +800001a0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001a4: 0000bf13 sltiu t5,ra,0 +800001a8: 00000e93 li t4,0 +800001ac: 00a00193 li gp,10 +800001b0: 1ddf1063 bne t5,t4,80000370 + +800001b4 : +800001b4: 800000b7 lui ra,0x80000 +800001b8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001bc: 7ff0bf13 sltiu t5,ra,2047 +800001c0: 00000e93 li t4,0 +800001c4: 00b00193 li gp,11 +800001c8: 1bdf1463 bne t5,t4,80000370 + +800001cc : +800001cc: 800000b7 lui ra,0x80000 +800001d0: 7ff0bf13 sltiu t5,ra,2047 +800001d4: 00000e93 li t4,0 +800001d8: 00c00193 li gp,12 +800001dc: 19df1a63 bne t5,t4,80000370 + +800001e0 : +800001e0: 800000b7 lui ra,0x80000 +800001e4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001e8: 8000bf13 sltiu t5,ra,-2048 +800001ec: 00100e93 li t4,1 +800001f0: 00d00193 li gp,13 +800001f4: 17df1e63 bne t5,t4,80000370 + +800001f8 : +800001f8: 00000093 li ra,0 +800001fc: fff0bf13 sltiu t5,ra,-1 +80000200: 00100e93 li t4,1 +80000204: 00e00193 li gp,14 +80000208: 17df1463 bne t5,t4,80000370 + +8000020c : +8000020c: fff00093 li ra,-1 +80000210: 0010bf13 seqz t5,ra +80000214: 00000e93 li t4,0 +80000218: 00f00193 li gp,15 +8000021c: 15df1a63 bne t5,t4,80000370 + +80000220 : +80000220: fff00093 li ra,-1 +80000224: fff0bf13 sltiu t5,ra,-1 +80000228: 00000e93 li t4,0 +8000022c: 01000193 li gp,16 +80000230: 15df1063 bne t5,t4,80000370 + +80000234 : +80000234: 00b00093 li ra,11 +80000238: 00d0b093 sltiu ra,ra,13 +8000023c: 00100e93 li t4,1 +80000240: 01100193 li gp,17 +80000244: 13d09663 bne ra,t4,80000370 + +80000248 : +80000248: 00000213 li tp,0 +8000024c: 00f00093 li ra,15 +80000250: 00a0bf13 sltiu t5,ra,10 +80000254: 000f0313 mv t1,t5 +80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000025c: 00200293 li t0,2 +80000260: fe5216e3 bne tp,t0,8000024c +80000264: 00000e93 li t4,0 +80000268: 01200193 li gp,18 +8000026c: 11d31263 bne t1,t4,80000370 + +80000270 : +80000270: 00000213 li tp,0 +80000274: 00a00093 li ra,10 +80000278: 0100bf13 sltiu t5,ra,16 +8000027c: 00000013 nop +80000280: 000f0313 mv t1,t5 +80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000288: 00200293 li t0,2 +8000028c: fe5214e3 bne tp,t0,80000274 +80000290: 00100e93 li t4,1 +80000294: 01300193 li gp,19 +80000298: 0dd31c63 bne t1,t4,80000370 + +8000029c : +8000029c: 00000213 li tp,0 +800002a0: 01000093 li ra,16 +800002a4: 0090bf13 sltiu t5,ra,9 +800002a8: 00000013 nop +800002ac: 00000013 nop +800002b0: 000f0313 mv t1,t5 +800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002b8: 00200293 li t0,2 +800002bc: fe5212e3 bne tp,t0,800002a0 +800002c0: 00000e93 li t4,0 +800002c4: 01400193 li gp,20 +800002c8: 0bd31463 bne t1,t4,80000370 + +800002cc : +800002cc: 00000213 li tp,0 +800002d0: 00b00093 li ra,11 +800002d4: 00f0bf13 sltiu t5,ra,15 +800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002dc: 00200293 li t0,2 +800002e0: fe5218e3 bne tp,t0,800002d0 +800002e4: 00100e93 li t4,1 +800002e8: 01500193 li gp,21 +800002ec: 09df1263 bne t5,t4,80000370 + +800002f0 : +800002f0: 00000213 li tp,0 +800002f4: 01100093 li ra,17 +800002f8: 00000013 nop +800002fc: 0080bf13 sltiu t5,ra,8 +80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000304: 00200293 li t0,2 +80000308: fe5216e3 bne tp,t0,800002f4 +8000030c: 00000e93 li t4,0 +80000310: 01600193 li gp,22 +80000314: 05df1e63 bne t5,t4,80000370 + +80000318 : +80000318: 00000213 li tp,0 +8000031c: 00c00093 li ra,12 +80000320: 00000013 nop +80000324: 00000013 nop +80000328: 00e0bf13 sltiu t5,ra,14 +8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000330: 00200293 li t0,2 +80000334: fe5214e3 bne tp,t0,8000031c +80000338: 00100e93 li t4,1 +8000033c: 01700193 li gp,23 +80000340: 03df1863 bne t5,t4,80000370 + +80000344 : +80000344: fff03093 sltiu ra,zero,-1 +80000348: 00100e93 li t4,1 +8000034c: 01800193 li gp,24 +80000350: 03d09063 bne ra,t4,80000370 + +80000354 : +80000354: 00ff00b7 lui ra,0xff0 +80000358: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000035c: fff0b013 sltiu zero,ra,-1 +80000360: 00000e93 li t4,0 +80000364: 01900193 li gp,25 +80000368: 01d01463 bne zero,t4,80000370 +8000036c: 00301c63 bne zero,gp,80000384 + +80000370 : +80000370: 0ff0000f fence +80000374: 00018063 beqz gp,80000374 +80000378: 00119193 slli gp,gp,0x1 +8000037c: 0011e193 ori gp,gp,1 +80000380: 00000073 ecall + +80000384 : +80000384: 0ff0000f fence +80000388: 00100193 li gp,1 +8000038c: 00000073 ecall +80000390: c0001073 unimp +80000394: 0000 unimp +80000396: 0000 unimp +80000398: 0000 unimp +8000039a: 0000 unimp +8000039c: 0000 unimp +8000039e: 0000 unimp +800003a0: 0000 unimp +800003a2: 0000 unimp +800003a4: 0000 unimp +800003a6: 0000 unimp +800003a8: 0000 unimp +800003aa: 0000 unimp +800003ac: 0000 unimp +800003ae: 0000 unimp +800003b0: 0000 unimp +800003b2: 0000 unimp +800003b4: 0000 unimp +800003b6: 0000 unimp +800003b8: 0000 unimp +800003ba: 0000 unimp +800003bc: 0000 unimp +800003be: 0000 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp diff --git a/Tests/isa/rv32ui-p-sltu b/Tests/isa/rv32ui-p-sltu new file mode 100644 index 0000000..b7e58ea Binary files /dev/null and b/Tests/isa/rv32ui-p-sltu differ diff --git a/Tests/isa/rv32ui-p-sltu.dump b/Tests/isa/rv32ui-p-sltu.dump new file mode 100644 index 0000000..35979f4 --- /dev/null +++ b/Tests/isa/rv32ui-p-sltu.dump @@ -0,0 +1,485 @@ + +rv32ui-p-sltu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00000113 li sp,0 +80000104: 0020bf33 sltu t5,ra,sp +80000108: 00000e93 li t4,0 +8000010c: 00200193 li gp,2 +80000110: 4bdf1a63 bne t5,t4,800005c4 + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 0020bf33 sltu t5,ra,sp +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 49df1e63 bne t5,t4,800005c4 + +8000012c : +8000012c: 00300093 li ra,3 +80000130: 00700113 li sp,7 +80000134: 0020bf33 sltu t5,ra,sp +80000138: 00100e93 li t4,1 +8000013c: 00400193 li gp,4 +80000140: 49df1263 bne t5,t4,800005c4 + +80000144 : +80000144: 00700093 li ra,7 +80000148: 00300113 li sp,3 +8000014c: 0020bf33 sltu t5,ra,sp +80000150: 00000e93 li t4,0 +80000154: 00500193 li gp,5 +80000158: 47df1663 bne t5,t4,800005c4 + +8000015c : +8000015c: 00000093 li ra,0 +80000160: ffff8137 lui sp,0xffff8 +80000164: 0020bf33 sltu t5,ra,sp +80000168: 00100e93 li t4,1 +8000016c: 00600193 li gp,6 +80000170: 45df1a63 bne t5,t4,800005c4 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: 00000113 li sp,0 +8000017c: 0020bf33 sltu t5,ra,sp +80000180: 00000e93 li t4,0 +80000184: 00700193 li gp,7 +80000188: 43df1e63 bne t5,t4,800005c4 + +8000018c : +8000018c: 800000b7 lui ra,0x80000 +80000190: ffff8137 lui sp,0xffff8 +80000194: 0020bf33 sltu t5,ra,sp +80000198: 00100e93 li t4,1 +8000019c: 00800193 li gp,8 +800001a0: 43df1263 bne t5,t4,800005c4 + +800001a4 : +800001a4: 00000093 li ra,0 +800001a8: 00008137 lui sp,0x8 +800001ac: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001b0: 0020bf33 sltu t5,ra,sp +800001b4: 00100e93 li t4,1 +800001b8: 00900193 li gp,9 +800001bc: 41df1463 bne t5,t4,800005c4 + +800001c0 : +800001c0: 800000b7 lui ra,0x80000 +800001c4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001c8: 00000113 li sp,0 +800001cc: 0020bf33 sltu t5,ra,sp +800001d0: 00000e93 li t4,0 +800001d4: 00a00193 li gp,10 +800001d8: 3fdf1663 bne t5,t4,800005c4 + +800001dc : +800001dc: 800000b7 lui ra,0x80000 +800001e0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001e4: 00008137 lui sp,0x8 +800001e8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001ec: 0020bf33 sltu t5,ra,sp +800001f0: 00000e93 li t4,0 +800001f4: 00b00193 li gp,11 +800001f8: 3ddf1663 bne t5,t4,800005c4 + +800001fc : +800001fc: 800000b7 lui ra,0x80000 +80000200: 00008137 lui sp,0x8 +80000204: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80000208: 0020bf33 sltu t5,ra,sp +8000020c: 00000e93 li t4,0 +80000210: 00c00193 li gp,12 +80000214: 3bdf1863 bne t5,t4,800005c4 + +80000218 : +80000218: 800000b7 lui ra,0x80000 +8000021c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000220: ffff8137 lui sp,0xffff8 +80000224: 0020bf33 sltu t5,ra,sp +80000228: 00100e93 li t4,1 +8000022c: 00d00193 li gp,13 +80000230: 39df1a63 bne t5,t4,800005c4 + +80000234 : +80000234: 00000093 li ra,0 +80000238: fff00113 li sp,-1 +8000023c: 0020bf33 sltu t5,ra,sp +80000240: 00100e93 li t4,1 +80000244: 00e00193 li gp,14 +80000248: 37df1e63 bne t5,t4,800005c4 + +8000024c : +8000024c: fff00093 li ra,-1 +80000250: 00100113 li sp,1 +80000254: 0020bf33 sltu t5,ra,sp +80000258: 00000e93 li t4,0 +8000025c: 00f00193 li gp,15 +80000260: 37df1263 bne t5,t4,800005c4 + +80000264 : +80000264: fff00093 li ra,-1 +80000268: fff00113 li sp,-1 +8000026c: 0020bf33 sltu t5,ra,sp +80000270: 00000e93 li t4,0 +80000274: 01000193 li gp,16 +80000278: 35df1663 bne t5,t4,800005c4 + +8000027c : +8000027c: 00e00093 li ra,14 +80000280: 00d00113 li sp,13 +80000284: 0020b0b3 sltu ra,ra,sp +80000288: 00000e93 li t4,0 +8000028c: 01100193 li gp,17 +80000290: 33d09a63 bne ra,t4,800005c4 + +80000294 : +80000294: 00b00093 li ra,11 +80000298: 00d00113 li sp,13 +8000029c: 0020b133 sltu sp,ra,sp +800002a0: 00100e93 li t4,1 +800002a4: 01200193 li gp,18 +800002a8: 31d11e63 bne sp,t4,800005c4 + +800002ac : +800002ac: 00d00093 li ra,13 +800002b0: 0010b0b3 sltu ra,ra,ra +800002b4: 00000e93 li t4,0 +800002b8: 01300193 li gp,19 +800002bc: 31d09463 bne ra,t4,800005c4 + +800002c0 : +800002c0: 00000213 li tp,0 +800002c4: 00b00093 li ra,11 +800002c8: 00d00113 li sp,13 +800002cc: 0020bf33 sltu t5,ra,sp +800002d0: 000f0313 mv t1,t5 +800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d8: 00200293 li t0,2 +800002dc: fe5214e3 bne tp,t0,800002c4 +800002e0: 00100e93 li t4,1 +800002e4: 01400193 li gp,20 +800002e8: 2dd31e63 bne t1,t4,800005c4 + +800002ec : +800002ec: 00000213 li tp,0 +800002f0: 00e00093 li ra,14 +800002f4: 00d00113 li sp,13 +800002f8: 0020bf33 sltu t5,ra,sp +800002fc: 00000013 nop +80000300: 000f0313 mv t1,t5 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fe5212e3 bne tp,t0,800002f0 +80000310: 00000e93 li t4,0 +80000314: 01500193 li gp,21 +80000318: 2bd31663 bne t1,t4,800005c4 + +8000031c : +8000031c: 00000213 li tp,0 +80000320: 00c00093 li ra,12 +80000324: 00d00113 li sp,13 +80000328: 0020bf33 sltu t5,ra,sp +8000032c: 00000013 nop +80000330: 00000013 nop +80000334: 000f0313 mv t1,t5 +80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000033c: 00200293 li t0,2 +80000340: fe5210e3 bne tp,t0,80000320 +80000344: 00100e93 li t4,1 +80000348: 01600193 li gp,22 +8000034c: 27d31c63 bne t1,t4,800005c4 + +80000350 : +80000350: 00000213 li tp,0 +80000354: 00e00093 li ra,14 +80000358: 00d00113 li sp,13 +8000035c: 0020bf33 sltu t5,ra,sp +80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000364: 00200293 li t0,2 +80000368: fe5216e3 bne tp,t0,80000354 +8000036c: 00000e93 li t4,0 +80000370: 01700193 li gp,23 +80000374: 25df1863 bne t5,t4,800005c4 + +80000378 : +80000378: 00000213 li tp,0 +8000037c: 00b00093 li ra,11 +80000380: 00d00113 li sp,13 +80000384: 00000013 nop +80000388: 0020bf33 sltu t5,ra,sp +8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000390: 00200293 li t0,2 +80000394: fe5214e3 bne tp,t0,8000037c +80000398: 00100e93 li t4,1 +8000039c: 01800193 li gp,24 +800003a0: 23df1263 bne t5,t4,800005c4 + +800003a4 : +800003a4: 00000213 li tp,0 +800003a8: 00f00093 li ra,15 +800003ac: 00d00113 li sp,13 +800003b0: 00000013 nop +800003b4: 00000013 nop +800003b8: 0020bf33 sltu t5,ra,sp +800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c0: 00200293 li t0,2 +800003c4: fe5212e3 bne tp,t0,800003a8 +800003c8: 00000e93 li t4,0 +800003cc: 01900193 li gp,25 +800003d0: 1fdf1a63 bne t5,t4,800005c4 + +800003d4 : +800003d4: 00000213 li tp,0 +800003d8: 00a00093 li ra,10 +800003dc: 00000013 nop +800003e0: 00d00113 li sp,13 +800003e4: 0020bf33 sltu t5,ra,sp +800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003ec: 00200293 li t0,2 +800003f0: fe5214e3 bne tp,t0,800003d8 +800003f4: 00100e93 li t4,1 +800003f8: 01a00193 li gp,26 +800003fc: 1ddf1463 bne t5,t4,800005c4 + +80000400 : +80000400: 00000213 li tp,0 +80000404: 01000093 li ra,16 +80000408: 00000013 nop +8000040c: 00d00113 li sp,13 +80000410: 00000013 nop +80000414: 0020bf33 sltu t5,ra,sp +80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000041c: 00200293 li t0,2 +80000420: fe5212e3 bne tp,t0,80000404 +80000424: 00000e93 li t4,0 +80000428: 01b00193 li gp,27 +8000042c: 19df1c63 bne t5,t4,800005c4 + +80000430 : +80000430: 00000213 li tp,0 +80000434: 00900093 li ra,9 +80000438: 00000013 nop +8000043c: 00000013 nop +80000440: 00d00113 li sp,13 +80000444: 0020bf33 sltu t5,ra,sp +80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000044c: 00200293 li t0,2 +80000450: fe5212e3 bne tp,t0,80000434 +80000454: 00100e93 li t4,1 +80000458: 01c00193 li gp,28 +8000045c: 17df1463 bne t5,t4,800005c4 + +80000460 : +80000460: 00000213 li tp,0 +80000464: 00d00113 li sp,13 +80000468: 01100093 li ra,17 +8000046c: 0020bf33 sltu t5,ra,sp +80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000474: 00200293 li t0,2 +80000478: fe5216e3 bne tp,t0,80000464 +8000047c: 00000e93 li t4,0 +80000480: 01d00193 li gp,29 +80000484: 15df1063 bne t5,t4,800005c4 + +80000488 : +80000488: 00000213 li tp,0 +8000048c: 00d00113 li sp,13 +80000490: 00800093 li ra,8 +80000494: 00000013 nop +80000498: 0020bf33 sltu t5,ra,sp +8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004a0: 00200293 li t0,2 +800004a4: fe5214e3 bne tp,t0,8000048c +800004a8: 00100e93 li t4,1 +800004ac: 01e00193 li gp,30 +800004b0: 11df1a63 bne t5,t4,800005c4 + +800004b4 : +800004b4: 00000213 li tp,0 +800004b8: 00d00113 li sp,13 +800004bc: 01200093 li ra,18 +800004c0: 00000013 nop +800004c4: 00000013 nop +800004c8: 0020bf33 sltu t5,ra,sp +800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004d0: 00200293 li t0,2 +800004d4: fe5212e3 bne tp,t0,800004b8 +800004d8: 00000e93 li t4,0 +800004dc: 01f00193 li gp,31 +800004e0: 0fdf1263 bne t5,t4,800005c4 + +800004e4 : +800004e4: 00000213 li tp,0 +800004e8: 00d00113 li sp,13 +800004ec: 00000013 nop +800004f0: 00700093 li ra,7 +800004f4: 0020bf33 sltu t5,ra,sp +800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004fc: 00200293 li t0,2 +80000500: fe5214e3 bne tp,t0,800004e8 +80000504: 00100e93 li t4,1 +80000508: 02000193 li gp,32 +8000050c: 0bdf1c63 bne t5,t4,800005c4 + +80000510 : +80000510: 00000213 li tp,0 +80000514: 00d00113 li sp,13 +80000518: 00000013 nop +8000051c: 01300093 li ra,19 +80000520: 00000013 nop +80000524: 0020bf33 sltu t5,ra,sp +80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000052c: 00200293 li t0,2 +80000530: fe5212e3 bne tp,t0,80000514 +80000534: 00000e93 li t4,0 +80000538: 02100193 li gp,33 +8000053c: 09df1463 bne t5,t4,800005c4 + +80000540 : +80000540: 00000213 li tp,0 +80000544: 00d00113 li sp,13 +80000548: 00000013 nop +8000054c: 00000013 nop +80000550: 00600093 li ra,6 +80000554: 0020bf33 sltu t5,ra,sp +80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000055c: 00200293 li t0,2 +80000560: fe5212e3 bne tp,t0,80000544 +80000564: 00100e93 li t4,1 +80000568: 02200193 li gp,34 +8000056c: 05df1c63 bne t5,t4,800005c4 + +80000570 : +80000570: fff00093 li ra,-1 +80000574: 00103133 snez sp,ra +80000578: 00100e93 li t4,1 +8000057c: 02300193 li gp,35 +80000580: 05d11263 bne sp,t4,800005c4 + +80000584 : +80000584: fff00093 li ra,-1 +80000588: 0000b133 sltu sp,ra,zero +8000058c: 00000e93 li t4,0 +80000590: 02400193 li gp,36 +80000594: 03d11863 bne sp,t4,800005c4 + +80000598 : +80000598: 000030b3 snez ra,zero +8000059c: 00000e93 li t4,0 +800005a0: 02500193 li gp,37 +800005a4: 03d09063 bne ra,t4,800005c4 + +800005a8 : +800005a8: 01000093 li ra,16 +800005ac: 01e00113 li sp,30 +800005b0: 0020b033 sltu zero,ra,sp +800005b4: 00000e93 li t4,0 +800005b8: 02600193 li gp,38 +800005bc: 01d01463 bne zero,t4,800005c4 +800005c0: 00301c63 bne zero,gp,800005d8 + +800005c4 : +800005c4: 0ff0000f fence +800005c8: 00018063 beqz gp,800005c8 +800005cc: 00119193 slli gp,gp,0x1 +800005d0: 0011e193 ori gp,gp,1 +800005d4: 00000073 ecall + +800005d8 : +800005d8: 0ff0000f fence +800005dc: 00100193 li gp,1 +800005e0: 00000073 ecall +800005e4: c0001073 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32ui-p-sra b/Tests/isa/rv32ui-p-sra new file mode 100644 index 0000000..c6bc1bc Binary files /dev/null and b/Tests/isa/rv32ui-p-sra differ diff --git a/Tests/isa/rv32ui-p-sra.dump b/Tests/isa/rv32ui-p-sra.dump new file mode 100644 index 0000000..60535a4 --- /dev/null +++ b/Tests/isa/rv32ui-p-sra.dump @@ -0,0 +1,538 @@ + +rv32ui-p-sra: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 800000b7 lui ra,0x80000 +80000100: 00000113 li sp,0 +80000104: 4020df33 sra t5,ra,sp +80000108: 80000eb7 lui t4,0x80000 +8000010c: 00200193 li gp,2 +80000110: 59df1463 bne t5,t4,80000698 + +80000114 : +80000114: 800000b7 lui ra,0x80000 +80000118: 00100113 li sp,1 +8000011c: 4020df33 sra t5,ra,sp +80000120: c0000eb7 lui t4,0xc0000 +80000124: 00300193 li gp,3 +80000128: 57df1863 bne t5,t4,80000698 + +8000012c : +8000012c: 800000b7 lui ra,0x80000 +80000130: 00700113 li sp,7 +80000134: 4020df33 sra t5,ra,sp +80000138: ff000eb7 lui t4,0xff000 +8000013c: 00400193 li gp,4 +80000140: 55df1c63 bne t5,t4,80000698 + +80000144 : +80000144: 800000b7 lui ra,0x80000 +80000148: 00e00113 li sp,14 +8000014c: 4020df33 sra t5,ra,sp +80000150: fffe0eb7 lui t4,0xfffe0 +80000154: 00500193 li gp,5 +80000158: 55df1063 bne t5,t4,80000698 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +80000164: 01f00113 li sp,31 +80000168: 4020df33 sra t5,ra,sp +8000016c: fff00e93 li t4,-1 +80000170: 00600193 li gp,6 +80000174: 53df1263 bne t5,t4,80000698 + +80000178 : +80000178: 800000b7 lui ra,0x80000 +8000017c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000180: 00000113 li sp,0 +80000184: 4020df33 sra t5,ra,sp +80000188: 80000eb7 lui t4,0x80000 +8000018c: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> +80000190: 00700193 li gp,7 +80000194: 51df1263 bne t5,t4,80000698 + +80000198 : +80000198: 800000b7 lui ra,0x80000 +8000019c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001a0: 00100113 li sp,1 +800001a4: 4020df33 sra t5,ra,sp +800001a8: 40000eb7 lui t4,0x40000 +800001ac: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001> +800001b0: 00800193 li gp,8 +800001b4: 4fdf1263 bne t5,t4,80000698 + +800001b8 : +800001b8: 800000b7 lui ra,0x80000 +800001bc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001c0: 00700113 li sp,7 +800001c4: 4020df33 sra t5,ra,sp +800001c8: 01000eb7 lui t4,0x1000 +800001cc: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001> +800001d0: 00900193 li gp,9 +800001d4: 4ddf1263 bne t5,t4,80000698 + +800001d8 : +800001d8: 800000b7 lui ra,0x80000 +800001dc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001e0: 00e00113 li sp,14 +800001e4: 4020df33 sra t5,ra,sp +800001e8: 00020eb7 lui t4,0x20 +800001ec: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001> +800001f0: 00a00193 li gp,10 +800001f4: 4bdf1263 bne t5,t4,80000698 + +800001f8 : +800001f8: 800000b7 lui ra,0x80000 +800001fc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000200: 01f00113 li sp,31 +80000204: 4020df33 sra t5,ra,sp +80000208: 00000e93 li t4,0 +8000020c: 00b00193 li gp,11 +80000210: 49df1463 bne t5,t4,80000698 + +80000214 : +80000214: 818180b7 lui ra,0x81818 +80000218: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +8000021c: 00000113 li sp,0 +80000220: 4020df33 sra t5,ra,sp +80000224: 81818eb7 lui t4,0x81818 +80000228: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181> +8000022c: 00c00193 li gp,12 +80000230: 47df1463 bne t5,t4,80000698 + +80000234 : +80000234: 818180b7 lui ra,0x81818 +80000238: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +8000023c: 00100113 li sp,1 +80000240: 4020df33 sra t5,ra,sp +80000244: c0c0ceb7 lui t4,0xc0c0c +80000248: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0> +8000024c: 00d00193 li gp,13 +80000250: 45df1463 bne t5,t4,80000698 + +80000254 : +80000254: 818180b7 lui ra,0x81818 +80000258: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +8000025c: 00700113 li sp,7 +80000260: 4020df33 sra t5,ra,sp +80000264: ff030eb7 lui t4,0xff030 +80000268: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303> +8000026c: 00e00193 li gp,14 +80000270: 43df1463 bne t5,t4,80000698 + +80000274 : +80000274: 818180b7 lui ra,0x81818 +80000278: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +8000027c: 00e00113 li sp,14 +80000280: 4020df33 sra t5,ra,sp +80000284: fffe0eb7 lui t4,0xfffe0 +80000288: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606> +8000028c: 00f00193 li gp,15 +80000290: 41df1463 bne t5,t4,80000698 + +80000294 : +80000294: 818180b7 lui ra,0x81818 +80000298: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +8000029c: 01f00113 li sp,31 +800002a0: 4020df33 sra t5,ra,sp +800002a4: fff00e93 li t4,-1 +800002a8: 01000193 li gp,16 +800002ac: 3fdf1663 bne t5,t4,80000698 + +800002b0 : +800002b0: 818180b7 lui ra,0x81818 +800002b4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +800002b8: fc000113 li sp,-64 +800002bc: 4020df33 sra t5,ra,sp +800002c0: 81818eb7 lui t4,0x81818 +800002c4: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181> +800002c8: 01100193 li gp,17 +800002cc: 3ddf1663 bne t5,t4,80000698 + +800002d0 : +800002d0: 818180b7 lui ra,0x81818 +800002d4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +800002d8: fc100113 li sp,-63 +800002dc: 4020df33 sra t5,ra,sp +800002e0: c0c0ceb7 lui t4,0xc0c0c +800002e4: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0> +800002e8: 01200193 li gp,18 +800002ec: 3bdf1663 bne t5,t4,80000698 + +800002f0 : +800002f0: 818180b7 lui ra,0x81818 +800002f4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +800002f8: fc700113 li sp,-57 +800002fc: 4020df33 sra t5,ra,sp +80000300: ff030eb7 lui t4,0xff030 +80000304: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303> +80000308: 01300193 li gp,19 +8000030c: 39df1663 bne t5,t4,80000698 + +80000310 : +80000310: 818180b7 lui ra,0x81818 +80000314: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +80000318: fce00113 li sp,-50 +8000031c: 4020df33 sra t5,ra,sp +80000320: fffe0eb7 lui t4,0xfffe0 +80000324: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606> +80000328: 01400193 li gp,20 +8000032c: 37df1663 bne t5,t4,80000698 + +80000330 : +80000330: 818180b7 lui ra,0x81818 +80000334: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +80000338: fff00113 li sp,-1 +8000033c: 4020df33 sra t5,ra,sp +80000340: fff00e93 li t4,-1 +80000344: 01500193 li gp,21 +80000348: 35df1863 bne t5,t4,80000698 + +8000034c : +8000034c: 800000b7 lui ra,0x80000 +80000350: 00700113 li sp,7 +80000354: 4020d0b3 sra ra,ra,sp +80000358: ff000eb7 lui t4,0xff000 +8000035c: 01600193 li gp,22 +80000360: 33d09c63 bne ra,t4,80000698 + +80000364 : +80000364: 800000b7 lui ra,0x80000 +80000368: 00e00113 li sp,14 +8000036c: 4020d133 sra sp,ra,sp +80000370: fffe0eb7 lui t4,0xfffe0 +80000374: 01700193 li gp,23 +80000378: 33d11063 bne sp,t4,80000698 + +8000037c : +8000037c: 00700093 li ra,7 +80000380: 4010d0b3 sra ra,ra,ra +80000384: 00000e93 li t4,0 +80000388: 01800193 li gp,24 +8000038c: 31d09663 bne ra,t4,80000698 + +80000390 : +80000390: 00000213 li tp,0 +80000394: 800000b7 lui ra,0x80000 +80000398: 00700113 li sp,7 +8000039c: 4020df33 sra t5,ra,sp +800003a0: 000f0313 mv t1,t5 +800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003a8: 00200293 li t0,2 +800003ac: fe5214e3 bne tp,t0,80000394 +800003b0: ff000eb7 lui t4,0xff000 +800003b4: 01900193 li gp,25 +800003b8: 2fd31063 bne t1,t4,80000698 + +800003bc : +800003bc: 00000213 li tp,0 +800003c0: 800000b7 lui ra,0x80000 +800003c4: 00e00113 li sp,14 +800003c8: 4020df33 sra t5,ra,sp +800003cc: 00000013 nop +800003d0: 000f0313 mv t1,t5 +800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003d8: 00200293 li t0,2 +800003dc: fe5212e3 bne tp,t0,800003c0 +800003e0: fffe0eb7 lui t4,0xfffe0 +800003e4: 01a00193 li gp,26 +800003e8: 2bd31863 bne t1,t4,80000698 + +800003ec : +800003ec: 00000213 li tp,0 +800003f0: 800000b7 lui ra,0x80000 +800003f4: 01f00113 li sp,31 +800003f8: 4020df33 sra t5,ra,sp +800003fc: 00000013 nop +80000400: 00000013 nop +80000404: 000f0313 mv t1,t5 +80000408: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000040c: 00200293 li t0,2 +80000410: fe5210e3 bne tp,t0,800003f0 +80000414: fff00e93 li t4,-1 +80000418: 01b00193 li gp,27 +8000041c: 27d31e63 bne t1,t4,80000698 + +80000420 : +80000420: 00000213 li tp,0 +80000424: 800000b7 lui ra,0x80000 +80000428: 00700113 li sp,7 +8000042c: 4020df33 sra t5,ra,sp +80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000434: 00200293 li t0,2 +80000438: fe5216e3 bne tp,t0,80000424 +8000043c: ff000eb7 lui t4,0xff000 +80000440: 01c00193 li gp,28 +80000444: 25df1a63 bne t5,t4,80000698 + +80000448 : +80000448: 00000213 li tp,0 +8000044c: 800000b7 lui ra,0x80000 +80000450: 00e00113 li sp,14 +80000454: 00000013 nop +80000458: 4020df33 sra t5,ra,sp +8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000460: 00200293 li t0,2 +80000464: fe5214e3 bne tp,t0,8000044c +80000468: fffe0eb7 lui t4,0xfffe0 +8000046c: 01d00193 li gp,29 +80000470: 23df1463 bne t5,t4,80000698 + +80000474 : +80000474: 00000213 li tp,0 +80000478: 800000b7 lui ra,0x80000 +8000047c: 01f00113 li sp,31 +80000480: 00000013 nop +80000484: 00000013 nop +80000488: 4020df33 sra t5,ra,sp +8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000490: 00200293 li t0,2 +80000494: fe5212e3 bne tp,t0,80000478 +80000498: fff00e93 li t4,-1 +8000049c: 01e00193 li gp,30 +800004a0: 1fdf1c63 bne t5,t4,80000698 + +800004a4 : +800004a4: 00000213 li tp,0 +800004a8: 800000b7 lui ra,0x80000 +800004ac: 00000013 nop +800004b0: 00700113 li sp,7 +800004b4: 4020df33 sra t5,ra,sp +800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004bc: 00200293 li t0,2 +800004c0: fe5214e3 bne tp,t0,800004a8 +800004c4: ff000eb7 lui t4,0xff000 +800004c8: 01f00193 li gp,31 +800004cc: 1ddf1663 bne t5,t4,80000698 + +800004d0 : +800004d0: 00000213 li tp,0 +800004d4: 800000b7 lui ra,0x80000 +800004d8: 00000013 nop +800004dc: 00e00113 li sp,14 +800004e0: 00000013 nop +800004e4: 4020df33 sra t5,ra,sp +800004e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004ec: 00200293 li t0,2 +800004f0: fe5212e3 bne tp,t0,800004d4 +800004f4: fffe0eb7 lui t4,0xfffe0 +800004f8: 02000193 li gp,32 +800004fc: 19df1e63 bne t5,t4,80000698 + +80000500 : +80000500: 00000213 li tp,0 +80000504: 800000b7 lui ra,0x80000 +80000508: 00000013 nop +8000050c: 00000013 nop +80000510: 01f00113 li sp,31 +80000514: 4020df33 sra t5,ra,sp +80000518: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000051c: 00200293 li t0,2 +80000520: fe5212e3 bne tp,t0,80000504 +80000524: fff00e93 li t4,-1 +80000528: 02100193 li gp,33 +8000052c: 17df1663 bne t5,t4,80000698 + +80000530 : +80000530: 00000213 li tp,0 +80000534: 00700113 li sp,7 +80000538: 800000b7 lui ra,0x80000 +8000053c: 4020df33 sra t5,ra,sp +80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000544: 00200293 li t0,2 +80000548: fe5216e3 bne tp,t0,80000534 +8000054c: ff000eb7 lui t4,0xff000 +80000550: 02200193 li gp,34 +80000554: 15df1263 bne t5,t4,80000698 + +80000558 : +80000558: 00000213 li tp,0 +8000055c: 00e00113 li sp,14 +80000560: 800000b7 lui ra,0x80000 +80000564: 00000013 nop +80000568: 4020df33 sra t5,ra,sp +8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000570: 00200293 li t0,2 +80000574: fe5214e3 bne tp,t0,8000055c +80000578: fffe0eb7 lui t4,0xfffe0 +8000057c: 02300193 li gp,35 +80000580: 11df1c63 bne t5,t4,80000698 + +80000584 : +80000584: 00000213 li tp,0 +80000588: 01f00113 li sp,31 +8000058c: 800000b7 lui ra,0x80000 +80000590: 00000013 nop +80000594: 00000013 nop +80000598: 4020df33 sra t5,ra,sp +8000059c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800005a0: 00200293 li t0,2 +800005a4: fe5212e3 bne tp,t0,80000588 +800005a8: fff00e93 li t4,-1 +800005ac: 02400193 li gp,36 +800005b0: 0fdf1463 bne t5,t4,80000698 + +800005b4 : +800005b4: 00000213 li tp,0 +800005b8: 00700113 li sp,7 +800005bc: 00000013 nop +800005c0: 800000b7 lui ra,0x80000 +800005c4: 4020df33 sra t5,ra,sp +800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800005cc: 00200293 li t0,2 +800005d0: fe5214e3 bne tp,t0,800005b8 +800005d4: ff000eb7 lui t4,0xff000 +800005d8: 02500193 li gp,37 +800005dc: 0bdf1e63 bne t5,t4,80000698 + +800005e0 : +800005e0: 00000213 li tp,0 +800005e4: 00e00113 li sp,14 +800005e8: 00000013 nop +800005ec: 800000b7 lui ra,0x80000 +800005f0: 00000013 nop +800005f4: 4020df33 sra t5,ra,sp +800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800005fc: 00200293 li t0,2 +80000600: fe5212e3 bne tp,t0,800005e4 +80000604: fffe0eb7 lui t4,0xfffe0 +80000608: 02600193 li gp,38 +8000060c: 09df1663 bne t5,t4,80000698 + +80000610 : +80000610: 00000213 li tp,0 +80000614: 01f00113 li sp,31 +80000618: 00000013 nop +8000061c: 00000013 nop +80000620: 800000b7 lui ra,0x80000 +80000624: 4020df33 sra t5,ra,sp +80000628: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000062c: 00200293 li t0,2 +80000630: fe5212e3 bne tp,t0,80000614 +80000634: fff00e93 li t4,-1 +80000638: 02700193 li gp,39 +8000063c: 05df1e63 bne t5,t4,80000698 + +80000640 : +80000640: 00f00093 li ra,15 +80000644: 40105133 sra sp,zero,ra +80000648: 00000e93 li t4,0 +8000064c: 02800193 li gp,40 +80000650: 05d11463 bne sp,t4,80000698 + +80000654 : +80000654: 02000093 li ra,32 +80000658: 4000d133 sra sp,ra,zero +8000065c: 02000e93 li t4,32 +80000660: 02900193 li gp,41 +80000664: 03d11a63 bne sp,t4,80000698 + +80000668 : +80000668: 400050b3 sra ra,zero,zero +8000066c: 00000e93 li t4,0 +80000670: 02a00193 li gp,42 +80000674: 03d09263 bne ra,t4,80000698 + +80000678 : +80000678: 40000093 li ra,1024 +8000067c: 00001137 lui sp,0x1 +80000680: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> +80000684: 4020d033 sra zero,ra,sp +80000688: 00000e93 li t4,0 +8000068c: 02b00193 li gp,43 +80000690: 01d01463 bne zero,t4,80000698 +80000694: 00301c63 bne zero,gp,800006ac + +80000698 : +80000698: 0ff0000f fence +8000069c: 00018063 beqz gp,8000069c +800006a0: 00119193 slli gp,gp,0x1 +800006a4: 0011e193 ori gp,gp,1 +800006a8: 00000073 ecall + +800006ac : +800006ac: 0ff0000f fence +800006b0: 00100193 li gp,1 +800006b4: 00000073 ecall +800006b8: c0001073 unimp +800006bc: 0000 unimp +800006be: 0000 unimp +800006c0: 0000 unimp +800006c2: 0000 unimp diff --git a/Tests/isa/rv32ui-p-srai b/Tests/isa/rv32ui-p-srai new file mode 100644 index 0000000..21c6491 Binary files /dev/null and b/Tests/isa/rv32ui-p-srai differ diff --git a/Tests/isa/rv32ui-p-srai.dump b/Tests/isa/rv32ui-p-srai.dump new file mode 100644 index 0000000..8ed40d7 --- /dev/null +++ b/Tests/isa/rv32ui-p-srai.dump @@ -0,0 +1,335 @@ + +rv32ui-p-srai: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 4000df13 srai t5,ra,0x0 +80000104: 00000e93 li t4,0 +80000108: 00200193 li gp,2 +8000010c: 2bdf1463 bne t5,t4,800003b4 + +80000110 : +80000110: 800000b7 lui ra,0x80000 +80000114: 4010df13 srai t5,ra,0x1 +80000118: c0000eb7 lui t4,0xc0000 +8000011c: 00300193 li gp,3 +80000120: 29df1a63 bne t5,t4,800003b4 + +80000124 : +80000124: 800000b7 lui ra,0x80000 +80000128: 4070df13 srai t5,ra,0x7 +8000012c: ff000eb7 lui t4,0xff000 +80000130: 00400193 li gp,4 +80000134: 29df1063 bne t5,t4,800003b4 + +80000138 : +80000138: 800000b7 lui ra,0x80000 +8000013c: 40e0df13 srai t5,ra,0xe +80000140: fffe0eb7 lui t4,0xfffe0 +80000144: 00500193 li gp,5 +80000148: 27df1663 bne t5,t4,800003b4 + +8000014c : +8000014c: 800000b7 lui ra,0x80000 +80000150: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +80000154: 41f0df13 srai t5,ra,0x1f +80000158: fff00e93 li t4,-1 +8000015c: 00600193 li gp,6 +80000160: 25df1a63 bne t5,t4,800003b4 + +80000164 : +80000164: 800000b7 lui ra,0x80000 +80000168: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +8000016c: 4000df13 srai t5,ra,0x0 +80000170: 80000eb7 lui t4,0x80000 +80000174: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> +80000178: 00700193 li gp,7 +8000017c: 23df1c63 bne t5,t4,800003b4 + +80000180 : +80000180: 800000b7 lui ra,0x80000 +80000184: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000188: 4010df13 srai t5,ra,0x1 +8000018c: 40000eb7 lui t4,0x40000 +80000190: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001> +80000194: 00800193 li gp,8 +80000198: 21df1e63 bne t5,t4,800003b4 + +8000019c : +8000019c: 800000b7 lui ra,0x80000 +800001a0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001a4: 4070df13 srai t5,ra,0x7 +800001a8: 01000eb7 lui t4,0x1000 +800001ac: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001> +800001b0: 00900193 li gp,9 +800001b4: 21df1063 bne t5,t4,800003b4 + +800001b8 : +800001b8: 800000b7 lui ra,0x80000 +800001bc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001c0: 40e0df13 srai t5,ra,0xe +800001c4: 00020eb7 lui t4,0x20 +800001c8: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001> +800001cc: 00a00193 li gp,10 +800001d0: 1fdf1263 bne t5,t4,800003b4 + +800001d4 : +800001d4: 800000b7 lui ra,0x80000 +800001d8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001dc: 41f0df13 srai t5,ra,0x1f +800001e0: 00000e93 li t4,0 +800001e4: 00b00193 li gp,11 +800001e8: 1ddf1663 bne t5,t4,800003b4 + +800001ec : +800001ec: 818180b7 lui ra,0x81818 +800001f0: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +800001f4: 4000df13 srai t5,ra,0x0 +800001f8: 81818eb7 lui t4,0x81818 +800001fc: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181> +80000200: 00c00193 li gp,12 +80000204: 1bdf1863 bne t5,t4,800003b4 + +80000208 : +80000208: 818180b7 lui ra,0x81818 +8000020c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +80000210: 4010df13 srai t5,ra,0x1 +80000214: c0c0ceb7 lui t4,0xc0c0c +80000218: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0> +8000021c: 00d00193 li gp,13 +80000220: 19df1a63 bne t5,t4,800003b4 + +80000224 : +80000224: 818180b7 lui ra,0x81818 +80000228: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +8000022c: 4070df13 srai t5,ra,0x7 +80000230: ff030eb7 lui t4,0xff030 +80000234: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303> +80000238: 00e00193 li gp,14 +8000023c: 17df1c63 bne t5,t4,800003b4 + +80000240 : +80000240: 818180b7 lui ra,0x81818 +80000244: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +80000248: 40e0df13 srai t5,ra,0xe +8000024c: fffe0eb7 lui t4,0xfffe0 +80000250: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606> +80000254: 00f00193 li gp,15 +80000258: 15df1e63 bne t5,t4,800003b4 + +8000025c : +8000025c: 818180b7 lui ra,0x81818 +80000260: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181> +80000264: 41f0df13 srai t5,ra,0x1f +80000268: fff00e93 li t4,-1 +8000026c: 01000193 li gp,16 +80000270: 15df1263 bne t5,t4,800003b4 + +80000274 : +80000274: 800000b7 lui ra,0x80000 +80000278: 4070d093 srai ra,ra,0x7 +8000027c: ff000eb7 lui t4,0xff000 +80000280: 01100193 li gp,17 +80000284: 13d09863 bne ra,t4,800003b4 + +80000288 : +80000288: 00000213 li tp,0 +8000028c: 800000b7 lui ra,0x80000 +80000290: 4070df13 srai t5,ra,0x7 +80000294: 000f0313 mv t1,t5 +80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000029c: 00200293 li t0,2 +800002a0: fe5216e3 bne tp,t0,8000028c +800002a4: ff000eb7 lui t4,0xff000 +800002a8: 01200193 li gp,18 +800002ac: 11d31463 bne t1,t4,800003b4 + +800002b0 : +800002b0: 00000213 li tp,0 +800002b4: 800000b7 lui ra,0x80000 +800002b8: 40e0df13 srai t5,ra,0xe +800002bc: 00000013 nop +800002c0: 000f0313 mv t1,t5 +800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002c8: 00200293 li t0,2 +800002cc: fe5214e3 bne tp,t0,800002b4 +800002d0: fffe0eb7 lui t4,0xfffe0 +800002d4: 01300193 li gp,19 +800002d8: 0dd31e63 bne t1,t4,800003b4 + +800002dc : +800002dc: 00000213 li tp,0 +800002e0: 800000b7 lui ra,0x80000 +800002e4: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +800002e8: 41f0df13 srai t5,ra,0x1f +800002ec: 00000013 nop +800002f0: 00000013 nop +800002f4: 000f0313 mv t1,t5 +800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002fc: 00200293 li t0,2 +80000300: fe5210e3 bne tp,t0,800002e0 +80000304: fff00e93 li t4,-1 +80000308: 01400193 li gp,20 +8000030c: 0bd31463 bne t1,t4,800003b4 + +80000310 : +80000310: 00000213 li tp,0 +80000314: 800000b7 lui ra,0x80000 +80000318: 4070df13 srai t5,ra,0x7 +8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000320: 00200293 li t0,2 +80000324: fe5218e3 bne tp,t0,80000314 +80000328: ff000eb7 lui t4,0xff000 +8000032c: 01500193 li gp,21 +80000330: 09df1263 bne t5,t4,800003b4 + +80000334 : +80000334: 00000213 li tp,0 +80000338: 800000b7 lui ra,0x80000 +8000033c: 00000013 nop +80000340: 40e0df13 srai t5,ra,0xe +80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000348: 00200293 li t0,2 +8000034c: fe5216e3 bne tp,t0,80000338 +80000350: fffe0eb7 lui t4,0xfffe0 +80000354: 01600193 li gp,22 +80000358: 05df1e63 bne t5,t4,800003b4 + +8000035c : +8000035c: 00000213 li tp,0 +80000360: 800000b7 lui ra,0x80000 +80000364: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +80000368: 00000013 nop +8000036c: 00000013 nop +80000370: 41f0df13 srai t5,ra,0x1f +80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000378: 00200293 li t0,2 +8000037c: fe5212e3 bne tp,t0,80000360 +80000380: fff00e93 li t4,-1 +80000384: 01700193 li gp,23 +80000388: 03df1663 bne t5,t4,800003b4 + +8000038c : +8000038c: 40405093 srai ra,zero,0x4 +80000390: 00000e93 li t4,0 +80000394: 01800193 li gp,24 +80000398: 01d09e63 bne ra,t4,800003b4 + +8000039c : +8000039c: 02100093 li ra,33 +800003a0: 40a0d013 srai zero,ra,0xa +800003a4: 00000e93 li t4,0 +800003a8: 01900193 li gp,25 +800003ac: 01d01463 bne zero,t4,800003b4 +800003b0: 00301c63 bne zero,gp,800003c8 + +800003b4 : +800003b4: 0ff0000f fence +800003b8: 00018063 beqz gp,800003b8 +800003bc: 00119193 slli gp,gp,0x1 +800003c0: 0011e193 ori gp,gp,1 +800003c4: 00000073 ecall + +800003c8 : +800003c8: 0ff0000f fence +800003cc: 00100193 li gp,1 +800003d0: 00000073 ecall +800003d4: c0001073 unimp +800003d8: 0000 unimp +800003da: 0000 unimp +800003dc: 0000 unimp +800003de: 0000 unimp +800003e0: 0000 unimp +800003e2: 0000 unimp +800003e4: 0000 unimp +800003e6: 0000 unimp +800003e8: 0000 unimp +800003ea: 0000 unimp +800003ec: 0000 unimp +800003ee: 0000 unimp +800003f0: 0000 unimp +800003f2: 0000 unimp +800003f4: 0000 unimp +800003f6: 0000 unimp +800003f8: 0000 unimp +800003fa: 0000 unimp +800003fc: 0000 unimp +800003fe: 0000 unimp +80000400: 0000 unimp +80000402: 0000 unimp diff --git a/Tests/isa/rv32ui-p-srl b/Tests/isa/rv32ui-p-srl new file mode 100644 index 0000000..822883a Binary files /dev/null and b/Tests/isa/rv32ui-p-srl differ diff --git a/Tests/isa/rv32ui-p-srl.dump b/Tests/isa/rv32ui-p-srl.dump new file mode 100644 index 0000000..25f9240 --- /dev/null +++ b/Tests/isa/rv32ui-p-srl.dump @@ -0,0 +1,544 @@ + +rv32ui-p-srl: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 800000b7 lui ra,0x80000 +80000100: 00000113 li sp,0 +80000104: 0020df33 srl t5,ra,sp +80000108: 80000eb7 lui t4,0x80000 +8000010c: 00200193 li gp,2 +80000110: 57df1863 bne t5,t4,80000680 + +80000114 : +80000114: 800000b7 lui ra,0x80000 +80000118: 00100113 li sp,1 +8000011c: 0020df33 srl t5,ra,sp +80000120: 40000eb7 lui t4,0x40000 +80000124: 00300193 li gp,3 +80000128: 55df1c63 bne t5,t4,80000680 + +8000012c : +8000012c: 800000b7 lui ra,0x80000 +80000130: 00700113 li sp,7 +80000134: 0020df33 srl t5,ra,sp +80000138: 01000eb7 lui t4,0x1000 +8000013c: 00400193 li gp,4 +80000140: 55df1063 bne t5,t4,80000680 + +80000144 : +80000144: 800000b7 lui ra,0x80000 +80000148: 00e00113 li sp,14 +8000014c: 0020df33 srl t5,ra,sp +80000150: 00020eb7 lui t4,0x20 +80000154: 00500193 li gp,5 +80000158: 53df1463 bne t5,t4,80000680 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +80000164: 01f00113 li sp,31 +80000168: 0020df33 srl t5,ra,sp +8000016c: 00100e93 li t4,1 +80000170: 00600193 li gp,6 +80000174: 51df1663 bne t5,t4,80000680 + +80000178 : +80000178: fff00093 li ra,-1 +8000017c: 00000113 li sp,0 +80000180: 0020df33 srl t5,ra,sp +80000184: fff00e93 li t4,-1 +80000188: 00700193 li gp,7 +8000018c: 4fdf1a63 bne t5,t4,80000680 + +80000190 : +80000190: fff00093 li ra,-1 +80000194: 00100113 li sp,1 +80000198: 0020df33 srl t5,ra,sp +8000019c: 80000eb7 lui t4,0x80000 +800001a0: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> +800001a4: 00800193 li gp,8 +800001a8: 4ddf1c63 bne t5,t4,80000680 + +800001ac : +800001ac: fff00093 li ra,-1 +800001b0: 00700113 li sp,7 +800001b4: 0020df33 srl t5,ra,sp +800001b8: 02000eb7 lui t4,0x2000 +800001bc: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001> +800001c0: 00900193 li gp,9 +800001c4: 4bdf1e63 bne t5,t4,80000680 + +800001c8 : +800001c8: fff00093 li ra,-1 +800001cc: 00e00113 li sp,14 +800001d0: 0020df33 srl t5,ra,sp +800001d4: 00040eb7 lui t4,0x40 +800001d8: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001> +800001dc: 00a00193 li gp,10 +800001e0: 4bdf1063 bne t5,t4,80000680 + +800001e4 : +800001e4: fff00093 li ra,-1 +800001e8: 01f00113 li sp,31 +800001ec: 0020df33 srl t5,ra,sp +800001f0: 00100e93 li t4,1 +800001f4: 00b00193 li gp,11 +800001f8: 49df1463 bne t5,t4,80000680 + +800001fc : +800001fc: 212120b7 lui ra,0x21212 +80000200: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000204: 00000113 li sp,0 +80000208: 0020df33 srl t5,ra,sp +8000020c: 21212eb7 lui t4,0x21212 +80000210: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80000214: 00c00193 li gp,12 +80000218: 47df1463 bne t5,t4,80000680 + +8000021c : +8000021c: 212120b7 lui ra,0x21212 +80000220: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000224: 00100113 li sp,1 +80000228: 0020df33 srl t5,ra,sp +8000022c: 10909eb7 lui t4,0x10909 +80000230: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> +80000234: 00d00193 li gp,13 +80000238: 45df1463 bne t5,t4,80000680 + +8000023c : +8000023c: 212120b7 lui ra,0x21212 +80000240: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000244: 00700113 li sp,7 +80000248: 0020df33 srl t5,ra,sp +8000024c: 00424eb7 lui t4,0x424 +80000250: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> +80000254: 00e00193 li gp,14 +80000258: 43df1463 bne t5,t4,80000680 + +8000025c : +8000025c: 212120b7 lui ra,0x21212 +80000260: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000264: 00e00113 li sp,14 +80000268: 0020df33 srl t5,ra,sp +8000026c: 00008eb7 lui t4,0x8 +80000270: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> +80000274: 00f00193 li gp,15 +80000278: 41df1463 bne t5,t4,80000680 + +8000027c : +8000027c: 212120b7 lui ra,0x21212 +80000280: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000284: 01f00113 li sp,31 +80000288: 0020df33 srl t5,ra,sp +8000028c: 00000e93 li t4,0 +80000290: 01000193 li gp,16 +80000294: 3fdf1663 bne t5,t4,80000680 + +80000298 : +80000298: 212120b7 lui ra,0x21212 +8000029c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800002a0: fc000113 li sp,-64 +800002a4: 0020df33 srl t5,ra,sp +800002a8: 21212eb7 lui t4,0x21212 +800002ac: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +800002b0: 01100193 li gp,17 +800002b4: 3ddf1663 bne t5,t4,80000680 + +800002b8 : +800002b8: 212120b7 lui ra,0x21212 +800002bc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800002c0: fc100113 li sp,-63 +800002c4: 0020df33 srl t5,ra,sp +800002c8: 10909eb7 lui t4,0x10909 +800002cc: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> +800002d0: 01200193 li gp,18 +800002d4: 3bdf1663 bne t5,t4,80000680 + +800002d8 : +800002d8: 212120b7 lui ra,0x21212 +800002dc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800002e0: fc700113 li sp,-57 +800002e4: 0020df33 srl t5,ra,sp +800002e8: 00424eb7 lui t4,0x424 +800002ec: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> +800002f0: 01300193 li gp,19 +800002f4: 39df1663 bne t5,t4,80000680 + +800002f8 : +800002f8: 212120b7 lui ra,0x21212 +800002fc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000300: fce00113 li sp,-50 +80000304: 0020df33 srl t5,ra,sp +80000308: 00008eb7 lui t4,0x8 +8000030c: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> +80000310: 01400193 li gp,20 +80000314: 37df1663 bne t5,t4,80000680 + +80000318 : +80000318: 212120b7 lui ra,0x21212 +8000031c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000320: fff00113 li sp,-1 +80000324: 0020df33 srl t5,ra,sp +80000328: 00000e93 li t4,0 +8000032c: 01500193 li gp,21 +80000330: 35df1863 bne t5,t4,80000680 + +80000334 : +80000334: 800000b7 lui ra,0x80000 +80000338: 00700113 li sp,7 +8000033c: 0020d0b3 srl ra,ra,sp +80000340: 01000eb7 lui t4,0x1000 +80000344: 01600193 li gp,22 +80000348: 33d09c63 bne ra,t4,80000680 + +8000034c : +8000034c: 800000b7 lui ra,0x80000 +80000350: 00e00113 li sp,14 +80000354: 0020d133 srl sp,ra,sp +80000358: 00020eb7 lui t4,0x20 +8000035c: 01700193 li gp,23 +80000360: 33d11063 bne sp,t4,80000680 + +80000364 : +80000364: 00700093 li ra,7 +80000368: 0010d0b3 srl ra,ra,ra +8000036c: 00000e93 li t4,0 +80000370: 01800193 li gp,24 +80000374: 31d09663 bne ra,t4,80000680 + +80000378 : +80000378: 00000213 li tp,0 +8000037c: 800000b7 lui ra,0x80000 +80000380: 00700113 li sp,7 +80000384: 0020df33 srl t5,ra,sp +80000388: 000f0313 mv t1,t5 +8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000390: 00200293 li t0,2 +80000394: fe5214e3 bne tp,t0,8000037c +80000398: 01000eb7 lui t4,0x1000 +8000039c: 01900193 li gp,25 +800003a0: 2fd31063 bne t1,t4,80000680 + +800003a4 : +800003a4: 00000213 li tp,0 +800003a8: 800000b7 lui ra,0x80000 +800003ac: 00e00113 li sp,14 +800003b0: 0020df33 srl t5,ra,sp +800003b4: 00000013 nop +800003b8: 000f0313 mv t1,t5 +800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c0: 00200293 li t0,2 +800003c4: fe5212e3 bne tp,t0,800003a8 +800003c8: 00020eb7 lui t4,0x20 +800003cc: 01a00193 li gp,26 +800003d0: 2bd31863 bne t1,t4,80000680 + +800003d4 : +800003d4: 00000213 li tp,0 +800003d8: 800000b7 lui ra,0x80000 +800003dc: 01f00113 li sp,31 +800003e0: 0020df33 srl t5,ra,sp +800003e4: 00000013 nop +800003e8: 00000013 nop +800003ec: 000f0313 mv t1,t5 +800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003f4: 00200293 li t0,2 +800003f8: fe5210e3 bne tp,t0,800003d8 +800003fc: 00100e93 li t4,1 +80000400: 01b00193 li gp,27 +80000404: 27d31e63 bne t1,t4,80000680 + +80000408 : +80000408: 00000213 li tp,0 +8000040c: 800000b7 lui ra,0x80000 +80000410: 00700113 li sp,7 +80000414: 0020df33 srl t5,ra,sp +80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000041c: 00200293 li t0,2 +80000420: fe5216e3 bne tp,t0,8000040c +80000424: 01000eb7 lui t4,0x1000 +80000428: 01c00193 li gp,28 +8000042c: 25df1a63 bne t5,t4,80000680 + +80000430 : +80000430: 00000213 li tp,0 +80000434: 800000b7 lui ra,0x80000 +80000438: 00e00113 li sp,14 +8000043c: 00000013 nop +80000440: 0020df33 srl t5,ra,sp +80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000448: 00200293 li t0,2 +8000044c: fe5214e3 bne tp,t0,80000434 +80000450: 00020eb7 lui t4,0x20 +80000454: 01d00193 li gp,29 +80000458: 23df1463 bne t5,t4,80000680 + +8000045c : +8000045c: 00000213 li tp,0 +80000460: 800000b7 lui ra,0x80000 +80000464: 01f00113 li sp,31 +80000468: 00000013 nop +8000046c: 00000013 nop +80000470: 0020df33 srl t5,ra,sp +80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000478: 00200293 li t0,2 +8000047c: fe5212e3 bne tp,t0,80000460 +80000480: 00100e93 li t4,1 +80000484: 01e00193 li gp,30 +80000488: 1fdf1c63 bne t5,t4,80000680 + +8000048c : +8000048c: 00000213 li tp,0 +80000490: 800000b7 lui ra,0x80000 +80000494: 00000013 nop +80000498: 00700113 li sp,7 +8000049c: 0020df33 srl t5,ra,sp +800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004a4: 00200293 li t0,2 +800004a8: fe5214e3 bne tp,t0,80000490 +800004ac: 01000eb7 lui t4,0x1000 +800004b0: 01f00193 li gp,31 +800004b4: 1ddf1663 bne t5,t4,80000680 + +800004b8 : +800004b8: 00000213 li tp,0 +800004bc: 800000b7 lui ra,0x80000 +800004c0: 00000013 nop +800004c4: 00e00113 li sp,14 +800004c8: 00000013 nop +800004cc: 0020df33 srl t5,ra,sp +800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004d4: 00200293 li t0,2 +800004d8: fe5212e3 bne tp,t0,800004bc +800004dc: 00020eb7 lui t4,0x20 +800004e0: 02000193 li gp,32 +800004e4: 19df1e63 bne t5,t4,80000680 + +800004e8 : +800004e8: 00000213 li tp,0 +800004ec: 800000b7 lui ra,0x80000 +800004f0: 00000013 nop +800004f4: 00000013 nop +800004f8: 01f00113 li sp,31 +800004fc: 0020df33 srl t5,ra,sp +80000500: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000504: 00200293 li t0,2 +80000508: fe5212e3 bne tp,t0,800004ec +8000050c: 00100e93 li t4,1 +80000510: 02100193 li gp,33 +80000514: 17df1663 bne t5,t4,80000680 + +80000518 : +80000518: 00000213 li tp,0 +8000051c: 00700113 li sp,7 +80000520: 800000b7 lui ra,0x80000 +80000524: 0020df33 srl t5,ra,sp +80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000052c: 00200293 li t0,2 +80000530: fe5216e3 bne tp,t0,8000051c +80000534: 01000eb7 lui t4,0x1000 +80000538: 02200193 li gp,34 +8000053c: 15df1263 bne t5,t4,80000680 + +80000540 : +80000540: 00000213 li tp,0 +80000544: 00e00113 li sp,14 +80000548: 800000b7 lui ra,0x80000 +8000054c: 00000013 nop +80000550: 0020df33 srl t5,ra,sp +80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000558: 00200293 li t0,2 +8000055c: fe5214e3 bne tp,t0,80000544 +80000560: 00020eb7 lui t4,0x20 +80000564: 02300193 li gp,35 +80000568: 11df1c63 bne t5,t4,80000680 + +8000056c : +8000056c: 00000213 li tp,0 +80000570: 01f00113 li sp,31 +80000574: 800000b7 lui ra,0x80000 +80000578: 00000013 nop +8000057c: 00000013 nop +80000580: 0020df33 srl t5,ra,sp +80000584: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000588: 00200293 li t0,2 +8000058c: fe5212e3 bne tp,t0,80000570 +80000590: 00100e93 li t4,1 +80000594: 02400193 li gp,36 +80000598: 0fdf1463 bne t5,t4,80000680 + +8000059c : +8000059c: 00000213 li tp,0 +800005a0: 00700113 li sp,7 +800005a4: 00000013 nop +800005a8: 800000b7 lui ra,0x80000 +800005ac: 0020df33 srl t5,ra,sp +800005b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800005b4: 00200293 li t0,2 +800005b8: fe5214e3 bne tp,t0,800005a0 +800005bc: 01000eb7 lui t4,0x1000 +800005c0: 02500193 li gp,37 +800005c4: 0bdf1e63 bne t5,t4,80000680 + +800005c8 : +800005c8: 00000213 li tp,0 +800005cc: 00e00113 li sp,14 +800005d0: 00000013 nop +800005d4: 800000b7 lui ra,0x80000 +800005d8: 00000013 nop +800005dc: 0020df33 srl t5,ra,sp +800005e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800005e4: 00200293 li t0,2 +800005e8: fe5212e3 bne tp,t0,800005cc +800005ec: 00020eb7 lui t4,0x20 +800005f0: 02600193 li gp,38 +800005f4: 09df1663 bne t5,t4,80000680 + +800005f8 : +800005f8: 00000213 li tp,0 +800005fc: 01f00113 li sp,31 +80000600: 00000013 nop +80000604: 00000013 nop +80000608: 800000b7 lui ra,0x80000 +8000060c: 0020df33 srl t5,ra,sp +80000610: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000614: 00200293 li t0,2 +80000618: fe5212e3 bne tp,t0,800005fc +8000061c: 00100e93 li t4,1 +80000620: 02700193 li gp,39 +80000624: 05df1e63 bne t5,t4,80000680 + +80000628 : +80000628: 00f00093 li ra,15 +8000062c: 00105133 srl sp,zero,ra +80000630: 00000e93 li t4,0 +80000634: 02800193 li gp,40 +80000638: 05d11463 bne sp,t4,80000680 + +8000063c : +8000063c: 02000093 li ra,32 +80000640: 0000d133 srl sp,ra,zero +80000644: 02000e93 li t4,32 +80000648: 02900193 li gp,41 +8000064c: 03d11a63 bne sp,t4,80000680 + +80000650 : +80000650: 000050b3 srl ra,zero,zero +80000654: 00000e93 li t4,0 +80000658: 02a00193 li gp,42 +8000065c: 03d09263 bne ra,t4,80000680 + +80000660 : +80000660: 40000093 li ra,1024 +80000664: 00001137 lui sp,0x1 +80000668: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> +8000066c: 0020d033 srl zero,ra,sp +80000670: 00000e93 li t4,0 +80000674: 02b00193 li gp,43 +80000678: 01d01463 bne zero,t4,80000680 +8000067c: 00301c63 bne zero,gp,80000694 + +80000680 : +80000680: 0ff0000f fence +80000684: 00018063 beqz gp,80000684 +80000688: 00119193 slli gp,gp,0x1 +8000068c: 0011e193 ori gp,gp,1 +80000690: 00000073 ecall + +80000694 : +80000694: 0ff0000f fence +80000698: 00100193 li gp,1 +8000069c: 00000073 ecall +800006a0: c0001073 unimp +800006a4: 0000 unimp +800006a6: 0000 unimp +800006a8: 0000 unimp +800006aa: 0000 unimp +800006ac: 0000 unimp +800006ae: 0000 unimp +800006b0: 0000 unimp +800006b2: 0000 unimp +800006b4: 0000 unimp +800006b6: 0000 unimp +800006b8: 0000 unimp +800006ba: 0000 unimp +800006bc: 0000 unimp +800006be: 0000 unimp +800006c0: 0000 unimp +800006c2: 0000 unimp diff --git a/Tests/isa/rv32ui-p-srli b/Tests/isa/rv32ui-p-srli new file mode 100644 index 0000000..5e4afe0 Binary files /dev/null and b/Tests/isa/rv32ui-p-srli differ diff --git a/Tests/isa/rv32ui-p-srli.dump b/Tests/isa/rv32ui-p-srli.dump new file mode 100644 index 0000000..8c3229f --- /dev/null +++ b/Tests/isa/rv32ui-p-srli.dump @@ -0,0 +1,309 @@ + +rv32ui-p-srli: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 800000b7 lui ra,0x80000 +80000100: 0000df13 srli t5,ra,0x0 +80000104: 80000eb7 lui t4,0x80000 +80000108: 00200193 li gp,2 +8000010c: 29df1863 bne t5,t4,8000039c + +80000110 : +80000110: 800000b7 lui ra,0x80000 +80000114: 0010df13 srli t5,ra,0x1 +80000118: 40000eb7 lui t4,0x40000 +8000011c: 00300193 li gp,3 +80000120: 27df1e63 bne t5,t4,8000039c + +80000124 : +80000124: 800000b7 lui ra,0x80000 +80000128: 0070df13 srli t5,ra,0x7 +8000012c: 01000eb7 lui t4,0x1000 +80000130: 00400193 li gp,4 +80000134: 27df1463 bne t5,t4,8000039c + +80000138 : +80000138: 800000b7 lui ra,0x80000 +8000013c: 00e0df13 srli t5,ra,0xe +80000140: 00020eb7 lui t4,0x20 +80000144: 00500193 li gp,5 +80000148: 25df1a63 bne t5,t4,8000039c + +8000014c : +8000014c: 800000b7 lui ra,0x80000 +80000150: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +80000154: 01f0df13 srli t5,ra,0x1f +80000158: 00100e93 li t4,1 +8000015c: 00600193 li gp,6 +80000160: 23df1e63 bne t5,t4,8000039c + +80000164 : +80000164: fff00093 li ra,-1 +80000168: 0000df13 srli t5,ra,0x0 +8000016c: fff00e93 li t4,-1 +80000170: 00700193 li gp,7 +80000174: 23df1463 bne t5,t4,8000039c + +80000178 : +80000178: fff00093 li ra,-1 +8000017c: 0010df13 srli t5,ra,0x1 +80000180: 80000eb7 lui t4,0x80000 +80000184: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> +80000188: 00800193 li gp,8 +8000018c: 21df1863 bne t5,t4,8000039c + +80000190 : +80000190: fff00093 li ra,-1 +80000194: 0070df13 srli t5,ra,0x7 +80000198: 02000eb7 lui t4,0x2000 +8000019c: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001> +800001a0: 00900193 li gp,9 +800001a4: 1fdf1c63 bne t5,t4,8000039c + +800001a8 : +800001a8: fff00093 li ra,-1 +800001ac: 00e0df13 srli t5,ra,0xe +800001b0: 00040eb7 lui t4,0x40 +800001b4: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001> +800001b8: 00a00193 li gp,10 +800001bc: 1fdf1063 bne t5,t4,8000039c + +800001c0 : +800001c0: fff00093 li ra,-1 +800001c4: 01f0df13 srli t5,ra,0x1f +800001c8: 00100e93 li t4,1 +800001cc: 00b00193 li gp,11 +800001d0: 1ddf1663 bne t5,t4,8000039c + +800001d4 : +800001d4: 212120b7 lui ra,0x21212 +800001d8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800001dc: 0000df13 srli t5,ra,0x0 +800001e0: 21212eb7 lui t4,0x21212 +800001e4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +800001e8: 00c00193 li gp,12 +800001ec: 1bdf1863 bne t5,t4,8000039c + +800001f0 : +800001f0: 212120b7 lui ra,0x21212 +800001f4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +800001f8: 0010df13 srli t5,ra,0x1 +800001fc: 10909eb7 lui t4,0x10909 +80000200: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> +80000204: 00d00193 li gp,13 +80000208: 19df1a63 bne t5,t4,8000039c + +8000020c : +8000020c: 212120b7 lui ra,0x21212 +80000210: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000214: 0070df13 srli t5,ra,0x7 +80000218: 00424eb7 lui t4,0x424 +8000021c: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> +80000220: 00e00193 li gp,14 +80000224: 17df1c63 bne t5,t4,8000039c + +80000228 : +80000228: 212120b7 lui ra,0x21212 +8000022c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80000230: 00e0df13 srli t5,ra,0xe +80000234: 00008eb7 lui t4,0x8 +80000238: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> +8000023c: 00f00193 li gp,15 +80000240: 15df1e63 bne t5,t4,8000039c + +80000244 : +80000244: 212120b7 lui ra,0x21212 +80000248: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +8000024c: 01f0df13 srli t5,ra,0x1f +80000250: 00000e93 li t4,0 +80000254: 01000193 li gp,16 +80000258: 15df1263 bne t5,t4,8000039c + +8000025c : +8000025c: 800000b7 lui ra,0x80000 +80000260: 0070d093 srli ra,ra,0x7 +80000264: 01000eb7 lui t4,0x1000 +80000268: 01100193 li gp,17 +8000026c: 13d09863 bne ra,t4,8000039c + +80000270 : +80000270: 00000213 li tp,0 +80000274: 800000b7 lui ra,0x80000 +80000278: 0070df13 srli t5,ra,0x7 +8000027c: 000f0313 mv t1,t5 +80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000284: 00200293 li t0,2 +80000288: fe5216e3 bne tp,t0,80000274 +8000028c: 01000eb7 lui t4,0x1000 +80000290: 01200193 li gp,18 +80000294: 11d31463 bne t1,t4,8000039c + +80000298 : +80000298: 00000213 li tp,0 +8000029c: 800000b7 lui ra,0x80000 +800002a0: 00e0df13 srli t5,ra,0xe +800002a4: 00000013 nop +800002a8: 000f0313 mv t1,t5 +800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002b0: 00200293 li t0,2 +800002b4: fe5214e3 bne tp,t0,8000029c +800002b8: 00020eb7 lui t4,0x20 +800002bc: 01300193 li gp,19 +800002c0: 0dd31e63 bne t1,t4,8000039c + +800002c4 : +800002c4: 00000213 li tp,0 +800002c8: 800000b7 lui ra,0x80000 +800002cc: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +800002d0: 01f0df13 srli t5,ra,0x1f +800002d4: 00000013 nop +800002d8: 00000013 nop +800002dc: 000f0313 mv t1,t5 +800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002e4: 00200293 li t0,2 +800002e8: fe5210e3 bne tp,t0,800002c8 +800002ec: 00100e93 li t4,1 +800002f0: 01400193 li gp,20 +800002f4: 0bd31463 bne t1,t4,8000039c + +800002f8 : +800002f8: 00000213 li tp,0 +800002fc: 800000b7 lui ra,0x80000 +80000300: 0070df13 srli t5,ra,0x7 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fe5218e3 bne tp,t0,800002fc +80000310: 01000eb7 lui t4,0x1000 +80000314: 01500193 li gp,21 +80000318: 09df1263 bne t5,t4,8000039c + +8000031c : +8000031c: 00000213 li tp,0 +80000320: 800000b7 lui ra,0x80000 +80000324: 00000013 nop +80000328: 00e0df13 srli t5,ra,0xe +8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000330: 00200293 li t0,2 +80000334: fe5216e3 bne tp,t0,80000320 +80000338: 00020eb7 lui t4,0x20 +8000033c: 01600193 li gp,22 +80000340: 05df1e63 bne t5,t4,8000039c + +80000344 : +80000344: 00000213 li tp,0 +80000348: 800000b7 lui ra,0x80000 +8000034c: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001> +80000350: 00000013 nop +80000354: 00000013 nop +80000358: 01f0df13 srli t5,ra,0x1f +8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000360: 00200293 li t0,2 +80000364: fe5212e3 bne tp,t0,80000348 +80000368: 00100e93 li t4,1 +8000036c: 01700193 li gp,23 +80000370: 03df1663 bne t5,t4,8000039c + +80000374 : +80000374: 00405093 srli ra,zero,0x4 +80000378: 00000e93 li t4,0 +8000037c: 01800193 li gp,24 +80000380: 01d09e63 bne ra,t4,8000039c + +80000384 : +80000384: 02100093 li ra,33 +80000388: 00a0d013 srli zero,ra,0xa +8000038c: 00000e93 li t4,0 +80000390: 01900193 li gp,25 +80000394: 01d01463 bne zero,t4,8000039c +80000398: 00301c63 bne zero,gp,800003b0 + +8000039c : +8000039c: 0ff0000f fence +800003a0: 00018063 beqz gp,800003a0 +800003a4: 00119193 slli gp,gp,0x1 +800003a8: 0011e193 ori gp,gp,1 +800003ac: 00000073 ecall + +800003b0 : +800003b0: 0ff0000f fence +800003b4: 00100193 li gp,1 +800003b8: 00000073 ecall +800003bc: c0001073 unimp +800003c0: 0000 unimp +800003c2: 0000 unimp diff --git a/Tests/isa/rv32ui-p-sub b/Tests/isa/rv32ui-p-sub new file mode 100644 index 0000000..fbee9f2 Binary files /dev/null and b/Tests/isa/rv32ui-p-sub differ diff --git a/Tests/isa/rv32ui-p-sub.dump b/Tests/isa/rv32ui-p-sub.dump new file mode 100644 index 0000000..9f7bdae --- /dev/null +++ b/Tests/isa/rv32ui-p-sub.dump @@ -0,0 +1,485 @@ + +rv32ui-p-sub: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00000113 li sp,0 +80000104: 40208f33 sub t5,ra,sp +80000108: 00000e93 li t4,0 +8000010c: 00200193 li gp,2 +80000110: 4bdf1663 bne t5,t4,800005bc + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 40208f33 sub t5,ra,sp +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 49df1a63 bne t5,t4,800005bc + +8000012c : +8000012c: 00300093 li ra,3 +80000130: 00700113 li sp,7 +80000134: 40208f33 sub t5,ra,sp +80000138: ffc00e93 li t4,-4 +8000013c: 00400193 li gp,4 +80000140: 47df1e63 bne t5,t4,800005bc + +80000144 : +80000144: 00000093 li ra,0 +80000148: ffff8137 lui sp,0xffff8 +8000014c: 40208f33 sub t5,ra,sp +80000150: 00008eb7 lui t4,0x8 +80000154: 00500193 li gp,5 +80000158: 47df1263 bne t5,t4,800005bc + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00000113 li sp,0 +80000164: 40208f33 sub t5,ra,sp +80000168: 80000eb7 lui t4,0x80000 +8000016c: 00600193 li gp,6 +80000170: 45df1663 bne t5,t4,800005bc + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: ffff8137 lui sp,0xffff8 +8000017c: 40208f33 sub t5,ra,sp +80000180: 80008eb7 lui t4,0x80008 +80000184: 00700193 li gp,7 +80000188: 43df1a63 bne t5,t4,800005bc + +8000018c : +8000018c: 00000093 li ra,0 +80000190: 00008137 lui sp,0x8 +80000194: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80000198: 40208f33 sub t5,ra,sp +8000019c: ffff8eb7 lui t4,0xffff8 +800001a0: 001e8e93 addi t4,t4,1 # ffff8001 <_end+0x7fff6001> +800001a4: 00800193 li gp,8 +800001a8: 41df1a63 bne t5,t4,800005bc + +800001ac : +800001ac: 800000b7 lui ra,0x80000 +800001b0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001b4: 00000113 li sp,0 +800001b8: 40208f33 sub t5,ra,sp +800001bc: 80000eb7 lui t4,0x80000 +800001c0: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff> +800001c4: 00900193 li gp,9 +800001c8: 3fdf1a63 bne t5,t4,800005bc + +800001cc : +800001cc: 800000b7 lui ra,0x80000 +800001d0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +800001d4: 00008137 lui sp,0x8 +800001d8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001dc: 40208f33 sub t5,ra,sp +800001e0: 7fff8eb7 lui t4,0x7fff8 +800001e4: 00a00193 li gp,10 +800001e8: 3ddf1a63 bne t5,t4,800005bc + +800001ec : +800001ec: 800000b7 lui ra,0x80000 +800001f0: 00008137 lui sp,0x8 +800001f4: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +800001f8: 40208f33 sub t5,ra,sp +800001fc: 7fff8eb7 lui t4,0x7fff8 +80000200: 001e8e93 addi t4,t4,1 # 7fff8001 <_start-0x7fff> +80000204: 00b00193 li gp,11 +80000208: 3bdf1a63 bne t5,t4,800005bc + +8000020c : +8000020c: 800000b7 lui ra,0x80000 +80000210: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff> +80000214: ffff8137 lui sp,0xffff8 +80000218: 40208f33 sub t5,ra,sp +8000021c: 80008eb7 lui t4,0x80008 +80000220: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x5fff> +80000224: 00c00193 li gp,12 +80000228: 39df1a63 bne t5,t4,800005bc + +8000022c : +8000022c: 00000093 li ra,0 +80000230: fff00113 li sp,-1 +80000234: 40208f33 sub t5,ra,sp +80000238: 00100e93 li t4,1 +8000023c: 00d00193 li gp,13 +80000240: 37df1e63 bne t5,t4,800005bc + +80000244 : +80000244: fff00093 li ra,-1 +80000248: 00100113 li sp,1 +8000024c: 40208f33 sub t5,ra,sp +80000250: ffe00e93 li t4,-2 +80000254: 00e00193 li gp,14 +80000258: 37df1263 bne t5,t4,800005bc + +8000025c : +8000025c: fff00093 li ra,-1 +80000260: fff00113 li sp,-1 +80000264: 40208f33 sub t5,ra,sp +80000268: 00000e93 li t4,0 +8000026c: 00f00193 li gp,15 +80000270: 35df1663 bne t5,t4,800005bc + +80000274 : +80000274: 00d00093 li ra,13 +80000278: 00b00113 li sp,11 +8000027c: 402080b3 sub ra,ra,sp +80000280: 00200e93 li t4,2 +80000284: 01000193 li gp,16 +80000288: 33d09a63 bne ra,t4,800005bc + +8000028c : +8000028c: 00e00093 li ra,14 +80000290: 00b00113 li sp,11 +80000294: 40208133 sub sp,ra,sp +80000298: 00300e93 li t4,3 +8000029c: 01100193 li gp,17 +800002a0: 31d11e63 bne sp,t4,800005bc + +800002a4 : +800002a4: 00d00093 li ra,13 +800002a8: 401080b3 sub ra,ra,ra +800002ac: 00000e93 li t4,0 +800002b0: 01200193 li gp,18 +800002b4: 31d09463 bne ra,t4,800005bc + +800002b8 : +800002b8: 00000213 li tp,0 +800002bc: 00d00093 li ra,13 +800002c0: 00b00113 li sp,11 +800002c4: 40208f33 sub t5,ra,sp +800002c8: 000f0313 mv t1,t5 +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5214e3 bne tp,t0,800002bc +800002d8: 00200e93 li t4,2 +800002dc: 01300193 li gp,19 +800002e0: 2dd31e63 bne t1,t4,800005bc + +800002e4 : +800002e4: 00000213 li tp,0 +800002e8: 00e00093 li ra,14 +800002ec: 00b00113 li sp,11 +800002f0: 40208f33 sub t5,ra,sp +800002f4: 00000013 nop +800002f8: 000f0313 mv t1,t5 +800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000300: 00200293 li t0,2 +80000304: fe5212e3 bne tp,t0,800002e8 +80000308: 00300e93 li t4,3 +8000030c: 01400193 li gp,20 +80000310: 2bd31663 bne t1,t4,800005bc + +80000314 : +80000314: 00000213 li tp,0 +80000318: 00f00093 li ra,15 +8000031c: 00b00113 li sp,11 +80000320: 40208f33 sub t5,ra,sp +80000324: 00000013 nop +80000328: 00000013 nop +8000032c: 000f0313 mv t1,t5 +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fe5210e3 bne tp,t0,80000318 +8000033c: 00400e93 li t4,4 +80000340: 01500193 li gp,21 +80000344: 27d31c63 bne t1,t4,800005bc + +80000348 : +80000348: 00000213 li tp,0 +8000034c: 00d00093 li ra,13 +80000350: 00b00113 li sp,11 +80000354: 40208f33 sub t5,ra,sp +80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000035c: 00200293 li t0,2 +80000360: fe5216e3 bne tp,t0,8000034c +80000364: 00200e93 li t4,2 +80000368: 01600193 li gp,22 +8000036c: 25df1863 bne t5,t4,800005bc + +80000370 : +80000370: 00000213 li tp,0 +80000374: 00e00093 li ra,14 +80000378: 00b00113 li sp,11 +8000037c: 00000013 nop +80000380: 40208f33 sub t5,ra,sp +80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000388: 00200293 li t0,2 +8000038c: fe5214e3 bne tp,t0,80000374 +80000390: 00300e93 li t4,3 +80000394: 01700193 li gp,23 +80000398: 23df1263 bne t5,t4,800005bc + +8000039c : +8000039c: 00000213 li tp,0 +800003a0: 00f00093 li ra,15 +800003a4: 00b00113 li sp,11 +800003a8: 00000013 nop +800003ac: 00000013 nop +800003b0: 40208f33 sub t5,ra,sp +800003b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003b8: 00200293 li t0,2 +800003bc: fe5212e3 bne tp,t0,800003a0 +800003c0: 00400e93 li t4,4 +800003c4: 01800193 li gp,24 +800003c8: 1fdf1a63 bne t5,t4,800005bc + +800003cc : +800003cc: 00000213 li tp,0 +800003d0: 00d00093 li ra,13 +800003d4: 00000013 nop +800003d8: 00b00113 li sp,11 +800003dc: 40208f33 sub t5,ra,sp +800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003e4: 00200293 li t0,2 +800003e8: fe5214e3 bne tp,t0,800003d0 +800003ec: 00200e93 li t4,2 +800003f0: 01900193 li gp,25 +800003f4: 1ddf1463 bne t5,t4,800005bc + +800003f8 : +800003f8: 00000213 li tp,0 +800003fc: 00e00093 li ra,14 +80000400: 00000013 nop +80000404: 00b00113 li sp,11 +80000408: 00000013 nop +8000040c: 40208f33 sub t5,ra,sp +80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000414: 00200293 li t0,2 +80000418: fe5212e3 bne tp,t0,800003fc +8000041c: 00300e93 li t4,3 +80000420: 01a00193 li gp,26 +80000424: 19df1c63 bne t5,t4,800005bc + +80000428 : +80000428: 00000213 li tp,0 +8000042c: 00f00093 li ra,15 +80000430: 00000013 nop +80000434: 00000013 nop +80000438: 00b00113 li sp,11 +8000043c: 40208f33 sub t5,ra,sp +80000440: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000444: 00200293 li t0,2 +80000448: fe5212e3 bne tp,t0,8000042c +8000044c: 00400e93 li t4,4 +80000450: 01b00193 li gp,27 +80000454: 17df1463 bne t5,t4,800005bc + +80000458 : +80000458: 00000213 li tp,0 +8000045c: 00b00113 li sp,11 +80000460: 00d00093 li ra,13 +80000464: 40208f33 sub t5,ra,sp +80000468: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000046c: 00200293 li t0,2 +80000470: fe5216e3 bne tp,t0,8000045c +80000474: 00200e93 li t4,2 +80000478: 01c00193 li gp,28 +8000047c: 15df1063 bne t5,t4,800005bc + +80000480 : +80000480: 00000213 li tp,0 +80000484: 00b00113 li sp,11 +80000488: 00e00093 li ra,14 +8000048c: 00000013 nop +80000490: 40208f33 sub t5,ra,sp +80000494: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000498: 00200293 li t0,2 +8000049c: fe5214e3 bne tp,t0,80000484 +800004a0: 00300e93 li t4,3 +800004a4: 01d00193 li gp,29 +800004a8: 11df1a63 bne t5,t4,800005bc + +800004ac : +800004ac: 00000213 li tp,0 +800004b0: 00b00113 li sp,11 +800004b4: 00f00093 li ra,15 +800004b8: 00000013 nop +800004bc: 00000013 nop +800004c0: 40208f33 sub t5,ra,sp +800004c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004c8: 00200293 li t0,2 +800004cc: fe5212e3 bne tp,t0,800004b0 +800004d0: 00400e93 li t4,4 +800004d4: 01e00193 li gp,30 +800004d8: 0fdf1263 bne t5,t4,800005bc + +800004dc : +800004dc: 00000213 li tp,0 +800004e0: 00b00113 li sp,11 +800004e4: 00000013 nop +800004e8: 00d00093 li ra,13 +800004ec: 40208f33 sub t5,ra,sp +800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004f4: 00200293 li t0,2 +800004f8: fe5214e3 bne tp,t0,800004e0 +800004fc: 00200e93 li t4,2 +80000500: 01f00193 li gp,31 +80000504: 0bdf1c63 bne t5,t4,800005bc + +80000508 : +80000508: 00000213 li tp,0 +8000050c: 00b00113 li sp,11 +80000510: 00000013 nop +80000514: 00e00093 li ra,14 +80000518: 00000013 nop +8000051c: 40208f33 sub t5,ra,sp +80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000524: 00200293 li t0,2 +80000528: fe5212e3 bne tp,t0,8000050c +8000052c: 00300e93 li t4,3 +80000530: 02000193 li gp,32 +80000534: 09df1463 bne t5,t4,800005bc + +80000538 : +80000538: 00000213 li tp,0 +8000053c: 00b00113 li sp,11 +80000540: 00000013 nop +80000544: 00000013 nop +80000548: 00f00093 li ra,15 +8000054c: 40208f33 sub t5,ra,sp +80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000554: 00200293 li t0,2 +80000558: fe5212e3 bne tp,t0,8000053c +8000055c: 00400e93 li t4,4 +80000560: 02100193 li gp,33 +80000564: 05df1c63 bne t5,t4,800005bc + +80000568 : +80000568: ff100093 li ra,-15 +8000056c: 40100133 neg sp,ra +80000570: 00f00e93 li t4,15 +80000574: 02200193 li gp,34 +80000578: 05d11263 bne sp,t4,800005bc + +8000057c : +8000057c: 02000093 li ra,32 +80000580: 40008133 sub sp,ra,zero +80000584: 02000e93 li t4,32 +80000588: 02300193 li gp,35 +8000058c: 03d11863 bne sp,t4,800005bc + +80000590 : +80000590: 400000b3 neg ra,zero +80000594: 00000e93 li t4,0 +80000598: 02400193 li gp,36 +8000059c: 03d09063 bne ra,t4,800005bc + +800005a0 : +800005a0: 01000093 li ra,16 +800005a4: 01e00113 li sp,30 +800005a8: 40208033 sub zero,ra,sp +800005ac: 00000e93 li t4,0 +800005b0: 02500193 li gp,37 +800005b4: 01d01463 bne zero,t4,800005bc +800005b8: 00301c63 bne zero,gp,800005d0 + +800005bc : +800005bc: 0ff0000f fence +800005c0: 00018063 beqz gp,800005c0 +800005c4: 00119193 slli gp,gp,0x1 +800005c8: 0011e193 ori gp,gp,1 +800005cc: 00000073 ecall + +800005d0 : +800005d0: 0ff0000f fence +800005d4: 00100193 li gp,1 +800005d8: 00000073 ecall +800005dc: c0001073 unimp +800005e0: 0000 unimp +800005e2: 0000 unimp +800005e4: 0000 unimp +800005e6: 0000 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32ui-p-sw b/Tests/isa/rv32ui-p-sw new file mode 100644 index 0000000..87a05b8 Binary files /dev/null and b/Tests/isa/rv32ui-p-sw differ diff --git a/Tests/isa/rv32ui-p-sw.dump b/Tests/isa/rv32ui-p-sw.dump new file mode 100644 index 0000000..acdccd9 --- /dev/null +++ b/Tests/isa/rv32ui-p-sw.dump @@ -0,0 +1,476 @@ + +rv32ui-p-sw: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00002097 auipc ra,0x2 +80000100: f0408093 addi ra,ra,-252 # 80002000 +80000104: 00aa0137 lui sp,0xaa0 +80000108: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56> +8000010c: 0020a023 sw sp,0(ra) +80000110: 0000af03 lw t5,0(ra) +80000114: 00aa0eb7 lui t4,0xaa0 +80000118: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56> +8000011c: 00200193 li gp,2 +80000120: 47df1063 bne t5,t4,80000580 + +80000124 : +80000124: 00002097 auipc ra,0x2 +80000128: edc08093 addi ra,ra,-292 # 80002000 +8000012c: aa00b137 lui sp,0xaa00b +80000130: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a0089d0> +80000134: 0020a223 sw sp,4(ra) +80000138: 0040af03 lw t5,4(ra) +8000013c: aa00beb7 lui t4,0xaa00b +80000140: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a0089d0> +80000144: 00300193 li gp,3 +80000148: 43df1c63 bne t5,t4,80000580 + +8000014c : +8000014c: 00002097 auipc ra,0x2 +80000150: eb408093 addi ra,ra,-332 # 80002000 +80000154: 0aa01137 lui sp,0xaa01 +80000158: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560> +8000015c: 0020a423 sw sp,8(ra) +80000160: 0080af03 lw t5,8(ra) +80000164: 0aa01eb7 lui t4,0xaa01 +80000168: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560> +8000016c: 00400193 li gp,4 +80000170: 41df1863 bne t5,t4,80000580 + +80000174 : +80000174: 00002097 auipc ra,0x2 +80000178: e8c08093 addi ra,ra,-372 # 80002000 +8000017c: a00aa137 lui sp,0xa00aa +80000180: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a7fda> +80000184: 0020a623 sw sp,12(ra) +80000188: 00c0af03 lw t5,12(ra) +8000018c: a00aaeb7 lui t4,0xa00aa +80000190: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a7fda> +80000194: 00500193 li gp,5 +80000198: 3fdf1463 bne t5,t4,80000580 + +8000019c : +8000019c: 00002097 auipc ra,0x2 +800001a0: e8008093 addi ra,ra,-384 # 8000201c +800001a4: 00aa0137 lui sp,0xaa0 +800001a8: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56> +800001ac: fe20aa23 sw sp,-12(ra) +800001b0: ff40af03 lw t5,-12(ra) +800001b4: 00aa0eb7 lui t4,0xaa0 +800001b8: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56> +800001bc: 00600193 li gp,6 +800001c0: 3ddf1063 bne t5,t4,80000580 + +800001c4 : +800001c4: 00002097 auipc ra,0x2 +800001c8: e5808093 addi ra,ra,-424 # 8000201c +800001cc: aa00b137 lui sp,0xaa00b +800001d0: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a0089d0> +800001d4: fe20ac23 sw sp,-8(ra) +800001d8: ff80af03 lw t5,-8(ra) +800001dc: aa00beb7 lui t4,0xaa00b +800001e0: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a0089d0> +800001e4: 00700193 li gp,7 +800001e8: 39df1c63 bne t5,t4,80000580 + +800001ec : +800001ec: 00002097 auipc ra,0x2 +800001f0: e3008093 addi ra,ra,-464 # 8000201c +800001f4: 0aa01137 lui sp,0xaa01 +800001f8: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560> +800001fc: fe20ae23 sw sp,-4(ra) +80000200: ffc0af03 lw t5,-4(ra) +80000204: 0aa01eb7 lui t4,0xaa01 +80000208: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560> +8000020c: 00800193 li gp,8 +80000210: 37df1863 bne t5,t4,80000580 + +80000214 : +80000214: 00002097 auipc ra,0x2 +80000218: e0808093 addi ra,ra,-504 # 8000201c +8000021c: a00aa137 lui sp,0xa00aa +80000220: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a7fda> +80000224: 0020a023 sw sp,0(ra) +80000228: 0000af03 lw t5,0(ra) +8000022c: a00aaeb7 lui t4,0xa00aa +80000230: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a7fda> +80000234: 00900193 li gp,9 +80000238: 35df1463 bne t5,t4,80000580 + +8000023c : +8000023c: 00002097 auipc ra,0x2 +80000240: de408093 addi ra,ra,-540 # 80002020 +80000244: 12345137 lui sp,0x12345 +80000248: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> +8000024c: fe008213 addi tp,ra,-32 +80000250: 02222023 sw sp,32(tp) # 20 <_start-0x7fffffe0> +80000254: 0000a283 lw t0,0(ra) +80000258: 12345eb7 lui t4,0x12345 +8000025c: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80000260: 00a00193 li gp,10 +80000264: 31d29e63 bne t0,t4,80000580 + +80000268 : +80000268: 00002097 auipc ra,0x2 +8000026c: db808093 addi ra,ra,-584 # 80002020 +80000270: 58213137 lui sp,0x58213 +80000274: 09810113 addi sp,sp,152 # 58213098 <_start-0x27decf68> +80000278: ffd08093 addi ra,ra,-3 +8000027c: 0020a3a3 sw sp,7(ra) +80000280: 00002217 auipc tp,0x2 +80000284: da420213 addi tp,tp,-604 # 80002024 +80000288: 00022283 lw t0,0(tp) # 0 <_start-0x80000000> +8000028c: 58213eb7 lui t4,0x58213 +80000290: 098e8e93 addi t4,t4,152 # 58213098 <_start-0x27decf68> +80000294: 00b00193 li gp,11 +80000298: 2fd29463 bne t0,t4,80000580 + +8000029c : +8000029c: 00c00193 li gp,12 +800002a0: 00000213 li tp,0 +800002a4: aabbd0b7 lui ra,0xaabbd +800002a8: cdd08093 addi ra,ra,-803 # aabbccdd <_end+0x2abbacad> +800002ac: 00002117 auipc sp,0x2 +800002b0: d5410113 addi sp,sp,-684 # 80002000 +800002b4: 00112023 sw ra,0(sp) +800002b8: 00012f03 lw t5,0(sp) +800002bc: aabbdeb7 lui t4,0xaabbd +800002c0: cdde8e93 addi t4,t4,-803 # aabbccdd <_end+0x2abbacad> +800002c4: 2bdf1e63 bne t5,t4,80000580 +800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002cc: 00200293 li t0,2 +800002d0: fc521ae3 bne tp,t0,800002a4 + +800002d4 : +800002d4: 00d00193 li gp,13 +800002d8: 00000213 li tp,0 +800002dc: daabc0b7 lui ra,0xdaabc +800002e0: ccd08093 addi ra,ra,-819 # daabbccd <_end+0x5aab9c9d> +800002e4: 00002117 auipc sp,0x2 +800002e8: d1c10113 addi sp,sp,-740 # 80002000 +800002ec: 00000013 nop +800002f0: 00112223 sw ra,4(sp) +800002f4: 00412f03 lw t5,4(sp) +800002f8: daabceb7 lui t4,0xdaabc +800002fc: ccde8e93 addi t4,t4,-819 # daabbccd <_end+0x5aab9c9d> +80000300: 29df1063 bne t5,t4,80000580 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fc5218e3 bne tp,t0,800002dc + +80000310 : +80000310: 00e00193 li gp,14 +80000314: 00000213 li tp,0 +80000318: ddaac0b7 lui ra,0xddaac +8000031c: bcc08093 addi ra,ra,-1076 # ddaabbcc <_end+0x5daa9b9c> +80000320: 00002117 auipc sp,0x2 +80000324: ce010113 addi sp,sp,-800 # 80002000 +80000328: 00000013 nop +8000032c: 00000013 nop +80000330: 00112423 sw ra,8(sp) +80000334: 00812f03 lw t5,8(sp) +80000338: ddaaceb7 lui t4,0xddaac +8000033c: bcce8e93 addi t4,t4,-1076 # ddaabbcc <_end+0x5daa9b9c> +80000340: 25df1063 bne t5,t4,80000580 +80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000348: 00200293 li t0,2 +8000034c: fc5216e3 bne tp,t0,80000318 + +80000350 : +80000350: 00f00193 li gp,15 +80000354: 00000213 li tp,0 +80000358: cddab0b7 lui ra,0xcddab +8000035c: bbc08093 addi ra,ra,-1092 # cddaabbc <_end+0x4dda8b8c> +80000360: 00000013 nop +80000364: 00002117 auipc sp,0x2 +80000368: c9c10113 addi sp,sp,-868 # 80002000 +8000036c: 00112623 sw ra,12(sp) +80000370: 00c12f03 lw t5,12(sp) +80000374: cddabeb7 lui t4,0xcddab +80000378: bbce8e93 addi t4,t4,-1092 # cddaabbc <_end+0x4dda8b8c> +8000037c: 21df1263 bne t5,t4,80000580 +80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000384: 00200293 li t0,2 +80000388: fc5218e3 bne tp,t0,80000358 + +8000038c : +8000038c: 01000193 li gp,16 +80000390: 00000213 li tp,0 +80000394: ccddb0b7 lui ra,0xccddb +80000398: abb08093 addi ra,ra,-1349 # ccddaabb <_end+0x4cdd8a8b> +8000039c: 00000013 nop +800003a0: 00002117 auipc sp,0x2 +800003a4: c6010113 addi sp,sp,-928 # 80002000 +800003a8: 00000013 nop +800003ac: 00112823 sw ra,16(sp) +800003b0: 01012f03 lw t5,16(sp) +800003b4: ccddbeb7 lui t4,0xccddb +800003b8: abbe8e93 addi t4,t4,-1349 # ccddaabb <_end+0x4cdd8a8b> +800003bc: 1ddf1263 bne t5,t4,80000580 +800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c4: 00200293 li t0,2 +800003c8: fc5216e3 bne tp,t0,80000394 + +800003cc : +800003cc: 01100193 li gp,17 +800003d0: 00000213 li tp,0 +800003d4: bccde0b7 lui ra,0xbccde +800003d8: aab08093 addi ra,ra,-1365 # bccddaab <_end+0x3ccdba7b> +800003dc: 00000013 nop +800003e0: 00000013 nop +800003e4: 00002117 auipc sp,0x2 +800003e8: c1c10113 addi sp,sp,-996 # 80002000 +800003ec: 00112a23 sw ra,20(sp) +800003f0: 01412f03 lw t5,20(sp) +800003f4: bccdeeb7 lui t4,0xbccde +800003f8: aabe8e93 addi t4,t4,-1365 # bccddaab <_end+0x3ccdba7b> +800003fc: 19df1263 bne t5,t4,80000580 +80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000404: 00200293 li t0,2 +80000408: fc5216e3 bne tp,t0,800003d4 + +8000040c : +8000040c: 01200193 li gp,18 +80000410: 00000213 li tp,0 +80000414: 00002117 auipc sp,0x2 +80000418: bec10113 addi sp,sp,-1044 # 80002000 +8000041c: 001120b7 lui ra,0x112 +80000420: 23308093 addi ra,ra,563 # 112233 <_start-0x7feeddcd> +80000424: 00112023 sw ra,0(sp) +80000428: 00012f03 lw t5,0(sp) +8000042c: 00112eb7 lui t4,0x112 +80000430: 233e8e93 addi t4,t4,563 # 112233 <_start-0x7feeddcd> +80000434: 15df1663 bne t5,t4,80000580 +80000438: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000043c: 00200293 li t0,2 +80000440: fc521ae3 bne tp,t0,80000414 + +80000444 : +80000444: 01300193 li gp,19 +80000448: 00000213 li tp,0 +8000044c: 00002117 auipc sp,0x2 +80000450: bb410113 addi sp,sp,-1100 # 80002000 +80000454: 300110b7 lui ra,0x30011 +80000458: 22308093 addi ra,ra,547 # 30011223 <_start-0x4ffeeddd> +8000045c: 00000013 nop +80000460: 00112223 sw ra,4(sp) +80000464: 00412f03 lw t5,4(sp) +80000468: 30011eb7 lui t4,0x30011 +8000046c: 223e8e93 addi t4,t4,547 # 30011223 <_start-0x4ffeeddd> +80000470: 11df1863 bne t5,t4,80000580 +80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000478: 00200293 li t0,2 +8000047c: fc5218e3 bne tp,t0,8000044c + +80000480 : +80000480: 01400193 li gp,20 +80000484: 00000213 li tp,0 +80000488: 00002117 auipc sp,0x2 +8000048c: b7810113 addi sp,sp,-1160 # 80002000 +80000490: 330010b7 lui ra,0x33001 +80000494: 12208093 addi ra,ra,290 # 33001122 <_start-0x4cffeede> +80000498: 00000013 nop +8000049c: 00000013 nop +800004a0: 00112423 sw ra,8(sp) +800004a4: 00812f03 lw t5,8(sp) +800004a8: 33001eb7 lui t4,0x33001 +800004ac: 122e8e93 addi t4,t4,290 # 33001122 <_start-0x4cffeede> +800004b0: 0ddf1863 bne t5,t4,80000580 +800004b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004b8: 00200293 li t0,2 +800004bc: fc5216e3 bne tp,t0,80000488 + +800004c0 : +800004c0: 01500193 li gp,21 +800004c4: 00000213 li tp,0 +800004c8: 00002117 auipc sp,0x2 +800004cc: b3810113 addi sp,sp,-1224 # 80002000 +800004d0: 00000013 nop +800004d4: 233000b7 lui ra,0x23300 +800004d8: 11208093 addi ra,ra,274 # 23300112 <_start-0x5ccffeee> +800004dc: 00112623 sw ra,12(sp) +800004e0: 00c12f03 lw t5,12(sp) +800004e4: 23300eb7 lui t4,0x23300 +800004e8: 112e8e93 addi t4,t4,274 # 23300112 <_start-0x5ccffeee> +800004ec: 09df1a63 bne t5,t4,80000580 +800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004f4: 00200293 li t0,2 +800004f8: fc5218e3 bne tp,t0,800004c8 + +800004fc : +800004fc: 01600193 li gp,22 +80000500: 00000213 li tp,0 +80000504: 00002117 auipc sp,0x2 +80000508: afc10113 addi sp,sp,-1284 # 80002000 +8000050c: 00000013 nop +80000510: 223300b7 lui ra,0x22330 +80000514: 01108093 addi ra,ra,17 # 22330011 <_start-0x5dccffef> +80000518: 00000013 nop +8000051c: 00112823 sw ra,16(sp) +80000520: 01012f03 lw t5,16(sp) +80000524: 22330eb7 lui t4,0x22330 +80000528: 011e8e93 addi t4,t4,17 # 22330011 <_start-0x5dccffef> +8000052c: 05df1a63 bne t5,t4,80000580 +80000530: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000534: 00200293 li t0,2 +80000538: fc5216e3 bne tp,t0,80000504 + +8000053c : +8000053c: 01700193 li gp,23 +80000540: 00000213 li tp,0 +80000544: 00002117 auipc sp,0x2 +80000548: abc10113 addi sp,sp,-1348 # 80002000 +8000054c: 00000013 nop +80000550: 00000013 nop +80000554: 122330b7 lui ra,0x12233 +80000558: 00108093 addi ra,ra,1 # 12233001 <_start-0x6ddccfff> +8000055c: 00112a23 sw ra,20(sp) +80000560: 01412f03 lw t5,20(sp) +80000564: 12233eb7 lui t4,0x12233 +80000568: 001e8e93 addi t4,t4,1 # 12233001 <_start-0x6ddccfff> +8000056c: 01df1a63 bne t5,t4,80000580 +80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000574: 00200293 li t0,2 +80000578: fc5216e3 bne tp,t0,80000544 +8000057c: 00301c63 bne zero,gp,80000594 + +80000580 : +80000580: 0ff0000f fence +80000584: 00018063 beqz gp,80000584 +80000588: 00119193 slli gp,gp,0x1 +8000058c: 0011e193 ori gp,gp,1 +80000590: 00000073 ecall + +80000594 : +80000594: 0ff0000f fence +80000598: 00100193 li gp,1 +8000059c: 00000073 ecall +800005a0: c0001073 unimp +800005a4: 0000 unimp +800005a6: 0000 unimp +800005a8: 0000 unimp +800005aa: 0000 unimp +800005ac: 0000 unimp +800005ae: 0000 unimp +800005b0: 0000 unimp +800005b2: 0000 unimp +800005b4: 0000 unimp +800005b6: 0000 unimp +800005b8: 0000 unimp +800005ba: 0000 unimp +800005bc: 0000 unimp +800005be: 0000 unimp +800005c0: 0000 unimp +800005c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: deadbeef jal t4,7ffdd5ea <_start-0x22a16> + +80002004 : +80002004: deadbeef jal t4,7ffdd5ee <_start-0x22a12> + +80002008 : +80002008: deadbeef jal t4,7ffdd5f2 <_start-0x22a0e> + +8000200c : +8000200c: deadbeef jal t4,7ffdd5f6 <_start-0x22a0a> + +80002010 : +80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> + +80002014 : +80002014: deadbeef jal t4,7ffdd5fe <_start-0x22a02> + +80002018 : +80002018: deadbeef jal t4,7ffdd602 <_start-0x229fe> + +8000201c : +8000201c: deadbeef jal t4,7ffdd606 <_start-0x229fa> + +80002020 : +80002020: deadbeef jal t4,7ffdd60a <_start-0x229f6> + +80002024 : +80002024: deadbeef jal t4,7ffdd60e <_start-0x229f2> +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp diff --git a/Tests/isa/rv32ui-p-xor b/Tests/isa/rv32ui-p-xor new file mode 100644 index 0000000..7aae358 Binary files /dev/null and b/Tests/isa/rv32ui-p-xor differ diff --git a/Tests/isa/rv32ui-p-xor.dump b/Tests/isa/rv32ui-p-xor.dump new file mode 100644 index 0000000..e4d8ddb --- /dev/null +++ b/Tests/isa/rv32ui-p-xor.dump @@ -0,0 +1,465 @@ + +rv32ui-p-xor: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: ff0100b7 lui ra,0xff010 +80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000104: 0f0f1137 lui sp,0xf0f1 +80000108: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +8000010c: 0020cf33 xor t5,ra,sp +80000110: f00ffeb7 lui t4,0xf00ff +80000114: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +80000118: 00200193 li gp,2 +8000011c: 4bdf1063 bne t5,t4,800005bc + +80000120 : +80000120: 0ff010b7 lui ra,0xff01 +80000124: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000128: f0f0f137 lui sp,0xf0f0f +8000012c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000130: 0020cf33 xor t5,ra,sp +80000134: ff010eb7 lui t4,0xff010 +80000138: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +8000013c: 00300193 li gp,3 +80000140: 47df1e63 bne t5,t4,800005bc + +80000144 : +80000144: 00ff00b7 lui ra,0xff0 +80000148: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000014c: 0f0f1137 lui sp,0xf0f1 +80000150: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000154: 0020cf33 xor t5,ra,sp +80000158: 0ff01eb7 lui t4,0xff01 +8000015c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000160: 00400193 li gp,4 +80000164: 45df1c63 bne t5,t4,800005bc + +80000168 : +80000168: f00ff0b7 lui ra,0xf00ff +8000016c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +80000170: f0f0f137 lui sp,0xf0f0f +80000174: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000178: 0020cf33 xor t5,ra,sp +8000017c: 00ff0eb7 lui t4,0xff0 +80000180: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80000184: 00500193 li gp,5 +80000188: 43df1a63 bne t5,t4,800005bc + +8000018c : +8000018c: ff0100b7 lui ra,0xff010 +80000190: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000194: 0f0f1137 lui sp,0xf0f1 +80000198: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +8000019c: 0020c0b3 xor ra,ra,sp +800001a0: f00ffeb7 lui t4,0xf00ff +800001a4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +800001a8: 00600193 li gp,6 +800001ac: 41d09863 bne ra,t4,800005bc + +800001b0 : +800001b0: ff0100b7 lui ra,0xff010 +800001b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001b8: 0f0f1137 lui sp,0xf0f1 +800001bc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800001c0: 0020c133 xor sp,ra,sp +800001c4: f00ffeb7 lui t4,0xf00ff +800001c8: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +800001cc: 00700193 li gp,7 +800001d0: 3fd11663 bne sp,t4,800005bc + +800001d4 : +800001d4: ff0100b7 lui ra,0xff010 +800001d8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001dc: 0010c0b3 xor ra,ra,ra +800001e0: 00000e93 li t4,0 +800001e4: 00800193 li gp,8 +800001e8: 3dd09a63 bne ra,t4,800005bc + +800001ec : +800001ec: 00000213 li tp,0 +800001f0: ff0100b7 lui ra,0xff010 +800001f4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800001f8: 0f0f1137 lui sp,0xf0f1 +800001fc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000200: 0020cf33 xor t5,ra,sp +80000204: 000f0313 mv t1,t5 +80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000020c: 00200293 li t0,2 +80000210: fe5210e3 bne tp,t0,800001f0 +80000214: f00ffeb7 lui t4,0xf00ff +80000218: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +8000021c: 00900193 li gp,9 +80000220: 39d31e63 bne t1,t4,800005bc + +80000224 : +80000224: 00000213 li tp,0 +80000228: 0ff010b7 lui ra,0xff01 +8000022c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000230: f0f0f137 lui sp,0xf0f0f +80000234: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000238: 0020cf33 xor t5,ra,sp +8000023c: 00000013 nop +80000240: 000f0313 mv t1,t5 +80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000248: 00200293 li t0,2 +8000024c: fc521ee3 bne tp,t0,80000228 +80000250: ff010eb7 lui t4,0xff010 +80000254: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +80000258: 00a00193 li gp,10 +8000025c: 37d31063 bne t1,t4,800005bc + +80000260 : +80000260: 00000213 li tp,0 +80000264: 00ff00b7 lui ra,0xff0 +80000268: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000026c: 0f0f1137 lui sp,0xf0f1 +80000270: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000274: 0020cf33 xor t5,ra,sp +80000278: 00000013 nop +8000027c: 00000013 nop +80000280: 000f0313 mv t1,t5 +80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000288: 00200293 li t0,2 +8000028c: fc521ce3 bne tp,t0,80000264 +80000290: 0ff01eb7 lui t4,0xff01 +80000294: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000298: 00b00193 li gp,11 +8000029c: 33d31063 bne t1,t4,800005bc + +800002a0 : +800002a0: 00000213 li tp,0 +800002a4: ff0100b7 lui ra,0xff010 +800002a8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800002ac: 0f0f1137 lui sp,0xf0f1 +800002b0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800002b4: 0020cf33 xor t5,ra,sp +800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002bc: 00200293 li t0,2 +800002c0: fe5212e3 bne tp,t0,800002a4 +800002c4: f00ffeb7 lui t4,0xf00ff +800002c8: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +800002cc: 00c00193 li gp,12 +800002d0: 2fdf1663 bne t5,t4,800005bc + +800002d4 : +800002d4: 00000213 li tp,0 +800002d8: 0ff010b7 lui ra,0xff01 +800002dc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +800002e0: f0f0f137 lui sp,0xf0f0f +800002e4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +800002e8: 00000013 nop +800002ec: 0020cf33 xor t5,ra,sp +800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002f4: 00200293 li t0,2 +800002f8: fe5210e3 bne tp,t0,800002d8 +800002fc: ff010eb7 lui t4,0xff010 +80000300: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +80000304: 00d00193 li gp,13 +80000308: 2bdf1a63 bne t5,t4,800005bc + +8000030c : +8000030c: 00000213 li tp,0 +80000310: 00ff00b7 lui ra,0xff0 +80000314: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000318: 0f0f1137 lui sp,0xf0f1 +8000031c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000320: 00000013 nop +80000324: 00000013 nop +80000328: 0020cf33 xor t5,ra,sp +8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000330: 00200293 li t0,2 +80000334: fc521ee3 bne tp,t0,80000310 +80000338: 0ff01eb7 lui t4,0xff01 +8000033c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000340: 00e00193 li gp,14 +80000344: 27df1c63 bne t5,t4,800005bc + +80000348 : +80000348: 00000213 li tp,0 +8000034c: ff0100b7 lui ra,0xff010 +80000350: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000354: 00000013 nop +80000358: 0f0f1137 lui sp,0xf0f1 +8000035c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000360: 0020cf33 xor t5,ra,sp +80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000368: 00200293 li t0,2 +8000036c: fe5210e3 bne tp,t0,8000034c +80000370: f00ffeb7 lui t4,0xf00ff +80000374: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +80000378: 00f00193 li gp,15 +8000037c: 25df1063 bne t5,t4,800005bc + +80000380 : +80000380: 00000213 li tp,0 +80000384: 0ff010b7 lui ra,0xff01 +80000388: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +8000038c: 00000013 nop +80000390: f0f0f137 lui sp,0xf0f0f +80000394: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000398: 00000013 nop +8000039c: 0020cf33 xor t5,ra,sp +800003a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003a4: 00200293 li t0,2 +800003a8: fc521ee3 bne tp,t0,80000384 +800003ac: ff010eb7 lui t4,0xff010 +800003b0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +800003b4: 01000193 li gp,16 +800003b8: 21df1263 bne t5,t4,800005bc + +800003bc : +800003bc: 00000213 li tp,0 +800003c0: 00ff00b7 lui ra,0xff0 +800003c4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800003c8: 00000013 nop +800003cc: 00000013 nop +800003d0: 0f0f1137 lui sp,0xf0f1 +800003d4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800003d8: 0020cf33 xor t5,ra,sp +800003dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003e0: 00200293 li t0,2 +800003e4: fc521ee3 bne tp,t0,800003c0 +800003e8: 0ff01eb7 lui t4,0xff01 +800003ec: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +800003f0: 01100193 li gp,17 +800003f4: 1ddf1463 bne t5,t4,800005bc + +800003f8 : +800003f8: 00000213 li tp,0 +800003fc: 0f0f1137 lui sp,0xf0f1 +80000400: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000404: ff0100b7 lui ra,0xff010 +80000408: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +8000040c: 0020cf33 xor t5,ra,sp +80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000414: 00200293 li t0,2 +80000418: fe5212e3 bne tp,t0,800003fc +8000041c: f00ffeb7 lui t4,0xf00ff +80000420: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +80000424: 01200193 li gp,18 +80000428: 19df1a63 bne t5,t4,800005bc + +8000042c : +8000042c: 00000213 li tp,0 +80000430: f0f0f137 lui sp,0xf0f0f +80000434: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +80000438: 0ff010b7 lui ra,0xff01 +8000043c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000440: 00000013 nop +80000444: 0020cf33 xor t5,ra,sp +80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000044c: 00200293 li t0,2 +80000450: fe5210e3 bne tp,t0,80000430 +80000454: ff010eb7 lui t4,0xff010 +80000458: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +8000045c: 01300193 li gp,19 +80000460: 15df1e63 bne t5,t4,800005bc + +80000464 : +80000464: 00000213 li tp,0 +80000468: 0f0f1137 lui sp,0xf0f1 +8000046c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000470: 00ff00b7 lui ra,0xff0 +80000474: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000478: 00000013 nop +8000047c: 00000013 nop +80000480: 0020cf33 xor t5,ra,sp +80000484: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000488: 00200293 li t0,2 +8000048c: fc521ee3 bne tp,t0,80000468 +80000490: 0ff01eb7 lui t4,0xff01 +80000494: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000498: 01400193 li gp,20 +8000049c: 13df1063 bne t5,t4,800005bc + +800004a0 : +800004a0: 00000213 li tp,0 +800004a4: 0f0f1137 lui sp,0xf0f1 +800004a8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +800004ac: 00000013 nop +800004b0: ff0100b7 lui ra,0xff010 +800004b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +800004b8: 0020cf33 xor t5,ra,sp +800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004c0: 00200293 li t0,2 +800004c4: fe5210e3 bne tp,t0,800004a4 +800004c8: f00ffeb7 lui t4,0xf00ff +800004cc: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f> +800004d0: 01500193 li gp,21 +800004d4: 0fdf1463 bne t5,t4,800005bc + +800004d8 : +800004d8: 00000213 li tp,0 +800004dc: f0f0f137 lui sp,0xf0f0f +800004e0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0> +800004e4: 00000013 nop +800004e8: 0ff010b7 lui ra,0xff01 +800004ec: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +800004f0: 00000013 nop +800004f4: 0020cf33 xor t5,ra,sp +800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004fc: 00200293 li t0,2 +80000500: fc521ee3 bne tp,t0,800004dc +80000504: ff010eb7 lui t4,0xff010 +80000508: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +8000050c: 01600193 li gp,22 +80000510: 0bdf1663 bne t5,t4,800005bc + +80000514 : +80000514: 00000213 li tp,0 +80000518: 0f0f1137 lui sp,0xf0f1 +8000051c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80000520: 00000013 nop +80000524: 00000013 nop +80000528: 00ff00b7 lui ra,0xff0 +8000052c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000530: 0020cf33 xor t5,ra,sp +80000534: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000538: 00200293 li t0,2 +8000053c: fc521ee3 bne tp,t0,80000518 +80000540: 0ff01eb7 lui t4,0xff01 +80000544: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80000548: 01700193 li gp,23 +8000054c: 07df1863 bne t5,t4,800005bc + +80000550 : +80000550: ff0100b7 lui ra,0xff010 +80000554: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00> +80000558: 00104133 xor sp,zero,ra +8000055c: ff010eb7 lui t4,0xff010 +80000560: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00> +80000564: 01800193 li gp,24 +80000568: 05d11a63 bne sp,t4,800005bc + +8000056c : +8000056c: 00ff00b7 lui ra,0xff0 +80000570: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80000574: 0000c133 xor sp,ra,zero +80000578: 00ff0eb7 lui t4,0xff0 +8000057c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80000580: 01900193 li gp,25 +80000584: 03d11c63 bne sp,t4,800005bc + +80000588 : +80000588: 000040b3 xor ra,zero,zero +8000058c: 00000e93 li t4,0 +80000590: 01a00193 li gp,26 +80000594: 03d09463 bne ra,t4,800005bc + +80000598 : +80000598: 111110b7 lui ra,0x11111 +8000059c: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> +800005a0: 22222137 lui sp,0x22222 +800005a4: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> +800005a8: 0020c033 xor zero,ra,sp +800005ac: 00000e93 li t4,0 +800005b0: 01b00193 li gp,27 +800005b4: 01d01463 bne zero,t4,800005bc +800005b8: 00301c63 bne zero,gp,800005d0 + +800005bc : +800005bc: 0ff0000f fence +800005c0: 00018063 beqz gp,800005c0 +800005c4: 00119193 slli gp,gp,0x1 +800005c8: 0011e193 ori gp,gp,1 +800005cc: 00000073 ecall + +800005d0 : +800005d0: 0ff0000f fence +800005d4: 00100193 li gp,1 +800005d8: 00000073 ecall +800005dc: c0001073 unimp +800005e0: 0000 unimp +800005e2: 0000 unimp +800005e4: 0000 unimp +800005e6: 0000 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32ui-p-xori b/Tests/isa/rv32ui-p-xori new file mode 100644 index 0000000..1ee0604 Binary files /dev/null and b/Tests/isa/rv32ui-p-xori differ diff --git a/Tests/isa/rv32ui-p-xori.dump b/Tests/isa/rv32ui-p-xori.dump new file mode 100644 index 0000000..59e75ae --- /dev/null +++ b/Tests/isa/rv32ui-p-xori.dump @@ -0,0 +1,238 @@ + +rv32ui-p-xori: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00ff10b7 lui ra,0xff1 +80000100: f0008093 addi ra,ra,-256 # ff0f00 <_start-0x7f00f100> +80000104: f0f0cf13 xori t5,ra,-241 +80000108: ff00feb7 lui t4,0xff00f +8000010c: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f00d00f> +80000110: 00200193 li gp,2 +80000114: 1ddf1663 bne t5,t4,800002e0 + +80000118 : +80000118: 0ff010b7 lui ra,0xff01 +8000011c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000120: 0f00cf13 xori t5,ra,240 +80000124: 0ff01eb7 lui t4,0xff01 +80000128: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> +8000012c: 00300193 li gp,3 +80000130: 1bdf1863 bne t5,t4,800002e0 + +80000134 : +80000134: 00ff10b7 lui ra,0xff1 +80000138: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701> +8000013c: 70f0cf13 xori t5,ra,1807 +80000140: 00ff1eb7 lui t4,0xff1 +80000144: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> +80000148: 00400193 li gp,4 +8000014c: 19df1a63 bne t5,t4,800002e0 + +80000150 : +80000150: f00ff0b7 lui ra,0xf00ff +80000154: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +80000158: 0f00cf13 xori t5,ra,240 +8000015c: f00ffeb7 lui t4,0xf00ff +80000160: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> +80000164: 00500193 li gp,5 +80000168: 17df1c63 bne t5,t4,800002e0 + +8000016c : +8000016c: ff00f0b7 lui ra,0xff00f +80000170: 70008093 addi ra,ra,1792 # ff00f700 <_end+0x7f00d700> +80000174: 70f0c093 xori ra,ra,1807 +80000178: ff00feb7 lui t4,0xff00f +8000017c: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f00d00f> +80000180: 00600193 li gp,6 +80000184: 15d09e63 bne ra,t4,800002e0 + +80000188 : +80000188: 00000213 li tp,0 +8000018c: 0ff010b7 lui ra,0xff01 +80000190: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000194: 0f00cf13 xori t5,ra,240 +80000198: 000f0313 mv t1,t5 +8000019c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001a0: 00200293 li t0,2 +800001a4: fe5214e3 bne tp,t0,8000018c +800001a8: 0ff01eb7 lui t4,0xff01 +800001ac: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> +800001b0: 00700193 li gp,7 +800001b4: 13d31663 bne t1,t4,800002e0 + +800001b8 : +800001b8: 00000213 li tp,0 +800001bc: 00ff10b7 lui ra,0xff1 +800001c0: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701> +800001c4: 70f0cf13 xori t5,ra,1807 +800001c8: 00000013 nop +800001cc: 000f0313 mv t1,t5 +800001d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800001d4: 00200293 li t0,2 +800001d8: fe5212e3 bne tp,t0,800001bc +800001dc: 00ff1eb7 lui t4,0xff1 +800001e0: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> +800001e4: 00800193 li gp,8 +800001e8: 0fd31c63 bne t1,t4,800002e0 + +800001ec : +800001ec: 00000213 li tp,0 +800001f0: f00ff0b7 lui ra,0xf00ff +800001f4: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +800001f8: 0f00cf13 xori t5,ra,240 +800001fc: 00000013 nop +80000200: 00000013 nop +80000204: 000f0313 mv t1,t5 +80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000020c: 00200293 li t0,2 +80000210: fe5210e3 bne tp,t0,800001f0 +80000214: f00ffeb7 lui t4,0xf00ff +80000218: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> +8000021c: 00900193 li gp,9 +80000220: 0dd31063 bne t1,t4,800002e0 + +80000224 : +80000224: 00000213 li tp,0 +80000228: 0ff010b7 lui ra,0xff01 +8000022c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80000230: 0f00cf13 xori t5,ra,240 +80000234: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000238: 00200293 li t0,2 +8000023c: fe5216e3 bne tp,t0,80000228 +80000240: 0ff01eb7 lui t4,0xff01 +80000244: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> +80000248: 00a00193 li gp,10 +8000024c: 09df1a63 bne t5,t4,800002e0 + +80000250 : +80000250: 00000213 li tp,0 +80000254: 00ff10b7 lui ra,0xff1 +80000258: fff08093 addi ra,ra,-1 # ff0fff <_start-0x7f00f001> +8000025c: 00000013 nop +80000260: 00f0cf13 xori t5,ra,15 +80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000268: 00200293 li t0,2 +8000026c: fe5214e3 bne tp,t0,80000254 +80000270: 00ff1eb7 lui t4,0xff1 +80000274: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> +80000278: 00b00193 li gp,11 +8000027c: 07df1263 bne t5,t4,800002e0 + +80000280 : +80000280: 00000213 li tp,0 +80000284: f00ff0b7 lui ra,0xf00ff +80000288: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f> +8000028c: 00000013 nop +80000290: 00000013 nop +80000294: 0f00cf13 xori t5,ra,240 +80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000029c: 00200293 li t0,2 +800002a0: fe5212e3 bne tp,t0,80000284 +800002a4: f00ffeb7 lui t4,0xf00ff +800002a8: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff> +800002ac: 00c00193 li gp,12 +800002b0: 03df1863 bne t5,t4,800002e0 + +800002b4 : +800002b4: 0f004093 xori ra,zero,240 +800002b8: 0f000e93 li t4,240 +800002bc: 00d00193 li gp,13 +800002c0: 03d09063 bne ra,t4,800002e0 + +800002c4 : +800002c4: 00ff00b7 lui ra,0xff0 +800002c8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +800002cc: 70f0c013 xori zero,ra,1807 +800002d0: 00000e93 li t4,0 +800002d4: 00e00193 li gp,14 +800002d8: 01d01463 bne zero,t4,800002e0 +800002dc: 00301c63 bne zero,gp,800002f4 + +800002e0 : +800002e0: 0ff0000f fence +800002e4: 00018063 beqz gp,800002e4 +800002e8: 00119193 slli gp,gp,0x1 +800002ec: 0011e193 ori gp,gp,1 +800002f0: 00000073 ecall + +800002f4 : +800002f4: 0ff0000f fence +800002f8: 00100193 li gp,1 +800002fc: 00000073 ecall +80000300: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-add b/Tests/isa/rv32ui-v-add new file mode 100644 index 0000000..7cf01da Binary files /dev/null and b/Tests/isa/rv32ui-v-add differ diff --git a/Tests/isa/rv32ui-v-add.dump b/Tests/isa/rv32ui-v-add.dump new file mode 100644 index 0000000..d5d4214 --- /dev/null +++ b/Tests/isa/rv32ui-v-add.dump @@ -0,0 +1,1294 @@ + +rv32ui-v-add: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: c1458593 addi a1,a1,-1004 # 800030dc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c3058593 addi a1,a1,-976 # 80003168 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bdc58593 addi a1,a1,-1060 # 80003180 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: b1058593 addi a1,a1,-1264 # 80003120 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: b0058593 addi a1,a1,-1280 # 80003248 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a6858593 addi a1,a1,-1432 # 80003224 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 96460613 addi a2,a2,-1692 # 80003274 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 87460613 addi a2,a2,-1932 # 800031f0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7f460613 addi a2,a2,2036 # 800031bc +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03100793 li a5,49 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0db0b7b7 lui a5,0xdb0b +80002b9c: 00080637 lui a2,0x80 +80002ba0: 65278793 addi a5,a5,1618 # db0b652 <_start-0x724f49ae> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00000113 li sp,0 +80002be8: 00208f33 add t5,ra,sp +80002bec: 00000e93 li t4,0 +80002bf0: 00200193 li gp,2 +80002bf4: 4ddf1663 bne t5,t4,800030c0 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 00208f33 add t5,ra,sp +80002c04: 00200e93 li t4,2 +80002c08: 00300193 li gp,3 +80002c0c: 4bdf1a63 bne t5,t4,800030c0 + +80002c10 : +80002c10: 00300093 li ra,3 +80002c14: 00700113 li sp,7 +80002c18: 00208f33 add t5,ra,sp +80002c1c: 00a00e93 li t4,10 +80002c20: 00400193 li gp,4 +80002c24: 49df1e63 bne t5,t4,800030c0 + +80002c28 : +80002c28: 00000093 li ra,0 +80002c2c: ffff8137 lui sp,0xffff8 +80002c30: 00208f33 add t5,ra,sp +80002c34: ffff8eb7 lui t4,0xffff8 +80002c38: 00500193 li gp,5 +80002c3c: 49df1263 bne t5,t4,800030c0 + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00000113 li sp,0 +80002c48: 00208f33 add t5,ra,sp +80002c4c: 80000eb7 lui t4,0x80000 +80002c50: 00600193 li gp,6 +80002c54: 47df1663 bne t5,t4,800030c0 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: ffff8137 lui sp,0xffff8 +80002c60: 00208f33 add t5,ra,sp +80002c64: 7fff8eb7 lui t4,0x7fff8 +80002c68: 00700193 li gp,7 +80002c6c: 45df1a63 bne t5,t4,800030c0 + +80002c70 : +80002c70: 00000093 li ra,0 +80002c74: 00008137 lui sp,0x8 +80002c78: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002c7c: 00208f33 add t5,ra,sp +80002c80: 00008eb7 lui t4,0x8 +80002c84: fffe8e93 addi t4,t4,-1 # 7fff <_start-0x7fff8001> +80002c88: 00800193 li gp,8 +80002c8c: 43df1a63 bne t5,t4,800030c0 + +80002c90 : +80002c90: 800000b7 lui ra,0x80000 +80002c94: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c98: 00000113 li sp,0 +80002c9c: 00208f33 add t5,ra,sp +80002ca0: 80000eb7 lui t4,0x80000 +80002ca4: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07> +80002ca8: 00900193 li gp,9 +80002cac: 41df1a63 bne t5,t4,800030c0 + +80002cb0 : +80002cb0: 800000b7 lui ra,0x80000 +80002cb4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cb8: 00008137 lui sp,0x8 +80002cbc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002cc0: 00208f33 add t5,ra,sp +80002cc4: 80008eb7 lui t4,0x80008 +80002cc8: ffee8e93 addi t4,t4,-2 # 80007ffe <_end+0x1c06> +80002ccc: 00a00193 li gp,10 +80002cd0: 3fdf1863 bne t5,t4,800030c0 + +80002cd4 : +80002cd4: 800000b7 lui ra,0x80000 +80002cd8: 00008137 lui sp,0x8 +80002cdc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002ce0: 00208f33 add t5,ra,sp +80002ce4: 80008eb7 lui t4,0x80008 +80002ce8: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x1c07> +80002cec: 00b00193 li gp,11 +80002cf0: 3ddf1863 bne t5,t4,800030c0 + +80002cf4 : +80002cf4: 800000b7 lui ra,0x80000 +80002cf8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cfc: ffff8137 lui sp,0xffff8 +80002d00: 00208f33 add t5,ra,sp +80002d04: 7fff8eb7 lui t4,0x7fff8 +80002d08: fffe8e93 addi t4,t4,-1 # 7fff7fff <_start-0x8001> +80002d0c: 00c00193 li gp,12 +80002d10: 3bdf1863 bne t5,t4,800030c0 + +80002d14 : +80002d14: 00000093 li ra,0 +80002d18: fff00113 li sp,-1 +80002d1c: 00208f33 add t5,ra,sp +80002d20: fff00e93 li t4,-1 +80002d24: 00d00193 li gp,13 +80002d28: 39df1c63 bne t5,t4,800030c0 + +80002d2c : +80002d2c: fff00093 li ra,-1 +80002d30: 00100113 li sp,1 +80002d34: 00208f33 add t5,ra,sp +80002d38: 00000e93 li t4,0 +80002d3c: 00e00193 li gp,14 +80002d40: 39df1063 bne t5,t4,800030c0 + +80002d44 : +80002d44: fff00093 li ra,-1 +80002d48: fff00113 li sp,-1 +80002d4c: 00208f33 add t5,ra,sp +80002d50: ffe00e93 li t4,-2 +80002d54: 00f00193 li gp,15 +80002d58: 37df1463 bne t5,t4,800030c0 + +80002d5c : +80002d5c: 00100093 li ra,1 +80002d60: 80000137 lui sp,0x80000 +80002d64: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffff9c07> +80002d68: 00208f33 add t5,ra,sp +80002d6c: 80000eb7 lui t4,0x80000 +80002d70: 01000193 li gp,16 +80002d74: 35df1663 bne t5,t4,800030c0 + +80002d78 : +80002d78: 00d00093 li ra,13 +80002d7c: 00b00113 li sp,11 +80002d80: 002080b3 add ra,ra,sp +80002d84: 01800e93 li t4,24 +80002d88: 01100193 li gp,17 +80002d8c: 33d09a63 bne ra,t4,800030c0 + +80002d90 : +80002d90: 00e00093 li ra,14 +80002d94: 00b00113 li sp,11 +80002d98: 00208133 add sp,ra,sp +80002d9c: 01900e93 li t4,25 +80002da0: 01200193 li gp,18 +80002da4: 31d11e63 bne sp,t4,800030c0 + +80002da8 : +80002da8: 00d00093 li ra,13 +80002dac: 001080b3 add ra,ra,ra +80002db0: 01a00e93 li t4,26 +80002db4: 01300193 li gp,19 +80002db8: 31d09463 bne ra,t4,800030c0 + +80002dbc : +80002dbc: 00000213 li tp,0 +80002dc0: 00d00093 li ra,13 +80002dc4: 00b00113 li sp,11 +80002dc8: 00208f33 add t5,ra,sp +80002dcc: 000f0313 mv t1,t5 +80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd4: 00200293 li t0,2 +80002dd8: fe5214e3 bne tp,t0,80002dc0 +80002ddc: 01800e93 li t4,24 +80002de0: 01400193 li gp,20 +80002de4: 2dd31e63 bne t1,t4,800030c0 + +80002de8 : +80002de8: 00000213 li tp,0 +80002dec: 00e00093 li ra,14 +80002df0: 00b00113 li sp,11 +80002df4: 00208f33 add t5,ra,sp +80002df8: 00000013 nop +80002dfc: 000f0313 mv t1,t5 +80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e04: 00200293 li t0,2 +80002e08: fe5212e3 bne tp,t0,80002dec +80002e0c: 01900e93 li t4,25 +80002e10: 01500193 li gp,21 +80002e14: 2bd31663 bne t1,t4,800030c0 + +80002e18 : +80002e18: 00000213 li tp,0 +80002e1c: 00f00093 li ra,15 +80002e20: 00b00113 li sp,11 +80002e24: 00208f33 add t5,ra,sp +80002e28: 00000013 nop +80002e2c: 00000013 nop +80002e30: 000f0313 mv t1,t5 +80002e34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e38: 00200293 li t0,2 +80002e3c: fe5210e3 bne tp,t0,80002e1c +80002e40: 01a00e93 li t4,26 +80002e44: 01600193 li gp,22 +80002e48: 27d31c63 bne t1,t4,800030c0 + +80002e4c : +80002e4c: 00000213 li tp,0 +80002e50: 00d00093 li ra,13 +80002e54: 00b00113 li sp,11 +80002e58: 00208f33 add t5,ra,sp +80002e5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e60: 00200293 li t0,2 +80002e64: fe5216e3 bne tp,t0,80002e50 +80002e68: 01800e93 li t4,24 +80002e6c: 01700193 li gp,23 +80002e70: 25df1863 bne t5,t4,800030c0 + +80002e74 : +80002e74: 00000213 li tp,0 +80002e78: 00e00093 li ra,14 +80002e7c: 00b00113 li sp,11 +80002e80: 00000013 nop +80002e84: 00208f33 add t5,ra,sp +80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e8c: 00200293 li t0,2 +80002e90: fe5214e3 bne tp,t0,80002e78 +80002e94: 01900e93 li t4,25 +80002e98: 01800193 li gp,24 +80002e9c: 23df1263 bne t5,t4,800030c0 + +80002ea0 : +80002ea0: 00000213 li tp,0 +80002ea4: 00f00093 li ra,15 +80002ea8: 00b00113 li sp,11 +80002eac: 00000013 nop +80002eb0: 00000013 nop +80002eb4: 00208f33 add t5,ra,sp +80002eb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ebc: 00200293 li t0,2 +80002ec0: fe5212e3 bne tp,t0,80002ea4 +80002ec4: 01a00e93 li t4,26 +80002ec8: 01900193 li gp,25 +80002ecc: 1fdf1a63 bne t5,t4,800030c0 + +80002ed0 : +80002ed0: 00000213 li tp,0 +80002ed4: 00d00093 li ra,13 +80002ed8: 00000013 nop +80002edc: 00b00113 li sp,11 +80002ee0: 00208f33 add t5,ra,sp +80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ee8: 00200293 li t0,2 +80002eec: fe5214e3 bne tp,t0,80002ed4 +80002ef0: 01800e93 li t4,24 +80002ef4: 01a00193 li gp,26 +80002ef8: 1ddf1463 bne t5,t4,800030c0 + +80002efc : +80002efc: 00000213 li tp,0 +80002f00: 00e00093 li ra,14 +80002f04: 00000013 nop +80002f08: 00b00113 li sp,11 +80002f0c: 00000013 nop +80002f10: 00208f33 add t5,ra,sp +80002f14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f18: 00200293 li t0,2 +80002f1c: fe5212e3 bne tp,t0,80002f00 +80002f20: 01900e93 li t4,25 +80002f24: 01b00193 li gp,27 +80002f28: 19df1c63 bne t5,t4,800030c0 + +80002f2c : +80002f2c: 00000213 li tp,0 +80002f30: 00f00093 li ra,15 +80002f34: 00000013 nop +80002f38: 00000013 nop +80002f3c: 00b00113 li sp,11 +80002f40: 00208f33 add t5,ra,sp +80002f44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f48: 00200293 li t0,2 +80002f4c: fe5212e3 bne tp,t0,80002f30 +80002f50: 01a00e93 li t4,26 +80002f54: 01c00193 li gp,28 +80002f58: 17df1463 bne t5,t4,800030c0 + +80002f5c : +80002f5c: 00000213 li tp,0 +80002f60: 00b00113 li sp,11 +80002f64: 00d00093 li ra,13 +80002f68: 00208f33 add t5,ra,sp +80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f70: 00200293 li t0,2 +80002f74: fe5216e3 bne tp,t0,80002f60 +80002f78: 01800e93 li t4,24 +80002f7c: 01d00193 li gp,29 +80002f80: 15df1063 bne t5,t4,800030c0 + +80002f84 : +80002f84: 00000213 li tp,0 +80002f88: 00b00113 li sp,11 +80002f8c: 00e00093 li ra,14 +80002f90: 00000013 nop +80002f94: 00208f33 add t5,ra,sp +80002f98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f9c: 00200293 li t0,2 +80002fa0: fe5214e3 bne tp,t0,80002f88 +80002fa4: 01900e93 li t4,25 +80002fa8: 01e00193 li gp,30 +80002fac: 11df1a63 bne t5,t4,800030c0 + +80002fb0 : +80002fb0: 00000213 li tp,0 +80002fb4: 00b00113 li sp,11 +80002fb8: 00f00093 li ra,15 +80002fbc: 00000013 nop +80002fc0: 00000013 nop +80002fc4: 00208f33 add t5,ra,sp +80002fc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fcc: 00200293 li t0,2 +80002fd0: fe5212e3 bne tp,t0,80002fb4 +80002fd4: 01a00e93 li t4,26 +80002fd8: 01f00193 li gp,31 +80002fdc: 0fdf1263 bne t5,t4,800030c0 + +80002fe0 : +80002fe0: 00000213 li tp,0 +80002fe4: 00b00113 li sp,11 +80002fe8: 00000013 nop +80002fec: 00d00093 li ra,13 +80002ff0: 00208f33 add t5,ra,sp +80002ff4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ff8: 00200293 li t0,2 +80002ffc: fe5214e3 bne tp,t0,80002fe4 +80003000: 01800e93 li t4,24 +80003004: 02000193 li gp,32 +80003008: 0bdf1c63 bne t5,t4,800030c0 + +8000300c : +8000300c: 00000213 li tp,0 +80003010: 00b00113 li sp,11 +80003014: 00000013 nop +80003018: 00e00093 li ra,14 +8000301c: 00000013 nop +80003020: 00208f33 add t5,ra,sp +80003024: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003028: 00200293 li t0,2 +8000302c: fe5212e3 bne tp,t0,80003010 +80003030: 01900e93 li t4,25 +80003034: 02100193 li gp,33 +80003038: 09df1463 bne t5,t4,800030c0 + +8000303c : +8000303c: 00000213 li tp,0 +80003040: 00b00113 li sp,11 +80003044: 00000013 nop +80003048: 00000013 nop +8000304c: 00f00093 li ra,15 +80003050: 00208f33 add t5,ra,sp +80003054: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003058: 00200293 li t0,2 +8000305c: fe5212e3 bne tp,t0,80003040 +80003060: 01a00e93 li t4,26 +80003064: 02200193 li gp,34 +80003068: 05df1c63 bne t5,t4,800030c0 + +8000306c : +8000306c: 00f00093 li ra,15 +80003070: 00100133 add sp,zero,ra +80003074: 00f00e93 li t4,15 +80003078: 02300193 li gp,35 +8000307c: 05d11263 bne sp,t4,800030c0 + +80003080 : +80003080: 02000093 li ra,32 +80003084: 00008133 add sp,ra,zero +80003088: 02000e93 li t4,32 +8000308c: 02400193 li gp,36 +80003090: 03d11863 bne sp,t4,800030c0 + +80003094 : +80003094: 000000b3 add ra,zero,zero +80003098: 00000e93 li t4,0 +8000309c: 02500193 li gp,37 +800030a0: 03d09063 bne ra,t4,800030c0 + +800030a4 : +800030a4: 01000093 li ra,16 +800030a8: 01e00113 li sp,30 +800030ac: 00208033 add zero,ra,sp +800030b0: 00000e93 li t4,0 +800030b4: 02600193 li gp,38 +800030b8: 01d01463 bne zero,t4,800030c0 +800030bc: 00301a63 bne zero,gp,800030d0 + +800030c0 : +800030c0: 00119513 slli a0,gp,0x1 +800030c4: 00050063 beqz a0,800030c4 +800030c8: 00156513 ori a0,a0,1 +800030cc: 00000073 ecall + +800030d0 : +800030d0: 00100513 li a0,1 +800030d4: 00000073 ecall +800030d8: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-addi b/Tests/isa/rv32ui-v-addi new file mode 100644 index 0000000..0e6d28c Binary files /dev/null and b/Tests/isa/rv32ui-v-addi differ diff --git a/Tests/isa/rv32ui-v-addi.dump b/Tests/isa/rv32ui-v-addi.dump new file mode 100644 index 0000000..7268180 --- /dev/null +++ b/Tests/isa/rv32ui-v-addi.dump @@ -0,0 +1,1118 @@ + +rv32ui-v-addi: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9bc58593 addi a1,a1,-1604 # 80002e84 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9d858593 addi a1,a1,-1576 # 80002f10 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 98458593 addi a1,a1,-1660 # 80002f28 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8b858593 addi a1,a1,-1864 # 80002ec8 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8a858593 addi a1,a1,-1880 # 80002ff0 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 81058593 addi a1,a1,-2032 # 80002fcc +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 70c60613 addi a2,a2,1804 # 8000301c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 61c60613 addi a2,a2,1564 # 80002f98 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 59c60613 addi a2,a2,1436 # 80002f64 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00800793 li a5,8 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0d24a7b7 lui a5,0xd24a +80002b9c: 00080637 lui a2,0x80 +80002ba0: c3678793 addi a5,a5,-970 # d249c36 <_start-0x72db63ca> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00008f13 mv t5,ra +80002be8: 00000e93 li t4,0 +80002bec: 00200193 li gp,2 +80002bf0: 27df1c63 bne t5,t4,80002e68 + +80002bf4 : +80002bf4: 00100093 li ra,1 +80002bf8: 00108f13 addi t5,ra,1 +80002bfc: 00200e93 li t4,2 +80002c00: 00300193 li gp,3 +80002c04: 27df1263 bne t5,t4,80002e68 + +80002c08 : +80002c08: 00300093 li ra,3 +80002c0c: 00708f13 addi t5,ra,7 +80002c10: 00a00e93 li t4,10 +80002c14: 00400193 li gp,4 +80002c18: 25df1863 bne t5,t4,80002e68 + +80002c1c : +80002c1c: 00000093 li ra,0 +80002c20: 80008f13 addi t5,ra,-2048 +80002c24: 80000e93 li t4,-2048 +80002c28: 00500193 li gp,5 +80002c2c: 23df1e63 bne t5,t4,80002e68 + +80002c30 : +80002c30: 800000b7 lui ra,0x80000 +80002c34: 00008f13 mv t5,ra +80002c38: 80000eb7 lui t4,0x80000 +80002c3c: 00600193 li gp,6 +80002c40: 23df1463 bne t5,t4,80002e68 + +80002c44 : +80002c44: 800000b7 lui ra,0x80000 +80002c48: 80008f13 addi t5,ra,-2048 # 7ffff800 <_end+0xffff9408> +80002c4c: 80000eb7 lui t4,0x80000 +80002c50: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408> +80002c54: 00700193 li gp,7 +80002c58: 21df1863 bne t5,t4,80002e68 + +80002c5c : +80002c5c: 00000093 li ra,0 +80002c60: 7ff08f13 addi t5,ra,2047 +80002c64: 7ff00e93 li t4,2047 +80002c68: 00800193 li gp,8 +80002c6c: 1fdf1e63 bne t5,t4,80002e68 + +80002c70 : +80002c70: 800000b7 lui ra,0x80000 +80002c74: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c78: 00008f13 mv t5,ra +80002c7c: 80000eb7 lui t4,0x80000 +80002c80: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07> +80002c84: 00900193 li gp,9 +80002c88: 1fdf1063 bne t5,t4,80002e68 + +80002c8c : +80002c8c: 800000b7 lui ra,0x80000 +80002c90: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c94: 7ff08f13 addi t5,ra,2047 +80002c98: 80000eb7 lui t4,0x80000 +80002c9c: 7fee8e93 addi t4,t4,2046 # 800007fe <_end+0xffffa406> +80002ca0: 00a00193 li gp,10 +80002ca4: 1ddf1263 bne t5,t4,80002e68 + +80002ca8 : +80002ca8: 800000b7 lui ra,0x80000 +80002cac: 7ff08f13 addi t5,ra,2047 # 800007ff <_end+0xffffa407> +80002cb0: 80000eb7 lui t4,0x80000 +80002cb4: 7ffe8e93 addi t4,t4,2047 # 800007ff <_end+0xffffa407> +80002cb8: 00b00193 li gp,11 +80002cbc: 1bdf1663 bne t5,t4,80002e68 + +80002cc0 : +80002cc0: 800000b7 lui ra,0x80000 +80002cc4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cc8: 80008f13 addi t5,ra,-2048 +80002ccc: 7ffffeb7 lui t4,0x7ffff +80002cd0: 7ffe8e93 addi t4,t4,2047 # 7ffff7ff <_start-0x801> +80002cd4: 00c00193 li gp,12 +80002cd8: 19df1863 bne t5,t4,80002e68 + +80002cdc : +80002cdc: 00000093 li ra,0 +80002ce0: fff08f13 addi t5,ra,-1 +80002ce4: fff00e93 li t4,-1 +80002ce8: 00d00193 li gp,13 +80002cec: 17df1e63 bne t5,t4,80002e68 + +80002cf0 : +80002cf0: fff00093 li ra,-1 +80002cf4: 00108f13 addi t5,ra,1 +80002cf8: 00000e93 li t4,0 +80002cfc: 00e00193 li gp,14 +80002d00: 17df1463 bne t5,t4,80002e68 + +80002d04 : +80002d04: fff00093 li ra,-1 +80002d08: fff08f13 addi t5,ra,-1 +80002d0c: ffe00e93 li t4,-2 +80002d10: 00f00193 li gp,15 +80002d14: 15df1a63 bne t5,t4,80002e68 + +80002d18 : +80002d18: 800000b7 lui ra,0x80000 +80002d1c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002d20: 00108f13 addi t5,ra,1 +80002d24: 80000eb7 lui t4,0x80000 +80002d28: 01000193 li gp,16 +80002d2c: 13df1e63 bne t5,t4,80002e68 + +80002d30 : +80002d30: 00d00093 li ra,13 +80002d34: 00b08093 addi ra,ra,11 +80002d38: 01800e93 li t4,24 +80002d3c: 01100193 li gp,17 +80002d40: 13d09463 bne ra,t4,80002e68 + +80002d44 : +80002d44: 00000213 li tp,0 +80002d48: 00d00093 li ra,13 +80002d4c: 00b08f13 addi t5,ra,11 +80002d50: 000f0313 mv t1,t5 +80002d54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d58: 00200293 li t0,2 +80002d5c: fe5216e3 bne tp,t0,80002d48 +80002d60: 01800e93 li t4,24 +80002d64: 01200193 li gp,18 +80002d68: 11d31063 bne t1,t4,80002e68 + +80002d6c : +80002d6c: 00000213 li tp,0 +80002d70: 00d00093 li ra,13 +80002d74: 00a08f13 addi t5,ra,10 +80002d78: 00000013 nop +80002d7c: 000f0313 mv t1,t5 +80002d80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d84: 00200293 li t0,2 +80002d88: fe5214e3 bne tp,t0,80002d70 +80002d8c: 01700e93 li t4,23 +80002d90: 01300193 li gp,19 +80002d94: 0dd31a63 bne t1,t4,80002e68 + +80002d98 : +80002d98: 00000213 li tp,0 +80002d9c: 00d00093 li ra,13 +80002da0: 00908f13 addi t5,ra,9 +80002da4: 00000013 nop +80002da8: 00000013 nop +80002dac: 000f0313 mv t1,t5 +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5212e3 bne tp,t0,80002d9c +80002dbc: 01600e93 li t4,22 +80002dc0: 01400193 li gp,20 +80002dc4: 0bd31263 bne t1,t4,80002e68 + +80002dc8 : +80002dc8: 00000213 li tp,0 +80002dcc: 00d00093 li ra,13 +80002dd0: 00b08f13 addi t5,ra,11 +80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd8: 00200293 li t0,2 +80002ddc: fe5218e3 bne tp,t0,80002dcc +80002de0: 01800e93 li t4,24 +80002de4: 01500193 li gp,21 +80002de8: 09df1063 bne t5,t4,80002e68 + +80002dec : +80002dec: 00000213 li tp,0 +80002df0: 00d00093 li ra,13 +80002df4: 00000013 nop +80002df8: 00a08f13 addi t5,ra,10 +80002dfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e00: 00200293 li t0,2 +80002e04: fe5216e3 bne tp,t0,80002df0 +80002e08: 01700e93 li t4,23 +80002e0c: 01600193 li gp,22 +80002e10: 05df1c63 bne t5,t4,80002e68 + +80002e14 : +80002e14: 00000213 li tp,0 +80002e18: 00d00093 li ra,13 +80002e1c: 00000013 nop +80002e20: 00000013 nop +80002e24: 00908f13 addi t5,ra,9 +80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e2c: 00200293 li t0,2 +80002e30: fe5214e3 bne tp,t0,80002e18 +80002e34: 01600e93 li t4,22 +80002e38: 01700193 li gp,23 +80002e3c: 03df1663 bne t5,t4,80002e68 + +80002e40 : +80002e40: 02000093 li ra,32 +80002e44: 02000e93 li t4,32 +80002e48: 01800193 li gp,24 +80002e4c: 01d09e63 bne ra,t4,80002e68 + +80002e50 : +80002e50: 02100093 li ra,33 +80002e54: 03208013 addi zero,ra,50 +80002e58: 00000e93 li t4,0 +80002e5c: 01900193 li gp,25 +80002e60: 01d01463 bne zero,t4,80002e68 +80002e64: 00301a63 bne zero,gp,80002e78 + +80002e68 : +80002e68: 00119513 slli a0,gp,0x1 +80002e6c: 00050063 beqz a0,80002e6c +80002e70: 00156513 ori a0,a0,1 +80002e74: 00000073 ecall + +80002e78 : +80002e78: 00100513 li a0,1 +80002e7c: 00000073 ecall +80002e80: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-and b/Tests/isa/rv32ui-v-and new file mode 100644 index 0000000..9c954db Binary files /dev/null and b/Tests/isa/rv32ui-v-and differ diff --git a/Tests/isa/rv32ui-v-and.dump b/Tests/isa/rv32ui-v-and.dump new file mode 100644 index 0000000..26b8f0b --- /dev/null +++ b/Tests/isa/rv32ui-v-and.dump @@ -0,0 +1,1262 @@ + +rv32ui-v-and: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bec58593 addi a1,a1,-1044 # 800030b4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c0858593 addi a1,a1,-1016 # 80003140 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bb458593 addi a1,a1,-1100 # 80003158 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: ae858593 addi a1,a1,-1304 # 800030f8 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ad858593 addi a1,a1,-1320 # 80003220 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a4058593 addi a1,a1,-1472 # 800031fc +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 93c60613 addi a2,a2,-1732 # 8000324c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 84c60613 addi a2,a2,-1972 # 800031c8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7cc60613 addi a2,a2,1996 # 80003194 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00b00793 li a5,11 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 07c677b7 lui a5,0x7c67 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 35c78793 addi a5,a5,860 # 7c6735c <_start-0x78398ca4> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: ff0100b7 lui ra,0xff010 +80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002be8: 0f0f1137 lui sp,0xf0f1 +80002bec: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002bf0: 0020ff33 and t5,ra,sp +80002bf4: 0f001eb7 lui t4,0xf001 +80002bf8: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80002bfc: 00200193 li gp,2 +80002c00: 49df1c63 bne t5,t4,80003098 + +80002c04 : +80002c04: 0ff010b7 lui ra,0xff01 +80002c08: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c0c: f0f0f137 lui sp,0xf0f0f +80002c10: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002c14: 0020ff33 and t5,ra,sp +80002c18: 00f00eb7 lui t4,0xf00 +80002c1c: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80002c20: 00300193 li gp,3 +80002c24: 47df1a63 bne t5,t4,80003098 + +80002c28 : +80002c28: 00ff00b7 lui ra,0xff0 +80002c2c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002c30: 0f0f1137 lui sp,0xf0f1 +80002c34: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002c38: 0020ff33 and t5,ra,sp +80002c3c: 000f0eb7 lui t4,0xf0 +80002c40: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80002c44: 00400193 li gp,4 +80002c48: 45df1863 bne t5,t4,80003098 + +80002c4c : +80002c4c: f00ff0b7 lui ra,0xf00ff +80002c50: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f8c17> +80002c54: f0f0f137 lui sp,0xf0f0f +80002c58: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002c5c: 0020ff33 and t5,ra,sp +80002c60: f000feb7 lui t4,0xf000f +80002c64: 00500193 li gp,5 +80002c68: 43df1863 bne t5,t4,80003098 + +80002c6c : +80002c6c: ff0100b7 lui ra,0xff010 +80002c70: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002c74: 0f0f1137 lui sp,0xf0f1 +80002c78: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002c7c: 0020f0b3 and ra,ra,sp +80002c80: 0f001eb7 lui t4,0xf001 +80002c84: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80002c88: 00600193 li gp,6 +80002c8c: 41d09663 bne ra,t4,80003098 + +80002c90 : +80002c90: 0ff010b7 lui ra,0xff01 +80002c94: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c98: f0f0f137 lui sp,0xf0f0f +80002c9c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002ca0: 0020f133 and sp,ra,sp +80002ca4: 00f00eb7 lui t4,0xf00 +80002ca8: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80002cac: 00700193 li gp,7 +80002cb0: 3fd11463 bne sp,t4,80003098 + +80002cb4 : +80002cb4: ff0100b7 lui ra,0xff010 +80002cb8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002cbc: 0010f0b3 and ra,ra,ra +80002cc0: ff010eb7 lui t4,0xff010 +80002cc4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002cc8: 00800193 li gp,8 +80002ccc: 3dd09663 bne ra,t4,80003098 + +80002cd0 : +80002cd0: 00000213 li tp,0 +80002cd4: ff0100b7 lui ra,0xff010 +80002cd8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002cdc: 0f0f1137 lui sp,0xf0f1 +80002ce0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ce4: 0020ff33 and t5,ra,sp +80002ce8: 000f0313 mv t1,t5 +80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cf0: 00200293 li t0,2 +80002cf4: fe5210e3 bne tp,t0,80002cd4 +80002cf8: 0f001eb7 lui t4,0xf001 +80002cfc: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80002d00: 00900193 li gp,9 +80002d04: 39d31a63 bne t1,t4,80003098 + +80002d08 : +80002d08: 00000213 li tp,0 +80002d0c: 0ff010b7 lui ra,0xff01 +80002d10: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002d14: f0f0f137 lui sp,0xf0f0f +80002d18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002d1c: 0020ff33 and t5,ra,sp +80002d20: 00000013 nop +80002d24: 000f0313 mv t1,t5 +80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d2c: 00200293 li t0,2 +80002d30: fc521ee3 bne tp,t0,80002d0c +80002d34: 00f00eb7 lui t4,0xf00 +80002d38: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80002d3c: 00a00193 li gp,10 +80002d40: 35d31c63 bne t1,t4,80003098 + +80002d44 : +80002d44: 00000213 li tp,0 +80002d48: 00ff00b7 lui ra,0xff0 +80002d4c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002d50: 0f0f1137 lui sp,0xf0f1 +80002d54: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002d58: 0020ff33 and t5,ra,sp +80002d5c: 00000013 nop +80002d60: 00000013 nop +80002d64: 000f0313 mv t1,t5 +80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d6c: 00200293 li t0,2 +80002d70: fc521ce3 bne tp,t0,80002d48 +80002d74: 000f0eb7 lui t4,0xf0 +80002d78: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80002d7c: 00b00193 li gp,11 +80002d80: 31d31c63 bne t1,t4,80003098 + +80002d84 : +80002d84: 00000213 li tp,0 +80002d88: ff0100b7 lui ra,0xff010 +80002d8c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002d90: 0f0f1137 lui sp,0xf0f1 +80002d94: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002d98: 0020ff33 and t5,ra,sp +80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da0: 00200293 li t0,2 +80002da4: fe5212e3 bne tp,t0,80002d88 +80002da8: 0f001eb7 lui t4,0xf001 +80002dac: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80002db0: 00c00193 li gp,12 +80002db4: 2fdf1263 bne t5,t4,80003098 + +80002db8 : +80002db8: 00000213 li tp,0 +80002dbc: 0ff010b7 lui ra,0xff01 +80002dc0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002dc4: f0f0f137 lui sp,0xf0f0f +80002dc8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002dcc: 00000013 nop +80002dd0: 0020ff33 and t5,ra,sp +80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd8: 00200293 li t0,2 +80002ddc: fe5210e3 bne tp,t0,80002dbc +80002de0: 00f00eb7 lui t4,0xf00 +80002de4: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80002de8: 00d00193 li gp,13 +80002dec: 2bdf1663 bne t5,t4,80003098 + +80002df0 : +80002df0: 00000213 li tp,0 +80002df4: 00ff00b7 lui ra,0xff0 +80002df8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002dfc: 0f0f1137 lui sp,0xf0f1 +80002e00: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002e04: 00000013 nop +80002e08: 00000013 nop +80002e0c: 0020ff33 and t5,ra,sp +80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e14: 00200293 li t0,2 +80002e18: fc521ee3 bne tp,t0,80002df4 +80002e1c: 000f0eb7 lui t4,0xf0 +80002e20: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80002e24: 00e00193 li gp,14 +80002e28: 27df1863 bne t5,t4,80003098 + +80002e2c : +80002e2c: 00000213 li tp,0 +80002e30: ff0100b7 lui ra,0xff010 +80002e34: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002e38: 00000013 nop +80002e3c: 0f0f1137 lui sp,0xf0f1 +80002e40: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002e44: 0020ff33 and t5,ra,sp +80002e48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e4c: 00200293 li t0,2 +80002e50: fe5210e3 bne tp,t0,80002e30 +80002e54: 0f001eb7 lui t4,0xf001 +80002e58: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80002e5c: 00f00193 li gp,15 +80002e60: 23df1c63 bne t5,t4,80003098 + +80002e64 : +80002e64: 00000213 li tp,0 +80002e68: 0ff010b7 lui ra,0xff01 +80002e6c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002e70: 00000013 nop +80002e74: f0f0f137 lui sp,0xf0f0f +80002e78: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002e7c: 00000013 nop +80002e80: 0020ff33 and t5,ra,sp +80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e88: 00200293 li t0,2 +80002e8c: fc521ee3 bne tp,t0,80002e68 +80002e90: 00f00eb7 lui t4,0xf00 +80002e94: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80002e98: 01000193 li gp,16 +80002e9c: 1fdf1e63 bne t5,t4,80003098 + +80002ea0 : +80002ea0: 00000213 li tp,0 +80002ea4: 00ff00b7 lui ra,0xff0 +80002ea8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002eac: 00000013 nop +80002eb0: 00000013 nop +80002eb4: 0f0f1137 lui sp,0xf0f1 +80002eb8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ebc: 0020ff33 and t5,ra,sp +80002ec0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ec4: 00200293 li t0,2 +80002ec8: fc521ee3 bne tp,t0,80002ea4 +80002ecc: 000f0eb7 lui t4,0xf0 +80002ed0: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80002ed4: 01100193 li gp,17 +80002ed8: 1ddf1063 bne t5,t4,80003098 + +80002edc : +80002edc: 00000213 li tp,0 +80002ee0: 0f0f1137 lui sp,0xf0f1 +80002ee4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ee8: ff0100b7 lui ra,0xff010 +80002eec: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002ef0: 0020ff33 and t5,ra,sp +80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ef8: 00200293 li t0,2 +80002efc: fe5212e3 bne tp,t0,80002ee0 +80002f00: 0f001eb7 lui t4,0xf001 +80002f04: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80002f08: 01200193 li gp,18 +80002f0c: 19df1663 bne t5,t4,80003098 + +80002f10 : +80002f10: 00000213 li tp,0 +80002f14: f0f0f137 lui sp,0xf0f0f +80002f18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002f1c: 0ff010b7 lui ra,0xff01 +80002f20: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002f24: 00000013 nop +80002f28: 0020ff33 and t5,ra,sp +80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f30: 00200293 li t0,2 +80002f34: fe5210e3 bne tp,t0,80002f14 +80002f38: 00f00eb7 lui t4,0xf00 +80002f3c: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80002f40: 01300193 li gp,19 +80002f44: 15df1a63 bne t5,t4,80003098 + +80002f48 : +80002f48: 00000213 li tp,0 +80002f4c: 0f0f1137 lui sp,0xf0f1 +80002f50: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002f54: 00ff00b7 lui ra,0xff0 +80002f58: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002f5c: 00000013 nop +80002f60: 00000013 nop +80002f64: 0020ff33 and t5,ra,sp +80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f6c: 00200293 li t0,2 +80002f70: fc521ee3 bne tp,t0,80002f4c +80002f74: 000f0eb7 lui t4,0xf0 +80002f78: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +80002f7c: 01400193 li gp,20 +80002f80: 11df1c63 bne t5,t4,80003098 + +80002f84 : +80002f84: 00000213 li tp,0 +80002f88: 0f0f1137 lui sp,0xf0f1 +80002f8c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002f90: 00000013 nop +80002f94: ff0100b7 lui ra,0xff010 +80002f98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002f9c: 0020ff33 and t5,ra,sp +80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fa4: 00200293 li t0,2 +80002fa8: fe5210e3 bne tp,t0,80002f88 +80002fac: 0f001eb7 lui t4,0xf001 +80002fb0: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100> +80002fb4: 01500193 li gp,21 +80002fb8: 0fdf1063 bne t5,t4,80003098 + +80002fbc : +80002fbc: 00000213 li tp,0 +80002fc0: f0f0f137 lui sp,0xf0f0f +80002fc4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002fc8: 00000013 nop +80002fcc: 0ff010b7 lui ra,0xff01 +80002fd0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002fd4: 00000013 nop +80002fd8: 0020ff33 and t5,ra,sp +80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fe0: 00200293 li t0,2 +80002fe4: fc521ee3 bne tp,t0,80002fc0 +80002fe8: 00f00eb7 lui t4,0xf00 +80002fec: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10> +80002ff0: 01600193 li gp,22 +80002ff4: 0bdf1263 bne t5,t4,80003098 + +80002ff8 : +80002ff8: 00000213 li tp,0 +80002ffc: 0f0f1137 lui sp,0xf0f1 +80003000: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80003004: 00000013 nop +80003008: 00000013 nop +8000300c: 00ff00b7 lui ra,0xff0 +80003010: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80003014: 0020ff33 and t5,ra,sp +80003018: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000301c: 00200293 li t0,2 +80003020: fc521ee3 bne tp,t0,80002ffc +80003024: 000f0eb7 lui t4,0xf0 +80003028: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> +8000302c: 01700193 li gp,23 +80003030: 07df1463 bne t5,t4,80003098 + +80003034 : +80003034: ff0100b7 lui ra,0xff010 +80003038: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +8000303c: 00107133 and sp,zero,ra +80003040: 00000e93 li t4,0 +80003044: 01800193 li gp,24 +80003048: 05d11863 bne sp,t4,80003098 + +8000304c : +8000304c: 00ff00b7 lui ra,0xff0 +80003050: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80003054: 0000f133 and sp,ra,zero +80003058: 00000e93 li t4,0 +8000305c: 01900193 li gp,25 +80003060: 03d11c63 bne sp,t4,80003098 + +80003064 : +80003064: 000070b3 and ra,zero,zero +80003068: 00000e93 li t4,0 +8000306c: 01a00193 li gp,26 +80003070: 03d09463 bne ra,t4,80003098 + +80003074 : +80003074: 111110b7 lui ra,0x11111 +80003078: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> +8000307c: 22222137 lui sp,0x22222 +80003080: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> +80003084: 0020f033 and zero,ra,sp +80003088: 00000e93 li t4,0 +8000308c: 01b00193 li gp,27 +80003090: 01d01463 bne zero,t4,80003098 +80003094: 00301a63 bne zero,gp,800030a8 + +80003098 : +80003098: 00119513 slli a0,gp,0x1 +8000309c: 00050063 beqz a0,8000309c +800030a0: 00156513 ori a0,a0,1 +800030a4: 00000073 ecall + +800030a8 : +800030a8: 00100513 li a0,1 +800030ac: 00000073 ecall +800030b0: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-andi b/Tests/isa/rv32ui-v-andi new file mode 100644 index 0000000..7cad7ed Binary files /dev/null and b/Tests/isa/rv32ui-v-andi differ diff --git a/Tests/isa/rv32ui-v-andi.dump b/Tests/isa/rv32ui-v-andi.dump new file mode 100644 index 0000000..3700289 --- /dev/null +++ b/Tests/isa/rv32ui-v-andi.dump @@ -0,0 +1,1046 @@ + +rv32ui-v-andi: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 8f458593 addi a1,a1,-1804 # 80002dbc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 91058593 addi a1,a1,-1776 # 80002e48 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 8bc58593 addi a1,a1,-1860 # 80002e60 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 7f058593 addi a1,a1,2032 # 80002e00 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 7e058593 addi a1,a1,2016 # 80002f28 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 74858593 addi a1,a1,1864 # 80002f04 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 64460613 addi a2,a2,1604 # 80002f54 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 55460613 addi a2,a2,1364 # 80002ed0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 4d460613 addi a2,a2,1236 # 80002e9c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 02d00793 li a5,45 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 06b087b7 lui a5,0x6b08 +80002b9c: 00080637 lui a2,0x80 +80002ba0: a8878793 addi a5,a5,-1400 # 6b07a88 <_start-0x794f8578> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: ff0100b7 lui ra,0xff010 +80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08> +80002be8: f0f0ff13 andi t5,ra,-241 +80002bec: ff010eb7 lui t4,0xff010 +80002bf0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00ab08> +80002bf4: 00200193 li gp,2 +80002bf8: 1bdf1463 bne t5,t4,80002da0 + +80002bfc : +80002bfc: 0ff010b7 lui ra,0xff01 +80002c00: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c04: 0f00ff13 andi t5,ra,240 +80002c08: 0f000e93 li t4,240 +80002c0c: 00300193 li gp,3 +80002c10: 19df1863 bne t5,t4,80002da0 + +80002c14 : +80002c14: 00ff00b7 lui ra,0xff0 +80002c18: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002c1c: 70f0ff13 andi t5,ra,1807 +80002c20: 00f00e93 li t4,15 +80002c24: 00400193 li gp,4 +80002c28: 17df1c63 bne t5,t4,80002da0 + +80002c2c : +80002c2c: f00ff0b7 lui ra,0xf00ff +80002c30: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002c34: 0f00ff13 andi t5,ra,240 +80002c38: 00000e93 li t4,0 +80002c3c: 00500193 li gp,5 +80002c40: 17df1063 bne t5,t4,80002da0 + +80002c44 : +80002c44: ff0100b7 lui ra,0xff010 +80002c48: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08> +80002c4c: 0f00f093 andi ra,ra,240 +80002c50: 00000e93 li t4,0 +80002c54: 00600193 li gp,6 +80002c58: 15d09463 bne ra,t4,80002da0 + +80002c5c : +80002c5c: 00000213 li tp,0 +80002c60: 0ff010b7 lui ra,0xff01 +80002c64: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c68: 70f0ff13 andi t5,ra,1807 +80002c6c: 000f0313 mv t1,t5 +80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002c74: 00200293 li t0,2 +80002c78: fe5214e3 bne tp,t0,80002c60 +80002c7c: 70000e93 li t4,1792 +80002c80: 00700193 li gp,7 +80002c84: 11d31e63 bne t1,t4,80002da0 + +80002c88 : +80002c88: 00000213 li tp,0 +80002c8c: 00ff00b7 lui ra,0xff0 +80002c90: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002c94: 0f00ff13 andi t5,ra,240 +80002c98: 00000013 nop +80002c9c: 000f0313 mv t1,t5 +80002ca0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ca4: 00200293 li t0,2 +80002ca8: fe5212e3 bne tp,t0,80002c8c +80002cac: 0f000e93 li t4,240 +80002cb0: 00800193 li gp,8 +80002cb4: 0fd31663 bne t1,t4,80002da0 + +80002cb8 : +80002cb8: 00000213 li tp,0 +80002cbc: f00ff0b7 lui ra,0xf00ff +80002cc0: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002cc4: f0f0ff13 andi t5,ra,-241 +80002cc8: 00000013 nop +80002ccc: 00000013 nop +80002cd0: 000f0313 mv t1,t5 +80002cd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cd8: 00200293 li t0,2 +80002cdc: fe5210e3 bne tp,t0,80002cbc +80002ce0: f00ffeb7 lui t4,0xf00ff +80002ce4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f9c17> +80002ce8: 00900193 li gp,9 +80002cec: 0bd31a63 bne t1,t4,80002da0 + +80002cf0 : +80002cf0: 00000213 li tp,0 +80002cf4: 0ff010b7 lui ra,0xff01 +80002cf8: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002cfc: 70f0ff13 andi t5,ra,1807 +80002d00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d04: 00200293 li t0,2 +80002d08: fe5216e3 bne tp,t0,80002cf4 +80002d0c: 70000e93 li t4,1792 +80002d10: 00a00193 li gp,10 +80002d14: 09df1663 bne t5,t4,80002da0 + +80002d18 : +80002d18: 00000213 li tp,0 +80002d1c: 00ff00b7 lui ra,0xff0 +80002d20: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002d24: 00000013 nop +80002d28: 0f00ff13 andi t5,ra,240 +80002d2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d30: 00200293 li t0,2 +80002d34: fe5214e3 bne tp,t0,80002d1c +80002d38: 0f000e93 li t4,240 +80002d3c: 00b00193 li gp,11 +80002d40: 07df1063 bne t5,t4,80002da0 + +80002d44 : +80002d44: 00000213 li tp,0 +80002d48: f00ff0b7 lui ra,0xf00ff +80002d4c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002d50: 00000013 nop +80002d54: 00000013 nop +80002d58: 70f0ff13 andi t5,ra,1807 +80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d60: 00200293 li t0,2 +80002d64: fe5212e3 bne tp,t0,80002d48 +80002d68: 00f00e93 li t4,15 +80002d6c: 00c00193 li gp,12 +80002d70: 03df1863 bne t5,t4,80002da0 + +80002d74 : +80002d74: 0f007093 andi ra,zero,240 +80002d78: 00000e93 li t4,0 +80002d7c: 00d00193 li gp,13 +80002d80: 03d09063 bne ra,t4,80002da0 + +80002d84 : +80002d84: 00ff00b7 lui ra,0xff0 +80002d88: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002d8c: 70f0f013 andi zero,ra,1807 +80002d90: 00000e93 li t4,0 +80002d94: 00e00193 li gp,14 +80002d98: 01d01463 bne zero,t4,80002da0 +80002d9c: 00301a63 bne zero,gp,80002db0 + +80002da0 : +80002da0: 00119513 slli a0,gp,0x1 +80002da4: 00050063 beqz a0,80002da4 +80002da8: 00156513 ori a0,a0,1 +80002dac: 00000073 ecall + +80002db0 : +80002db0: 00100513 li a0,1 +80002db4: 00000073 ecall +80002db8: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-auipc b/Tests/isa/rv32ui-v-auipc new file mode 100644 index 0000000..81ebb31 Binary files /dev/null and b/Tests/isa/rv32ui-v-auipc differ diff --git a/Tests/isa/rv32ui-v-auipc.dump b/Tests/isa/rv32ui-v-auipc.dump new file mode 100644 index 0000000..f61180f --- /dev/null +++ b/Tests/isa/rv32ui-v-auipc.dump @@ -0,0 +1,929 @@ + +rv32ui-v-auipc: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 77858593 addi a1,a1,1912 # 80002c40 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 79458593 addi a1,a1,1940 # 80002ccc +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 74058593 addi a1,a1,1856 # 80002ce4 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 67458593 addi a1,a1,1652 # 80002c84 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 66458593 addi a1,a1,1636 # 80002dac +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5cc58593 addi a1,a1,1484 # 80002d88 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4c860613 addi a2,a2,1224 # 80002dd8 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3d860613 addi a2,a2,984 # 80002d54 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 35860613 addi a2,a2,856 # 80002d20 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 02d00793 li a5,45 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0e9a97b7 lui a5,0xe9a9 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 47c78793 addi a5,a5,1148 # e9a947c <_start-0x71656b84> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00002517 auipc a0,0x2 +80002be4: 71c50513 addi a0,a0,1820 # 800052fc +80002be8: 004005ef jal a1,80002bec +80002bec: 40b50533 sub a0,a0,a1 +80002bf0: 00002eb7 lui t4,0x2 +80002bf4: 710e8e93 addi t4,t4,1808 # 2710 <_start-0x7fffd8f0> +80002bf8: 00200193 li gp,2 +80002bfc: 03d51463 bne a0,t4,80002c24 + +80002c00 : +80002c00: ffffe517 auipc a0,0xffffe +80002c04: 8fc50513 addi a0,a0,-1796 # 800004fc +80002c08: 004005ef jal a1,80002c0c +80002c0c: 40b50533 sub a0,a0,a1 +80002c10: ffffeeb7 lui t4,0xffffe +80002c14: 8f0e8e93 addi t4,t4,-1808 # ffffd8f0 <_end+0x7fff84f8> +80002c18: 00300193 li gp,3 +80002c1c: 01d51463 bne a0,t4,80002c24 +80002c20: 00301a63 bne zero,gp,80002c34 + +80002c24 : +80002c24: 00119513 slli a0,gp,0x1 +80002c28: 00050063 beqz a0,80002c28 +80002c2c: 00156513 ori a0,a0,1 +80002c30: 00000073 ecall + +80002c34 : +80002c34: 00100513 li a0,1 +80002c38: 00000073 ecall +80002c3c: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-beq b/Tests/isa/rv32ui-v-beq new file mode 100644 index 0000000..7038b98 Binary files /dev/null and b/Tests/isa/rv32ui-v-beq differ diff --git a/Tests/isa/rv32ui-v-beq.dump b/Tests/isa/rv32ui-v-beq.dump new file mode 100644 index 0000000..e49c63a --- /dev/null +++ b/Tests/isa/rv32ui-v-beq.dump @@ -0,0 +1,1124 @@ + +rv32ui-v-beq: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9f458593 addi a1,a1,-1548 # 80002ebc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a1058593 addi a1,a1,-1520 # 80002f48 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 9bc58593 addi a1,a1,-1604 # 80002f60 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8f058593 addi a1,a1,-1808 # 80002f00 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8e058593 addi a1,a1,-1824 # 80003028 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 84858593 addi a1,a1,-1976 # 80003004 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 74460613 addi a2,a2,1860 # 80003054 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 65460613 addi a2,a2,1620 # 80002fd0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5d460613 addi a2,a2,1492 # 80002f9c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00100793 li a5,1 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 04e8f7b7 lui a5,0x4e8f +80002b9c: 00080637 lui a2,0x80 +80002ba0: 26878793 addi a5,a5,616 # 4e8f268 <_start-0x7b170d98> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000093 li ra,0 +80002be8: 00000113 li sp,0 +80002bec: 00208663 beq ra,sp,80002bf8 +80002bf0: 2a301863 bne zero,gp,80002ea0 +80002bf4: 00301663 bne zero,gp,80002c00 +80002bf8: fe208ee3 beq ra,sp,80002bf4 +80002bfc: 2a301263 bne zero,gp,80002ea0 + +80002c00 : +80002c00: 00300193 li gp,3 +80002c04: 00100093 li ra,1 +80002c08: 00100113 li sp,1 +80002c0c: 00208663 beq ra,sp,80002c18 +80002c10: 28301863 bne zero,gp,80002ea0 +80002c14: 00301663 bne zero,gp,80002c20 +80002c18: fe208ee3 beq ra,sp,80002c14 +80002c1c: 28301263 bne zero,gp,80002ea0 + +80002c20 : +80002c20: 00400193 li gp,4 +80002c24: fff00093 li ra,-1 +80002c28: fff00113 li sp,-1 +80002c2c: 00208663 beq ra,sp,80002c38 +80002c30: 26301863 bne zero,gp,80002ea0 +80002c34: 00301663 bne zero,gp,80002c40 +80002c38: fe208ee3 beq ra,sp,80002c34 +80002c3c: 26301263 bne zero,gp,80002ea0 + +80002c40 : +80002c40: 00500193 li gp,5 +80002c44: 00000093 li ra,0 +80002c48: 00100113 li sp,1 +80002c4c: 00208463 beq ra,sp,80002c54 +80002c50: 00301463 bne zero,gp,80002c58 +80002c54: 24301663 bne zero,gp,80002ea0 +80002c58: fe208ee3 beq ra,sp,80002c54 + +80002c5c : +80002c5c: 00600193 li gp,6 +80002c60: 00100093 li ra,1 +80002c64: 00000113 li sp,0 +80002c68: 00208463 beq ra,sp,80002c70 +80002c6c: 00301463 bne zero,gp,80002c74 +80002c70: 22301863 bne zero,gp,80002ea0 +80002c74: fe208ee3 beq ra,sp,80002c70 + +80002c78 : +80002c78: 00700193 li gp,7 +80002c7c: fff00093 li ra,-1 +80002c80: 00100113 li sp,1 +80002c84: 00208463 beq ra,sp,80002c8c +80002c88: 00301463 bne zero,gp,80002c90 +80002c8c: 20301a63 bne zero,gp,80002ea0 +80002c90: fe208ee3 beq ra,sp,80002c8c + +80002c94 : +80002c94: 00800193 li gp,8 +80002c98: 00100093 li ra,1 +80002c9c: fff00113 li sp,-1 +80002ca0: 00208463 beq ra,sp,80002ca8 +80002ca4: 00301463 bne zero,gp,80002cac +80002ca8: 1e301c63 bne zero,gp,80002ea0 +80002cac: fe208ee3 beq ra,sp,80002ca8 + +80002cb0 : +80002cb0: 00900193 li gp,9 +80002cb4: 00000213 li tp,0 +80002cb8: 00000093 li ra,0 +80002cbc: fff00113 li sp,-1 +80002cc0: 1e208063 beq ra,sp,80002ea0 +80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cc8: 00200293 li t0,2 +80002ccc: fe5216e3 bne tp,t0,80002cb8 + +80002cd0 : +80002cd0: 00a00193 li gp,10 +80002cd4: 00000213 li tp,0 +80002cd8: 00000093 li ra,0 +80002cdc: fff00113 li sp,-1 +80002ce0: 00000013 nop +80002ce4: 1a208e63 beq ra,sp,80002ea0 +80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cec: 00200293 li t0,2 +80002cf0: fe5214e3 bne tp,t0,80002cd8 + +80002cf4 : +80002cf4: 00b00193 li gp,11 +80002cf8: 00000213 li tp,0 +80002cfc: 00000093 li ra,0 +80002d00: fff00113 li sp,-1 +80002d04: 00000013 nop +80002d08: 00000013 nop +80002d0c: 18208a63 beq ra,sp,80002ea0 +80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d14: 00200293 li t0,2 +80002d18: fe5212e3 bne tp,t0,80002cfc + +80002d1c : +80002d1c: 00c00193 li gp,12 +80002d20: 00000213 li tp,0 +80002d24: 00000093 li ra,0 +80002d28: 00000013 nop +80002d2c: fff00113 li sp,-1 +80002d30: 16208863 beq ra,sp,80002ea0 +80002d34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d38: 00200293 li t0,2 +80002d3c: fe5214e3 bne tp,t0,80002d24 + +80002d40 : +80002d40: 00d00193 li gp,13 +80002d44: 00000213 li tp,0 +80002d48: 00000093 li ra,0 +80002d4c: 00000013 nop +80002d50: fff00113 li sp,-1 +80002d54: 00000013 nop +80002d58: 14208463 beq ra,sp,80002ea0 +80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d60: 00200293 li t0,2 +80002d64: fe5212e3 bne tp,t0,80002d48 + +80002d68 : +80002d68: 00e00193 li gp,14 +80002d6c: 00000213 li tp,0 +80002d70: 00000093 li ra,0 +80002d74: 00000013 nop +80002d78: 00000013 nop +80002d7c: fff00113 li sp,-1 +80002d80: 12208063 beq ra,sp,80002ea0 +80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d88: 00200293 li t0,2 +80002d8c: fe5212e3 bne tp,t0,80002d70 + +80002d90 : +80002d90: 00f00193 li gp,15 +80002d94: 00000213 li tp,0 +80002d98: 00000093 li ra,0 +80002d9c: fff00113 li sp,-1 +80002da0: 10208063 beq ra,sp,80002ea0 +80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da8: 00200293 li t0,2 +80002dac: fe5216e3 bne tp,t0,80002d98 + +80002db0 : +80002db0: 01000193 li gp,16 +80002db4: 00000213 li tp,0 +80002db8: 00000093 li ra,0 +80002dbc: fff00113 li sp,-1 +80002dc0: 00000013 nop +80002dc4: 0c208e63 beq ra,sp,80002ea0 +80002dc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dcc: 00200293 li t0,2 +80002dd0: fe5214e3 bne tp,t0,80002db8 + +80002dd4 : +80002dd4: 01100193 li gp,17 +80002dd8: 00000213 li tp,0 +80002ddc: 00000093 li ra,0 +80002de0: fff00113 li sp,-1 +80002de4: 00000013 nop +80002de8: 00000013 nop +80002dec: 0a208a63 beq ra,sp,80002ea0 +80002df0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002df4: 00200293 li t0,2 +80002df8: fe5212e3 bne tp,t0,80002ddc + +80002dfc : +80002dfc: 01200193 li gp,18 +80002e00: 00000213 li tp,0 +80002e04: 00000093 li ra,0 +80002e08: 00000013 nop +80002e0c: fff00113 li sp,-1 +80002e10: 08208863 beq ra,sp,80002ea0 +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fe5214e3 bne tp,t0,80002e04 + +80002e20 : +80002e20: 01300193 li gp,19 +80002e24: 00000213 li tp,0 +80002e28: 00000093 li ra,0 +80002e2c: 00000013 nop +80002e30: fff00113 li sp,-1 +80002e34: 00000013 nop +80002e38: 06208463 beq ra,sp,80002ea0 +80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e40: 00200293 li t0,2 +80002e44: fe5212e3 bne tp,t0,80002e28 + +80002e48 : +80002e48: 01400193 li gp,20 +80002e4c: 00000213 li tp,0 +80002e50: 00000093 li ra,0 +80002e54: 00000013 nop +80002e58: 00000013 nop +80002e5c: fff00113 li sp,-1 +80002e60: 04208063 beq ra,sp,80002ea0 +80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e68: 00200293 li t0,2 +80002e6c: fe5212e3 bne tp,t0,80002e50 + +80002e70 : +80002e70: 00100093 li ra,1 +80002e74: 00000a63 beqz zero,80002e88 +80002e78: 00108093 addi ra,ra,1 +80002e7c: 00108093 addi ra,ra,1 +80002e80: 00108093 addi ra,ra,1 +80002e84: 00108093 addi ra,ra,1 +80002e88: 00108093 addi ra,ra,1 +80002e8c: 00108093 addi ra,ra,1 +80002e90: 00300e93 li t4,3 +80002e94: 01500193 li gp,21 +80002e98: 01d09463 bne ra,t4,80002ea0 +80002e9c: 00301a63 bne zero,gp,80002eb0 + +80002ea0 : +80002ea0: 00119513 slli a0,gp,0x1 +80002ea4: 00050063 beqz a0,80002ea4 +80002ea8: 00156513 ori a0,a0,1 +80002eac: 00000073 ecall + +80002eb0 : +80002eb0: 00100513 li a0,1 +80002eb4: 00000073 ecall +80002eb8: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-bge b/Tests/isa/rv32ui-v-bge new file mode 100644 index 0000000..c8c4594 Binary files /dev/null and b/Tests/isa/rv32ui-v-bge differ diff --git a/Tests/isa/rv32ui-v-bge.dump b/Tests/isa/rv32ui-v-bge.dump new file mode 100644 index 0000000..2b459c8 --- /dev/null +++ b/Tests/isa/rv32ui-v-bge.dump @@ -0,0 +1,1154 @@ + +rv32ui-v-bge: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: a5458593 addi a1,a1,-1452 # 80002f1c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a7058593 addi a1,a1,-1424 # 80002fa8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: a1c58593 addi a1,a1,-1508 # 80002fc0 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 95058593 addi a1,a1,-1712 # 80002f60 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 94058593 addi a1,a1,-1728 # 80003088 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 8a858593 addi a1,a1,-1880 # 80003064 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 7a460613 addi a2,a2,1956 # 800030b4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 6b460613 addi a2,a2,1716 # 80003030 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 63460613 addi a2,a2,1588 # 80002ffc +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 02a00793 li a5,42 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0635e7b7 lui a5,0x635e +80002b9c: 00080637 lui a2,0x80 +80002ba0: 3e878793 addi a5,a5,1000 # 635e3e8 <_start-0x79ca1c18> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000093 li ra,0 +80002be8: 00000113 li sp,0 +80002bec: 0020d663 ble sp,ra,80002bf8 +80002bf0: 30301863 bne zero,gp,80002f00 +80002bf4: 00301663 bne zero,gp,80002c00 +80002bf8: fe20dee3 ble sp,ra,80002bf4 +80002bfc: 30301263 bne zero,gp,80002f00 + +80002c00 : +80002c00: 00300193 li gp,3 +80002c04: 00100093 li ra,1 +80002c08: 00100113 li sp,1 +80002c0c: 0020d663 ble sp,ra,80002c18 +80002c10: 2e301863 bne zero,gp,80002f00 +80002c14: 00301663 bne zero,gp,80002c20 +80002c18: fe20dee3 ble sp,ra,80002c14 +80002c1c: 2e301263 bne zero,gp,80002f00 + +80002c20 : +80002c20: 00400193 li gp,4 +80002c24: fff00093 li ra,-1 +80002c28: fff00113 li sp,-1 +80002c2c: 0020d663 ble sp,ra,80002c38 +80002c30: 2c301863 bne zero,gp,80002f00 +80002c34: 00301663 bne zero,gp,80002c40 +80002c38: fe20dee3 ble sp,ra,80002c34 +80002c3c: 2c301263 bne zero,gp,80002f00 + +80002c40 : +80002c40: 00500193 li gp,5 +80002c44: 00100093 li ra,1 +80002c48: 00000113 li sp,0 +80002c4c: 0020d663 ble sp,ra,80002c58 +80002c50: 2a301863 bne zero,gp,80002f00 +80002c54: 00301663 bne zero,gp,80002c60 +80002c58: fe20dee3 ble sp,ra,80002c54 +80002c5c: 2a301263 bne zero,gp,80002f00 + +80002c60 : +80002c60: 00600193 li gp,6 +80002c64: 00100093 li ra,1 +80002c68: fff00113 li sp,-1 +80002c6c: 0020d663 ble sp,ra,80002c78 +80002c70: 28301863 bne zero,gp,80002f00 +80002c74: 00301663 bne zero,gp,80002c80 +80002c78: fe20dee3 ble sp,ra,80002c74 +80002c7c: 28301263 bne zero,gp,80002f00 + +80002c80 : +80002c80: 00700193 li gp,7 +80002c84: fff00093 li ra,-1 +80002c88: ffe00113 li sp,-2 +80002c8c: 0020d663 ble sp,ra,80002c98 +80002c90: 26301863 bne zero,gp,80002f00 +80002c94: 00301663 bne zero,gp,80002ca0 +80002c98: fe20dee3 ble sp,ra,80002c94 +80002c9c: 26301263 bne zero,gp,80002f00 + +80002ca0 : +80002ca0: 00800193 li gp,8 +80002ca4: 00000093 li ra,0 +80002ca8: 00100113 li sp,1 +80002cac: 0020d463 ble sp,ra,80002cb4 +80002cb0: 00301463 bne zero,gp,80002cb8 +80002cb4: 24301663 bne zero,gp,80002f00 +80002cb8: fe20dee3 ble sp,ra,80002cb4 + +80002cbc : +80002cbc: 00900193 li gp,9 +80002cc0: fff00093 li ra,-1 +80002cc4: 00100113 li sp,1 +80002cc8: 0020d463 ble sp,ra,80002cd0 +80002ccc: 00301463 bne zero,gp,80002cd4 +80002cd0: 22301863 bne zero,gp,80002f00 +80002cd4: fe20dee3 ble sp,ra,80002cd0 + +80002cd8 : +80002cd8: 00a00193 li gp,10 +80002cdc: ffe00093 li ra,-2 +80002ce0: fff00113 li sp,-1 +80002ce4: 0020d463 ble sp,ra,80002cec +80002ce8: 00301463 bne zero,gp,80002cf0 +80002cec: 20301a63 bne zero,gp,80002f00 +80002cf0: fe20dee3 ble sp,ra,80002cec + +80002cf4 : +80002cf4: 00b00193 li gp,11 +80002cf8: ffe00093 li ra,-2 +80002cfc: 00100113 li sp,1 +80002d00: 0020d463 ble sp,ra,80002d08 +80002d04: 00301463 bne zero,gp,80002d0c +80002d08: 1e301c63 bne zero,gp,80002f00 +80002d0c: fe20dee3 ble sp,ra,80002d08 + +80002d10 : +80002d10: 00c00193 li gp,12 +80002d14: 00000213 li tp,0 +80002d18: fff00093 li ra,-1 +80002d1c: 00000113 li sp,0 +80002d20: 1e20d063 ble sp,ra,80002f00 +80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d28: 00200293 li t0,2 +80002d2c: fe5216e3 bne tp,t0,80002d18 + +80002d30 : +80002d30: 00d00193 li gp,13 +80002d34: 00000213 li tp,0 +80002d38: fff00093 li ra,-1 +80002d3c: 00000113 li sp,0 +80002d40: 00000013 nop +80002d44: 1a20de63 ble sp,ra,80002f00 +80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d4c: 00200293 li t0,2 +80002d50: fe5214e3 bne tp,t0,80002d38 + +80002d54 : +80002d54: 00e00193 li gp,14 +80002d58: 00000213 li tp,0 +80002d5c: fff00093 li ra,-1 +80002d60: 00000113 li sp,0 +80002d64: 00000013 nop +80002d68: 00000013 nop +80002d6c: 1820da63 ble sp,ra,80002f00 +80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d74: 00200293 li t0,2 +80002d78: fe5212e3 bne tp,t0,80002d5c + +80002d7c : +80002d7c: 00f00193 li gp,15 +80002d80: 00000213 li tp,0 +80002d84: fff00093 li ra,-1 +80002d88: 00000013 nop +80002d8c: 00000113 li sp,0 +80002d90: 1620d863 ble sp,ra,80002f00 +80002d94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d98: 00200293 li t0,2 +80002d9c: fe5214e3 bne tp,t0,80002d84 + +80002da0 : +80002da0: 01000193 li gp,16 +80002da4: 00000213 li tp,0 +80002da8: fff00093 li ra,-1 +80002dac: 00000013 nop +80002db0: 00000113 li sp,0 +80002db4: 00000013 nop +80002db8: 1420d463 ble sp,ra,80002f00 +80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dc0: 00200293 li t0,2 +80002dc4: fe5212e3 bne tp,t0,80002da8 + +80002dc8 : +80002dc8: 01100193 li gp,17 +80002dcc: 00000213 li tp,0 +80002dd0: fff00093 li ra,-1 +80002dd4: 00000013 nop +80002dd8: 00000013 nop +80002ddc: 00000113 li sp,0 +80002de0: 1220d063 ble sp,ra,80002f00 +80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de8: 00200293 li t0,2 +80002dec: fe5212e3 bne tp,t0,80002dd0 + +80002df0 : +80002df0: 01200193 li gp,18 +80002df4: 00000213 li tp,0 +80002df8: fff00093 li ra,-1 +80002dfc: 00000113 li sp,0 +80002e00: 1020d063 ble sp,ra,80002f00 +80002e04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e08: 00200293 li t0,2 +80002e0c: fe5216e3 bne tp,t0,80002df8 + +80002e10 : +80002e10: 01300193 li gp,19 +80002e14: 00000213 li tp,0 +80002e18: fff00093 li ra,-1 +80002e1c: 00000113 li sp,0 +80002e20: 00000013 nop +80002e24: 0c20de63 ble sp,ra,80002f00 +80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e2c: 00200293 li t0,2 +80002e30: fe5214e3 bne tp,t0,80002e18 + +80002e34 : +80002e34: 01400193 li gp,20 +80002e38: 00000213 li tp,0 +80002e3c: fff00093 li ra,-1 +80002e40: 00000113 li sp,0 +80002e44: 00000013 nop +80002e48: 00000013 nop +80002e4c: 0a20da63 ble sp,ra,80002f00 +80002e50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e54: 00200293 li t0,2 +80002e58: fe5212e3 bne tp,t0,80002e3c + +80002e5c : +80002e5c: 01500193 li gp,21 +80002e60: 00000213 li tp,0 +80002e64: fff00093 li ra,-1 +80002e68: 00000013 nop +80002e6c: 00000113 li sp,0 +80002e70: 0820d863 ble sp,ra,80002f00 +80002e74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e78: 00200293 li t0,2 +80002e7c: fe5214e3 bne tp,t0,80002e64 + +80002e80 : +80002e80: 01600193 li gp,22 +80002e84: 00000213 li tp,0 +80002e88: fff00093 li ra,-1 +80002e8c: 00000013 nop +80002e90: 00000113 li sp,0 +80002e94: 00000013 nop +80002e98: 0620d463 ble sp,ra,80002f00 +80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea0: 00200293 li t0,2 +80002ea4: fe5212e3 bne tp,t0,80002e88 + +80002ea8 : +80002ea8: 01700193 li gp,23 +80002eac: 00000213 li tp,0 +80002eb0: fff00093 li ra,-1 +80002eb4: 00000013 nop +80002eb8: 00000013 nop +80002ebc: 00000113 li sp,0 +80002ec0: 0420d063 ble sp,ra,80002f00 +80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ec8: 00200293 li t0,2 +80002ecc: fe5212e3 bne tp,t0,80002eb0 + +80002ed0 : +80002ed0: 00100093 li ra,1 +80002ed4: 0000da63 bgez ra,80002ee8 +80002ed8: 00108093 addi ra,ra,1 +80002edc: 00108093 addi ra,ra,1 +80002ee0: 00108093 addi ra,ra,1 +80002ee4: 00108093 addi ra,ra,1 +80002ee8: 00108093 addi ra,ra,1 +80002eec: 00108093 addi ra,ra,1 +80002ef0: 00300e93 li t4,3 +80002ef4: 01800193 li gp,24 +80002ef8: 01d09463 bne ra,t4,80002f00 +80002efc: 00301a63 bne zero,gp,80002f10 + +80002f00 : +80002f00: 00119513 slli a0,gp,0x1 +80002f04: 00050063 beqz a0,80002f04 +80002f08: 00156513 ori a0,a0,1 +80002f0c: 00000073 ecall + +80002f10 : +80002f10: 00100513 li a0,1 +80002f14: 00000073 ecall +80002f18: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-bgeu b/Tests/isa/rv32ui-v-bgeu new file mode 100644 index 0000000..99b6159 Binary files /dev/null and b/Tests/isa/rv32ui-v-bgeu differ diff --git a/Tests/isa/rv32ui-v-bgeu.dump b/Tests/isa/rv32ui-v-bgeu.dump new file mode 100644 index 0000000..ac6bfe1 --- /dev/null +++ b/Tests/isa/rv32ui-v-bgeu.dump @@ -0,0 +1,1167 @@ + +rv32ui-v-bgeu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: a8858593 addi a1,a1,-1400 # 80002f50 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: aa458593 addi a1,a1,-1372 # 80002fdc +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: a5058593 addi a1,a1,-1456 # 80002ff4 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 98458593 addi a1,a1,-1660 # 80002f94 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 97458593 addi a1,a1,-1676 # 800030bc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 8dc58593 addi a1,a1,-1828 # 80003098 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 7d860613 addi a2,a2,2008 # 800030e8 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 6e860613 addi a2,a2,1768 # 80003064 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 66860613 addi a2,a2,1640 # 80003030 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01a00793 li a5,26 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0e56a7b7 lui a5,0xe56a +80002b9c: 00080637 lui a2,0x80 +80002ba0: d9578793 addi a5,a5,-619 # e569d95 <_start-0x71a9626b> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000093 li ra,0 +80002be8: 00000113 li sp,0 +80002bec: 0020f663 bleu sp,ra,80002bf8 +80002bf0: 34301263 bne zero,gp,80002f34 +80002bf4: 00301663 bne zero,gp,80002c00 +80002bf8: fe20fee3 bleu sp,ra,80002bf4 +80002bfc: 32301c63 bne zero,gp,80002f34 + +80002c00 : +80002c00: 00300193 li gp,3 +80002c04: 00100093 li ra,1 +80002c08: 00100113 li sp,1 +80002c0c: 0020f663 bleu sp,ra,80002c18 +80002c10: 32301263 bne zero,gp,80002f34 +80002c14: 00301663 bne zero,gp,80002c20 +80002c18: fe20fee3 bleu sp,ra,80002c14 +80002c1c: 30301c63 bne zero,gp,80002f34 + +80002c20 : +80002c20: 00400193 li gp,4 +80002c24: fff00093 li ra,-1 +80002c28: fff00113 li sp,-1 +80002c2c: 0020f663 bleu sp,ra,80002c38 +80002c30: 30301263 bne zero,gp,80002f34 +80002c34: 00301663 bne zero,gp,80002c40 +80002c38: fe20fee3 bleu sp,ra,80002c34 +80002c3c: 2e301c63 bne zero,gp,80002f34 + +80002c40 : +80002c40: 00500193 li gp,5 +80002c44: 00100093 li ra,1 +80002c48: 00000113 li sp,0 +80002c4c: 0020f663 bleu sp,ra,80002c58 +80002c50: 2e301263 bne zero,gp,80002f34 +80002c54: 00301663 bne zero,gp,80002c60 +80002c58: fe20fee3 bleu sp,ra,80002c54 +80002c5c: 2c301c63 bne zero,gp,80002f34 + +80002c60 : +80002c60: 00600193 li gp,6 +80002c64: fff00093 li ra,-1 +80002c68: ffe00113 li sp,-2 +80002c6c: 0020f663 bleu sp,ra,80002c78 +80002c70: 2c301263 bne zero,gp,80002f34 +80002c74: 00301663 bne zero,gp,80002c80 +80002c78: fe20fee3 bleu sp,ra,80002c74 +80002c7c: 2a301c63 bne zero,gp,80002f34 + +80002c80 : +80002c80: 00700193 li gp,7 +80002c84: fff00093 li ra,-1 +80002c88: 00000113 li sp,0 +80002c8c: 0020f663 bleu sp,ra,80002c98 +80002c90: 2a301263 bne zero,gp,80002f34 +80002c94: 00301663 bne zero,gp,80002ca0 +80002c98: fe20fee3 bleu sp,ra,80002c94 +80002c9c: 28301c63 bne zero,gp,80002f34 + +80002ca0 : +80002ca0: 00800193 li gp,8 +80002ca4: 00000093 li ra,0 +80002ca8: 00100113 li sp,1 +80002cac: 0020f463 bleu sp,ra,80002cb4 +80002cb0: 00301463 bne zero,gp,80002cb8 +80002cb4: 28301063 bne zero,gp,80002f34 +80002cb8: fe20fee3 bleu sp,ra,80002cb4 + +80002cbc : +80002cbc: 00900193 li gp,9 +80002cc0: ffe00093 li ra,-2 +80002cc4: fff00113 li sp,-1 +80002cc8: 0020f463 bleu sp,ra,80002cd0 +80002ccc: 00301463 bne zero,gp,80002cd4 +80002cd0: 26301263 bne zero,gp,80002f34 +80002cd4: fe20fee3 bleu sp,ra,80002cd0 + +80002cd8 : +80002cd8: 00a00193 li gp,10 +80002cdc: 00000093 li ra,0 +80002ce0: fff00113 li sp,-1 +80002ce4: 0020f463 bleu sp,ra,80002cec +80002ce8: 00301463 bne zero,gp,80002cf0 +80002cec: 24301463 bne zero,gp,80002f34 +80002cf0: fe20fee3 bleu sp,ra,80002cec + +80002cf4 : +80002cf4: 00b00193 li gp,11 +80002cf8: 800000b7 lui ra,0x80000 +80002cfc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002d00: 80000137 lui sp,0x80000 +80002d04: 0020f463 bleu sp,ra,80002d0c +80002d08: 00301463 bne zero,gp,80002d10 +80002d0c: 22301463 bne zero,gp,80002f34 +80002d10: fe20fee3 bleu sp,ra,80002d0c + +80002d14 : +80002d14: 00c00193 li gp,12 +80002d18: 00000213 li tp,0 +80002d1c: f00000b7 lui ra,0xf0000 +80002d20: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002d24: f0000137 lui sp,0xf0000 +80002d28: 2020f663 bleu sp,ra,80002f34 +80002d2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d30: 00200293 li t0,2 +80002d34: fe5214e3 bne tp,t0,80002d1c + +80002d38 : +80002d38: 00d00193 li gp,13 +80002d3c: 00000213 li tp,0 +80002d40: f00000b7 lui ra,0xf0000 +80002d44: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002d48: f0000137 lui sp,0xf0000 +80002d4c: 00000013 nop +80002d50: 1e20f263 bleu sp,ra,80002f34 +80002d54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d58: 00200293 li t0,2 +80002d5c: fe5212e3 bne tp,t0,80002d40 + +80002d60 : +80002d60: 00e00193 li gp,14 +80002d64: 00000213 li tp,0 +80002d68: f00000b7 lui ra,0xf0000 +80002d6c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002d70: f0000137 lui sp,0xf0000 +80002d74: 00000013 nop +80002d78: 00000013 nop +80002d7c: 1a20fc63 bleu sp,ra,80002f34 +80002d80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d84: 00200293 li t0,2 +80002d88: fe5210e3 bne tp,t0,80002d68 + +80002d8c : +80002d8c: 00f00193 li gp,15 +80002d90: 00000213 li tp,0 +80002d94: f00000b7 lui ra,0xf0000 +80002d98: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002d9c: 00000013 nop +80002da0: f0000137 lui sp,0xf0000 +80002da4: 1820f863 bleu sp,ra,80002f34 +80002da8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dac: 00200293 li t0,2 +80002db0: fe5212e3 bne tp,t0,80002d94 + +80002db4 : +80002db4: 01000193 li gp,16 +80002db8: 00000213 li tp,0 +80002dbc: f00000b7 lui ra,0xf0000 +80002dc0: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002dc4: 00000013 nop +80002dc8: f0000137 lui sp,0xf0000 +80002dcc: 00000013 nop +80002dd0: 1620f263 bleu sp,ra,80002f34 +80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd8: 00200293 li t0,2 +80002ddc: fe5210e3 bne tp,t0,80002dbc + +80002de0 : +80002de0: 01100193 li gp,17 +80002de4: 00000213 li tp,0 +80002de8: f00000b7 lui ra,0xf0000 +80002dec: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002df0: 00000013 nop +80002df4: 00000013 nop +80002df8: f0000137 lui sp,0xf0000 +80002dfc: 1220fc63 bleu sp,ra,80002f34 +80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e04: 00200293 li t0,2 +80002e08: fe5210e3 bne tp,t0,80002de8 + +80002e0c : +80002e0c: 01200193 li gp,18 +80002e10: 00000213 li tp,0 +80002e14: f00000b7 lui ra,0xf0000 +80002e18: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002e1c: f0000137 lui sp,0xf0000 +80002e20: 1020fa63 bleu sp,ra,80002f34 +80002e24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e28: 00200293 li t0,2 +80002e2c: fe5214e3 bne tp,t0,80002e14 + +80002e30 : +80002e30: 01300193 li gp,19 +80002e34: 00000213 li tp,0 +80002e38: f00000b7 lui ra,0xf0000 +80002e3c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002e40: f0000137 lui sp,0xf0000 +80002e44: 00000013 nop +80002e48: 0e20f663 bleu sp,ra,80002f34 +80002e4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e50: 00200293 li t0,2 +80002e54: fe5212e3 bne tp,t0,80002e38 + +80002e58 : +80002e58: 01400193 li gp,20 +80002e5c: 00000213 li tp,0 +80002e60: f00000b7 lui ra,0xf0000 +80002e64: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002e68: f0000137 lui sp,0xf0000 +80002e6c: 00000013 nop +80002e70: 00000013 nop +80002e74: 0c20f063 bleu sp,ra,80002f34 +80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e7c: 00200293 li t0,2 +80002e80: fe5210e3 bne tp,t0,80002e60 + +80002e84 : +80002e84: 01500193 li gp,21 +80002e88: 00000213 li tp,0 +80002e8c: f00000b7 lui ra,0xf0000 +80002e90: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002e94: 00000013 nop +80002e98: f0000137 lui sp,0xf0000 +80002e9c: 0820fc63 bleu sp,ra,80002f34 +80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea4: 00200293 li t0,2 +80002ea8: fe5212e3 bne tp,t0,80002e8c + +80002eac : +80002eac: 01600193 li gp,22 +80002eb0: 00000213 li tp,0 +80002eb4: f00000b7 lui ra,0xf0000 +80002eb8: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002ebc: 00000013 nop +80002ec0: f0000137 lui sp,0xf0000 +80002ec4: 00000013 nop +80002ec8: 0620f663 bleu sp,ra,80002f34 +80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ed0: 00200293 li t0,2 +80002ed4: fe5210e3 bne tp,t0,80002eb4 + +80002ed8 : +80002ed8: 01700193 li gp,23 +80002edc: 00000213 li tp,0 +80002ee0: f00000b7 lui ra,0xf0000 +80002ee4: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07> +80002ee8: 00000013 nop +80002eec: 00000013 nop +80002ef0: f0000137 lui sp,0xf0000 +80002ef4: 0420f063 bleu sp,ra,80002f34 +80002ef8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002efc: 00200293 li t0,2 +80002f00: fe5210e3 bne tp,t0,80002ee0 + +80002f04 : +80002f04: 00100093 li ra,1 +80002f08: 0000fa63 bleu zero,ra,80002f1c +80002f0c: 00108093 addi ra,ra,1 +80002f10: 00108093 addi ra,ra,1 +80002f14: 00108093 addi ra,ra,1 +80002f18: 00108093 addi ra,ra,1 +80002f1c: 00108093 addi ra,ra,1 +80002f20: 00108093 addi ra,ra,1 +80002f24: 00300e93 li t4,3 +80002f28: 01800193 li gp,24 +80002f2c: 01d09463 bne ra,t4,80002f34 +80002f30: 00301a63 bne zero,gp,80002f44 + +80002f34 : +80002f34: 00119513 slli a0,gp,0x1 +80002f38: 00050063 beqz a0,80002f38 +80002f3c: 00156513 ori a0,a0,1 +80002f40: 00000073 ecall + +80002f44 : +80002f44: 00100513 li a0,1 +80002f48: 00000073 ecall +80002f4c: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-blt b/Tests/isa/rv32ui-v-blt new file mode 100644 index 0000000..a8356d0 Binary files /dev/null and b/Tests/isa/rv32ui-v-blt differ diff --git a/Tests/isa/rv32ui-v-blt.dump b/Tests/isa/rv32ui-v-blt.dump new file mode 100644 index 0000000..24b1d64 --- /dev/null +++ b/Tests/isa/rv32ui-v-blt.dump @@ -0,0 +1,1124 @@ + +rv32ui-v-blt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9f458593 addi a1,a1,-1548 # 80002ebc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a1058593 addi a1,a1,-1520 # 80002f48 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 9bc58593 addi a1,a1,-1604 # 80002f60 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8f058593 addi a1,a1,-1808 # 80002f00 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8e058593 addi a1,a1,-1824 # 80003028 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 84858593 addi a1,a1,-1976 # 80003004 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 74460613 addi a2,a2,1860 # 80003054 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 65460613 addi a2,a2,1620 # 80002fd0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5d460613 addi a2,a2,1492 # 80002f9c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01200793 li a5,18 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 021ab7b7 lui a5,0x21ab +80002b9c: 00080637 lui a2,0x80 +80002ba0: d6878793 addi a5,a5,-664 # 21aad68 <_start-0x7de55298> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000093 li ra,0 +80002be8: 00100113 li sp,1 +80002bec: 0020c663 blt ra,sp,80002bf8 +80002bf0: 2a301863 bne zero,gp,80002ea0 +80002bf4: 00301663 bne zero,gp,80002c00 +80002bf8: fe20cee3 blt ra,sp,80002bf4 +80002bfc: 2a301263 bne zero,gp,80002ea0 + +80002c00 : +80002c00: 00300193 li gp,3 +80002c04: fff00093 li ra,-1 +80002c08: 00100113 li sp,1 +80002c0c: 0020c663 blt ra,sp,80002c18 +80002c10: 28301863 bne zero,gp,80002ea0 +80002c14: 00301663 bne zero,gp,80002c20 +80002c18: fe20cee3 blt ra,sp,80002c14 +80002c1c: 28301263 bne zero,gp,80002ea0 + +80002c20 : +80002c20: 00400193 li gp,4 +80002c24: ffe00093 li ra,-2 +80002c28: fff00113 li sp,-1 +80002c2c: 0020c663 blt ra,sp,80002c38 +80002c30: 26301863 bne zero,gp,80002ea0 +80002c34: 00301663 bne zero,gp,80002c40 +80002c38: fe20cee3 blt ra,sp,80002c34 +80002c3c: 26301263 bne zero,gp,80002ea0 + +80002c40 : +80002c40: 00500193 li gp,5 +80002c44: 00100093 li ra,1 +80002c48: 00000113 li sp,0 +80002c4c: 0020c463 blt ra,sp,80002c54 +80002c50: 00301463 bne zero,gp,80002c58 +80002c54: 24301663 bne zero,gp,80002ea0 +80002c58: fe20cee3 blt ra,sp,80002c54 + +80002c5c : +80002c5c: 00600193 li gp,6 +80002c60: 00100093 li ra,1 +80002c64: fff00113 li sp,-1 +80002c68: 0020c463 blt ra,sp,80002c70 +80002c6c: 00301463 bne zero,gp,80002c74 +80002c70: 22301863 bne zero,gp,80002ea0 +80002c74: fe20cee3 blt ra,sp,80002c70 + +80002c78 : +80002c78: 00700193 li gp,7 +80002c7c: fff00093 li ra,-1 +80002c80: ffe00113 li sp,-2 +80002c84: 0020c463 blt ra,sp,80002c8c +80002c88: 00301463 bne zero,gp,80002c90 +80002c8c: 20301a63 bne zero,gp,80002ea0 +80002c90: fe20cee3 blt ra,sp,80002c8c + +80002c94 : +80002c94: 00800193 li gp,8 +80002c98: 00100093 li ra,1 +80002c9c: ffe00113 li sp,-2 +80002ca0: 0020c463 blt ra,sp,80002ca8 +80002ca4: 00301463 bne zero,gp,80002cac +80002ca8: 1e301c63 bne zero,gp,80002ea0 +80002cac: fe20cee3 blt ra,sp,80002ca8 + +80002cb0 : +80002cb0: 00900193 li gp,9 +80002cb4: 00000213 li tp,0 +80002cb8: 00000093 li ra,0 +80002cbc: fff00113 li sp,-1 +80002cc0: 1e20c063 blt ra,sp,80002ea0 +80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cc8: 00200293 li t0,2 +80002ccc: fe5216e3 bne tp,t0,80002cb8 + +80002cd0 : +80002cd0: 00a00193 li gp,10 +80002cd4: 00000213 li tp,0 +80002cd8: 00000093 li ra,0 +80002cdc: fff00113 li sp,-1 +80002ce0: 00000013 nop +80002ce4: 1a20ce63 blt ra,sp,80002ea0 +80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cec: 00200293 li t0,2 +80002cf0: fe5214e3 bne tp,t0,80002cd8 + +80002cf4 : +80002cf4: 00b00193 li gp,11 +80002cf8: 00000213 li tp,0 +80002cfc: 00000093 li ra,0 +80002d00: fff00113 li sp,-1 +80002d04: 00000013 nop +80002d08: 00000013 nop +80002d0c: 1820ca63 blt ra,sp,80002ea0 +80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d14: 00200293 li t0,2 +80002d18: fe5212e3 bne tp,t0,80002cfc + +80002d1c : +80002d1c: 00c00193 li gp,12 +80002d20: 00000213 li tp,0 +80002d24: 00000093 li ra,0 +80002d28: 00000013 nop +80002d2c: fff00113 li sp,-1 +80002d30: 1620c863 blt ra,sp,80002ea0 +80002d34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d38: 00200293 li t0,2 +80002d3c: fe5214e3 bne tp,t0,80002d24 + +80002d40 : +80002d40: 00d00193 li gp,13 +80002d44: 00000213 li tp,0 +80002d48: 00000093 li ra,0 +80002d4c: 00000013 nop +80002d50: fff00113 li sp,-1 +80002d54: 00000013 nop +80002d58: 1420c463 blt ra,sp,80002ea0 +80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d60: 00200293 li t0,2 +80002d64: fe5212e3 bne tp,t0,80002d48 + +80002d68 : +80002d68: 00e00193 li gp,14 +80002d6c: 00000213 li tp,0 +80002d70: 00000093 li ra,0 +80002d74: 00000013 nop +80002d78: 00000013 nop +80002d7c: fff00113 li sp,-1 +80002d80: 1220c063 blt ra,sp,80002ea0 +80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d88: 00200293 li t0,2 +80002d8c: fe5212e3 bne tp,t0,80002d70 + +80002d90 : +80002d90: 00f00193 li gp,15 +80002d94: 00000213 li tp,0 +80002d98: 00000093 li ra,0 +80002d9c: fff00113 li sp,-1 +80002da0: 1020c063 blt ra,sp,80002ea0 +80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da8: 00200293 li t0,2 +80002dac: fe5216e3 bne tp,t0,80002d98 + +80002db0 : +80002db0: 01000193 li gp,16 +80002db4: 00000213 li tp,0 +80002db8: 00000093 li ra,0 +80002dbc: fff00113 li sp,-1 +80002dc0: 00000013 nop +80002dc4: 0c20ce63 blt ra,sp,80002ea0 +80002dc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dcc: 00200293 li t0,2 +80002dd0: fe5214e3 bne tp,t0,80002db8 + +80002dd4 : +80002dd4: 01100193 li gp,17 +80002dd8: 00000213 li tp,0 +80002ddc: 00000093 li ra,0 +80002de0: fff00113 li sp,-1 +80002de4: 00000013 nop +80002de8: 00000013 nop +80002dec: 0a20ca63 blt ra,sp,80002ea0 +80002df0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002df4: 00200293 li t0,2 +80002df8: fe5212e3 bne tp,t0,80002ddc + +80002dfc : +80002dfc: 01200193 li gp,18 +80002e00: 00000213 li tp,0 +80002e04: 00000093 li ra,0 +80002e08: 00000013 nop +80002e0c: fff00113 li sp,-1 +80002e10: 0820c863 blt ra,sp,80002ea0 +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fe5214e3 bne tp,t0,80002e04 + +80002e20 : +80002e20: 01300193 li gp,19 +80002e24: 00000213 li tp,0 +80002e28: 00000093 li ra,0 +80002e2c: 00000013 nop +80002e30: fff00113 li sp,-1 +80002e34: 00000013 nop +80002e38: 0620c463 blt ra,sp,80002ea0 +80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e40: 00200293 li t0,2 +80002e44: fe5212e3 bne tp,t0,80002e28 + +80002e48 : +80002e48: 01400193 li gp,20 +80002e4c: 00000213 li tp,0 +80002e50: 00000093 li ra,0 +80002e54: 00000013 nop +80002e58: 00000013 nop +80002e5c: fff00113 li sp,-1 +80002e60: 0420c063 blt ra,sp,80002ea0 +80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e68: 00200293 li t0,2 +80002e6c: fe5212e3 bne tp,t0,80002e50 + +80002e70 : +80002e70: 00100093 li ra,1 +80002e74: 00104a63 bgtz ra,80002e88 +80002e78: 00108093 addi ra,ra,1 +80002e7c: 00108093 addi ra,ra,1 +80002e80: 00108093 addi ra,ra,1 +80002e84: 00108093 addi ra,ra,1 +80002e88: 00108093 addi ra,ra,1 +80002e8c: 00108093 addi ra,ra,1 +80002e90: 00300e93 li t4,3 +80002e94: 01500193 li gp,21 +80002e98: 01d09463 bne ra,t4,80002ea0 +80002e9c: 00301a63 bne zero,gp,80002eb0 + +80002ea0 : +80002ea0: 00119513 slli a0,gp,0x1 +80002ea4: 00050063 beqz a0,80002ea4 +80002ea8: 00156513 ori a0,a0,1 +80002eac: 00000073 ecall + +80002eb0 : +80002eb0: 00100513 li a0,1 +80002eb4: 00000073 ecall +80002eb8: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-bltu b/Tests/isa/rv32ui-v-bltu new file mode 100644 index 0000000..961ee8c Binary files /dev/null and b/Tests/isa/rv32ui-v-bltu differ diff --git a/Tests/isa/rv32ui-v-bltu.dump b/Tests/isa/rv32ui-v-bltu.dump new file mode 100644 index 0000000..cd3fffb --- /dev/null +++ b/Tests/isa/rv32ui-v-bltu.dump @@ -0,0 +1,1137 @@ + +rv32ui-v-bltu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: a2858593 addi a1,a1,-1496 # 80002ef0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a4458593 addi a1,a1,-1468 # 80002f7c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 9f058593 addi a1,a1,-1552 # 80002f94 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 92458593 addi a1,a1,-1756 # 80002f34 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 91458593 addi a1,a1,-1772 # 8000305c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 87c58593 addi a1,a1,-1924 # 80003038 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 77860613 addi a2,a2,1912 # 80003088 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 68860613 addi a2,a2,1672 # 80003004 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 60860613 addi a2,a2,1544 # 80002fd0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03b00793 li a5,59 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 096517b7 lui a5,0x9651 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 2bc78793 addi a5,a5,700 # 96512bc <_start-0x769aed44> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000093 li ra,0 +80002be8: 00100113 li sp,1 +80002bec: 0020e663 bltu ra,sp,80002bf8 +80002bf0: 2e301263 bne zero,gp,80002ed4 +80002bf4: 00301663 bne zero,gp,80002c00 +80002bf8: fe20eee3 bltu ra,sp,80002bf4 +80002bfc: 2c301c63 bne zero,gp,80002ed4 + +80002c00 : +80002c00: 00300193 li gp,3 +80002c04: ffe00093 li ra,-2 +80002c08: fff00113 li sp,-1 +80002c0c: 0020e663 bltu ra,sp,80002c18 +80002c10: 2c301263 bne zero,gp,80002ed4 +80002c14: 00301663 bne zero,gp,80002c20 +80002c18: fe20eee3 bltu ra,sp,80002c14 +80002c1c: 2a301c63 bne zero,gp,80002ed4 + +80002c20 : +80002c20: 00400193 li gp,4 +80002c24: 00000093 li ra,0 +80002c28: fff00113 li sp,-1 +80002c2c: 0020e663 bltu ra,sp,80002c38 +80002c30: 2a301263 bne zero,gp,80002ed4 +80002c34: 00301663 bne zero,gp,80002c40 +80002c38: fe20eee3 bltu ra,sp,80002c34 +80002c3c: 28301c63 bne zero,gp,80002ed4 + +80002c40 : +80002c40: 00500193 li gp,5 +80002c44: 00100093 li ra,1 +80002c48: 00000113 li sp,0 +80002c4c: 0020e463 bltu ra,sp,80002c54 +80002c50: 00301463 bne zero,gp,80002c58 +80002c54: 28301063 bne zero,gp,80002ed4 +80002c58: fe20eee3 bltu ra,sp,80002c54 + +80002c5c : +80002c5c: 00600193 li gp,6 +80002c60: fff00093 li ra,-1 +80002c64: ffe00113 li sp,-2 +80002c68: 0020e463 bltu ra,sp,80002c70 +80002c6c: 00301463 bne zero,gp,80002c74 +80002c70: 26301263 bne zero,gp,80002ed4 +80002c74: fe20eee3 bltu ra,sp,80002c70 + +80002c78 : +80002c78: 00700193 li gp,7 +80002c7c: fff00093 li ra,-1 +80002c80: 00000113 li sp,0 +80002c84: 0020e463 bltu ra,sp,80002c8c +80002c88: 00301463 bne zero,gp,80002c90 +80002c8c: 24301463 bne zero,gp,80002ed4 +80002c90: fe20eee3 bltu ra,sp,80002c8c + +80002c94 : +80002c94: 00800193 li gp,8 +80002c98: 800000b7 lui ra,0x80000 +80002c9c: 80000137 lui sp,0x80000 +80002ca0: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffff9c07> +80002ca4: 0020e463 bltu ra,sp,80002cac +80002ca8: 00301463 bne zero,gp,80002cb0 +80002cac: 22301463 bne zero,gp,80002ed4 +80002cb0: fe20eee3 bltu ra,sp,80002cac + +80002cb4 : +80002cb4: 00900193 li gp,9 +80002cb8: 00000213 li tp,0 +80002cbc: f00000b7 lui ra,0xf0000 +80002cc0: f0000137 lui sp,0xf0000 +80002cc4: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002cc8: 2020e663 bltu ra,sp,80002ed4 +80002ccc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cd0: 00200293 li t0,2 +80002cd4: fe5214e3 bne tp,t0,80002cbc + +80002cd8 : +80002cd8: 00a00193 li gp,10 +80002cdc: 00000213 li tp,0 +80002ce0: f00000b7 lui ra,0xf0000 +80002ce4: f0000137 lui sp,0xf0000 +80002ce8: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002cec: 00000013 nop +80002cf0: 1e20e263 bltu ra,sp,80002ed4 +80002cf4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cf8: 00200293 li t0,2 +80002cfc: fe5212e3 bne tp,t0,80002ce0 + +80002d00 : +80002d00: 00b00193 li gp,11 +80002d04: 00000213 li tp,0 +80002d08: f00000b7 lui ra,0xf0000 +80002d0c: f0000137 lui sp,0xf0000 +80002d10: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002d14: 00000013 nop +80002d18: 00000013 nop +80002d1c: 1a20ec63 bltu ra,sp,80002ed4 +80002d20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d24: 00200293 li t0,2 +80002d28: fe5210e3 bne tp,t0,80002d08 + +80002d2c : +80002d2c: 00c00193 li gp,12 +80002d30: 00000213 li tp,0 +80002d34: f00000b7 lui ra,0xf0000 +80002d38: 00000013 nop +80002d3c: f0000137 lui sp,0xf0000 +80002d40: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002d44: 1820e863 bltu ra,sp,80002ed4 +80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d4c: 00200293 li t0,2 +80002d50: fe5212e3 bne tp,t0,80002d34 + +80002d54 : +80002d54: 00d00193 li gp,13 +80002d58: 00000213 li tp,0 +80002d5c: f00000b7 lui ra,0xf0000 +80002d60: 00000013 nop +80002d64: f0000137 lui sp,0xf0000 +80002d68: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002d6c: 00000013 nop +80002d70: 1620e263 bltu ra,sp,80002ed4 +80002d74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d78: 00200293 li t0,2 +80002d7c: fe5210e3 bne tp,t0,80002d5c + +80002d80 : +80002d80: 00e00193 li gp,14 +80002d84: 00000213 li tp,0 +80002d88: f00000b7 lui ra,0xf0000 +80002d8c: 00000013 nop +80002d90: 00000013 nop +80002d94: f0000137 lui sp,0xf0000 +80002d98: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002d9c: 1220ec63 bltu ra,sp,80002ed4 +80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da4: 00200293 li t0,2 +80002da8: fe5210e3 bne tp,t0,80002d88 + +80002dac : +80002dac: 00f00193 li gp,15 +80002db0: 00000213 li tp,0 +80002db4: f00000b7 lui ra,0xf0000 +80002db8: f0000137 lui sp,0xf0000 +80002dbc: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002dc0: 1020ea63 bltu ra,sp,80002ed4 +80002dc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dc8: 00200293 li t0,2 +80002dcc: fe5214e3 bne tp,t0,80002db4 + +80002dd0 : +80002dd0: 01000193 li gp,16 +80002dd4: 00000213 li tp,0 +80002dd8: f00000b7 lui ra,0xf0000 +80002ddc: f0000137 lui sp,0xf0000 +80002de0: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002de4: 00000013 nop +80002de8: 0e20e663 bltu ra,sp,80002ed4 +80002dec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002df0: 00200293 li t0,2 +80002df4: fe5212e3 bne tp,t0,80002dd8 + +80002df8 : +80002df8: 01100193 li gp,17 +80002dfc: 00000213 li tp,0 +80002e00: f00000b7 lui ra,0xf0000 +80002e04: f0000137 lui sp,0xf0000 +80002e08: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002e0c: 00000013 nop +80002e10: 00000013 nop +80002e14: 0c20e063 bltu ra,sp,80002ed4 +80002e18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e1c: 00200293 li t0,2 +80002e20: fe5210e3 bne tp,t0,80002e00 + +80002e24 : +80002e24: 01200193 li gp,18 +80002e28: 00000213 li tp,0 +80002e2c: f00000b7 lui ra,0xf0000 +80002e30: 00000013 nop +80002e34: f0000137 lui sp,0xf0000 +80002e38: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002e3c: 0820ec63 bltu ra,sp,80002ed4 +80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e44: 00200293 li t0,2 +80002e48: fe5212e3 bne tp,t0,80002e2c + +80002e4c : +80002e4c: 01300193 li gp,19 +80002e50: 00000213 li tp,0 +80002e54: f00000b7 lui ra,0xf0000 +80002e58: 00000013 nop +80002e5c: f0000137 lui sp,0xf0000 +80002e60: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002e64: 00000013 nop +80002e68: 0620e663 bltu ra,sp,80002ed4 +80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e70: 00200293 li t0,2 +80002e74: fe5210e3 bne tp,t0,80002e54 + +80002e78 : +80002e78: 01400193 li gp,20 +80002e7c: 00000213 li tp,0 +80002e80: f00000b7 lui ra,0xf0000 +80002e84: 00000013 nop +80002e88: 00000013 nop +80002e8c: f0000137 lui sp,0xf0000 +80002e90: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07> +80002e94: 0420e063 bltu ra,sp,80002ed4 +80002e98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e9c: 00200293 li t0,2 +80002ea0: fe5210e3 bne tp,t0,80002e80 + +80002ea4 : +80002ea4: 00100093 li ra,1 +80002ea8: 00106a63 bltu zero,ra,80002ebc +80002eac: 00108093 addi ra,ra,1 # f0000001 <_end+0x6fff9c09> +80002eb0: 00108093 addi ra,ra,1 +80002eb4: 00108093 addi ra,ra,1 +80002eb8: 00108093 addi ra,ra,1 +80002ebc: 00108093 addi ra,ra,1 +80002ec0: 00108093 addi ra,ra,1 +80002ec4: 00300e93 li t4,3 +80002ec8: 01500193 li gp,21 +80002ecc: 01d09463 bne ra,t4,80002ed4 +80002ed0: 00301a63 bne zero,gp,80002ee4 + +80002ed4 : +80002ed4: 00119513 slli a0,gp,0x1 +80002ed8: 00050063 beqz a0,80002ed8 +80002edc: 00156513 ori a0,a0,1 +80002ee0: 00000073 ecall + +80002ee4 : +80002ee4: 00100513 li a0,1 +80002ee8: 00000073 ecall +80002eec: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-bne b/Tests/isa/rv32ui-v-bne new file mode 100644 index 0000000..a12e907 Binary files /dev/null and b/Tests/isa/rv32ui-v-bne differ diff --git a/Tests/isa/rv32ui-v-bne.dump b/Tests/isa/rv32ui-v-bne.dump new file mode 100644 index 0000000..2b4de55 --- /dev/null +++ b/Tests/isa/rv32ui-v-bne.dump @@ -0,0 +1,1125 @@ + +rv32ui-v-bne: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9f858593 addi a1,a1,-1544 # 80002ec0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a1458593 addi a1,a1,-1516 # 80002f4c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 9c058593 addi a1,a1,-1600 # 80002f64 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8f458593 addi a1,a1,-1804 # 80002f04 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8e458593 addi a1,a1,-1820 # 8000302c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 84c58593 addi a1,a1,-1972 # 80003008 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 74860613 addi a2,a2,1864 # 80003058 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 65860613 addi a2,a2,1624 # 80002fd4 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5d860613 addi a2,a2,1496 # 80002fa0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 02500793 li a5,37 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 039337b7 lui a5,0x3933 +80002b9c: 00080637 lui a2,0x80 +80002ba0: ade78793 addi a5,a5,-1314 # 3932ade <_start-0x7c6cd522> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000093 li ra,0 +80002be8: 00100113 li sp,1 +80002bec: 00209663 bne ra,sp,80002bf8 +80002bf0: 2a301a63 bne zero,gp,80002ea4 +80002bf4: 00301663 bne zero,gp,80002c00 +80002bf8: fe209ee3 bne ra,sp,80002bf4 +80002bfc: 2a301463 bne zero,gp,80002ea4 + +80002c00 : +80002c00: 00300193 li gp,3 +80002c04: 00100093 li ra,1 +80002c08: 00000113 li sp,0 +80002c0c: 00209663 bne ra,sp,80002c18 +80002c10: 28301a63 bne zero,gp,80002ea4 +80002c14: 00301663 bne zero,gp,80002c20 +80002c18: fe209ee3 bne ra,sp,80002c14 +80002c1c: 28301463 bne zero,gp,80002ea4 + +80002c20 : +80002c20: 00400193 li gp,4 +80002c24: fff00093 li ra,-1 +80002c28: 00100113 li sp,1 +80002c2c: 00209663 bne ra,sp,80002c38 +80002c30: 26301a63 bne zero,gp,80002ea4 +80002c34: 00301663 bne zero,gp,80002c40 +80002c38: fe209ee3 bne ra,sp,80002c34 +80002c3c: 26301463 bne zero,gp,80002ea4 + +80002c40 : +80002c40: 00500193 li gp,5 +80002c44: 00100093 li ra,1 +80002c48: fff00113 li sp,-1 +80002c4c: 00209663 bne ra,sp,80002c58 +80002c50: 24301a63 bne zero,gp,80002ea4 +80002c54: 00301663 bne zero,gp,80002c60 +80002c58: fe209ee3 bne ra,sp,80002c54 +80002c5c: 24301463 bne zero,gp,80002ea4 + +80002c60 : +80002c60: 00600193 li gp,6 +80002c64: 00000093 li ra,0 +80002c68: 00000113 li sp,0 +80002c6c: 00209463 bne ra,sp,80002c74 +80002c70: 00301463 bne zero,gp,80002c78 +80002c74: 22301863 bne zero,gp,80002ea4 +80002c78: fe209ee3 bne ra,sp,80002c74 + +80002c7c : +80002c7c: 00700193 li gp,7 +80002c80: 00100093 li ra,1 +80002c84: 00100113 li sp,1 +80002c88: 00209463 bne ra,sp,80002c90 +80002c8c: 00301463 bne zero,gp,80002c94 +80002c90: 20301a63 bne zero,gp,80002ea4 +80002c94: fe209ee3 bne ra,sp,80002c90 + +80002c98 : +80002c98: 00800193 li gp,8 +80002c9c: fff00093 li ra,-1 +80002ca0: fff00113 li sp,-1 +80002ca4: 00209463 bne ra,sp,80002cac +80002ca8: 00301463 bne zero,gp,80002cb0 +80002cac: 1e301c63 bne zero,gp,80002ea4 +80002cb0: fe209ee3 bne ra,sp,80002cac + +80002cb4 : +80002cb4: 00900193 li gp,9 +80002cb8: 00000213 li tp,0 +80002cbc: 00000093 li ra,0 +80002cc0: 00000113 li sp,0 +80002cc4: 1e209063 bne ra,sp,80002ea4 +80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ccc: 00200293 li t0,2 +80002cd0: fe5216e3 bne tp,t0,80002cbc + +80002cd4 : +80002cd4: 00a00193 li gp,10 +80002cd8: 00000213 li tp,0 +80002cdc: 00000093 li ra,0 +80002ce0: 00000113 li sp,0 +80002ce4: 00000013 nop +80002ce8: 1a209e63 bne ra,sp,80002ea4 +80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cf0: 00200293 li t0,2 +80002cf4: fe5214e3 bne tp,t0,80002cdc + +80002cf8 : +80002cf8: 00b00193 li gp,11 +80002cfc: 00000213 li tp,0 +80002d00: 00000093 li ra,0 +80002d04: 00000113 li sp,0 +80002d08: 00000013 nop +80002d0c: 00000013 nop +80002d10: 18209a63 bne ra,sp,80002ea4 +80002d14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d18: 00200293 li t0,2 +80002d1c: fe5212e3 bne tp,t0,80002d00 + +80002d20 : +80002d20: 00c00193 li gp,12 +80002d24: 00000213 li tp,0 +80002d28: 00000093 li ra,0 +80002d2c: 00000013 nop +80002d30: 00000113 li sp,0 +80002d34: 16209863 bne ra,sp,80002ea4 +80002d38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d3c: 00200293 li t0,2 +80002d40: fe5214e3 bne tp,t0,80002d28 + +80002d44 : +80002d44: 00d00193 li gp,13 +80002d48: 00000213 li tp,0 +80002d4c: 00000093 li ra,0 +80002d50: 00000013 nop +80002d54: 00000113 li sp,0 +80002d58: 00000013 nop +80002d5c: 14209463 bne ra,sp,80002ea4 +80002d60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d64: 00200293 li t0,2 +80002d68: fe5212e3 bne tp,t0,80002d4c + +80002d6c : +80002d6c: 00e00193 li gp,14 +80002d70: 00000213 li tp,0 +80002d74: 00000093 li ra,0 +80002d78: 00000013 nop +80002d7c: 00000013 nop +80002d80: 00000113 li sp,0 +80002d84: 12209063 bne ra,sp,80002ea4 +80002d88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d8c: 00200293 li t0,2 +80002d90: fe5212e3 bne tp,t0,80002d74 + +80002d94 : +80002d94: 00f00193 li gp,15 +80002d98: 00000213 li tp,0 +80002d9c: 00000093 li ra,0 +80002da0: 00000113 li sp,0 +80002da4: 10209063 bne ra,sp,80002ea4 +80002da8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dac: 00200293 li t0,2 +80002db0: fe5216e3 bne tp,t0,80002d9c + +80002db4 : +80002db4: 01000193 li gp,16 +80002db8: 00000213 li tp,0 +80002dbc: 00000093 li ra,0 +80002dc0: 00000113 li sp,0 +80002dc4: 00000013 nop +80002dc8: 0c209e63 bne ra,sp,80002ea4 +80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd0: 00200293 li t0,2 +80002dd4: fe5214e3 bne tp,t0,80002dbc + +80002dd8 : +80002dd8: 01100193 li gp,17 +80002ddc: 00000213 li tp,0 +80002de0: 00000093 li ra,0 +80002de4: 00000113 li sp,0 +80002de8: 00000013 nop +80002dec: 00000013 nop +80002df0: 0a209a63 bne ra,sp,80002ea4 +80002df4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002df8: 00200293 li t0,2 +80002dfc: fe5212e3 bne tp,t0,80002de0 + +80002e00 : +80002e00: 01200193 li gp,18 +80002e04: 00000213 li tp,0 +80002e08: 00000093 li ra,0 +80002e0c: 00000013 nop +80002e10: 00000113 li sp,0 +80002e14: 08209863 bne ra,sp,80002ea4 +80002e18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e1c: 00200293 li t0,2 +80002e20: fe5214e3 bne tp,t0,80002e08 + +80002e24 : +80002e24: 01300193 li gp,19 +80002e28: 00000213 li tp,0 +80002e2c: 00000093 li ra,0 +80002e30: 00000013 nop +80002e34: 00000113 li sp,0 +80002e38: 00000013 nop +80002e3c: 06209463 bne ra,sp,80002ea4 +80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e44: 00200293 li t0,2 +80002e48: fe5212e3 bne tp,t0,80002e2c + +80002e4c : +80002e4c: 01400193 li gp,20 +80002e50: 00000213 li tp,0 +80002e54: 00000093 li ra,0 +80002e58: 00000013 nop +80002e5c: 00000013 nop +80002e60: 00000113 li sp,0 +80002e64: 04209063 bne ra,sp,80002ea4 +80002e68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e6c: 00200293 li t0,2 +80002e70: fe5212e3 bne tp,t0,80002e54 + +80002e74 : +80002e74: 00100093 li ra,1 +80002e78: 00009a63 bnez ra,80002e8c +80002e7c: 00108093 addi ra,ra,1 +80002e80: 00108093 addi ra,ra,1 +80002e84: 00108093 addi ra,ra,1 +80002e88: 00108093 addi ra,ra,1 +80002e8c: 00108093 addi ra,ra,1 +80002e90: 00108093 addi ra,ra,1 +80002e94: 00300e93 li t4,3 +80002e98: 01500193 li gp,21 +80002e9c: 01d09463 bne ra,t4,80002ea4 +80002ea0: 00301a63 bne zero,gp,80002eb4 + +80002ea4 : +80002ea4: 00119513 slli a0,gp,0x1 +80002ea8: 00050063 beqz a0,80002ea8 +80002eac: 00156513 ori a0,a0,1 +80002eb0: 00000073 ecall + +80002eb4 : +80002eb4: 00100513 li a0,1 +80002eb8: 00000073 ecall +80002ebc: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-fence_i b/Tests/isa/rv32ui-v-fence_i new file mode 100644 index 0000000..82c2fdb Binary files /dev/null and b/Tests/isa/rv32ui-v-fence_i differ diff --git a/Tests/isa/rv32ui-v-fence_i.dump b/Tests/isa/rv32ui-v-fence_i.dump new file mode 100644 index 0000000..59500cb --- /dev/null +++ b/Tests/isa/rv32ui-v-fence_i.dump @@ -0,0 +1,1017 @@ + +rv32ui-v-fence_i: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bd050513 addi a0,a0,-1072 # 80002c00 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 86458593 addi a1,a1,-1948 # 80002d2c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 88058593 addi a1,a1,-1920 # 80002db8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 82c58593 addi a1,a1,-2004 # 80002dd0 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 76058593 addi a1,a1,1888 # 80002d70 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 75058593 addi a1,a1,1872 # 80002e98 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 6b858593 addi a1,a1,1720 # 80002e74 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 5b460613 addi a2,a2,1460 # 80002ec4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 4c460613 addi a2,a2,1220 # 80002e40 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 44460613 addi a2,a2,1092 # 80002e0c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00500793 li a5,5 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 08d6d7b7 lui a5,0x8d6d +80002b9c: 00080637 lui a2,0x80 +80002ba0: e9e78793 addi a5,a5,-354 # 8d6ce9e <_start-0x77293162> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 +80002be0: 0000 unimp +80002be2: 0000 unimp +80002be4: 0000 unimp +80002be6: 0000 unimp +80002be8: 0000 unimp +80002bea: 0000 unimp +80002bec: 0000 unimp +80002bee: 0000 unimp +80002bf0: 0000 unimp +80002bf2: 0000 unimp +80002bf4: 0000 unimp +80002bf6: 0000 unimp +80002bf8: 0000 unimp +80002bfa: 0000 unimp +80002bfc: 0000 unimp +80002bfe: 0000 unimp + +80002c00 : +80002c00: 06f00693 li a3,111 +80002c04: 00000517 auipc a0,0x0 +80002c08: 3fc51503 lh a0,1020(a0) # 80003000 +80002c0c: 00000597 auipc a1,0x0 +80002c10: 3f659583 lh a1,1014(a1) # 80003002 +80002c14: 00000013 nop +80002c18: 00000013 nop +80002c1c: 00000013 nop +80002c20: 00000013 nop +80002c24: 00000013 nop +80002c28: 00000013 nop +80002c2c: 00000013 nop +80002c30: 00000013 nop +80002c34: 00000013 nop +80002c38: 00000013 nop +80002c3c: 00000013 nop +80002c40: 00000297 auipc t0,0x0 +80002c44: 00a29a23 sh a0,20(t0) # 80002c54 +80002c48: 00000297 auipc t0,0x0 +80002c4c: 00b29723 sh a1,14(t0) # 80002c56 +80002c50: 0000100f fence.i +80002c54: 0de68693 addi a3,a3,222 + +80002c58 : +80002c58: 00000013 nop +80002c5c: 1bc00e93 li t4,444 +80002c60: 00200193 li gp,2 +80002c64: 07d69a63 bne a3,t4,80002cd8 +80002c68: 06400713 li a4,100 +80002c6c: fff70713 addi a4,a4,-1 +80002c70: fe071ee3 bnez a4,80002c6c +80002c74: 00000297 auipc t0,0x0 +80002c78: 04a29623 sh a0,76(t0) # 80002cc0 +80002c7c: 00000297 auipc t0,0x0 +80002c80: 04b29323 sh a1,70(t0) # 80002cc2 +80002c84: 0000100f fence.i +80002c88: 00000013 nop +80002c8c: 00000013 nop +80002c90: 00000013 nop +80002c94: 00000013 nop +80002c98: 00000013 nop +80002c9c: 00000013 nop +80002ca0: 00000013 nop +80002ca4: 00000013 nop +80002ca8: 00000013 nop +80002cac: 00000013 nop +80002cb0: 00000013 nop +80002cb4: 00000013 nop +80002cb8: 00000013 nop +80002cbc: 00000013 nop +80002cc0: 22b68693 addi a3,a3,555 + +80002cc4 : +80002cc4: 00000013 nop +80002cc8: 30900e93 li t4,777 +80002ccc: 00300193 li gp,3 +80002cd0: 01d69463 bne a3,t4,80002cd8 +80002cd4: 00301a63 bne zero,gp,80002ce8 + +80002cd8 : +80002cd8: 00119513 slli a0,gp,0x1 +80002cdc: 00050063 beqz a0,80002cdc +80002ce0: 00156513 ori a0,a0,1 +80002ce4: 00000073 ecall + +80002ce8 : +80002ce8: 00100513 li a0,1 +80002cec: 00000073 ecall +80002cf0: c0001073 unimp +80002cf4: 0000 unimp +80002cf6: 0000 unimp +80002cf8: 0000 unimp +80002cfa: 0000 unimp +80002cfc: 0000 unimp +80002cfe: 0000 unimp +80002d00: 0000 unimp +80002d02: 0000 unimp +80002d04: 0000 unimp +80002d06: 0000 unimp +80002d08: 0000 unimp +80002d0a: 0000 unimp +80002d0c: 0000 unimp +80002d0e: 0000 unimp +80002d10: 0000 unimp +80002d12: 0000 unimp +80002d14: 0000 unimp +80002d16: 0000 unimp +80002d18: 0000 unimp +80002d1a: 0000 unimp +80002d1c: 0000 unimp +80002d1e: 0000 unimp +80002d20: 0000 unimp +80002d22: 0000 unimp +80002d24: 0000 unimp +80002d26: 0000 unimp +80002d28: 0000 unimp +80002d2a: 0000 unimp + +Disassembly of section .data: + +80003000 : +80003000: 14d68693 addi a3,a3,333 diff --git a/Tests/isa/rv32ui-v-jal b/Tests/isa/rv32ui-v-jal new file mode 100644 index 0000000..f63f9b3 Binary files /dev/null and b/Tests/isa/rv32ui-v-jal differ diff --git a/Tests/isa/rv32ui-v-jal.dump b/Tests/isa/rv32ui-v-jal.dump new file mode 100644 index 0000000..7f96c3c --- /dev/null +++ b/Tests/isa/rv32ui-v-jal.dump @@ -0,0 +1,937 @@ + +rv32ui-v-jal: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 78858593 addi a1,a1,1928 # 80002c50 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7a458593 addi a1,a1,1956 # 80002cdc +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75058593 addi a1,a1,1872 # 80002cf4 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 68458593 addi a1,a1,1668 # 80002c94 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 67458593 addi a1,a1,1652 # 80002dbc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5dc58593 addi a1,a1,1500 # 80002d98 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4d860613 addi a2,a2,1240 # 80002de8 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3e860613 addi a2,a2,1000 # 80002d64 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 36860613 addi a2,a2,872 # 80002d30 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 01900793 li a5,25 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0b08b7b7 lui a5,0xb08b +80002b9c: 00080637 lui a2,0x80 +80002ba0: 85f78793 addi a5,a5,-1953 # b08a85f <_start-0x74f757a1> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000093 li ra,0 +80002be8: 0100026f jal tp,80002bf8 + +80002bec : +80002bec: 00000013 nop +80002bf0: 00000013 nop +80002bf4: 0400006f j 80002c34 + +80002bf8 : +80002bf8: 00000117 auipc sp,0x0 +80002bfc: ff410113 addi sp,sp,-12 # 80002bec +80002c00: 02411a63 bne sp,tp,80002c34 + +80002c04 : +80002c04: 00100093 li ra,1 +80002c08: 0140006f j 80002c1c +80002c0c: 00108093 addi ra,ra,1 +80002c10: 00108093 addi ra,ra,1 +80002c14: 00108093 addi ra,ra,1 +80002c18: 00108093 addi ra,ra,1 +80002c1c: 00108093 addi ra,ra,1 +80002c20: 00108093 addi ra,ra,1 +80002c24: 00300e93 li t4,3 +80002c28: 00300193 li gp,3 +80002c2c: 01d09463 bne ra,t4,80002c34 +80002c30: 00301a63 bne zero,gp,80002c44 + +80002c34 : +80002c34: 00119513 slli a0,gp,0x1 +80002c38: 00050063 beqz a0,80002c38 +80002c3c: 00156513 ori a0,a0,1 +80002c40: 00000073 ecall + +80002c44 : +80002c44: 00100513 li a0,1 +80002c48: 00000073 ecall +80002c4c: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-jalr b/Tests/isa/rv32ui-v-jalr new file mode 100644 index 0000000..cc61538 Binary files /dev/null and b/Tests/isa/rv32ui-v-jalr differ diff --git a/Tests/isa/rv32ui-v-jalr.dump b/Tests/isa/rv32ui-v-jalr.dump new file mode 100644 index 0000000..b6b2395 --- /dev/null +++ b/Tests/isa/rv32ui-v-jalr.dump @@ -0,0 +1,975 @@ + +rv32ui-v-jalr: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 80858593 addi a1,a1,-2040 # 80002cd0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 82458593 addi a1,a1,-2012 # 80002d5c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 7d058593 addi a1,a1,2000 # 80002d74 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 70458593 addi a1,a1,1796 # 80002d14 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6f458593 addi a1,a1,1780 # 80002e3c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 65c58593 addi a1,a1,1628 # 80002e18 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 55860613 addi a2,a2,1368 # 80002e68 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 46860613 addi a2,a2,1128 # 80002de4 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3e860613 addi a2,a2,1000 # 80002db0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 03b00793 li a5,59 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0b7f17b7 lui a5,0xb7f1 +80002b9c: 00080637 lui a2,0x80 +80002ba0: a3678793 addi a5,a5,-1482 # b7f0a36 <_start-0x7480f5ca> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00200193 li gp,2 +80002be4: 00000293 li t0,0 +80002be8: 00000317 auipc t1,0x0 +80002bec: 01030313 addi t1,t1,16 # 80002bf8 +80002bf0: 000302e7 jalr t0,t1 + +80002bf4 : +80002bf4: 0c00006f j 80002cb4 + +80002bf8 : +80002bf8: 00000317 auipc t1,0x0 +80002bfc: ffc30313 addi t1,t1,-4 # 80002bf4 +80002c00: 0a629a63 bne t0,t1,80002cb4 + +80002c04 : +80002c04: 00400193 li gp,4 +80002c08: 00000213 li tp,0 +80002c0c: 00000317 auipc t1,0x0 +80002c10: 01030313 addi t1,t1,16 # 80002c1c +80002c14: 000309e7 jalr s3,t1 +80002c18: 08301e63 bne zero,gp,80002cb4 +80002c1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002c20: 00200293 li t0,2 +80002c24: fe5214e3 bne tp,t0,80002c0c + +80002c28 : +80002c28: 00500193 li gp,5 +80002c2c: 00000213 li tp,0 +80002c30: 00000317 auipc t1,0x0 +80002c34: 01430313 addi t1,t1,20 # 80002c44 +80002c38: 00000013 nop +80002c3c: 000309e7 jalr s3,t1 +80002c40: 06301a63 bne zero,gp,80002cb4 +80002c44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002c48: 00200293 li t0,2 +80002c4c: fe5212e3 bne tp,t0,80002c30 + +80002c50 : +80002c50: 00600193 li gp,6 +80002c54: 00000213 li tp,0 +80002c58: 00000317 auipc t1,0x0 +80002c5c: 01830313 addi t1,t1,24 # 80002c70 +80002c60: 00000013 nop +80002c64: 00000013 nop +80002c68: 000309e7 jalr s3,t1 +80002c6c: 04301463 bne zero,gp,80002cb4 +80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002c74: 00200293 li t0,2 +80002c78: fe5210e3 bne tp,t0,80002c58 + +80002c7c : +80002c7c: 00100293 li t0,1 +80002c80: 00000317 auipc t1,0x0 +80002c84: 01c30313 addi t1,t1,28 # 80002c9c +80002c88: ffc30067 jr -4(t1) +80002c8c: 00128293 addi t0,t0,1 +80002c90: 00128293 addi t0,t0,1 +80002c94: 00128293 addi t0,t0,1 +80002c98: 00128293 addi t0,t0,1 +80002c9c: 00128293 addi t0,t0,1 +80002ca0: 00128293 addi t0,t0,1 +80002ca4: 00400e93 li t4,4 +80002ca8: 00700193 li gp,7 +80002cac: 01d29463 bne t0,t4,80002cb4 +80002cb0: 00301a63 bne zero,gp,80002cc4 + +80002cb4 : +80002cb4: 00119513 slli a0,gp,0x1 +80002cb8: 00050063 beqz a0,80002cb8 +80002cbc: 00156513 ori a0,a0,1 +80002cc0: 00000073 ecall + +80002cc4 : +80002cc4: 00100513 li a0,1 +80002cc8: 00000073 ecall +80002ccc: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-lb b/Tests/isa/rv32ui-v-lb new file mode 100644 index 0000000..63346f8 Binary files /dev/null and b/Tests/isa/rv32ui-v-lb differ diff --git a/Tests/isa/rv32ui-v-lb.dump b/Tests/isa/rv32ui-v-lb.dump new file mode 100644 index 0000000..72282ab --- /dev/null +++ b/Tests/isa/rv32ui-v-lb.dump @@ -0,0 +1,1107 @@ + +rv32ui-v-lb: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 98058593 addi a1,a1,-1664 # 80002e48 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 99c58593 addi a1,a1,-1636 # 80002ed4 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 94858593 addi a1,a1,-1720 # 80002eec +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 87c58593 addi a1,a1,-1924 # 80002e8c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 86c58593 addi a1,a1,-1940 # 80002fb4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 7d458593 addi a1,a1,2004 # 80002f90 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 6d060613 addi a2,a2,1744 # 80002fe0 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 5e060613 addi a2,a2,1504 # 80002f5c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 56060613 addi a2,a2,1376 # 80002f28 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 00b00793 li a5,11 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 074ad7b7 lui a5,0x74ad +80002b9c: 00080637 lui a2,0x80 +80002ba0: a5a78793 addi a5,a5,-1446 # 74aca5a <_start-0x78b535a6> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: 00008f03 lb t5,0(ra) +80002bec: fff00e93 li t4,-1 +80002bf0: 00200193 li gp,2 +80002bf4: 23df1c63 bne t5,t4,80002e2c + +80002bf8 : +80002bf8: 00001097 auipc ra,0x1 +80002bfc: 40808093 addi ra,ra,1032 # 80004000 +80002c00: 00108f03 lb t5,1(ra) +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 23df1063 bne t5,t4,80002e2c + +80002c10 : +80002c10: 00001097 auipc ra,0x1 +80002c14: 3f008093 addi ra,ra,1008 # 80004000 +80002c18: 00208f03 lb t5,2(ra) +80002c1c: ff000e93 li t4,-16 +80002c20: 00400193 li gp,4 +80002c24: 21df1463 bne t5,t4,80002e2c + +80002c28 : +80002c28: 00001097 auipc ra,0x1 +80002c2c: 3d808093 addi ra,ra,984 # 80004000 +80002c30: 00308f03 lb t5,3(ra) +80002c34: 00f00e93 li t4,15 +80002c38: 00500193 li gp,5 +80002c3c: 1fdf1863 bne t5,t4,80002e2c + +80002c40 : +80002c40: 00001097 auipc ra,0x1 +80002c44: 3c308093 addi ra,ra,963 # 80004003 +80002c48: ffd08f03 lb t5,-3(ra) +80002c4c: fff00e93 li t4,-1 +80002c50: 00600193 li gp,6 +80002c54: 1ddf1c63 bne t5,t4,80002e2c + +80002c58 : +80002c58: 00001097 auipc ra,0x1 +80002c5c: 3ab08093 addi ra,ra,939 # 80004003 +80002c60: ffe08f03 lb t5,-2(ra) +80002c64: 00000e93 li t4,0 +80002c68: 00700193 li gp,7 +80002c6c: 1ddf1063 bne t5,t4,80002e2c + +80002c70 : +80002c70: 00001097 auipc ra,0x1 +80002c74: 39308093 addi ra,ra,915 # 80004003 +80002c78: fff08f03 lb t5,-1(ra) +80002c7c: ff000e93 li t4,-16 +80002c80: 00800193 li gp,8 +80002c84: 1bdf1463 bne t5,t4,80002e2c + +80002c88 : +80002c88: 00001097 auipc ra,0x1 +80002c8c: 37b08093 addi ra,ra,891 # 80004003 +80002c90: 00008f03 lb t5,0(ra) +80002c94: 00f00e93 li t4,15 +80002c98: 00900193 li gp,9 +80002c9c: 19df1863 bne t5,t4,80002e2c + +80002ca0 : +80002ca0: 00001097 auipc ra,0x1 +80002ca4: 36008093 addi ra,ra,864 # 80004000 +80002ca8: fe008093 addi ra,ra,-32 +80002cac: 02008283 lb t0,32(ra) +80002cb0: fff00e93 li t4,-1 +80002cb4: 00a00193 li gp,10 +80002cb8: 17d29a63 bne t0,t4,80002e2c + +80002cbc : +80002cbc: 00001097 auipc ra,0x1 +80002cc0: 34408093 addi ra,ra,836 # 80004000 +80002cc4: ffa08093 addi ra,ra,-6 +80002cc8: 00708283 lb t0,7(ra) +80002ccc: 00000e93 li t4,0 +80002cd0: 00b00193 li gp,11 +80002cd4: 15d29c63 bne t0,t4,80002e2c + +80002cd8 : +80002cd8: 00c00193 li gp,12 +80002cdc: 00000213 li tp,0 +80002ce0: 00001097 auipc ra,0x1 +80002ce4: 32108093 addi ra,ra,801 # 80004001 +80002ce8: 00108f03 lb t5,1(ra) +80002cec: 000f0313 mv t1,t5 +80002cf0: ff000e93 li t4,-16 +80002cf4: 13d31c63 bne t1,t4,80002e2c +80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cfc: 00200293 li t0,2 +80002d00: fe5210e3 bne tp,t0,80002ce0 + +80002d04 : +80002d04: 00d00193 li gp,13 +80002d08: 00000213 li tp,0 +80002d0c: 00001097 auipc ra,0x1 +80002d10: 2f608093 addi ra,ra,758 # 80004002 +80002d14: 00108f03 lb t5,1(ra) +80002d18: 00000013 nop +80002d1c: 000f0313 mv t1,t5 +80002d20: 00f00e93 li t4,15 +80002d24: 11d31463 bne t1,t4,80002e2c +80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d2c: 00200293 li t0,2 +80002d30: fc521ee3 bne tp,t0,80002d0c + +80002d34 : +80002d34: 00e00193 li gp,14 +80002d38: 00000213 li tp,0 +80002d3c: 00001097 auipc ra,0x1 +80002d40: 2c408093 addi ra,ra,708 # 80004000 +80002d44: 00108f03 lb t5,1(ra) +80002d48: 00000013 nop +80002d4c: 00000013 nop +80002d50: 000f0313 mv t1,t5 +80002d54: 00000e93 li t4,0 +80002d58: 0dd31a63 bne t1,t4,80002e2c +80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d60: 00200293 li t0,2 +80002d64: fc521ce3 bne tp,t0,80002d3c + +80002d68 : +80002d68: 00f00193 li gp,15 +80002d6c: 00000213 li tp,0 +80002d70: 00001097 auipc ra,0x1 +80002d74: 29108093 addi ra,ra,657 # 80004001 +80002d78: 00108f03 lb t5,1(ra) +80002d7c: ff000e93 li t4,-16 +80002d80: 0bdf1663 bne t5,t4,80002e2c +80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d88: 00200293 li t0,2 +80002d8c: fe5212e3 bne tp,t0,80002d70 + +80002d90 : +80002d90: 01000193 li gp,16 +80002d94: 00000213 li tp,0 +80002d98: 00001097 auipc ra,0x1 +80002d9c: 26a08093 addi ra,ra,618 # 80004002 +80002da0: 00000013 nop +80002da4: 00108f03 lb t5,1(ra) +80002da8: 00f00e93 li t4,15 +80002dac: 09df1063 bne t5,t4,80002e2c +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5210e3 bne tp,t0,80002d98 + +80002dbc : +80002dbc: 01100193 li gp,17 +80002dc0: 00000213 li tp,0 +80002dc4: 00001097 auipc ra,0x1 +80002dc8: 23c08093 addi ra,ra,572 # 80004000 +80002dcc: 00000013 nop +80002dd0: 00000013 nop +80002dd4: 00108f03 lb t5,1(ra) +80002dd8: 00000e93 li t4,0 +80002ddc: 05df1863 bne t5,t4,80002e2c +80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de4: 00200293 li t0,2 +80002de8: fc521ee3 bne tp,t0,80002dc4 + +80002dec : +80002dec: 00001297 auipc t0,0x1 +80002df0: 21428293 addi t0,t0,532 # 80004000 +80002df4: 00028103 lb sp,0(t0) +80002df8: 00200113 li sp,2 +80002dfc: 00200e93 li t4,2 +80002e00: 01200193 li gp,18 +80002e04: 03d11463 bne sp,t4,80002e2c + +80002e08 : +80002e08: 00001297 auipc t0,0x1 +80002e0c: 1f828293 addi t0,t0,504 # 80004000 +80002e10: 00028103 lb sp,0(t0) +80002e14: 00000013 nop +80002e18: 00200113 li sp,2 +80002e1c: 00200e93 li t4,2 +80002e20: 01300193 li gp,19 +80002e24: 01d11463 bne sp,t4,80002e2c +80002e28: 00301a63 bne zero,gp,80002e3c + +80002e2c : +80002e2c: 00119513 slli a0,gp,0x1 +80002e30: 00050063 beqz a0,80002e30 +80002e34: 00156513 ori a0,a0,1 +80002e38: 00000073 ecall + +80002e3c : +80002e3c: 00100513 li a0,1 +80002e40: 00000073 ecall +80002e44: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 0xff + +80004001 : +80004001: fsw fs0,32(s0) + +80004002 : +80004002: addi a2,sp,988 + +80004003 : +80004003: 0f Address 0x0000000080004003 is out of bounds. + +80004007: diff --git a/Tests/isa/rv32ui-v-lbu b/Tests/isa/rv32ui-v-lbu new file mode 100644 index 0000000..b799675 Binary files /dev/null and b/Tests/isa/rv32ui-v-lbu differ diff --git a/Tests/isa/rv32ui-v-lbu.dump b/Tests/isa/rv32ui-v-lbu.dump new file mode 100644 index 0000000..9ad9e74 --- /dev/null +++ b/Tests/isa/rv32ui-v-lbu.dump @@ -0,0 +1,1107 @@ + +rv32ui-v-lbu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 98058593 addi a1,a1,-1664 # 80002e48 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 99c58593 addi a1,a1,-1636 # 80002ed4 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 94858593 addi a1,a1,-1720 # 80002eec +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 87c58593 addi a1,a1,-1924 # 80002e8c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 86c58593 addi a1,a1,-1940 # 80002fb4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 7d458593 addi a1,a1,2004 # 80002f90 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 6d060613 addi a2,a2,1744 # 80002fe0 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 5e060613 addi a2,a2,1504 # 80002f5c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 56060613 addi a2,a2,1376 # 80002f28 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 02d00793 li a5,45 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0bbae7b7 lui a5,0xbbae +80002b9c: 00080637 lui a2,0x80 +80002ba0: 7e478793 addi a5,a5,2020 # bbae7e4 <_start-0x7445181c> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: 0000cf03 lbu t5,0(ra) +80002bec: 0ff00e93 li t4,255 +80002bf0: 00200193 li gp,2 +80002bf4: 23df1c63 bne t5,t4,80002e2c + +80002bf8 : +80002bf8: 00001097 auipc ra,0x1 +80002bfc: 40808093 addi ra,ra,1032 # 80004000 +80002c00: 0010cf03 lbu t5,1(ra) +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 23df1063 bne t5,t4,80002e2c + +80002c10 : +80002c10: 00001097 auipc ra,0x1 +80002c14: 3f008093 addi ra,ra,1008 # 80004000 +80002c18: 0020cf03 lbu t5,2(ra) +80002c1c: 0f000e93 li t4,240 +80002c20: 00400193 li gp,4 +80002c24: 21df1463 bne t5,t4,80002e2c + +80002c28 : +80002c28: 00001097 auipc ra,0x1 +80002c2c: 3d808093 addi ra,ra,984 # 80004000 +80002c30: 0030cf03 lbu t5,3(ra) +80002c34: 00f00e93 li t4,15 +80002c38: 00500193 li gp,5 +80002c3c: 1fdf1863 bne t5,t4,80002e2c + +80002c40 : +80002c40: 00001097 auipc ra,0x1 +80002c44: 3c308093 addi ra,ra,963 # 80004003 +80002c48: ffd0cf03 lbu t5,-3(ra) +80002c4c: 0ff00e93 li t4,255 +80002c50: 00600193 li gp,6 +80002c54: 1ddf1c63 bne t5,t4,80002e2c + +80002c58 : +80002c58: 00001097 auipc ra,0x1 +80002c5c: 3ab08093 addi ra,ra,939 # 80004003 +80002c60: ffe0cf03 lbu t5,-2(ra) +80002c64: 00000e93 li t4,0 +80002c68: 00700193 li gp,7 +80002c6c: 1ddf1063 bne t5,t4,80002e2c + +80002c70 : +80002c70: 00001097 auipc ra,0x1 +80002c74: 39308093 addi ra,ra,915 # 80004003 +80002c78: fff0cf03 lbu t5,-1(ra) +80002c7c: 0f000e93 li t4,240 +80002c80: 00800193 li gp,8 +80002c84: 1bdf1463 bne t5,t4,80002e2c + +80002c88 : +80002c88: 00001097 auipc ra,0x1 +80002c8c: 37b08093 addi ra,ra,891 # 80004003 +80002c90: 0000cf03 lbu t5,0(ra) +80002c94: 00f00e93 li t4,15 +80002c98: 00900193 li gp,9 +80002c9c: 19df1863 bne t5,t4,80002e2c + +80002ca0 : +80002ca0: 00001097 auipc ra,0x1 +80002ca4: 36008093 addi ra,ra,864 # 80004000 +80002ca8: fe008093 addi ra,ra,-32 +80002cac: 0200c283 lbu t0,32(ra) +80002cb0: 0ff00e93 li t4,255 +80002cb4: 00a00193 li gp,10 +80002cb8: 17d29a63 bne t0,t4,80002e2c + +80002cbc : +80002cbc: 00001097 auipc ra,0x1 +80002cc0: 34408093 addi ra,ra,836 # 80004000 +80002cc4: ffa08093 addi ra,ra,-6 +80002cc8: 0070c283 lbu t0,7(ra) +80002ccc: 00000e93 li t4,0 +80002cd0: 00b00193 li gp,11 +80002cd4: 15d29c63 bne t0,t4,80002e2c + +80002cd8 : +80002cd8: 00c00193 li gp,12 +80002cdc: 00000213 li tp,0 +80002ce0: 00001097 auipc ra,0x1 +80002ce4: 32108093 addi ra,ra,801 # 80004001 +80002ce8: 0010cf03 lbu t5,1(ra) +80002cec: 000f0313 mv t1,t5 +80002cf0: 0f000e93 li t4,240 +80002cf4: 13d31c63 bne t1,t4,80002e2c +80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cfc: 00200293 li t0,2 +80002d00: fe5210e3 bne tp,t0,80002ce0 + +80002d04 : +80002d04: 00d00193 li gp,13 +80002d08: 00000213 li tp,0 +80002d0c: 00001097 auipc ra,0x1 +80002d10: 2f608093 addi ra,ra,758 # 80004002 +80002d14: 0010cf03 lbu t5,1(ra) +80002d18: 00000013 nop +80002d1c: 000f0313 mv t1,t5 +80002d20: 00f00e93 li t4,15 +80002d24: 11d31463 bne t1,t4,80002e2c +80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d2c: 00200293 li t0,2 +80002d30: fc521ee3 bne tp,t0,80002d0c + +80002d34 : +80002d34: 00e00193 li gp,14 +80002d38: 00000213 li tp,0 +80002d3c: 00001097 auipc ra,0x1 +80002d40: 2c408093 addi ra,ra,708 # 80004000 +80002d44: 0010cf03 lbu t5,1(ra) +80002d48: 00000013 nop +80002d4c: 00000013 nop +80002d50: 000f0313 mv t1,t5 +80002d54: 00000e93 li t4,0 +80002d58: 0dd31a63 bne t1,t4,80002e2c +80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d60: 00200293 li t0,2 +80002d64: fc521ce3 bne tp,t0,80002d3c + +80002d68 : +80002d68: 00f00193 li gp,15 +80002d6c: 00000213 li tp,0 +80002d70: 00001097 auipc ra,0x1 +80002d74: 29108093 addi ra,ra,657 # 80004001 +80002d78: 0010cf03 lbu t5,1(ra) +80002d7c: 0f000e93 li t4,240 +80002d80: 0bdf1663 bne t5,t4,80002e2c +80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d88: 00200293 li t0,2 +80002d8c: fe5212e3 bne tp,t0,80002d70 + +80002d90 : +80002d90: 01000193 li gp,16 +80002d94: 00000213 li tp,0 +80002d98: 00001097 auipc ra,0x1 +80002d9c: 26a08093 addi ra,ra,618 # 80004002 +80002da0: 00000013 nop +80002da4: 0010cf03 lbu t5,1(ra) +80002da8: 00f00e93 li t4,15 +80002dac: 09df1063 bne t5,t4,80002e2c +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5210e3 bne tp,t0,80002d98 + +80002dbc : +80002dbc: 01100193 li gp,17 +80002dc0: 00000213 li tp,0 +80002dc4: 00001097 auipc ra,0x1 +80002dc8: 23c08093 addi ra,ra,572 # 80004000 +80002dcc: 00000013 nop +80002dd0: 00000013 nop +80002dd4: 0010cf03 lbu t5,1(ra) +80002dd8: 00000e93 li t4,0 +80002ddc: 05df1863 bne t5,t4,80002e2c +80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de4: 00200293 li t0,2 +80002de8: fc521ee3 bne tp,t0,80002dc4 + +80002dec : +80002dec: 00001297 auipc t0,0x1 +80002df0: 21428293 addi t0,t0,532 # 80004000 +80002df4: 0002c103 lbu sp,0(t0) +80002df8: 00200113 li sp,2 +80002dfc: 00200e93 li t4,2 +80002e00: 01200193 li gp,18 +80002e04: 03d11463 bne sp,t4,80002e2c + +80002e08 : +80002e08: 00001297 auipc t0,0x1 +80002e0c: 1f828293 addi t0,t0,504 # 80004000 +80002e10: 0002c103 lbu sp,0(t0) +80002e14: 00000013 nop +80002e18: 00200113 li sp,2 +80002e1c: 00200e93 li t4,2 +80002e20: 01300193 li gp,19 +80002e24: 01d11463 bne sp,t4,80002e2c +80002e28: 00301a63 bne zero,gp,80002e3c + +80002e2c : +80002e2c: 00119513 slli a0,gp,0x1 +80002e30: 00050063 beqz a0,80002e30 +80002e34: 00156513 ori a0,a0,1 +80002e38: 00000073 ecall + +80002e3c : +80002e3c: 00100513 li a0,1 +80002e40: 00000073 ecall +80002e44: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 0xff + +80004001 : +80004001: fsw fs0,32(s0) + +80004002 : +80004002: addi a2,sp,988 + +80004003 : +80004003: 0f Address 0x0000000080004003 is out of bounds. + +80004007: diff --git a/Tests/isa/rv32ui-v-lh b/Tests/isa/rv32ui-v-lh new file mode 100644 index 0000000..8247fa5 Binary files /dev/null and b/Tests/isa/rv32ui-v-lh differ diff --git a/Tests/isa/rv32ui-v-lh.dump b/Tests/isa/rv32ui-v-lh.dump new file mode 100644 index 0000000..4e9df63 --- /dev/null +++ b/Tests/isa/rv32ui-v-lh.dump @@ -0,0 +1,1113 @@ + +rv32ui-v-lh: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9a058593 addi a1,a1,-1632 # 80002e68 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9bc58593 addi a1,a1,-1604 # 80002ef4 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 96858593 addi a1,a1,-1688 # 80002f0c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 89c58593 addi a1,a1,-1892 # 80002eac +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 88c58593 addi a1,a1,-1908 # 80002fd4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 7f458593 addi a1,a1,2036 # 80002fb0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 6f060613 addi a2,a2,1776 # 80003000 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 60060613 addi a2,a2,1536 # 80002f7c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 58060613 addi a2,a2,1408 # 80002f48 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 00b00793 li a5,11 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0a0d07b7 lui a5,0xa0d0 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 22478793 addi a5,a5,548 # a0d0224 <_start-0x75f2fddc> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: 00009f03 lh t5,0(ra) +80002bec: 0ff00e93 li t4,255 +80002bf0: 00200193 li gp,2 +80002bf4: 25df1c63 bne t5,t4,80002e4c + +80002bf8 : +80002bf8: 00001097 auipc ra,0x1 +80002bfc: 40808093 addi ra,ra,1032 # 80004000 +80002c00: 00209f03 lh t5,2(ra) +80002c04: f0000e93 li t4,-256 +80002c08: 00300193 li gp,3 +80002c0c: 25df1063 bne t5,t4,80002e4c + +80002c10 : +80002c10: 00001097 auipc ra,0x1 +80002c14: 3f008093 addi ra,ra,1008 # 80004000 +80002c18: 00409f03 lh t5,4(ra) +80002c1c: 00001eb7 lui t4,0x1 +80002c20: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002c24: 00400193 li gp,4 +80002c28: 23df1263 bne t5,t4,80002e4c + +80002c2c : +80002c2c: 00001097 auipc ra,0x1 +80002c30: 3d408093 addi ra,ra,980 # 80004000 +80002c34: 00609f03 lh t5,6(ra) +80002c38: fffffeb7 lui t4,0xfffff +80002c3c: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17> +80002c40: 00500193 li gp,5 +80002c44: 21df1463 bne t5,t4,80002e4c + +80002c48 : +80002c48: 00001097 auipc ra,0x1 +80002c4c: 3be08093 addi ra,ra,958 # 80004006 +80002c50: ffa09f03 lh t5,-6(ra) +80002c54: 0ff00e93 li t4,255 +80002c58: 00600193 li gp,6 +80002c5c: 1fdf1863 bne t5,t4,80002e4c + +80002c60 : +80002c60: 00001097 auipc ra,0x1 +80002c64: 3a608093 addi ra,ra,934 # 80004006 +80002c68: ffc09f03 lh t5,-4(ra) +80002c6c: f0000e93 li t4,-256 +80002c70: 00700193 li gp,7 +80002c74: 1ddf1c63 bne t5,t4,80002e4c + +80002c78 : +80002c78: 00001097 auipc ra,0x1 +80002c7c: 38e08093 addi ra,ra,910 # 80004006 +80002c80: ffe09f03 lh t5,-2(ra) +80002c84: 00001eb7 lui t4,0x1 +80002c88: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002c8c: 00800193 li gp,8 +80002c90: 1bdf1e63 bne t5,t4,80002e4c + +80002c94 : +80002c94: 00001097 auipc ra,0x1 +80002c98: 37208093 addi ra,ra,882 # 80004006 +80002c9c: 00009f03 lh t5,0(ra) +80002ca0: fffffeb7 lui t4,0xfffff +80002ca4: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17> +80002ca8: 00900193 li gp,9 +80002cac: 1bdf1063 bne t5,t4,80002e4c + +80002cb0 : +80002cb0: 00001097 auipc ra,0x1 +80002cb4: 35008093 addi ra,ra,848 # 80004000 +80002cb8: fe008093 addi ra,ra,-32 +80002cbc: 02009283 lh t0,32(ra) +80002cc0: 0ff00e93 li t4,255 +80002cc4: 00a00193 li gp,10 +80002cc8: 19d29263 bne t0,t4,80002e4c + +80002ccc : +80002ccc: 00001097 auipc ra,0x1 +80002cd0: 33408093 addi ra,ra,820 # 80004000 +80002cd4: ffb08093 addi ra,ra,-5 +80002cd8: 00709283 lh t0,7(ra) +80002cdc: f0000e93 li t4,-256 +80002ce0: 00b00193 li gp,11 +80002ce4: 17d29463 bne t0,t4,80002e4c + +80002ce8 : +80002ce8: 00c00193 li gp,12 +80002cec: 00000213 li tp,0 +80002cf0: 00001097 auipc ra,0x1 +80002cf4: 31208093 addi ra,ra,786 # 80004002 +80002cf8: 00209f03 lh t5,2(ra) +80002cfc: 000f0313 mv t1,t5 +80002d00: 00001eb7 lui t4,0x1 +80002d04: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002d08: 15d31263 bne t1,t4,80002e4c +80002d0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d10: 00200293 li t0,2 +80002d14: fc521ee3 bne tp,t0,80002cf0 + +80002d18 : +80002d18: 00d00193 li gp,13 +80002d1c: 00000213 li tp,0 +80002d20: 00001097 auipc ra,0x1 +80002d24: 2e408093 addi ra,ra,740 # 80004004 +80002d28: 00209f03 lh t5,2(ra) +80002d2c: 00000013 nop +80002d30: 000f0313 mv t1,t5 +80002d34: fffffeb7 lui t4,0xfffff +80002d38: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17> +80002d3c: 11d31863 bne t1,t4,80002e4c +80002d40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d44: 00200293 li t0,2 +80002d48: fc521ce3 bne tp,t0,80002d20 + +80002d4c : +80002d4c: 00e00193 li gp,14 +80002d50: 00000213 li tp,0 +80002d54: 00001097 auipc ra,0x1 +80002d58: 2ac08093 addi ra,ra,684 # 80004000 +80002d5c: 00209f03 lh t5,2(ra) +80002d60: 00000013 nop +80002d64: 00000013 nop +80002d68: 000f0313 mv t1,t5 +80002d6c: f0000e93 li t4,-256 +80002d70: 0dd31e63 bne t1,t4,80002e4c +80002d74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d78: 00200293 li t0,2 +80002d7c: fc521ce3 bne tp,t0,80002d54 + +80002d80 : +80002d80: 00f00193 li gp,15 +80002d84: 00000213 li tp,0 +80002d88: 00001097 auipc ra,0x1 +80002d8c: 27a08093 addi ra,ra,634 # 80004002 +80002d90: 00209f03 lh t5,2(ra) +80002d94: 00001eb7 lui t4,0x1 +80002d98: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002d9c: 0bdf1863 bne t5,t4,80002e4c +80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da4: 00200293 li t0,2 +80002da8: fe5210e3 bne tp,t0,80002d88 + +80002dac : +80002dac: 01000193 li gp,16 +80002db0: 00000213 li tp,0 +80002db4: 00001097 auipc ra,0x1 +80002db8: 25008093 addi ra,ra,592 # 80004004 +80002dbc: 00000013 nop +80002dc0: 00209f03 lh t5,2(ra) +80002dc4: fffffeb7 lui t4,0xfffff +80002dc8: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17> +80002dcc: 09df1063 bne t5,t4,80002e4c +80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd4: 00200293 li t0,2 +80002dd8: fc521ee3 bne tp,t0,80002db4 + +80002ddc : +80002ddc: 01100193 li gp,17 +80002de0: 00000213 li tp,0 +80002de4: 00001097 auipc ra,0x1 +80002de8: 21c08093 addi ra,ra,540 # 80004000 +80002dec: 00000013 nop +80002df0: 00000013 nop +80002df4: 00209f03 lh t5,2(ra) +80002df8: f0000e93 li t4,-256 +80002dfc: 05df1863 bne t5,t4,80002e4c +80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e04: 00200293 li t0,2 +80002e08: fc521ee3 bne tp,t0,80002de4 + +80002e0c : +80002e0c: 00001297 auipc t0,0x1 +80002e10: 1f428293 addi t0,t0,500 # 80004000 +80002e14: 00029103 lh sp,0(t0) +80002e18: 00200113 li sp,2 +80002e1c: 00200e93 li t4,2 +80002e20: 01200193 li gp,18 +80002e24: 03d11463 bne sp,t4,80002e4c + +80002e28 : +80002e28: 00001297 auipc t0,0x1 +80002e2c: 1d828293 addi t0,t0,472 # 80004000 +80002e30: 00029103 lh sp,0(t0) +80002e34: 00000013 nop +80002e38: 00200113 li sp,2 +80002e3c: 00200e93 li t4,2 +80002e40: 01300193 li gp,19 +80002e44: 01d11463 bne sp,t4,80002e4c +80002e48: 00301a63 bne zero,gp,80002e5c + +80002e4c : +80002e4c: 00119513 slli a0,gp,0x1 +80002e50: 00050063 beqz a0,80002e50 +80002e54: 00156513 ori a0,a0,1 +80002e58: 00000073 ecall + +80002e5c : +80002e5c: 00100513 li a0,1 +80002e60: 00000073 ecall +80002e64: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 00ff 0xff + +80004002 : +80004002: ff00 fsw fs0,56(a4) + +80004004 : +80004004: 0ff0 addi a2,sp,988 + +80004006 : +80004006: 0xf00f diff --git a/Tests/isa/rv32ui-v-lhu b/Tests/isa/rv32ui-v-lhu new file mode 100644 index 0000000..789d91d Binary files /dev/null and b/Tests/isa/rv32ui-v-lhu differ diff --git a/Tests/isa/rv32ui-v-lhu.dump b/Tests/isa/rv32ui-v-lhu.dump new file mode 100644 index 0000000..86e4b7d --- /dev/null +++ b/Tests/isa/rv32ui-v-lhu.dump @@ -0,0 +1,1118 @@ + +rv32ui-v-lhu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9b458593 addi a1,a1,-1612 # 80002e7c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9d058593 addi a1,a1,-1584 # 80002f08 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 97c58593 addi a1,a1,-1668 # 80002f20 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8b058593 addi a1,a1,-1872 # 80002ec0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8a058593 addi a1,a1,-1888 # 80002fe8 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 80858593 addi a1,a1,-2040 # 80002fc4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 70460613 addi a2,a2,1796 # 80003014 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 61460613 addi a2,a2,1556 # 80002f90 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 59460613 addi a2,a2,1428 # 80002f5c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 02a00793 li a5,42 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0fdfd7b7 lui a5,0xfdfd +80002b9c: 00080637 lui a2,0x80 +80002ba0: ee978793 addi a5,a5,-279 # fdfcee9 <_start-0x70203117> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: 0000df03 lhu t5,0(ra) +80002bec: 0ff00e93 li t4,255 +80002bf0: 00200193 li gp,2 +80002bf4: 27df1663 bne t5,t4,80002e60 + +80002bf8 : +80002bf8: 00001097 auipc ra,0x1 +80002bfc: 40808093 addi ra,ra,1032 # 80004000 +80002c00: 0020df03 lhu t5,2(ra) +80002c04: 00010eb7 lui t4,0x10 +80002c08: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80002c0c: 00300193 li gp,3 +80002c10: 25df1863 bne t5,t4,80002e60 + +80002c14 : +80002c14: 00001097 auipc ra,0x1 +80002c18: 3ec08093 addi ra,ra,1004 # 80004000 +80002c1c: 0040df03 lhu t5,4(ra) +80002c20: 00001eb7 lui t4,0x1 +80002c24: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002c28: 00400193 li gp,4 +80002c2c: 23df1a63 bne t5,t4,80002e60 + +80002c30 : +80002c30: 00001097 auipc ra,0x1 +80002c34: 3d008093 addi ra,ra,976 # 80004000 +80002c38: 0060df03 lhu t5,6(ra) +80002c3c: 0000feb7 lui t4,0xf +80002c40: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +80002c44: 00500193 li gp,5 +80002c48: 21df1c63 bne t5,t4,80002e60 + +80002c4c : +80002c4c: 00001097 auipc ra,0x1 +80002c50: 3ba08093 addi ra,ra,954 # 80004006 +80002c54: ffa0df03 lhu t5,-6(ra) +80002c58: 0ff00e93 li t4,255 +80002c5c: 00600193 li gp,6 +80002c60: 21df1063 bne t5,t4,80002e60 + +80002c64 : +80002c64: 00001097 auipc ra,0x1 +80002c68: 3a208093 addi ra,ra,930 # 80004006 +80002c6c: ffc0df03 lhu t5,-4(ra) +80002c70: 00010eb7 lui t4,0x10 +80002c74: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80002c78: 00700193 li gp,7 +80002c7c: 1fdf1263 bne t5,t4,80002e60 + +80002c80 : +80002c80: 00001097 auipc ra,0x1 +80002c84: 38608093 addi ra,ra,902 # 80004006 +80002c88: ffe0df03 lhu t5,-2(ra) +80002c8c: 00001eb7 lui t4,0x1 +80002c90: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002c94: 00800193 li gp,8 +80002c98: 1ddf1463 bne t5,t4,80002e60 + +80002c9c : +80002c9c: 00001097 auipc ra,0x1 +80002ca0: 36a08093 addi ra,ra,874 # 80004006 +80002ca4: 0000df03 lhu t5,0(ra) +80002ca8: 0000feb7 lui t4,0xf +80002cac: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +80002cb0: 00900193 li gp,9 +80002cb4: 1bdf1663 bne t5,t4,80002e60 + +80002cb8 : +80002cb8: 00001097 auipc ra,0x1 +80002cbc: 34808093 addi ra,ra,840 # 80004000 +80002cc0: fe008093 addi ra,ra,-32 +80002cc4: 0200d283 lhu t0,32(ra) +80002cc8: 0ff00e93 li t4,255 +80002ccc: 00a00193 li gp,10 +80002cd0: 19d29863 bne t0,t4,80002e60 + +80002cd4 : +80002cd4: 00001097 auipc ra,0x1 +80002cd8: 32c08093 addi ra,ra,812 # 80004000 +80002cdc: ffb08093 addi ra,ra,-5 +80002ce0: 0070d283 lhu t0,7(ra) +80002ce4: 00010eb7 lui t4,0x10 +80002ce8: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80002cec: 00b00193 li gp,11 +80002cf0: 17d29863 bne t0,t4,80002e60 + +80002cf4 : +80002cf4: 00c00193 li gp,12 +80002cf8: 00000213 li tp,0 +80002cfc: 00001097 auipc ra,0x1 +80002d00: 30608093 addi ra,ra,774 # 80004002 +80002d04: 0020df03 lhu t5,2(ra) +80002d08: 000f0313 mv t1,t5 +80002d0c: 00001eb7 lui t4,0x1 +80002d10: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002d14: 15d31663 bne t1,t4,80002e60 +80002d18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d1c: 00200293 li t0,2 +80002d20: fc521ee3 bne tp,t0,80002cfc + +80002d24 : +80002d24: 00d00193 li gp,13 +80002d28: 00000213 li tp,0 +80002d2c: 00001097 auipc ra,0x1 +80002d30: 2d808093 addi ra,ra,728 # 80004004 +80002d34: 0020df03 lhu t5,2(ra) +80002d38: 00000013 nop +80002d3c: 000f0313 mv t1,t5 +80002d40: 0000feb7 lui t4,0xf +80002d44: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +80002d48: 11d31c63 bne t1,t4,80002e60 +80002d4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d50: 00200293 li t0,2 +80002d54: fc521ce3 bne tp,t0,80002d2c + +80002d58 : +80002d58: 00e00193 li gp,14 +80002d5c: 00000213 li tp,0 +80002d60: 00001097 auipc ra,0x1 +80002d64: 2a008093 addi ra,ra,672 # 80004000 +80002d68: 0020df03 lhu t5,2(ra) +80002d6c: 00000013 nop +80002d70: 00000013 nop +80002d74: 000f0313 mv t1,t5 +80002d78: 00010eb7 lui t4,0x10 +80002d7c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80002d80: 0fd31063 bne t1,t4,80002e60 +80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d88: 00200293 li t0,2 +80002d8c: fc521ae3 bne tp,t0,80002d60 + +80002d90 : +80002d90: 00f00193 li gp,15 +80002d94: 00000213 li tp,0 +80002d98: 00001097 auipc ra,0x1 +80002d9c: 26a08093 addi ra,ra,618 # 80004002 +80002da0: 0020df03 lhu t5,2(ra) +80002da4: 00001eb7 lui t4,0x1 +80002da8: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010> +80002dac: 0bdf1a63 bne t5,t4,80002e60 +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5210e3 bne tp,t0,80002d98 + +80002dbc : +80002dbc: 01000193 li gp,16 +80002dc0: 00000213 li tp,0 +80002dc4: 00001097 auipc ra,0x1 +80002dc8: 24008093 addi ra,ra,576 # 80004004 +80002dcc: 00000013 nop +80002dd0: 0020df03 lhu t5,2(ra) +80002dd4: 0000feb7 lui t4,0xf +80002dd8: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1> +80002ddc: 09df1263 bne t5,t4,80002e60 +80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de4: 00200293 li t0,2 +80002de8: fc521ee3 bne tp,t0,80002dc4 + +80002dec : +80002dec: 01100193 li gp,17 +80002df0: 00000213 li tp,0 +80002df4: 00001097 auipc ra,0x1 +80002df8: 20c08093 addi ra,ra,524 # 80004000 +80002dfc: 00000013 nop +80002e00: 00000013 nop +80002e04: 0020df03 lhu t5,2(ra) +80002e08: 00010eb7 lui t4,0x10 +80002e0c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> +80002e10: 05df1863 bne t5,t4,80002e60 +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fc521ce3 bne tp,t0,80002df4 + +80002e20 : +80002e20: 00001297 auipc t0,0x1 +80002e24: 1e028293 addi t0,t0,480 # 80004000 +80002e28: 0002d103 lhu sp,0(t0) +80002e2c: 00200113 li sp,2 +80002e30: 00200e93 li t4,2 +80002e34: 01200193 li gp,18 +80002e38: 03d11463 bne sp,t4,80002e60 + +80002e3c : +80002e3c: 00001297 auipc t0,0x1 +80002e40: 1c428293 addi t0,t0,452 # 80004000 +80002e44: 0002d103 lhu sp,0(t0) +80002e48: 00000013 nop +80002e4c: 00200113 li sp,2 +80002e50: 00200e93 li t4,2 +80002e54: 01300193 li gp,19 +80002e58: 01d11463 bne sp,t4,80002e60 +80002e5c: 00301a63 bne zero,gp,80002e70 + +80002e60 : +80002e60: 00119513 slli a0,gp,0x1 +80002e64: 00050063 beqz a0,80002e64 +80002e68: 00156513 ori a0,a0,1 +80002e6c: 00000073 ecall + +80002e70 : +80002e70: 00100513 li a0,1 +80002e74: 00000073 ecall +80002e78: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 00ff 0xff + +80004002 : +80004002: ff00 fsw fs0,56(a4) + +80004004 : +80004004: 0ff0 addi a2,sp,988 + +80004006 : +80004006: 0xf00f diff --git a/Tests/isa/rv32ui-v-lui b/Tests/isa/rv32ui-v-lui new file mode 100644 index 0000000..0b52a98 Binary files /dev/null and b/Tests/isa/rv32ui-v-lui differ diff --git a/Tests/isa/rv32ui-v-lui.dump b/Tests/isa/rv32ui-v-lui.dump new file mode 100644 index 0000000..c9abb43 --- /dev/null +++ b/Tests/isa/rv32ui-v-lui.dump @@ -0,0 +1,942 @@ + +rv32ui-v-lui: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 79458593 addi a1,a1,1940 # 80002c5c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 75c58593 addi a1,a1,1884 # 80002d00 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 69058593 addi a1,a1,1680 # 80002ca0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 68058593 addi a1,a1,1664 # 80002dc8 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 5e858593 addi a1,a1,1512 # 80002da4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 4e460613 addi a2,a2,1252 # 80002df4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 3f460613 addi a2,a2,1012 # 80002d70 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 37460613 addi a2,a2,884 # 80002d3c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 01700793 li a5,23 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0f81c7b7 lui a5,0xf81c +80002b9c: 00080637 lui a2,0x80 +80002ba0: 76c78793 addi a5,a5,1900 # f81c76c <_start-0x707e3894> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 000000b7 lui ra,0x0 +80002be4: 00000e93 li t4,0 +80002be8: 00200193 li gp,2 +80002bec: 05d09a63 bne ra,t4,80002c40 + +80002bf0 : +80002bf0: fffff0b7 lui ra,0xfffff +80002bf4: 4010d093 srai ra,ra,0x1 +80002bf8: 80000e93 li t4,-2048 +80002bfc: 00300193 li gp,3 +80002c00: 05d09063 bne ra,t4,80002c40 + +80002c04 : +80002c04: 7ffff0b7 lui ra,0x7ffff +80002c08: 4140d093 srai ra,ra,0x14 +80002c0c: 7ff00e93 li t4,2047 +80002c10: 00400193 li gp,4 +80002c14: 03d09663 bne ra,t4,80002c40 + +80002c18 : +80002c18: 800000b7 lui ra,0x80000 +80002c1c: 4140d093 srai ra,ra,0x14 +80002c20: 80000e93 li t4,-2048 +80002c24: 00500193 li gp,5 +80002c28: 01d09c63 bne ra,t4,80002c40 + +80002c2c : +80002c2c: 80000037 lui zero,0x80000 +80002c30: 00000e93 li t4,0 +80002c34: 00600193 li gp,6 +80002c38: 01d01463 bne zero,t4,80002c40 +80002c3c: 00301a63 bne zero,gp,80002c50 + +80002c40 : +80002c40: 00119513 slli a0,gp,0x1 +80002c44: 00050063 beqz a0,80002c44 +80002c48: 00156513 ori a0,a0,1 +80002c4c: 00000073 ecall + +80002c50 : +80002c50: 00100513 li a0,1 +80002c54: 00000073 ecall +80002c58: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-lw b/Tests/isa/rv32ui-v-lw new file mode 100644 index 0000000..86d649c Binary files /dev/null and b/Tests/isa/rv32ui-v-lw differ diff --git a/Tests/isa/rv32ui-v-lw.dump b/Tests/isa/rv32ui-v-lw.dump new file mode 100644 index 0000000..e8f1f4c --- /dev/null +++ b/Tests/isa/rv32ui-v-lw.dump @@ -0,0 +1,1124 @@ + +rv32ui-v-lw: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9c058593 addi a1,a1,-1600 # 80002e88 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9dc58593 addi a1,a1,-1572 # 80002f14 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 98858593 addi a1,a1,-1656 # 80002f2c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8bc58593 addi a1,a1,-1860 # 80002ecc +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8ac58593 addi a1,a1,-1876 # 80002ff4 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 81458593 addi a1,a1,-2028 # 80002fd0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 71060613 addi a2,a2,1808 # 80003020 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 62060613 addi a2,a2,1568 # 80002f9c +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5a060613 addi a2,a2,1440 # 80002f68 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 03b00793 li a5,59 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0a9027b7 lui a5,0xa902 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 47878793 addi a5,a5,1144 # a902478 <_start-0x756fdb88> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: 0000af03 lw t5,0(ra) +80002bec: 00ff0eb7 lui t4,0xff0 +80002bf0: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80002bf4: 00200193 li gp,2 +80002bf8: 27df1a63 bne t5,t4,80002e6c + +80002bfc : +80002bfc: 00001097 auipc ra,0x1 +80002c00: 40408093 addi ra,ra,1028 # 80004000 +80002c04: 0040af03 lw t5,4(ra) +80002c08: ff010eb7 lui t4,0xff010 +80002c0c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08> +80002c10: 00300193 li gp,3 +80002c14: 25df1c63 bne t5,t4,80002e6c + +80002c18 : +80002c18: 00001097 auipc ra,0x1 +80002c1c: 3e808093 addi ra,ra,1000 # 80004000 +80002c20: 0080af03 lw t5,8(ra) +80002c24: 0ff01eb7 lui t4,0xff01 +80002c28: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002c2c: 00400193 li gp,4 +80002c30: 23df1e63 bne t5,t4,80002e6c + +80002c34 : +80002c34: 00001097 auipc ra,0x1 +80002c38: 3cc08093 addi ra,ra,972 # 80004000 +80002c3c: 00c0af03 lw t5,12(ra) +80002c40: f00ffeb7 lui t4,0xf00ff +80002c44: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17> +80002c48: 00500193 li gp,5 +80002c4c: 23df1063 bne t5,t4,80002e6c + +80002c50 : +80002c50: 00001097 auipc ra,0x1 +80002c54: 3bc08093 addi ra,ra,956 # 8000400c +80002c58: ff40af03 lw t5,-12(ra) +80002c5c: 00ff0eb7 lui t4,0xff0 +80002c60: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80002c64: 00600193 li gp,6 +80002c68: 21df1263 bne t5,t4,80002e6c + +80002c6c : +80002c6c: 00001097 auipc ra,0x1 +80002c70: 3a008093 addi ra,ra,928 # 8000400c +80002c74: ff80af03 lw t5,-8(ra) +80002c78: ff010eb7 lui t4,0xff010 +80002c7c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08> +80002c80: 00700193 li gp,7 +80002c84: 1fdf1463 bne t5,t4,80002e6c + +80002c88 : +80002c88: 00001097 auipc ra,0x1 +80002c8c: 38408093 addi ra,ra,900 # 8000400c +80002c90: ffc0af03 lw t5,-4(ra) +80002c94: 0ff01eb7 lui t4,0xff01 +80002c98: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002c9c: 00800193 li gp,8 +80002ca0: 1ddf1663 bne t5,t4,80002e6c + +80002ca4 : +80002ca4: 00001097 auipc ra,0x1 +80002ca8: 36808093 addi ra,ra,872 # 8000400c +80002cac: 0000af03 lw t5,0(ra) +80002cb0: f00ffeb7 lui t4,0xf00ff +80002cb4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17> +80002cb8: 00900193 li gp,9 +80002cbc: 1bdf1863 bne t5,t4,80002e6c + +80002cc0 : +80002cc0: 00001097 auipc ra,0x1 +80002cc4: 34008093 addi ra,ra,832 # 80004000 +80002cc8: fe008093 addi ra,ra,-32 +80002ccc: 0200a283 lw t0,32(ra) +80002cd0: 00ff0eb7 lui t4,0xff0 +80002cd4: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80002cd8: 00a00193 li gp,10 +80002cdc: 19d29863 bne t0,t4,80002e6c + +80002ce0 : +80002ce0: 00001097 auipc ra,0x1 +80002ce4: 32008093 addi ra,ra,800 # 80004000 +80002ce8: ffd08093 addi ra,ra,-3 +80002cec: 0070a283 lw t0,7(ra) +80002cf0: ff010eb7 lui t4,0xff010 +80002cf4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08> +80002cf8: 00b00193 li gp,11 +80002cfc: 17d29863 bne t0,t4,80002e6c + +80002d00 : +80002d00: 00c00193 li gp,12 +80002d04: 00000213 li tp,0 +80002d08: 00001097 auipc ra,0x1 +80002d0c: 2fc08093 addi ra,ra,764 # 80004004 +80002d10: 0040af03 lw t5,4(ra) +80002d14: 000f0313 mv t1,t5 +80002d18: 0ff01eb7 lui t4,0xff01 +80002d1c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002d20: 15d31663 bne t1,t4,80002e6c +80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d28: 00200293 li t0,2 +80002d2c: fc521ee3 bne tp,t0,80002d08 + +80002d30 : +80002d30: 00d00193 li gp,13 +80002d34: 00000213 li tp,0 +80002d38: 00001097 auipc ra,0x1 +80002d3c: 2d008093 addi ra,ra,720 # 80004008 +80002d40: 0040af03 lw t5,4(ra) +80002d44: 00000013 nop +80002d48: 000f0313 mv t1,t5 +80002d4c: f00ffeb7 lui t4,0xf00ff +80002d50: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17> +80002d54: 11d31c63 bne t1,t4,80002e6c +80002d58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d5c: 00200293 li t0,2 +80002d60: fc521ce3 bne tp,t0,80002d38 + +80002d64 : +80002d64: 00e00193 li gp,14 +80002d68: 00000213 li tp,0 +80002d6c: 00001097 auipc ra,0x1 +80002d70: 29408093 addi ra,ra,660 # 80004000 +80002d74: 0040af03 lw t5,4(ra) +80002d78: 00000013 nop +80002d7c: 00000013 nop +80002d80: 000f0313 mv t1,t5 +80002d84: ff010eb7 lui t4,0xff010 +80002d88: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08> +80002d8c: 0fd31063 bne t1,t4,80002e6c +80002d90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d94: 00200293 li t0,2 +80002d98: fc521ae3 bne tp,t0,80002d6c + +80002d9c : +80002d9c: 00f00193 li gp,15 +80002da0: 00000213 li tp,0 +80002da4: 00001097 auipc ra,0x1 +80002da8: 26008093 addi ra,ra,608 # 80004004 +80002dac: 0040af03 lw t5,4(ra) +80002db0: 0ff01eb7 lui t4,0xff01 +80002db4: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002db8: 0bdf1a63 bne t5,t4,80002e6c +80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dc0: 00200293 li t0,2 +80002dc4: fe5210e3 bne tp,t0,80002da4 + +80002dc8 : +80002dc8: 01000193 li gp,16 +80002dcc: 00000213 li tp,0 +80002dd0: 00001097 auipc ra,0x1 +80002dd4: 23808093 addi ra,ra,568 # 80004008 +80002dd8: 00000013 nop +80002ddc: 0040af03 lw t5,4(ra) +80002de0: f00ffeb7 lui t4,0xf00ff +80002de4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17> +80002de8: 09df1263 bne t5,t4,80002e6c +80002dec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002df0: 00200293 li t0,2 +80002df4: fc521ee3 bne tp,t0,80002dd0 + +80002df8 : +80002df8: 01100193 li gp,17 +80002dfc: 00000213 li tp,0 +80002e00: 00001097 auipc ra,0x1 +80002e04: 20008093 addi ra,ra,512 # 80004000 +80002e08: 00000013 nop +80002e0c: 00000013 nop +80002e10: 0040af03 lw t5,4(ra) +80002e14: ff010eb7 lui t4,0xff010 +80002e18: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08> +80002e1c: 05df1863 bne t5,t4,80002e6c +80002e20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e24: 00200293 li t0,2 +80002e28: fc521ce3 bne tp,t0,80002e00 + +80002e2c : +80002e2c: 00001297 auipc t0,0x1 +80002e30: 1d428293 addi t0,t0,468 # 80004000 +80002e34: 0002a103 lw sp,0(t0) +80002e38: 00200113 li sp,2 +80002e3c: 00200e93 li t4,2 +80002e40: 01200193 li gp,18 +80002e44: 03d11463 bne sp,t4,80002e6c + +80002e48 : +80002e48: 00001297 auipc t0,0x1 +80002e4c: 1b828293 addi t0,t0,440 # 80004000 +80002e50: 0002a103 lw sp,0(t0) +80002e54: 00000013 nop +80002e58: 00200113 li sp,2 +80002e5c: 00200e93 li t4,2 +80002e60: 01300193 li gp,19 +80002e64: 01d11463 bne sp,t4,80002e6c +80002e68: 00301a63 bne zero,gp,80002e7c + +80002e6c : +80002e6c: 00119513 slli a0,gp,0x1 +80002e70: 00050063 beqz a0,80002e70 +80002e74: 00156513 ori a0,a0,1 +80002e78: 00000073 ecall + +80002e7c : +80002e7c: 00100513 li a0,1 +80002e80: 00000073 ecall +80002e84: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: 00ff 0xff +80004002: 00ff 0xff + +80004004 : +80004004: ff00 fsw fs0,56(a4) +80004006: ff00 fsw fs0,56(a4) + +80004008 : +80004008: 0ff0 addi a2,sp,988 +8000400a: 0ff0 addi a2,sp,988 + +8000400c : +8000400c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv32ui-v-or b/Tests/isa/rv32ui-v-or new file mode 100644 index 0000000..7bd2b98 Binary files /dev/null and b/Tests/isa/rv32ui-v-or differ diff --git a/Tests/isa/rv32ui-v-or.dump b/Tests/isa/rv32ui-v-or.dump new file mode 100644 index 0000000..2b4c8cb --- /dev/null +++ b/Tests/isa/rv32ui-v-or.dump @@ -0,0 +1,1265 @@ + +rv32ui-v-or: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bf858593 addi a1,a1,-1032 # 800030c0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1458593 addi a1,a1,-1004 # 8000314c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bc058593 addi a1,a1,-1088 # 80003164 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af458593 addi a1,a1,-1292 # 80003104 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae458593 addi a1,a1,-1308 # 8000322c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a4c58593 addi a1,a1,-1460 # 80003208 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94860613 addi a2,a2,-1720 # 80003258 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85860613 addi a2,a2,-1960 # 800031d4 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7d860613 addi a2,a2,2008 # 800031a0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00e00793 li a5,14 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 009d97b7 lui a5,0x9d9 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 37e78793 addi a5,a5,894 # 9d937e <_start-0x7f626c82> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: ff0100b7 lui ra,0xff010 +80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002be8: 0f0f1137 lui sp,0xf0f1 +80002bec: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002bf0: 0020ef33 or t5,ra,sp +80002bf4: ff100eb7 lui t4,0xff100 +80002bf8: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002bfc: 00200193 li gp,2 +80002c00: 4bdf1263 bne t5,t4,800030a4 + +80002c04 : +80002c04: 0ff010b7 lui ra,0xff01 +80002c08: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c0c: f0f0f137 lui sp,0xf0f0f +80002c10: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002c14: 0020ef33 or t5,ra,sp +80002c18: fff10eb7 lui t4,0xfff10 +80002c1c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8> +80002c20: 00300193 li gp,3 +80002c24: 49df1063 bne t5,t4,800030a4 + +80002c28 : +80002c28: 00ff00b7 lui ra,0xff0 +80002c2c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002c30: 0f0f1137 lui sp,0xf0f1 +80002c34: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002c38: 0020ef33 or t5,ra,sp +80002c3c: 0fff1eb7 lui t4,0xfff1 +80002c40: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80002c44: 00400193 li gp,4 +80002c48: 45df1e63 bne t5,t4,800030a4 + +80002c4c : +80002c4c: f00ff0b7 lui ra,0xf00ff +80002c50: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f8c17> +80002c54: f0f0f137 lui sp,0xf0f0f +80002c58: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002c5c: 0020ef33 or t5,ra,sp +80002c60: f0fffeb7 lui t4,0xf0fff +80002c64: 0ffe8e93 addi t4,t4,255 # f0fff0ff <_end+0x70ff8d07> +80002c68: 00500193 li gp,5 +80002c6c: 43df1c63 bne t5,t4,800030a4 + +80002c70 : +80002c70: ff0100b7 lui ra,0xff010 +80002c74: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002c78: 0f0f1137 lui sp,0xf0f1 +80002c7c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002c80: 0020e0b3 or ra,ra,sp +80002c84: ff100eb7 lui t4,0xff100 +80002c88: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002c8c: 00600193 li gp,6 +80002c90: 41d09a63 bne ra,t4,800030a4 + +80002c94 : +80002c94: ff0100b7 lui ra,0xff010 +80002c98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002c9c: 0f0f1137 lui sp,0xf0f1 +80002ca0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ca4: 0020e133 or sp,ra,sp +80002ca8: ff100eb7 lui t4,0xff100 +80002cac: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002cb0: 00700193 li gp,7 +80002cb4: 3fd11863 bne sp,t4,800030a4 + +80002cb8 : +80002cb8: ff0100b7 lui ra,0xff010 +80002cbc: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002cc0: 0010e0b3 or ra,ra,ra +80002cc4: ff010eb7 lui t4,0xff010 +80002cc8: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002ccc: 00800193 li gp,8 +80002cd0: 3dd09a63 bne ra,t4,800030a4 + +80002cd4 : +80002cd4: 00000213 li tp,0 +80002cd8: ff0100b7 lui ra,0xff010 +80002cdc: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002ce0: 0f0f1137 lui sp,0xf0f1 +80002ce4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ce8: 0020ef33 or t5,ra,sp +80002cec: 000f0313 mv t1,t5 +80002cf0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cf4: 00200293 li t0,2 +80002cf8: fe5210e3 bne tp,t0,80002cd8 +80002cfc: ff100eb7 lui t4,0xff100 +80002d00: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002d04: 00900193 li gp,9 +80002d08: 39d31e63 bne t1,t4,800030a4 + +80002d0c : +80002d0c: 00000213 li tp,0 +80002d10: 0ff010b7 lui ra,0xff01 +80002d14: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002d18: f0f0f137 lui sp,0xf0f0f +80002d1c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002d20: 0020ef33 or t5,ra,sp +80002d24: 00000013 nop +80002d28: 000f0313 mv t1,t5 +80002d2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d30: 00200293 li t0,2 +80002d34: fc521ee3 bne tp,t0,80002d10 +80002d38: fff10eb7 lui t4,0xfff10 +80002d3c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8> +80002d40: 00a00193 li gp,10 +80002d44: 37d31063 bne t1,t4,800030a4 + +80002d48 : +80002d48: 00000213 li tp,0 +80002d4c: 00ff00b7 lui ra,0xff0 +80002d50: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002d54: 0f0f1137 lui sp,0xf0f1 +80002d58: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002d5c: 0020ef33 or t5,ra,sp +80002d60: 00000013 nop +80002d64: 00000013 nop +80002d68: 000f0313 mv t1,t5 +80002d6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d70: 00200293 li t0,2 +80002d74: fc521ce3 bne tp,t0,80002d4c +80002d78: 0fff1eb7 lui t4,0xfff1 +80002d7c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80002d80: 00b00193 li gp,11 +80002d84: 33d31063 bne t1,t4,800030a4 + +80002d88 : +80002d88: 00000213 li tp,0 +80002d8c: ff0100b7 lui ra,0xff010 +80002d90: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002d94: 0f0f1137 lui sp,0xf0f1 +80002d98: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002d9c: 0020ef33 or t5,ra,sp +80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da4: 00200293 li t0,2 +80002da8: fe5212e3 bne tp,t0,80002d8c +80002dac: ff100eb7 lui t4,0xff100 +80002db0: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002db4: 00c00193 li gp,12 +80002db8: 2fdf1663 bne t5,t4,800030a4 + +80002dbc : +80002dbc: 00000213 li tp,0 +80002dc0: 0ff010b7 lui ra,0xff01 +80002dc4: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002dc8: f0f0f137 lui sp,0xf0f0f +80002dcc: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002dd0: 00000013 nop +80002dd4: 0020ef33 or t5,ra,sp +80002dd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ddc: 00200293 li t0,2 +80002de0: fe5210e3 bne tp,t0,80002dc0 +80002de4: fff10eb7 lui t4,0xfff10 +80002de8: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8> +80002dec: 00d00193 li gp,13 +80002df0: 2bdf1a63 bne t5,t4,800030a4 + +80002df4 : +80002df4: 00000213 li tp,0 +80002df8: 00ff00b7 lui ra,0xff0 +80002dfc: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002e00: 0f0f1137 lui sp,0xf0f1 +80002e04: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002e08: 00000013 nop +80002e0c: 00000013 nop +80002e10: 0020ef33 or t5,ra,sp +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fc521ee3 bne tp,t0,80002df8 +80002e20: 0fff1eb7 lui t4,0xfff1 +80002e24: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80002e28: 00e00193 li gp,14 +80002e2c: 27df1c63 bne t5,t4,800030a4 + +80002e30 : +80002e30: 00000213 li tp,0 +80002e34: ff0100b7 lui ra,0xff010 +80002e38: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002e3c: 00000013 nop +80002e40: 0f0f1137 lui sp,0xf0f1 +80002e44: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002e48: 0020ef33 or t5,ra,sp +80002e4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e50: 00200293 li t0,2 +80002e54: fe5210e3 bne tp,t0,80002e34 +80002e58: ff100eb7 lui t4,0xff100 +80002e5c: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002e60: 00f00193 li gp,15 +80002e64: 25df1063 bne t5,t4,800030a4 + +80002e68 : +80002e68: 00000213 li tp,0 +80002e6c: 0ff010b7 lui ra,0xff01 +80002e70: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002e74: 00000013 nop +80002e78: f0f0f137 lui sp,0xf0f0f +80002e7c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002e80: 00000013 nop +80002e84: 0020ef33 or t5,ra,sp +80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e8c: 00200293 li t0,2 +80002e90: fc521ee3 bne tp,t0,80002e6c +80002e94: fff10eb7 lui t4,0xfff10 +80002e98: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8> +80002e9c: 01000193 li gp,16 +80002ea0: 21df1263 bne t5,t4,800030a4 + +80002ea4 : +80002ea4: 00000213 li tp,0 +80002ea8: 00ff00b7 lui ra,0xff0 +80002eac: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002eb0: 00000013 nop +80002eb4: 00000013 nop +80002eb8: 0f0f1137 lui sp,0xf0f1 +80002ebc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ec0: 0020ef33 or t5,ra,sp +80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ec8: 00200293 li t0,2 +80002ecc: fc521ee3 bne tp,t0,80002ea8 +80002ed0: 0fff1eb7 lui t4,0xfff1 +80002ed4: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80002ed8: 01100193 li gp,17 +80002edc: 1ddf1463 bne t5,t4,800030a4 + +80002ee0 : +80002ee0: 00000213 li tp,0 +80002ee4: 0f0f1137 lui sp,0xf0f1 +80002ee8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002eec: ff0100b7 lui ra,0xff010 +80002ef0: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002ef4: 0020ef33 or t5,ra,sp +80002ef8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002efc: 00200293 li t0,2 +80002f00: fe5212e3 bne tp,t0,80002ee4 +80002f04: ff100eb7 lui t4,0xff100 +80002f08: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002f0c: 01200193 li gp,18 +80002f10: 19df1a63 bne t5,t4,800030a4 + +80002f14 : +80002f14: 00000213 li tp,0 +80002f18: f0f0f137 lui sp,0xf0f0f +80002f1c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002f20: 0ff010b7 lui ra,0xff01 +80002f24: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002f28: 00000013 nop +80002f2c: 0020ef33 or t5,ra,sp +80002f30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f34: 00200293 li t0,2 +80002f38: fe5210e3 bne tp,t0,80002f18 +80002f3c: fff10eb7 lui t4,0xfff10 +80002f40: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8> +80002f44: 01300193 li gp,19 +80002f48: 15df1e63 bne t5,t4,800030a4 + +80002f4c : +80002f4c: 00000213 li tp,0 +80002f50: 0f0f1137 lui sp,0xf0f1 +80002f54: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002f58: 00ff00b7 lui ra,0xff0 +80002f5c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002f60: 00000013 nop +80002f64: 00000013 nop +80002f68: 0020ef33 or t5,ra,sp +80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f70: 00200293 li t0,2 +80002f74: fc521ee3 bne tp,t0,80002f50 +80002f78: 0fff1eb7 lui t4,0xfff1 +80002f7c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80002f80: 01400193 li gp,20 +80002f84: 13df1063 bne t5,t4,800030a4 + +80002f88 : +80002f88: 00000213 li tp,0 +80002f8c: 0f0f1137 lui sp,0xf0f1 +80002f90: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002f94: 00000013 nop +80002f98: ff0100b7 lui ra,0xff010 +80002f9c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002fa0: 0020ef33 or t5,ra,sp +80002fa4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fa8: 00200293 li t0,2 +80002fac: fe5210e3 bne tp,t0,80002f8c +80002fb0: ff100eb7 lui t4,0xff100 +80002fb4: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17> +80002fb8: 01500193 li gp,21 +80002fbc: 0fdf1463 bne t5,t4,800030a4 + +80002fc0 : +80002fc0: 00000213 li tp,0 +80002fc4: f0f0f137 lui sp,0xf0f0f +80002fc8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002fcc: 00000013 nop +80002fd0: 0ff010b7 lui ra,0xff01 +80002fd4: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002fd8: 00000013 nop +80002fdc: 0020ef33 or t5,ra,sp +80002fe0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fe4: 00200293 li t0,2 +80002fe8: fc521ee3 bne tp,t0,80002fc4 +80002fec: fff10eb7 lui t4,0xfff10 +80002ff0: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8> +80002ff4: 01600193 li gp,22 +80002ff8: 0bdf1663 bne t5,t4,800030a4 + +80002ffc : +80002ffc: 00000213 li tp,0 +80003000: 0f0f1137 lui sp,0xf0f1 +80003004: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80003008: 00000013 nop +8000300c: 00000013 nop +80003010: 00ff00b7 lui ra,0xff0 +80003014: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80003018: 0020ef33 or t5,ra,sp +8000301c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003020: 00200293 li t0,2 +80003024: fc521ee3 bne tp,t0,80003000 +80003028: 0fff1eb7 lui t4,0xfff1 +8000302c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001> +80003030: 01700193 li gp,23 +80003034: 07df1863 bne t5,t4,800030a4 + +80003038 : +80003038: ff0100b7 lui ra,0xff010 +8000303c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80003040: 00106133 or sp,zero,ra +80003044: ff010eb7 lui t4,0xff010 +80003048: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +8000304c: 01800193 li gp,24 +80003050: 05d11a63 bne sp,t4,800030a4 + +80003054 : +80003054: 00ff00b7 lui ra,0xff0 +80003058: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +8000305c: 0000e133 or sp,ra,zero +80003060: 00ff0eb7 lui t4,0xff0 +80003064: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80003068: 01900193 li gp,25 +8000306c: 03d11c63 bne sp,t4,800030a4 + +80003070 : +80003070: 000060b3 or ra,zero,zero +80003074: 00000e93 li t4,0 +80003078: 01a00193 li gp,26 +8000307c: 03d09463 bne ra,t4,800030a4 + +80003080 : +80003080: 111110b7 lui ra,0x11111 +80003084: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> +80003088: 22222137 lui sp,0x22222 +8000308c: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> +80003090: 0020e033 or zero,ra,sp +80003094: 00000e93 li t4,0 +80003098: 01b00193 li gp,27 +8000309c: 01d01463 bne zero,t4,800030a4 +800030a0: 00301a63 bne zero,gp,800030b4 + +800030a4 : +800030a4: 00119513 slli a0,gp,0x1 +800030a8: 00050063 beqz a0,800030a8 +800030ac: 00156513 ori a0,a0,1 +800030b0: 00000073 ecall + +800030b4 : +800030b4: 00100513 li a0,1 +800030b8: 00000073 ecall +800030bc: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-ori b/Tests/isa/rv32ui-v-ori new file mode 100644 index 0000000..293d22e Binary files /dev/null and b/Tests/isa/rv32ui-v-ori differ diff --git a/Tests/isa/rv32ui-v-ori.dump b/Tests/isa/rv32ui-v-ori.dump new file mode 100644 index 0000000..662257e --- /dev/null +++ b/Tests/isa/rv32ui-v-ori.dump @@ -0,0 +1,1053 @@ + +rv32ui-v-ori: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 91058593 addi a1,a1,-1776 # 80002dd8 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 92c58593 addi a1,a1,-1748 # 80002e64 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 8d858593 addi a1,a1,-1832 # 80002e7c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 80c58593 addi a1,a1,-2036 # 80002e1c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 7fc58593 addi a1,a1,2044 # 80002f44 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 76458593 addi a1,a1,1892 # 80002f20 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 66060613 addi a2,a2,1632 # 80002f70 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 57060613 addi a2,a2,1392 # 80002eec +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 4f060613 addi a2,a2,1264 # 80002eb8 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 02f00793 li a5,47 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 03ce67b7 lui a5,0x3ce6 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 9ea78793 addi a5,a5,-1558 # 3ce59ea <_start-0x7c31a616> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: ff0100b7 lui ra,0xff010 +80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08> +80002be8: f0f0ef13 ori t5,ra,-241 +80002bec: f0f00e93 li t4,-241 +80002bf0: 00200193 li gp,2 +80002bf4: 1ddf1463 bne t5,t4,80002dbc + +80002bf8 : +80002bf8: 0ff010b7 lui ra,0xff01 +80002bfc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c00: 0f00ef13 ori t5,ra,240 +80002c04: 0ff01eb7 lui t4,0xff01 +80002c08: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002c0c: 00300193 li gp,3 +80002c10: 1bdf1663 bne t5,t4,80002dbc + +80002c14 : +80002c14: 00ff00b7 lui ra,0xff0 +80002c18: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002c1c: 70f0ef13 ori t5,ra,1807 +80002c20: 00ff0eb7 lui t4,0xff0 +80002c24: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801> +80002c28: 00400193 li gp,4 +80002c2c: 19df1863 bne t5,t4,80002dbc + +80002c30 : +80002c30: f00ff0b7 lui ra,0xf00ff +80002c34: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002c38: 0f00ef13 ori t5,ra,240 +80002c3c: f00ffeb7 lui t4,0xf00ff +80002c40: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07> +80002c44: 00500193 li gp,5 +80002c48: 17df1a63 bne t5,t4,80002dbc + +80002c4c : +80002c4c: ff0100b7 lui ra,0xff010 +80002c50: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08> +80002c54: 0f00e093 ori ra,ra,240 +80002c58: ff010eb7 lui t4,0xff010 +80002c5c: ff0e8e93 addi t4,t4,-16 # ff00fff0 <_end+0x7f00abf8> +80002c60: 00600193 li gp,6 +80002c64: 15d09c63 bne ra,t4,80002dbc + +80002c68 : +80002c68: 00000213 li tp,0 +80002c6c: 0ff010b7 lui ra,0xff01 +80002c70: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c74: 0f00ef13 ori t5,ra,240 +80002c78: 000f0313 mv t1,t5 +80002c7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002c80: 00200293 li t0,2 +80002c84: fe5214e3 bne tp,t0,80002c6c +80002c88: 0ff01eb7 lui t4,0xff01 +80002c8c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002c90: 00700193 li gp,7 +80002c94: 13d31463 bne t1,t4,80002dbc + +80002c98 : +80002c98: 00000213 li tp,0 +80002c9c: 00ff00b7 lui ra,0xff0 +80002ca0: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002ca4: 70f0ef13 ori t5,ra,1807 +80002ca8: 00000013 nop +80002cac: 000f0313 mv t1,t5 +80002cb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cb4: 00200293 li t0,2 +80002cb8: fe5212e3 bne tp,t0,80002c9c +80002cbc: 00ff0eb7 lui t4,0xff0 +80002cc0: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801> +80002cc4: 00800193 li gp,8 +80002cc8: 0fd31a63 bne t1,t4,80002dbc + +80002ccc : +80002ccc: 00000213 li tp,0 +80002cd0: f00ff0b7 lui ra,0xf00ff +80002cd4: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002cd8: 0f00ef13 ori t5,ra,240 +80002cdc: 00000013 nop +80002ce0: 00000013 nop +80002ce4: 000f0313 mv t1,t5 +80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cec: 00200293 li t0,2 +80002cf0: fe5210e3 bne tp,t0,80002cd0 +80002cf4: f00ffeb7 lui t4,0xf00ff +80002cf8: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07> +80002cfc: 00900193 li gp,9 +80002d00: 0bd31e63 bne t1,t4,80002dbc + +80002d04 : +80002d04: 00000213 li tp,0 +80002d08: 0ff010b7 lui ra,0xff01 +80002d0c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002d10: 0f00ef13 ori t5,ra,240 +80002d14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d18: 00200293 li t0,2 +80002d1c: fe5216e3 bne tp,t0,80002d08 +80002d20: 0ff01eb7 lui t4,0xff01 +80002d24: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002d28: 00a00193 li gp,10 +80002d2c: 09df1863 bne t5,t4,80002dbc + +80002d30 : +80002d30: 00000213 li tp,0 +80002d34: 00ff00b7 lui ra,0xff0 +80002d38: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002d3c: 00000013 nop +80002d40: f0f0ef13 ori t5,ra,-241 +80002d44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d48: 00200293 li t0,2 +80002d4c: fe5214e3 bne tp,t0,80002d34 +80002d50: fff00e93 li t4,-1 +80002d54: 00b00193 li gp,11 +80002d58: 07df1263 bne t5,t4,80002dbc + +80002d5c : +80002d5c: 00000213 li tp,0 +80002d60: f00ff0b7 lui ra,0xf00ff +80002d64: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002d68: 00000013 nop +80002d6c: 00000013 nop +80002d70: 0f00ef13 ori t5,ra,240 +80002d74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d78: 00200293 li t0,2 +80002d7c: fe5212e3 bne tp,t0,80002d60 +80002d80: f00ffeb7 lui t4,0xf00ff +80002d84: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07> +80002d88: 00c00193 li gp,12 +80002d8c: 03df1863 bne t5,t4,80002dbc + +80002d90 : +80002d90: 0f006093 ori ra,zero,240 +80002d94: 0f000e93 li t4,240 +80002d98: 00d00193 li gp,13 +80002d9c: 03d09063 bne ra,t4,80002dbc + +80002da0 : +80002da0: 00ff00b7 lui ra,0xff0 +80002da4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002da8: 70f0e013 ori zero,ra,1807 +80002dac: 00000e93 li t4,0 +80002db0: 00e00193 li gp,14 +80002db4: 01d01463 bne zero,t4,80002dbc +80002db8: 00301a63 bne zero,gp,80002dcc + +80002dbc : +80002dbc: 00119513 slli a0,gp,0x1 +80002dc0: 00050063 beqz a0,80002dc0 +80002dc4: 00156513 ori a0,a0,1 +80002dc8: 00000073 ecall + +80002dcc : +80002dcc: 00100513 li a0,1 +80002dd0: 00000073 ecall +80002dd4: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-sb b/Tests/isa/rv32ui-v-sb new file mode 100644 index 0000000..bf8e505 Binary files /dev/null and b/Tests/isa/rv32ui-v-sb differ diff --git a/Tests/isa/rv32ui-v-sb.dump b/Tests/isa/rv32ui-v-sb.dump new file mode 100644 index 0000000..6b6ed07 --- /dev/null +++ b/Tests/isa/rv32ui-v-sb.dump @@ -0,0 +1,1239 @@ + +rv32ui-v-sb: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: b2858593 addi a1,a1,-1240 # 80002ff0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: b4458593 addi a1,a1,-1212 # 8000307c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: af058593 addi a1,a1,-1296 # 80003094 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: a2458593 addi a1,a1,-1500 # 80003034 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: a1458593 addi a1,a1,-1516 # 8000315c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 97c58593 addi a1,a1,-1668 # 80003138 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 87860613 addi a2,a2,-1928 # 80003188 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 78860613 addi a2,a2,1928 # 80003104 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 70860613 addi a2,a2,1800 # 800030d0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 02f00793 li a5,47 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0925a7b7 lui a5,0x925a +80002b9c: 00080637 lui a2,0x80 +80002ba0: 0fe78793 addi a5,a5,254 # 925a0fe <_start-0x76da5f02> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: faa00113 li sp,-86 +80002bec: 00208023 sb sp,0(ra) +80002bf0: 00008f03 lb t5,0(ra) +80002bf4: faa00e93 li t4,-86 +80002bf8: 00200193 li gp,2 +80002bfc: 3ddf1c63 bne t5,t4,80002fd4 + +80002c00 : +80002c00: 00001097 auipc ra,0x1 +80002c04: 40008093 addi ra,ra,1024 # 80004000 +80002c08: 00000113 li sp,0 +80002c0c: 002080a3 sb sp,1(ra) +80002c10: 00108f03 lb t5,1(ra) +80002c14: 00000e93 li t4,0 +80002c18: 00300193 li gp,3 +80002c1c: 3bdf1c63 bne t5,t4,80002fd4 + +80002c20 : +80002c20: 00001097 auipc ra,0x1 +80002c24: 3e008093 addi ra,ra,992 # 80004000 +80002c28: fffff137 lui sp,0xfffff +80002c2c: fa010113 addi sp,sp,-96 # ffffefa0 <_end+0x7fff7ba8> +80002c30: 00208123 sb sp,2(ra) +80002c34: 00209f03 lh t5,2(ra) +80002c38: fffffeb7 lui t4,0xfffff +80002c3c: fa0e8e93 addi t4,t4,-96 # ffffefa0 <_end+0x7fff7ba8> +80002c40: 00400193 li gp,4 +80002c44: 39df1863 bne t5,t4,80002fd4 + +80002c48 : +80002c48: 00001097 auipc ra,0x1 +80002c4c: 3b808093 addi ra,ra,952 # 80004000 +80002c50: 00a00113 li sp,10 +80002c54: 002081a3 sb sp,3(ra) +80002c58: 00308f03 lb t5,3(ra) +80002c5c: 00a00e93 li t4,10 +80002c60: 00500193 li gp,5 +80002c64: 37df1863 bne t5,t4,80002fd4 + +80002c68 : +80002c68: 00001097 auipc ra,0x1 +80002c6c: 39f08093 addi ra,ra,927 # 80004007 +80002c70: faa00113 li sp,-86 +80002c74: fe208ea3 sb sp,-3(ra) +80002c78: ffd08f03 lb t5,-3(ra) +80002c7c: faa00e93 li t4,-86 +80002c80: 00600193 li gp,6 +80002c84: 35df1863 bne t5,t4,80002fd4 + +80002c88 : +80002c88: 00001097 auipc ra,0x1 +80002c8c: 37f08093 addi ra,ra,895 # 80004007 +80002c90: 00000113 li sp,0 +80002c94: fe208f23 sb sp,-2(ra) +80002c98: ffe08f03 lb t5,-2(ra) +80002c9c: 00000e93 li t4,0 +80002ca0: 00700193 li gp,7 +80002ca4: 33df1863 bne t5,t4,80002fd4 + +80002ca8 : +80002ca8: 00001097 auipc ra,0x1 +80002cac: 35f08093 addi ra,ra,863 # 80004007 +80002cb0: fa000113 li sp,-96 +80002cb4: fe208fa3 sb sp,-1(ra) +80002cb8: fff08f03 lb t5,-1(ra) +80002cbc: fa000e93 li t4,-96 +80002cc0: 00800193 li gp,8 +80002cc4: 31df1863 bne t5,t4,80002fd4 + +80002cc8 : +80002cc8: 00001097 auipc ra,0x1 +80002ccc: 33f08093 addi ra,ra,831 # 80004007 +80002cd0: 00a00113 li sp,10 +80002cd4: 00208023 sb sp,0(ra) +80002cd8: 00008f03 lb t5,0(ra) +80002cdc: 00a00e93 li t4,10 +80002ce0: 00900193 li gp,9 +80002ce4: 2fdf1863 bne t5,t4,80002fd4 + +80002ce8 : +80002ce8: 00001097 auipc ra,0x1 +80002cec: 32008093 addi ra,ra,800 # 80004008 +80002cf0: 12345137 lui sp,0x12345 +80002cf4: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> +80002cf8: fe008213 addi tp,ra,-32 +80002cfc: 02220023 sb sp,32(tp) # 20 <_start-0x7fffffe0> +80002d00: 00008283 lb t0,0(ra) +80002d04: 07800e93 li t4,120 +80002d08: 00a00193 li gp,10 +80002d0c: 2dd29463 bne t0,t4,80002fd4 + +80002d10 : +80002d10: 00001097 auipc ra,0x1 +80002d14: 2f808093 addi ra,ra,760 # 80004008 +80002d18: 00003137 lui sp,0x3 +80002d1c: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68> +80002d20: ffa08093 addi ra,ra,-6 +80002d24: 002083a3 sb sp,7(ra) +80002d28: 00001217 auipc tp,0x1 +80002d2c: 2e120213 addi tp,tp,737 # 80004009 +80002d30: 00020283 lb t0,0(tp) # 0 <_start-0x80000000> +80002d34: f9800e93 li t4,-104 +80002d38: 00b00193 li gp,11 +80002d3c: 29d29c63 bne t0,t4,80002fd4 + +80002d40 : +80002d40: 00c00193 li gp,12 +80002d44: 00000213 li tp,0 +80002d48: fdd00093 li ra,-35 +80002d4c: 00001117 auipc sp,0x1 +80002d50: 2b410113 addi sp,sp,692 # 80004000 +80002d54: 00110023 sb ra,0(sp) +80002d58: 00010f03 lb t5,0(sp) +80002d5c: fdd00e93 li t4,-35 +80002d60: 27df1a63 bne t5,t4,80002fd4 +80002d64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d68: 00200293 li t0,2 +80002d6c: fc521ee3 bne tp,t0,80002d48 + +80002d70 : +80002d70: 00d00193 li gp,13 +80002d74: 00000213 li tp,0 +80002d78: fcd00093 li ra,-51 +80002d7c: 00001117 auipc sp,0x1 +80002d80: 28410113 addi sp,sp,644 # 80004000 +80002d84: 00000013 nop +80002d88: 001100a3 sb ra,1(sp) +80002d8c: 00110f03 lb t5,1(sp) +80002d90: fcd00e93 li t4,-51 +80002d94: 25df1063 bne t5,t4,80002fd4 +80002d98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d9c: 00200293 li t0,2 +80002da0: fc521ce3 bne tp,t0,80002d78 + +80002da4 : +80002da4: 00e00193 li gp,14 +80002da8: 00000213 li tp,0 +80002dac: fcc00093 li ra,-52 +80002db0: 00001117 auipc sp,0x1 +80002db4: 25010113 addi sp,sp,592 # 80004000 +80002db8: 00000013 nop +80002dbc: 00000013 nop +80002dc0: 00110123 sb ra,2(sp) +80002dc4: 00210f03 lb t5,2(sp) +80002dc8: fcc00e93 li t4,-52 +80002dcc: 21df1463 bne t5,t4,80002fd4 +80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd4: 00200293 li t0,2 +80002dd8: fc521ae3 bne tp,t0,80002dac + +80002ddc : +80002ddc: 00f00193 li gp,15 +80002de0: 00000213 li tp,0 +80002de4: fbc00093 li ra,-68 +80002de8: 00000013 nop +80002dec: 00001117 auipc sp,0x1 +80002df0: 21410113 addi sp,sp,532 # 80004000 +80002df4: 001101a3 sb ra,3(sp) +80002df8: 00310f03 lb t5,3(sp) +80002dfc: fbc00e93 li t4,-68 +80002e00: 1ddf1a63 bne t5,t4,80002fd4 +80002e04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e08: 00200293 li t0,2 +80002e0c: fc521ce3 bne tp,t0,80002de4 + +80002e10 : +80002e10: 01000193 li gp,16 +80002e14: 00000213 li tp,0 +80002e18: fbb00093 li ra,-69 +80002e1c: 00000013 nop +80002e20: 00001117 auipc sp,0x1 +80002e24: 1e010113 addi sp,sp,480 # 80004000 +80002e28: 00000013 nop +80002e2c: 00110223 sb ra,4(sp) +80002e30: 00410f03 lb t5,4(sp) +80002e34: fbb00e93 li t4,-69 +80002e38: 19df1e63 bne t5,t4,80002fd4 +80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e40: 00200293 li t0,2 +80002e44: fc521ae3 bne tp,t0,80002e18 + +80002e48 : +80002e48: 01100193 li gp,17 +80002e4c: 00000213 li tp,0 +80002e50: fab00093 li ra,-85 +80002e54: 00000013 nop +80002e58: 00000013 nop +80002e5c: 00001117 auipc sp,0x1 +80002e60: 1a410113 addi sp,sp,420 # 80004000 +80002e64: 001102a3 sb ra,5(sp) +80002e68: 00510f03 lb t5,5(sp) +80002e6c: fab00e93 li t4,-85 +80002e70: 17df1263 bne t5,t4,80002fd4 +80002e74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e78: 00200293 li t0,2 +80002e7c: fc521ae3 bne tp,t0,80002e50 + +80002e80 : +80002e80: 01200193 li gp,18 +80002e84: 00000213 li tp,0 +80002e88: 00001117 auipc sp,0x1 +80002e8c: 17810113 addi sp,sp,376 # 80004000 +80002e90: 03300093 li ra,51 +80002e94: 00110023 sb ra,0(sp) +80002e98: 00010f03 lb t5,0(sp) +80002e9c: 03300e93 li t4,51 +80002ea0: 13df1a63 bne t5,t4,80002fd4 +80002ea4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea8: 00200293 li t0,2 +80002eac: fc521ee3 bne tp,t0,80002e88 + +80002eb0 : +80002eb0: 01300193 li gp,19 +80002eb4: 00000213 li tp,0 +80002eb8: 00001117 auipc sp,0x1 +80002ebc: 14810113 addi sp,sp,328 # 80004000 +80002ec0: 02300093 li ra,35 +80002ec4: 00000013 nop +80002ec8: 001100a3 sb ra,1(sp) +80002ecc: 00110f03 lb t5,1(sp) +80002ed0: 02300e93 li t4,35 +80002ed4: 11df1063 bne t5,t4,80002fd4 +80002ed8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002edc: 00200293 li t0,2 +80002ee0: fc521ce3 bne tp,t0,80002eb8 + +80002ee4 : +80002ee4: 01400193 li gp,20 +80002ee8: 00000213 li tp,0 +80002eec: 00001117 auipc sp,0x1 +80002ef0: 11410113 addi sp,sp,276 # 80004000 +80002ef4: 02200093 li ra,34 +80002ef8: 00000013 nop +80002efc: 00000013 nop +80002f00: 00110123 sb ra,2(sp) +80002f04: 00210f03 lb t5,2(sp) +80002f08: 02200e93 li t4,34 +80002f0c: 0ddf1463 bne t5,t4,80002fd4 +80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f14: 00200293 li t0,2 +80002f18: fc521ae3 bne tp,t0,80002eec + +80002f1c : +80002f1c: 01500193 li gp,21 +80002f20: 00000213 li tp,0 +80002f24: 00001117 auipc sp,0x1 +80002f28: 0dc10113 addi sp,sp,220 # 80004000 +80002f2c: 00000013 nop +80002f30: 01200093 li ra,18 +80002f34: 001101a3 sb ra,3(sp) +80002f38: 00310f03 lb t5,3(sp) +80002f3c: 01200e93 li t4,18 +80002f40: 09df1a63 bne t5,t4,80002fd4 +80002f44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f48: 00200293 li t0,2 +80002f4c: fc521ce3 bne tp,t0,80002f24 + +80002f50 : +80002f50: 01600193 li gp,22 +80002f54: 00000213 li tp,0 +80002f58: 00001117 auipc sp,0x1 +80002f5c: 0a810113 addi sp,sp,168 # 80004000 +80002f60: 00000013 nop +80002f64: 01100093 li ra,17 +80002f68: 00000013 nop +80002f6c: 00110223 sb ra,4(sp) +80002f70: 00410f03 lb t5,4(sp) +80002f74: 01100e93 li t4,17 +80002f78: 05df1e63 bne t5,t4,80002fd4 +80002f7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f80: 00200293 li t0,2 +80002f84: fc521ae3 bne tp,t0,80002f58 + +80002f88 : +80002f88: 01700193 li gp,23 +80002f8c: 00000213 li tp,0 +80002f90: 00001117 auipc sp,0x1 +80002f94: 07010113 addi sp,sp,112 # 80004000 +80002f98: 00000013 nop +80002f9c: 00000013 nop +80002fa0: 00100093 li ra,1 +80002fa4: 001102a3 sb ra,5(sp) +80002fa8: 00510f03 lb t5,5(sp) +80002fac: 00100e93 li t4,1 +80002fb0: 03df1263 bne t5,t4,80002fd4 +80002fb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fb8: 00200293 li t0,2 +80002fbc: fc521ae3 bne tp,t0,80002f90 +80002fc0: 0ef00513 li a0,239 +80002fc4: 00001597 auipc a1,0x1 +80002fc8: 03c58593 addi a1,a1,60 # 80004000 +80002fcc: 00a581a3 sb a0,3(a1) +80002fd0: 00301a63 bne zero,gp,80002fe4 + +80002fd4 : +80002fd4: 00119513 slli a0,gp,0x1 +80002fd8: 00050063 beqz a0,80002fd8 +80002fdc: 00156513 ori a0,a0,1 +80002fe0: 00000073 ecall + +80002fe4 : +80002fe4: 00100513 li a0,1 +80002fe8: 00000073 ecall +80002fec: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: jal t6,800026fe + +80004001 : +80004001: jal t6,800026ff + +80004002 : +80004002: jal t6,80002700 + +80004003 : +80004003: jal t6,80002701 + +80004004 : +80004004: jal t6,80002702 + +80004005 : +80004005: jal t6,80002703 + +80004006 : +80004006: jal t6,80002704 + +80004007 : +80004007: jal t6,80012007 <_end+0xac0f> + +80004008 : +80004008: jal t6,80012008 <_end+0xac10> + +80004009 : +80004009: ef Address 0x0000000080004009 is out of bounds. + +8000400d: diff --git a/Tests/isa/rv32ui-v-sh b/Tests/isa/rv32ui-v-sh new file mode 100644 index 0000000..24e48c1 Binary files /dev/null and b/Tests/isa/rv32ui-v-sh differ diff --git a/Tests/isa/rv32ui-v-sh.dump b/Tests/isa/rv32ui-v-sh.dump new file mode 100644 index 0000000..9fbbea1 --- /dev/null +++ b/Tests/isa/rv32ui-v-sh.dump @@ -0,0 +1,1270 @@ + +rv32ui-v-sh: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bac58593 addi a1,a1,-1108 # 80003074 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: bc858593 addi a1,a1,-1080 # 80003100 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: b7458593 addi a1,a1,-1164 # 80003118 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: aa858593 addi a1,a1,-1368 # 800030b8 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: a9858593 addi a1,a1,-1384 # 800031e0 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a0058593 addi a1,a1,-1536 # 800031bc +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 8fc60613 addi a2,a2,-1796 # 8000320c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 80c60613 addi a2,a2,-2036 # 80003188 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 78c60613 addi a2,a2,1932 # 80003154 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 02200793 li a5,34 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0e9af7b7 lui a5,0xe9af +80002b9c: 00080637 lui a2,0x80 +80002ba0: 36f78793 addi a5,a5,879 # e9af36f <_start-0x71650c91> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: 0aa00113 li sp,170 +80002bec: 00209023 sh sp,0(ra) +80002bf0: 00009f03 lh t5,0(ra) +80002bf4: 0aa00e93 li t4,170 +80002bf8: 00200193 li gp,2 +80002bfc: 45df1e63 bne t5,t4,80003058 + +80002c00 : +80002c00: 00001097 auipc ra,0x1 +80002c04: 40008093 addi ra,ra,1024 # 80004000 +80002c08: ffffb137 lui sp,0xffffb +80002c0c: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff3608> +80002c10: 00209123 sh sp,2(ra) +80002c14: 00209f03 lh t5,2(ra) +80002c18: ffffbeb7 lui t4,0xffffb +80002c1c: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff3608> +80002c20: 00300193 li gp,3 +80002c24: 43df1a63 bne t5,t4,80003058 + +80002c28 : +80002c28: 00001097 auipc ra,0x1 +80002c2c: 3d808093 addi ra,ra,984 # 80004000 +80002c30: beef1137 lui sp,0xbeef1 +80002c34: aa010113 addi sp,sp,-1376 # beef0aa0 <_end+0x3eee96a8> +80002c38: 00209223 sh sp,4(ra) +80002c3c: 0040af03 lw t5,4(ra) +80002c40: beef1eb7 lui t4,0xbeef1 +80002c44: aa0e8e93 addi t4,t4,-1376 # beef0aa0 <_end+0x3eee96a8> +80002c48: 00400193 li gp,4 +80002c4c: 41df1663 bne t5,t4,80003058 + +80002c50 : +80002c50: 00001097 auipc ra,0x1 +80002c54: 3b008093 addi ra,ra,944 # 80004000 +80002c58: ffffa137 lui sp,0xffffa +80002c5c: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff2c12> +80002c60: 00209323 sh sp,6(ra) +80002c64: 00609f03 lh t5,6(ra) +80002c68: ffffaeb7 lui t4,0xffffa +80002c6c: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff2c12> +80002c70: 00500193 li gp,5 +80002c74: 3fdf1263 bne t5,t4,80003058 + +80002c78 : +80002c78: 00001097 auipc ra,0x1 +80002c7c: 39608093 addi ra,ra,918 # 8000400e +80002c80: 0aa00113 li sp,170 +80002c84: fe209d23 sh sp,-6(ra) +80002c88: ffa09f03 lh t5,-6(ra) +80002c8c: 0aa00e93 li t4,170 +80002c90: 00600193 li gp,6 +80002c94: 3ddf1263 bne t5,t4,80003058 + +80002c98 : +80002c98: 00001097 auipc ra,0x1 +80002c9c: 37608093 addi ra,ra,886 # 8000400e +80002ca0: ffffb137 lui sp,0xffffb +80002ca4: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff3608> +80002ca8: fe209e23 sh sp,-4(ra) +80002cac: ffc09f03 lh t5,-4(ra) +80002cb0: ffffbeb7 lui t4,0xffffb +80002cb4: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff3608> +80002cb8: 00700193 li gp,7 +80002cbc: 39df1e63 bne t5,t4,80003058 + +80002cc0 : +80002cc0: 00001097 auipc ra,0x1 +80002cc4: 34e08093 addi ra,ra,846 # 8000400e +80002cc8: 00001137 lui sp,0x1 +80002ccc: aa010113 addi sp,sp,-1376 # aa0 <_start-0x7ffff560> +80002cd0: fe209f23 sh sp,-2(ra) +80002cd4: ffe09f03 lh t5,-2(ra) +80002cd8: 00001eb7 lui t4,0x1 +80002cdc: aa0e8e93 addi t4,t4,-1376 # aa0 <_start-0x7ffff560> +80002ce0: 00800193 li gp,8 +80002ce4: 37df1a63 bne t5,t4,80003058 + +80002ce8 : +80002ce8: 00001097 auipc ra,0x1 +80002cec: 32608093 addi ra,ra,806 # 8000400e +80002cf0: ffffa137 lui sp,0xffffa +80002cf4: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff2c12> +80002cf8: 00209023 sh sp,0(ra) +80002cfc: 00009f03 lh t5,0(ra) +80002d00: ffffaeb7 lui t4,0xffffa +80002d04: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff2c12> +80002d08: 00900193 li gp,9 +80002d0c: 35df1663 bne t5,t4,80003058 + +80002d10 : +80002d10: 00001097 auipc ra,0x1 +80002d14: 30008093 addi ra,ra,768 # 80004010 +80002d18: 12345137 lui sp,0x12345 +80002d1c: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> +80002d20: fe008213 addi tp,ra,-32 +80002d24: 02221023 sh sp,32(tp) # 20 <_start-0x7fffffe0> +80002d28: 00009283 lh t0,0(ra) +80002d2c: 00005eb7 lui t4,0x5 +80002d30: 678e8e93 addi t4,t4,1656 # 5678 <_start-0x7fffa988> +80002d34: 00a00193 li gp,10 +80002d38: 33d29063 bne t0,t4,80003058 + +80002d3c : +80002d3c: 00001097 auipc ra,0x1 +80002d40: 2d408093 addi ra,ra,724 # 80004010 +80002d44: 00003137 lui sp,0x3 +80002d48: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68> +80002d4c: ffb08093 addi ra,ra,-5 +80002d50: 002093a3 sh sp,7(ra) +80002d54: 00001217 auipc tp,0x1 +80002d58: 2be20213 addi tp,tp,702 # 80004012 +80002d5c: 00021283 lh t0,0(tp) # 0 <_start-0x80000000> +80002d60: 00003eb7 lui t4,0x3 +80002d64: 098e8e93 addi t4,t4,152 # 3098 <_start-0x7fffcf68> +80002d68: 00b00193 li gp,11 +80002d6c: 2fd29663 bne t0,t4,80003058 + +80002d70 : +80002d70: 00c00193 li gp,12 +80002d74: 00000213 li tp,0 +80002d78: ffffd0b7 lui ra,0xffffd +80002d7c: cdd08093 addi ra,ra,-803 # ffffccdd <_end+0x7fff58e5> +80002d80: 00001117 auipc sp,0x1 +80002d84: 28010113 addi sp,sp,640 # 80004000 +80002d88: 00111023 sh ra,0(sp) +80002d8c: 00011f03 lh t5,0(sp) +80002d90: ffffdeb7 lui t4,0xffffd +80002d94: cdde8e93 addi t4,t4,-803 # ffffccdd <_end+0x7fff58e5> +80002d98: 2ddf1063 bne t5,t4,80003058 +80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da0: 00200293 li t0,2 +80002da4: fc521ae3 bne tp,t0,80002d78 + +80002da8 : +80002da8: 00d00193 li gp,13 +80002dac: 00000213 li tp,0 +80002db0: ffffc0b7 lui ra,0xffffc +80002db4: ccd08093 addi ra,ra,-819 # ffffbccd <_end+0x7fff48d5> +80002db8: 00001117 auipc sp,0x1 +80002dbc: 24810113 addi sp,sp,584 # 80004000 +80002dc0: 00000013 nop +80002dc4: 00111123 sh ra,2(sp) +80002dc8: 00211f03 lh t5,2(sp) +80002dcc: ffffceb7 lui t4,0xffffc +80002dd0: ccde8e93 addi t4,t4,-819 # ffffbccd <_end+0x7fff48d5> +80002dd4: 29df1263 bne t5,t4,80003058 +80002dd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ddc: 00200293 li t0,2 +80002de0: fc5218e3 bne tp,t0,80002db0 + +80002de4 : +80002de4: 00e00193 li gp,14 +80002de8: 00000213 li tp,0 +80002dec: ffffc0b7 lui ra,0xffffc +80002df0: bcc08093 addi ra,ra,-1076 # ffffbbcc <_end+0x7fff47d4> +80002df4: 00001117 auipc sp,0x1 +80002df8: 20c10113 addi sp,sp,524 # 80004000 +80002dfc: 00000013 nop +80002e00: 00000013 nop +80002e04: 00111223 sh ra,4(sp) +80002e08: 00411f03 lh t5,4(sp) +80002e0c: ffffceb7 lui t4,0xffffc +80002e10: bcce8e93 addi t4,t4,-1076 # ffffbbcc <_end+0x7fff47d4> +80002e14: 25df1263 bne t5,t4,80003058 +80002e18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e1c: 00200293 li t0,2 +80002e20: fc5216e3 bne tp,t0,80002dec + +80002e24 : +80002e24: 00f00193 li gp,15 +80002e28: 00000213 li tp,0 +80002e2c: ffffb0b7 lui ra,0xffffb +80002e30: bbc08093 addi ra,ra,-1092 # ffffabbc <_end+0x7fff37c4> +80002e34: 00000013 nop +80002e38: 00001117 auipc sp,0x1 +80002e3c: 1c810113 addi sp,sp,456 # 80004000 +80002e40: 00111323 sh ra,6(sp) +80002e44: 00611f03 lh t5,6(sp) +80002e48: ffffbeb7 lui t4,0xffffb +80002e4c: bbce8e93 addi t4,t4,-1092 # ffffabbc <_end+0x7fff37c4> +80002e50: 21df1463 bne t5,t4,80003058 +80002e54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e58: 00200293 li t0,2 +80002e5c: fc5218e3 bne tp,t0,80002e2c + +80002e60 : +80002e60: 01000193 li gp,16 +80002e64: 00000213 li tp,0 +80002e68: ffffb0b7 lui ra,0xffffb +80002e6c: abb08093 addi ra,ra,-1349 # ffffaabb <_end+0x7fff36c3> +80002e70: 00000013 nop +80002e74: 00001117 auipc sp,0x1 +80002e78: 18c10113 addi sp,sp,396 # 80004000 +80002e7c: 00000013 nop +80002e80: 00111423 sh ra,8(sp) +80002e84: 00811f03 lh t5,8(sp) +80002e88: ffffbeb7 lui t4,0xffffb +80002e8c: abbe8e93 addi t4,t4,-1349 # ffffaabb <_end+0x7fff36c3> +80002e90: 1ddf1463 bne t5,t4,80003058 +80002e94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e98: 00200293 li t0,2 +80002e9c: fc5216e3 bne tp,t0,80002e68 + +80002ea0 : +80002ea0: 01100193 li gp,17 +80002ea4: 00000213 li tp,0 +80002ea8: ffffe0b7 lui ra,0xffffe +80002eac: aab08093 addi ra,ra,-1365 # ffffdaab <_end+0x7fff66b3> +80002eb0: 00000013 nop +80002eb4: 00000013 nop +80002eb8: 00001117 auipc sp,0x1 +80002ebc: 14810113 addi sp,sp,328 # 80004000 +80002ec0: 00111523 sh ra,10(sp) +80002ec4: 00a11f03 lh t5,10(sp) +80002ec8: ffffeeb7 lui t4,0xffffe +80002ecc: aabe8e93 addi t4,t4,-1365 # ffffdaab <_end+0x7fff66b3> +80002ed0: 19df1463 bne t5,t4,80003058 +80002ed4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ed8: 00200293 li t0,2 +80002edc: fc5216e3 bne tp,t0,80002ea8 + +80002ee0 : +80002ee0: 01200193 li gp,18 +80002ee4: 00000213 li tp,0 +80002ee8: 00001117 auipc sp,0x1 +80002eec: 11810113 addi sp,sp,280 # 80004000 +80002ef0: 000020b7 lui ra,0x2 +80002ef4: 23308093 addi ra,ra,563 # 2233 <_start-0x7fffddcd> +80002ef8: 00111023 sh ra,0(sp) +80002efc: 00011f03 lh t5,0(sp) +80002f00: 00002eb7 lui t4,0x2 +80002f04: 233e8e93 addi t4,t4,563 # 2233 <_start-0x7fffddcd> +80002f08: 15df1863 bne t5,t4,80003058 +80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f10: 00200293 li t0,2 +80002f14: fc521ae3 bne tp,t0,80002ee8 + +80002f18 : +80002f18: 01300193 li gp,19 +80002f1c: 00000213 li tp,0 +80002f20: 00001117 auipc sp,0x1 +80002f24: 0e010113 addi sp,sp,224 # 80004000 +80002f28: 000010b7 lui ra,0x1 +80002f2c: 22308093 addi ra,ra,547 # 1223 <_start-0x7fffeddd> +80002f30: 00000013 nop +80002f34: 00111123 sh ra,2(sp) +80002f38: 00211f03 lh t5,2(sp) +80002f3c: 00001eb7 lui t4,0x1 +80002f40: 223e8e93 addi t4,t4,547 # 1223 <_start-0x7fffeddd> +80002f44: 11df1a63 bne t5,t4,80003058 +80002f48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f4c: 00200293 li t0,2 +80002f50: fc5218e3 bne tp,t0,80002f20 + +80002f54 : +80002f54: 01400193 li gp,20 +80002f58: 00000213 li tp,0 +80002f5c: 00001117 auipc sp,0x1 +80002f60: 0a410113 addi sp,sp,164 # 80004000 +80002f64: 000010b7 lui ra,0x1 +80002f68: 12208093 addi ra,ra,290 # 1122 <_start-0x7fffeede> +80002f6c: 00000013 nop +80002f70: 00000013 nop +80002f74: 00111223 sh ra,4(sp) +80002f78: 00411f03 lh t5,4(sp) +80002f7c: 00001eb7 lui t4,0x1 +80002f80: 122e8e93 addi t4,t4,290 # 1122 <_start-0x7fffeede> +80002f84: 0ddf1a63 bne t5,t4,80003058 +80002f88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f8c: 00200293 li t0,2 +80002f90: fc5216e3 bne tp,t0,80002f5c + +80002f94 : +80002f94: 01500193 li gp,21 +80002f98: 00000213 li tp,0 +80002f9c: 00001117 auipc sp,0x1 +80002fa0: 06410113 addi sp,sp,100 # 80004000 +80002fa4: 00000013 nop +80002fa8: 11200093 li ra,274 +80002fac: 00111323 sh ra,6(sp) +80002fb0: 00611f03 lh t5,6(sp) +80002fb4: 11200e93 li t4,274 +80002fb8: 0bdf1063 bne t5,t4,80003058 +80002fbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fc0: 00200293 li t0,2 +80002fc4: fc521ce3 bne tp,t0,80002f9c + +80002fc8 : +80002fc8: 01600193 li gp,22 +80002fcc: 00000213 li tp,0 +80002fd0: 00001117 auipc sp,0x1 +80002fd4: 03010113 addi sp,sp,48 # 80004000 +80002fd8: 00000013 nop +80002fdc: 01100093 li ra,17 +80002fe0: 00000013 nop +80002fe4: 00111423 sh ra,8(sp) +80002fe8: 00811f03 lh t5,8(sp) +80002fec: 01100e93 li t4,17 +80002ff0: 07df1463 bne t5,t4,80003058 +80002ff4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ff8: 00200293 li t0,2 +80002ffc: fc521ae3 bne tp,t0,80002fd0 + +80003000 : +80003000: 01700193 li gp,23 +80003004: 00000213 li tp,0 +80003008: 00001117 auipc sp,0x1 +8000300c: ff810113 addi sp,sp,-8 # 80004000 +80003010: 00000013 nop +80003014: 00000013 nop +80003018: 000030b7 lui ra,0x3 +8000301c: 00108093 addi ra,ra,1 # 3001 <_start-0x7fffcfff> +80003020: 00111523 sh ra,10(sp) +80003024: 00a11f03 lh t5,10(sp) +80003028: 00003eb7 lui t4,0x3 +8000302c: 001e8e93 addi t4,t4,1 # 3001 <_start-0x7fffcfff> +80003030: 03df1463 bne t5,t4,80003058 +80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003038: 00200293 li t0,2 +8000303c: fc5216e3 bne tp,t0,80003008 +80003040: 0000c537 lui a0,0xc +80003044: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111> +80003048: 00001597 auipc a1,0x1 +8000304c: fb858593 addi a1,a1,-72 # 80004000 +80003050: 00a59323 sh a0,6(a1) +80003054: 00301a63 bne zero,gp,80003068 + +80003058 : +80003058: 00119513 slli a0,gp,0x1 +8000305c: 00050063 beqz a0,8000305c +80003060: 00156513 ori a0,a0,1 +80003064: 00000073 ecall + +80003068 : +80003068: 00100513 li a0,1 +8000306c: 00000073 ecall +80003070: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: jal t4,7ffff3ee <_start-0xc12> + +80004002 : +80004002: jal t4,7ffff3f0 <_start-0xc10> + +80004004 : +80004004: jal t4,7ffff3f2 <_start-0xc0e> + +80004006 : +80004006: jal t4,7ffff3f4 <_start-0xc0c> + +80004008 : +80004008: jal t4,7ffff3f6 <_start-0xc0a> + +8000400a : +8000400a: jal t4,7ffff3f8 <_start-0xc08> + +8000400c : +8000400c: jal t4,7ffff3fa <_start-0xc06> + +8000400e : +8000400e: jal t4,7ffff3fc <_start-0xc04> + +80004010 : +80004010: jal t4,7ffff3fe <_start-0xc02> + +80004012 : +80004012: jal t4,8000f012 <_end+0x7c1a> diff --git a/Tests/isa/rv32ui-v-simple b/Tests/isa/rv32ui-v-simple new file mode 100644 index 0000000..bfb1e6f Binary files /dev/null and b/Tests/isa/rv32ui-v-simple differ diff --git a/Tests/isa/rv32ui-v-simple.dump b/Tests/isa/rv32ui-v-simple.dump new file mode 100644 index 0000000..bfe12f5 --- /dev/null +++ b/Tests/isa/rv32ui-v-simple.dump @@ -0,0 +1,902 @@ + +rv32ui-v-simple: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00000597 auipc a1,0x0 +800024cc: 72458593 addi a1,a1,1828 # 80002bec +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00000597 auipc a1,0x0 +8000253c: 74058593 addi a1,a1,1856 # 80002c78 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 6ec58593 addi a1,a1,1772 # 80002c90 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 62058593 addi a1,a1,1568 # 80002c30 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 61058593 addi a1,a1,1552 # 80002d58 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 57858593 addi a1,a1,1400 # 80002d34 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 47460613 addi a2,a2,1140 # 80002d84 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 38460613 addi a2,a2,900 # 80002d00 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 30460613 addi a2,a2,772 # 80002ccc +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 03c00793 li a5,60 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0f7937b7 lui a5,0xf793 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 0f778793 addi a5,a5,247 # f7930f7 <_start-0x7086cf09> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00100513 li a0,1 +80002be4: 00000073 ecall +80002be8: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-sll b/Tests/isa/rv32ui-v-sll new file mode 100644 index 0000000..cd996de Binary files /dev/null and b/Tests/isa/rv32ui-v-sll differ diff --git a/Tests/isa/rv32ui-v-sll.dump b/Tests/isa/rv32ui-v-sll.dump new file mode 100644 index 0000000..abb36d2 --- /dev/null +++ b/Tests/isa/rv32ui-v-sll.dump @@ -0,0 +1,1330 @@ + +rv32ui-v-sll: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: c8458593 addi a1,a1,-892 # 8000314c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: ca058593 addi a1,a1,-864 # 800031d8 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: c4c58593 addi a1,a1,-948 # 800031f0 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: b8058593 addi a1,a1,-1152 # 80003190 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: b7058593 addi a1,a1,-1168 # 800032b8 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: ad858593 addi a1,a1,-1320 # 80003294 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 9d460613 addi a2,a2,-1580 # 800032e4 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 8e460613 addi a2,a2,-1820 # 80003260 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00001617 auipc a2,0x1 +800029cc: 86460613 addi a2,a2,-1948 # 8000322c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01100793 li a5,17 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 02a257b7 lui a5,0x2a25 +80002b9c: 00080637 lui a2,0x80 +80002ba0: e4778793 addi a5,a5,-441 # 2a24e47 <_start-0x7d5db1b9> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00100093 li ra,1 +80002be4: 00000113 li sp,0 +80002be8: 00209f33 sll t5,ra,sp +80002bec: 00100e93 li t4,1 +80002bf0: 00200193 li gp,2 +80002bf4: 53df1e63 bne t5,t4,80003130 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 00209f33 sll t5,ra,sp +80002c04: 00200e93 li t4,2 +80002c08: 00300193 li gp,3 +80002c0c: 53df1263 bne t5,t4,80003130 + +80002c10 : +80002c10: 00100093 li ra,1 +80002c14: 00700113 li sp,7 +80002c18: 00209f33 sll t5,ra,sp +80002c1c: 08000e93 li t4,128 +80002c20: 00400193 li gp,4 +80002c24: 51df1663 bne t5,t4,80003130 + +80002c28 : +80002c28: 00100093 li ra,1 +80002c2c: 00e00113 li sp,14 +80002c30: 00209f33 sll t5,ra,sp +80002c34: 00004eb7 lui t4,0x4 +80002c38: 00500193 li gp,5 +80002c3c: 4fdf1a63 bne t5,t4,80003130 + +80002c40 : +80002c40: 00100093 li ra,1 +80002c44: 01f00113 li sp,31 +80002c48: 00209f33 sll t5,ra,sp +80002c4c: 80000eb7 lui t4,0x80000 +80002c50: 00600193 li gp,6 +80002c54: 4ddf1e63 bne t5,t4,80003130 + +80002c58 : +80002c58: fff00093 li ra,-1 +80002c5c: 00000113 li sp,0 +80002c60: 00209f33 sll t5,ra,sp +80002c64: fff00e93 li t4,-1 +80002c68: 00700193 li gp,7 +80002c6c: 4ddf1263 bne t5,t4,80003130 + +80002c70 : +80002c70: fff00093 li ra,-1 +80002c74: 00100113 li sp,1 +80002c78: 00209f33 sll t5,ra,sp +80002c7c: ffe00e93 li t4,-2 +80002c80: 00800193 li gp,8 +80002c84: 4bdf1663 bne t5,t4,80003130 + +80002c88 : +80002c88: fff00093 li ra,-1 +80002c8c: 00700113 li sp,7 +80002c90: 00209f33 sll t5,ra,sp +80002c94: f8000e93 li t4,-128 +80002c98: 00900193 li gp,9 +80002c9c: 49df1a63 bne t5,t4,80003130 + +80002ca0 : +80002ca0: fff00093 li ra,-1 +80002ca4: 00e00113 li sp,14 +80002ca8: 00209f33 sll t5,ra,sp +80002cac: ffffceb7 lui t4,0xffffc +80002cb0: 00a00193 li gp,10 +80002cb4: 47df1e63 bne t5,t4,80003130 + +80002cb8 : +80002cb8: fff00093 li ra,-1 +80002cbc: 01f00113 li sp,31 +80002cc0: 00209f33 sll t5,ra,sp +80002cc4: 80000eb7 lui t4,0x80000 +80002cc8: 00b00193 li gp,11 +80002ccc: 47df1263 bne t5,t4,80003130 + +80002cd0 : +80002cd0: 212120b7 lui ra,0x21212 +80002cd4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002cd8: 00000113 li sp,0 +80002cdc: 00209f33 sll t5,ra,sp +80002ce0: 21212eb7 lui t4,0x21212 +80002ce4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80002ce8: 00c00193 li gp,12 +80002cec: 45df1263 bne t5,t4,80003130 + +80002cf0 : +80002cf0: 212120b7 lui ra,0x21212 +80002cf4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002cf8: 00100113 li sp,1 +80002cfc: 00209f33 sll t5,ra,sp +80002d00: 42424eb7 lui t4,0x42424 +80002d04: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> +80002d08: 00d00193 li gp,13 +80002d0c: 43df1263 bne t5,t4,80003130 + +80002d10 : +80002d10: 212120b7 lui ra,0x21212 +80002d14: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d18: 00700113 li sp,7 +80002d1c: 00209f33 sll t5,ra,sp +80002d20: 90909eb7 lui t4,0x90909 +80002d24: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10902c88> +80002d28: 00e00193 li gp,14 +80002d2c: 41df1263 bne t5,t4,80003130 + +80002d30 : +80002d30: 212120b7 lui ra,0x21212 +80002d34: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d38: 00e00113 li sp,14 +80002d3c: 00209f33 sll t5,ra,sp +80002d40: 48484eb7 lui t4,0x48484 +80002d44: 00f00193 li gp,15 +80002d48: 3fdf1463 bne t5,t4,80003130 + +80002d4c : +80002d4c: 212120b7 lui ra,0x21212 +80002d50: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d54: 01f00113 li sp,31 +80002d58: 00209f33 sll t5,ra,sp +80002d5c: 80000eb7 lui t4,0x80000 +80002d60: 01000193 li gp,16 +80002d64: 3ddf1663 bne t5,t4,80003130 + +80002d68 : +80002d68: 212120b7 lui ra,0x21212 +80002d6c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d70: fc000113 li sp,-64 +80002d74: 00209f33 sll t5,ra,sp +80002d78: 21212eb7 lui t4,0x21212 +80002d7c: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80002d80: 01100193 li gp,17 +80002d84: 3bdf1663 bne t5,t4,80003130 + +80002d88 : +80002d88: 212120b7 lui ra,0x21212 +80002d8c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d90: fc100113 li sp,-63 +80002d94: 00209f33 sll t5,ra,sp +80002d98: 42424eb7 lui t4,0x42424 +80002d9c: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> +80002da0: 01200193 li gp,18 +80002da4: 39df1663 bne t5,t4,80003130 + +80002da8 : +80002da8: 212120b7 lui ra,0x21212 +80002dac: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002db0: fc700113 li sp,-57 +80002db4: 00209f33 sll t5,ra,sp +80002db8: 90909eb7 lui t4,0x90909 +80002dbc: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10902c88> +80002dc0: 01300193 li gp,19 +80002dc4: 37df1663 bne t5,t4,80003130 + +80002dc8 : +80002dc8: 212120b7 lui ra,0x21212 +80002dcc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002dd0: fce00113 li sp,-50 +80002dd4: 00209f33 sll t5,ra,sp +80002dd8: 48484eb7 lui t4,0x48484 +80002ddc: 01400193 li gp,20 +80002de0: 35df1863 bne t5,t4,80003130 + +80002de4 : +80002de4: 00100093 li ra,1 +80002de8: 00700113 li sp,7 +80002dec: 002090b3 sll ra,ra,sp +80002df0: 08000e93 li t4,128 +80002df4: 01600193 li gp,22 +80002df8: 33d09c63 bne ra,t4,80003130 + +80002dfc : +80002dfc: 00100093 li ra,1 +80002e00: 00e00113 li sp,14 +80002e04: 00209133 sll sp,ra,sp +80002e08: 00004eb7 lui t4,0x4 +80002e0c: 01700193 li gp,23 +80002e10: 33d11063 bne sp,t4,80003130 + +80002e14 : +80002e14: 00300093 li ra,3 +80002e18: 001090b3 sll ra,ra,ra +80002e1c: 01800e93 li t4,24 +80002e20: 01800193 li gp,24 +80002e24: 31d09663 bne ra,t4,80003130 + +80002e28 : +80002e28: 00000213 li tp,0 +80002e2c: 00100093 li ra,1 +80002e30: 00700113 li sp,7 +80002e34: 00209f33 sll t5,ra,sp +80002e38: 000f0313 mv t1,t5 +80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e40: 00200293 li t0,2 +80002e44: fe5214e3 bne tp,t0,80002e2c +80002e48: 08000e93 li t4,128 +80002e4c: 01900193 li gp,25 +80002e50: 2fd31063 bne t1,t4,80003130 + +80002e54 : +80002e54: 00000213 li tp,0 +80002e58: 00100093 li ra,1 +80002e5c: 00e00113 li sp,14 +80002e60: 00209f33 sll t5,ra,sp +80002e64: 00000013 nop +80002e68: 000f0313 mv t1,t5 +80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e70: 00200293 li t0,2 +80002e74: fe5212e3 bne tp,t0,80002e58 +80002e78: 00004eb7 lui t4,0x4 +80002e7c: 01a00193 li gp,26 +80002e80: 2bd31863 bne t1,t4,80003130 + +80002e84 : +80002e84: 00000213 li tp,0 +80002e88: 00100093 li ra,1 +80002e8c: 01f00113 li sp,31 +80002e90: 00209f33 sll t5,ra,sp +80002e94: 00000013 nop +80002e98: 00000013 nop +80002e9c: 000f0313 mv t1,t5 +80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea4: 00200293 li t0,2 +80002ea8: fe5210e3 bne tp,t0,80002e88 +80002eac: 80000eb7 lui t4,0x80000 +80002eb0: 01b00193 li gp,27 +80002eb4: 27d31e63 bne t1,t4,80003130 + +80002eb8 : +80002eb8: 00000213 li tp,0 +80002ebc: 00100093 li ra,1 +80002ec0: 00700113 li sp,7 +80002ec4: 00209f33 sll t5,ra,sp +80002ec8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ecc: 00200293 li t0,2 +80002ed0: fe5216e3 bne tp,t0,80002ebc +80002ed4: 08000e93 li t4,128 +80002ed8: 01c00193 li gp,28 +80002edc: 25df1a63 bne t5,t4,80003130 + +80002ee0 : +80002ee0: 00000213 li tp,0 +80002ee4: 00100093 li ra,1 +80002ee8: 00e00113 li sp,14 +80002eec: 00000013 nop +80002ef0: 00209f33 sll t5,ra,sp +80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ef8: 00200293 li t0,2 +80002efc: fe5214e3 bne tp,t0,80002ee4 +80002f00: 00004eb7 lui t4,0x4 +80002f04: 01d00193 li gp,29 +80002f08: 23df1463 bne t5,t4,80003130 + +80002f0c : +80002f0c: 00000213 li tp,0 +80002f10: 00100093 li ra,1 +80002f14: 01f00113 li sp,31 +80002f18: 00000013 nop +80002f1c: 00000013 nop +80002f20: 00209f33 sll t5,ra,sp +80002f24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f28: 00200293 li t0,2 +80002f2c: fe5212e3 bne tp,t0,80002f10 +80002f30: 80000eb7 lui t4,0x80000 +80002f34: 01e00193 li gp,30 +80002f38: 1fdf1c63 bne t5,t4,80003130 + +80002f3c : +80002f3c: 00000213 li tp,0 +80002f40: 00100093 li ra,1 +80002f44: 00000013 nop +80002f48: 00700113 li sp,7 +80002f4c: 00209f33 sll t5,ra,sp +80002f50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f54: 00200293 li t0,2 +80002f58: fe5214e3 bne tp,t0,80002f40 +80002f5c: 08000e93 li t4,128 +80002f60: 01f00193 li gp,31 +80002f64: 1ddf1663 bne t5,t4,80003130 + +80002f68 : +80002f68: 00000213 li tp,0 +80002f6c: 00100093 li ra,1 +80002f70: 00000013 nop +80002f74: 00e00113 li sp,14 +80002f78: 00000013 nop +80002f7c: 00209f33 sll t5,ra,sp +80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f84: 00200293 li t0,2 +80002f88: fe5212e3 bne tp,t0,80002f6c +80002f8c: 00004eb7 lui t4,0x4 +80002f90: 02000193 li gp,32 +80002f94: 19df1e63 bne t5,t4,80003130 + +80002f98 : +80002f98: 00000213 li tp,0 +80002f9c: 00100093 li ra,1 +80002fa0: 00000013 nop +80002fa4: 00000013 nop +80002fa8: 01f00113 li sp,31 +80002fac: 00209f33 sll t5,ra,sp +80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fb4: 00200293 li t0,2 +80002fb8: fe5212e3 bne tp,t0,80002f9c +80002fbc: 80000eb7 lui t4,0x80000 +80002fc0: 02100193 li gp,33 +80002fc4: 17df1663 bne t5,t4,80003130 + +80002fc8 : +80002fc8: 00000213 li tp,0 +80002fcc: 00700113 li sp,7 +80002fd0: 00100093 li ra,1 +80002fd4: 00209f33 sll t5,ra,sp +80002fd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fdc: 00200293 li t0,2 +80002fe0: fe5216e3 bne tp,t0,80002fcc +80002fe4: 08000e93 li t4,128 +80002fe8: 02200193 li gp,34 +80002fec: 15df1263 bne t5,t4,80003130 + +80002ff0 : +80002ff0: 00000213 li tp,0 +80002ff4: 00e00113 li sp,14 +80002ff8: 00100093 li ra,1 +80002ffc: 00000013 nop +80003000: 00209f33 sll t5,ra,sp +80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003008: 00200293 li t0,2 +8000300c: fe5214e3 bne tp,t0,80002ff4 +80003010: 00004eb7 lui t4,0x4 +80003014: 02300193 li gp,35 +80003018: 11df1c63 bne t5,t4,80003130 + +8000301c : +8000301c: 00000213 li tp,0 +80003020: 01f00113 li sp,31 +80003024: 00100093 li ra,1 +80003028: 00000013 nop +8000302c: 00000013 nop +80003030: 00209f33 sll t5,ra,sp +80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003038: 00200293 li t0,2 +8000303c: fe5212e3 bne tp,t0,80003020 +80003040: 80000eb7 lui t4,0x80000 +80003044: 02400193 li gp,36 +80003048: 0fdf1463 bne t5,t4,80003130 + +8000304c : +8000304c: 00000213 li tp,0 +80003050: 00700113 li sp,7 +80003054: 00000013 nop +80003058: 00100093 li ra,1 +8000305c: 00209f33 sll t5,ra,sp +80003060: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003064: 00200293 li t0,2 +80003068: fe5214e3 bne tp,t0,80003050 +8000306c: 08000e93 li t4,128 +80003070: 02500193 li gp,37 +80003074: 0bdf1e63 bne t5,t4,80003130 + +80003078 : +80003078: 00000213 li tp,0 +8000307c: 00e00113 li sp,14 +80003080: 00000013 nop +80003084: 00100093 li ra,1 +80003088: 00000013 nop +8000308c: 00209f33 sll t5,ra,sp +80003090: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003094: 00200293 li t0,2 +80003098: fe5212e3 bne tp,t0,8000307c +8000309c: 00004eb7 lui t4,0x4 +800030a0: 02600193 li gp,38 +800030a4: 09df1663 bne t5,t4,80003130 + +800030a8 : +800030a8: 00000213 li tp,0 +800030ac: 01f00113 li sp,31 +800030b0: 00000013 nop +800030b4: 00000013 nop +800030b8: 00100093 li ra,1 +800030bc: 00209f33 sll t5,ra,sp +800030c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800030c4: 00200293 li t0,2 +800030c8: fe5212e3 bne tp,t0,800030ac +800030cc: 80000eb7 lui t4,0x80000 +800030d0: 02700193 li gp,39 +800030d4: 05df1e63 bne t5,t4,80003130 + +800030d8 : +800030d8: 00f00093 li ra,15 +800030dc: 00101133 sll sp,zero,ra +800030e0: 00000e93 li t4,0 +800030e4: 02800193 li gp,40 +800030e8: 05d11463 bne sp,t4,80003130 + +800030ec : +800030ec: 02000093 li ra,32 +800030f0: 00009133 sll sp,ra,zero +800030f4: 02000e93 li t4,32 +800030f8: 02900193 li gp,41 +800030fc: 03d11a63 bne sp,t4,80003130 + +80003100 : +80003100: 000010b3 sll ra,zero,zero +80003104: 00000e93 li t4,0 +80003108: 02a00193 li gp,42 +8000310c: 03d09263 bne ra,t4,80003130 + +80003110 : +80003110: 40000093 li ra,1024 +80003114: 00001137 lui sp,0x1 +80003118: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> +8000311c: 00209033 sll zero,ra,sp +80003120: 00000e93 li t4,0 +80003124: 02b00193 li gp,43 +80003128: 01d01463 bne zero,t4,80003130 +8000312c: 00301a63 bne zero,gp,80003140 + +80003130 : +80003130: 00119513 slli a0,gp,0x1 +80003134: 00050063 beqz a0,80003134 +80003138: 00156513 ori a0,a0,1 +8000313c: 00000073 ecall + +80003140 : +80003140: 00100513 li a0,1 +80003144: 00000073 ecall +80003148: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-slli b/Tests/isa/rv32ui-v-slli new file mode 100644 index 0000000..67187ac Binary files /dev/null and b/Tests/isa/rv32ui-v-slli differ diff --git a/Tests/isa/rv32ui-v-slli.dump b/Tests/isa/rv32ui-v-slli.dump new file mode 100644 index 0000000..d1abf8b --- /dev/null +++ b/Tests/isa/rv32ui-v-slli.dump @@ -0,0 +1,1117 @@ + +rv32ui-v-slli: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9b858593 addi a1,a1,-1608 # 80002e80 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9d458593 addi a1,a1,-1580 # 80002f0c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 98058593 addi a1,a1,-1664 # 80002f24 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8b458593 addi a1,a1,-1868 # 80002ec4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8a458593 addi a1,a1,-1884 # 80002fec +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 80c58593 addi a1,a1,-2036 # 80002fc8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 70860613 addi a2,a2,1800 # 80003018 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 61860613 addi a2,a2,1560 # 80002f94 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 59860613 addi a2,a2,1432 # 80002f60 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00e00793 li a5,14 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0fdfb7b7 lui a5,0xfdfb +80002b9c: 00080637 lui a2,0x80 +80002ba0: 47878793 addi a5,a5,1144 # fdfb478 <_start-0x70204b88> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00100093 li ra,1 +80002be4: 00009f13 slli t5,ra,0x0 +80002be8: 00100e93 li t4,1 +80002bec: 00200193 li gp,2 +80002bf0: 27df1a63 bne t5,t4,80002e64 + +80002bf4 : +80002bf4: 00100093 li ra,1 +80002bf8: 00109f13 slli t5,ra,0x1 +80002bfc: 00200e93 li t4,2 +80002c00: 00300193 li gp,3 +80002c04: 27df1063 bne t5,t4,80002e64 + +80002c08 : +80002c08: 00100093 li ra,1 +80002c0c: 00709f13 slli t5,ra,0x7 +80002c10: 08000e93 li t4,128 +80002c14: 00400193 li gp,4 +80002c18: 25df1663 bne t5,t4,80002e64 + +80002c1c : +80002c1c: 00100093 li ra,1 +80002c20: 00e09f13 slli t5,ra,0xe +80002c24: 00004eb7 lui t4,0x4 +80002c28: 00500193 li gp,5 +80002c2c: 23df1c63 bne t5,t4,80002e64 + +80002c30 : +80002c30: 00100093 li ra,1 +80002c34: 01f09f13 slli t5,ra,0x1f +80002c38: 80000eb7 lui t4,0x80000 +80002c3c: 00600193 li gp,6 +80002c40: 23df1263 bne t5,t4,80002e64 + +80002c44 : +80002c44: fff00093 li ra,-1 +80002c48: 00009f13 slli t5,ra,0x0 +80002c4c: fff00e93 li t4,-1 +80002c50: 00700193 li gp,7 +80002c54: 21df1863 bne t5,t4,80002e64 + +80002c58 : +80002c58: fff00093 li ra,-1 +80002c5c: 00109f13 slli t5,ra,0x1 +80002c60: ffe00e93 li t4,-2 +80002c64: 00800193 li gp,8 +80002c68: 1fdf1e63 bne t5,t4,80002e64 + +80002c6c : +80002c6c: fff00093 li ra,-1 +80002c70: 00709f13 slli t5,ra,0x7 +80002c74: f8000e93 li t4,-128 +80002c78: 00900193 li gp,9 +80002c7c: 1fdf1463 bne t5,t4,80002e64 + +80002c80 : +80002c80: fff00093 li ra,-1 +80002c84: 00e09f13 slli t5,ra,0xe +80002c88: ffffceb7 lui t4,0xffffc +80002c8c: 00a00193 li gp,10 +80002c90: 1ddf1a63 bne t5,t4,80002e64 + +80002c94 : +80002c94: fff00093 li ra,-1 +80002c98: 01f09f13 slli t5,ra,0x1f +80002c9c: 80000eb7 lui t4,0x80000 +80002ca0: 00b00193 li gp,11 +80002ca4: 1ddf1063 bne t5,t4,80002e64 + +80002ca8 : +80002ca8: 212120b7 lui ra,0x21212 +80002cac: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002cb0: 00009f13 slli t5,ra,0x0 +80002cb4: 21212eb7 lui t4,0x21212 +80002cb8: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80002cbc: 00c00193 li gp,12 +80002cc0: 1bdf1263 bne t5,t4,80002e64 + +80002cc4 : +80002cc4: 212120b7 lui ra,0x21212 +80002cc8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002ccc: 00109f13 slli t5,ra,0x1 +80002cd0: 42424eb7 lui t4,0x42424 +80002cd4: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe> +80002cd8: 00d00193 li gp,13 +80002cdc: 19df1463 bne t5,t4,80002e64 + +80002ce0 : +80002ce0: 212120b7 lui ra,0x21212 +80002ce4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002ce8: 00709f13 slli t5,ra,0x7 +80002cec: 90909eb7 lui t4,0x90909 +80002cf0: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10902c88> +80002cf4: 00e00193 li gp,14 +80002cf8: 17df1663 bne t5,t4,80002e64 + +80002cfc : +80002cfc: 212120b7 lui ra,0x21212 +80002d00: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d04: 00e09f13 slli t5,ra,0xe +80002d08: 48484eb7 lui t4,0x48484 +80002d0c: 00f00193 li gp,15 +80002d10: 15df1a63 bne t5,t4,80002e64 + +80002d14 : +80002d14: 212120b7 lui ra,0x21212 +80002d18: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d1c: 01f09f13 slli t5,ra,0x1f +80002d20: 80000eb7 lui t4,0x80000 +80002d24: 01000193 li gp,16 +80002d28: 13df1e63 bne t5,t4,80002e64 + +80002d2c : +80002d2c: 00100093 li ra,1 +80002d30: 00709093 slli ra,ra,0x7 +80002d34: 08000e93 li t4,128 +80002d38: 01100193 li gp,17 +80002d3c: 13d09463 bne ra,t4,80002e64 + +80002d40 : +80002d40: 00000213 li tp,0 +80002d44: 00100093 li ra,1 +80002d48: 00709f13 slli t5,ra,0x7 +80002d4c: 000f0313 mv t1,t5 +80002d50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d54: 00200293 li t0,2 +80002d58: fe5216e3 bne tp,t0,80002d44 +80002d5c: 08000e93 li t4,128 +80002d60: 01200193 li gp,18 +80002d64: 11d31063 bne t1,t4,80002e64 + +80002d68 : +80002d68: 00000213 li tp,0 +80002d6c: 00100093 li ra,1 +80002d70: 00e09f13 slli t5,ra,0xe +80002d74: 00000013 nop +80002d78: 000f0313 mv t1,t5 +80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d80: 00200293 li t0,2 +80002d84: fe5214e3 bne tp,t0,80002d6c +80002d88: 00004eb7 lui t4,0x4 +80002d8c: 01300193 li gp,19 +80002d90: 0dd31a63 bne t1,t4,80002e64 + +80002d94 : +80002d94: 00000213 li tp,0 +80002d98: 00100093 li ra,1 +80002d9c: 01f09f13 slli t5,ra,0x1f +80002da0: 00000013 nop +80002da4: 00000013 nop +80002da8: 000f0313 mv t1,t5 +80002dac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db0: 00200293 li t0,2 +80002db4: fe5212e3 bne tp,t0,80002d98 +80002db8: 80000eb7 lui t4,0x80000 +80002dbc: 01400193 li gp,20 +80002dc0: 0bd31263 bne t1,t4,80002e64 + +80002dc4 : +80002dc4: 00000213 li tp,0 +80002dc8: 00100093 li ra,1 +80002dcc: 00709f13 slli t5,ra,0x7 +80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd4: 00200293 li t0,2 +80002dd8: fe5218e3 bne tp,t0,80002dc8 +80002ddc: 08000e93 li t4,128 +80002de0: 01500193 li gp,21 +80002de4: 09df1063 bne t5,t4,80002e64 + +80002de8 : +80002de8: 00000213 li tp,0 +80002dec: 00100093 li ra,1 +80002df0: 00000013 nop +80002df4: 00e09f13 slli t5,ra,0xe +80002df8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dfc: 00200293 li t0,2 +80002e00: fe5216e3 bne tp,t0,80002dec +80002e04: 00004eb7 lui t4,0x4 +80002e08: 01600193 li gp,22 +80002e0c: 05df1c63 bne t5,t4,80002e64 + +80002e10 : +80002e10: 00000213 li tp,0 +80002e14: 00100093 li ra,1 +80002e18: 00000013 nop +80002e1c: 00000013 nop +80002e20: 01f09f13 slli t5,ra,0x1f +80002e24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e28: 00200293 li t0,2 +80002e2c: fe5214e3 bne tp,t0,80002e14 +80002e30: 80000eb7 lui t4,0x80000 +80002e34: 01700193 li gp,23 +80002e38: 03df1663 bne t5,t4,80002e64 + +80002e3c : +80002e3c: 01f01093 slli ra,zero,0x1f +80002e40: 00000e93 li t4,0 +80002e44: 01800193 li gp,24 +80002e48: 01d09e63 bne ra,t4,80002e64 + +80002e4c : +80002e4c: 02100093 li ra,33 +80002e50: 01409013 slli zero,ra,0x14 +80002e54: 00000e93 li t4,0 +80002e58: 01900193 li gp,25 +80002e5c: 01d01463 bne zero,t4,80002e64 +80002e60: 00301a63 bne zero,gp,80002e74 + +80002e64 : +80002e64: 00119513 slli a0,gp,0x1 +80002e68: 00050063 beqz a0,80002e68 +80002e6c: 00156513 ori a0,a0,1 +80002e70: 00000073 ecall + +80002e74 : +80002e74: 00100513 li a0,1 +80002e78: 00000073 ecall +80002e7c: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-slt b/Tests/isa/rv32ui-v-slt new file mode 100644 index 0000000..6ce29c5 Binary files /dev/null and b/Tests/isa/rv32ui-v-slt differ diff --git a/Tests/isa/rv32ui-v-slt.dump b/Tests/isa/rv32ui-v-slt.dump new file mode 100644 index 0000000..307431a --- /dev/null +++ b/Tests/isa/rv32ui-v-slt.dump @@ -0,0 +1,1288 @@ + +rv32ui-v-slt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1858593 addi a1,a1,-1000 # 80003150 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bc458593 addi a1,a1,-1084 # 80003168 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af858593 addi a1,a1,-1288 # 80003108 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae858593 addi a1,a1,-1304 # 80003230 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a5058593 addi a1,a1,-1456 # 8000320c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94c60613 addi a2,a2,-1716 # 8000325c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85c60613 addi a2,a2,-1956 # 800031d8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00900793 li a5,9 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0e44a7b7 lui a5,0xe44a +80002b9c: 00080637 lui a2,0x80 +80002ba0: 29478793 addi a5,a5,660 # e44a294 <_start-0x71bb5d6c> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00000113 li sp,0 +80002be8: 0020af33 slt t5,ra,sp +80002bec: 00000e93 li t4,0 +80002bf0: 00200193 li gp,2 +80002bf4: 4bdf1a63 bne t5,t4,800030a8 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 0020af33 slt t5,ra,sp +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 49df1e63 bne t5,t4,800030a8 + +80002c10 : +80002c10: 00300093 li ra,3 +80002c14: 00700113 li sp,7 +80002c18: 0020af33 slt t5,ra,sp +80002c1c: 00100e93 li t4,1 +80002c20: 00400193 li gp,4 +80002c24: 49df1263 bne t5,t4,800030a8 + +80002c28 : +80002c28: 00700093 li ra,7 +80002c2c: 00300113 li sp,3 +80002c30: 0020af33 slt t5,ra,sp +80002c34: 00000e93 li t4,0 +80002c38: 00500193 li gp,5 +80002c3c: 47df1663 bne t5,t4,800030a8 + +80002c40 : +80002c40: 00000093 li ra,0 +80002c44: ffff8137 lui sp,0xffff8 +80002c48: 0020af33 slt t5,ra,sp +80002c4c: 00000e93 li t4,0 +80002c50: 00600193 li gp,6 +80002c54: 45df1a63 bne t5,t4,800030a8 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: 00000113 li sp,0 +80002c60: 0020af33 slt t5,ra,sp +80002c64: 00100e93 li t4,1 +80002c68: 00700193 li gp,7 +80002c6c: 43df1e63 bne t5,t4,800030a8 + +80002c70 : +80002c70: 800000b7 lui ra,0x80000 +80002c74: ffff8137 lui sp,0xffff8 +80002c78: 0020af33 slt t5,ra,sp +80002c7c: 00100e93 li t4,1 +80002c80: 00800193 li gp,8 +80002c84: 43df1263 bne t5,t4,800030a8 + +80002c88 : +80002c88: 00000093 li ra,0 +80002c8c: 00008137 lui sp,0x8 +80002c90: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002c94: 0020af33 slt t5,ra,sp +80002c98: 00100e93 li t4,1 +80002c9c: 00900193 li gp,9 +80002ca0: 41df1463 bne t5,t4,800030a8 + +80002ca4 : +80002ca4: 800000b7 lui ra,0x80000 +80002ca8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cac: 00000113 li sp,0 +80002cb0: 0020af33 slt t5,ra,sp +80002cb4: 00000e93 li t4,0 +80002cb8: 00a00193 li gp,10 +80002cbc: 3fdf1663 bne t5,t4,800030a8 + +80002cc0 : +80002cc0: 800000b7 lui ra,0x80000 +80002cc4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cc8: 00008137 lui sp,0x8 +80002ccc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002cd0: 0020af33 slt t5,ra,sp +80002cd4: 00000e93 li t4,0 +80002cd8: 00b00193 li gp,11 +80002cdc: 3ddf1663 bne t5,t4,800030a8 + +80002ce0 : +80002ce0: 800000b7 lui ra,0x80000 +80002ce4: 00008137 lui sp,0x8 +80002ce8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002cec: 0020af33 slt t5,ra,sp +80002cf0: 00100e93 li t4,1 +80002cf4: 00c00193 li gp,12 +80002cf8: 3bdf1863 bne t5,t4,800030a8 + +80002cfc : +80002cfc: 800000b7 lui ra,0x80000 +80002d00: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002d04: ffff8137 lui sp,0xffff8 +80002d08: 0020af33 slt t5,ra,sp +80002d0c: 00000e93 li t4,0 +80002d10: 00d00193 li gp,13 +80002d14: 39df1a63 bne t5,t4,800030a8 + +80002d18 : +80002d18: 00000093 li ra,0 +80002d1c: fff00113 li sp,-1 +80002d20: 0020af33 slt t5,ra,sp +80002d24: 00000e93 li t4,0 +80002d28: 00e00193 li gp,14 +80002d2c: 37df1e63 bne t5,t4,800030a8 + +80002d30 : +80002d30: fff00093 li ra,-1 +80002d34: 00100113 li sp,1 +80002d38: 0020af33 slt t5,ra,sp +80002d3c: 00100e93 li t4,1 +80002d40: 00f00193 li gp,15 +80002d44: 37df1263 bne t5,t4,800030a8 + +80002d48 : +80002d48: fff00093 li ra,-1 +80002d4c: fff00113 li sp,-1 +80002d50: 0020af33 slt t5,ra,sp +80002d54: 00000e93 li t4,0 +80002d58: 01000193 li gp,16 +80002d5c: 35df1663 bne t5,t4,800030a8 + +80002d60 : +80002d60: 00e00093 li ra,14 +80002d64: 00d00113 li sp,13 +80002d68: 0020a0b3 slt ra,ra,sp +80002d6c: 00000e93 li t4,0 +80002d70: 01100193 li gp,17 +80002d74: 33d09a63 bne ra,t4,800030a8 + +80002d78 : +80002d78: 00b00093 li ra,11 +80002d7c: 00d00113 li sp,13 +80002d80: 0020a133 slt sp,ra,sp +80002d84: 00100e93 li t4,1 +80002d88: 01200193 li gp,18 +80002d8c: 31d11e63 bne sp,t4,800030a8 + +80002d90 : +80002d90: 00d00093 li ra,13 +80002d94: 0010a0b3 slt ra,ra,ra +80002d98: 00000e93 li t4,0 +80002d9c: 01300193 li gp,19 +80002da0: 31d09463 bne ra,t4,800030a8 + +80002da4 : +80002da4: 00000213 li tp,0 +80002da8: 00b00093 li ra,11 +80002dac: 00d00113 li sp,13 +80002db0: 0020af33 slt t5,ra,sp +80002db4: 000f0313 mv t1,t5 +80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dbc: 00200293 li t0,2 +80002dc0: fe5214e3 bne tp,t0,80002da8 +80002dc4: 00100e93 li t4,1 +80002dc8: 01400193 li gp,20 +80002dcc: 2dd31e63 bne t1,t4,800030a8 + +80002dd0 : +80002dd0: 00000213 li tp,0 +80002dd4: 00e00093 li ra,14 +80002dd8: 00d00113 li sp,13 +80002ddc: 0020af33 slt t5,ra,sp +80002de0: 00000013 nop +80002de4: 000f0313 mv t1,t5 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fe5212e3 bne tp,t0,80002dd4 +80002df4: 00000e93 li t4,0 +80002df8: 01500193 li gp,21 +80002dfc: 2bd31663 bne t1,t4,800030a8 + +80002e00 : +80002e00: 00000213 li tp,0 +80002e04: 00c00093 li ra,12 +80002e08: 00d00113 li sp,13 +80002e0c: 0020af33 slt t5,ra,sp +80002e10: 00000013 nop +80002e14: 00000013 nop +80002e18: 000f0313 mv t1,t5 +80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e20: 00200293 li t0,2 +80002e24: fe5210e3 bne tp,t0,80002e04 +80002e28: 00100e93 li t4,1 +80002e2c: 01600193 li gp,22 +80002e30: 27d31c63 bne t1,t4,800030a8 + +80002e34 : +80002e34: 00000213 li tp,0 +80002e38: 00e00093 li ra,14 +80002e3c: 00d00113 li sp,13 +80002e40: 0020af33 slt t5,ra,sp +80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e48: 00200293 li t0,2 +80002e4c: fe5216e3 bne tp,t0,80002e38 +80002e50: 00000e93 li t4,0 +80002e54: 01700193 li gp,23 +80002e58: 25df1863 bne t5,t4,800030a8 + +80002e5c : +80002e5c: 00000213 li tp,0 +80002e60: 00b00093 li ra,11 +80002e64: 00d00113 li sp,13 +80002e68: 00000013 nop +80002e6c: 0020af33 slt t5,ra,sp +80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e74: 00200293 li t0,2 +80002e78: fe5214e3 bne tp,t0,80002e60 +80002e7c: 00100e93 li t4,1 +80002e80: 01800193 li gp,24 +80002e84: 23df1263 bne t5,t4,800030a8 + +80002e88 : +80002e88: 00000213 li tp,0 +80002e8c: 00f00093 li ra,15 +80002e90: 00d00113 li sp,13 +80002e94: 00000013 nop +80002e98: 00000013 nop +80002e9c: 0020af33 slt t5,ra,sp +80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea4: 00200293 li t0,2 +80002ea8: fe5212e3 bne tp,t0,80002e8c +80002eac: 00000e93 li t4,0 +80002eb0: 01900193 li gp,25 +80002eb4: 1fdf1a63 bne t5,t4,800030a8 + +80002eb8 : +80002eb8: 00000213 li tp,0 +80002ebc: 00a00093 li ra,10 +80002ec0: 00000013 nop +80002ec4: 00d00113 li sp,13 +80002ec8: 0020af33 slt t5,ra,sp +80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ed0: 00200293 li t0,2 +80002ed4: fe5214e3 bne tp,t0,80002ebc +80002ed8: 00100e93 li t4,1 +80002edc: 01a00193 li gp,26 +80002ee0: 1ddf1463 bne t5,t4,800030a8 + +80002ee4 : +80002ee4: 00000213 li tp,0 +80002ee8: 01000093 li ra,16 +80002eec: 00000013 nop +80002ef0: 00d00113 li sp,13 +80002ef4: 00000013 nop +80002ef8: 0020af33 slt t5,ra,sp +80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f00: 00200293 li t0,2 +80002f04: fe5212e3 bne tp,t0,80002ee8 +80002f08: 00000e93 li t4,0 +80002f0c: 01b00193 li gp,27 +80002f10: 19df1c63 bne t5,t4,800030a8 + +80002f14 : +80002f14: 00000213 li tp,0 +80002f18: 00900093 li ra,9 +80002f1c: 00000013 nop +80002f20: 00000013 nop +80002f24: 00d00113 li sp,13 +80002f28: 0020af33 slt t5,ra,sp +80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f30: 00200293 li t0,2 +80002f34: fe5212e3 bne tp,t0,80002f18 +80002f38: 00100e93 li t4,1 +80002f3c: 01c00193 li gp,28 +80002f40: 17df1463 bne t5,t4,800030a8 + +80002f44 : +80002f44: 00000213 li tp,0 +80002f48: 00d00113 li sp,13 +80002f4c: 01100093 li ra,17 +80002f50: 0020af33 slt t5,ra,sp +80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f58: 00200293 li t0,2 +80002f5c: fe5216e3 bne tp,t0,80002f48 +80002f60: 00000e93 li t4,0 +80002f64: 01d00193 li gp,29 +80002f68: 15df1063 bne t5,t4,800030a8 + +80002f6c : +80002f6c: 00000213 li tp,0 +80002f70: 00d00113 li sp,13 +80002f74: 00800093 li ra,8 +80002f78: 00000013 nop +80002f7c: 0020af33 slt t5,ra,sp +80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f84: 00200293 li t0,2 +80002f88: fe5214e3 bne tp,t0,80002f70 +80002f8c: 00100e93 li t4,1 +80002f90: 01e00193 li gp,30 +80002f94: 11df1a63 bne t5,t4,800030a8 + +80002f98 : +80002f98: 00000213 li tp,0 +80002f9c: 00d00113 li sp,13 +80002fa0: 01200093 li ra,18 +80002fa4: 00000013 nop +80002fa8: 00000013 nop +80002fac: 0020af33 slt t5,ra,sp +80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fb4: 00200293 li t0,2 +80002fb8: fe5212e3 bne tp,t0,80002f9c +80002fbc: 00000e93 li t4,0 +80002fc0: 01f00193 li gp,31 +80002fc4: 0fdf1263 bne t5,t4,800030a8 + +80002fc8 : +80002fc8: 00000213 li tp,0 +80002fcc: 00d00113 li sp,13 +80002fd0: 00000013 nop +80002fd4: 00700093 li ra,7 +80002fd8: 0020af33 slt t5,ra,sp +80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fe0: 00200293 li t0,2 +80002fe4: fe5214e3 bne tp,t0,80002fcc +80002fe8: 00100e93 li t4,1 +80002fec: 02000193 li gp,32 +80002ff0: 0bdf1c63 bne t5,t4,800030a8 + +80002ff4 : +80002ff4: 00000213 li tp,0 +80002ff8: 00d00113 li sp,13 +80002ffc: 00000013 nop +80003000: 01300093 li ra,19 +80003004: 00000013 nop +80003008: 0020af33 slt t5,ra,sp +8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003010: 00200293 li t0,2 +80003014: fe5212e3 bne tp,t0,80002ff8 +80003018: 00000e93 li t4,0 +8000301c: 02100193 li gp,33 +80003020: 09df1463 bne t5,t4,800030a8 + +80003024 : +80003024: 00000213 li tp,0 +80003028: 00d00113 li sp,13 +8000302c: 00000013 nop +80003030: 00000013 nop +80003034: 00600093 li ra,6 +80003038: 0020af33 slt t5,ra,sp +8000303c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003040: 00200293 li t0,2 +80003044: fe5212e3 bne tp,t0,80003028 +80003048: 00100e93 li t4,1 +8000304c: 02200193 li gp,34 +80003050: 05df1c63 bne t5,t4,800030a8 + +80003054 : +80003054: fff00093 li ra,-1 +80003058: 00102133 sgtz sp,ra +8000305c: 00000e93 li t4,0 +80003060: 02300193 li gp,35 +80003064: 05d11263 bne sp,t4,800030a8 + +80003068 : +80003068: fff00093 li ra,-1 +8000306c: 0000a133 sltz sp,ra +80003070: 00100e93 li t4,1 +80003074: 02400193 li gp,36 +80003078: 03d11863 bne sp,t4,800030a8 + +8000307c : +8000307c: 000020b3 sltz ra,zero +80003080: 00000e93 li t4,0 +80003084: 02500193 li gp,37 +80003088: 03d09063 bne ra,t4,800030a8 + +8000308c : +8000308c: 01000093 li ra,16 +80003090: 01e00113 li sp,30 +80003094: 0020a033 slt zero,ra,sp +80003098: 00000e93 li t4,0 +8000309c: 02600193 li gp,38 +800030a0: 01d01463 bne zero,t4,800030a8 +800030a4: 00301a63 bne zero,gp,800030b8 + +800030a8 : +800030a8: 00119513 slli a0,gp,0x1 +800030ac: 00050063 beqz a0,800030ac +800030b0: 00156513 ori a0,a0,1 +800030b4: 00000073 ecall + +800030b8 : +800030b8: 00100513 li a0,1 +800030bc: 00000073 ecall +800030c0: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-slti b/Tests/isa/rv32ui-v-slti new file mode 100644 index 0000000..62631c2 Binary files /dev/null and b/Tests/isa/rv32ui-v-slti differ diff --git a/Tests/isa/rv32ui-v-slti.dump b/Tests/isa/rv32ui-v-slti.dump new file mode 100644 index 0000000..3115595 --- /dev/null +++ b/Tests/isa/rv32ui-v-slti.dump @@ -0,0 +1,1113 @@ + +rv32ui-v-slti: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9a858593 addi a1,a1,-1624 # 80002e70 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9c458593 addi a1,a1,-1596 # 80002efc +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 97058593 addi a1,a1,-1680 # 80002f14 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8a458593 addi a1,a1,-1884 # 80002eb4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 89458593 addi a1,a1,-1900 # 80002fdc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 7fc58593 addi a1,a1,2044 # 80002fb8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 6f860613 addi a2,a2,1784 # 80003008 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 60860613 addi a2,a2,1544 # 80002f84 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 58860613 addi a2,a2,1416 # 80002f50 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00800793 li a5,8 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0ff6d7b7 lui a5,0xff6d +80002b9c: 00080637 lui a2,0x80 +80002ba0: d5778793 addi a5,a5,-681 # ff6cd57 <_start-0x700932a9> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 0000af13 slti t5,ra,0 +80002be8: 00000e93 li t4,0 +80002bec: 00200193 li gp,2 +80002bf0: 27df1263 bne t5,t4,80002e54 + +80002bf4 : +80002bf4: 00100093 li ra,1 +80002bf8: 0010af13 slti t5,ra,1 +80002bfc: 00000e93 li t4,0 +80002c00: 00300193 li gp,3 +80002c04: 25df1863 bne t5,t4,80002e54 + +80002c08 : +80002c08: 00300093 li ra,3 +80002c0c: 0070af13 slti t5,ra,7 +80002c10: 00100e93 li t4,1 +80002c14: 00400193 li gp,4 +80002c18: 23df1e63 bne t5,t4,80002e54 + +80002c1c : +80002c1c: 00700093 li ra,7 +80002c20: 0030af13 slti t5,ra,3 +80002c24: 00000e93 li t4,0 +80002c28: 00500193 li gp,5 +80002c2c: 23df1463 bne t5,t4,80002e54 + +80002c30 : +80002c30: 00000093 li ra,0 +80002c34: 8000af13 slti t5,ra,-2048 +80002c38: 00000e93 li t4,0 +80002c3c: 00600193 li gp,6 +80002c40: 21df1a63 bne t5,t4,80002e54 + +80002c44 : +80002c44: 800000b7 lui ra,0x80000 +80002c48: 0000af13 slti t5,ra,0 +80002c4c: 00100e93 li t4,1 +80002c50: 00700193 li gp,7 +80002c54: 21df1063 bne t5,t4,80002e54 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: 8000af13 slti t5,ra,-2048 +80002c60: 00100e93 li t4,1 +80002c64: 00800193 li gp,8 +80002c68: 1fdf1663 bne t5,t4,80002e54 + +80002c6c : +80002c6c: 00000093 li ra,0 +80002c70: 7ff0af13 slti t5,ra,2047 +80002c74: 00100e93 li t4,1 +80002c78: 00900193 li gp,9 +80002c7c: 1ddf1c63 bne t5,t4,80002e54 + +80002c80 : +80002c80: 800000b7 lui ra,0x80000 +80002c84: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c88: 0000af13 slti t5,ra,0 +80002c8c: 00000e93 li t4,0 +80002c90: 00a00193 li gp,10 +80002c94: 1ddf1063 bne t5,t4,80002e54 + +80002c98 : +80002c98: 800000b7 lui ra,0x80000 +80002c9c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002ca0: 7ff0af13 slti t5,ra,2047 +80002ca4: 00000e93 li t4,0 +80002ca8: 00b00193 li gp,11 +80002cac: 1bdf1463 bne t5,t4,80002e54 + +80002cb0 : +80002cb0: 800000b7 lui ra,0x80000 +80002cb4: 7ff0af13 slti t5,ra,2047 +80002cb8: 00100e93 li t4,1 +80002cbc: 00c00193 li gp,12 +80002cc0: 19df1a63 bne t5,t4,80002e54 + +80002cc4 : +80002cc4: 800000b7 lui ra,0x80000 +80002cc8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002ccc: 8000af13 slti t5,ra,-2048 +80002cd0: 00000e93 li t4,0 +80002cd4: 00d00193 li gp,13 +80002cd8: 17df1e63 bne t5,t4,80002e54 + +80002cdc : +80002cdc: 00000093 li ra,0 +80002ce0: fff0af13 slti t5,ra,-1 +80002ce4: 00000e93 li t4,0 +80002ce8: 00e00193 li gp,14 +80002cec: 17df1463 bne t5,t4,80002e54 + +80002cf0 : +80002cf0: fff00093 li ra,-1 +80002cf4: 0010af13 slti t5,ra,1 +80002cf8: 00100e93 li t4,1 +80002cfc: 00f00193 li gp,15 +80002d00: 15df1a63 bne t5,t4,80002e54 + +80002d04 : +80002d04: fff00093 li ra,-1 +80002d08: fff0af13 slti t5,ra,-1 +80002d0c: 00000e93 li t4,0 +80002d10: 01000193 li gp,16 +80002d14: 15df1063 bne t5,t4,80002e54 + +80002d18 : +80002d18: 00b00093 li ra,11 +80002d1c: 00d0a093 slti ra,ra,13 +80002d20: 00100e93 li t4,1 +80002d24: 01100193 li gp,17 +80002d28: 13d09663 bne ra,t4,80002e54 + +80002d2c : +80002d2c: 00000213 li tp,0 +80002d30: 00f00093 li ra,15 +80002d34: 00a0af13 slti t5,ra,10 +80002d38: 000f0313 mv t1,t5 +80002d3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d40: 00200293 li t0,2 +80002d44: fe5216e3 bne tp,t0,80002d30 +80002d48: 00000e93 li t4,0 +80002d4c: 01200193 li gp,18 +80002d50: 11d31263 bne t1,t4,80002e54 + +80002d54 : +80002d54: 00000213 li tp,0 +80002d58: 00a00093 li ra,10 +80002d5c: 0100af13 slti t5,ra,16 +80002d60: 00000013 nop +80002d64: 000f0313 mv t1,t5 +80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d6c: 00200293 li t0,2 +80002d70: fe5214e3 bne tp,t0,80002d58 +80002d74: 00100e93 li t4,1 +80002d78: 01300193 li gp,19 +80002d7c: 0dd31c63 bne t1,t4,80002e54 + +80002d80 : +80002d80: 00000213 li tp,0 +80002d84: 01000093 li ra,16 +80002d88: 0090af13 slti t5,ra,9 +80002d8c: 00000013 nop +80002d90: 00000013 nop +80002d94: 000f0313 mv t1,t5 +80002d98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d9c: 00200293 li t0,2 +80002da0: fe5212e3 bne tp,t0,80002d84 +80002da4: 00000e93 li t4,0 +80002da8: 01400193 li gp,20 +80002dac: 0bd31463 bne t1,t4,80002e54 + +80002db0 : +80002db0: 00000213 li tp,0 +80002db4: 00b00093 li ra,11 +80002db8: 00f0af13 slti t5,ra,15 +80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dc0: 00200293 li t0,2 +80002dc4: fe5218e3 bne tp,t0,80002db4 +80002dc8: 00100e93 li t4,1 +80002dcc: 01500193 li gp,21 +80002dd0: 09df1263 bne t5,t4,80002e54 + +80002dd4 : +80002dd4: 00000213 li tp,0 +80002dd8: 01100093 li ra,17 +80002ddc: 00000013 nop +80002de0: 0080af13 slti t5,ra,8 +80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de8: 00200293 li t0,2 +80002dec: fe5216e3 bne tp,t0,80002dd8 +80002df0: 00000e93 li t4,0 +80002df4: 01600193 li gp,22 +80002df8: 05df1e63 bne t5,t4,80002e54 + +80002dfc : +80002dfc: 00000213 li tp,0 +80002e00: 00c00093 li ra,12 +80002e04: 00000013 nop +80002e08: 00000013 nop +80002e0c: 00e0af13 slti t5,ra,14 +80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e14: 00200293 li t0,2 +80002e18: fe5214e3 bne tp,t0,80002e00 +80002e1c: 00100e93 li t4,1 +80002e20: 01700193 li gp,23 +80002e24: 03df1863 bne t5,t4,80002e54 + +80002e28 : +80002e28: fff02093 slti ra,zero,-1 +80002e2c: 00000e93 li t4,0 +80002e30: 01800193 li gp,24 +80002e34: 03d09063 bne ra,t4,80002e54 + +80002e38 : +80002e38: 00ff00b7 lui ra,0xff0 +80002e3c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002e40: fff0a013 slti zero,ra,-1 +80002e44: 00000e93 li t4,0 +80002e48: 01900193 li gp,25 +80002e4c: 01d01463 bne zero,t4,80002e54 +80002e50: 00301a63 bne zero,gp,80002e64 + +80002e54 : +80002e54: 00119513 slli a0,gp,0x1 +80002e58: 00050063 beqz a0,80002e58 +80002e5c: 00156513 ori a0,a0,1 +80002e60: 00000073 ecall + +80002e64 : +80002e64: 00100513 li a0,1 +80002e68: 00000073 ecall +80002e6c: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-sltiu b/Tests/isa/rv32ui-v-sltiu new file mode 100644 index 0000000..ffc54c5 Binary files /dev/null and b/Tests/isa/rv32ui-v-sltiu differ diff --git a/Tests/isa/rv32ui-v-sltiu.dump b/Tests/isa/rv32ui-v-sltiu.dump new file mode 100644 index 0000000..64b39a6 --- /dev/null +++ b/Tests/isa/rv32ui-v-sltiu.dump @@ -0,0 +1,1113 @@ + +rv32ui-v-sltiu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9a858593 addi a1,a1,-1624 # 80002e70 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9c458593 addi a1,a1,-1596 # 80002efc +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 97058593 addi a1,a1,-1680 # 80002f14 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8a458593 addi a1,a1,-1884 # 80002eb4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 89458593 addi a1,a1,-1900 # 80002fdc +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 7fc58593 addi a1,a1,2044 # 80002fb8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 6f860613 addi a2,a2,1784 # 80003008 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 60860613 addi a2,a2,1544 # 80002f84 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 58860613 addi a2,a2,1416 # 80002f50 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01300793 li a5,19 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0603e7b7 lui a5,0x603e +80002b9c: 00080637 lui a2,0x80 +80002ba0: 73078793 addi a5,a5,1840 # 603e730 <_start-0x79fc18d0> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 0000bf13 sltiu t5,ra,0 +80002be8: 00000e93 li t4,0 +80002bec: 00200193 li gp,2 +80002bf0: 27df1263 bne t5,t4,80002e54 + +80002bf4 : +80002bf4: 00100093 li ra,1 +80002bf8: 0010bf13 seqz t5,ra +80002bfc: 00000e93 li t4,0 +80002c00: 00300193 li gp,3 +80002c04: 25df1863 bne t5,t4,80002e54 + +80002c08 : +80002c08: 00300093 li ra,3 +80002c0c: 0070bf13 sltiu t5,ra,7 +80002c10: 00100e93 li t4,1 +80002c14: 00400193 li gp,4 +80002c18: 23df1e63 bne t5,t4,80002e54 + +80002c1c : +80002c1c: 00700093 li ra,7 +80002c20: 0030bf13 sltiu t5,ra,3 +80002c24: 00000e93 li t4,0 +80002c28: 00500193 li gp,5 +80002c2c: 23df1463 bne t5,t4,80002e54 + +80002c30 : +80002c30: 00000093 li ra,0 +80002c34: 8000bf13 sltiu t5,ra,-2048 +80002c38: 00100e93 li t4,1 +80002c3c: 00600193 li gp,6 +80002c40: 21df1a63 bne t5,t4,80002e54 + +80002c44 : +80002c44: 800000b7 lui ra,0x80000 +80002c48: 0000bf13 sltiu t5,ra,0 +80002c4c: 00000e93 li t4,0 +80002c50: 00700193 li gp,7 +80002c54: 21df1063 bne t5,t4,80002e54 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: 8000bf13 sltiu t5,ra,-2048 +80002c60: 00100e93 li t4,1 +80002c64: 00800193 li gp,8 +80002c68: 1fdf1663 bne t5,t4,80002e54 + +80002c6c : +80002c6c: 00000093 li ra,0 +80002c70: 7ff0bf13 sltiu t5,ra,2047 +80002c74: 00100e93 li t4,1 +80002c78: 00900193 li gp,9 +80002c7c: 1ddf1c63 bne t5,t4,80002e54 + +80002c80 : +80002c80: 800000b7 lui ra,0x80000 +80002c84: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c88: 0000bf13 sltiu t5,ra,0 +80002c8c: 00000e93 li t4,0 +80002c90: 00a00193 li gp,10 +80002c94: 1ddf1063 bne t5,t4,80002e54 + +80002c98 : +80002c98: 800000b7 lui ra,0x80000 +80002c9c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002ca0: 7ff0bf13 sltiu t5,ra,2047 +80002ca4: 00000e93 li t4,0 +80002ca8: 00b00193 li gp,11 +80002cac: 1bdf1463 bne t5,t4,80002e54 + +80002cb0 : +80002cb0: 800000b7 lui ra,0x80000 +80002cb4: 7ff0bf13 sltiu t5,ra,2047 +80002cb8: 00000e93 li t4,0 +80002cbc: 00c00193 li gp,12 +80002cc0: 19df1a63 bne t5,t4,80002e54 + +80002cc4 : +80002cc4: 800000b7 lui ra,0x80000 +80002cc8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002ccc: 8000bf13 sltiu t5,ra,-2048 +80002cd0: 00100e93 li t4,1 +80002cd4: 00d00193 li gp,13 +80002cd8: 17df1e63 bne t5,t4,80002e54 + +80002cdc : +80002cdc: 00000093 li ra,0 +80002ce0: fff0bf13 sltiu t5,ra,-1 +80002ce4: 00100e93 li t4,1 +80002ce8: 00e00193 li gp,14 +80002cec: 17df1463 bne t5,t4,80002e54 + +80002cf0 : +80002cf0: fff00093 li ra,-1 +80002cf4: 0010bf13 seqz t5,ra +80002cf8: 00000e93 li t4,0 +80002cfc: 00f00193 li gp,15 +80002d00: 15df1a63 bne t5,t4,80002e54 + +80002d04 : +80002d04: fff00093 li ra,-1 +80002d08: fff0bf13 sltiu t5,ra,-1 +80002d0c: 00000e93 li t4,0 +80002d10: 01000193 li gp,16 +80002d14: 15df1063 bne t5,t4,80002e54 + +80002d18 : +80002d18: 00b00093 li ra,11 +80002d1c: 00d0b093 sltiu ra,ra,13 +80002d20: 00100e93 li t4,1 +80002d24: 01100193 li gp,17 +80002d28: 13d09663 bne ra,t4,80002e54 + +80002d2c : +80002d2c: 00000213 li tp,0 +80002d30: 00f00093 li ra,15 +80002d34: 00a0bf13 sltiu t5,ra,10 +80002d38: 000f0313 mv t1,t5 +80002d3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d40: 00200293 li t0,2 +80002d44: fe5216e3 bne tp,t0,80002d30 +80002d48: 00000e93 li t4,0 +80002d4c: 01200193 li gp,18 +80002d50: 11d31263 bne t1,t4,80002e54 + +80002d54 : +80002d54: 00000213 li tp,0 +80002d58: 00a00093 li ra,10 +80002d5c: 0100bf13 sltiu t5,ra,16 +80002d60: 00000013 nop +80002d64: 000f0313 mv t1,t5 +80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d6c: 00200293 li t0,2 +80002d70: fe5214e3 bne tp,t0,80002d58 +80002d74: 00100e93 li t4,1 +80002d78: 01300193 li gp,19 +80002d7c: 0dd31c63 bne t1,t4,80002e54 + +80002d80 : +80002d80: 00000213 li tp,0 +80002d84: 01000093 li ra,16 +80002d88: 0090bf13 sltiu t5,ra,9 +80002d8c: 00000013 nop +80002d90: 00000013 nop +80002d94: 000f0313 mv t1,t5 +80002d98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d9c: 00200293 li t0,2 +80002da0: fe5212e3 bne tp,t0,80002d84 +80002da4: 00000e93 li t4,0 +80002da8: 01400193 li gp,20 +80002dac: 0bd31463 bne t1,t4,80002e54 + +80002db0 : +80002db0: 00000213 li tp,0 +80002db4: 00b00093 li ra,11 +80002db8: 00f0bf13 sltiu t5,ra,15 +80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dc0: 00200293 li t0,2 +80002dc4: fe5218e3 bne tp,t0,80002db4 +80002dc8: 00100e93 li t4,1 +80002dcc: 01500193 li gp,21 +80002dd0: 09df1263 bne t5,t4,80002e54 + +80002dd4 : +80002dd4: 00000213 li tp,0 +80002dd8: 01100093 li ra,17 +80002ddc: 00000013 nop +80002de0: 0080bf13 sltiu t5,ra,8 +80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de8: 00200293 li t0,2 +80002dec: fe5216e3 bne tp,t0,80002dd8 +80002df0: 00000e93 li t4,0 +80002df4: 01600193 li gp,22 +80002df8: 05df1e63 bne t5,t4,80002e54 + +80002dfc : +80002dfc: 00000213 li tp,0 +80002e00: 00c00093 li ra,12 +80002e04: 00000013 nop +80002e08: 00000013 nop +80002e0c: 00e0bf13 sltiu t5,ra,14 +80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e14: 00200293 li t0,2 +80002e18: fe5214e3 bne tp,t0,80002e00 +80002e1c: 00100e93 li t4,1 +80002e20: 01700193 li gp,23 +80002e24: 03df1863 bne t5,t4,80002e54 + +80002e28 : +80002e28: fff03093 sltiu ra,zero,-1 +80002e2c: 00100e93 li t4,1 +80002e30: 01800193 li gp,24 +80002e34: 03d09063 bne ra,t4,80002e54 + +80002e38 : +80002e38: 00ff00b7 lui ra,0xff0 +80002e3c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002e40: fff0b013 sltiu zero,ra,-1 +80002e44: 00000e93 li t4,0 +80002e48: 01900193 li gp,25 +80002e4c: 01d01463 bne zero,t4,80002e54 +80002e50: 00301a63 bne zero,gp,80002e64 + +80002e54 : +80002e54: 00119513 slli a0,gp,0x1 +80002e58: 00050063 beqz a0,80002e58 +80002e5c: 00156513 ori a0,a0,1 +80002e60: 00000073 ecall + +80002e64 : +80002e64: 00100513 li a0,1 +80002e68: 00000073 ecall +80002e6c: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-sltu b/Tests/isa/rv32ui-v-sltu new file mode 100644 index 0000000..18cc45b Binary files /dev/null and b/Tests/isa/rv32ui-v-sltu differ diff --git a/Tests/isa/rv32ui-v-sltu.dump b/Tests/isa/rv32ui-v-sltu.dump new file mode 100644 index 0000000..6b6fd80 --- /dev/null +++ b/Tests/isa/rv32ui-v-sltu.dump @@ -0,0 +1,1288 @@ + +rv32ui-v-sltu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1858593 addi a1,a1,-1000 # 80003150 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bc458593 addi a1,a1,-1084 # 80003168 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af858593 addi a1,a1,-1288 # 80003108 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae858593 addi a1,a1,-1304 # 80003230 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a5058593 addi a1,a1,-1456 # 8000320c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94c60613 addi a2,a2,-1716 # 8000325c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85c60613 addi a2,a2,-1956 # 800031d8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 00d00793 li a5,13 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 016d57b7 lui a5,0x16d5 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 09878793 addi a5,a5,152 # 16d5098 <_start-0x7e92af68> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00000113 li sp,0 +80002be8: 0020bf33 sltu t5,ra,sp +80002bec: 00000e93 li t4,0 +80002bf0: 00200193 li gp,2 +80002bf4: 4bdf1a63 bne t5,t4,800030a8 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 0020bf33 sltu t5,ra,sp +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 49df1e63 bne t5,t4,800030a8 + +80002c10 : +80002c10: 00300093 li ra,3 +80002c14: 00700113 li sp,7 +80002c18: 0020bf33 sltu t5,ra,sp +80002c1c: 00100e93 li t4,1 +80002c20: 00400193 li gp,4 +80002c24: 49df1263 bne t5,t4,800030a8 + +80002c28 : +80002c28: 00700093 li ra,7 +80002c2c: 00300113 li sp,3 +80002c30: 0020bf33 sltu t5,ra,sp +80002c34: 00000e93 li t4,0 +80002c38: 00500193 li gp,5 +80002c3c: 47df1663 bne t5,t4,800030a8 + +80002c40 : +80002c40: 00000093 li ra,0 +80002c44: ffff8137 lui sp,0xffff8 +80002c48: 0020bf33 sltu t5,ra,sp +80002c4c: 00100e93 li t4,1 +80002c50: 00600193 li gp,6 +80002c54: 45df1a63 bne t5,t4,800030a8 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: 00000113 li sp,0 +80002c60: 0020bf33 sltu t5,ra,sp +80002c64: 00000e93 li t4,0 +80002c68: 00700193 li gp,7 +80002c6c: 43df1e63 bne t5,t4,800030a8 + +80002c70 : +80002c70: 800000b7 lui ra,0x80000 +80002c74: ffff8137 lui sp,0xffff8 +80002c78: 0020bf33 sltu t5,ra,sp +80002c7c: 00100e93 li t4,1 +80002c80: 00800193 li gp,8 +80002c84: 43df1263 bne t5,t4,800030a8 + +80002c88 : +80002c88: 00000093 li ra,0 +80002c8c: 00008137 lui sp,0x8 +80002c90: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002c94: 0020bf33 sltu t5,ra,sp +80002c98: 00100e93 li t4,1 +80002c9c: 00900193 li gp,9 +80002ca0: 41df1463 bne t5,t4,800030a8 + +80002ca4 : +80002ca4: 800000b7 lui ra,0x80000 +80002ca8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cac: 00000113 li sp,0 +80002cb0: 0020bf33 sltu t5,ra,sp +80002cb4: 00000e93 li t4,0 +80002cb8: 00a00193 li gp,10 +80002cbc: 3fdf1663 bne t5,t4,800030a8 + +80002cc0 : +80002cc0: 800000b7 lui ra,0x80000 +80002cc4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cc8: 00008137 lui sp,0x8 +80002ccc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002cd0: 0020bf33 sltu t5,ra,sp +80002cd4: 00000e93 li t4,0 +80002cd8: 00b00193 li gp,11 +80002cdc: 3ddf1663 bne t5,t4,800030a8 + +80002ce0 : +80002ce0: 800000b7 lui ra,0x80000 +80002ce4: 00008137 lui sp,0x8 +80002ce8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002cec: 0020bf33 sltu t5,ra,sp +80002cf0: 00000e93 li t4,0 +80002cf4: 00c00193 li gp,12 +80002cf8: 3bdf1863 bne t5,t4,800030a8 + +80002cfc : +80002cfc: 800000b7 lui ra,0x80000 +80002d00: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002d04: ffff8137 lui sp,0xffff8 +80002d08: 0020bf33 sltu t5,ra,sp +80002d0c: 00100e93 li t4,1 +80002d10: 00d00193 li gp,13 +80002d14: 39df1a63 bne t5,t4,800030a8 + +80002d18 : +80002d18: 00000093 li ra,0 +80002d1c: fff00113 li sp,-1 +80002d20: 0020bf33 sltu t5,ra,sp +80002d24: 00100e93 li t4,1 +80002d28: 00e00193 li gp,14 +80002d2c: 37df1e63 bne t5,t4,800030a8 + +80002d30 : +80002d30: fff00093 li ra,-1 +80002d34: 00100113 li sp,1 +80002d38: 0020bf33 sltu t5,ra,sp +80002d3c: 00000e93 li t4,0 +80002d40: 00f00193 li gp,15 +80002d44: 37df1263 bne t5,t4,800030a8 + +80002d48 : +80002d48: fff00093 li ra,-1 +80002d4c: fff00113 li sp,-1 +80002d50: 0020bf33 sltu t5,ra,sp +80002d54: 00000e93 li t4,0 +80002d58: 01000193 li gp,16 +80002d5c: 35df1663 bne t5,t4,800030a8 + +80002d60 : +80002d60: 00e00093 li ra,14 +80002d64: 00d00113 li sp,13 +80002d68: 0020b0b3 sltu ra,ra,sp +80002d6c: 00000e93 li t4,0 +80002d70: 01100193 li gp,17 +80002d74: 33d09a63 bne ra,t4,800030a8 + +80002d78 : +80002d78: 00b00093 li ra,11 +80002d7c: 00d00113 li sp,13 +80002d80: 0020b133 sltu sp,ra,sp +80002d84: 00100e93 li t4,1 +80002d88: 01200193 li gp,18 +80002d8c: 31d11e63 bne sp,t4,800030a8 + +80002d90 : +80002d90: 00d00093 li ra,13 +80002d94: 0010b0b3 sltu ra,ra,ra +80002d98: 00000e93 li t4,0 +80002d9c: 01300193 li gp,19 +80002da0: 31d09463 bne ra,t4,800030a8 + +80002da4 : +80002da4: 00000213 li tp,0 +80002da8: 00b00093 li ra,11 +80002dac: 00d00113 li sp,13 +80002db0: 0020bf33 sltu t5,ra,sp +80002db4: 000f0313 mv t1,t5 +80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dbc: 00200293 li t0,2 +80002dc0: fe5214e3 bne tp,t0,80002da8 +80002dc4: 00100e93 li t4,1 +80002dc8: 01400193 li gp,20 +80002dcc: 2dd31e63 bne t1,t4,800030a8 + +80002dd0 : +80002dd0: 00000213 li tp,0 +80002dd4: 00e00093 li ra,14 +80002dd8: 00d00113 li sp,13 +80002ddc: 0020bf33 sltu t5,ra,sp +80002de0: 00000013 nop +80002de4: 000f0313 mv t1,t5 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fe5212e3 bne tp,t0,80002dd4 +80002df4: 00000e93 li t4,0 +80002df8: 01500193 li gp,21 +80002dfc: 2bd31663 bne t1,t4,800030a8 + +80002e00 : +80002e00: 00000213 li tp,0 +80002e04: 00c00093 li ra,12 +80002e08: 00d00113 li sp,13 +80002e0c: 0020bf33 sltu t5,ra,sp +80002e10: 00000013 nop +80002e14: 00000013 nop +80002e18: 000f0313 mv t1,t5 +80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e20: 00200293 li t0,2 +80002e24: fe5210e3 bne tp,t0,80002e04 +80002e28: 00100e93 li t4,1 +80002e2c: 01600193 li gp,22 +80002e30: 27d31c63 bne t1,t4,800030a8 + +80002e34 : +80002e34: 00000213 li tp,0 +80002e38: 00e00093 li ra,14 +80002e3c: 00d00113 li sp,13 +80002e40: 0020bf33 sltu t5,ra,sp +80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e48: 00200293 li t0,2 +80002e4c: fe5216e3 bne tp,t0,80002e38 +80002e50: 00000e93 li t4,0 +80002e54: 01700193 li gp,23 +80002e58: 25df1863 bne t5,t4,800030a8 + +80002e5c : +80002e5c: 00000213 li tp,0 +80002e60: 00b00093 li ra,11 +80002e64: 00d00113 li sp,13 +80002e68: 00000013 nop +80002e6c: 0020bf33 sltu t5,ra,sp +80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e74: 00200293 li t0,2 +80002e78: fe5214e3 bne tp,t0,80002e60 +80002e7c: 00100e93 li t4,1 +80002e80: 01800193 li gp,24 +80002e84: 23df1263 bne t5,t4,800030a8 + +80002e88 : +80002e88: 00000213 li tp,0 +80002e8c: 00f00093 li ra,15 +80002e90: 00d00113 li sp,13 +80002e94: 00000013 nop +80002e98: 00000013 nop +80002e9c: 0020bf33 sltu t5,ra,sp +80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea4: 00200293 li t0,2 +80002ea8: fe5212e3 bne tp,t0,80002e8c +80002eac: 00000e93 li t4,0 +80002eb0: 01900193 li gp,25 +80002eb4: 1fdf1a63 bne t5,t4,800030a8 + +80002eb8 : +80002eb8: 00000213 li tp,0 +80002ebc: 00a00093 li ra,10 +80002ec0: 00000013 nop +80002ec4: 00d00113 li sp,13 +80002ec8: 0020bf33 sltu t5,ra,sp +80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ed0: 00200293 li t0,2 +80002ed4: fe5214e3 bne tp,t0,80002ebc +80002ed8: 00100e93 li t4,1 +80002edc: 01a00193 li gp,26 +80002ee0: 1ddf1463 bne t5,t4,800030a8 + +80002ee4 : +80002ee4: 00000213 li tp,0 +80002ee8: 01000093 li ra,16 +80002eec: 00000013 nop +80002ef0: 00d00113 li sp,13 +80002ef4: 00000013 nop +80002ef8: 0020bf33 sltu t5,ra,sp +80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f00: 00200293 li t0,2 +80002f04: fe5212e3 bne tp,t0,80002ee8 +80002f08: 00000e93 li t4,0 +80002f0c: 01b00193 li gp,27 +80002f10: 19df1c63 bne t5,t4,800030a8 + +80002f14 : +80002f14: 00000213 li tp,0 +80002f18: 00900093 li ra,9 +80002f1c: 00000013 nop +80002f20: 00000013 nop +80002f24: 00d00113 li sp,13 +80002f28: 0020bf33 sltu t5,ra,sp +80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f30: 00200293 li t0,2 +80002f34: fe5212e3 bne tp,t0,80002f18 +80002f38: 00100e93 li t4,1 +80002f3c: 01c00193 li gp,28 +80002f40: 17df1463 bne t5,t4,800030a8 + +80002f44 : +80002f44: 00000213 li tp,0 +80002f48: 00d00113 li sp,13 +80002f4c: 01100093 li ra,17 +80002f50: 0020bf33 sltu t5,ra,sp +80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f58: 00200293 li t0,2 +80002f5c: fe5216e3 bne tp,t0,80002f48 +80002f60: 00000e93 li t4,0 +80002f64: 01d00193 li gp,29 +80002f68: 15df1063 bne t5,t4,800030a8 + +80002f6c : +80002f6c: 00000213 li tp,0 +80002f70: 00d00113 li sp,13 +80002f74: 00800093 li ra,8 +80002f78: 00000013 nop +80002f7c: 0020bf33 sltu t5,ra,sp +80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f84: 00200293 li t0,2 +80002f88: fe5214e3 bne tp,t0,80002f70 +80002f8c: 00100e93 li t4,1 +80002f90: 01e00193 li gp,30 +80002f94: 11df1a63 bne t5,t4,800030a8 + +80002f98 : +80002f98: 00000213 li tp,0 +80002f9c: 00d00113 li sp,13 +80002fa0: 01200093 li ra,18 +80002fa4: 00000013 nop +80002fa8: 00000013 nop +80002fac: 0020bf33 sltu t5,ra,sp +80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fb4: 00200293 li t0,2 +80002fb8: fe5212e3 bne tp,t0,80002f9c +80002fbc: 00000e93 li t4,0 +80002fc0: 01f00193 li gp,31 +80002fc4: 0fdf1263 bne t5,t4,800030a8 + +80002fc8 : +80002fc8: 00000213 li tp,0 +80002fcc: 00d00113 li sp,13 +80002fd0: 00000013 nop +80002fd4: 00700093 li ra,7 +80002fd8: 0020bf33 sltu t5,ra,sp +80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fe0: 00200293 li t0,2 +80002fe4: fe5214e3 bne tp,t0,80002fcc +80002fe8: 00100e93 li t4,1 +80002fec: 02000193 li gp,32 +80002ff0: 0bdf1c63 bne t5,t4,800030a8 + +80002ff4 : +80002ff4: 00000213 li tp,0 +80002ff8: 00d00113 li sp,13 +80002ffc: 00000013 nop +80003000: 01300093 li ra,19 +80003004: 00000013 nop +80003008: 0020bf33 sltu t5,ra,sp +8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003010: 00200293 li t0,2 +80003014: fe5212e3 bne tp,t0,80002ff8 +80003018: 00000e93 li t4,0 +8000301c: 02100193 li gp,33 +80003020: 09df1463 bne t5,t4,800030a8 + +80003024 : +80003024: 00000213 li tp,0 +80003028: 00d00113 li sp,13 +8000302c: 00000013 nop +80003030: 00000013 nop +80003034: 00600093 li ra,6 +80003038: 0020bf33 sltu t5,ra,sp +8000303c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003040: 00200293 li t0,2 +80003044: fe5212e3 bne tp,t0,80003028 +80003048: 00100e93 li t4,1 +8000304c: 02200193 li gp,34 +80003050: 05df1c63 bne t5,t4,800030a8 + +80003054 : +80003054: fff00093 li ra,-1 +80003058: 00103133 snez sp,ra +8000305c: 00100e93 li t4,1 +80003060: 02300193 li gp,35 +80003064: 05d11263 bne sp,t4,800030a8 + +80003068 : +80003068: fff00093 li ra,-1 +8000306c: 0000b133 sltu sp,ra,zero +80003070: 00000e93 li t4,0 +80003074: 02400193 li gp,36 +80003078: 03d11863 bne sp,t4,800030a8 + +8000307c : +8000307c: 000030b3 snez ra,zero +80003080: 00000e93 li t4,0 +80003084: 02500193 li gp,37 +80003088: 03d09063 bne ra,t4,800030a8 + +8000308c : +8000308c: 01000093 li ra,16 +80003090: 01e00113 li sp,30 +80003094: 0020b033 sltu zero,ra,sp +80003098: 00000e93 li t4,0 +8000309c: 02600193 li gp,38 +800030a0: 01d01463 bne zero,t4,800030a8 +800030a4: 00301a63 bne zero,gp,800030b8 + +800030a8 : +800030a8: 00119513 slli a0,gp,0x1 +800030ac: 00050063 beqz a0,800030ac +800030b0: 00156513 ori a0,a0,1 +800030b4: 00000073 ecall + +800030b8 : +800030b8: 00100513 li a0,1 +800030bc: 00000073 ecall +800030c0: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-sra b/Tests/isa/rv32ui-v-sra new file mode 100644 index 0000000..2d860e7 Binary files /dev/null and b/Tests/isa/rv32ui-v-sra differ diff --git a/Tests/isa/rv32ui-v-sra.dump b/Tests/isa/rv32ui-v-sra.dump new file mode 100644 index 0000000..62f72de --- /dev/null +++ b/Tests/isa/rv32ui-v-sra.dump @@ -0,0 +1,1351 @@ + +rv32ui-v-sra: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: cd058593 addi a1,a1,-816 # 80003198 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: cec58593 addi a1,a1,-788 # 80003224 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: c9858593 addi a1,a1,-872 # 8000323c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: bcc58593 addi a1,a1,-1076 # 800031dc +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: bbc58593 addi a1,a1,-1092 # 80003304 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: b2458593 addi a1,a1,-1244 # 800032e0 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: a2060613 addi a2,a2,-1504 # 80003330 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 93060613 addi a2,a2,-1744 # 800032ac +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00001617 auipc a2,0x1 +800029cc: 8b060613 addi a2,a2,-1872 # 80003278 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 02700793 li a5,39 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 001567b7 lui a5,0x156 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 5b478793 addi a5,a5,1460 # 1565b4 <_start-0x7fea9a4c> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 800000b7 lui ra,0x80000 +80002be4: 00000113 li sp,0 +80002be8: 4020df33 sra t5,ra,sp +80002bec: 80000eb7 lui t4,0x80000 +80002bf0: 00200193 li gp,2 +80002bf4: 59df1463 bne t5,t4,8000317c + +80002bf8 : +80002bf8: 800000b7 lui ra,0x80000 +80002bfc: 00100113 li sp,1 +80002c00: 4020df33 sra t5,ra,sp +80002c04: c0000eb7 lui t4,0xc0000 +80002c08: 00300193 li gp,3 +80002c0c: 57df1863 bne t5,t4,8000317c + +80002c10 : +80002c10: 800000b7 lui ra,0x80000 +80002c14: 00700113 li sp,7 +80002c18: 4020df33 sra t5,ra,sp +80002c1c: ff000eb7 lui t4,0xff000 +80002c20: 00400193 li gp,4 +80002c24: 55df1c63 bne t5,t4,8000317c + +80002c28 : +80002c28: 800000b7 lui ra,0x80000 +80002c2c: 00e00113 li sp,14 +80002c30: 4020df33 sra t5,ra,sp +80002c34: fffe0eb7 lui t4,0xfffe0 +80002c38: 00500193 li gp,5 +80002c3c: 55df1063 bne t5,t4,8000317c + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002c48: 01f00113 li sp,31 +80002c4c: 4020df33 sra t5,ra,sp +80002c50: fff00e93 li t4,-1 +80002c54: 00600193 li gp,6 +80002c58: 53df1263 bne t5,t4,8000317c + +80002c5c : +80002c5c: 800000b7 lui ra,0x80000 +80002c60: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c64: 00000113 li sp,0 +80002c68: 4020df33 sra t5,ra,sp +80002c6c: 80000eb7 lui t4,0x80000 +80002c70: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07> +80002c74: 00700193 li gp,7 +80002c78: 51df1263 bne t5,t4,8000317c + +80002c7c : +80002c7c: 800000b7 lui ra,0x80000 +80002c80: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c84: 00100113 li sp,1 +80002c88: 4020df33 sra t5,ra,sp +80002c8c: 40000eb7 lui t4,0x40000 +80002c90: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001> +80002c94: 00800193 li gp,8 +80002c98: 4fdf1263 bne t5,t4,8000317c + +80002c9c : +80002c9c: 800000b7 lui ra,0x80000 +80002ca0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002ca4: 00700113 li sp,7 +80002ca8: 4020df33 sra t5,ra,sp +80002cac: 01000eb7 lui t4,0x1000 +80002cb0: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001> +80002cb4: 00900193 li gp,9 +80002cb8: 4ddf1263 bne t5,t4,8000317c + +80002cbc : +80002cbc: 800000b7 lui ra,0x80000 +80002cc0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cc4: 00e00113 li sp,14 +80002cc8: 4020df33 sra t5,ra,sp +80002ccc: 00020eb7 lui t4,0x20 +80002cd0: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001> +80002cd4: 00a00193 li gp,10 +80002cd8: 4bdf1263 bne t5,t4,8000317c + +80002cdc : +80002cdc: 800000b7 lui ra,0x80000 +80002ce0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002ce4: 01f00113 li sp,31 +80002ce8: 4020df33 sra t5,ra,sp +80002cec: 00000e93 li t4,0 +80002cf0: 00b00193 li gp,11 +80002cf4: 49df1463 bne t5,t4,8000317c + +80002cf8 : +80002cf8: 818180b7 lui ra,0x81818 +80002cfc: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d00: 00000113 li sp,0 +80002d04: 4020df33 sra t5,ra,sp +80002d08: 81818eb7 lui t4,0x81818 +80002d0c: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1811d89> +80002d10: 00c00193 li gp,12 +80002d14: 47df1463 bne t5,t4,8000317c + +80002d18 : +80002d18: 818180b7 lui ra,0x81818 +80002d1c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d20: 00100113 li sp,1 +80002d24: 4020df33 sra t5,ra,sp +80002d28: c0c0ceb7 lui t4,0xc0c0c +80002d2c: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c05cc8> +80002d30: 00d00193 li gp,13 +80002d34: 45df1463 bne t5,t4,8000317c + +80002d38 : +80002d38: 818180b7 lui ra,0x81818 +80002d3c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d40: 00700113 li sp,7 +80002d44: 4020df33 sra t5,ra,sp +80002d48: ff030eb7 lui t4,0xff030 +80002d4c: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f029f0b> +80002d50: 00e00193 li gp,14 +80002d54: 43df1463 bne t5,t4,8000317c + +80002d58 : +80002d58: 818180b7 lui ra,0x81818 +80002d5c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d60: 00e00113 li sp,14 +80002d64: 4020df33 sra t5,ra,sp +80002d68: fffe0eb7 lui t4,0xfffe0 +80002d6c: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffda20e> +80002d70: 00f00193 li gp,15 +80002d74: 41df1463 bne t5,t4,8000317c + +80002d78 : +80002d78: 818180b7 lui ra,0x81818 +80002d7c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d80: 01f00113 li sp,31 +80002d84: 4020df33 sra t5,ra,sp +80002d88: fff00e93 li t4,-1 +80002d8c: 01000193 li gp,16 +80002d90: 3fdf1663 bne t5,t4,8000317c + +80002d94 : +80002d94: 818180b7 lui ra,0x81818 +80002d98: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d9c: fc000113 li sp,-64 +80002da0: 4020df33 sra t5,ra,sp +80002da4: 81818eb7 lui t4,0x81818 +80002da8: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1811d89> +80002dac: 01100193 li gp,17 +80002db0: 3ddf1663 bne t5,t4,8000317c + +80002db4 : +80002db4: 818180b7 lui ra,0x81818 +80002db8: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002dbc: fc100113 li sp,-63 +80002dc0: 4020df33 sra t5,ra,sp +80002dc4: c0c0ceb7 lui t4,0xc0c0c +80002dc8: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c05cc8> +80002dcc: 01200193 li gp,18 +80002dd0: 3bdf1663 bne t5,t4,8000317c + +80002dd4 : +80002dd4: 818180b7 lui ra,0x81818 +80002dd8: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002ddc: fc700113 li sp,-57 +80002de0: 4020df33 sra t5,ra,sp +80002de4: ff030eb7 lui t4,0xff030 +80002de8: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f029f0b> +80002dec: 01300193 li gp,19 +80002df0: 39df1663 bne t5,t4,8000317c + +80002df4 : +80002df4: 818180b7 lui ra,0x81818 +80002df8: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002dfc: fce00113 li sp,-50 +80002e00: 4020df33 sra t5,ra,sp +80002e04: fffe0eb7 lui t4,0xfffe0 +80002e08: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffda20e> +80002e0c: 01400193 li gp,20 +80002e10: 37df1663 bne t5,t4,8000317c + +80002e14 : +80002e14: 818180b7 lui ra,0x81818 +80002e18: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002e1c: fff00113 li sp,-1 +80002e20: 4020df33 sra t5,ra,sp +80002e24: fff00e93 li t4,-1 +80002e28: 01500193 li gp,21 +80002e2c: 35df1863 bne t5,t4,8000317c + +80002e30 : +80002e30: 800000b7 lui ra,0x80000 +80002e34: 00700113 li sp,7 +80002e38: 4020d0b3 sra ra,ra,sp +80002e3c: ff000eb7 lui t4,0xff000 +80002e40: 01600193 li gp,22 +80002e44: 33d09c63 bne ra,t4,8000317c + +80002e48 : +80002e48: 800000b7 lui ra,0x80000 +80002e4c: 00e00113 li sp,14 +80002e50: 4020d133 sra sp,ra,sp +80002e54: fffe0eb7 lui t4,0xfffe0 +80002e58: 01700193 li gp,23 +80002e5c: 33d11063 bne sp,t4,8000317c + +80002e60 : +80002e60: 00700093 li ra,7 +80002e64: 4010d0b3 sra ra,ra,ra +80002e68: 00000e93 li t4,0 +80002e6c: 01800193 li gp,24 +80002e70: 31d09663 bne ra,t4,8000317c + +80002e74 : +80002e74: 00000213 li tp,0 +80002e78: 800000b7 lui ra,0x80000 +80002e7c: 00700113 li sp,7 +80002e80: 4020df33 sra t5,ra,sp +80002e84: 000f0313 mv t1,t5 +80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e8c: 00200293 li t0,2 +80002e90: fe5214e3 bne tp,t0,80002e78 +80002e94: ff000eb7 lui t4,0xff000 +80002e98: 01900193 li gp,25 +80002e9c: 2fd31063 bne t1,t4,8000317c + +80002ea0 : +80002ea0: 00000213 li tp,0 +80002ea4: 800000b7 lui ra,0x80000 +80002ea8: 00e00113 li sp,14 +80002eac: 4020df33 sra t5,ra,sp +80002eb0: 00000013 nop +80002eb4: 000f0313 mv t1,t5 +80002eb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ebc: 00200293 li t0,2 +80002ec0: fe5212e3 bne tp,t0,80002ea4 +80002ec4: fffe0eb7 lui t4,0xfffe0 +80002ec8: 01a00193 li gp,26 +80002ecc: 2bd31863 bne t1,t4,8000317c + +80002ed0 : +80002ed0: 00000213 li tp,0 +80002ed4: 800000b7 lui ra,0x80000 +80002ed8: 01f00113 li sp,31 +80002edc: 4020df33 sra t5,ra,sp +80002ee0: 00000013 nop +80002ee4: 00000013 nop +80002ee8: 000f0313 mv t1,t5 +80002eec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ef0: 00200293 li t0,2 +80002ef4: fe5210e3 bne tp,t0,80002ed4 +80002ef8: fff00e93 li t4,-1 +80002efc: 01b00193 li gp,27 +80002f00: 27d31e63 bne t1,t4,8000317c + +80002f04 : +80002f04: 00000213 li tp,0 +80002f08: 800000b7 lui ra,0x80000 +80002f0c: 00700113 li sp,7 +80002f10: 4020df33 sra t5,ra,sp +80002f14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f18: 00200293 li t0,2 +80002f1c: fe5216e3 bne tp,t0,80002f08 +80002f20: ff000eb7 lui t4,0xff000 +80002f24: 01c00193 li gp,28 +80002f28: 25df1a63 bne t5,t4,8000317c + +80002f2c : +80002f2c: 00000213 li tp,0 +80002f30: 800000b7 lui ra,0x80000 +80002f34: 00e00113 li sp,14 +80002f38: 00000013 nop +80002f3c: 4020df33 sra t5,ra,sp +80002f40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f44: 00200293 li t0,2 +80002f48: fe5214e3 bne tp,t0,80002f30 +80002f4c: fffe0eb7 lui t4,0xfffe0 +80002f50: 01d00193 li gp,29 +80002f54: 23df1463 bne t5,t4,8000317c + +80002f58 : +80002f58: 00000213 li tp,0 +80002f5c: 800000b7 lui ra,0x80000 +80002f60: 01f00113 li sp,31 +80002f64: 00000013 nop +80002f68: 00000013 nop +80002f6c: 4020df33 sra t5,ra,sp +80002f70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f74: 00200293 li t0,2 +80002f78: fe5212e3 bne tp,t0,80002f5c +80002f7c: fff00e93 li t4,-1 +80002f80: 01e00193 li gp,30 +80002f84: 1fdf1c63 bne t5,t4,8000317c + +80002f88 : +80002f88: 00000213 li tp,0 +80002f8c: 800000b7 lui ra,0x80000 +80002f90: 00000013 nop +80002f94: 00700113 li sp,7 +80002f98: 4020df33 sra t5,ra,sp +80002f9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fa0: 00200293 li t0,2 +80002fa4: fe5214e3 bne tp,t0,80002f8c +80002fa8: ff000eb7 lui t4,0xff000 +80002fac: 01f00193 li gp,31 +80002fb0: 1ddf1663 bne t5,t4,8000317c + +80002fb4 : +80002fb4: 00000213 li tp,0 +80002fb8: 800000b7 lui ra,0x80000 +80002fbc: 00000013 nop +80002fc0: 00e00113 li sp,14 +80002fc4: 00000013 nop +80002fc8: 4020df33 sra t5,ra,sp +80002fcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fd0: 00200293 li t0,2 +80002fd4: fe5212e3 bne tp,t0,80002fb8 +80002fd8: fffe0eb7 lui t4,0xfffe0 +80002fdc: 02000193 li gp,32 +80002fe0: 19df1e63 bne t5,t4,8000317c + +80002fe4 : +80002fe4: 00000213 li tp,0 +80002fe8: 800000b7 lui ra,0x80000 +80002fec: 00000013 nop +80002ff0: 00000013 nop +80002ff4: 01f00113 li sp,31 +80002ff8: 4020df33 sra t5,ra,sp +80002ffc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003000: 00200293 li t0,2 +80003004: fe5212e3 bne tp,t0,80002fe8 +80003008: fff00e93 li t4,-1 +8000300c: 02100193 li gp,33 +80003010: 17df1663 bne t5,t4,8000317c + +80003014 : +80003014: 00000213 li tp,0 +80003018: 00700113 li sp,7 +8000301c: 800000b7 lui ra,0x80000 +80003020: 4020df33 sra t5,ra,sp +80003024: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003028: 00200293 li t0,2 +8000302c: fe5216e3 bne tp,t0,80003018 +80003030: ff000eb7 lui t4,0xff000 +80003034: 02200193 li gp,34 +80003038: 15df1263 bne t5,t4,8000317c + +8000303c : +8000303c: 00000213 li tp,0 +80003040: 00e00113 li sp,14 +80003044: 800000b7 lui ra,0x80000 +80003048: 00000013 nop +8000304c: 4020df33 sra t5,ra,sp +80003050: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003054: 00200293 li t0,2 +80003058: fe5214e3 bne tp,t0,80003040 +8000305c: fffe0eb7 lui t4,0xfffe0 +80003060: 02300193 li gp,35 +80003064: 11df1c63 bne t5,t4,8000317c + +80003068 : +80003068: 00000213 li tp,0 +8000306c: 01f00113 li sp,31 +80003070: 800000b7 lui ra,0x80000 +80003074: 00000013 nop +80003078: 00000013 nop +8000307c: 4020df33 sra t5,ra,sp +80003080: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003084: 00200293 li t0,2 +80003088: fe5212e3 bne tp,t0,8000306c +8000308c: fff00e93 li t4,-1 +80003090: 02400193 li gp,36 +80003094: 0fdf1463 bne t5,t4,8000317c + +80003098 : +80003098: 00000213 li tp,0 +8000309c: 00700113 li sp,7 +800030a0: 00000013 nop +800030a4: 800000b7 lui ra,0x80000 +800030a8: 4020df33 sra t5,ra,sp +800030ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800030b0: 00200293 li t0,2 +800030b4: fe5214e3 bne tp,t0,8000309c +800030b8: ff000eb7 lui t4,0xff000 +800030bc: 02500193 li gp,37 +800030c0: 0bdf1e63 bne t5,t4,8000317c + +800030c4 : +800030c4: 00000213 li tp,0 +800030c8: 00e00113 li sp,14 +800030cc: 00000013 nop +800030d0: 800000b7 lui ra,0x80000 +800030d4: 00000013 nop +800030d8: 4020df33 sra t5,ra,sp +800030dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800030e0: 00200293 li t0,2 +800030e4: fe5212e3 bne tp,t0,800030c8 +800030e8: fffe0eb7 lui t4,0xfffe0 +800030ec: 02600193 li gp,38 +800030f0: 09df1663 bne t5,t4,8000317c + +800030f4 : +800030f4: 00000213 li tp,0 +800030f8: 01f00113 li sp,31 +800030fc: 00000013 nop +80003100: 00000013 nop +80003104: 800000b7 lui ra,0x80000 +80003108: 4020df33 sra t5,ra,sp +8000310c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003110: 00200293 li t0,2 +80003114: fe5212e3 bne tp,t0,800030f8 +80003118: fff00e93 li t4,-1 +8000311c: 02700193 li gp,39 +80003120: 05df1e63 bne t5,t4,8000317c + +80003124 : +80003124: 00f00093 li ra,15 +80003128: 40105133 sra sp,zero,ra +8000312c: 00000e93 li t4,0 +80003130: 02800193 li gp,40 +80003134: 05d11463 bne sp,t4,8000317c + +80003138 : +80003138: 02000093 li ra,32 +8000313c: 4000d133 sra sp,ra,zero +80003140: 02000e93 li t4,32 +80003144: 02900193 li gp,41 +80003148: 03d11a63 bne sp,t4,8000317c + +8000314c : +8000314c: 400050b3 sra ra,zero,zero +80003150: 00000e93 li t4,0 +80003154: 02a00193 li gp,42 +80003158: 03d09263 bne ra,t4,8000317c + +8000315c : +8000315c: 40000093 li ra,1024 +80003160: 00001137 lui sp,0x1 +80003164: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> +80003168: 4020d033 sra zero,ra,sp +8000316c: 00000e93 li t4,0 +80003170: 02b00193 li gp,43 +80003174: 01d01463 bne zero,t4,8000317c +80003178: 00301a63 bne zero,gp,8000318c + +8000317c : +8000317c: 00119513 slli a0,gp,0x1 +80003180: 00050063 beqz a0,80003180 +80003184: 00156513 ori a0,a0,1 +80003188: 00000073 ecall + +8000318c : +8000318c: 00100513 li a0,1 +80003190: 00000073 ecall +80003194: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-srai b/Tests/isa/rv32ui-v-srai new file mode 100644 index 0000000..29deb18 Binary files /dev/null and b/Tests/isa/rv32ui-v-srai differ diff --git a/Tests/isa/rv32ui-v-srai.dump b/Tests/isa/rv32ui-v-srai.dump new file mode 100644 index 0000000..3c7c960 --- /dev/null +++ b/Tests/isa/rv32ui-v-srai.dump @@ -0,0 +1,1130 @@ + +rv32ui-v-srai: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9ec58593 addi a1,a1,-1556 # 80002eb4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: a0858593 addi a1,a1,-1528 # 80002f40 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 9b458593 addi a1,a1,-1612 # 80002f58 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8e858593 addi a1,a1,-1816 # 80002ef8 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8d858593 addi a1,a1,-1832 # 80003020 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 84058593 addi a1,a1,-1984 # 80002ffc +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 73c60613 addi a2,a2,1852 # 8000304c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 64c60613 addi a2,a2,1612 # 80002fc8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5cc60613 addi a2,a2,1484 # 80002f94 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01e00793 li a5,30 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0390c7b7 lui a5,0x390c +80002b9c: 00080637 lui a2,0x80 +80002ba0: e3178793 addi a5,a5,-463 # 390be31 <_start-0x7c6f41cf> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 4000df13 srai t5,ra,0x0 +80002be8: 00000e93 li t4,0 +80002bec: 00200193 li gp,2 +80002bf0: 2bdf1463 bne t5,t4,80002e98 + +80002bf4 : +80002bf4: 800000b7 lui ra,0x80000 +80002bf8: 4010df13 srai t5,ra,0x1 +80002bfc: c0000eb7 lui t4,0xc0000 +80002c00: 00300193 li gp,3 +80002c04: 29df1a63 bne t5,t4,80002e98 + +80002c08 : +80002c08: 800000b7 lui ra,0x80000 +80002c0c: 4070df13 srai t5,ra,0x7 +80002c10: ff000eb7 lui t4,0xff000 +80002c14: 00400193 li gp,4 +80002c18: 29df1063 bne t5,t4,80002e98 + +80002c1c : +80002c1c: 800000b7 lui ra,0x80000 +80002c20: 40e0df13 srai t5,ra,0xe +80002c24: fffe0eb7 lui t4,0xfffe0 +80002c28: 00500193 li gp,5 +80002c2c: 27df1663 bne t5,t4,80002e98 + +80002c30 : +80002c30: 800000b7 lui ra,0x80000 +80002c34: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002c38: 41f0df13 srai t5,ra,0x1f +80002c3c: fff00e93 li t4,-1 +80002c40: 00600193 li gp,6 +80002c44: 25df1a63 bne t5,t4,80002e98 + +80002c48 : +80002c48: 800000b7 lui ra,0x80000 +80002c4c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c50: 4000df13 srai t5,ra,0x0 +80002c54: 80000eb7 lui t4,0x80000 +80002c58: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07> +80002c5c: 00700193 li gp,7 +80002c60: 23df1c63 bne t5,t4,80002e98 + +80002c64 : +80002c64: 800000b7 lui ra,0x80000 +80002c68: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c6c: 4010df13 srai t5,ra,0x1 +80002c70: 40000eb7 lui t4,0x40000 +80002c74: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001> +80002c78: 00800193 li gp,8 +80002c7c: 21df1e63 bne t5,t4,80002e98 + +80002c80 : +80002c80: 800000b7 lui ra,0x80000 +80002c84: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c88: 4070df13 srai t5,ra,0x7 +80002c8c: 01000eb7 lui t4,0x1000 +80002c90: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001> +80002c94: 00900193 li gp,9 +80002c98: 21df1063 bne t5,t4,80002e98 + +80002c9c : +80002c9c: 800000b7 lui ra,0x80000 +80002ca0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002ca4: 40e0df13 srai t5,ra,0xe +80002ca8: 00020eb7 lui t4,0x20 +80002cac: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001> +80002cb0: 00a00193 li gp,10 +80002cb4: 1fdf1263 bne t5,t4,80002e98 + +80002cb8 : +80002cb8: 800000b7 lui ra,0x80000 +80002cbc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cc0: 41f0df13 srai t5,ra,0x1f +80002cc4: 00000e93 li t4,0 +80002cc8: 00b00193 li gp,11 +80002ccc: 1ddf1663 bne t5,t4,80002e98 + +80002cd0 : +80002cd0: 818180b7 lui ra,0x81818 +80002cd4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002cd8: 4000df13 srai t5,ra,0x0 +80002cdc: 81818eb7 lui t4,0x81818 +80002ce0: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1811d89> +80002ce4: 00c00193 li gp,12 +80002ce8: 1bdf1863 bne t5,t4,80002e98 + +80002cec : +80002cec: 818180b7 lui ra,0x81818 +80002cf0: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002cf4: 4010df13 srai t5,ra,0x1 +80002cf8: c0c0ceb7 lui t4,0xc0c0c +80002cfc: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c05cc8> +80002d00: 00d00193 li gp,13 +80002d04: 19df1a63 bne t5,t4,80002e98 + +80002d08 : +80002d08: 818180b7 lui ra,0x81818 +80002d0c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d10: 4070df13 srai t5,ra,0x7 +80002d14: ff030eb7 lui t4,0xff030 +80002d18: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f029f0b> +80002d1c: 00e00193 li gp,14 +80002d20: 17df1c63 bne t5,t4,80002e98 + +80002d24 : +80002d24: 818180b7 lui ra,0x81818 +80002d28: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d2c: 40e0df13 srai t5,ra,0xe +80002d30: fffe0eb7 lui t4,0xfffe0 +80002d34: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffda20e> +80002d38: 00f00193 li gp,15 +80002d3c: 15df1e63 bne t5,t4,80002e98 + +80002d40 : +80002d40: 818180b7 lui ra,0x81818 +80002d44: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89> +80002d48: 41f0df13 srai t5,ra,0x1f +80002d4c: fff00e93 li t4,-1 +80002d50: 01000193 li gp,16 +80002d54: 15df1263 bne t5,t4,80002e98 + +80002d58 : +80002d58: 800000b7 lui ra,0x80000 +80002d5c: 4070d093 srai ra,ra,0x7 +80002d60: ff000eb7 lui t4,0xff000 +80002d64: 01100193 li gp,17 +80002d68: 13d09863 bne ra,t4,80002e98 + +80002d6c : +80002d6c: 00000213 li tp,0 +80002d70: 800000b7 lui ra,0x80000 +80002d74: 4070df13 srai t5,ra,0x7 +80002d78: 000f0313 mv t1,t5 +80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d80: 00200293 li t0,2 +80002d84: fe5216e3 bne tp,t0,80002d70 +80002d88: ff000eb7 lui t4,0xff000 +80002d8c: 01200193 li gp,18 +80002d90: 11d31463 bne t1,t4,80002e98 + +80002d94 : +80002d94: 00000213 li tp,0 +80002d98: 800000b7 lui ra,0x80000 +80002d9c: 40e0df13 srai t5,ra,0xe +80002da0: 00000013 nop +80002da4: 000f0313 mv t1,t5 +80002da8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dac: 00200293 li t0,2 +80002db0: fe5214e3 bne tp,t0,80002d98 +80002db4: fffe0eb7 lui t4,0xfffe0 +80002db8: 01300193 li gp,19 +80002dbc: 0dd31e63 bne t1,t4,80002e98 + +80002dc0 : +80002dc0: 00000213 li tp,0 +80002dc4: 800000b7 lui ra,0x80000 +80002dc8: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002dcc: 41f0df13 srai t5,ra,0x1f +80002dd0: 00000013 nop +80002dd4: 00000013 nop +80002dd8: 000f0313 mv t1,t5 +80002ddc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de0: 00200293 li t0,2 +80002de4: fe5210e3 bne tp,t0,80002dc4 +80002de8: fff00e93 li t4,-1 +80002dec: 01400193 li gp,20 +80002df0: 0bd31463 bne t1,t4,80002e98 + +80002df4 : +80002df4: 00000213 li tp,0 +80002df8: 800000b7 lui ra,0x80000 +80002dfc: 4070df13 srai t5,ra,0x7 +80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e04: 00200293 li t0,2 +80002e08: fe5218e3 bne tp,t0,80002df8 +80002e0c: ff000eb7 lui t4,0xff000 +80002e10: 01500193 li gp,21 +80002e14: 09df1263 bne t5,t4,80002e98 + +80002e18 : +80002e18: 00000213 li tp,0 +80002e1c: 800000b7 lui ra,0x80000 +80002e20: 00000013 nop +80002e24: 40e0df13 srai t5,ra,0xe +80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e2c: 00200293 li t0,2 +80002e30: fe5216e3 bne tp,t0,80002e1c +80002e34: fffe0eb7 lui t4,0xfffe0 +80002e38: 01600193 li gp,22 +80002e3c: 05df1e63 bne t5,t4,80002e98 + +80002e40 : +80002e40: 00000213 li tp,0 +80002e44: 800000b7 lui ra,0x80000 +80002e48: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002e4c: 00000013 nop +80002e50: 00000013 nop +80002e54: 41f0df13 srai t5,ra,0x1f +80002e58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e5c: 00200293 li t0,2 +80002e60: fe5212e3 bne tp,t0,80002e44 +80002e64: fff00e93 li t4,-1 +80002e68: 01700193 li gp,23 +80002e6c: 03df1663 bne t5,t4,80002e98 + +80002e70 : +80002e70: 40405093 srai ra,zero,0x4 +80002e74: 00000e93 li t4,0 +80002e78: 01800193 li gp,24 +80002e7c: 01d09e63 bne ra,t4,80002e98 + +80002e80 : +80002e80: 02100093 li ra,33 +80002e84: 40a0d013 srai zero,ra,0xa +80002e88: 00000e93 li t4,0 +80002e8c: 01900193 li gp,25 +80002e90: 01d01463 bne zero,t4,80002e98 +80002e94: 00301a63 bne zero,gp,80002ea8 + +80002e98 : +80002e98: 00119513 slli a0,gp,0x1 +80002e9c: 00050063 beqz a0,80002e9c +80002ea0: 00156513 ori a0,a0,1 +80002ea4: 00000073 ecall + +80002ea8 : +80002ea8: 00100513 li a0,1 +80002eac: 00000073 ecall +80002eb0: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-srl b/Tests/isa/rv32ui-v-srl new file mode 100644 index 0000000..17ff70c Binary files /dev/null and b/Tests/isa/rv32ui-v-srl differ diff --git a/Tests/isa/rv32ui-v-srl.dump b/Tests/isa/rv32ui-v-srl.dump new file mode 100644 index 0000000..2ae8970 --- /dev/null +++ b/Tests/isa/rv32ui-v-srl.dump @@ -0,0 +1,1345 @@ + +rv32ui-v-srl: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: cb858593 addi a1,a1,-840 # 80003180 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: cd458593 addi a1,a1,-812 # 8000320c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: c8058593 addi a1,a1,-896 # 80003224 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: bb458593 addi a1,a1,-1100 # 800031c4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ba458593 addi a1,a1,-1116 # 800032ec +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: b0c58593 addi a1,a1,-1268 # 800032c8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: a0860613 addi a2,a2,-1528 # 80003318 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 91860613 addi a2,a2,-1768 # 80003294 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00001617 auipc a2,0x1 +800029cc: 89860613 addi a2,a2,-1896 # 80003260 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01600793 li a5,22 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0fc217b7 lui a5,0xfc21 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 89278793 addi a5,a5,-1902 # fc20892 <_start-0x703df76e> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 800000b7 lui ra,0x80000 +80002be4: 00000113 li sp,0 +80002be8: 0020df33 srl t5,ra,sp +80002bec: 80000eb7 lui t4,0x80000 +80002bf0: 00200193 li gp,2 +80002bf4: 57df1863 bne t5,t4,80003164 + +80002bf8 : +80002bf8: 800000b7 lui ra,0x80000 +80002bfc: 00100113 li sp,1 +80002c00: 0020df33 srl t5,ra,sp +80002c04: 40000eb7 lui t4,0x40000 +80002c08: 00300193 li gp,3 +80002c0c: 55df1c63 bne t5,t4,80003164 + +80002c10 : +80002c10: 800000b7 lui ra,0x80000 +80002c14: 00700113 li sp,7 +80002c18: 0020df33 srl t5,ra,sp +80002c1c: 01000eb7 lui t4,0x1000 +80002c20: 00400193 li gp,4 +80002c24: 55df1063 bne t5,t4,80003164 + +80002c28 : +80002c28: 800000b7 lui ra,0x80000 +80002c2c: 00e00113 li sp,14 +80002c30: 0020df33 srl t5,ra,sp +80002c34: 00020eb7 lui t4,0x20 +80002c38: 00500193 li gp,5 +80002c3c: 53df1463 bne t5,t4,80003164 + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002c48: 01f00113 li sp,31 +80002c4c: 0020df33 srl t5,ra,sp +80002c50: 00100e93 li t4,1 +80002c54: 00600193 li gp,6 +80002c58: 51df1663 bne t5,t4,80003164 + +80002c5c : +80002c5c: fff00093 li ra,-1 +80002c60: 00000113 li sp,0 +80002c64: 0020df33 srl t5,ra,sp +80002c68: fff00e93 li t4,-1 +80002c6c: 00700193 li gp,7 +80002c70: 4fdf1a63 bne t5,t4,80003164 + +80002c74 : +80002c74: fff00093 li ra,-1 +80002c78: 00100113 li sp,1 +80002c7c: 0020df33 srl t5,ra,sp +80002c80: 80000eb7 lui t4,0x80000 +80002c84: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07> +80002c88: 00800193 li gp,8 +80002c8c: 4ddf1c63 bne t5,t4,80003164 + +80002c90 : +80002c90: fff00093 li ra,-1 +80002c94: 00700113 li sp,7 +80002c98: 0020df33 srl t5,ra,sp +80002c9c: 02000eb7 lui t4,0x2000 +80002ca0: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001> +80002ca4: 00900193 li gp,9 +80002ca8: 4bdf1e63 bne t5,t4,80003164 + +80002cac : +80002cac: fff00093 li ra,-1 +80002cb0: 00e00113 li sp,14 +80002cb4: 0020df33 srl t5,ra,sp +80002cb8: 00040eb7 lui t4,0x40 +80002cbc: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001> +80002cc0: 00a00193 li gp,10 +80002cc4: 4bdf1063 bne t5,t4,80003164 + +80002cc8 : +80002cc8: fff00093 li ra,-1 +80002ccc: 01f00113 li sp,31 +80002cd0: 0020df33 srl t5,ra,sp +80002cd4: 00100e93 li t4,1 +80002cd8: 00b00193 li gp,11 +80002cdc: 49df1463 bne t5,t4,80003164 + +80002ce0 : +80002ce0: 212120b7 lui ra,0x21212 +80002ce4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002ce8: 00000113 li sp,0 +80002cec: 0020df33 srl t5,ra,sp +80002cf0: 21212eb7 lui t4,0x21212 +80002cf4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80002cf8: 00c00193 li gp,12 +80002cfc: 47df1463 bne t5,t4,80003164 + +80002d00 : +80002d00: 212120b7 lui ra,0x21212 +80002d04: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d08: 00100113 li sp,1 +80002d0c: 0020df33 srl t5,ra,sp +80002d10: 10909eb7 lui t4,0x10909 +80002d14: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> +80002d18: 00d00193 li gp,13 +80002d1c: 45df1463 bne t5,t4,80003164 + +80002d20 : +80002d20: 212120b7 lui ra,0x21212 +80002d24: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d28: 00700113 li sp,7 +80002d2c: 0020df33 srl t5,ra,sp +80002d30: 00424eb7 lui t4,0x424 +80002d34: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> +80002d38: 00e00193 li gp,14 +80002d3c: 43df1463 bne t5,t4,80003164 + +80002d40 : +80002d40: 212120b7 lui ra,0x21212 +80002d44: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d48: 00e00113 li sp,14 +80002d4c: 0020df33 srl t5,ra,sp +80002d50: 00008eb7 lui t4,0x8 +80002d54: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> +80002d58: 00f00193 li gp,15 +80002d5c: 41df1463 bne t5,t4,80003164 + +80002d60 : +80002d60: 212120b7 lui ra,0x21212 +80002d64: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d68: 01f00113 li sp,31 +80002d6c: 0020df33 srl t5,ra,sp +80002d70: 00000e93 li t4,0 +80002d74: 01000193 li gp,16 +80002d78: 3fdf1663 bne t5,t4,80003164 + +80002d7c : +80002d7c: 212120b7 lui ra,0x21212 +80002d80: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d84: fc000113 li sp,-64 +80002d88: 0020df33 srl t5,ra,sp +80002d8c: 21212eb7 lui t4,0x21212 +80002d90: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80002d94: 01100193 li gp,17 +80002d98: 3ddf1663 bne t5,t4,80003164 + +80002d9c : +80002d9c: 212120b7 lui ra,0x21212 +80002da0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002da4: fc100113 li sp,-63 +80002da8: 0020df33 srl t5,ra,sp +80002dac: 10909eb7 lui t4,0x10909 +80002db0: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> +80002db4: 01200193 li gp,18 +80002db8: 3bdf1663 bne t5,t4,80003164 + +80002dbc : +80002dbc: 212120b7 lui ra,0x21212 +80002dc0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002dc4: fc700113 li sp,-57 +80002dc8: 0020df33 srl t5,ra,sp +80002dcc: 00424eb7 lui t4,0x424 +80002dd0: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> +80002dd4: 01300193 li gp,19 +80002dd8: 39df1663 bne t5,t4,80003164 + +80002ddc : +80002ddc: 212120b7 lui ra,0x21212 +80002de0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002de4: fce00113 li sp,-50 +80002de8: 0020df33 srl t5,ra,sp +80002dec: 00008eb7 lui t4,0x8 +80002df0: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> +80002df4: 01400193 li gp,20 +80002df8: 37df1663 bne t5,t4,80003164 + +80002dfc : +80002dfc: 212120b7 lui ra,0x21212 +80002e00: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002e04: fff00113 li sp,-1 +80002e08: 0020df33 srl t5,ra,sp +80002e0c: 00000e93 li t4,0 +80002e10: 01500193 li gp,21 +80002e14: 35df1863 bne t5,t4,80003164 + +80002e18 : +80002e18: 800000b7 lui ra,0x80000 +80002e1c: 00700113 li sp,7 +80002e20: 0020d0b3 srl ra,ra,sp +80002e24: 01000eb7 lui t4,0x1000 +80002e28: 01600193 li gp,22 +80002e2c: 33d09c63 bne ra,t4,80003164 + +80002e30 : +80002e30: 800000b7 lui ra,0x80000 +80002e34: 00e00113 li sp,14 +80002e38: 0020d133 srl sp,ra,sp +80002e3c: 00020eb7 lui t4,0x20 +80002e40: 01700193 li gp,23 +80002e44: 33d11063 bne sp,t4,80003164 + +80002e48 : +80002e48: 00700093 li ra,7 +80002e4c: 0010d0b3 srl ra,ra,ra +80002e50: 00000e93 li t4,0 +80002e54: 01800193 li gp,24 +80002e58: 31d09663 bne ra,t4,80003164 + +80002e5c : +80002e5c: 00000213 li tp,0 +80002e60: 800000b7 lui ra,0x80000 +80002e64: 00700113 li sp,7 +80002e68: 0020df33 srl t5,ra,sp +80002e6c: 000f0313 mv t1,t5 +80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e74: 00200293 li t0,2 +80002e78: fe5214e3 bne tp,t0,80002e60 +80002e7c: 01000eb7 lui t4,0x1000 +80002e80: 01900193 li gp,25 +80002e84: 2fd31063 bne t1,t4,80003164 + +80002e88 : +80002e88: 00000213 li tp,0 +80002e8c: 800000b7 lui ra,0x80000 +80002e90: 00e00113 li sp,14 +80002e94: 0020df33 srl t5,ra,sp +80002e98: 00000013 nop +80002e9c: 000f0313 mv t1,t5 +80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea4: 00200293 li t0,2 +80002ea8: fe5212e3 bne tp,t0,80002e8c +80002eac: 00020eb7 lui t4,0x20 +80002eb0: 01a00193 li gp,26 +80002eb4: 2bd31863 bne t1,t4,80003164 + +80002eb8 : +80002eb8: 00000213 li tp,0 +80002ebc: 800000b7 lui ra,0x80000 +80002ec0: 01f00113 li sp,31 +80002ec4: 0020df33 srl t5,ra,sp +80002ec8: 00000013 nop +80002ecc: 00000013 nop +80002ed0: 000f0313 mv t1,t5 +80002ed4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ed8: 00200293 li t0,2 +80002edc: fe5210e3 bne tp,t0,80002ebc +80002ee0: 00100e93 li t4,1 +80002ee4: 01b00193 li gp,27 +80002ee8: 27d31e63 bne t1,t4,80003164 + +80002eec : +80002eec: 00000213 li tp,0 +80002ef0: 800000b7 lui ra,0x80000 +80002ef4: 00700113 li sp,7 +80002ef8: 0020df33 srl t5,ra,sp +80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f00: 00200293 li t0,2 +80002f04: fe5216e3 bne tp,t0,80002ef0 +80002f08: 01000eb7 lui t4,0x1000 +80002f0c: 01c00193 li gp,28 +80002f10: 25df1a63 bne t5,t4,80003164 + +80002f14 : +80002f14: 00000213 li tp,0 +80002f18: 800000b7 lui ra,0x80000 +80002f1c: 00e00113 li sp,14 +80002f20: 00000013 nop +80002f24: 0020df33 srl t5,ra,sp +80002f28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f2c: 00200293 li t0,2 +80002f30: fe5214e3 bne tp,t0,80002f18 +80002f34: 00020eb7 lui t4,0x20 +80002f38: 01d00193 li gp,29 +80002f3c: 23df1463 bne t5,t4,80003164 + +80002f40 : +80002f40: 00000213 li tp,0 +80002f44: 800000b7 lui ra,0x80000 +80002f48: 01f00113 li sp,31 +80002f4c: 00000013 nop +80002f50: 00000013 nop +80002f54: 0020df33 srl t5,ra,sp +80002f58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f5c: 00200293 li t0,2 +80002f60: fe5212e3 bne tp,t0,80002f44 +80002f64: 00100e93 li t4,1 +80002f68: 01e00193 li gp,30 +80002f6c: 1fdf1c63 bne t5,t4,80003164 + +80002f70 : +80002f70: 00000213 li tp,0 +80002f74: 800000b7 lui ra,0x80000 +80002f78: 00000013 nop +80002f7c: 00700113 li sp,7 +80002f80: 0020df33 srl t5,ra,sp +80002f84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f88: 00200293 li t0,2 +80002f8c: fe5214e3 bne tp,t0,80002f74 +80002f90: 01000eb7 lui t4,0x1000 +80002f94: 01f00193 li gp,31 +80002f98: 1ddf1663 bne t5,t4,80003164 + +80002f9c : +80002f9c: 00000213 li tp,0 +80002fa0: 800000b7 lui ra,0x80000 +80002fa4: 00000013 nop +80002fa8: 00e00113 li sp,14 +80002fac: 00000013 nop +80002fb0: 0020df33 srl t5,ra,sp +80002fb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fb8: 00200293 li t0,2 +80002fbc: fe5212e3 bne tp,t0,80002fa0 +80002fc0: 00020eb7 lui t4,0x20 +80002fc4: 02000193 li gp,32 +80002fc8: 19df1e63 bne t5,t4,80003164 + +80002fcc : +80002fcc: 00000213 li tp,0 +80002fd0: 800000b7 lui ra,0x80000 +80002fd4: 00000013 nop +80002fd8: 00000013 nop +80002fdc: 01f00113 li sp,31 +80002fe0: 0020df33 srl t5,ra,sp +80002fe4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fe8: 00200293 li t0,2 +80002fec: fe5212e3 bne tp,t0,80002fd0 +80002ff0: 00100e93 li t4,1 +80002ff4: 02100193 li gp,33 +80002ff8: 17df1663 bne t5,t4,80003164 + +80002ffc : +80002ffc: 00000213 li tp,0 +80003000: 00700113 li sp,7 +80003004: 800000b7 lui ra,0x80000 +80003008: 0020df33 srl t5,ra,sp +8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003010: 00200293 li t0,2 +80003014: fe5216e3 bne tp,t0,80003000 +80003018: 01000eb7 lui t4,0x1000 +8000301c: 02200193 li gp,34 +80003020: 15df1263 bne t5,t4,80003164 + +80003024 : +80003024: 00000213 li tp,0 +80003028: 00e00113 li sp,14 +8000302c: 800000b7 lui ra,0x80000 +80003030: 00000013 nop +80003034: 0020df33 srl t5,ra,sp +80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000303c: 00200293 li t0,2 +80003040: fe5214e3 bne tp,t0,80003028 +80003044: 00020eb7 lui t4,0x20 +80003048: 02300193 li gp,35 +8000304c: 11df1c63 bne t5,t4,80003164 + +80003050 : +80003050: 00000213 li tp,0 +80003054: 01f00113 li sp,31 +80003058: 800000b7 lui ra,0x80000 +8000305c: 00000013 nop +80003060: 00000013 nop +80003064: 0020df33 srl t5,ra,sp +80003068: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000306c: 00200293 li t0,2 +80003070: fe5212e3 bne tp,t0,80003054 +80003074: 00100e93 li t4,1 +80003078: 02400193 li gp,36 +8000307c: 0fdf1463 bne t5,t4,80003164 + +80003080 : +80003080: 00000213 li tp,0 +80003084: 00700113 li sp,7 +80003088: 00000013 nop +8000308c: 800000b7 lui ra,0x80000 +80003090: 0020df33 srl t5,ra,sp +80003094: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003098: 00200293 li t0,2 +8000309c: fe5214e3 bne tp,t0,80003084 +800030a0: 01000eb7 lui t4,0x1000 +800030a4: 02500193 li gp,37 +800030a8: 0bdf1e63 bne t5,t4,80003164 + +800030ac : +800030ac: 00000213 li tp,0 +800030b0: 00e00113 li sp,14 +800030b4: 00000013 nop +800030b8: 800000b7 lui ra,0x80000 +800030bc: 00000013 nop +800030c0: 0020df33 srl t5,ra,sp +800030c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800030c8: 00200293 li t0,2 +800030cc: fe5212e3 bne tp,t0,800030b0 +800030d0: 00020eb7 lui t4,0x20 +800030d4: 02600193 li gp,38 +800030d8: 09df1663 bne t5,t4,80003164 + +800030dc : +800030dc: 00000213 li tp,0 +800030e0: 01f00113 li sp,31 +800030e4: 00000013 nop +800030e8: 00000013 nop +800030ec: 800000b7 lui ra,0x80000 +800030f0: 0020df33 srl t5,ra,sp +800030f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800030f8: 00200293 li t0,2 +800030fc: fe5212e3 bne tp,t0,800030e0 +80003100: 00100e93 li t4,1 +80003104: 02700193 li gp,39 +80003108: 05df1e63 bne t5,t4,80003164 + +8000310c : +8000310c: 00f00093 li ra,15 +80003110: 00105133 srl sp,zero,ra +80003114: 00000e93 li t4,0 +80003118: 02800193 li gp,40 +8000311c: 05d11463 bne sp,t4,80003164 + +80003120 : +80003120: 02000093 li ra,32 +80003124: 0000d133 srl sp,ra,zero +80003128: 02000e93 li t4,32 +8000312c: 02900193 li gp,41 +80003130: 03d11a63 bne sp,t4,80003164 + +80003134 : +80003134: 000050b3 srl ra,zero,zero +80003138: 00000e93 li t4,0 +8000313c: 02a00193 li gp,42 +80003140: 03d09263 bne ra,t4,80003164 + +80003144 : +80003144: 40000093 li ra,1024 +80003148: 00001137 lui sp,0x1 +8000314c: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800> +80003150: 0020d033 srl zero,ra,sp +80003154: 00000e93 li t4,0 +80003158: 02b00193 li gp,43 +8000315c: 01d01463 bne zero,t4,80003164 +80003160: 00301a63 bne zero,gp,80003174 + +80003164 : +80003164: 00119513 slli a0,gp,0x1 +80003168: 00050063 beqz a0,80003168 +8000316c: 00156513 ori a0,a0,1 +80003170: 00000073 ecall + +80003174 : +80003174: 00100513 li a0,1 +80003178: 00000073 ecall +8000317c: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-srli b/Tests/isa/rv32ui-v-srli new file mode 100644 index 0000000..2288dc1 Binary files /dev/null and b/Tests/isa/rv32ui-v-srli differ diff --git a/Tests/isa/rv32ui-v-srli.dump b/Tests/isa/rv32ui-v-srli.dump new file mode 100644 index 0000000..2b26a3a --- /dev/null +++ b/Tests/isa/rv32ui-v-srli.dump @@ -0,0 +1,1124 @@ + +rv32ui-v-srli: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 9d458593 addi a1,a1,-1580 # 80002e9c +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 9f058593 addi a1,a1,-1552 # 80002f28 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 99c58593 addi a1,a1,-1636 # 80002f40 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 8d058593 addi a1,a1,-1840 # 80002ee0 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 8c058593 addi a1,a1,-1856 # 80003008 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: 82858593 addi a1,a1,-2008 # 80002fe4 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 72460613 addi a2,a2,1828 # 80003034 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 63460613 addi a2,a2,1588 # 80002fb0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 5b460613 addi a2,a2,1460 # 80002f7c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01000793 li a5,16 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 08bac7b7 lui a5,0x8bac +80002b9c: 00080637 lui a2,0x80 +80002ba0: e3378793 addi a5,a5,-461 # 8babe33 <_start-0x774541cd> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 800000b7 lui ra,0x80000 +80002be4: 0000df13 srli t5,ra,0x0 +80002be8: 80000eb7 lui t4,0x80000 +80002bec: 00200193 li gp,2 +80002bf0: 29df1863 bne t5,t4,80002e80 + +80002bf4 : +80002bf4: 800000b7 lui ra,0x80000 +80002bf8: 0010df13 srli t5,ra,0x1 +80002bfc: 40000eb7 lui t4,0x40000 +80002c00: 00300193 li gp,3 +80002c04: 27df1e63 bne t5,t4,80002e80 + +80002c08 : +80002c08: 800000b7 lui ra,0x80000 +80002c0c: 0070df13 srli t5,ra,0x7 +80002c10: 01000eb7 lui t4,0x1000 +80002c14: 00400193 li gp,4 +80002c18: 27df1463 bne t5,t4,80002e80 + +80002c1c : +80002c1c: 800000b7 lui ra,0x80000 +80002c20: 00e0df13 srli t5,ra,0xe +80002c24: 00020eb7 lui t4,0x20 +80002c28: 00500193 li gp,5 +80002c2c: 25df1a63 bne t5,t4,80002e80 + +80002c30 : +80002c30: 800000b7 lui ra,0x80000 +80002c34: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002c38: 01f0df13 srli t5,ra,0x1f +80002c3c: 00100e93 li t4,1 +80002c40: 00600193 li gp,6 +80002c44: 23df1e63 bne t5,t4,80002e80 + +80002c48 : +80002c48: fff00093 li ra,-1 +80002c4c: 0000df13 srli t5,ra,0x0 +80002c50: fff00e93 li t4,-1 +80002c54: 00700193 li gp,7 +80002c58: 23df1463 bne t5,t4,80002e80 + +80002c5c : +80002c5c: fff00093 li ra,-1 +80002c60: 0010df13 srli t5,ra,0x1 +80002c64: 80000eb7 lui t4,0x80000 +80002c68: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07> +80002c6c: 00800193 li gp,8 +80002c70: 21df1863 bne t5,t4,80002e80 + +80002c74 : +80002c74: fff00093 li ra,-1 +80002c78: 0070df13 srli t5,ra,0x7 +80002c7c: 02000eb7 lui t4,0x2000 +80002c80: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001> +80002c84: 00900193 li gp,9 +80002c88: 1fdf1c63 bne t5,t4,80002e80 + +80002c8c : +80002c8c: fff00093 li ra,-1 +80002c90: 00e0df13 srli t5,ra,0xe +80002c94: 00040eb7 lui t4,0x40 +80002c98: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001> +80002c9c: 00a00193 li gp,10 +80002ca0: 1fdf1063 bne t5,t4,80002e80 + +80002ca4 : +80002ca4: fff00093 li ra,-1 +80002ca8: 01f0df13 srli t5,ra,0x1f +80002cac: 00100e93 li t4,1 +80002cb0: 00b00193 li gp,11 +80002cb4: 1ddf1663 bne t5,t4,80002e80 + +80002cb8 : +80002cb8: 212120b7 lui ra,0x21212 +80002cbc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002cc0: 0000df13 srli t5,ra,0x0 +80002cc4: 21212eb7 lui t4,0x21212 +80002cc8: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf> +80002ccc: 00c00193 li gp,12 +80002cd0: 1bdf1863 bne t5,t4,80002e80 + +80002cd4 : +80002cd4: 212120b7 lui ra,0x21212 +80002cd8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002cdc: 0010df13 srli t5,ra,0x1 +80002ce0: 10909eb7 lui t4,0x10909 +80002ce4: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70> +80002ce8: 00d00193 li gp,13 +80002cec: 19df1a63 bne t5,t4,80002e80 + +80002cf0 : +80002cf0: 212120b7 lui ra,0x21212 +80002cf4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002cf8: 0070df13 srli t5,ra,0x7 +80002cfc: 00424eb7 lui t4,0x424 +80002d00: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe> +80002d04: 00e00193 li gp,14 +80002d08: 17df1c63 bne t5,t4,80002e80 + +80002d0c : +80002d0c: 212120b7 lui ra,0x21212 +80002d10: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d14: 00e0df13 srli t5,ra,0xe +80002d18: 00008eb7 lui t4,0x8 +80002d1c: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c> +80002d20: 00f00193 li gp,15 +80002d24: 15df1e63 bne t5,t4,80002e80 + +80002d28 : +80002d28: 212120b7 lui ra,0x21212 +80002d2c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf> +80002d30: 01f0df13 srli t5,ra,0x1f +80002d34: 00000e93 li t4,0 +80002d38: 01000193 li gp,16 +80002d3c: 15df1263 bne t5,t4,80002e80 + +80002d40 : +80002d40: 800000b7 lui ra,0x80000 +80002d44: 0070d093 srli ra,ra,0x7 +80002d48: 01000eb7 lui t4,0x1000 +80002d4c: 01100193 li gp,17 +80002d50: 13d09863 bne ra,t4,80002e80 + +80002d54 : +80002d54: 00000213 li tp,0 +80002d58: 800000b7 lui ra,0x80000 +80002d5c: 0070df13 srli t5,ra,0x7 +80002d60: 000f0313 mv t1,t5 +80002d64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d68: 00200293 li t0,2 +80002d6c: fe5216e3 bne tp,t0,80002d58 +80002d70: 01000eb7 lui t4,0x1000 +80002d74: 01200193 li gp,18 +80002d78: 11d31463 bne t1,t4,80002e80 + +80002d7c : +80002d7c: 00000213 li tp,0 +80002d80: 800000b7 lui ra,0x80000 +80002d84: 00e0df13 srli t5,ra,0xe +80002d88: 00000013 nop +80002d8c: 000f0313 mv t1,t5 +80002d90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d94: 00200293 li t0,2 +80002d98: fe5214e3 bne tp,t0,80002d80 +80002d9c: 00020eb7 lui t4,0x20 +80002da0: 01300193 li gp,19 +80002da4: 0dd31e63 bne t1,t4,80002e80 + +80002da8 : +80002da8: 00000213 li tp,0 +80002dac: 800000b7 lui ra,0x80000 +80002db0: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002db4: 01f0df13 srli t5,ra,0x1f +80002db8: 00000013 nop +80002dbc: 00000013 nop +80002dc0: 000f0313 mv t1,t5 +80002dc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dc8: 00200293 li t0,2 +80002dcc: fe5210e3 bne tp,t0,80002dac +80002dd0: 00100e93 li t4,1 +80002dd4: 01400193 li gp,20 +80002dd8: 0bd31463 bne t1,t4,80002e80 + +80002ddc : +80002ddc: 00000213 li tp,0 +80002de0: 800000b7 lui ra,0x80000 +80002de4: 0070df13 srli t5,ra,0x7 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fe5218e3 bne tp,t0,80002de0 +80002df4: 01000eb7 lui t4,0x1000 +80002df8: 01500193 li gp,21 +80002dfc: 09df1263 bne t5,t4,80002e80 + +80002e00 : +80002e00: 00000213 li tp,0 +80002e04: 800000b7 lui ra,0x80000 +80002e08: 00000013 nop +80002e0c: 00e0df13 srli t5,ra,0xe +80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e14: 00200293 li t0,2 +80002e18: fe5216e3 bne tp,t0,80002e04 +80002e1c: 00020eb7 lui t4,0x20 +80002e20: 01600193 li gp,22 +80002e24: 05df1e63 bne t5,t4,80002e80 + +80002e28 : +80002e28: 00000213 li tp,0 +80002e2c: 800000b7 lui ra,0x80000 +80002e30: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09> +80002e34: 00000013 nop +80002e38: 00000013 nop +80002e3c: 01f0df13 srli t5,ra,0x1f +80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e44: 00200293 li t0,2 +80002e48: fe5212e3 bne tp,t0,80002e2c +80002e4c: 00100e93 li t4,1 +80002e50: 01700193 li gp,23 +80002e54: 03df1663 bne t5,t4,80002e80 + +80002e58 : +80002e58: 00405093 srli ra,zero,0x4 +80002e5c: 00000e93 li t4,0 +80002e60: 01800193 li gp,24 +80002e64: 01d09e63 bne ra,t4,80002e80 + +80002e68 : +80002e68: 02100093 li ra,33 +80002e6c: 00a0d013 srli zero,ra,0xa +80002e70: 00000e93 li t4,0 +80002e74: 01900193 li gp,25 +80002e78: 01d01463 bne zero,t4,80002e80 +80002e7c: 00301a63 bne zero,gp,80002e90 + +80002e80 : +80002e80: 00119513 slli a0,gp,0x1 +80002e84: 00050063 beqz a0,80002e84 +80002e88: 00156513 ori a0,a0,1 +80002e8c: 00000073 ecall + +80002e90 : +80002e90: 00100513 li a0,1 +80002e94: 00000073 ecall +80002e98: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-sub b/Tests/isa/rv32ui-v-sub new file mode 100644 index 0000000..9c3292f Binary files /dev/null and b/Tests/isa/rv32ui-v-sub differ diff --git a/Tests/isa/rv32ui-v-sub.dump b/Tests/isa/rv32ui-v-sub.dump new file mode 100644 index 0000000..8ab87f3 --- /dev/null +++ b/Tests/isa/rv32ui-v-sub.dump @@ -0,0 +1,1284 @@ + +rv32ui-v-sub: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bf458593 addi a1,a1,-1036 # 800030bc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1058593 addi a1,a1,-1008 # 80003148 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bbc58593 addi a1,a1,-1092 # 80003160 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af058593 addi a1,a1,-1296 # 80003100 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae058593 addi a1,a1,-1312 # 80003228 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a4858593 addi a1,a1,-1464 # 80003204 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94460613 addi a2,a2,-1724 # 80003254 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85460613 addi a2,a2,-1964 # 800031d0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7d460613 addi a2,a2,2004 # 8000319c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03300793 li a5,51 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 059d47b7 lui a5,0x59d4 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 07078793 addi a5,a5,112 # 59d4070 <_start-0x7a62bf90> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00000113 li sp,0 +80002be8: 40208f33 sub t5,ra,sp +80002bec: 00000e93 li t4,0 +80002bf0: 00200193 li gp,2 +80002bf4: 4bdf1663 bne t5,t4,800030a0 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 40208f33 sub t5,ra,sp +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 49df1a63 bne t5,t4,800030a0 + +80002c10 : +80002c10: 00300093 li ra,3 +80002c14: 00700113 li sp,7 +80002c18: 40208f33 sub t5,ra,sp +80002c1c: ffc00e93 li t4,-4 +80002c20: 00400193 li gp,4 +80002c24: 47df1e63 bne t5,t4,800030a0 + +80002c28 : +80002c28: 00000093 li ra,0 +80002c2c: ffff8137 lui sp,0xffff8 +80002c30: 40208f33 sub t5,ra,sp +80002c34: 00008eb7 lui t4,0x8 +80002c38: 00500193 li gp,5 +80002c3c: 47df1263 bne t5,t4,800030a0 + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00000113 li sp,0 +80002c48: 40208f33 sub t5,ra,sp +80002c4c: 80000eb7 lui t4,0x80000 +80002c50: 00600193 li gp,6 +80002c54: 45df1663 bne t5,t4,800030a0 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: ffff8137 lui sp,0xffff8 +80002c60: 40208f33 sub t5,ra,sp +80002c64: 80008eb7 lui t4,0x80008 +80002c68: 00700193 li gp,7 +80002c6c: 43df1a63 bne t5,t4,800030a0 + +80002c70 : +80002c70: 00000093 li ra,0 +80002c74: 00008137 lui sp,0x8 +80002c78: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002c7c: 40208f33 sub t5,ra,sp +80002c80: ffff8eb7 lui t4,0xffff8 +80002c84: 001e8e93 addi t4,t4,1 # ffff8001 <_end+0x7fff1c09> +80002c88: 00800193 li gp,8 +80002c8c: 41df1a63 bne t5,t4,800030a0 + +80002c90 : +80002c90: 800000b7 lui ra,0x80000 +80002c94: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002c98: 00000113 li sp,0 +80002c9c: 40208f33 sub t5,ra,sp +80002ca0: 80000eb7 lui t4,0x80000 +80002ca4: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07> +80002ca8: 00900193 li gp,9 +80002cac: 3fdf1a63 bne t5,t4,800030a0 + +80002cb0 : +80002cb0: 800000b7 lui ra,0x80000 +80002cb4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cb8: 00008137 lui sp,0x8 +80002cbc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002cc0: 40208f33 sub t5,ra,sp +80002cc4: 7fff8eb7 lui t4,0x7fff8 +80002cc8: 00a00193 li gp,10 +80002ccc: 3ddf1a63 bne t5,t4,800030a0 + +80002cd0 : +80002cd0: 800000b7 lui ra,0x80000 +80002cd4: 00008137 lui sp,0x8 +80002cd8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001> +80002cdc: 40208f33 sub t5,ra,sp +80002ce0: 7fff8eb7 lui t4,0x7fff8 +80002ce4: 001e8e93 addi t4,t4,1 # 7fff8001 <_start-0x7fff> +80002ce8: 00b00193 li gp,11 +80002cec: 3bdf1a63 bne t5,t4,800030a0 + +80002cf0 : +80002cf0: 800000b7 lui ra,0x80000 +80002cf4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07> +80002cf8: ffff8137 lui sp,0xffff8 +80002cfc: 40208f33 sub t5,ra,sp +80002d00: 80008eb7 lui t4,0x80008 +80002d04: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x1c07> +80002d08: 00c00193 li gp,12 +80002d0c: 39df1a63 bne t5,t4,800030a0 + +80002d10 : +80002d10: 00000093 li ra,0 +80002d14: fff00113 li sp,-1 +80002d18: 40208f33 sub t5,ra,sp +80002d1c: 00100e93 li t4,1 +80002d20: 00d00193 li gp,13 +80002d24: 37df1e63 bne t5,t4,800030a0 + +80002d28 : +80002d28: fff00093 li ra,-1 +80002d2c: 00100113 li sp,1 +80002d30: 40208f33 sub t5,ra,sp +80002d34: ffe00e93 li t4,-2 +80002d38: 00e00193 li gp,14 +80002d3c: 37df1263 bne t5,t4,800030a0 + +80002d40 : +80002d40: fff00093 li ra,-1 +80002d44: fff00113 li sp,-1 +80002d48: 40208f33 sub t5,ra,sp +80002d4c: 00000e93 li t4,0 +80002d50: 00f00193 li gp,15 +80002d54: 35df1663 bne t5,t4,800030a0 + +80002d58 : +80002d58: 00d00093 li ra,13 +80002d5c: 00b00113 li sp,11 +80002d60: 402080b3 sub ra,ra,sp +80002d64: 00200e93 li t4,2 +80002d68: 01000193 li gp,16 +80002d6c: 33d09a63 bne ra,t4,800030a0 + +80002d70 : +80002d70: 00e00093 li ra,14 +80002d74: 00b00113 li sp,11 +80002d78: 40208133 sub sp,ra,sp +80002d7c: 00300e93 li t4,3 +80002d80: 01100193 li gp,17 +80002d84: 31d11e63 bne sp,t4,800030a0 + +80002d88 : +80002d88: 00d00093 li ra,13 +80002d8c: 401080b3 sub ra,ra,ra +80002d90: 00000e93 li t4,0 +80002d94: 01200193 li gp,18 +80002d98: 31d09463 bne ra,t4,800030a0 + +80002d9c : +80002d9c: 00000213 li tp,0 +80002da0: 00d00093 li ra,13 +80002da4: 00b00113 li sp,11 +80002da8: 40208f33 sub t5,ra,sp +80002dac: 000f0313 mv t1,t5 +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5214e3 bne tp,t0,80002da0 +80002dbc: 00200e93 li t4,2 +80002dc0: 01300193 li gp,19 +80002dc4: 2dd31e63 bne t1,t4,800030a0 + +80002dc8 : +80002dc8: 00000213 li tp,0 +80002dcc: 00e00093 li ra,14 +80002dd0: 00b00113 li sp,11 +80002dd4: 40208f33 sub t5,ra,sp +80002dd8: 00000013 nop +80002ddc: 000f0313 mv t1,t5 +80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002de4: 00200293 li t0,2 +80002de8: fe5212e3 bne tp,t0,80002dcc +80002dec: 00300e93 li t4,3 +80002df0: 01400193 li gp,20 +80002df4: 2bd31663 bne t1,t4,800030a0 + +80002df8 : +80002df8: 00000213 li tp,0 +80002dfc: 00f00093 li ra,15 +80002e00: 00b00113 li sp,11 +80002e04: 40208f33 sub t5,ra,sp +80002e08: 00000013 nop +80002e0c: 00000013 nop +80002e10: 000f0313 mv t1,t5 +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fe5210e3 bne tp,t0,80002dfc +80002e20: 00400e93 li t4,4 +80002e24: 01500193 li gp,21 +80002e28: 27d31c63 bne t1,t4,800030a0 + +80002e2c : +80002e2c: 00000213 li tp,0 +80002e30: 00d00093 li ra,13 +80002e34: 00b00113 li sp,11 +80002e38: 40208f33 sub t5,ra,sp +80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e40: 00200293 li t0,2 +80002e44: fe5216e3 bne tp,t0,80002e30 +80002e48: 00200e93 li t4,2 +80002e4c: 01600193 li gp,22 +80002e50: 25df1863 bne t5,t4,800030a0 + +80002e54 : +80002e54: 00000213 li tp,0 +80002e58: 00e00093 li ra,14 +80002e5c: 00b00113 li sp,11 +80002e60: 00000013 nop +80002e64: 40208f33 sub t5,ra,sp +80002e68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e6c: 00200293 li t0,2 +80002e70: fe5214e3 bne tp,t0,80002e58 +80002e74: 00300e93 li t4,3 +80002e78: 01700193 li gp,23 +80002e7c: 23df1263 bne t5,t4,800030a0 + +80002e80 : +80002e80: 00000213 li tp,0 +80002e84: 00f00093 li ra,15 +80002e88: 00b00113 li sp,11 +80002e8c: 00000013 nop +80002e90: 00000013 nop +80002e94: 40208f33 sub t5,ra,sp +80002e98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e9c: 00200293 li t0,2 +80002ea0: fe5212e3 bne tp,t0,80002e84 +80002ea4: 00400e93 li t4,4 +80002ea8: 01800193 li gp,24 +80002eac: 1fdf1a63 bne t5,t4,800030a0 + +80002eb0 : +80002eb0: 00000213 li tp,0 +80002eb4: 00d00093 li ra,13 +80002eb8: 00000013 nop +80002ebc: 00b00113 li sp,11 +80002ec0: 40208f33 sub t5,ra,sp +80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ec8: 00200293 li t0,2 +80002ecc: fe5214e3 bne tp,t0,80002eb4 +80002ed0: 00200e93 li t4,2 +80002ed4: 01900193 li gp,25 +80002ed8: 1ddf1463 bne t5,t4,800030a0 + +80002edc : +80002edc: 00000213 li tp,0 +80002ee0: 00e00093 li ra,14 +80002ee4: 00000013 nop +80002ee8: 00b00113 li sp,11 +80002eec: 00000013 nop +80002ef0: 40208f33 sub t5,ra,sp +80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ef8: 00200293 li t0,2 +80002efc: fe5212e3 bne tp,t0,80002ee0 +80002f00: 00300e93 li t4,3 +80002f04: 01a00193 li gp,26 +80002f08: 19df1c63 bne t5,t4,800030a0 + +80002f0c : +80002f0c: 00000213 li tp,0 +80002f10: 00f00093 li ra,15 +80002f14: 00000013 nop +80002f18: 00000013 nop +80002f1c: 00b00113 li sp,11 +80002f20: 40208f33 sub t5,ra,sp +80002f24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f28: 00200293 li t0,2 +80002f2c: fe5212e3 bne tp,t0,80002f10 +80002f30: 00400e93 li t4,4 +80002f34: 01b00193 li gp,27 +80002f38: 17df1463 bne t5,t4,800030a0 + +80002f3c : +80002f3c: 00000213 li tp,0 +80002f40: 00b00113 li sp,11 +80002f44: 00d00093 li ra,13 +80002f48: 40208f33 sub t5,ra,sp +80002f4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f50: 00200293 li t0,2 +80002f54: fe5216e3 bne tp,t0,80002f40 +80002f58: 00200e93 li t4,2 +80002f5c: 01c00193 li gp,28 +80002f60: 15df1063 bne t5,t4,800030a0 + +80002f64 : +80002f64: 00000213 li tp,0 +80002f68: 00b00113 li sp,11 +80002f6c: 00e00093 li ra,14 +80002f70: 00000013 nop +80002f74: 40208f33 sub t5,ra,sp +80002f78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f7c: 00200293 li t0,2 +80002f80: fe5214e3 bne tp,t0,80002f68 +80002f84: 00300e93 li t4,3 +80002f88: 01d00193 li gp,29 +80002f8c: 11df1a63 bne t5,t4,800030a0 + +80002f90 : +80002f90: 00000213 li tp,0 +80002f94: 00b00113 li sp,11 +80002f98: 00f00093 li ra,15 +80002f9c: 00000013 nop +80002fa0: 00000013 nop +80002fa4: 40208f33 sub t5,ra,sp +80002fa8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fac: 00200293 li t0,2 +80002fb0: fe5212e3 bne tp,t0,80002f94 +80002fb4: 00400e93 li t4,4 +80002fb8: 01e00193 li gp,30 +80002fbc: 0fdf1263 bne t5,t4,800030a0 + +80002fc0 : +80002fc0: 00000213 li tp,0 +80002fc4: 00b00113 li sp,11 +80002fc8: 00000013 nop +80002fcc: 00d00093 li ra,13 +80002fd0: 40208f33 sub t5,ra,sp +80002fd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fd8: 00200293 li t0,2 +80002fdc: fe5214e3 bne tp,t0,80002fc4 +80002fe0: 00200e93 li t4,2 +80002fe4: 01f00193 li gp,31 +80002fe8: 0bdf1c63 bne t5,t4,800030a0 + +80002fec : +80002fec: 00000213 li tp,0 +80002ff0: 00b00113 li sp,11 +80002ff4: 00000013 nop +80002ff8: 00e00093 li ra,14 +80002ffc: 00000013 nop +80003000: 40208f33 sub t5,ra,sp +80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003008: 00200293 li t0,2 +8000300c: fe5212e3 bne tp,t0,80002ff0 +80003010: 00300e93 li t4,3 +80003014: 02000193 li gp,32 +80003018: 09df1463 bne t5,t4,800030a0 + +8000301c : +8000301c: 00000213 li tp,0 +80003020: 00b00113 li sp,11 +80003024: 00000013 nop +80003028: 00000013 nop +8000302c: 00f00093 li ra,15 +80003030: 40208f33 sub t5,ra,sp +80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003038: 00200293 li t0,2 +8000303c: fe5212e3 bne tp,t0,80003020 +80003040: 00400e93 li t4,4 +80003044: 02100193 li gp,33 +80003048: 05df1c63 bne t5,t4,800030a0 + +8000304c : +8000304c: ff100093 li ra,-15 +80003050: 40100133 neg sp,ra +80003054: 00f00e93 li t4,15 +80003058: 02200193 li gp,34 +8000305c: 05d11263 bne sp,t4,800030a0 + +80003060 : +80003060: 02000093 li ra,32 +80003064: 40008133 sub sp,ra,zero +80003068: 02000e93 li t4,32 +8000306c: 02300193 li gp,35 +80003070: 03d11863 bne sp,t4,800030a0 + +80003074 : +80003074: 400000b3 neg ra,zero +80003078: 00000e93 li t4,0 +8000307c: 02400193 li gp,36 +80003080: 03d09063 bne ra,t4,800030a0 + +80003084 : +80003084: 01000093 li ra,16 +80003088: 01e00113 li sp,30 +8000308c: 40208033 sub zero,ra,sp +80003090: 00000e93 li t4,0 +80003094: 02500193 li gp,37 +80003098: 01d01463 bne zero,t4,800030a0 +8000309c: 00301a63 bne zero,gp,800030b0 + +800030a0 : +800030a0: 00119513 slli a0,gp,0x1 +800030a4: 00050063 beqz a0,800030a4 +800030a8: 00156513 ori a0,a0,1 +800030ac: 00000073 ecall + +800030b0 : +800030b0: 00100513 li a0,1 +800030b4: 00000073 ecall +800030b8: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-sw b/Tests/isa/rv32ui-v-sw new file mode 100644 index 0000000..a72faa3 Binary files /dev/null and b/Tests/isa/rv32ui-v-sw differ diff --git a/Tests/isa/rv32ui-v-sw.dump b/Tests/isa/rv32ui-v-sw.dump new file mode 100644 index 0000000..7e98073 --- /dev/null +++ b/Tests/isa/rv32ui-v-sw.dump @@ -0,0 +1,1273 @@ + +rv32ui-v-sw: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00008117 auipc sp,0x8 +8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00003317 auipc t1,0x3 +80002370: c9430313 addi t1,t1,-876 # 80005000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00005797 auipc a5,0x5 +8000238c: 06c78793 addi a5,a5,108 # 800073f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00005717 auipc a4,0x5 +800023a0: 05470713 addi a4,a4,84 # 800073f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00005697 auipc a3,0x5 +800023ac: 04f6a623 sw a5,76(a3) # 800073f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00005717 auipc a4,0x5 +800023dc: e2070713 addi a4,a4,-480 # 800071f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00005797 auipc a5,0x5 +800024bc: f207ac23 sw zero,-200(a5) # 800073f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bb858593 addi a1,a1,-1096 # 80003080 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: bd458593 addi a1,a1,-1068 # 8000310c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: b8058593 addi a1,a1,-1152 # 80003124 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: ab458593 addi a1,a1,-1356 # 800030c4 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: aa458593 addi a1,a1,-1372 # 800031ec +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a0c58593 addi a1,a1,-1524 # 800031c8 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00005b17 auipc s6,0x5 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00002d17 auipc s10,0x2 +80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00005717 auipc a4,0x5 +8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00005717 auipc a4,0x5 +800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00005717 auipc a4,0x5 +800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 +80002900: 00005717 auipc a4,0x5 +80002904: aef72a23 sw a5,-1292(a4) # 800073f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 90860613 addi a2,a2,-1784 # 80003218 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 81860613 addi a2,a2,-2024 # 80003194 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 79860613 addi a2,a2,1944 # 80003160 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00003797 auipc a5,0x3 +80002a4c: 5b878793 addi a5,a5,1464 # 80006000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00002697 auipc a3,0x2 +80002a60: 5af6a223 sw a5,1444(a3) # 80005000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00002717 auipc a4,0x2 +80002a6c: 59870713 addi a4,a4,1432 # 80005000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00003697 auipc a3,0x3 +80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc04797 auipc a5,0x7fc04 +80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08> +80002af0: 00005717 auipc a4,0x5 +80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 +80002af8: 7fc04797 auipc a5,0x7fc04 +80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8> +80002b00: 00005717 auipc a4,0x5 +80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00004717 auipc a4,0x4 +80002b10: 4f470713 addi a4,a4,1268 # 80007000 +80002b14: 00004317 auipc t1,0x4 +80002b18: 6e430313 addi t1,t1,1764 # 800071f8 +80002b1c: 03600793 li a5,54 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00004797 auipc a5,0x4 +80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 01adb7b7 lui a5,0x1adb +80002b9c: 00080637 lui a2,0x80 +80002ba0: faf78793 addi a5,a5,-81 # 1adafaf <_start-0x7e525051> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00001097 auipc ra,0x1 +80002be4: 42008093 addi ra,ra,1056 # 80004000 +80002be8: 00aa0137 lui sp,0xaa0 +80002bec: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56> +80002bf0: 0020a023 sw sp,0(ra) +80002bf4: 0000af03 lw t5,0(ra) +80002bf8: 00aa0eb7 lui t4,0xaa0 +80002bfc: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56> +80002c00: 00200193 li gp,2 +80002c04: 47df1063 bne t5,t4,80003064 + +80002c08 : +80002c08: 00001097 auipc ra,0x1 +80002c0c: 3f808093 addi ra,ra,1016 # 80004000 +80002c10: aa00b137 lui sp,0xaa00b +80002c14: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a003608> +80002c18: 0020a223 sw sp,4(ra) +80002c1c: 0040af03 lw t5,4(ra) +80002c20: aa00beb7 lui t4,0xaa00b +80002c24: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a003608> +80002c28: 00300193 li gp,3 +80002c2c: 43df1c63 bne t5,t4,80003064 + +80002c30 : +80002c30: 00001097 auipc ra,0x1 +80002c34: 3d008093 addi ra,ra,976 # 80004000 +80002c38: 0aa01137 lui sp,0xaa01 +80002c3c: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560> +80002c40: 0020a423 sw sp,8(ra) +80002c44: 0080af03 lw t5,8(ra) +80002c48: 0aa01eb7 lui t4,0xaa01 +80002c4c: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560> +80002c50: 00400193 li gp,4 +80002c54: 41df1863 bne t5,t4,80003064 + +80002c58 : +80002c58: 00001097 auipc ra,0x1 +80002c5c: 3a808093 addi ra,ra,936 # 80004000 +80002c60: a00aa137 lui sp,0xa00aa +80002c64: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a2c12> +80002c68: 0020a623 sw sp,12(ra) +80002c6c: 00c0af03 lw t5,12(ra) +80002c70: a00aaeb7 lui t4,0xa00aa +80002c74: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a2c12> +80002c78: 00500193 li gp,5 +80002c7c: 3fdf1463 bne t5,t4,80003064 + +80002c80 : +80002c80: 00001097 auipc ra,0x1 +80002c84: 39c08093 addi ra,ra,924 # 8000401c +80002c88: 00aa0137 lui sp,0xaa0 +80002c8c: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56> +80002c90: fe20aa23 sw sp,-12(ra) +80002c94: ff40af03 lw t5,-12(ra) +80002c98: 00aa0eb7 lui t4,0xaa0 +80002c9c: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56> +80002ca0: 00600193 li gp,6 +80002ca4: 3ddf1063 bne t5,t4,80003064 + +80002ca8 : +80002ca8: 00001097 auipc ra,0x1 +80002cac: 37408093 addi ra,ra,884 # 8000401c +80002cb0: aa00b137 lui sp,0xaa00b +80002cb4: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a003608> +80002cb8: fe20ac23 sw sp,-8(ra) +80002cbc: ff80af03 lw t5,-8(ra) +80002cc0: aa00beb7 lui t4,0xaa00b +80002cc4: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a003608> +80002cc8: 00700193 li gp,7 +80002ccc: 39df1c63 bne t5,t4,80003064 + +80002cd0 : +80002cd0: 00001097 auipc ra,0x1 +80002cd4: 34c08093 addi ra,ra,844 # 8000401c +80002cd8: 0aa01137 lui sp,0xaa01 +80002cdc: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560> +80002ce0: fe20ae23 sw sp,-4(ra) +80002ce4: ffc0af03 lw t5,-4(ra) +80002ce8: 0aa01eb7 lui t4,0xaa01 +80002cec: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560> +80002cf0: 00800193 li gp,8 +80002cf4: 37df1863 bne t5,t4,80003064 + +80002cf8 : +80002cf8: 00001097 auipc ra,0x1 +80002cfc: 32408093 addi ra,ra,804 # 8000401c +80002d00: a00aa137 lui sp,0xa00aa +80002d04: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a2c12> +80002d08: 0020a023 sw sp,0(ra) +80002d0c: 0000af03 lw t5,0(ra) +80002d10: a00aaeb7 lui t4,0xa00aa +80002d14: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a2c12> +80002d18: 00900193 li gp,9 +80002d1c: 35df1463 bne t5,t4,80003064 + +80002d20 : +80002d20: 00001097 auipc ra,0x1 +80002d24: 30008093 addi ra,ra,768 # 80004020 +80002d28: 12345137 lui sp,0x12345 +80002d2c: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988> +80002d30: fe008213 addi tp,ra,-32 +80002d34: 02222023 sw sp,32(tp) # 20 <_start-0x7fffffe0> +80002d38: 0000a283 lw t0,0(ra) +80002d3c: 12345eb7 lui t4,0x12345 +80002d40: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988> +80002d44: 00a00193 li gp,10 +80002d48: 31d29e63 bne t0,t4,80003064 + +80002d4c : +80002d4c: 00001097 auipc ra,0x1 +80002d50: 2d408093 addi ra,ra,724 # 80004020 +80002d54: 58213137 lui sp,0x58213 +80002d58: 09810113 addi sp,sp,152 # 58213098 <_start-0x27decf68> +80002d5c: ffd08093 addi ra,ra,-3 +80002d60: 0020a3a3 sw sp,7(ra) +80002d64: 00001217 auipc tp,0x1 +80002d68: 2c020213 addi tp,tp,704 # 80004024 +80002d6c: 00022283 lw t0,0(tp) # 0 <_start-0x80000000> +80002d70: 58213eb7 lui t4,0x58213 +80002d74: 098e8e93 addi t4,t4,152 # 58213098 <_start-0x27decf68> +80002d78: 00b00193 li gp,11 +80002d7c: 2fd29463 bne t0,t4,80003064 + +80002d80 : +80002d80: 00c00193 li gp,12 +80002d84: 00000213 li tp,0 +80002d88: aabbd0b7 lui ra,0xaabbd +80002d8c: cdd08093 addi ra,ra,-803 # aabbccdd <_end+0x2abb58e5> +80002d90: 00001117 auipc sp,0x1 +80002d94: 27010113 addi sp,sp,624 # 80004000 +80002d98: 00112023 sw ra,0(sp) +80002d9c: 00012f03 lw t5,0(sp) +80002da0: aabbdeb7 lui t4,0xaabbd +80002da4: cdde8e93 addi t4,t4,-803 # aabbccdd <_end+0x2abb58e5> +80002da8: 2bdf1e63 bne t5,t4,80003064 +80002dac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db0: 00200293 li t0,2 +80002db4: fc521ae3 bne tp,t0,80002d88 + +80002db8 : +80002db8: 00d00193 li gp,13 +80002dbc: 00000213 li tp,0 +80002dc0: daabc0b7 lui ra,0xdaabc +80002dc4: ccd08093 addi ra,ra,-819 # daabbccd <_end+0x5aab48d5> +80002dc8: 00001117 auipc sp,0x1 +80002dcc: 23810113 addi sp,sp,568 # 80004000 +80002dd0: 00000013 nop +80002dd4: 00112223 sw ra,4(sp) +80002dd8: 00412f03 lw t5,4(sp) +80002ddc: daabceb7 lui t4,0xdaabc +80002de0: ccde8e93 addi t4,t4,-819 # daabbccd <_end+0x5aab48d5> +80002de4: 29df1063 bne t5,t4,80003064 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fc5218e3 bne tp,t0,80002dc0 + +80002df4 : +80002df4: 00e00193 li gp,14 +80002df8: 00000213 li tp,0 +80002dfc: ddaac0b7 lui ra,0xddaac +80002e00: bcc08093 addi ra,ra,-1076 # ddaabbcc <_end+0x5daa47d4> +80002e04: 00001117 auipc sp,0x1 +80002e08: 1fc10113 addi sp,sp,508 # 80004000 +80002e0c: 00000013 nop +80002e10: 00000013 nop +80002e14: 00112423 sw ra,8(sp) +80002e18: 00812f03 lw t5,8(sp) +80002e1c: ddaaceb7 lui t4,0xddaac +80002e20: bcce8e93 addi t4,t4,-1076 # ddaabbcc <_end+0x5daa47d4> +80002e24: 25df1063 bne t5,t4,80003064 +80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e2c: 00200293 li t0,2 +80002e30: fc5216e3 bne tp,t0,80002dfc + +80002e34 : +80002e34: 00f00193 li gp,15 +80002e38: 00000213 li tp,0 +80002e3c: cddab0b7 lui ra,0xcddab +80002e40: bbc08093 addi ra,ra,-1092 # cddaabbc <_end+0x4dda37c4> +80002e44: 00000013 nop +80002e48: 00001117 auipc sp,0x1 +80002e4c: 1b810113 addi sp,sp,440 # 80004000 +80002e50: 00112623 sw ra,12(sp) +80002e54: 00c12f03 lw t5,12(sp) +80002e58: cddabeb7 lui t4,0xcddab +80002e5c: bbce8e93 addi t4,t4,-1092 # cddaabbc <_end+0x4dda37c4> +80002e60: 21df1263 bne t5,t4,80003064 +80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e68: 00200293 li t0,2 +80002e6c: fc5218e3 bne tp,t0,80002e3c + +80002e70 : +80002e70: 01000193 li gp,16 +80002e74: 00000213 li tp,0 +80002e78: ccddb0b7 lui ra,0xccddb +80002e7c: abb08093 addi ra,ra,-1349 # ccddaabb <_end+0x4cdd36c3> +80002e80: 00000013 nop +80002e84: 00001117 auipc sp,0x1 +80002e88: 17c10113 addi sp,sp,380 # 80004000 +80002e8c: 00000013 nop +80002e90: 00112823 sw ra,16(sp) +80002e94: 01012f03 lw t5,16(sp) +80002e98: ccddbeb7 lui t4,0xccddb +80002e9c: abbe8e93 addi t4,t4,-1349 # ccddaabb <_end+0x4cdd36c3> +80002ea0: 1ddf1263 bne t5,t4,80003064 +80002ea4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea8: 00200293 li t0,2 +80002eac: fc5216e3 bne tp,t0,80002e78 + +80002eb0 : +80002eb0: 01100193 li gp,17 +80002eb4: 00000213 li tp,0 +80002eb8: bccde0b7 lui ra,0xbccde +80002ebc: aab08093 addi ra,ra,-1365 # bccddaab <_end+0x3ccd66b3> +80002ec0: 00000013 nop +80002ec4: 00000013 nop +80002ec8: 00001117 auipc sp,0x1 +80002ecc: 13810113 addi sp,sp,312 # 80004000 +80002ed0: 00112a23 sw ra,20(sp) +80002ed4: 01412f03 lw t5,20(sp) +80002ed8: bccdeeb7 lui t4,0xbccde +80002edc: aabe8e93 addi t4,t4,-1365 # bccddaab <_end+0x3ccd66b3> +80002ee0: 19df1263 bne t5,t4,80003064 +80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ee8: 00200293 li t0,2 +80002eec: fc5216e3 bne tp,t0,80002eb8 + +80002ef0 : +80002ef0: 01200193 li gp,18 +80002ef4: 00000213 li tp,0 +80002ef8: 00001117 auipc sp,0x1 +80002efc: 10810113 addi sp,sp,264 # 80004000 +80002f00: 001120b7 lui ra,0x112 +80002f04: 23308093 addi ra,ra,563 # 112233 <_start-0x7feeddcd> +80002f08: 00112023 sw ra,0(sp) +80002f0c: 00012f03 lw t5,0(sp) +80002f10: 00112eb7 lui t4,0x112 +80002f14: 233e8e93 addi t4,t4,563 # 112233 <_start-0x7feeddcd> +80002f18: 15df1663 bne t5,t4,80003064 +80002f1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f20: 00200293 li t0,2 +80002f24: fc521ae3 bne tp,t0,80002ef8 + +80002f28 : +80002f28: 01300193 li gp,19 +80002f2c: 00000213 li tp,0 +80002f30: 00001117 auipc sp,0x1 +80002f34: 0d010113 addi sp,sp,208 # 80004000 +80002f38: 300110b7 lui ra,0x30011 +80002f3c: 22308093 addi ra,ra,547 # 30011223 <_start-0x4ffeeddd> +80002f40: 00000013 nop +80002f44: 00112223 sw ra,4(sp) +80002f48: 00412f03 lw t5,4(sp) +80002f4c: 30011eb7 lui t4,0x30011 +80002f50: 223e8e93 addi t4,t4,547 # 30011223 <_start-0x4ffeeddd> +80002f54: 11df1863 bne t5,t4,80003064 +80002f58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f5c: 00200293 li t0,2 +80002f60: fc5218e3 bne tp,t0,80002f30 + +80002f64 : +80002f64: 01400193 li gp,20 +80002f68: 00000213 li tp,0 +80002f6c: 00001117 auipc sp,0x1 +80002f70: 09410113 addi sp,sp,148 # 80004000 +80002f74: 330010b7 lui ra,0x33001 +80002f78: 12208093 addi ra,ra,290 # 33001122 <_start-0x4cffeede> +80002f7c: 00000013 nop +80002f80: 00000013 nop +80002f84: 00112423 sw ra,8(sp) +80002f88: 00812f03 lw t5,8(sp) +80002f8c: 33001eb7 lui t4,0x33001 +80002f90: 122e8e93 addi t4,t4,290 # 33001122 <_start-0x4cffeede> +80002f94: 0ddf1863 bne t5,t4,80003064 +80002f98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f9c: 00200293 li t0,2 +80002fa0: fc5216e3 bne tp,t0,80002f6c + +80002fa4 : +80002fa4: 01500193 li gp,21 +80002fa8: 00000213 li tp,0 +80002fac: 00001117 auipc sp,0x1 +80002fb0: 05410113 addi sp,sp,84 # 80004000 +80002fb4: 00000013 nop +80002fb8: 233000b7 lui ra,0x23300 +80002fbc: 11208093 addi ra,ra,274 # 23300112 <_start-0x5ccffeee> +80002fc0: 00112623 sw ra,12(sp) +80002fc4: 00c12f03 lw t5,12(sp) +80002fc8: 23300eb7 lui t4,0x23300 +80002fcc: 112e8e93 addi t4,t4,274 # 23300112 <_start-0x5ccffeee> +80002fd0: 09df1a63 bne t5,t4,80003064 +80002fd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fd8: 00200293 li t0,2 +80002fdc: fc5218e3 bne tp,t0,80002fac + +80002fe0 : +80002fe0: 01600193 li gp,22 +80002fe4: 00000213 li tp,0 +80002fe8: 00001117 auipc sp,0x1 +80002fec: 01810113 addi sp,sp,24 # 80004000 +80002ff0: 00000013 nop +80002ff4: 223300b7 lui ra,0x22330 +80002ff8: 01108093 addi ra,ra,17 # 22330011 <_start-0x5dccffef> +80002ffc: 00000013 nop +80003000: 00112823 sw ra,16(sp) +80003004: 01012f03 lw t5,16(sp) +80003008: 22330eb7 lui t4,0x22330 +8000300c: 011e8e93 addi t4,t4,17 # 22330011 <_start-0x5dccffef> +80003010: 05df1a63 bne t5,t4,80003064 +80003014: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003018: 00200293 li t0,2 +8000301c: fc5216e3 bne tp,t0,80002fe8 + +80003020 : +80003020: 01700193 li gp,23 +80003024: 00000213 li tp,0 +80003028: 00001117 auipc sp,0x1 +8000302c: fd810113 addi sp,sp,-40 # 80004000 +80003030: 00000013 nop +80003034: 00000013 nop +80003038: 122330b7 lui ra,0x12233 +8000303c: 00108093 addi ra,ra,1 # 12233001 <_start-0x6ddccfff> +80003040: 00112a23 sw ra,20(sp) +80003044: 01412f03 lw t5,20(sp) +80003048: 12233eb7 lui t4,0x12233 +8000304c: 001e8e93 addi t4,t4,1 # 12233001 <_start-0x6ddccfff> +80003050: 01df1a63 bne t5,t4,80003064 +80003054: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003058: 00200293 li t0,2 +8000305c: fc5216e3 bne tp,t0,80003028 +80003060: 00301a63 bne zero,gp,80003074 + +80003064 : +80003064: 00119513 slli a0,gp,0x1 +80003068: 00050063 beqz a0,80003068 +8000306c: 00156513 ori a0,a0,1 +80003070: 00000073 ecall + +80003074 : +80003074: 00100513 li a0,1 +80003078: 00000073 ecall +8000307c: c0001073 unimp + +Disassembly of section .data: + +80004000 : +80004000: deadbeef jal t4,7ffdf5ea <_start-0x20a16> + +80004004 : +80004004: deadbeef jal t4,7ffdf5ee <_start-0x20a12> + +80004008 : +80004008: deadbeef jal t4,7ffdf5f2 <_start-0x20a0e> + +8000400c : +8000400c: deadbeef jal t4,7ffdf5f6 <_start-0x20a0a> + +80004010 : +80004010: deadbeef jal t4,7ffdf5fa <_start-0x20a06> + +80004014 : +80004014: deadbeef jal t4,7ffdf5fe <_start-0x20a02> + +80004018 : +80004018: deadbeef jal t4,7ffdf602 <_start-0x209fe> + +8000401c : +8000401c: deadbeef jal t4,7ffdf606 <_start-0x209fa> + +80004020 : +80004020: deadbeef jal t4,7ffdf60a <_start-0x209f6> + +80004024 : +80004024: deadbeef jal t4,7ffdf60e <_start-0x209f2> diff --git a/Tests/isa/rv32ui-v-xor b/Tests/isa/rv32ui-v-xor new file mode 100644 index 0000000..1124cb7 Binary files /dev/null and b/Tests/isa/rv32ui-v-xor differ diff --git a/Tests/isa/rv32ui-v-xor.dump b/Tests/isa/rv32ui-v-xor.dump new file mode 100644 index 0000000..de690b7 --- /dev/null +++ b/Tests/isa/rv32ui-v-xor.dump @@ -0,0 +1,1264 @@ + +rv32ui-v-xor: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bf458593 addi a1,a1,-1036 # 800030bc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1058593 addi a1,a1,-1008 # 80003148 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bbc58593 addi a1,a1,-1092 # 80003160 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af058593 addi a1,a1,-1296 # 80003100 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae058593 addi a1,a1,-1312 # 80003228 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a4858593 addi a1,a1,-1464 # 80003204 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94460613 addi a2,a2,-1724 # 80003254 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85460613 addi a2,a2,-1964 # 800031d0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7d460613 addi a2,a2,2004 # 8000319c +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01300793 li a5,19 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 009f77b7 lui a5,0x9f7 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 2e778793 addi a5,a5,743 # 9f72e7 <_start-0x7f608d19> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: ff0100b7 lui ra,0xff010 +80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002be8: 0f0f1137 lui sp,0xf0f1 +80002bec: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002bf0: 0020cf33 xor t5,ra,sp +80002bf4: f00ffeb7 lui t4,0xf00ff +80002bf8: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002bfc: 00200193 li gp,2 +80002c00: 4bdf1063 bne t5,t4,800030a0 + +80002c04 : +80002c04: 0ff010b7 lui ra,0xff01 +80002c08: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c0c: f0f0f137 lui sp,0xf0f0f +80002c10: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002c14: 0020cf33 xor t5,ra,sp +80002c18: ff010eb7 lui t4,0xff010 +80002c1c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002c20: 00300193 li gp,3 +80002c24: 47df1e63 bne t5,t4,800030a0 + +80002c28 : +80002c28: 00ff00b7 lui ra,0xff0 +80002c2c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002c30: 0f0f1137 lui sp,0xf0f1 +80002c34: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002c38: 0020cf33 xor t5,ra,sp +80002c3c: 0ff01eb7 lui t4,0xff01 +80002c40: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002c44: 00400193 li gp,4 +80002c48: 45df1c63 bne t5,t4,800030a0 + +80002c4c : +80002c4c: f00ff0b7 lui ra,0xf00ff +80002c50: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f8c17> +80002c54: f0f0f137 lui sp,0xf0f0f +80002c58: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002c5c: 0020cf33 xor t5,ra,sp +80002c60: 00ff0eb7 lui t4,0xff0 +80002c64: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80002c68: 00500193 li gp,5 +80002c6c: 43df1a63 bne t5,t4,800030a0 + +80002c70 : +80002c70: ff0100b7 lui ra,0xff010 +80002c74: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002c78: 0f0f1137 lui sp,0xf0f1 +80002c7c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002c80: 0020c0b3 xor ra,ra,sp +80002c84: f00ffeb7 lui t4,0xf00ff +80002c88: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002c8c: 00600193 li gp,6 +80002c90: 41d09863 bne ra,t4,800030a0 + +80002c94 : +80002c94: ff0100b7 lui ra,0xff010 +80002c98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002c9c: 0f0f1137 lui sp,0xf0f1 +80002ca0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ca4: 0020c133 xor sp,ra,sp +80002ca8: f00ffeb7 lui t4,0xf00ff +80002cac: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002cb0: 00700193 li gp,7 +80002cb4: 3fd11663 bne sp,t4,800030a0 + +80002cb8 : +80002cb8: ff0100b7 lui ra,0xff010 +80002cbc: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002cc0: 0010c0b3 xor ra,ra,ra +80002cc4: 00000e93 li t4,0 +80002cc8: 00800193 li gp,8 +80002ccc: 3dd09a63 bne ra,t4,800030a0 + +80002cd0 : +80002cd0: 00000213 li tp,0 +80002cd4: ff0100b7 lui ra,0xff010 +80002cd8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002cdc: 0f0f1137 lui sp,0xf0f1 +80002ce0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ce4: 0020cf33 xor t5,ra,sp +80002ce8: 000f0313 mv t1,t5 +80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cf0: 00200293 li t0,2 +80002cf4: fe5210e3 bne tp,t0,80002cd4 +80002cf8: f00ffeb7 lui t4,0xf00ff +80002cfc: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002d00: 00900193 li gp,9 +80002d04: 39d31e63 bne t1,t4,800030a0 + +80002d08 : +80002d08: 00000213 li tp,0 +80002d0c: 0ff010b7 lui ra,0xff01 +80002d10: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002d14: f0f0f137 lui sp,0xf0f0f +80002d18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002d1c: 0020cf33 xor t5,ra,sp +80002d20: 00000013 nop +80002d24: 000f0313 mv t1,t5 +80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d2c: 00200293 li t0,2 +80002d30: fc521ee3 bne tp,t0,80002d0c +80002d34: ff010eb7 lui t4,0xff010 +80002d38: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002d3c: 00a00193 li gp,10 +80002d40: 37d31063 bne t1,t4,800030a0 + +80002d44 : +80002d44: 00000213 li tp,0 +80002d48: 00ff00b7 lui ra,0xff0 +80002d4c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002d50: 0f0f1137 lui sp,0xf0f1 +80002d54: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002d58: 0020cf33 xor t5,ra,sp +80002d5c: 00000013 nop +80002d60: 00000013 nop +80002d64: 000f0313 mv t1,t5 +80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d6c: 00200293 li t0,2 +80002d70: fc521ce3 bne tp,t0,80002d48 +80002d74: 0ff01eb7 lui t4,0xff01 +80002d78: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002d7c: 00b00193 li gp,11 +80002d80: 33d31063 bne t1,t4,800030a0 + +80002d84 : +80002d84: 00000213 li tp,0 +80002d88: ff0100b7 lui ra,0xff010 +80002d8c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002d90: 0f0f1137 lui sp,0xf0f1 +80002d94: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002d98: 0020cf33 xor t5,ra,sp +80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002da0: 00200293 li t0,2 +80002da4: fe5212e3 bne tp,t0,80002d88 +80002da8: f00ffeb7 lui t4,0xf00ff +80002dac: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002db0: 00c00193 li gp,12 +80002db4: 2fdf1663 bne t5,t4,800030a0 + +80002db8 : +80002db8: 00000213 li tp,0 +80002dbc: 0ff010b7 lui ra,0xff01 +80002dc0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002dc4: f0f0f137 lui sp,0xf0f0f +80002dc8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002dcc: 00000013 nop +80002dd0: 0020cf33 xor t5,ra,sp +80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dd8: 00200293 li t0,2 +80002ddc: fe5210e3 bne tp,t0,80002dbc +80002de0: ff010eb7 lui t4,0xff010 +80002de4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002de8: 00d00193 li gp,13 +80002dec: 2bdf1a63 bne t5,t4,800030a0 + +80002df0 : +80002df0: 00000213 li tp,0 +80002df4: 00ff00b7 lui ra,0xff0 +80002df8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002dfc: 0f0f1137 lui sp,0xf0f1 +80002e00: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002e04: 00000013 nop +80002e08: 00000013 nop +80002e0c: 0020cf33 xor t5,ra,sp +80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e14: 00200293 li t0,2 +80002e18: fc521ee3 bne tp,t0,80002df4 +80002e1c: 0ff01eb7 lui t4,0xff01 +80002e20: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002e24: 00e00193 li gp,14 +80002e28: 27df1c63 bne t5,t4,800030a0 + +80002e2c : +80002e2c: 00000213 li tp,0 +80002e30: ff0100b7 lui ra,0xff010 +80002e34: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002e38: 00000013 nop +80002e3c: 0f0f1137 lui sp,0xf0f1 +80002e40: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002e44: 0020cf33 xor t5,ra,sp +80002e48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e4c: 00200293 li t0,2 +80002e50: fe5210e3 bne tp,t0,80002e30 +80002e54: f00ffeb7 lui t4,0xf00ff +80002e58: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002e5c: 00f00193 li gp,15 +80002e60: 25df1063 bne t5,t4,800030a0 + +80002e64 : +80002e64: 00000213 li tp,0 +80002e68: 0ff010b7 lui ra,0xff01 +80002e6c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002e70: 00000013 nop +80002e74: f0f0f137 lui sp,0xf0f0f +80002e78: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002e7c: 00000013 nop +80002e80: 0020cf33 xor t5,ra,sp +80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e88: 00200293 li t0,2 +80002e8c: fc521ee3 bne tp,t0,80002e68 +80002e90: ff010eb7 lui t4,0xff010 +80002e94: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002e98: 01000193 li gp,16 +80002e9c: 21df1263 bne t5,t4,800030a0 + +80002ea0 : +80002ea0: 00000213 li tp,0 +80002ea4: 00ff00b7 lui ra,0xff0 +80002ea8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002eac: 00000013 nop +80002eb0: 00000013 nop +80002eb4: 0f0f1137 lui sp,0xf0f1 +80002eb8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ebc: 0020cf33 xor t5,ra,sp +80002ec0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ec4: 00200293 li t0,2 +80002ec8: fc521ee3 bne tp,t0,80002ea4 +80002ecc: 0ff01eb7 lui t4,0xff01 +80002ed0: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002ed4: 01100193 li gp,17 +80002ed8: 1ddf1463 bne t5,t4,800030a0 + +80002edc : +80002edc: 00000213 li tp,0 +80002ee0: 0f0f1137 lui sp,0xf0f1 +80002ee4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002ee8: ff0100b7 lui ra,0xff010 +80002eec: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002ef0: 0020cf33 xor t5,ra,sp +80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ef8: 00200293 li t0,2 +80002efc: fe5212e3 bne tp,t0,80002ee0 +80002f00: f00ffeb7 lui t4,0xf00ff +80002f04: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002f08: 01200193 li gp,18 +80002f0c: 19df1a63 bne t5,t4,800030a0 + +80002f10 : +80002f10: 00000213 li tp,0 +80002f14: f0f0f137 lui sp,0xf0f0f +80002f18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002f1c: 0ff010b7 lui ra,0xff01 +80002f20: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002f24: 00000013 nop +80002f28: 0020cf33 xor t5,ra,sp +80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f30: 00200293 li t0,2 +80002f34: fe5210e3 bne tp,t0,80002f14 +80002f38: ff010eb7 lui t4,0xff010 +80002f3c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002f40: 01300193 li gp,19 +80002f44: 15df1e63 bne t5,t4,800030a0 + +80002f48 : +80002f48: 00000213 li tp,0 +80002f4c: 0f0f1137 lui sp,0xf0f1 +80002f50: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002f54: 00ff00b7 lui ra,0xff0 +80002f58: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002f5c: 00000013 nop +80002f60: 00000013 nop +80002f64: 0020cf33 xor t5,ra,sp +80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f6c: 00200293 li t0,2 +80002f70: fc521ee3 bne tp,t0,80002f4c +80002f74: 0ff01eb7 lui t4,0xff01 +80002f78: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +80002f7c: 01400193 li gp,20 +80002f80: 13df1063 bne t5,t4,800030a0 + +80002f84 : +80002f84: 00000213 li tp,0 +80002f88: 0f0f1137 lui sp,0xf0f1 +80002f8c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80002f90: 00000013 nop +80002f94: ff0100b7 lui ra,0xff010 +80002f98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +80002f9c: 0020cf33 xor t5,ra,sp +80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fa4: 00200293 li t0,2 +80002fa8: fe5210e3 bne tp,t0,80002f88 +80002fac: f00ffeb7 lui t4,0xf00ff +80002fb0: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17> +80002fb4: 01500193 li gp,21 +80002fb8: 0fdf1463 bne t5,t4,800030a0 + +80002fbc : +80002fbc: 00000213 li tp,0 +80002fc0: f0f0f137 lui sp,0xf0f0f +80002fc4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8> +80002fc8: 00000013 nop +80002fcc: 0ff010b7 lui ra,0xff01 +80002fd0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002fd4: 00000013 nop +80002fd8: 0020cf33 xor t5,ra,sp +80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fe0: 00200293 li t0,2 +80002fe4: fc521ee3 bne tp,t0,80002fc0 +80002fe8: ff010eb7 lui t4,0xff010 +80002fec: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80002ff0: 01600193 li gp,22 +80002ff4: 0bdf1663 bne t5,t4,800030a0 + +80002ff8 : +80002ff8: 00000213 li tp,0 +80002ffc: 0f0f1137 lui sp,0xf0f1 +80003000: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1> +80003004: 00000013 nop +80003008: 00000013 nop +8000300c: 00ff00b7 lui ra,0xff0 +80003010: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80003014: 0020cf33 xor t5,ra,sp +80003018: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000301c: 00200293 li t0,2 +80003020: fc521ee3 bne tp,t0,80002ffc +80003024: 0ff01eb7 lui t4,0xff01 +80003028: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010> +8000302c: 01700193 li gp,23 +80003030: 07df1863 bne t5,t4,800030a0 + +80003034 : +80003034: ff0100b7 lui ra,0xff010 +80003038: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08> +8000303c: 00104133 xor sp,zero,ra +80003040: ff010eb7 lui t4,0xff010 +80003044: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08> +80003048: 01800193 li gp,24 +8000304c: 05d11a63 bne sp,t4,800030a0 + +80003050 : +80003050: 00ff00b7 lui ra,0xff0 +80003054: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80003058: 0000c133 xor sp,ra,zero +8000305c: 00ff0eb7 lui t4,0xff0 +80003060: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> +80003064: 01900193 li gp,25 +80003068: 03d11c63 bne sp,t4,800030a0 + +8000306c : +8000306c: 000040b3 xor ra,zero,zero +80003070: 00000e93 li t4,0 +80003074: 01a00193 li gp,26 +80003078: 03d09463 bne ra,t4,800030a0 + +8000307c : +8000307c: 111110b7 lui ra,0x11111 +80003080: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef> +80003084: 22222137 lui sp,0x22222 +80003088: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde> +8000308c: 0020c033 xor zero,ra,sp +80003090: 00000e93 li t4,0 +80003094: 01b00193 li gp,27 +80003098: 01d01463 bne zero,t4,800030a0 +8000309c: 00301a63 bne zero,gp,800030b0 + +800030a0 : +800030a0: 00119513 slli a0,gp,0x1 +800030a4: 00050063 beqz a0,800030a4 +800030a8: 00156513 ori a0,a0,1 +800030ac: 00000073 ecall + +800030b0 : +800030b0: 00100513 li a0,1 +800030b4: 00000073 ecall +800030b8: c0001073 unimp diff --git a/Tests/isa/rv32ui-v-xori b/Tests/isa/rv32ui-v-xori new file mode 100644 index 0000000..1937c22 Binary files /dev/null and b/Tests/isa/rv32ui-v-xori differ diff --git a/Tests/isa/rv32ui-v-xori.dump b/Tests/isa/rv32ui-v-xori.dump new file mode 100644 index 0000000..b2fde9b --- /dev/null +++ b/Tests/isa/rv32ui-v-xori.dump @@ -0,0 +1,1055 @@ + +rv32ui-v-xori: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 91858593 addi a1,a1,-1768 # 80002de0 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 93458593 addi a1,a1,-1740 # 80002e6c +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: 8e058593 addi a1,a1,-1824 # 80002e84 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: 81458593 addi a1,a1,-2028 # 80002e24 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: 80458593 addi a1,a1,-2044 # 80002f4c +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 76c58593 addi a1,a1,1900 # 80002f28 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 66860613 addi a2,a2,1640 # 80002f78 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 57860613 addi a2,a2,1400 # 80002ef4 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 4f860613 addi a2,a2,1272 # 80002ec0 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 01200793 li a5,18 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0d5857b7 lui a5,0xd585 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 22078793 addi a5,a5,544 # d585220 <_start-0x72a7ade0> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00ff10b7 lui ra,0xff1 +80002be4: f0008093 addi ra,ra,-256 # ff0f00 <_start-0x7f00f100> +80002be8: f0f0cf13 xori t5,ra,-241 +80002bec: ff00feb7 lui t4,0xff00f +80002bf0: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f009c17> +80002bf4: 00200193 li gp,2 +80002bf8: 1ddf1663 bne t5,t4,80002dc4 + +80002bfc : +80002bfc: 0ff010b7 lui ra,0xff01 +80002c00: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c04: 0f00cf13 xori t5,ra,240 +80002c08: 0ff01eb7 lui t4,0xff01 +80002c0c: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> +80002c10: 00300193 li gp,3 +80002c14: 1bdf1863 bne t5,t4,80002dc4 + +80002c18 : +80002c18: 00ff10b7 lui ra,0xff1 +80002c1c: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701> +80002c20: 70f0cf13 xori t5,ra,1807 +80002c24: 00ff1eb7 lui t4,0xff1 +80002c28: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> +80002c2c: 00400193 li gp,4 +80002c30: 19df1a63 bne t5,t4,80002dc4 + +80002c34 : +80002c34: f00ff0b7 lui ra,0xf00ff +80002c38: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002c3c: 0f00cf13 xori t5,ra,240 +80002c40: f00ffeb7 lui t4,0xf00ff +80002c44: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07> +80002c48: 00500193 li gp,5 +80002c4c: 17df1c63 bne t5,t4,80002dc4 + +80002c50 : +80002c50: ff00f0b7 lui ra,0xff00f +80002c54: 70008093 addi ra,ra,1792 # ff00f700 <_end+0x7f00a308> +80002c58: 70f0c093 xori ra,ra,1807 +80002c5c: ff00feb7 lui t4,0xff00f +80002c60: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f009c17> +80002c64: 00600193 li gp,6 +80002c68: 15d09e63 bne ra,t4,80002dc4 + +80002c6c : +80002c6c: 00000213 li tp,0 +80002c70: 0ff010b7 lui ra,0xff01 +80002c74: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002c78: 0f00cf13 xori t5,ra,240 +80002c7c: 000f0313 mv t1,t5 +80002c80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002c84: 00200293 li t0,2 +80002c88: fe5214e3 bne tp,t0,80002c70 +80002c8c: 0ff01eb7 lui t4,0xff01 +80002c90: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> +80002c94: 00700193 li gp,7 +80002c98: 13d31663 bne t1,t4,80002dc4 + +80002c9c : +80002c9c: 00000213 li tp,0 +80002ca0: 00ff10b7 lui ra,0xff1 +80002ca4: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701> +80002ca8: 70f0cf13 xori t5,ra,1807 +80002cac: 00000013 nop +80002cb0: 000f0313 mv t1,t5 +80002cb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cb8: 00200293 li t0,2 +80002cbc: fe5212e3 bne tp,t0,80002ca0 +80002cc0: 00ff1eb7 lui t4,0xff1 +80002cc4: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> +80002cc8: 00800193 li gp,8 +80002ccc: 0fd31c63 bne t1,t4,80002dc4 + +80002cd0 : +80002cd0: 00000213 li tp,0 +80002cd4: f00ff0b7 lui ra,0xf00ff +80002cd8: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002cdc: 0f00cf13 xori t5,ra,240 +80002ce0: 00000013 nop +80002ce4: 00000013 nop +80002ce8: 000f0313 mv t1,t5 +80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002cf0: 00200293 li t0,2 +80002cf4: fe5210e3 bne tp,t0,80002cd4 +80002cf8: f00ffeb7 lui t4,0xf00ff +80002cfc: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07> +80002d00: 00900193 li gp,9 +80002d04: 0dd31063 bne t1,t4,80002dc4 + +80002d08 : +80002d08: 00000213 li tp,0 +80002d0c: 0ff010b7 lui ra,0xff01 +80002d10: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010> +80002d14: 0f00cf13 xori t5,ra,240 +80002d18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d1c: 00200293 li t0,2 +80002d20: fe5216e3 bne tp,t0,80002d0c +80002d24: 0ff01eb7 lui t4,0xff01 +80002d28: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100> +80002d2c: 00a00193 li gp,10 +80002d30: 09df1a63 bne t5,t4,80002dc4 + +80002d34 : +80002d34: 00000213 li tp,0 +80002d38: 00ff10b7 lui ra,0xff1 +80002d3c: fff08093 addi ra,ra,-1 # ff0fff <_start-0x7f00f001> +80002d40: 00000013 nop +80002d44: 00f0cf13 xori t5,ra,15 +80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d4c: 00200293 li t0,2 +80002d50: fe5214e3 bne tp,t0,80002d38 +80002d54: 00ff1eb7 lui t4,0xff1 +80002d58: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010> +80002d5c: 00b00193 li gp,11 +80002d60: 07df1263 bne t5,t4,80002dc4 + +80002d64 : +80002d64: 00000213 li tp,0 +80002d68: f00ff0b7 lui ra,0xf00ff +80002d6c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17> +80002d70: 00000013 nop +80002d74: 00000013 nop +80002d78: 0f00cf13 xori t5,ra,240 +80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d80: 00200293 li t0,2 +80002d84: fe5212e3 bne tp,t0,80002d68 +80002d88: f00ffeb7 lui t4,0xf00ff +80002d8c: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07> +80002d90: 00c00193 li gp,12 +80002d94: 03df1863 bne t5,t4,80002dc4 + +80002d98 : +80002d98: 0f004093 xori ra,zero,240 +80002d9c: 0f000e93 li t4,240 +80002da0: 00d00193 li gp,13 +80002da4: 03d09063 bne ra,t4,80002dc4 + +80002da8 : +80002da8: 00ff00b7 lui ra,0xff0 +80002dac: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01> +80002db0: 70f0c013 xori zero,ra,1807 +80002db4: 00000e93 li t4,0 +80002db8: 00e00193 li gp,14 +80002dbc: 01d01463 bne zero,t4,80002dc4 +80002dc0: 00301a63 bne zero,gp,80002dd4 + +80002dc4 : +80002dc4: 00119513 slli a0,gp,0x1 +80002dc8: 00050063 beqz a0,80002dc8 +80002dcc: 00156513 ori a0,a0,1 +80002dd0: 00000073 ecall + +80002dd4 : +80002dd4: 00100513 li a0,1 +80002dd8: 00000073 ecall +80002ddc: c0001073 unimp diff --git a/Tests/isa/rv32um-p-div b/Tests/isa/rv32um-p-div new file mode 100644 index 0000000..e539374 Binary files /dev/null and b/Tests/isa/rv32um-p-div differ diff --git a/Tests/isa/rv32um-p-div.dump b/Tests/isa/rv32um-p-div.dump new file mode 100644 index 0000000..74276c6 --- /dev/null +++ b/Tests/isa/rv32um-p-div.dump @@ -0,0 +1,168 @@ + +rv32um-p-div: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 01400093 li ra,20 +80000100: 00600113 li sp,6 +80000104: 0220cf33 div t5,ra,sp +80000108: 00300e93 li t4,3 +8000010c: 00200193 li gp,2 +80000110: 0ddf1463 bne t5,t4,800001d8 + +80000114 : +80000114: fec00093 li ra,-20 +80000118: 00600113 li sp,6 +8000011c: 0220cf33 div t5,ra,sp +80000120: ffd00e93 li t4,-3 +80000124: 00300193 li gp,3 +80000128: 0bdf1863 bne t5,t4,800001d8 + +8000012c : +8000012c: 01400093 li ra,20 +80000130: ffa00113 li sp,-6 +80000134: 0220cf33 div t5,ra,sp +80000138: ffd00e93 li t4,-3 +8000013c: 00400193 li gp,4 +80000140: 09df1c63 bne t5,t4,800001d8 + +80000144 : +80000144: fec00093 li ra,-20 +80000148: ffa00113 li sp,-6 +8000014c: 0220cf33 div t5,ra,sp +80000150: 00300e93 li t4,3 +80000154: 00500193 li gp,5 +80000158: 09df1063 bne t5,t4,800001d8 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00100113 li sp,1 +80000164: 0220cf33 div t5,ra,sp +80000168: 80000eb7 lui t4,0x80000 +8000016c: 00600193 li gp,6 +80000170: 07df1463 bne t5,t4,800001d8 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: fff00113 li sp,-1 +8000017c: 0220cf33 div t5,ra,sp +80000180: 80000eb7 lui t4,0x80000 +80000184: 00700193 li gp,7 +80000188: 05df1863 bne t5,t4,800001d8 + +8000018c : +8000018c: 800000b7 lui ra,0x80000 +80000190: 00000113 li sp,0 +80000194: 0220cf33 div t5,ra,sp +80000198: fff00e93 li t4,-1 +8000019c: 00800193 li gp,8 +800001a0: 03df1c63 bne t5,t4,800001d8 + +800001a4 : +800001a4: 00100093 li ra,1 +800001a8: 00000113 li sp,0 +800001ac: 0220cf33 div t5,ra,sp +800001b0: fff00e93 li t4,-1 +800001b4: 00900193 li gp,9 +800001b8: 03df1063 bne t5,t4,800001d8 + +800001bc : +800001bc: 00000093 li ra,0 +800001c0: 00000113 li sp,0 +800001c4: 0220cf33 div t5,ra,sp +800001c8: fff00e93 li t4,-1 +800001cc: 00a00193 li gp,10 +800001d0: 01df1463 bne t5,t4,800001d8 +800001d4: 00301c63 bne zero,gp,800001ec + +800001d8 : +800001d8: 0ff0000f fence +800001dc: 00018063 beqz gp,800001dc +800001e0: 00119193 slli gp,gp,0x1 +800001e4: 0011e193 ori gp,gp,1 +800001e8: 00000073 ecall + +800001ec : +800001ec: 0ff0000f fence +800001f0: 00100193 li gp,1 +800001f4: 00000073 ecall +800001f8: c0001073 unimp +800001fc: 0000 unimp +800001fe: 0000 unimp +80000200: 0000 unimp +80000202: 0000 unimp diff --git a/Tests/isa/rv32um-p-divu b/Tests/isa/rv32um-p-divu new file mode 100644 index 0000000..6e8b7b1 Binary files /dev/null and b/Tests/isa/rv32um-p-divu differ diff --git a/Tests/isa/rv32um-p-divu.dump b/Tests/isa/rv32um-p-divu.dump new file mode 100644 index 0000000..c76a827 --- /dev/null +++ b/Tests/isa/rv32um-p-divu.dump @@ -0,0 +1,167 @@ + +rv32um-p-divu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 01400093 li ra,20 +80000100: 00600113 li sp,6 +80000104: 0220df33 divu t5,ra,sp +80000108: 00300e93 li t4,3 +8000010c: 00200193 li gp,2 +80000110: 0ddf1663 bne t5,t4,800001dc + +80000114 : +80000114: fec00093 li ra,-20 +80000118: 00600113 li sp,6 +8000011c: 0220df33 divu t5,ra,sp +80000120: 2aaabeb7 lui t4,0x2aaab +80000124: aa7e8e93 addi t4,t4,-1369 # 2aaaaaa7 <_start-0x55555559> +80000128: 00300193 li gp,3 +8000012c: 0bdf1863 bne t5,t4,800001dc + +80000130 : +80000130: 01400093 li ra,20 +80000134: ffa00113 li sp,-6 +80000138: 0220df33 divu t5,ra,sp +8000013c: 00000e93 li t4,0 +80000140: 00400193 li gp,4 +80000144: 09df1c63 bne t5,t4,800001dc + +80000148 : +80000148: fec00093 li ra,-20 +8000014c: ffa00113 li sp,-6 +80000150: 0220df33 divu t5,ra,sp +80000154: 00000e93 li t4,0 +80000158: 00500193 li gp,5 +8000015c: 09df1063 bne t5,t4,800001dc + +80000160 : +80000160: 800000b7 lui ra,0x80000 +80000164: 00100113 li sp,1 +80000168: 0220df33 divu t5,ra,sp +8000016c: 80000eb7 lui t4,0x80000 +80000170: 00600193 li gp,6 +80000174: 07df1463 bne t5,t4,800001dc + +80000178 : +80000178: 800000b7 lui ra,0x80000 +8000017c: fff00113 li sp,-1 +80000180: 0220df33 divu t5,ra,sp +80000184: 00000e93 li t4,0 +80000188: 00700193 li gp,7 +8000018c: 05df1863 bne t5,t4,800001dc + +80000190 : +80000190: 800000b7 lui ra,0x80000 +80000194: 00000113 li sp,0 +80000198: 0220df33 divu t5,ra,sp +8000019c: fff00e93 li t4,-1 +800001a0: 00800193 li gp,8 +800001a4: 03df1c63 bne t5,t4,800001dc + +800001a8 : +800001a8: 00100093 li ra,1 +800001ac: 00000113 li sp,0 +800001b0: 0220df33 divu t5,ra,sp +800001b4: fff00e93 li t4,-1 +800001b8: 00900193 li gp,9 +800001bc: 03df1063 bne t5,t4,800001dc + +800001c0 : +800001c0: 00000093 li ra,0 +800001c4: 00000113 li sp,0 +800001c8: 0220df33 divu t5,ra,sp +800001cc: fff00e93 li t4,-1 +800001d0: 00a00193 li gp,10 +800001d4: 01df1463 bne t5,t4,800001dc +800001d8: 00301c63 bne zero,gp,800001f0 + +800001dc : +800001dc: 0ff0000f fence +800001e0: 00018063 beqz gp,800001e0 +800001e4: 00119193 slli gp,gp,0x1 +800001e8: 0011e193 ori gp,gp,1 +800001ec: 00000073 ecall + +800001f0 : +800001f0: 0ff0000f fence +800001f4: 00100193 li gp,1 +800001f8: 00000073 ecall +800001fc: c0001073 unimp +80000200: 0000 unimp +80000202: 0000 unimp diff --git a/Tests/isa/rv32um-p-mul b/Tests/isa/rv32um-p-mul new file mode 100644 index 0000000..8ae3d38 Binary files /dev/null and b/Tests/isa/rv32um-p-mul differ diff --git a/Tests/isa/rv32um-p-mul.dump b/Tests/isa/rv32um-p-mul.dump new file mode 100644 index 0000000..e2ff04d --- /dev/null +++ b/Tests/isa/rv32um-p-mul.dump @@ -0,0 +1,483 @@ + +rv32um-p-mul: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 000080b7 lui ra,0x8 +80000100: e0008093 addi ra,ra,-512 # 7e00 <_start-0x7fff8200> +80000104: b6db7137 lui sp,0xb6db7 +80000108: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db4db7> +8000010c: 02208f33 mul t5,ra,sp +80000110: 00001eb7 lui t4,0x1 +80000114: 200e8e93 addi t4,t4,512 # 1200 <_start-0x7fffee00> +80000118: 02000193 li gp,32 +8000011c: 4bdf1463 bne t5,t4,800005c4 + +80000120 : +80000120: 000080b7 lui ra,0x8 +80000124: fc008093 addi ra,ra,-64 # 7fc0 <_start-0x7fff8040> +80000128: b6db7137 lui sp,0xb6db7 +8000012c: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db4db7> +80000130: 02208f33 mul t5,ra,sp +80000134: 00001eb7 lui t4,0x1 +80000138: 240e8e93 addi t4,t4,576 # 1240 <_start-0x7fffedc0> +8000013c: 02100193 li gp,33 +80000140: 49df1263 bne t5,t4,800005c4 + +80000144 : +80000144: 00000093 li ra,0 +80000148: 00000113 li sp,0 +8000014c: 02208f33 mul t5,ra,sp +80000150: 00000e93 li t4,0 +80000154: 00200193 li gp,2 +80000158: 47df1663 bne t5,t4,800005c4 + +8000015c : +8000015c: 00100093 li ra,1 +80000160: 00100113 li sp,1 +80000164: 02208f33 mul t5,ra,sp +80000168: 00100e93 li t4,1 +8000016c: 00300193 li gp,3 +80000170: 45df1a63 bne t5,t4,800005c4 + +80000174 : +80000174: 00300093 li ra,3 +80000178: 00700113 li sp,7 +8000017c: 02208f33 mul t5,ra,sp +80000180: 01500e93 li t4,21 +80000184: 00400193 li gp,4 +80000188: 43df1e63 bne t5,t4,800005c4 + +8000018c : +8000018c: 00000093 li ra,0 +80000190: ffff8137 lui sp,0xffff8 +80000194: 02208f33 mul t5,ra,sp +80000198: 00000e93 li t4,0 +8000019c: 00500193 li gp,5 +800001a0: 43df1263 bne t5,t4,800005c4 + +800001a4 : +800001a4: 800000b7 lui ra,0x80000 +800001a8: 00000113 li sp,0 +800001ac: 02208f33 mul t5,ra,sp +800001b0: 00000e93 li t4,0 +800001b4: 00600193 li gp,6 +800001b8: 41df1663 bne t5,t4,800005c4 + +800001bc : +800001bc: 800000b7 lui ra,0x80000 +800001c0: ffff8137 lui sp,0xffff8 +800001c4: 02208f33 mul t5,ra,sp +800001c8: 00000e93 li t4,0 +800001cc: 00700193 li gp,7 +800001d0: 3fdf1a63 bne t5,t4,800005c4 + +800001d4 : +800001d4: aaaab0b7 lui ra,0xaaaab +800001d8: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> +800001dc: 00030137 lui sp,0x30 +800001e0: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +800001e4: 02208f33 mul t5,ra,sp +800001e8: 00010eb7 lui t4,0x10 +800001ec: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081> +800001f0: 01e00193 li gp,30 +800001f4: 3ddf1863 bne t5,t4,800005c4 + +800001f8 : +800001f8: 000300b7 lui ra,0x30 +800001fc: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +80000200: aaaab137 lui sp,0xaaaab +80000204: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> +80000208: 02208f33 mul t5,ra,sp +8000020c: 00010eb7 lui t4,0x10 +80000210: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081> +80000214: 01f00193 li gp,31 +80000218: 3bdf1663 bne t5,t4,800005c4 + +8000021c : +8000021c: ff0000b7 lui ra,0xff000 +80000220: ff000137 lui sp,0xff000 +80000224: 02208f33 mul t5,ra,sp +80000228: 00000e93 li t4,0 +8000022c: 02200193 li gp,34 +80000230: 39df1a63 bne t5,t4,800005c4 + +80000234 : +80000234: fff00093 li ra,-1 +80000238: fff00113 li sp,-1 +8000023c: 02208f33 mul t5,ra,sp +80000240: 00100e93 li t4,1 +80000244: 02300193 li gp,35 +80000248: 37df1e63 bne t5,t4,800005c4 + +8000024c : +8000024c: fff00093 li ra,-1 +80000250: 00100113 li sp,1 +80000254: 02208f33 mul t5,ra,sp +80000258: fff00e93 li t4,-1 +8000025c: 02400193 li gp,36 +80000260: 37df1263 bne t5,t4,800005c4 + +80000264 : +80000264: 00100093 li ra,1 +80000268: fff00113 li sp,-1 +8000026c: 02208f33 mul t5,ra,sp +80000270: fff00e93 li t4,-1 +80000274: 02500193 li gp,37 +80000278: 35df1663 bne t5,t4,800005c4 + +8000027c : +8000027c: 00d00093 li ra,13 +80000280: 00b00113 li sp,11 +80000284: 022080b3 mul ra,ra,sp +80000288: 08f00e93 li t4,143 +8000028c: 00800193 li gp,8 +80000290: 33d09a63 bne ra,t4,800005c4 + +80000294 : +80000294: 00e00093 li ra,14 +80000298: 00b00113 li sp,11 +8000029c: 02208133 mul sp,ra,sp +800002a0: 09a00e93 li t4,154 +800002a4: 00900193 li gp,9 +800002a8: 31d11e63 bne sp,t4,800005c4 + +800002ac : +800002ac: 00d00093 li ra,13 +800002b0: 021080b3 mul ra,ra,ra +800002b4: 0a900e93 li t4,169 +800002b8: 00a00193 li gp,10 +800002bc: 31d09463 bne ra,t4,800005c4 + +800002c0 : +800002c0: 00000213 li tp,0 +800002c4: 00d00093 li ra,13 +800002c8: 00b00113 li sp,11 +800002cc: 02208f33 mul t5,ra,sp +800002d0: 000f0313 mv t1,t5 +800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d8: 00200293 li t0,2 +800002dc: fe5214e3 bne tp,t0,800002c4 +800002e0: 08f00e93 li t4,143 +800002e4: 00b00193 li gp,11 +800002e8: 2dd31e63 bne t1,t4,800005c4 + +800002ec : +800002ec: 00000213 li tp,0 +800002f0: 00e00093 li ra,14 +800002f4: 00b00113 li sp,11 +800002f8: 02208f33 mul t5,ra,sp +800002fc: 00000013 nop +80000300: 000f0313 mv t1,t5 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fe5212e3 bne tp,t0,800002f0 +80000310: 09a00e93 li t4,154 +80000314: 00c00193 li gp,12 +80000318: 2bd31663 bne t1,t4,800005c4 + +8000031c : +8000031c: 00000213 li tp,0 +80000320: 00f00093 li ra,15 +80000324: 00b00113 li sp,11 +80000328: 02208f33 mul t5,ra,sp +8000032c: 00000013 nop +80000330: 00000013 nop +80000334: 000f0313 mv t1,t5 +80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000033c: 00200293 li t0,2 +80000340: fe5210e3 bne tp,t0,80000320 +80000344: 0a500e93 li t4,165 +80000348: 00d00193 li gp,13 +8000034c: 27d31c63 bne t1,t4,800005c4 + +80000350 : +80000350: 00000213 li tp,0 +80000354: 00d00093 li ra,13 +80000358: 00b00113 li sp,11 +8000035c: 02208f33 mul t5,ra,sp +80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000364: 00200293 li t0,2 +80000368: fe5216e3 bne tp,t0,80000354 +8000036c: 08f00e93 li t4,143 +80000370: 00e00193 li gp,14 +80000374: 25df1863 bne t5,t4,800005c4 + +80000378 : +80000378: 00000213 li tp,0 +8000037c: 00e00093 li ra,14 +80000380: 00b00113 li sp,11 +80000384: 00000013 nop +80000388: 02208f33 mul t5,ra,sp +8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000390: 00200293 li t0,2 +80000394: fe5214e3 bne tp,t0,8000037c +80000398: 09a00e93 li t4,154 +8000039c: 00f00193 li gp,15 +800003a0: 23df1263 bne t5,t4,800005c4 + +800003a4 : +800003a4: 00000213 li tp,0 +800003a8: 00f00093 li ra,15 +800003ac: 00b00113 li sp,11 +800003b0: 00000013 nop +800003b4: 00000013 nop +800003b8: 02208f33 mul t5,ra,sp +800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c0: 00200293 li t0,2 +800003c4: fe5212e3 bne tp,t0,800003a8 +800003c8: 0a500e93 li t4,165 +800003cc: 01000193 li gp,16 +800003d0: 1fdf1a63 bne t5,t4,800005c4 + +800003d4 : +800003d4: 00000213 li tp,0 +800003d8: 00d00093 li ra,13 +800003dc: 00000013 nop +800003e0: 00b00113 li sp,11 +800003e4: 02208f33 mul t5,ra,sp +800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003ec: 00200293 li t0,2 +800003f0: fe5214e3 bne tp,t0,800003d8 +800003f4: 08f00e93 li t4,143 +800003f8: 01100193 li gp,17 +800003fc: 1ddf1463 bne t5,t4,800005c4 + +80000400 : +80000400: 00000213 li tp,0 +80000404: 00e00093 li ra,14 +80000408: 00000013 nop +8000040c: 00b00113 li sp,11 +80000410: 00000013 nop +80000414: 02208f33 mul t5,ra,sp +80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000041c: 00200293 li t0,2 +80000420: fe5212e3 bne tp,t0,80000404 +80000424: 09a00e93 li t4,154 +80000428: 01200193 li gp,18 +8000042c: 19df1c63 bne t5,t4,800005c4 + +80000430 : +80000430: 00000213 li tp,0 +80000434: 00f00093 li ra,15 +80000438: 00000013 nop +8000043c: 00000013 nop +80000440: 00b00113 li sp,11 +80000444: 02208f33 mul t5,ra,sp +80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000044c: 00200293 li t0,2 +80000450: fe5212e3 bne tp,t0,80000434 +80000454: 0a500e93 li t4,165 +80000458: 01300193 li gp,19 +8000045c: 17df1463 bne t5,t4,800005c4 + +80000460 : +80000460: 00000213 li tp,0 +80000464: 00b00113 li sp,11 +80000468: 00d00093 li ra,13 +8000046c: 02208f33 mul t5,ra,sp +80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000474: 00200293 li t0,2 +80000478: fe5216e3 bne tp,t0,80000464 +8000047c: 08f00e93 li t4,143 +80000480: 01400193 li gp,20 +80000484: 15df1063 bne t5,t4,800005c4 + +80000488 : +80000488: 00000213 li tp,0 +8000048c: 00b00113 li sp,11 +80000490: 00e00093 li ra,14 +80000494: 00000013 nop +80000498: 02208f33 mul t5,ra,sp +8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004a0: 00200293 li t0,2 +800004a4: fe5214e3 bne tp,t0,8000048c +800004a8: 09a00e93 li t4,154 +800004ac: 01500193 li gp,21 +800004b0: 11df1a63 bne t5,t4,800005c4 + +800004b4 : +800004b4: 00000213 li tp,0 +800004b8: 00b00113 li sp,11 +800004bc: 00f00093 li ra,15 +800004c0: 00000013 nop +800004c4: 00000013 nop +800004c8: 02208f33 mul t5,ra,sp +800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004d0: 00200293 li t0,2 +800004d4: fe5212e3 bne tp,t0,800004b8 +800004d8: 0a500e93 li t4,165 +800004dc: 01600193 li gp,22 +800004e0: 0fdf1263 bne t5,t4,800005c4 + +800004e4 : +800004e4: 00000213 li tp,0 +800004e8: 00b00113 li sp,11 +800004ec: 00000013 nop +800004f0: 00d00093 li ra,13 +800004f4: 02208f33 mul t5,ra,sp +800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004fc: 00200293 li t0,2 +80000500: fe5214e3 bne tp,t0,800004e8 +80000504: 08f00e93 li t4,143 +80000508: 01700193 li gp,23 +8000050c: 0bdf1c63 bne t5,t4,800005c4 + +80000510 : +80000510: 00000213 li tp,0 +80000514: 00b00113 li sp,11 +80000518: 00000013 nop +8000051c: 00e00093 li ra,14 +80000520: 00000013 nop +80000524: 02208f33 mul t5,ra,sp +80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000052c: 00200293 li t0,2 +80000530: fe5212e3 bne tp,t0,80000514 +80000534: 09a00e93 li t4,154 +80000538: 01800193 li gp,24 +8000053c: 09df1463 bne t5,t4,800005c4 + +80000540 : +80000540: 00000213 li tp,0 +80000544: 00b00113 li sp,11 +80000548: 00000013 nop +8000054c: 00000013 nop +80000550: 00f00093 li ra,15 +80000554: 02208f33 mul t5,ra,sp +80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000055c: 00200293 li t0,2 +80000560: fe5212e3 bne tp,t0,80000544 +80000564: 0a500e93 li t4,165 +80000568: 01900193 li gp,25 +8000056c: 05df1c63 bne t5,t4,800005c4 + +80000570 : +80000570: 01f00093 li ra,31 +80000574: 02100133 mul sp,zero,ra +80000578: 00000e93 li t4,0 +8000057c: 01a00193 li gp,26 +80000580: 05d11263 bne sp,t4,800005c4 + +80000584 : +80000584: 02000093 li ra,32 +80000588: 02008133 mul sp,ra,zero +8000058c: 00000e93 li t4,0 +80000590: 01b00193 li gp,27 +80000594: 03d11863 bne sp,t4,800005c4 + +80000598 : +80000598: 020000b3 mul ra,zero,zero +8000059c: 00000e93 li t4,0 +800005a0: 01c00193 li gp,28 +800005a4: 03d09063 bne ra,t4,800005c4 + +800005a8 : +800005a8: 02100093 li ra,33 +800005ac: 02200113 li sp,34 +800005b0: 02208033 mul zero,ra,sp +800005b4: 00000e93 li t4,0 +800005b8: 01d00193 li gp,29 +800005bc: 01d01463 bne zero,t4,800005c4 +800005c0: 00301c63 bne zero,gp,800005d8 + +800005c4 : +800005c4: 0ff0000f fence +800005c8: 00018063 beqz gp,800005c8 +800005cc: 00119193 slli gp,gp,0x1 +800005d0: 0011e193 ori gp,gp,1 +800005d4: 00000073 ecall + +800005d8 : +800005d8: 0ff0000f fence +800005dc: 00100193 li gp,1 +800005e0: 00000073 ecall +800005e4: c0001073 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32um-p-mulh b/Tests/isa/rv32um-p-mulh new file mode 100644 index 0000000..cbfe3b1 Binary files /dev/null and b/Tests/isa/rv32um-p-mulh differ diff --git a/Tests/isa/rv32um-p-mulh.dump b/Tests/isa/rv32um-p-mulh.dump new file mode 100644 index 0000000..7e26092 --- /dev/null +++ b/Tests/isa/rv32um-p-mulh.dump @@ -0,0 +1,479 @@ + +rv32um-p-mulh: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00000113 li sp,0 +80000104: 02209f33 mulh t5,ra,sp +80000108: 00000e93 li t4,0 +8000010c: 00200193 li gp,2 +80000110: 4bdf1a63 bne t5,t4,800005c4 + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 02209f33 mulh t5,ra,sp +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 49df1e63 bne t5,t4,800005c4 + +8000012c : +8000012c: 00300093 li ra,3 +80000130: 00700113 li sp,7 +80000134: 02209f33 mulh t5,ra,sp +80000138: 00000e93 li t4,0 +8000013c: 00400193 li gp,4 +80000140: 49df1263 bne t5,t4,800005c4 + +80000144 : +80000144: 00000093 li ra,0 +80000148: ffff8137 lui sp,0xffff8 +8000014c: 02209f33 mulh t5,ra,sp +80000150: 00000e93 li t4,0 +80000154: 00500193 li gp,5 +80000158: 47df1663 bne t5,t4,800005c4 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00000113 li sp,0 +80000164: 02209f33 mulh t5,ra,sp +80000168: 00000e93 li t4,0 +8000016c: 00600193 li gp,6 +80000170: 45df1a63 bne t5,t4,800005c4 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: 00000113 li sp,0 +8000017c: 02209f33 mulh t5,ra,sp +80000180: 00000e93 li t4,0 +80000184: 00700193 li gp,7 +80000188: 43df1e63 bne t5,t4,800005c4 + +8000018c : +8000018c: aaaab0b7 lui ra,0xaaaab +80000190: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> +80000194: 00030137 lui sp,0x30 +80000198: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +8000019c: 02209f33 mulh t5,ra,sp +800001a0: ffff0eb7 lui t4,0xffff0 +800001a4: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081> +800001a8: 01e00193 li gp,30 +800001ac: 41df1c63 bne t5,t4,800005c4 + +800001b0 : +800001b0: 000300b7 lui ra,0x30 +800001b4: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +800001b8: aaaab137 lui sp,0xaaaab +800001bc: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> +800001c0: 02209f33 mulh t5,ra,sp +800001c4: ffff0eb7 lui t4,0xffff0 +800001c8: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081> +800001cc: 01f00193 li gp,31 +800001d0: 3fdf1a63 bne t5,t4,800005c4 + +800001d4 : +800001d4: ff0000b7 lui ra,0xff000 +800001d8: ff000137 lui sp,0xff000 +800001dc: 02209f33 mulh t5,ra,sp +800001e0: 00010eb7 lui t4,0x10 +800001e4: 02000193 li gp,32 +800001e8: 3ddf1e63 bne t5,t4,800005c4 + +800001ec : +800001ec: fff00093 li ra,-1 +800001f0: fff00113 li sp,-1 +800001f4: 02209f33 mulh t5,ra,sp +800001f8: 00000e93 li t4,0 +800001fc: 02100193 li gp,33 +80000200: 3ddf1263 bne t5,t4,800005c4 + +80000204 : +80000204: fff00093 li ra,-1 +80000208: 00100113 li sp,1 +8000020c: 02209f33 mulh t5,ra,sp +80000210: fff00e93 li t4,-1 +80000214: 02200193 li gp,34 +80000218: 3bdf1663 bne t5,t4,800005c4 + +8000021c : +8000021c: 00100093 li ra,1 +80000220: fff00113 li sp,-1 +80000224: 02209f33 mulh t5,ra,sp +80000228: fff00e93 li t4,-1 +8000022c: 02300193 li gp,35 +80000230: 39df1a63 bne t5,t4,800005c4 + +80000234 : +80000234: 00d000b7 lui ra,0xd00 +80000238: 00b00137 lui sp,0xb00 +8000023c: 022090b3 mulh ra,ra,sp +80000240: 00009eb7 lui t4,0x9 +80000244: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000248: 00800193 li gp,8 +8000024c: 37d09c63 bne ra,t4,800005c4 + +80000250 : +80000250: 00e000b7 lui ra,0xe00 +80000254: 00b00137 lui sp,0xb00 +80000258: 02209133 mulh sp,ra,sp +8000025c: 0000aeb7 lui t4,0xa +80000260: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000264: 00900193 li gp,9 +80000268: 35d11e63 bne sp,t4,800005c4 + +8000026c : +8000026c: 00d000b7 lui ra,0xd00 +80000270: 021090b3 mulh ra,ra,ra +80000274: 0000beb7 lui t4,0xb +80000278: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> +8000027c: 00a00193 li gp,10 +80000280: 35d09263 bne ra,t4,800005c4 + +80000284 : +80000284: 00000213 li tp,0 +80000288: 00d000b7 lui ra,0xd00 +8000028c: 00b00137 lui sp,0xb00 +80000290: 02209f33 mulh t5,ra,sp +80000294: 000f0313 mv t1,t5 +80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000029c: 00200293 li t0,2 +800002a0: fe5214e3 bne tp,t0,80000288 +800002a4: 00009eb7 lui t4,0x9 +800002a8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +800002ac: 00b00193 li gp,11 +800002b0: 31d31a63 bne t1,t4,800005c4 + +800002b4 : +800002b4: 00000213 li tp,0 +800002b8: 00e000b7 lui ra,0xe00 +800002bc: 00b00137 lui sp,0xb00 +800002c0: 02209f33 mulh t5,ra,sp +800002c4: 00000013 nop +800002c8: 000f0313 mv t1,t5 +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5212e3 bne tp,t0,800002b8 +800002d8: 0000aeb7 lui t4,0xa +800002dc: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +800002e0: 00c00193 li gp,12 +800002e4: 2fd31063 bne t1,t4,800005c4 + +800002e8 : +800002e8: 00000213 li tp,0 +800002ec: 00f000b7 lui ra,0xf00 +800002f0: 00b00137 lui sp,0xb00 +800002f4: 02209f33 mulh t5,ra,sp +800002f8: 00000013 nop +800002fc: 00000013 nop +80000300: 000f0313 mv t1,t5 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fe5210e3 bne tp,t0,800002ec +80000310: 0000aeb7 lui t4,0xa +80000314: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000318: 00d00193 li gp,13 +8000031c: 2bd31463 bne t1,t4,800005c4 + +80000320 : +80000320: 00000213 li tp,0 +80000324: 00d000b7 lui ra,0xd00 +80000328: 00b00137 lui sp,0xb00 +8000032c: 02209f33 mulh t5,ra,sp +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fe5216e3 bne tp,t0,80000324 +8000033c: 00009eb7 lui t4,0x9 +80000340: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000344: 00e00193 li gp,14 +80000348: 27df1e63 bne t5,t4,800005c4 + +8000034c : +8000034c: 00000213 li tp,0 +80000350: 00e000b7 lui ra,0xe00 +80000354: 00b00137 lui sp,0xb00 +80000358: 00000013 nop +8000035c: 02209f33 mulh t5,ra,sp +80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000364: 00200293 li t0,2 +80000368: fe5214e3 bne tp,t0,80000350 +8000036c: 0000aeb7 lui t4,0xa +80000370: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000374: 00f00193 li gp,15 +80000378: 25df1663 bne t5,t4,800005c4 + +8000037c : +8000037c: 00000213 li tp,0 +80000380: 00f000b7 lui ra,0xf00 +80000384: 00b00137 lui sp,0xb00 +80000388: 00000013 nop +8000038c: 00000013 nop +80000390: 02209f33 mulh t5,ra,sp +80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000398: 00200293 li t0,2 +8000039c: fe5212e3 bne tp,t0,80000380 +800003a0: 0000aeb7 lui t4,0xa +800003a4: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +800003a8: 01000193 li gp,16 +800003ac: 21df1c63 bne t5,t4,800005c4 + +800003b0 : +800003b0: 00000213 li tp,0 +800003b4: 00d000b7 lui ra,0xd00 +800003b8: 00000013 nop +800003bc: 00b00137 lui sp,0xb00 +800003c0: 02209f33 mulh t5,ra,sp +800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c8: 00200293 li t0,2 +800003cc: fe5214e3 bne tp,t0,800003b4 +800003d0: 00009eb7 lui t4,0x9 +800003d4: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +800003d8: 01100193 li gp,17 +800003dc: 1fdf1463 bne t5,t4,800005c4 + +800003e0 : +800003e0: 00000213 li tp,0 +800003e4: 00e000b7 lui ra,0xe00 +800003e8: 00000013 nop +800003ec: 00b00137 lui sp,0xb00 +800003f0: 00000013 nop +800003f4: 02209f33 mulh t5,ra,sp +800003f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003fc: 00200293 li t0,2 +80000400: fe5212e3 bne tp,t0,800003e4 +80000404: 0000aeb7 lui t4,0xa +80000408: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +8000040c: 01200193 li gp,18 +80000410: 1bdf1a63 bne t5,t4,800005c4 + +80000414 : +80000414: 00000213 li tp,0 +80000418: 00f000b7 lui ra,0xf00 +8000041c: 00000013 nop +80000420: 00000013 nop +80000424: 00b00137 lui sp,0xb00 +80000428: 02209f33 mulh t5,ra,sp +8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000430: 00200293 li t0,2 +80000434: fe5212e3 bne tp,t0,80000418 +80000438: 0000aeb7 lui t4,0xa +8000043c: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000440: 01300193 li gp,19 +80000444: 19df1063 bne t5,t4,800005c4 + +80000448 : +80000448: 00000213 li tp,0 +8000044c: 00b00137 lui sp,0xb00 +80000450: 00d000b7 lui ra,0xd00 +80000454: 02209f33 mulh t5,ra,sp +80000458: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000045c: 00200293 li t0,2 +80000460: fe5216e3 bne tp,t0,8000044c +80000464: 00009eb7 lui t4,0x9 +80000468: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +8000046c: 01400193 li gp,20 +80000470: 15df1a63 bne t5,t4,800005c4 + +80000474 : +80000474: 00000213 li tp,0 +80000478: 00b00137 lui sp,0xb00 +8000047c: 00e000b7 lui ra,0xe00 +80000480: 00000013 nop +80000484: 02209f33 mulh t5,ra,sp +80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000048c: 00200293 li t0,2 +80000490: fe5214e3 bne tp,t0,80000478 +80000494: 0000aeb7 lui t4,0xa +80000498: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +8000049c: 01500193 li gp,21 +800004a0: 13df1263 bne t5,t4,800005c4 + +800004a4 : +800004a4: 00000213 li tp,0 +800004a8: 00b00137 lui sp,0xb00 +800004ac: 00f000b7 lui ra,0xf00 +800004b0: 00000013 nop +800004b4: 00000013 nop +800004b8: 02209f33 mulh t5,ra,sp +800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004c0: 00200293 li t0,2 +800004c4: fe5212e3 bne tp,t0,800004a8 +800004c8: 0000aeb7 lui t4,0xa +800004cc: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +800004d0: 01600193 li gp,22 +800004d4: 0fdf1863 bne t5,t4,800005c4 + +800004d8 : +800004d8: 00000213 li tp,0 +800004dc: 00b00137 lui sp,0xb00 +800004e0: 00000013 nop +800004e4: 00d000b7 lui ra,0xd00 +800004e8: 02209f33 mulh t5,ra,sp +800004ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004f0: 00200293 li t0,2 +800004f4: fe5214e3 bne tp,t0,800004dc +800004f8: 00009eb7 lui t4,0x9 +800004fc: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000500: 01700193 li gp,23 +80000504: 0ddf1063 bne t5,t4,800005c4 + +80000508 : +80000508: 00000213 li tp,0 +8000050c: 00b00137 lui sp,0xb00 +80000510: 00000013 nop +80000514: 00e000b7 lui ra,0xe00 +80000518: 00000013 nop +8000051c: 02209f33 mulh t5,ra,sp +80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000524: 00200293 li t0,2 +80000528: fe5212e3 bne tp,t0,8000050c +8000052c: 0000aeb7 lui t4,0xa +80000530: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000534: 01800193 li gp,24 +80000538: 09df1663 bne t5,t4,800005c4 + +8000053c : +8000053c: 00000213 li tp,0 +80000540: 00b00137 lui sp,0xb00 +80000544: 00000013 nop +80000548: 00000013 nop +8000054c: 00f000b7 lui ra,0xf00 +80000550: 02209f33 mulh t5,ra,sp +80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000558: 00200293 li t0,2 +8000055c: fe5212e3 bne tp,t0,80000540 +80000560: 0000aeb7 lui t4,0xa +80000564: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000568: 01900193 li gp,25 +8000056c: 05df1c63 bne t5,t4,800005c4 + +80000570 : +80000570: 7c0000b7 lui ra,0x7c000 +80000574: 02101133 mulh sp,zero,ra +80000578: 00000e93 li t4,0 +8000057c: 01a00193 li gp,26 +80000580: 05d11263 bne sp,t4,800005c4 + +80000584 : +80000584: 800000b7 lui ra,0x80000 +80000588: 02009133 mulh sp,ra,zero +8000058c: 00000e93 li t4,0 +80000590: 01b00193 li gp,27 +80000594: 03d11863 bne sp,t4,800005c4 + +80000598 : +80000598: 020010b3 mulh ra,zero,zero +8000059c: 00000e93 li t4,0 +800005a0: 01c00193 li gp,28 +800005a4: 03d09063 bne ra,t4,800005c4 + +800005a8 : +800005a8: 021000b7 lui ra,0x2100 +800005ac: 02200137 lui sp,0x2200 +800005b0: 02209033 mulh zero,ra,sp +800005b4: 00000e93 li t4,0 +800005b8: 01d00193 li gp,29 +800005bc: 01d01463 bne zero,t4,800005c4 +800005c0: 00301c63 bne zero,gp,800005d8 + +800005c4 : +800005c4: 0ff0000f fence +800005c8: 00018063 beqz gp,800005c8 +800005cc: 00119193 slli gp,gp,0x1 +800005d0: 0011e193 ori gp,gp,1 +800005d4: 00000073 ecall + +800005d8 : +800005d8: 0ff0000f fence +800005dc: 00100193 li gp,1 +800005e0: 00000073 ecall +800005e4: c0001073 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32um-p-mulhsu b/Tests/isa/rv32um-p-mulhsu new file mode 100644 index 0000000..340ec9f Binary files /dev/null and b/Tests/isa/rv32um-p-mulhsu differ diff --git a/Tests/isa/rv32um-p-mulhsu.dump b/Tests/isa/rv32um-p-mulhsu.dump new file mode 100644 index 0000000..d0a5b7e --- /dev/null +++ b/Tests/isa/rv32um-p-mulhsu.dump @@ -0,0 +1,479 @@ + +rv32um-p-mulhsu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00000113 li sp,0 +80000104: 0220af33 mulhsu t5,ra,sp +80000108: 00000e93 li t4,0 +8000010c: 00200193 li gp,2 +80000110: 4bdf1a63 bne t5,t4,800005c4 + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 0220af33 mulhsu t5,ra,sp +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 49df1e63 bne t5,t4,800005c4 + +8000012c : +8000012c: 00300093 li ra,3 +80000130: 00700113 li sp,7 +80000134: 0220af33 mulhsu t5,ra,sp +80000138: 00000e93 li t4,0 +8000013c: 00400193 li gp,4 +80000140: 49df1263 bne t5,t4,800005c4 + +80000144 : +80000144: 00000093 li ra,0 +80000148: ffff8137 lui sp,0xffff8 +8000014c: 0220af33 mulhsu t5,ra,sp +80000150: 00000e93 li t4,0 +80000154: 00500193 li gp,5 +80000158: 47df1663 bne t5,t4,800005c4 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00000113 li sp,0 +80000164: 0220af33 mulhsu t5,ra,sp +80000168: 00000e93 li t4,0 +8000016c: 00600193 li gp,6 +80000170: 45df1a63 bne t5,t4,800005c4 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: ffff8137 lui sp,0xffff8 +8000017c: 0220af33 mulhsu t5,ra,sp +80000180: 80004eb7 lui t4,0x80004 +80000184: 00700193 li gp,7 +80000188: 43df1e63 bne t5,t4,800005c4 + +8000018c : +8000018c: aaaab0b7 lui ra,0xaaaab +80000190: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> +80000194: 00030137 lui sp,0x30 +80000198: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +8000019c: 0220af33 mulhsu t5,ra,sp +800001a0: ffff0eb7 lui t4,0xffff0 +800001a4: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081> +800001a8: 01e00193 li gp,30 +800001ac: 41df1c63 bne t5,t4,800005c4 + +800001b0 : +800001b0: 000300b7 lui ra,0x30 +800001b4: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +800001b8: aaaab137 lui sp,0xaaaab +800001bc: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> +800001c0: 0220af33 mulhsu t5,ra,sp +800001c4: 00020eb7 lui t4,0x20 +800001c8: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> +800001cc: 01f00193 li gp,31 +800001d0: 3fdf1a63 bne t5,t4,800005c4 + +800001d4 : +800001d4: ff0000b7 lui ra,0xff000 +800001d8: ff000137 lui sp,0xff000 +800001dc: 0220af33 mulhsu t5,ra,sp +800001e0: ff010eb7 lui t4,0xff010 +800001e4: 02000193 li gp,32 +800001e8: 3ddf1e63 bne t5,t4,800005c4 + +800001ec : +800001ec: fff00093 li ra,-1 +800001f0: fff00113 li sp,-1 +800001f4: 0220af33 mulhsu t5,ra,sp +800001f8: fff00e93 li t4,-1 +800001fc: 02100193 li gp,33 +80000200: 3ddf1263 bne t5,t4,800005c4 + +80000204 : +80000204: fff00093 li ra,-1 +80000208: 00100113 li sp,1 +8000020c: 0220af33 mulhsu t5,ra,sp +80000210: fff00e93 li t4,-1 +80000214: 02200193 li gp,34 +80000218: 3bdf1663 bne t5,t4,800005c4 + +8000021c : +8000021c: 00100093 li ra,1 +80000220: fff00113 li sp,-1 +80000224: 0220af33 mulhsu t5,ra,sp +80000228: 00000e93 li t4,0 +8000022c: 02300193 li gp,35 +80000230: 39df1a63 bne t5,t4,800005c4 + +80000234 : +80000234: 00d000b7 lui ra,0xd00 +80000238: 00b00137 lui sp,0xb00 +8000023c: 0220a0b3 mulhsu ra,ra,sp +80000240: 00009eb7 lui t4,0x9 +80000244: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000248: 00800193 li gp,8 +8000024c: 37d09c63 bne ra,t4,800005c4 + +80000250 : +80000250: 00e000b7 lui ra,0xe00 +80000254: 00b00137 lui sp,0xb00 +80000258: 0220a133 mulhsu sp,ra,sp +8000025c: 0000aeb7 lui t4,0xa +80000260: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000264: 00900193 li gp,9 +80000268: 35d11e63 bne sp,t4,800005c4 + +8000026c : +8000026c: 00d000b7 lui ra,0xd00 +80000270: 0210a0b3 mulhsu ra,ra,ra +80000274: 0000beb7 lui t4,0xb +80000278: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> +8000027c: 00a00193 li gp,10 +80000280: 35d09263 bne ra,t4,800005c4 + +80000284 : +80000284: 00000213 li tp,0 +80000288: 00d000b7 lui ra,0xd00 +8000028c: 00b00137 lui sp,0xb00 +80000290: 0220af33 mulhsu t5,ra,sp +80000294: 000f0313 mv t1,t5 +80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000029c: 00200293 li t0,2 +800002a0: fe5214e3 bne tp,t0,80000288 +800002a4: 00009eb7 lui t4,0x9 +800002a8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +800002ac: 00b00193 li gp,11 +800002b0: 31d31a63 bne t1,t4,800005c4 + +800002b4 : +800002b4: 00000213 li tp,0 +800002b8: 00e000b7 lui ra,0xe00 +800002bc: 00b00137 lui sp,0xb00 +800002c0: 0220af33 mulhsu t5,ra,sp +800002c4: 00000013 nop +800002c8: 000f0313 mv t1,t5 +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5212e3 bne tp,t0,800002b8 +800002d8: 0000aeb7 lui t4,0xa +800002dc: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +800002e0: 00c00193 li gp,12 +800002e4: 2fd31063 bne t1,t4,800005c4 + +800002e8 : +800002e8: 00000213 li tp,0 +800002ec: 00f000b7 lui ra,0xf00 +800002f0: 00b00137 lui sp,0xb00 +800002f4: 0220af33 mulhsu t5,ra,sp +800002f8: 00000013 nop +800002fc: 00000013 nop +80000300: 000f0313 mv t1,t5 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fe5210e3 bne tp,t0,800002ec +80000310: 0000aeb7 lui t4,0xa +80000314: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000318: 00d00193 li gp,13 +8000031c: 2bd31463 bne t1,t4,800005c4 + +80000320 : +80000320: 00000213 li tp,0 +80000324: 00d000b7 lui ra,0xd00 +80000328: 00b00137 lui sp,0xb00 +8000032c: 0220af33 mulhsu t5,ra,sp +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fe5216e3 bne tp,t0,80000324 +8000033c: 00009eb7 lui t4,0x9 +80000340: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000344: 00e00193 li gp,14 +80000348: 27df1e63 bne t5,t4,800005c4 + +8000034c : +8000034c: 00000213 li tp,0 +80000350: 00e000b7 lui ra,0xe00 +80000354: 00b00137 lui sp,0xb00 +80000358: 00000013 nop +8000035c: 0220af33 mulhsu t5,ra,sp +80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000364: 00200293 li t0,2 +80000368: fe5214e3 bne tp,t0,80000350 +8000036c: 0000aeb7 lui t4,0xa +80000370: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000374: 00f00193 li gp,15 +80000378: 25df1663 bne t5,t4,800005c4 + +8000037c : +8000037c: 00000213 li tp,0 +80000380: 00f000b7 lui ra,0xf00 +80000384: 00b00137 lui sp,0xb00 +80000388: 00000013 nop +8000038c: 00000013 nop +80000390: 0220af33 mulhsu t5,ra,sp +80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000398: 00200293 li t0,2 +8000039c: fe5212e3 bne tp,t0,80000380 +800003a0: 0000aeb7 lui t4,0xa +800003a4: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +800003a8: 01000193 li gp,16 +800003ac: 21df1c63 bne t5,t4,800005c4 + +800003b0 : +800003b0: 00000213 li tp,0 +800003b4: 00d000b7 lui ra,0xd00 +800003b8: 00000013 nop +800003bc: 00b00137 lui sp,0xb00 +800003c0: 0220af33 mulhsu t5,ra,sp +800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c8: 00200293 li t0,2 +800003cc: fe5214e3 bne tp,t0,800003b4 +800003d0: 00009eb7 lui t4,0x9 +800003d4: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +800003d8: 01100193 li gp,17 +800003dc: 1fdf1463 bne t5,t4,800005c4 + +800003e0 : +800003e0: 00000213 li tp,0 +800003e4: 00e000b7 lui ra,0xe00 +800003e8: 00000013 nop +800003ec: 00b00137 lui sp,0xb00 +800003f0: 00000013 nop +800003f4: 0220af33 mulhsu t5,ra,sp +800003f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003fc: 00200293 li t0,2 +80000400: fe5212e3 bne tp,t0,800003e4 +80000404: 0000aeb7 lui t4,0xa +80000408: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +8000040c: 01200193 li gp,18 +80000410: 1bdf1a63 bne t5,t4,800005c4 + +80000414 : +80000414: 00000213 li tp,0 +80000418: 00f000b7 lui ra,0xf00 +8000041c: 00000013 nop +80000420: 00000013 nop +80000424: 00b00137 lui sp,0xb00 +80000428: 0220af33 mulhsu t5,ra,sp +8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000430: 00200293 li t0,2 +80000434: fe5212e3 bne tp,t0,80000418 +80000438: 0000aeb7 lui t4,0xa +8000043c: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000440: 01300193 li gp,19 +80000444: 19df1063 bne t5,t4,800005c4 + +80000448 : +80000448: 00000213 li tp,0 +8000044c: 00b00137 lui sp,0xb00 +80000450: 00d000b7 lui ra,0xd00 +80000454: 0220af33 mulhsu t5,ra,sp +80000458: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000045c: 00200293 li t0,2 +80000460: fe5216e3 bne tp,t0,8000044c +80000464: 00009eb7 lui t4,0x9 +80000468: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +8000046c: 01400193 li gp,20 +80000470: 15df1a63 bne t5,t4,800005c4 + +80000474 : +80000474: 00000213 li tp,0 +80000478: 00b00137 lui sp,0xb00 +8000047c: 00e000b7 lui ra,0xe00 +80000480: 00000013 nop +80000484: 0220af33 mulhsu t5,ra,sp +80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000048c: 00200293 li t0,2 +80000490: fe5214e3 bne tp,t0,80000478 +80000494: 0000aeb7 lui t4,0xa +80000498: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +8000049c: 01500193 li gp,21 +800004a0: 13df1263 bne t5,t4,800005c4 + +800004a4 : +800004a4: 00000213 li tp,0 +800004a8: 00b00137 lui sp,0xb00 +800004ac: 00f000b7 lui ra,0xf00 +800004b0: 00000013 nop +800004b4: 00000013 nop +800004b8: 0220af33 mulhsu t5,ra,sp +800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004c0: 00200293 li t0,2 +800004c4: fe5212e3 bne tp,t0,800004a8 +800004c8: 0000aeb7 lui t4,0xa +800004cc: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +800004d0: 01600193 li gp,22 +800004d4: 0fdf1863 bne t5,t4,800005c4 + +800004d8 : +800004d8: 00000213 li tp,0 +800004dc: 00b00137 lui sp,0xb00 +800004e0: 00000013 nop +800004e4: 00d000b7 lui ra,0xd00 +800004e8: 0220af33 mulhsu t5,ra,sp +800004ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004f0: 00200293 li t0,2 +800004f4: fe5214e3 bne tp,t0,800004dc +800004f8: 00009eb7 lui t4,0x9 +800004fc: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000500: 01700193 li gp,23 +80000504: 0ddf1063 bne t5,t4,800005c4 + +80000508 : +80000508: 00000213 li tp,0 +8000050c: 00b00137 lui sp,0xb00 +80000510: 00000013 nop +80000514: 00e000b7 lui ra,0xe00 +80000518: 00000013 nop +8000051c: 0220af33 mulhsu t5,ra,sp +80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000524: 00200293 li t0,2 +80000528: fe5212e3 bne tp,t0,8000050c +8000052c: 0000aeb7 lui t4,0xa +80000530: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000534: 01800193 li gp,24 +80000538: 09df1663 bne t5,t4,800005c4 + +8000053c : +8000053c: 00000213 li tp,0 +80000540: 00b00137 lui sp,0xb00 +80000544: 00000013 nop +80000548: 00000013 nop +8000054c: 00f000b7 lui ra,0xf00 +80000550: 0220af33 mulhsu t5,ra,sp +80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000558: 00200293 li t0,2 +8000055c: fe5212e3 bne tp,t0,80000540 +80000560: 0000aeb7 lui t4,0xa +80000564: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000568: 01900193 li gp,25 +8000056c: 05df1c63 bne t5,t4,800005c4 + +80000570 : +80000570: 7c0000b7 lui ra,0x7c000 +80000574: 02102133 mulhsu sp,zero,ra +80000578: 00000e93 li t4,0 +8000057c: 01a00193 li gp,26 +80000580: 05d11263 bne sp,t4,800005c4 + +80000584 : +80000584: 800000b7 lui ra,0x80000 +80000588: 0200a133 mulhsu sp,ra,zero +8000058c: 00000e93 li t4,0 +80000590: 01b00193 li gp,27 +80000594: 03d11863 bne sp,t4,800005c4 + +80000598 : +80000598: 020020b3 mulhsu ra,zero,zero +8000059c: 00000e93 li t4,0 +800005a0: 01c00193 li gp,28 +800005a4: 03d09063 bne ra,t4,800005c4 + +800005a8 : +800005a8: 021000b7 lui ra,0x2100 +800005ac: 02200137 lui sp,0x2200 +800005b0: 0220a033 mulhsu zero,ra,sp +800005b4: 00000e93 li t4,0 +800005b8: 01d00193 li gp,29 +800005bc: 01d01463 bne zero,t4,800005c4 +800005c0: 00301c63 bne zero,gp,800005d8 + +800005c4 : +800005c4: 0ff0000f fence +800005c8: 00018063 beqz gp,800005c8 +800005cc: 00119193 slli gp,gp,0x1 +800005d0: 0011e193 ori gp,gp,1 +800005d4: 00000073 ecall + +800005d8 : +800005d8: 0ff0000f fence +800005dc: 00100193 li gp,1 +800005e0: 00000073 ecall +800005e4: c0001073 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32um-p-mulhu b/Tests/isa/rv32um-p-mulhu new file mode 100644 index 0000000..6ac24f4 Binary files /dev/null and b/Tests/isa/rv32um-p-mulhu differ diff --git a/Tests/isa/rv32um-p-mulhu.dump b/Tests/isa/rv32um-p-mulhu.dump new file mode 100644 index 0000000..642c24b --- /dev/null +++ b/Tests/isa/rv32um-p-mulhu.dump @@ -0,0 +1,479 @@ + +rv32um-p-mulhu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 00000093 li ra,0 +80000100: 00000113 li sp,0 +80000104: 0220bf33 mulhu t5,ra,sp +80000108: 00000e93 li t4,0 +8000010c: 00200193 li gp,2 +80000110: 4bdf1a63 bne t5,t4,800005c4 + +80000114 : +80000114: 00100093 li ra,1 +80000118: 00100113 li sp,1 +8000011c: 0220bf33 mulhu t5,ra,sp +80000120: 00000e93 li t4,0 +80000124: 00300193 li gp,3 +80000128: 49df1e63 bne t5,t4,800005c4 + +8000012c : +8000012c: 00300093 li ra,3 +80000130: 00700113 li sp,7 +80000134: 0220bf33 mulhu t5,ra,sp +80000138: 00000e93 li t4,0 +8000013c: 00400193 li gp,4 +80000140: 49df1263 bne t5,t4,800005c4 + +80000144 : +80000144: 00000093 li ra,0 +80000148: ffff8137 lui sp,0xffff8 +8000014c: 0220bf33 mulhu t5,ra,sp +80000150: 00000e93 li t4,0 +80000154: 00500193 li gp,5 +80000158: 47df1663 bne t5,t4,800005c4 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00000113 li sp,0 +80000164: 0220bf33 mulhu t5,ra,sp +80000168: 00000e93 li t4,0 +8000016c: 00600193 li gp,6 +80000170: 45df1a63 bne t5,t4,800005c4 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: ffff8137 lui sp,0xffff8 +8000017c: 0220bf33 mulhu t5,ra,sp +80000180: 7fffceb7 lui t4,0x7fffc +80000184: 00700193 li gp,7 +80000188: 43df1e63 bne t5,t4,800005c4 + +8000018c : +8000018c: aaaab0b7 lui ra,0xaaaab +80000190: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab> +80000194: 00030137 lui sp,0x30 +80000198: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +8000019c: 0220bf33 mulhu t5,ra,sp +800001a0: 00020eb7 lui t4,0x20 +800001a4: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> +800001a8: 01e00193 li gp,30 +800001ac: 41df1c63 bne t5,t4,800005c4 + +800001b0 : +800001b0: 000300b7 lui ra,0x30 +800001b4: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +800001b8: aaaab137 lui sp,0xaaaab +800001bc: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab> +800001c0: 0220bf33 mulhu t5,ra,sp +800001c4: 00020eb7 lui t4,0x20 +800001c8: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> +800001cc: 01f00193 li gp,31 +800001d0: 3fdf1a63 bne t5,t4,800005c4 + +800001d4 : +800001d4: ff0000b7 lui ra,0xff000 +800001d8: ff000137 lui sp,0xff000 +800001dc: 0220bf33 mulhu t5,ra,sp +800001e0: fe010eb7 lui t4,0xfe010 +800001e4: 02000193 li gp,32 +800001e8: 3ddf1e63 bne t5,t4,800005c4 + +800001ec : +800001ec: fff00093 li ra,-1 +800001f0: fff00113 li sp,-1 +800001f4: 0220bf33 mulhu t5,ra,sp +800001f8: ffe00e93 li t4,-2 +800001fc: 02100193 li gp,33 +80000200: 3ddf1263 bne t5,t4,800005c4 + +80000204 : +80000204: fff00093 li ra,-1 +80000208: 00100113 li sp,1 +8000020c: 0220bf33 mulhu t5,ra,sp +80000210: 00000e93 li t4,0 +80000214: 02200193 li gp,34 +80000218: 3bdf1663 bne t5,t4,800005c4 + +8000021c : +8000021c: 00100093 li ra,1 +80000220: fff00113 li sp,-1 +80000224: 0220bf33 mulhu t5,ra,sp +80000228: 00000e93 li t4,0 +8000022c: 02300193 li gp,35 +80000230: 39df1a63 bne t5,t4,800005c4 + +80000234 : +80000234: 00d000b7 lui ra,0xd00 +80000238: 00b00137 lui sp,0xb00 +8000023c: 0220b0b3 mulhu ra,ra,sp +80000240: 00009eb7 lui t4,0x9 +80000244: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000248: 00800193 li gp,8 +8000024c: 37d09c63 bne ra,t4,800005c4 + +80000250 : +80000250: 00e000b7 lui ra,0xe00 +80000254: 00b00137 lui sp,0xb00 +80000258: 0220b133 mulhu sp,ra,sp +8000025c: 0000aeb7 lui t4,0xa +80000260: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000264: 00900193 li gp,9 +80000268: 35d11e63 bne sp,t4,800005c4 + +8000026c : +8000026c: 00d000b7 lui ra,0xd00 +80000270: 0210b0b3 mulhu ra,ra,ra +80000274: 0000beb7 lui t4,0xb +80000278: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> +8000027c: 00a00193 li gp,10 +80000280: 35d09263 bne ra,t4,800005c4 + +80000284 : +80000284: 00000213 li tp,0 +80000288: 00d000b7 lui ra,0xd00 +8000028c: 00b00137 lui sp,0xb00 +80000290: 0220bf33 mulhu t5,ra,sp +80000294: 000f0313 mv t1,t5 +80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000029c: 00200293 li t0,2 +800002a0: fe5214e3 bne tp,t0,80000288 +800002a4: 00009eb7 lui t4,0x9 +800002a8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +800002ac: 00b00193 li gp,11 +800002b0: 31d31a63 bne t1,t4,800005c4 + +800002b4 : +800002b4: 00000213 li tp,0 +800002b8: 00e000b7 lui ra,0xe00 +800002bc: 00b00137 lui sp,0xb00 +800002c0: 0220bf33 mulhu t5,ra,sp +800002c4: 00000013 nop +800002c8: 000f0313 mv t1,t5 +800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800002d0: 00200293 li t0,2 +800002d4: fe5212e3 bne tp,t0,800002b8 +800002d8: 0000aeb7 lui t4,0xa +800002dc: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +800002e0: 00c00193 li gp,12 +800002e4: 2fd31063 bne t1,t4,800005c4 + +800002e8 : +800002e8: 00000213 li tp,0 +800002ec: 00f000b7 lui ra,0xf00 +800002f0: 00b00137 lui sp,0xb00 +800002f4: 0220bf33 mulhu t5,ra,sp +800002f8: 00000013 nop +800002fc: 00000013 nop +80000300: 000f0313 mv t1,t5 +80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000308: 00200293 li t0,2 +8000030c: fe5210e3 bne tp,t0,800002ec +80000310: 0000aeb7 lui t4,0xa +80000314: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000318: 00d00193 li gp,13 +8000031c: 2bd31463 bne t1,t4,800005c4 + +80000320 : +80000320: 00000213 li tp,0 +80000324: 00d000b7 lui ra,0xd00 +80000328: 00b00137 lui sp,0xb00 +8000032c: 0220bf33 mulhu t5,ra,sp +80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000334: 00200293 li t0,2 +80000338: fe5216e3 bne tp,t0,80000324 +8000033c: 00009eb7 lui t4,0x9 +80000340: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000344: 00e00193 li gp,14 +80000348: 27df1e63 bne t5,t4,800005c4 + +8000034c : +8000034c: 00000213 li tp,0 +80000350: 00e000b7 lui ra,0xe00 +80000354: 00b00137 lui sp,0xb00 +80000358: 00000013 nop +8000035c: 0220bf33 mulhu t5,ra,sp +80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000364: 00200293 li t0,2 +80000368: fe5214e3 bne tp,t0,80000350 +8000036c: 0000aeb7 lui t4,0xa +80000370: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000374: 00f00193 li gp,15 +80000378: 25df1663 bne t5,t4,800005c4 + +8000037c : +8000037c: 00000213 li tp,0 +80000380: 00f000b7 lui ra,0xf00 +80000384: 00b00137 lui sp,0xb00 +80000388: 00000013 nop +8000038c: 00000013 nop +80000390: 0220bf33 mulhu t5,ra,sp +80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000398: 00200293 li t0,2 +8000039c: fe5212e3 bne tp,t0,80000380 +800003a0: 0000aeb7 lui t4,0xa +800003a4: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +800003a8: 01000193 li gp,16 +800003ac: 21df1c63 bne t5,t4,800005c4 + +800003b0 : +800003b0: 00000213 li tp,0 +800003b4: 00d000b7 lui ra,0xd00 +800003b8: 00000013 nop +800003bc: 00b00137 lui sp,0xb00 +800003c0: 0220bf33 mulhu t5,ra,sp +800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003c8: 00200293 li t0,2 +800003cc: fe5214e3 bne tp,t0,800003b4 +800003d0: 00009eb7 lui t4,0x9 +800003d4: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +800003d8: 01100193 li gp,17 +800003dc: 1fdf1463 bne t5,t4,800005c4 + +800003e0 : +800003e0: 00000213 li tp,0 +800003e4: 00e000b7 lui ra,0xe00 +800003e8: 00000013 nop +800003ec: 00b00137 lui sp,0xb00 +800003f0: 00000013 nop +800003f4: 0220bf33 mulhu t5,ra,sp +800003f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800003fc: 00200293 li t0,2 +80000400: fe5212e3 bne tp,t0,800003e4 +80000404: 0000aeb7 lui t4,0xa +80000408: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +8000040c: 01200193 li gp,18 +80000410: 1bdf1a63 bne t5,t4,800005c4 + +80000414 : +80000414: 00000213 li tp,0 +80000418: 00f000b7 lui ra,0xf00 +8000041c: 00000013 nop +80000420: 00000013 nop +80000424: 00b00137 lui sp,0xb00 +80000428: 0220bf33 mulhu t5,ra,sp +8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000430: 00200293 li t0,2 +80000434: fe5212e3 bne tp,t0,80000418 +80000438: 0000aeb7 lui t4,0xa +8000043c: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000440: 01300193 li gp,19 +80000444: 19df1063 bne t5,t4,800005c4 + +80000448 : +80000448: 00000213 li tp,0 +8000044c: 00b00137 lui sp,0xb00 +80000450: 00d000b7 lui ra,0xd00 +80000454: 0220bf33 mulhu t5,ra,sp +80000458: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000045c: 00200293 li t0,2 +80000460: fe5216e3 bne tp,t0,8000044c +80000464: 00009eb7 lui t4,0x9 +80000468: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +8000046c: 01400193 li gp,20 +80000470: 15df1a63 bne t5,t4,800005c4 + +80000474 : +80000474: 00000213 li tp,0 +80000478: 00b00137 lui sp,0xb00 +8000047c: 00e000b7 lui ra,0xe00 +80000480: 00000013 nop +80000484: 0220bf33 mulhu t5,ra,sp +80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000048c: 00200293 li t0,2 +80000490: fe5214e3 bne tp,t0,80000478 +80000494: 0000aeb7 lui t4,0xa +80000498: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +8000049c: 01500193 li gp,21 +800004a0: 13df1263 bne t5,t4,800005c4 + +800004a4 : +800004a4: 00000213 li tp,0 +800004a8: 00b00137 lui sp,0xb00 +800004ac: 00f000b7 lui ra,0xf00 +800004b0: 00000013 nop +800004b4: 00000013 nop +800004b8: 0220bf33 mulhu t5,ra,sp +800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004c0: 00200293 li t0,2 +800004c4: fe5212e3 bne tp,t0,800004a8 +800004c8: 0000aeb7 lui t4,0xa +800004cc: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +800004d0: 01600193 li gp,22 +800004d4: 0fdf1863 bne t5,t4,800005c4 + +800004d8 : +800004d8: 00000213 li tp,0 +800004dc: 00b00137 lui sp,0xb00 +800004e0: 00000013 nop +800004e4: 00d000b7 lui ra,0xd00 +800004e8: 0220bf33 mulhu t5,ra,sp +800004ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +800004f0: 00200293 li t0,2 +800004f4: fe5214e3 bne tp,t0,800004dc +800004f8: 00009eb7 lui t4,0x9 +800004fc: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80000500: 01700193 li gp,23 +80000504: 0ddf1063 bne t5,t4,800005c4 + +80000508 : +80000508: 00000213 li tp,0 +8000050c: 00b00137 lui sp,0xb00 +80000510: 00000013 nop +80000514: 00e000b7 lui ra,0xe00 +80000518: 00000013 nop +8000051c: 0220bf33 mulhu t5,ra,sp +80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000524: 00200293 li t0,2 +80000528: fe5212e3 bne tp,t0,8000050c +8000052c: 0000aeb7 lui t4,0xa +80000530: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80000534: 01800193 li gp,24 +80000538: 09df1663 bne t5,t4,800005c4 + +8000053c : +8000053c: 00000213 li tp,0 +80000540: 00b00137 lui sp,0xb00 +80000544: 00000013 nop +80000548: 00000013 nop +8000054c: 00f000b7 lui ra,0xf00 +80000550: 0220bf33 mulhu t5,ra,sp +80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80000558: 00200293 li t0,2 +8000055c: fe5212e3 bne tp,t0,80000540 +80000560: 0000aeb7 lui t4,0xa +80000564: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80000568: 01900193 li gp,25 +8000056c: 05df1c63 bne t5,t4,800005c4 + +80000570 : +80000570: 7c0000b7 lui ra,0x7c000 +80000574: 02103133 mulhu sp,zero,ra +80000578: 00000e93 li t4,0 +8000057c: 01a00193 li gp,26 +80000580: 05d11263 bne sp,t4,800005c4 + +80000584 : +80000584: 800000b7 lui ra,0x80000 +80000588: 0200b133 mulhu sp,ra,zero +8000058c: 00000e93 li t4,0 +80000590: 01b00193 li gp,27 +80000594: 03d11863 bne sp,t4,800005c4 + +80000598 : +80000598: 020030b3 mulhu ra,zero,zero +8000059c: 00000e93 li t4,0 +800005a0: 01c00193 li gp,28 +800005a4: 03d09063 bne ra,t4,800005c4 + +800005a8 : +800005a8: 021000b7 lui ra,0x2100 +800005ac: 02200137 lui sp,0x2200 +800005b0: 0220b033 mulhu zero,ra,sp +800005b4: 00000e93 li t4,0 +800005b8: 01d00193 li gp,29 +800005bc: 01d01463 bne zero,t4,800005c4 +800005c0: 00301c63 bne zero,gp,800005d8 + +800005c4 : +800005c4: 0ff0000f fence +800005c8: 00018063 beqz gp,800005c8 +800005cc: 00119193 slli gp,gp,0x1 +800005d0: 0011e193 ori gp,gp,1 +800005d4: 00000073 ecall + +800005d8 : +800005d8: 0ff0000f fence +800005dc: 00100193 li gp,1 +800005e0: 00000073 ecall +800005e4: c0001073 unimp +800005e8: 0000 unimp +800005ea: 0000 unimp +800005ec: 0000 unimp +800005ee: 0000 unimp +800005f0: 0000 unimp +800005f2: 0000 unimp +800005f4: 0000 unimp +800005f6: 0000 unimp +800005f8: 0000 unimp +800005fa: 0000 unimp +800005fc: 0000 unimp +800005fe: 0000 unimp +80000600: 0000 unimp +80000602: 0000 unimp diff --git a/Tests/isa/rv32um-p-rem b/Tests/isa/rv32um-p-rem new file mode 100644 index 0000000..e57e0bb Binary files /dev/null and b/Tests/isa/rv32um-p-rem differ diff --git a/Tests/isa/rv32um-p-rem.dump b/Tests/isa/rv32um-p-rem.dump new file mode 100644 index 0000000..de655c2 --- /dev/null +++ b/Tests/isa/rv32um-p-rem.dump @@ -0,0 +1,168 @@ + +rv32um-p-rem: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 01400093 li ra,20 +80000100: 00600113 li sp,6 +80000104: 0220ef33 rem t5,ra,sp +80000108: 00200e93 li t4,2 +8000010c: 00200193 li gp,2 +80000110: 0ddf1463 bne t5,t4,800001d8 + +80000114 : +80000114: fec00093 li ra,-20 +80000118: 00600113 li sp,6 +8000011c: 0220ef33 rem t5,ra,sp +80000120: ffe00e93 li t4,-2 +80000124: 00300193 li gp,3 +80000128: 0bdf1863 bne t5,t4,800001d8 + +8000012c : +8000012c: 01400093 li ra,20 +80000130: ffa00113 li sp,-6 +80000134: 0220ef33 rem t5,ra,sp +80000138: 00200e93 li t4,2 +8000013c: 00400193 li gp,4 +80000140: 09df1c63 bne t5,t4,800001d8 + +80000144 : +80000144: fec00093 li ra,-20 +80000148: ffa00113 li sp,-6 +8000014c: 0220ef33 rem t5,ra,sp +80000150: ffe00e93 li t4,-2 +80000154: 00500193 li gp,5 +80000158: 09df1063 bne t5,t4,800001d8 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00100113 li sp,1 +80000164: 0220ef33 rem t5,ra,sp +80000168: 00000e93 li t4,0 +8000016c: 00600193 li gp,6 +80000170: 07df1463 bne t5,t4,800001d8 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: fff00113 li sp,-1 +8000017c: 0220ef33 rem t5,ra,sp +80000180: 00000e93 li t4,0 +80000184: 00700193 li gp,7 +80000188: 05df1863 bne t5,t4,800001d8 + +8000018c : +8000018c: 800000b7 lui ra,0x80000 +80000190: 00000113 li sp,0 +80000194: 0220ef33 rem t5,ra,sp +80000198: 80000eb7 lui t4,0x80000 +8000019c: 00800193 li gp,8 +800001a0: 03df1c63 bne t5,t4,800001d8 + +800001a4 : +800001a4: 00100093 li ra,1 +800001a8: 00000113 li sp,0 +800001ac: 0220ef33 rem t5,ra,sp +800001b0: 00100e93 li t4,1 +800001b4: 00900193 li gp,9 +800001b8: 03df1063 bne t5,t4,800001d8 + +800001bc : +800001bc: 00000093 li ra,0 +800001c0: 00000113 li sp,0 +800001c4: 0220ef33 rem t5,ra,sp +800001c8: 00000e93 li t4,0 +800001cc: 00a00193 li gp,10 +800001d0: 01df1463 bne t5,t4,800001d8 +800001d4: 00301c63 bne zero,gp,800001ec + +800001d8 : +800001d8: 0ff0000f fence +800001dc: 00018063 beqz gp,800001dc +800001e0: 00119193 slli gp,gp,0x1 +800001e4: 0011e193 ori gp,gp,1 +800001e8: 00000073 ecall + +800001ec : +800001ec: 0ff0000f fence +800001f0: 00100193 li gp,1 +800001f4: 00000073 ecall +800001f8: c0001073 unimp +800001fc: 0000 unimp +800001fe: 0000 unimp +80000200: 0000 unimp +80000202: 0000 unimp diff --git a/Tests/isa/rv32um-p-remu b/Tests/isa/rv32um-p-remu new file mode 100644 index 0000000..d8ac9ce Binary files /dev/null and b/Tests/isa/rv32um-p-remu differ diff --git a/Tests/isa/rv32um-p-remu.dump b/Tests/isa/rv32um-p-remu.dump new file mode 100644 index 0000000..ad3ae64 --- /dev/null +++ b/Tests/isa/rv32um-p-remu.dump @@ -0,0 +1,168 @@ + +rv32um-p-remu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: f1402573 csrr a0,mhartid +80000050: 00051063 bnez a0,80000050 +80000054: 00000297 auipc t0,0x0 +80000058: 01028293 addi t0,t0,16 # 80000064 +8000005c: 30529073 csrw mtvec,t0 +80000060: 18005073 csrwi satp,0 +80000064: 00000297 auipc t0,0x0 +80000068: 01c28293 addi t0,t0,28 # 80000080 +8000006c: 30529073 csrw mtvec,t0 +80000070: fff00293 li t0,-1 +80000074: 3b029073 csrw pmpaddr0,t0 +80000078: 01f00293 li t0,31 +8000007c: 3a029073 csrw pmpcfg0,t0 +80000080: 00000297 auipc t0,0x0 +80000084: 01828293 addi t0,t0,24 # 80000098 +80000088: 30529073 csrw mtvec,t0 +8000008c: 30205073 csrwi medeleg,0 +80000090: 30305073 csrwi mideleg,0 +80000094: 30405073 csrwi mie,0 +80000098: 00000193 li gp,0 +8000009c: 00000297 auipc t0,0x0 +800000a0: f6828293 addi t0,t0,-152 # 80000004 +800000a4: 30529073 csrw mtvec,t0 +800000a8: 00100513 li a0,1 +800000ac: 01f51513 slli a0,a0,0x1f +800000b0: 00054863 bltz a0,800000c0 +800000b4: 0ff0000f fence +800000b8: 00100193 li gp,1 +800000bc: 00000073 ecall +800000c0: 80000297 auipc t0,0x80000 +800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> +800000c8: 00028e63 beqz t0,800000e4 +800000cc: 10529073 csrw stvec,t0 +800000d0: 0000b2b7 lui t0,0xb +800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +800000d8: 30229073 csrw medeleg,t0 +800000dc: 30202373 csrr t1,medeleg +800000e0: f4629ee3 bne t0,t1,8000003c +800000e4: 30005073 csrwi mstatus,0 +800000e8: 00000297 auipc t0,0x0 +800000ec: 01428293 addi t0,t0,20 # 800000fc +800000f0: 34129073 csrw mepc,t0 +800000f4: f1402573 csrr a0,mhartid +800000f8: 30200073 mret + +800000fc : +800000fc: 01400093 li ra,20 +80000100: 00600113 li sp,6 +80000104: 0220ff33 remu t5,ra,sp +80000108: 00200e93 li t4,2 +8000010c: 00200193 li gp,2 +80000110: 0ddf1463 bne t5,t4,800001d8 + +80000114 : +80000114: fec00093 li ra,-20 +80000118: 00600113 li sp,6 +8000011c: 0220ff33 remu t5,ra,sp +80000120: 00200e93 li t4,2 +80000124: 00300193 li gp,3 +80000128: 0bdf1863 bne t5,t4,800001d8 + +8000012c : +8000012c: 01400093 li ra,20 +80000130: ffa00113 li sp,-6 +80000134: 0220ff33 remu t5,ra,sp +80000138: 01400e93 li t4,20 +8000013c: 00400193 li gp,4 +80000140: 09df1c63 bne t5,t4,800001d8 + +80000144 : +80000144: fec00093 li ra,-20 +80000148: ffa00113 li sp,-6 +8000014c: 0220ff33 remu t5,ra,sp +80000150: fec00e93 li t4,-20 +80000154: 00500193 li gp,5 +80000158: 09df1063 bne t5,t4,800001d8 + +8000015c : +8000015c: 800000b7 lui ra,0x80000 +80000160: 00100113 li sp,1 +80000164: 0220ff33 remu t5,ra,sp +80000168: 00000e93 li t4,0 +8000016c: 00600193 li gp,6 +80000170: 07df1463 bne t5,t4,800001d8 + +80000174 : +80000174: 800000b7 lui ra,0x80000 +80000178: fff00113 li sp,-1 +8000017c: 0220ff33 remu t5,ra,sp +80000180: 80000eb7 lui t4,0x80000 +80000184: 00700193 li gp,7 +80000188: 05df1863 bne t5,t4,800001d8 + +8000018c : +8000018c: 800000b7 lui ra,0x80000 +80000190: 00000113 li sp,0 +80000194: 0220ff33 remu t5,ra,sp +80000198: 80000eb7 lui t4,0x80000 +8000019c: 00800193 li gp,8 +800001a0: 03df1c63 bne t5,t4,800001d8 + +800001a4 : +800001a4: 00100093 li ra,1 +800001a8: 00000113 li sp,0 +800001ac: 0220ff33 remu t5,ra,sp +800001b0: 00100e93 li t4,1 +800001b4: 00900193 li gp,9 +800001b8: 03df1063 bne t5,t4,800001d8 + +800001bc : +800001bc: 00000093 li ra,0 +800001c0: 00000113 li sp,0 +800001c4: 0220ff33 remu t5,ra,sp +800001c8: 00000e93 li t4,0 +800001cc: 00a00193 li gp,10 +800001d0: 01df1463 bne t5,t4,800001d8 +800001d4: 00301c63 bne zero,gp,800001ec + +800001d8 : +800001d8: 0ff0000f fence +800001dc: 00018063 beqz gp,800001dc +800001e0: 00119193 slli gp,gp,0x1 +800001e4: 0011e193 ori gp,gp,1 +800001e8: 00000073 ecall + +800001ec : +800001ec: 0ff0000f fence +800001f0: 00100193 li gp,1 +800001f4: 00000073 ecall +800001f8: c0001073 unimp +800001fc: 0000 unimp +800001fe: 0000 unimp +80000200: 0000 unimp +80000202: 0000 unimp diff --git a/Tests/isa/rv32um-v-div b/Tests/isa/rv32um-v-div new file mode 100644 index 0000000..845c8f2 Binary files /dev/null and b/Tests/isa/rv32um-v-div differ diff --git a/Tests/isa/rv32um-v-div.dump b/Tests/isa/rv32um-v-div.dump new file mode 100644 index 0000000..00ce24b --- /dev/null +++ b/Tests/isa/rv32um-v-div.dump @@ -0,0 +1,981 @@ + +rv32um-v-div: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 81058593 addi a1,a1,-2032 # 80002cd8 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 82c58593 addi a1,a1,-2004 # 80002d64 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 7d858593 addi a1,a1,2008 # 80002d7c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 70c58593 addi a1,a1,1804 # 80002d1c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6fc58593 addi a1,a1,1788 # 80002e44 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 66458593 addi a1,a1,1636 # 80002e20 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 56060613 addi a2,a2,1376 # 80002e70 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 47060613 addi a2,a2,1136 # 80002dec +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3f060613 addi a2,a2,1008 # 80002db8 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 00100793 li a5,1 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 077a97b7 lui a5,0x77a9 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 32478793 addi a5,a5,804 # 77a9324 <_start-0x78856cdc> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 01400093 li ra,20 +80002be4: 00600113 li sp,6 +80002be8: 0220cf33 div t5,ra,sp +80002bec: 00300e93 li t4,3 +80002bf0: 00200193 li gp,2 +80002bf4: 0ddf1463 bne t5,t4,80002cbc + +80002bf8 : +80002bf8: fec00093 li ra,-20 +80002bfc: 00600113 li sp,6 +80002c00: 0220cf33 div t5,ra,sp +80002c04: ffd00e93 li t4,-3 +80002c08: 00300193 li gp,3 +80002c0c: 0bdf1863 bne t5,t4,80002cbc + +80002c10 : +80002c10: 01400093 li ra,20 +80002c14: ffa00113 li sp,-6 +80002c18: 0220cf33 div t5,ra,sp +80002c1c: ffd00e93 li t4,-3 +80002c20: 00400193 li gp,4 +80002c24: 09df1c63 bne t5,t4,80002cbc + +80002c28 : +80002c28: fec00093 li ra,-20 +80002c2c: ffa00113 li sp,-6 +80002c30: 0220cf33 div t5,ra,sp +80002c34: 00300e93 li t4,3 +80002c38: 00500193 li gp,5 +80002c3c: 09df1063 bne t5,t4,80002cbc + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00100113 li sp,1 +80002c48: 0220cf33 div t5,ra,sp +80002c4c: 80000eb7 lui t4,0x80000 +80002c50: 00600193 li gp,6 +80002c54: 07df1463 bne t5,t4,80002cbc + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: fff00113 li sp,-1 +80002c60: 0220cf33 div t5,ra,sp +80002c64: 80000eb7 lui t4,0x80000 +80002c68: 00700193 li gp,7 +80002c6c: 05df1863 bne t5,t4,80002cbc + +80002c70 : +80002c70: 800000b7 lui ra,0x80000 +80002c74: 00000113 li sp,0 +80002c78: 0220cf33 div t5,ra,sp +80002c7c: fff00e93 li t4,-1 +80002c80: 00800193 li gp,8 +80002c84: 03df1c63 bne t5,t4,80002cbc + +80002c88 : +80002c88: 00100093 li ra,1 +80002c8c: 00000113 li sp,0 +80002c90: 0220cf33 div t5,ra,sp +80002c94: fff00e93 li t4,-1 +80002c98: 00900193 li gp,9 +80002c9c: 03df1063 bne t5,t4,80002cbc + +80002ca0 : +80002ca0: 00000093 li ra,0 +80002ca4: 00000113 li sp,0 +80002ca8: 0220cf33 div t5,ra,sp +80002cac: fff00e93 li t4,-1 +80002cb0: 00a00193 li gp,10 +80002cb4: 01df1463 bne t5,t4,80002cbc +80002cb8: 00301a63 bne zero,gp,80002ccc + +80002cbc : +80002cbc: 00119513 slli a0,gp,0x1 +80002cc0: 00050063 beqz a0,80002cc0 +80002cc4: 00156513 ori a0,a0,1 +80002cc8: 00000073 ecall + +80002ccc : +80002ccc: 00100513 li a0,1 +80002cd0: 00000073 ecall +80002cd4: c0001073 unimp diff --git a/Tests/isa/rv32um-v-divu b/Tests/isa/rv32um-v-divu new file mode 100644 index 0000000..3fe08f5 Binary files /dev/null and b/Tests/isa/rv32um-v-divu differ diff --git a/Tests/isa/rv32um-v-divu.dump b/Tests/isa/rv32um-v-divu.dump new file mode 100644 index 0000000..de53373 --- /dev/null +++ b/Tests/isa/rv32um-v-divu.dump @@ -0,0 +1,982 @@ + +rv32um-v-divu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 81458593 addi a1,a1,-2028 # 80002cdc +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 83058593 addi a1,a1,-2000 # 80002d68 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 7dc58593 addi a1,a1,2012 # 80002d80 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 71058593 addi a1,a1,1808 # 80002d20 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 70058593 addi a1,a1,1792 # 80002e48 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 66858593 addi a1,a1,1640 # 80002e24 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 56460613 addi a2,a2,1380 # 80002e74 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 47460613 addi a2,a2,1140 # 80002df0 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3f460613 addi a2,a2,1012 # 80002dbc +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 02e00793 li a5,46 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0f7eb7b7 lui a5,0xf7eb +80002b9c: 00080637 lui a2,0x80 +80002ba0: 96e78793 addi a5,a5,-1682 # f7ea96e <_start-0x70815692> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 01400093 li ra,20 +80002be4: 00600113 li sp,6 +80002be8: 0220df33 divu t5,ra,sp +80002bec: 00300e93 li t4,3 +80002bf0: 00200193 li gp,2 +80002bf4: 0ddf1663 bne t5,t4,80002cc0 + +80002bf8 : +80002bf8: fec00093 li ra,-20 +80002bfc: 00600113 li sp,6 +80002c00: 0220df33 divu t5,ra,sp +80002c04: 2aaabeb7 lui t4,0x2aaab +80002c08: aa7e8e93 addi t4,t4,-1369 # 2aaaaaa7 <_start-0x55555559> +80002c0c: 00300193 li gp,3 +80002c10: 0bdf1863 bne t5,t4,80002cc0 + +80002c14 : +80002c14: 01400093 li ra,20 +80002c18: ffa00113 li sp,-6 +80002c1c: 0220df33 divu t5,ra,sp +80002c20: 00000e93 li t4,0 +80002c24: 00400193 li gp,4 +80002c28: 09df1c63 bne t5,t4,80002cc0 + +80002c2c : +80002c2c: fec00093 li ra,-20 +80002c30: ffa00113 li sp,-6 +80002c34: 0220df33 divu t5,ra,sp +80002c38: 00000e93 li t4,0 +80002c3c: 00500193 li gp,5 +80002c40: 09df1063 bne t5,t4,80002cc0 + +80002c44 : +80002c44: 800000b7 lui ra,0x80000 +80002c48: 00100113 li sp,1 +80002c4c: 0220df33 divu t5,ra,sp +80002c50: 80000eb7 lui t4,0x80000 +80002c54: 00600193 li gp,6 +80002c58: 07df1463 bne t5,t4,80002cc0 + +80002c5c : +80002c5c: 800000b7 lui ra,0x80000 +80002c60: fff00113 li sp,-1 +80002c64: 0220df33 divu t5,ra,sp +80002c68: 00000e93 li t4,0 +80002c6c: 00700193 li gp,7 +80002c70: 05df1863 bne t5,t4,80002cc0 + +80002c74 : +80002c74: 800000b7 lui ra,0x80000 +80002c78: 00000113 li sp,0 +80002c7c: 0220df33 divu t5,ra,sp +80002c80: fff00e93 li t4,-1 +80002c84: 00800193 li gp,8 +80002c88: 03df1c63 bne t5,t4,80002cc0 + +80002c8c : +80002c8c: 00100093 li ra,1 +80002c90: 00000113 li sp,0 +80002c94: 0220df33 divu t5,ra,sp +80002c98: fff00e93 li t4,-1 +80002c9c: 00900193 li gp,9 +80002ca0: 03df1063 bne t5,t4,80002cc0 + +80002ca4 : +80002ca4: 00000093 li ra,0 +80002ca8: 00000113 li sp,0 +80002cac: 0220df33 divu t5,ra,sp +80002cb0: fff00e93 li t4,-1 +80002cb4: 00a00193 li gp,10 +80002cb8: 01df1463 bne t5,t4,80002cc0 +80002cbc: 00301a63 bne zero,gp,80002cd0 + +80002cc0 : +80002cc0: 00119513 slli a0,gp,0x1 +80002cc4: 00050063 beqz a0,80002cc4 +80002cc8: 00156513 ori a0,a0,1 +80002ccc: 00000073 ecall + +80002cd0 : +80002cd0: 00100513 li a0,1 +80002cd4: 00000073 ecall +80002cd8: c0001073 unimp diff --git a/Tests/isa/rv32um-v-mul b/Tests/isa/rv32um-v-mul new file mode 100644 index 0000000..81f3824 Binary files /dev/null and b/Tests/isa/rv32um-v-mul differ diff --git a/Tests/isa/rv32um-v-mul.dump b/Tests/isa/rv32um-v-mul.dump new file mode 100644 index 0000000..d7c43a8 --- /dev/null +++ b/Tests/isa/rv32um-v-mul.dump @@ -0,0 +1,1286 @@ + +rv32um-v-mul: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1858593 addi a1,a1,-1000 # 80003150 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bc458593 addi a1,a1,-1084 # 80003168 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af858593 addi a1,a1,-1288 # 80003108 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae858593 addi a1,a1,-1304 # 80003230 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a5058593 addi a1,a1,-1456 # 8000320c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94c60613 addi a2,a2,-1716 # 8000325c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85c60613 addi a2,a2,-1956 # 800031d8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 01300793 li a5,19 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 000eb7b7 lui a5,0xeb +80002b9c: 00080637 lui a2,0x80 +80002ba0: 97e78793 addi a5,a5,-1666 # ea97e <_start-0x7ff15682> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 000080b7 lui ra,0x8 +80002be4: e0008093 addi ra,ra,-512 # 7e00 <_start-0x7fff8200> +80002be8: b6db7137 lui sp,0xb6db7 +80002bec: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db09bf> +80002bf0: 02208f33 mul t5,ra,sp +80002bf4: 00001eb7 lui t4,0x1 +80002bf8: 200e8e93 addi t4,t4,512 # 1200 <_start-0x7fffee00> +80002bfc: 02000193 li gp,32 +80002c00: 4bdf1463 bne t5,t4,800030a8 + +80002c04 : +80002c04: 000080b7 lui ra,0x8 +80002c08: fc008093 addi ra,ra,-64 # 7fc0 <_start-0x7fff8040> +80002c0c: b6db7137 lui sp,0xb6db7 +80002c10: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db09bf> +80002c14: 02208f33 mul t5,ra,sp +80002c18: 00001eb7 lui t4,0x1 +80002c1c: 240e8e93 addi t4,t4,576 # 1240 <_start-0x7fffedc0> +80002c20: 02100193 li gp,33 +80002c24: 49df1263 bne t5,t4,800030a8 + +80002c28 : +80002c28: 00000093 li ra,0 +80002c2c: 00000113 li sp,0 +80002c30: 02208f33 mul t5,ra,sp +80002c34: 00000e93 li t4,0 +80002c38: 00200193 li gp,2 +80002c3c: 47df1663 bne t5,t4,800030a8 + +80002c40 : +80002c40: 00100093 li ra,1 +80002c44: 00100113 li sp,1 +80002c48: 02208f33 mul t5,ra,sp +80002c4c: 00100e93 li t4,1 +80002c50: 00300193 li gp,3 +80002c54: 45df1a63 bne t5,t4,800030a8 + +80002c58 : +80002c58: 00300093 li ra,3 +80002c5c: 00700113 li sp,7 +80002c60: 02208f33 mul t5,ra,sp +80002c64: 01500e93 li t4,21 +80002c68: 00400193 li gp,4 +80002c6c: 43df1e63 bne t5,t4,800030a8 + +80002c70 : +80002c70: 00000093 li ra,0 +80002c74: ffff8137 lui sp,0xffff8 +80002c78: 02208f33 mul t5,ra,sp +80002c7c: 00000e93 li t4,0 +80002c80: 00500193 li gp,5 +80002c84: 43df1263 bne t5,t4,800030a8 + +80002c88 : +80002c88: 800000b7 lui ra,0x80000 +80002c8c: 00000113 li sp,0 +80002c90: 02208f33 mul t5,ra,sp +80002c94: 00000e93 li t4,0 +80002c98: 00600193 li gp,6 +80002c9c: 41df1663 bne t5,t4,800030a8 + +80002ca0 : +80002ca0: 800000b7 lui ra,0x80000 +80002ca4: ffff8137 lui sp,0xffff8 +80002ca8: 02208f33 mul t5,ra,sp +80002cac: 00000e93 li t4,0 +80002cb0: 00700193 li gp,7 +80002cb4: 3fdf1a63 bne t5,t4,800030a8 + +80002cb8 : +80002cb8: aaaab0b7 lui ra,0xaaaab +80002cbc: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002cc0: 00030137 lui sp,0x30 +80002cc4: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +80002cc8: 02208f33 mul t5,ra,sp +80002ccc: 00010eb7 lui t4,0x10 +80002cd0: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081> +80002cd4: 01e00193 li gp,30 +80002cd8: 3ddf1863 bne t5,t4,800030a8 + +80002cdc : +80002cdc: 000300b7 lui ra,0x30 +80002ce0: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +80002ce4: aaaab137 lui sp,0xaaaab +80002ce8: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002cec: 02208f33 mul t5,ra,sp +80002cf0: 00010eb7 lui t4,0x10 +80002cf4: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081> +80002cf8: 01f00193 li gp,31 +80002cfc: 3bdf1663 bne t5,t4,800030a8 + +80002d00 : +80002d00: ff0000b7 lui ra,0xff000 +80002d04: ff000137 lui sp,0xff000 +80002d08: 02208f33 mul t5,ra,sp +80002d0c: 00000e93 li t4,0 +80002d10: 02200193 li gp,34 +80002d14: 39df1a63 bne t5,t4,800030a8 + +80002d18 : +80002d18: fff00093 li ra,-1 +80002d1c: fff00113 li sp,-1 +80002d20: 02208f33 mul t5,ra,sp +80002d24: 00100e93 li t4,1 +80002d28: 02300193 li gp,35 +80002d2c: 37df1e63 bne t5,t4,800030a8 + +80002d30 : +80002d30: fff00093 li ra,-1 +80002d34: 00100113 li sp,1 +80002d38: 02208f33 mul t5,ra,sp +80002d3c: fff00e93 li t4,-1 +80002d40: 02400193 li gp,36 +80002d44: 37df1263 bne t5,t4,800030a8 + +80002d48 : +80002d48: 00100093 li ra,1 +80002d4c: fff00113 li sp,-1 +80002d50: 02208f33 mul t5,ra,sp +80002d54: fff00e93 li t4,-1 +80002d58: 02500193 li gp,37 +80002d5c: 35df1663 bne t5,t4,800030a8 + +80002d60 : +80002d60: 00d00093 li ra,13 +80002d64: 00b00113 li sp,11 +80002d68: 022080b3 mul ra,ra,sp +80002d6c: 08f00e93 li t4,143 +80002d70: 00800193 li gp,8 +80002d74: 33d09a63 bne ra,t4,800030a8 + +80002d78 : +80002d78: 00e00093 li ra,14 +80002d7c: 00b00113 li sp,11 +80002d80: 02208133 mul sp,ra,sp +80002d84: 09a00e93 li t4,154 +80002d88: 00900193 li gp,9 +80002d8c: 31d11e63 bne sp,t4,800030a8 + +80002d90 : +80002d90: 00d00093 li ra,13 +80002d94: 021080b3 mul ra,ra,ra +80002d98: 0a900e93 li t4,169 +80002d9c: 00a00193 li gp,10 +80002da0: 31d09463 bne ra,t4,800030a8 + +80002da4 : +80002da4: 00000213 li tp,0 +80002da8: 00d00093 li ra,13 +80002dac: 00b00113 li sp,11 +80002db0: 02208f33 mul t5,ra,sp +80002db4: 000f0313 mv t1,t5 +80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dbc: 00200293 li t0,2 +80002dc0: fe5214e3 bne tp,t0,80002da8 +80002dc4: 08f00e93 li t4,143 +80002dc8: 00b00193 li gp,11 +80002dcc: 2dd31e63 bne t1,t4,800030a8 + +80002dd0 : +80002dd0: 00000213 li tp,0 +80002dd4: 00e00093 li ra,14 +80002dd8: 00b00113 li sp,11 +80002ddc: 02208f33 mul t5,ra,sp +80002de0: 00000013 nop +80002de4: 000f0313 mv t1,t5 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fe5212e3 bne tp,t0,80002dd4 +80002df4: 09a00e93 li t4,154 +80002df8: 00c00193 li gp,12 +80002dfc: 2bd31663 bne t1,t4,800030a8 + +80002e00 : +80002e00: 00000213 li tp,0 +80002e04: 00f00093 li ra,15 +80002e08: 00b00113 li sp,11 +80002e0c: 02208f33 mul t5,ra,sp +80002e10: 00000013 nop +80002e14: 00000013 nop +80002e18: 000f0313 mv t1,t5 +80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e20: 00200293 li t0,2 +80002e24: fe5210e3 bne tp,t0,80002e04 +80002e28: 0a500e93 li t4,165 +80002e2c: 00d00193 li gp,13 +80002e30: 27d31c63 bne t1,t4,800030a8 + +80002e34 : +80002e34: 00000213 li tp,0 +80002e38: 00d00093 li ra,13 +80002e3c: 00b00113 li sp,11 +80002e40: 02208f33 mul t5,ra,sp +80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e48: 00200293 li t0,2 +80002e4c: fe5216e3 bne tp,t0,80002e38 +80002e50: 08f00e93 li t4,143 +80002e54: 00e00193 li gp,14 +80002e58: 25df1863 bne t5,t4,800030a8 + +80002e5c : +80002e5c: 00000213 li tp,0 +80002e60: 00e00093 li ra,14 +80002e64: 00b00113 li sp,11 +80002e68: 00000013 nop +80002e6c: 02208f33 mul t5,ra,sp +80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e74: 00200293 li t0,2 +80002e78: fe5214e3 bne tp,t0,80002e60 +80002e7c: 09a00e93 li t4,154 +80002e80: 00f00193 li gp,15 +80002e84: 23df1263 bne t5,t4,800030a8 + +80002e88 : +80002e88: 00000213 li tp,0 +80002e8c: 00f00093 li ra,15 +80002e90: 00b00113 li sp,11 +80002e94: 00000013 nop +80002e98: 00000013 nop +80002e9c: 02208f33 mul t5,ra,sp +80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ea4: 00200293 li t0,2 +80002ea8: fe5212e3 bne tp,t0,80002e8c +80002eac: 0a500e93 li t4,165 +80002eb0: 01000193 li gp,16 +80002eb4: 1fdf1a63 bne t5,t4,800030a8 + +80002eb8 : +80002eb8: 00000213 li tp,0 +80002ebc: 00d00093 li ra,13 +80002ec0: 00000013 nop +80002ec4: 00b00113 li sp,11 +80002ec8: 02208f33 mul t5,ra,sp +80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ed0: 00200293 li t0,2 +80002ed4: fe5214e3 bne tp,t0,80002ebc +80002ed8: 08f00e93 li t4,143 +80002edc: 01100193 li gp,17 +80002ee0: 1ddf1463 bne t5,t4,800030a8 + +80002ee4 : +80002ee4: 00000213 li tp,0 +80002ee8: 00e00093 li ra,14 +80002eec: 00000013 nop +80002ef0: 00b00113 li sp,11 +80002ef4: 00000013 nop +80002ef8: 02208f33 mul t5,ra,sp +80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f00: 00200293 li t0,2 +80002f04: fe5212e3 bne tp,t0,80002ee8 +80002f08: 09a00e93 li t4,154 +80002f0c: 01200193 li gp,18 +80002f10: 19df1c63 bne t5,t4,800030a8 + +80002f14 : +80002f14: 00000213 li tp,0 +80002f18: 00f00093 li ra,15 +80002f1c: 00000013 nop +80002f20: 00000013 nop +80002f24: 00b00113 li sp,11 +80002f28: 02208f33 mul t5,ra,sp +80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f30: 00200293 li t0,2 +80002f34: fe5212e3 bne tp,t0,80002f18 +80002f38: 0a500e93 li t4,165 +80002f3c: 01300193 li gp,19 +80002f40: 17df1463 bne t5,t4,800030a8 + +80002f44 : +80002f44: 00000213 li tp,0 +80002f48: 00b00113 li sp,11 +80002f4c: 00d00093 li ra,13 +80002f50: 02208f33 mul t5,ra,sp +80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f58: 00200293 li t0,2 +80002f5c: fe5216e3 bne tp,t0,80002f48 +80002f60: 08f00e93 li t4,143 +80002f64: 01400193 li gp,20 +80002f68: 15df1063 bne t5,t4,800030a8 + +80002f6c : +80002f6c: 00000213 li tp,0 +80002f70: 00b00113 li sp,11 +80002f74: 00e00093 li ra,14 +80002f78: 00000013 nop +80002f7c: 02208f33 mul t5,ra,sp +80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f84: 00200293 li t0,2 +80002f88: fe5214e3 bne tp,t0,80002f70 +80002f8c: 09a00e93 li t4,154 +80002f90: 01500193 li gp,21 +80002f94: 11df1a63 bne t5,t4,800030a8 + +80002f98 : +80002f98: 00000213 li tp,0 +80002f9c: 00b00113 li sp,11 +80002fa0: 00f00093 li ra,15 +80002fa4: 00000013 nop +80002fa8: 00000013 nop +80002fac: 02208f33 mul t5,ra,sp +80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fb4: 00200293 li t0,2 +80002fb8: fe5212e3 bne tp,t0,80002f9c +80002fbc: 0a500e93 li t4,165 +80002fc0: 01600193 li gp,22 +80002fc4: 0fdf1263 bne t5,t4,800030a8 + +80002fc8 : +80002fc8: 00000213 li tp,0 +80002fcc: 00b00113 li sp,11 +80002fd0: 00000013 nop +80002fd4: 00d00093 li ra,13 +80002fd8: 02208f33 mul t5,ra,sp +80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fe0: 00200293 li t0,2 +80002fe4: fe5214e3 bne tp,t0,80002fcc +80002fe8: 08f00e93 li t4,143 +80002fec: 01700193 li gp,23 +80002ff0: 0bdf1c63 bne t5,t4,800030a8 + +80002ff4 : +80002ff4: 00000213 li tp,0 +80002ff8: 00b00113 li sp,11 +80002ffc: 00000013 nop +80003000: 00e00093 li ra,14 +80003004: 00000013 nop +80003008: 02208f33 mul t5,ra,sp +8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003010: 00200293 li t0,2 +80003014: fe5212e3 bne tp,t0,80002ff8 +80003018: 09a00e93 li t4,154 +8000301c: 01800193 li gp,24 +80003020: 09df1463 bne t5,t4,800030a8 + +80003024 : +80003024: 00000213 li tp,0 +80003028: 00b00113 li sp,11 +8000302c: 00000013 nop +80003030: 00000013 nop +80003034: 00f00093 li ra,15 +80003038: 02208f33 mul t5,ra,sp +8000303c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003040: 00200293 li t0,2 +80003044: fe5212e3 bne tp,t0,80003028 +80003048: 0a500e93 li t4,165 +8000304c: 01900193 li gp,25 +80003050: 05df1c63 bne t5,t4,800030a8 + +80003054 : +80003054: 01f00093 li ra,31 +80003058: 02100133 mul sp,zero,ra +8000305c: 00000e93 li t4,0 +80003060: 01a00193 li gp,26 +80003064: 05d11263 bne sp,t4,800030a8 + +80003068 : +80003068: 02000093 li ra,32 +8000306c: 02008133 mul sp,ra,zero +80003070: 00000e93 li t4,0 +80003074: 01b00193 li gp,27 +80003078: 03d11863 bne sp,t4,800030a8 + +8000307c : +8000307c: 020000b3 mul ra,zero,zero +80003080: 00000e93 li t4,0 +80003084: 01c00193 li gp,28 +80003088: 03d09063 bne ra,t4,800030a8 + +8000308c : +8000308c: 02100093 li ra,33 +80003090: 02200113 li sp,34 +80003094: 02208033 mul zero,ra,sp +80003098: 00000e93 li t4,0 +8000309c: 01d00193 li gp,29 +800030a0: 01d01463 bne zero,t4,800030a8 +800030a4: 00301a63 bne zero,gp,800030b8 + +800030a8 : +800030a8: 00119513 slli a0,gp,0x1 +800030ac: 00050063 beqz a0,800030ac +800030b0: 00156513 ori a0,a0,1 +800030b4: 00000073 ecall + +800030b8 : +800030b8: 00100513 li a0,1 +800030bc: 00000073 ecall +800030c0: c0001073 unimp diff --git a/Tests/isa/rv32um-v-mulh b/Tests/isa/rv32um-v-mulh new file mode 100644 index 0000000..6297bd6 Binary files /dev/null and b/Tests/isa/rv32um-v-mulh differ diff --git a/Tests/isa/rv32um-v-mulh.dump b/Tests/isa/rv32um-v-mulh.dump new file mode 100644 index 0000000..3be2412 --- /dev/null +++ b/Tests/isa/rv32um-v-mulh.dump @@ -0,0 +1,1282 @@ + +rv32um-v-mulh: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1858593 addi a1,a1,-1000 # 80003150 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bc458593 addi a1,a1,-1084 # 80003168 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af858593 addi a1,a1,-1288 # 80003108 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae858593 addi a1,a1,-1304 # 80003230 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a5058593 addi a1,a1,-1456 # 8000320c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94c60613 addi a2,a2,-1716 # 8000325c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85c60613 addi a2,a2,-1956 # 800031d8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03b00793 li a5,59 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0e9837b7 lui a5,0xe983 +80002b9c: 00080637 lui a2,0x80 +80002ba0: 99d78793 addi a5,a5,-1635 # e98299d <_start-0x7167d663> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00000113 li sp,0 +80002be8: 02209f33 mulh t5,ra,sp +80002bec: 00000e93 li t4,0 +80002bf0: 00200193 li gp,2 +80002bf4: 4bdf1a63 bne t5,t4,800030a8 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 02209f33 mulh t5,ra,sp +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 49df1e63 bne t5,t4,800030a8 + +80002c10 : +80002c10: 00300093 li ra,3 +80002c14: 00700113 li sp,7 +80002c18: 02209f33 mulh t5,ra,sp +80002c1c: 00000e93 li t4,0 +80002c20: 00400193 li gp,4 +80002c24: 49df1263 bne t5,t4,800030a8 + +80002c28 : +80002c28: 00000093 li ra,0 +80002c2c: ffff8137 lui sp,0xffff8 +80002c30: 02209f33 mulh t5,ra,sp +80002c34: 00000e93 li t4,0 +80002c38: 00500193 li gp,5 +80002c3c: 47df1663 bne t5,t4,800030a8 + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00000113 li sp,0 +80002c48: 02209f33 mulh t5,ra,sp +80002c4c: 00000e93 li t4,0 +80002c50: 00600193 li gp,6 +80002c54: 45df1a63 bne t5,t4,800030a8 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: 00000113 li sp,0 +80002c60: 02209f33 mulh t5,ra,sp +80002c64: 00000e93 li t4,0 +80002c68: 00700193 li gp,7 +80002c6c: 43df1e63 bne t5,t4,800030a8 + +80002c70 : +80002c70: aaaab0b7 lui ra,0xaaaab +80002c74: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002c78: 00030137 lui sp,0x30 +80002c7c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +80002c80: 02209f33 mulh t5,ra,sp +80002c84: ffff0eb7 lui t4,0xffff0 +80002c88: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffe9c89> +80002c8c: 01e00193 li gp,30 +80002c90: 41df1c63 bne t5,t4,800030a8 + +80002c94 : +80002c94: 000300b7 lui ra,0x30 +80002c98: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +80002c9c: aaaab137 lui sp,0xaaaab +80002ca0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002ca4: 02209f33 mulh t5,ra,sp +80002ca8: ffff0eb7 lui t4,0xffff0 +80002cac: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffe9c89> +80002cb0: 01f00193 li gp,31 +80002cb4: 3fdf1a63 bne t5,t4,800030a8 + +80002cb8 : +80002cb8: ff0000b7 lui ra,0xff000 +80002cbc: ff000137 lui sp,0xff000 +80002cc0: 02209f33 mulh t5,ra,sp +80002cc4: 00010eb7 lui t4,0x10 +80002cc8: 02000193 li gp,32 +80002ccc: 3ddf1e63 bne t5,t4,800030a8 + +80002cd0 : +80002cd0: fff00093 li ra,-1 +80002cd4: fff00113 li sp,-1 +80002cd8: 02209f33 mulh t5,ra,sp +80002cdc: 00000e93 li t4,0 +80002ce0: 02100193 li gp,33 +80002ce4: 3ddf1263 bne t5,t4,800030a8 + +80002ce8 : +80002ce8: fff00093 li ra,-1 +80002cec: 00100113 li sp,1 +80002cf0: 02209f33 mulh t5,ra,sp +80002cf4: fff00e93 li t4,-1 +80002cf8: 02200193 li gp,34 +80002cfc: 3bdf1663 bne t5,t4,800030a8 + +80002d00 : +80002d00: 00100093 li ra,1 +80002d04: fff00113 li sp,-1 +80002d08: 02209f33 mulh t5,ra,sp +80002d0c: fff00e93 li t4,-1 +80002d10: 02300193 li gp,35 +80002d14: 39df1a63 bne t5,t4,800030a8 + +80002d18 : +80002d18: 00d000b7 lui ra,0xd00 +80002d1c: 00b00137 lui sp,0xb00 +80002d20: 022090b3 mulh ra,ra,sp +80002d24: 00009eb7 lui t4,0x9 +80002d28: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002d2c: 00800193 li gp,8 +80002d30: 37d09c63 bne ra,t4,800030a8 + +80002d34 : +80002d34: 00e000b7 lui ra,0xe00 +80002d38: 00b00137 lui sp,0xb00 +80002d3c: 02209133 mulh sp,ra,sp +80002d40: 0000aeb7 lui t4,0xa +80002d44: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002d48: 00900193 li gp,9 +80002d4c: 35d11e63 bne sp,t4,800030a8 + +80002d50 : +80002d50: 00d000b7 lui ra,0xd00 +80002d54: 021090b3 mulh ra,ra,ra +80002d58: 0000beb7 lui t4,0xb +80002d5c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> +80002d60: 00a00193 li gp,10 +80002d64: 35d09263 bne ra,t4,800030a8 + +80002d68 : +80002d68: 00000213 li tp,0 +80002d6c: 00d000b7 lui ra,0xd00 +80002d70: 00b00137 lui sp,0xb00 +80002d74: 02209f33 mulh t5,ra,sp +80002d78: 000f0313 mv t1,t5 +80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d80: 00200293 li t0,2 +80002d84: fe5214e3 bne tp,t0,80002d6c +80002d88: 00009eb7 lui t4,0x9 +80002d8c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002d90: 00b00193 li gp,11 +80002d94: 31d31a63 bne t1,t4,800030a8 + +80002d98 : +80002d98: 00000213 li tp,0 +80002d9c: 00e000b7 lui ra,0xe00 +80002da0: 00b00137 lui sp,0xb00 +80002da4: 02209f33 mulh t5,ra,sp +80002da8: 00000013 nop +80002dac: 000f0313 mv t1,t5 +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5212e3 bne tp,t0,80002d9c +80002dbc: 0000aeb7 lui t4,0xa +80002dc0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002dc4: 00c00193 li gp,12 +80002dc8: 2fd31063 bne t1,t4,800030a8 + +80002dcc : +80002dcc: 00000213 li tp,0 +80002dd0: 00f000b7 lui ra,0xf00 +80002dd4: 00b00137 lui sp,0xb00 +80002dd8: 02209f33 mulh t5,ra,sp +80002ddc: 00000013 nop +80002de0: 00000013 nop +80002de4: 000f0313 mv t1,t5 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fe5210e3 bne tp,t0,80002dd0 +80002df4: 0000aeb7 lui t4,0xa +80002df8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002dfc: 00d00193 li gp,13 +80002e00: 2bd31463 bne t1,t4,800030a8 + +80002e04 : +80002e04: 00000213 li tp,0 +80002e08: 00d000b7 lui ra,0xd00 +80002e0c: 00b00137 lui sp,0xb00 +80002e10: 02209f33 mulh t5,ra,sp +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fe5216e3 bne tp,t0,80002e08 +80002e20: 00009eb7 lui t4,0x9 +80002e24: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002e28: 00e00193 li gp,14 +80002e2c: 27df1e63 bne t5,t4,800030a8 + +80002e30 : +80002e30: 00000213 li tp,0 +80002e34: 00e000b7 lui ra,0xe00 +80002e38: 00b00137 lui sp,0xb00 +80002e3c: 00000013 nop +80002e40: 02209f33 mulh t5,ra,sp +80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e48: 00200293 li t0,2 +80002e4c: fe5214e3 bne tp,t0,80002e34 +80002e50: 0000aeb7 lui t4,0xa +80002e54: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002e58: 00f00193 li gp,15 +80002e5c: 25df1663 bne t5,t4,800030a8 + +80002e60 : +80002e60: 00000213 li tp,0 +80002e64: 00f000b7 lui ra,0xf00 +80002e68: 00b00137 lui sp,0xb00 +80002e6c: 00000013 nop +80002e70: 00000013 nop +80002e74: 02209f33 mulh t5,ra,sp +80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e7c: 00200293 li t0,2 +80002e80: fe5212e3 bne tp,t0,80002e64 +80002e84: 0000aeb7 lui t4,0xa +80002e88: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002e8c: 01000193 li gp,16 +80002e90: 21df1c63 bne t5,t4,800030a8 + +80002e94 : +80002e94: 00000213 li tp,0 +80002e98: 00d000b7 lui ra,0xd00 +80002e9c: 00000013 nop +80002ea0: 00b00137 lui sp,0xb00 +80002ea4: 02209f33 mulh t5,ra,sp +80002ea8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002eac: 00200293 li t0,2 +80002eb0: fe5214e3 bne tp,t0,80002e98 +80002eb4: 00009eb7 lui t4,0x9 +80002eb8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002ebc: 01100193 li gp,17 +80002ec0: 1fdf1463 bne t5,t4,800030a8 + +80002ec4 : +80002ec4: 00000213 li tp,0 +80002ec8: 00e000b7 lui ra,0xe00 +80002ecc: 00000013 nop +80002ed0: 00b00137 lui sp,0xb00 +80002ed4: 00000013 nop +80002ed8: 02209f33 mulh t5,ra,sp +80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ee0: 00200293 li t0,2 +80002ee4: fe5212e3 bne tp,t0,80002ec8 +80002ee8: 0000aeb7 lui t4,0xa +80002eec: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002ef0: 01200193 li gp,18 +80002ef4: 1bdf1a63 bne t5,t4,800030a8 + +80002ef8 : +80002ef8: 00000213 li tp,0 +80002efc: 00f000b7 lui ra,0xf00 +80002f00: 00000013 nop +80002f04: 00000013 nop +80002f08: 00b00137 lui sp,0xb00 +80002f0c: 02209f33 mulh t5,ra,sp +80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f14: 00200293 li t0,2 +80002f18: fe5212e3 bne tp,t0,80002efc +80002f1c: 0000aeb7 lui t4,0xa +80002f20: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002f24: 01300193 li gp,19 +80002f28: 19df1063 bne t5,t4,800030a8 + +80002f2c : +80002f2c: 00000213 li tp,0 +80002f30: 00b00137 lui sp,0xb00 +80002f34: 00d000b7 lui ra,0xd00 +80002f38: 02209f33 mulh t5,ra,sp +80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f40: 00200293 li t0,2 +80002f44: fe5216e3 bne tp,t0,80002f30 +80002f48: 00009eb7 lui t4,0x9 +80002f4c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002f50: 01400193 li gp,20 +80002f54: 15df1a63 bne t5,t4,800030a8 + +80002f58 : +80002f58: 00000213 li tp,0 +80002f5c: 00b00137 lui sp,0xb00 +80002f60: 00e000b7 lui ra,0xe00 +80002f64: 00000013 nop +80002f68: 02209f33 mulh t5,ra,sp +80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f70: 00200293 li t0,2 +80002f74: fe5214e3 bne tp,t0,80002f5c +80002f78: 0000aeb7 lui t4,0xa +80002f7c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002f80: 01500193 li gp,21 +80002f84: 13df1263 bne t5,t4,800030a8 + +80002f88 : +80002f88: 00000213 li tp,0 +80002f8c: 00b00137 lui sp,0xb00 +80002f90: 00f000b7 lui ra,0xf00 +80002f94: 00000013 nop +80002f98: 00000013 nop +80002f9c: 02209f33 mulh t5,ra,sp +80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fa4: 00200293 li t0,2 +80002fa8: fe5212e3 bne tp,t0,80002f8c +80002fac: 0000aeb7 lui t4,0xa +80002fb0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002fb4: 01600193 li gp,22 +80002fb8: 0fdf1863 bne t5,t4,800030a8 + +80002fbc : +80002fbc: 00000213 li tp,0 +80002fc0: 00b00137 lui sp,0xb00 +80002fc4: 00000013 nop +80002fc8: 00d000b7 lui ra,0xd00 +80002fcc: 02209f33 mulh t5,ra,sp +80002fd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fd4: 00200293 li t0,2 +80002fd8: fe5214e3 bne tp,t0,80002fc0 +80002fdc: 00009eb7 lui t4,0x9 +80002fe0: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002fe4: 01700193 li gp,23 +80002fe8: 0ddf1063 bne t5,t4,800030a8 + +80002fec : +80002fec: 00000213 li tp,0 +80002ff0: 00b00137 lui sp,0xb00 +80002ff4: 00000013 nop +80002ff8: 00e000b7 lui ra,0xe00 +80002ffc: 00000013 nop +80003000: 02209f33 mulh t5,ra,sp +80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003008: 00200293 li t0,2 +8000300c: fe5212e3 bne tp,t0,80002ff0 +80003010: 0000aeb7 lui t4,0xa +80003014: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80003018: 01800193 li gp,24 +8000301c: 09df1663 bne t5,t4,800030a8 + +80003020 : +80003020: 00000213 li tp,0 +80003024: 00b00137 lui sp,0xb00 +80003028: 00000013 nop +8000302c: 00000013 nop +80003030: 00f000b7 lui ra,0xf00 +80003034: 02209f33 mulh t5,ra,sp +80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000303c: 00200293 li t0,2 +80003040: fe5212e3 bne tp,t0,80003024 +80003044: 0000aeb7 lui t4,0xa +80003048: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +8000304c: 01900193 li gp,25 +80003050: 05df1c63 bne t5,t4,800030a8 + +80003054 : +80003054: 7c0000b7 lui ra,0x7c000 +80003058: 02101133 mulh sp,zero,ra +8000305c: 00000e93 li t4,0 +80003060: 01a00193 li gp,26 +80003064: 05d11263 bne sp,t4,800030a8 + +80003068 : +80003068: 800000b7 lui ra,0x80000 +8000306c: 02009133 mulh sp,ra,zero +80003070: 00000e93 li t4,0 +80003074: 01b00193 li gp,27 +80003078: 03d11863 bne sp,t4,800030a8 + +8000307c : +8000307c: 020010b3 mulh ra,zero,zero +80003080: 00000e93 li t4,0 +80003084: 01c00193 li gp,28 +80003088: 03d09063 bne ra,t4,800030a8 + +8000308c : +8000308c: 021000b7 lui ra,0x2100 +80003090: 02200137 lui sp,0x2200 +80003094: 02209033 mulh zero,ra,sp +80003098: 00000e93 li t4,0 +8000309c: 01d00193 li gp,29 +800030a0: 01d01463 bne zero,t4,800030a8 +800030a4: 00301a63 bne zero,gp,800030b8 + +800030a8 : +800030a8: 00119513 slli a0,gp,0x1 +800030ac: 00050063 beqz a0,800030ac +800030b0: 00156513 ori a0,a0,1 +800030b4: 00000073 ecall + +800030b8 : +800030b8: 00100513 li a0,1 +800030bc: 00000073 ecall +800030c0: c0001073 unimp diff --git a/Tests/isa/rv32um-v-mulhsu b/Tests/isa/rv32um-v-mulhsu new file mode 100644 index 0000000..2e3b135 Binary files /dev/null and b/Tests/isa/rv32um-v-mulhsu differ diff --git a/Tests/isa/rv32um-v-mulhsu.dump b/Tests/isa/rv32um-v-mulhsu.dump new file mode 100644 index 0000000..72056c3 --- /dev/null +++ b/Tests/isa/rv32um-v-mulhsu.dump @@ -0,0 +1,1282 @@ + +rv32um-v-mulhsu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1858593 addi a1,a1,-1000 # 80003150 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bc458593 addi a1,a1,-1084 # 80003168 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af858593 addi a1,a1,-1288 # 80003108 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae858593 addi a1,a1,-1304 # 80003230 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a5058593 addi a1,a1,-1456 # 8000320c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94c60613 addi a2,a2,-1716 # 8000325c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85c60613 addi a2,a2,-1956 # 800031d8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03a00793 li a5,58 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 00fb27b7 lui a5,0xfb2 +80002b9c: 00080637 lui a2,0x80 +80002ba0: f0c78793 addi a5,a5,-244 # fb1f0c <_start-0x7f04e0f4> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00000113 li sp,0 +80002be8: 0220af33 mulhsu t5,ra,sp +80002bec: 00000e93 li t4,0 +80002bf0: 00200193 li gp,2 +80002bf4: 4bdf1a63 bne t5,t4,800030a8 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 0220af33 mulhsu t5,ra,sp +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 49df1e63 bne t5,t4,800030a8 + +80002c10 : +80002c10: 00300093 li ra,3 +80002c14: 00700113 li sp,7 +80002c18: 0220af33 mulhsu t5,ra,sp +80002c1c: 00000e93 li t4,0 +80002c20: 00400193 li gp,4 +80002c24: 49df1263 bne t5,t4,800030a8 + +80002c28 : +80002c28: 00000093 li ra,0 +80002c2c: ffff8137 lui sp,0xffff8 +80002c30: 0220af33 mulhsu t5,ra,sp +80002c34: 00000e93 li t4,0 +80002c38: 00500193 li gp,5 +80002c3c: 47df1663 bne t5,t4,800030a8 + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00000113 li sp,0 +80002c48: 0220af33 mulhsu t5,ra,sp +80002c4c: 00000e93 li t4,0 +80002c50: 00600193 li gp,6 +80002c54: 45df1a63 bne t5,t4,800030a8 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: ffff8137 lui sp,0xffff8 +80002c60: 0220af33 mulhsu t5,ra,sp +80002c64: 80004eb7 lui t4,0x80004 +80002c68: 00700193 li gp,7 +80002c6c: 43df1e63 bne t5,t4,800030a8 + +80002c70 : +80002c70: aaaab0b7 lui ra,0xaaaab +80002c74: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002c78: 00030137 lui sp,0x30 +80002c7c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +80002c80: 0220af33 mulhsu t5,ra,sp +80002c84: ffff0eb7 lui t4,0xffff0 +80002c88: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffe9c89> +80002c8c: 01e00193 li gp,30 +80002c90: 41df1c63 bne t5,t4,800030a8 + +80002c94 : +80002c94: 000300b7 lui ra,0x30 +80002c98: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +80002c9c: aaaab137 lui sp,0xaaaab +80002ca0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002ca4: 0220af33 mulhsu t5,ra,sp +80002ca8: 00020eb7 lui t4,0x20 +80002cac: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> +80002cb0: 01f00193 li gp,31 +80002cb4: 3fdf1a63 bne t5,t4,800030a8 + +80002cb8 : +80002cb8: ff0000b7 lui ra,0xff000 +80002cbc: ff000137 lui sp,0xff000 +80002cc0: 0220af33 mulhsu t5,ra,sp +80002cc4: ff010eb7 lui t4,0xff010 +80002cc8: 02000193 li gp,32 +80002ccc: 3ddf1e63 bne t5,t4,800030a8 + +80002cd0 : +80002cd0: fff00093 li ra,-1 +80002cd4: fff00113 li sp,-1 +80002cd8: 0220af33 mulhsu t5,ra,sp +80002cdc: fff00e93 li t4,-1 +80002ce0: 02100193 li gp,33 +80002ce4: 3ddf1263 bne t5,t4,800030a8 + +80002ce8 : +80002ce8: fff00093 li ra,-1 +80002cec: 00100113 li sp,1 +80002cf0: 0220af33 mulhsu t5,ra,sp +80002cf4: fff00e93 li t4,-1 +80002cf8: 02200193 li gp,34 +80002cfc: 3bdf1663 bne t5,t4,800030a8 + +80002d00 : +80002d00: 00100093 li ra,1 +80002d04: fff00113 li sp,-1 +80002d08: 0220af33 mulhsu t5,ra,sp +80002d0c: 00000e93 li t4,0 +80002d10: 02300193 li gp,35 +80002d14: 39df1a63 bne t5,t4,800030a8 + +80002d18 : +80002d18: 00d000b7 lui ra,0xd00 +80002d1c: 00b00137 lui sp,0xb00 +80002d20: 0220a0b3 mulhsu ra,ra,sp +80002d24: 00009eb7 lui t4,0x9 +80002d28: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002d2c: 00800193 li gp,8 +80002d30: 37d09c63 bne ra,t4,800030a8 + +80002d34 : +80002d34: 00e000b7 lui ra,0xe00 +80002d38: 00b00137 lui sp,0xb00 +80002d3c: 0220a133 mulhsu sp,ra,sp +80002d40: 0000aeb7 lui t4,0xa +80002d44: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002d48: 00900193 li gp,9 +80002d4c: 35d11e63 bne sp,t4,800030a8 + +80002d50 : +80002d50: 00d000b7 lui ra,0xd00 +80002d54: 0210a0b3 mulhsu ra,ra,ra +80002d58: 0000beb7 lui t4,0xb +80002d5c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> +80002d60: 00a00193 li gp,10 +80002d64: 35d09263 bne ra,t4,800030a8 + +80002d68 : +80002d68: 00000213 li tp,0 +80002d6c: 00d000b7 lui ra,0xd00 +80002d70: 00b00137 lui sp,0xb00 +80002d74: 0220af33 mulhsu t5,ra,sp +80002d78: 000f0313 mv t1,t5 +80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d80: 00200293 li t0,2 +80002d84: fe5214e3 bne tp,t0,80002d6c +80002d88: 00009eb7 lui t4,0x9 +80002d8c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002d90: 00b00193 li gp,11 +80002d94: 31d31a63 bne t1,t4,800030a8 + +80002d98 : +80002d98: 00000213 li tp,0 +80002d9c: 00e000b7 lui ra,0xe00 +80002da0: 00b00137 lui sp,0xb00 +80002da4: 0220af33 mulhsu t5,ra,sp +80002da8: 00000013 nop +80002dac: 000f0313 mv t1,t5 +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5212e3 bne tp,t0,80002d9c +80002dbc: 0000aeb7 lui t4,0xa +80002dc0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002dc4: 00c00193 li gp,12 +80002dc8: 2fd31063 bne t1,t4,800030a8 + +80002dcc : +80002dcc: 00000213 li tp,0 +80002dd0: 00f000b7 lui ra,0xf00 +80002dd4: 00b00137 lui sp,0xb00 +80002dd8: 0220af33 mulhsu t5,ra,sp +80002ddc: 00000013 nop +80002de0: 00000013 nop +80002de4: 000f0313 mv t1,t5 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fe5210e3 bne tp,t0,80002dd0 +80002df4: 0000aeb7 lui t4,0xa +80002df8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002dfc: 00d00193 li gp,13 +80002e00: 2bd31463 bne t1,t4,800030a8 + +80002e04 : +80002e04: 00000213 li tp,0 +80002e08: 00d000b7 lui ra,0xd00 +80002e0c: 00b00137 lui sp,0xb00 +80002e10: 0220af33 mulhsu t5,ra,sp +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fe5216e3 bne tp,t0,80002e08 +80002e20: 00009eb7 lui t4,0x9 +80002e24: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002e28: 00e00193 li gp,14 +80002e2c: 27df1e63 bne t5,t4,800030a8 + +80002e30 : +80002e30: 00000213 li tp,0 +80002e34: 00e000b7 lui ra,0xe00 +80002e38: 00b00137 lui sp,0xb00 +80002e3c: 00000013 nop +80002e40: 0220af33 mulhsu t5,ra,sp +80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e48: 00200293 li t0,2 +80002e4c: fe5214e3 bne tp,t0,80002e34 +80002e50: 0000aeb7 lui t4,0xa +80002e54: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002e58: 00f00193 li gp,15 +80002e5c: 25df1663 bne t5,t4,800030a8 + +80002e60 : +80002e60: 00000213 li tp,0 +80002e64: 00f000b7 lui ra,0xf00 +80002e68: 00b00137 lui sp,0xb00 +80002e6c: 00000013 nop +80002e70: 00000013 nop +80002e74: 0220af33 mulhsu t5,ra,sp +80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e7c: 00200293 li t0,2 +80002e80: fe5212e3 bne tp,t0,80002e64 +80002e84: 0000aeb7 lui t4,0xa +80002e88: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002e8c: 01000193 li gp,16 +80002e90: 21df1c63 bne t5,t4,800030a8 + +80002e94 : +80002e94: 00000213 li tp,0 +80002e98: 00d000b7 lui ra,0xd00 +80002e9c: 00000013 nop +80002ea0: 00b00137 lui sp,0xb00 +80002ea4: 0220af33 mulhsu t5,ra,sp +80002ea8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002eac: 00200293 li t0,2 +80002eb0: fe5214e3 bne tp,t0,80002e98 +80002eb4: 00009eb7 lui t4,0x9 +80002eb8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002ebc: 01100193 li gp,17 +80002ec0: 1fdf1463 bne t5,t4,800030a8 + +80002ec4 : +80002ec4: 00000213 li tp,0 +80002ec8: 00e000b7 lui ra,0xe00 +80002ecc: 00000013 nop +80002ed0: 00b00137 lui sp,0xb00 +80002ed4: 00000013 nop +80002ed8: 0220af33 mulhsu t5,ra,sp +80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ee0: 00200293 li t0,2 +80002ee4: fe5212e3 bne tp,t0,80002ec8 +80002ee8: 0000aeb7 lui t4,0xa +80002eec: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002ef0: 01200193 li gp,18 +80002ef4: 1bdf1a63 bne t5,t4,800030a8 + +80002ef8 : +80002ef8: 00000213 li tp,0 +80002efc: 00f000b7 lui ra,0xf00 +80002f00: 00000013 nop +80002f04: 00000013 nop +80002f08: 00b00137 lui sp,0xb00 +80002f0c: 0220af33 mulhsu t5,ra,sp +80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f14: 00200293 li t0,2 +80002f18: fe5212e3 bne tp,t0,80002efc +80002f1c: 0000aeb7 lui t4,0xa +80002f20: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002f24: 01300193 li gp,19 +80002f28: 19df1063 bne t5,t4,800030a8 + +80002f2c : +80002f2c: 00000213 li tp,0 +80002f30: 00b00137 lui sp,0xb00 +80002f34: 00d000b7 lui ra,0xd00 +80002f38: 0220af33 mulhsu t5,ra,sp +80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f40: 00200293 li t0,2 +80002f44: fe5216e3 bne tp,t0,80002f30 +80002f48: 00009eb7 lui t4,0x9 +80002f4c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002f50: 01400193 li gp,20 +80002f54: 15df1a63 bne t5,t4,800030a8 + +80002f58 : +80002f58: 00000213 li tp,0 +80002f5c: 00b00137 lui sp,0xb00 +80002f60: 00e000b7 lui ra,0xe00 +80002f64: 00000013 nop +80002f68: 0220af33 mulhsu t5,ra,sp +80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f70: 00200293 li t0,2 +80002f74: fe5214e3 bne tp,t0,80002f5c +80002f78: 0000aeb7 lui t4,0xa +80002f7c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002f80: 01500193 li gp,21 +80002f84: 13df1263 bne t5,t4,800030a8 + +80002f88 : +80002f88: 00000213 li tp,0 +80002f8c: 00b00137 lui sp,0xb00 +80002f90: 00f000b7 lui ra,0xf00 +80002f94: 00000013 nop +80002f98: 00000013 nop +80002f9c: 0220af33 mulhsu t5,ra,sp +80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fa4: 00200293 li t0,2 +80002fa8: fe5212e3 bne tp,t0,80002f8c +80002fac: 0000aeb7 lui t4,0xa +80002fb0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002fb4: 01600193 li gp,22 +80002fb8: 0fdf1863 bne t5,t4,800030a8 + +80002fbc : +80002fbc: 00000213 li tp,0 +80002fc0: 00b00137 lui sp,0xb00 +80002fc4: 00000013 nop +80002fc8: 00d000b7 lui ra,0xd00 +80002fcc: 0220af33 mulhsu t5,ra,sp +80002fd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fd4: 00200293 li t0,2 +80002fd8: fe5214e3 bne tp,t0,80002fc0 +80002fdc: 00009eb7 lui t4,0x9 +80002fe0: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002fe4: 01700193 li gp,23 +80002fe8: 0ddf1063 bne t5,t4,800030a8 + +80002fec : +80002fec: 00000213 li tp,0 +80002ff0: 00b00137 lui sp,0xb00 +80002ff4: 00000013 nop +80002ff8: 00e000b7 lui ra,0xe00 +80002ffc: 00000013 nop +80003000: 0220af33 mulhsu t5,ra,sp +80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003008: 00200293 li t0,2 +8000300c: fe5212e3 bne tp,t0,80002ff0 +80003010: 0000aeb7 lui t4,0xa +80003014: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80003018: 01800193 li gp,24 +8000301c: 09df1663 bne t5,t4,800030a8 + +80003020 : +80003020: 00000213 li tp,0 +80003024: 00b00137 lui sp,0xb00 +80003028: 00000013 nop +8000302c: 00000013 nop +80003030: 00f000b7 lui ra,0xf00 +80003034: 0220af33 mulhsu t5,ra,sp +80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000303c: 00200293 li t0,2 +80003040: fe5212e3 bne tp,t0,80003024 +80003044: 0000aeb7 lui t4,0xa +80003048: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +8000304c: 01900193 li gp,25 +80003050: 05df1c63 bne t5,t4,800030a8 + +80003054 : +80003054: 7c0000b7 lui ra,0x7c000 +80003058: 02102133 mulhsu sp,zero,ra +8000305c: 00000e93 li t4,0 +80003060: 01a00193 li gp,26 +80003064: 05d11263 bne sp,t4,800030a8 + +80003068 : +80003068: 800000b7 lui ra,0x80000 +8000306c: 0200a133 mulhsu sp,ra,zero +80003070: 00000e93 li t4,0 +80003074: 01b00193 li gp,27 +80003078: 03d11863 bne sp,t4,800030a8 + +8000307c : +8000307c: 020020b3 mulhsu ra,zero,zero +80003080: 00000e93 li t4,0 +80003084: 01c00193 li gp,28 +80003088: 03d09063 bne ra,t4,800030a8 + +8000308c : +8000308c: 021000b7 lui ra,0x2100 +80003090: 02200137 lui sp,0x2200 +80003094: 0220a033 mulhsu zero,ra,sp +80003098: 00000e93 li t4,0 +8000309c: 01d00193 li gp,29 +800030a0: 01d01463 bne zero,t4,800030a8 +800030a4: 00301a63 bne zero,gp,800030b8 + +800030a8 : +800030a8: 00119513 slli a0,gp,0x1 +800030ac: 00050063 beqz a0,800030ac +800030b0: 00156513 ori a0,a0,1 +800030b4: 00000073 ecall + +800030b8 : +800030b8: 00100513 li a0,1 +800030bc: 00000073 ecall +800030c0: c0001073 unimp diff --git a/Tests/isa/rv32um-v-mulhu b/Tests/isa/rv32um-v-mulhu new file mode 100644 index 0000000..c18c455 Binary files /dev/null and b/Tests/isa/rv32um-v-mulhu differ diff --git a/Tests/isa/rv32um-v-mulhu.dump b/Tests/isa/rv32um-v-mulhu.dump new file mode 100644 index 0000000..4ce5bb1 --- /dev/null +++ b/Tests/isa/rv32um-v-mulhu.dump @@ -0,0 +1,1282 @@ + +rv32um-v-mulhu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00007117 auipc sp,0x7 +8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00002317 auipc t1,0x2 +80002370: c9430313 addi t1,t1,-876 # 80004000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00004797 auipc a5,0x4 +8000238c: 06c78793 addi a5,a5,108 # 800063f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00004717 auipc a4,0x4 +800023a0: 05470713 addi a4,a4,84 # 800063f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00004697 auipc a3,0x4 +800023ac: 04f6a623 sw a5,76(a3) # 800063f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00004717 auipc a4,0x4 +800023dc: e2070713 addi a4,a4,-480 # 800061f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00004797 auipc a5,0x4 +800024bc: f207ac23 sw zero,-200(a5) # 800063f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: c1858593 addi a1,a1,-1000 # 80003150 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00001597 auipc a1,0x1 +800025a8: bc458593 addi a1,a1,-1084 # 80003168 +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00001597 auipc a1,0x1 +80002614: af858593 addi a1,a1,-1288 # 80003108 +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00001597 auipc a1,0x1 +8000274c: ae858593 addi a1,a1,-1304 # 80003230 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00001597 auipc a1,0x1 +800027c0: a5058593 addi a1,a1,-1456 # 8000320c +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00004b17 auipc s6,0x4 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00001d17 auipc s10,0x1 +80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00004717 auipc a4,0x4 +8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00004717 auipc a4,0x4 +800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00004717 auipc a4,0x4 +800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 +80002900: 00004717 auipc a4,0x4 +80002904: aef72a23 sw a5,-1292(a4) # 800063f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00001617 auipc a2,0x1 +80002914: 94c60613 addi a2,a2,-1716 # 8000325c +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00001617 auipc a2,0x1 +80002980: 85c60613 addi a2,a2,-1956 # 800031d8 +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00002797 auipc a5,0x2 +80002a4c: 5b878793 addi a5,a5,1464 # 80005000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00001697 auipc a3,0x1 +80002a60: 5af6a223 sw a5,1444(a3) # 80004000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00001717 auipc a4,0x1 +80002a6c: 59870713 addi a4,a4,1432 # 80004000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00002697 auipc a3,0x2 +80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc03797 auipc a5,0x7fc03 +80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08> +80002af0: 00004717 auipc a4,0x4 +80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 +80002af8: 7fc03797 auipc a5,0x7fc03 +80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8> +80002b00: 00004717 auipc a4,0x4 +80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00003717 auipc a4,0x3 +80002b10: 4f470713 addi a4,a4,1268 # 80006000 +80002b14: 00003317 auipc t1,0x3 +80002b18: 6e430313 addi t1,t1,1764 # 800061f8 +80002b1c: 03b00793 li a5,59 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00003797 auipc a5,0x3 +80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 0ee8b7b7 lui a5,0xee8b +80002b9c: 00080637 lui a2,0x80 +80002ba0: 5cf78793 addi a5,a5,1487 # ee8b5cf <_start-0x71174a31> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 00000093 li ra,0 +80002be4: 00000113 li sp,0 +80002be8: 0220bf33 mulhu t5,ra,sp +80002bec: 00000e93 li t4,0 +80002bf0: 00200193 li gp,2 +80002bf4: 4bdf1a63 bne t5,t4,800030a8 + +80002bf8 : +80002bf8: 00100093 li ra,1 +80002bfc: 00100113 li sp,1 +80002c00: 0220bf33 mulhu t5,ra,sp +80002c04: 00000e93 li t4,0 +80002c08: 00300193 li gp,3 +80002c0c: 49df1e63 bne t5,t4,800030a8 + +80002c10 : +80002c10: 00300093 li ra,3 +80002c14: 00700113 li sp,7 +80002c18: 0220bf33 mulhu t5,ra,sp +80002c1c: 00000e93 li t4,0 +80002c20: 00400193 li gp,4 +80002c24: 49df1263 bne t5,t4,800030a8 + +80002c28 : +80002c28: 00000093 li ra,0 +80002c2c: ffff8137 lui sp,0xffff8 +80002c30: 0220bf33 mulhu t5,ra,sp +80002c34: 00000e93 li t4,0 +80002c38: 00500193 li gp,5 +80002c3c: 47df1663 bne t5,t4,800030a8 + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00000113 li sp,0 +80002c48: 0220bf33 mulhu t5,ra,sp +80002c4c: 00000e93 li t4,0 +80002c50: 00600193 li gp,6 +80002c54: 45df1a63 bne t5,t4,800030a8 + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: ffff8137 lui sp,0xffff8 +80002c60: 0220bf33 mulhu t5,ra,sp +80002c64: 7fffceb7 lui t4,0x7fffc +80002c68: 00700193 li gp,7 +80002c6c: 43df1e63 bne t5,t4,800030a8 + +80002c70 : +80002c70: aaaab0b7 lui ra,0xaaaab +80002c74: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002c78: 00030137 lui sp,0x30 +80002c7c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183> +80002c80: 0220bf33 mulhu t5,ra,sp +80002c84: 00020eb7 lui t4,0x20 +80002c88: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> +80002c8c: 01e00193 li gp,30 +80002c90: 41df1c63 bne t5,t4,800030a8 + +80002c94 : +80002c94: 000300b7 lui ra,0x30 +80002c98: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183> +80002c9c: aaaab137 lui sp,0xaaaab +80002ca0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3> +80002ca4: 0220bf33 mulhu t5,ra,sp +80002ca8: 00020eb7 lui t4,0x20 +80002cac: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102> +80002cb0: 01f00193 li gp,31 +80002cb4: 3fdf1a63 bne t5,t4,800030a8 + +80002cb8 : +80002cb8: ff0000b7 lui ra,0xff000 +80002cbc: ff000137 lui sp,0xff000 +80002cc0: 0220bf33 mulhu t5,ra,sp +80002cc4: fe010eb7 lui t4,0xfe010 +80002cc8: 02000193 li gp,32 +80002ccc: 3ddf1e63 bne t5,t4,800030a8 + +80002cd0 : +80002cd0: fff00093 li ra,-1 +80002cd4: fff00113 li sp,-1 +80002cd8: 0220bf33 mulhu t5,ra,sp +80002cdc: ffe00e93 li t4,-2 +80002ce0: 02100193 li gp,33 +80002ce4: 3ddf1263 bne t5,t4,800030a8 + +80002ce8 : +80002ce8: fff00093 li ra,-1 +80002cec: 00100113 li sp,1 +80002cf0: 0220bf33 mulhu t5,ra,sp +80002cf4: 00000e93 li t4,0 +80002cf8: 02200193 li gp,34 +80002cfc: 3bdf1663 bne t5,t4,800030a8 + +80002d00 : +80002d00: 00100093 li ra,1 +80002d04: fff00113 li sp,-1 +80002d08: 0220bf33 mulhu t5,ra,sp +80002d0c: 00000e93 li t4,0 +80002d10: 02300193 li gp,35 +80002d14: 39df1a63 bne t5,t4,800030a8 + +80002d18 : +80002d18: 00d000b7 lui ra,0xd00 +80002d1c: 00b00137 lui sp,0xb00 +80002d20: 0220b0b3 mulhu ra,ra,sp +80002d24: 00009eb7 lui t4,0x9 +80002d28: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002d2c: 00800193 li gp,8 +80002d30: 37d09c63 bne ra,t4,800030a8 + +80002d34 : +80002d34: 00e000b7 lui ra,0xe00 +80002d38: 00b00137 lui sp,0xb00 +80002d3c: 0220b133 mulhu sp,ra,sp +80002d40: 0000aeb7 lui t4,0xa +80002d44: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002d48: 00900193 li gp,9 +80002d4c: 35d11e63 bne sp,t4,800030a8 + +80002d50 : +80002d50: 00d000b7 lui ra,0xd00 +80002d54: 0210b0b3 mulhu ra,ra,ra +80002d58: 0000beb7 lui t4,0xb +80002d5c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700> +80002d60: 00a00193 li gp,10 +80002d64: 35d09263 bne ra,t4,800030a8 + +80002d68 : +80002d68: 00000213 li tp,0 +80002d6c: 00d000b7 lui ra,0xd00 +80002d70: 00b00137 lui sp,0xb00 +80002d74: 0220bf33 mulhu t5,ra,sp +80002d78: 000f0313 mv t1,t5 +80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002d80: 00200293 li t0,2 +80002d84: fe5214e3 bne tp,t0,80002d6c +80002d88: 00009eb7 lui t4,0x9 +80002d8c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002d90: 00b00193 li gp,11 +80002d94: 31d31a63 bne t1,t4,800030a8 + +80002d98 : +80002d98: 00000213 li tp,0 +80002d9c: 00e000b7 lui ra,0xe00 +80002da0: 00b00137 lui sp,0xb00 +80002da4: 0220bf33 mulhu t5,ra,sp +80002da8: 00000013 nop +80002dac: 000f0313 mv t1,t5 +80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002db4: 00200293 li t0,2 +80002db8: fe5212e3 bne tp,t0,80002d9c +80002dbc: 0000aeb7 lui t4,0xa +80002dc0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002dc4: 00c00193 li gp,12 +80002dc8: 2fd31063 bne t1,t4,800030a8 + +80002dcc : +80002dcc: 00000213 li tp,0 +80002dd0: 00f000b7 lui ra,0xf00 +80002dd4: 00b00137 lui sp,0xb00 +80002dd8: 0220bf33 mulhu t5,ra,sp +80002ddc: 00000013 nop +80002de0: 00000013 nop +80002de4: 000f0313 mv t1,t5 +80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002dec: 00200293 li t0,2 +80002df0: fe5210e3 bne tp,t0,80002dd0 +80002df4: 0000aeb7 lui t4,0xa +80002df8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002dfc: 00d00193 li gp,13 +80002e00: 2bd31463 bne t1,t4,800030a8 + +80002e04 : +80002e04: 00000213 li tp,0 +80002e08: 00d000b7 lui ra,0xd00 +80002e0c: 00b00137 lui sp,0xb00 +80002e10: 0220bf33 mulhu t5,ra,sp +80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e18: 00200293 li t0,2 +80002e1c: fe5216e3 bne tp,t0,80002e08 +80002e20: 00009eb7 lui t4,0x9 +80002e24: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002e28: 00e00193 li gp,14 +80002e2c: 27df1e63 bne t5,t4,800030a8 + +80002e30 : +80002e30: 00000213 li tp,0 +80002e34: 00e000b7 lui ra,0xe00 +80002e38: 00b00137 lui sp,0xb00 +80002e3c: 00000013 nop +80002e40: 0220bf33 mulhu t5,ra,sp +80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e48: 00200293 li t0,2 +80002e4c: fe5214e3 bne tp,t0,80002e34 +80002e50: 0000aeb7 lui t4,0xa +80002e54: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002e58: 00f00193 li gp,15 +80002e5c: 25df1663 bne t5,t4,800030a8 + +80002e60 : +80002e60: 00000213 li tp,0 +80002e64: 00f000b7 lui ra,0xf00 +80002e68: 00b00137 lui sp,0xb00 +80002e6c: 00000013 nop +80002e70: 00000013 nop +80002e74: 0220bf33 mulhu t5,ra,sp +80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002e7c: 00200293 li t0,2 +80002e80: fe5212e3 bne tp,t0,80002e64 +80002e84: 0000aeb7 lui t4,0xa +80002e88: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002e8c: 01000193 li gp,16 +80002e90: 21df1c63 bne t5,t4,800030a8 + +80002e94 : +80002e94: 00000213 li tp,0 +80002e98: 00d000b7 lui ra,0xd00 +80002e9c: 00000013 nop +80002ea0: 00b00137 lui sp,0xb00 +80002ea4: 0220bf33 mulhu t5,ra,sp +80002ea8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002eac: 00200293 li t0,2 +80002eb0: fe5214e3 bne tp,t0,80002e98 +80002eb4: 00009eb7 lui t4,0x9 +80002eb8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002ebc: 01100193 li gp,17 +80002ec0: 1fdf1463 bne t5,t4,800030a8 + +80002ec4 : +80002ec4: 00000213 li tp,0 +80002ec8: 00e000b7 lui ra,0xe00 +80002ecc: 00000013 nop +80002ed0: 00b00137 lui sp,0xb00 +80002ed4: 00000013 nop +80002ed8: 0220bf33 mulhu t5,ra,sp +80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002ee0: 00200293 li t0,2 +80002ee4: fe5212e3 bne tp,t0,80002ec8 +80002ee8: 0000aeb7 lui t4,0xa +80002eec: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002ef0: 01200193 li gp,18 +80002ef4: 1bdf1a63 bne t5,t4,800030a8 + +80002ef8 : +80002ef8: 00000213 li tp,0 +80002efc: 00f000b7 lui ra,0xf00 +80002f00: 00000013 nop +80002f04: 00000013 nop +80002f08: 00b00137 lui sp,0xb00 +80002f0c: 0220bf33 mulhu t5,ra,sp +80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f14: 00200293 li t0,2 +80002f18: fe5212e3 bne tp,t0,80002efc +80002f1c: 0000aeb7 lui t4,0xa +80002f20: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002f24: 01300193 li gp,19 +80002f28: 19df1063 bne t5,t4,800030a8 + +80002f2c : +80002f2c: 00000213 li tp,0 +80002f30: 00b00137 lui sp,0xb00 +80002f34: 00d000b7 lui ra,0xd00 +80002f38: 0220bf33 mulhu t5,ra,sp +80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f40: 00200293 li t0,2 +80002f44: fe5216e3 bne tp,t0,80002f30 +80002f48: 00009eb7 lui t4,0x9 +80002f4c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002f50: 01400193 li gp,20 +80002f54: 15df1a63 bne t5,t4,800030a8 + +80002f58 : +80002f58: 00000213 li tp,0 +80002f5c: 00b00137 lui sp,0xb00 +80002f60: 00e000b7 lui ra,0xe00 +80002f64: 00000013 nop +80002f68: 0220bf33 mulhu t5,ra,sp +80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002f70: 00200293 li t0,2 +80002f74: fe5214e3 bne tp,t0,80002f5c +80002f78: 0000aeb7 lui t4,0xa +80002f7c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80002f80: 01500193 li gp,21 +80002f84: 13df1263 bne t5,t4,800030a8 + +80002f88 : +80002f88: 00000213 li tp,0 +80002f8c: 00b00137 lui sp,0xb00 +80002f90: 00f000b7 lui ra,0xf00 +80002f94: 00000013 nop +80002f98: 00000013 nop +80002f9c: 0220bf33 mulhu t5,ra,sp +80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fa4: 00200293 li t0,2 +80002fa8: fe5212e3 bne tp,t0,80002f8c +80002fac: 0000aeb7 lui t4,0xa +80002fb0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +80002fb4: 01600193 li gp,22 +80002fb8: 0fdf1863 bne t5,t4,800030a8 + +80002fbc : +80002fbc: 00000213 li tp,0 +80002fc0: 00b00137 lui sp,0xb00 +80002fc4: 00000013 nop +80002fc8: 00d000b7 lui ra,0xd00 +80002fcc: 0220bf33 mulhu t5,ra,sp +80002fd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80002fd4: 00200293 li t0,2 +80002fd8: fe5214e3 bne tp,t0,80002fc0 +80002fdc: 00009eb7 lui t4,0x9 +80002fe0: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100> +80002fe4: 01700193 li gp,23 +80002fe8: 0ddf1063 bne t5,t4,800030a8 + +80002fec : +80002fec: 00000213 li tp,0 +80002ff0: 00b00137 lui sp,0xb00 +80002ff4: 00000013 nop +80002ff8: 00e000b7 lui ra,0xe00 +80002ffc: 00000013 nop +80003000: 0220bf33 mulhu t5,ra,sp +80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +80003008: 00200293 li t0,2 +8000300c: fe5212e3 bne tp,t0,80002ff0 +80003010: 0000aeb7 lui t4,0xa +80003014: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600> +80003018: 01800193 li gp,24 +8000301c: 09df1663 bne t5,t4,800030a8 + +80003020 : +80003020: 00000213 li tp,0 +80003024: 00b00137 lui sp,0xb00 +80003028: 00000013 nop +8000302c: 00000013 nop +80003030: 00f000b7 lui ra,0xf00 +80003034: 0220bf33 mulhu t5,ra,sp +80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> +8000303c: 00200293 li t0,2 +80003040: fe5212e3 bne tp,t0,80003024 +80003044: 0000aeb7 lui t4,0xa +80003048: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00> +8000304c: 01900193 li gp,25 +80003050: 05df1c63 bne t5,t4,800030a8 + +80003054 : +80003054: 7c0000b7 lui ra,0x7c000 +80003058: 02103133 mulhu sp,zero,ra +8000305c: 00000e93 li t4,0 +80003060: 01a00193 li gp,26 +80003064: 05d11263 bne sp,t4,800030a8 + +80003068 : +80003068: 800000b7 lui ra,0x80000 +8000306c: 0200b133 mulhu sp,ra,zero +80003070: 00000e93 li t4,0 +80003074: 01b00193 li gp,27 +80003078: 03d11863 bne sp,t4,800030a8 + +8000307c : +8000307c: 020030b3 mulhu ra,zero,zero +80003080: 00000e93 li t4,0 +80003084: 01c00193 li gp,28 +80003088: 03d09063 bne ra,t4,800030a8 + +8000308c : +8000308c: 021000b7 lui ra,0x2100 +80003090: 02200137 lui sp,0x2200 +80003094: 0220b033 mulhu zero,ra,sp +80003098: 00000e93 li t4,0 +8000309c: 01d00193 li gp,29 +800030a0: 01d01463 bne zero,t4,800030a8 +800030a4: 00301a63 bne zero,gp,800030b8 + +800030a8 : +800030a8: 00119513 slli a0,gp,0x1 +800030ac: 00050063 beqz a0,800030ac +800030b0: 00156513 ori a0,a0,1 +800030b4: 00000073 ecall + +800030b8 : +800030b8: 00100513 li a0,1 +800030bc: 00000073 ecall +800030c0: c0001073 unimp diff --git a/Tests/isa/rv32um-v-rem b/Tests/isa/rv32um-v-rem new file mode 100644 index 0000000..68f0333 Binary files /dev/null and b/Tests/isa/rv32um-v-rem differ diff --git a/Tests/isa/rv32um-v-rem.dump b/Tests/isa/rv32um-v-rem.dump new file mode 100644 index 0000000..fd78107 --- /dev/null +++ b/Tests/isa/rv32um-v-rem.dump @@ -0,0 +1,981 @@ + +rv32um-v-rem: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 81058593 addi a1,a1,-2032 # 80002cd8 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 82c58593 addi a1,a1,-2004 # 80002d64 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 7d858593 addi a1,a1,2008 # 80002d7c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 70c58593 addi a1,a1,1804 # 80002d1c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6fc58593 addi a1,a1,1788 # 80002e44 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 66458593 addi a1,a1,1636 # 80002e20 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 56060613 addi a2,a2,1376 # 80002e70 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 47060613 addi a2,a2,1136 # 80002dec +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3f060613 addi a2,a2,1008 # 80002db8 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 00400793 li a5,4 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 05b927b7 lui a5,0x5b92 +80002b9c: 00080637 lui a2,0x80 +80002ba0: b5078793 addi a5,a5,-1200 # 5b91b50 <_start-0x7a46e4b0> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 01400093 li ra,20 +80002be4: 00600113 li sp,6 +80002be8: 0220ef33 rem t5,ra,sp +80002bec: 00200e93 li t4,2 +80002bf0: 00200193 li gp,2 +80002bf4: 0ddf1463 bne t5,t4,80002cbc + +80002bf8 : +80002bf8: fec00093 li ra,-20 +80002bfc: 00600113 li sp,6 +80002c00: 0220ef33 rem t5,ra,sp +80002c04: ffe00e93 li t4,-2 +80002c08: 00300193 li gp,3 +80002c0c: 0bdf1863 bne t5,t4,80002cbc + +80002c10 : +80002c10: 01400093 li ra,20 +80002c14: ffa00113 li sp,-6 +80002c18: 0220ef33 rem t5,ra,sp +80002c1c: 00200e93 li t4,2 +80002c20: 00400193 li gp,4 +80002c24: 09df1c63 bne t5,t4,80002cbc + +80002c28 : +80002c28: fec00093 li ra,-20 +80002c2c: ffa00113 li sp,-6 +80002c30: 0220ef33 rem t5,ra,sp +80002c34: ffe00e93 li t4,-2 +80002c38: 00500193 li gp,5 +80002c3c: 09df1063 bne t5,t4,80002cbc + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00100113 li sp,1 +80002c48: 0220ef33 rem t5,ra,sp +80002c4c: 00000e93 li t4,0 +80002c50: 00600193 li gp,6 +80002c54: 07df1463 bne t5,t4,80002cbc + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: fff00113 li sp,-1 +80002c60: 0220ef33 rem t5,ra,sp +80002c64: 00000e93 li t4,0 +80002c68: 00700193 li gp,7 +80002c6c: 05df1863 bne t5,t4,80002cbc + +80002c70 : +80002c70: 800000b7 lui ra,0x80000 +80002c74: 00000113 li sp,0 +80002c78: 0220ef33 rem t5,ra,sp +80002c7c: 80000eb7 lui t4,0x80000 +80002c80: 00800193 li gp,8 +80002c84: 03df1c63 bne t5,t4,80002cbc + +80002c88 : +80002c88: 00100093 li ra,1 +80002c8c: 00000113 li sp,0 +80002c90: 0220ef33 rem t5,ra,sp +80002c94: 00100e93 li t4,1 +80002c98: 00900193 li gp,9 +80002c9c: 03df1063 bne t5,t4,80002cbc + +80002ca0 : +80002ca0: 00000093 li ra,0 +80002ca4: 00000113 li sp,0 +80002ca8: 0220ef33 rem t5,ra,sp +80002cac: 00000e93 li t4,0 +80002cb0: 00a00193 li gp,10 +80002cb4: 01df1463 bne t5,t4,80002cbc +80002cb8: 00301a63 bne zero,gp,80002ccc + +80002cbc : +80002cbc: 00119513 slli a0,gp,0x1 +80002cc0: 00050063 beqz a0,80002cc0 +80002cc4: 00156513 ori a0,a0,1 +80002cc8: 00000073 ecall + +80002ccc : +80002ccc: 00100513 li a0,1 +80002cd0: 00000073 ecall +80002cd4: c0001073 unimp diff --git a/Tests/isa/rv32um-v-remu b/Tests/isa/rv32um-v-remu new file mode 100644 index 0000000..96b0a97 Binary files /dev/null and b/Tests/isa/rv32um-v-remu differ diff --git a/Tests/isa/rv32um-v-remu.dump b/Tests/isa/rv32um-v-remu.dump new file mode 100644 index 0000000..b02526b --- /dev/null +++ b/Tests/isa/rv32um-v-remu.dump @@ -0,0 +1,981 @@ + +rv32um-v-remu: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 00c0006f j 8000000c + +80000004 : +80000004: 2780206f j 8000227c + +80000008 : +80000008: 2740206f j 8000227c + +8000000c : +8000000c: 00000297 auipc t0,0x0 +80000010: ffc28293 addi t0,t0,-4 # 80000008 +80000014: 30529073 csrw mtvec,t0 +80000018: 00006117 auipc sp,0x6 +8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70> +80000020: f14022f3 csrr t0,mhartid +80000024: 00c29293 slli t0,t0,0xc +80000028: 00510133 add sp,sp,t0 +8000002c: 34011073 csrw mscratch,sp +80000030: 00003517 auipc a0,0x3 +80000034: bb050513 addi a0,a0,-1104 # 80002be0 +80000038: 2090206f j 80002a40 + +8000003c : +8000003c: 08452283 lw t0,132(a0) +80000040: 14129073 csrw sepc,t0 +80000044: 00452083 lw ra,4(a0) +80000048: 00852103 lw sp,8(a0) +8000004c: 00c52183 lw gp,12(a0) +80000050: 01052203 lw tp,16(a0) +80000054: 01452283 lw t0,20(a0) +80000058: 01852303 lw t1,24(a0) +8000005c: 01c52383 lw t2,28(a0) +80000060: 02052403 lw s0,32(a0) +80000064: 02452483 lw s1,36(a0) +80000068: 02c52583 lw a1,44(a0) +8000006c: 03052603 lw a2,48(a0) +80000070: 03452683 lw a3,52(a0) +80000074: 03852703 lw a4,56(a0) +80000078: 03c52783 lw a5,60(a0) +8000007c: 04052803 lw a6,64(a0) +80000080: 04452883 lw a7,68(a0) +80000084: 04852903 lw s2,72(a0) +80000088: 04c52983 lw s3,76(a0) +8000008c: 05052a03 lw s4,80(a0) +80000090: 05452a83 lw s5,84(a0) +80000094: 05852b03 lw s6,88(a0) +80000098: 05c52b83 lw s7,92(a0) +8000009c: 06052c03 lw s8,96(a0) +800000a0: 06452c83 lw s9,100(a0) +800000a4: 06852d03 lw s10,104(a0) +800000a8: 06c52d83 lw s11,108(a0) +800000ac: 07052e03 lw t3,112(a0) +800000b0: 07452e83 lw t4,116(a0) +800000b4: 07852f03 lw t5,120(a0) +800000b8: 07c52f83 lw t6,124(a0) +800000bc: 02852503 lw a0,40(a0) +800000c0: 10200073 sret + +800000c4 : +800000c4: 14011173 csrrw sp,sscratch,sp +800000c8: 00112223 sw ra,4(sp) +800000cc: 00312623 sw gp,12(sp) +800000d0: 00412823 sw tp,16(sp) +800000d4: 00512a23 sw t0,20(sp) +800000d8: 00612c23 sw t1,24(sp) +800000dc: 00712e23 sw t2,28(sp) +800000e0: 02812023 sw s0,32(sp) +800000e4: 02912223 sw s1,36(sp) +800000e8: 02a12423 sw a0,40(sp) +800000ec: 02b12623 sw a1,44(sp) +800000f0: 02c12823 sw a2,48(sp) +800000f4: 02d12a23 sw a3,52(sp) +800000f8: 02e12c23 sw a4,56(sp) +800000fc: 02f12e23 sw a5,60(sp) +80000100: 05012023 sw a6,64(sp) +80000104: 05112223 sw a7,68(sp) +80000108: 05212423 sw s2,72(sp) +8000010c: 05312623 sw s3,76(sp) +80000110: 05412823 sw s4,80(sp) +80000114: 05512a23 sw s5,84(sp) +80000118: 05612c23 sw s6,88(sp) +8000011c: 05712e23 sw s7,92(sp) +80000120: 07812023 sw s8,96(sp) +80000124: 07912223 sw s9,100(sp) +80000128: 07a12423 sw s10,104(sp) +8000012c: 07b12623 sw s11,108(sp) +80000130: 07c12823 sw t3,112(sp) +80000134: 07d12a23 sw t4,116(sp) +80000138: 07e12c23 sw t5,120(sp) +8000013c: 07f12e23 sw t6,124(sp) +80000140: 140112f3 csrrw t0,sscratch,sp +80000144: 00512423 sw t0,8(sp) +80000148: 100022f3 csrr t0,sstatus +8000014c: 08512023 sw t0,128(sp) +80000150: 141022f3 csrr t0,sepc +80000154: 08512223 sw t0,132(sp) +80000158: 143022f3 csrr t0,sbadaddr +8000015c: 08512423 sw t0,136(sp) +80000160: 142022f3 csrr t0,scause +80000164: 08512623 sw t0,140(sp) +80000168: 00010513 mv a0,sp +8000016c: 50c0206f j 80002678 + +Disassembly of section .text: + +80002000 : +80002000: 00c5e7b3 or a5,a1,a2 +80002004: 00f567b3 or a5,a0,a5 +80002008: 0037f793 andi a5,a5,3 +8000200c: 00c506b3 add a3,a0,a2 +80002010: 02078463 beqz a5,80002038 +80002014: 00c58633 add a2,a1,a2 +80002018: 00050793 mv a5,a0 +8000201c: 02d57e63 bleu a3,a0,80002058 +80002020: 00158593 addi a1,a1,1 +80002024: fff5c703 lbu a4,-1(a1) +80002028: 00178793 addi a5,a5,1 +8000202c: fee78fa3 sb a4,-1(a5) +80002030: feb618e3 bne a2,a1,80002020 +80002034: 00008067 ret +80002038: fed57ee3 bleu a3,a0,80002034 +8000203c: 00050793 mv a5,a0 +80002040: 00458593 addi a1,a1,4 +80002044: ffc5a703 lw a4,-4(a1) +80002048: 00478793 addi a5,a5,4 +8000204c: fee7ae23 sw a4,-4(a5) +80002050: fed7e8e3 bltu a5,a3,80002040 +80002054: 00008067 ret +80002058: 00008067 ret + +8000205c : +8000205c: 00c567b3 or a5,a0,a2 +80002060: 0037f793 andi a5,a5,3 +80002064: 00c50633 add a2,a0,a2 +80002068: 02078063 beqz a5,80002088 +8000206c: 0ff5f593 andi a1,a1,255 +80002070: 00050793 mv a5,a0 +80002074: 04c57063 bleu a2,a0,800020b4 +80002078: 00178793 addi a5,a5,1 +8000207c: feb78fa3 sb a1,-1(a5) +80002080: fef61ce3 bne a2,a5,80002078 +80002084: 00008067 ret +80002088: 0ff5f593 andi a1,a1,255 +8000208c: 00859793 slli a5,a1,0x8 +80002090: 00b7e7b3 or a5,a5,a1 +80002094: 01079593 slli a1,a5,0x10 +80002098: 00f5e5b3 or a1,a1,a5 +8000209c: fec574e3 bleu a2,a0,80002084 +800020a0: 00050793 mv a5,a0 +800020a4: 00478793 addi a5,a5,4 +800020a8: feb7ae23 sw a1,-4(a5) +800020ac: fec7ece3 bltu a5,a2,800020a4 +800020b0: 00008067 ret +800020b4: 00008067 ret + +800020b8 : +800020b8: 00054783 lbu a5,0(a0) +800020bc: 00050713 mv a4,a0 +800020c0: 00078c63 beqz a5,800020d8 +800020c4: 00150513 addi a0,a0,1 +800020c8: 00054783 lbu a5,0(a0) +800020cc: fe079ce3 bnez a5,800020c4 +800020d0: 40e50533 sub a0,a0,a4 +800020d4: 00008067 ret +800020d8: 00000513 li a0,0 +800020dc: 00008067 ret + +800020e0 : +800020e0: 00150513 addi a0,a0,1 +800020e4: fff54783 lbu a5,-1(a0) +800020e8: 00158593 addi a1,a1,1 +800020ec: fff5c703 lbu a4,-1(a1) +800020f0: 00078863 beqz a5,80002100 +800020f4: fee786e3 beq a5,a4,800020e0 +800020f8: 40e78533 sub a0,a5,a4 +800020fc: 00008067 ret +80002100: 00000793 li a5,0 +80002104: ff5ff06f j 800020f8 + +80002108 : +80002108: 00b567b3 or a5,a0,a1 +8000210c: 0037f793 andi a5,a5,3 +80002110: 04079263 bnez a5,80002154 +80002114: ffc67693 andi a3,a2,-4 +80002118: 00d506b3 add a3,a0,a3 +8000211c: 00050813 mv a6,a0 +80002120: 02d57a63 bleu a3,a0,80002154 +80002124: 00052703 lw a4,0(a0) +80002128: 0005a783 lw a5,0(a1) +8000212c: 00f70a63 beq a4,a5,80002140 +80002130: 0240006f j 80002154 +80002134: 00052703 lw a4,0(a0) +80002138: 0005a783 lw a5,0(a1) +8000213c: 00f71863 bne a4,a5,8000214c +80002140: 00450513 addi a0,a0,4 +80002144: 00458593 addi a1,a1,4 +80002148: fed566e3 bltu a0,a3,80002134 +8000214c: 41050833 sub a6,a0,a6 +80002150: 41060633 sub a2,a2,a6 +80002154: 00c58633 add a2,a1,a2 +80002158: 0140006f j 8000216c +8000215c: 00158593 addi a1,a1,1 +80002160: fff54783 lbu a5,-1(a0) +80002164: fff5c703 lbu a4,-1(a1) +80002168: 00e79a63 bne a5,a4,8000217c +8000216c: 00150513 addi a0,a0,1 +80002170: fec596e3 bne a1,a2,8000215c +80002174: 00000513 li a0,0 +80002178: 00008067 ret +8000217c: 40e78533 sub a0,a5,a4 +80002180: 00008067 ret + +80002184 : +80002184: 00050793 mv a5,a0 +80002188: 00158593 addi a1,a1,1 +8000218c: fff5c703 lbu a4,-1(a1) +80002190: 00178793 addi a5,a5,1 +80002194: fee78fa3 sb a4,-1(a5) +80002198: fe0718e3 bnez a4,80002188 +8000219c: 00008067 ret + +800021a0 : +800021a0: 00054783 lbu a5,0(a0) +800021a4: 02000713 li a4,32 +800021a8: 00e79863 bne a5,a4,800021b8 +800021ac: 00150513 addi a0,a0,1 +800021b0: 00054783 lbu a5,0(a0) +800021b4: fee78ce3 beq a5,a4,800021ac +800021b8: fd578713 addi a4,a5,-43 +800021bc: 0fd77713 andi a4,a4,253 +800021c0: 04070263 beqz a4,80002204 +800021c4: 00054683 lbu a3,0(a0) +800021c8: 00050793 mv a5,a0 +800021cc: 00000613 li a2,0 +800021d0: 04068863 beqz a3,80002220 +800021d4: 00000513 li a0,0 +800021d8: 00178793 addi a5,a5,1 +800021dc: fd068593 addi a1,a3,-48 +800021e0: 00251713 slli a4,a0,0x2 +800021e4: 0007c683 lbu a3,0(a5) +800021e8: 00a70533 add a0,a4,a0 +800021ec: 00151513 slli a0,a0,0x1 +800021f0: 00a58533 add a0,a1,a0 +800021f4: fe0692e3 bnez a3,800021d8 +800021f8: 00060463 beqz a2,80002200 +800021fc: 40a00533 neg a0,a0 +80002200: 00008067 ret +80002204: 00154683 lbu a3,1(a0) +80002208: fd378793 addi a5,a5,-45 +8000220c: 0017b613 seqz a2,a5 +80002210: 00150793 addi a5,a0,1 +80002214: fc0690e3 bnez a3,800021d4 +80002218: 00000513 li a0,0 +8000221c: fddff06f j 800021f8 +80002220: 00000513 li a0,0 +80002224: 00008067 ret + +80002228 : +80002228: fffff697 auipc a3,0xfffff +8000222c: dd868693 addi a3,a3,-552 # 80001000 +80002230: 0006a703 lw a4,0(a3) +80002234: 0046a783 lw a5,4(a3) +80002238: 00050813 mv a6,a0 +8000223c: 41f55893 srai a7,a0,0x1f +80002240: 00f76733 or a4,a4,a5 +80002244: 02070663 beqz a4,80002270 +80002248: fffff617 auipc a2,0xfffff +8000224c: df860613 addi a2,a2,-520 # 80001040 +80002250: 00000713 li a4,0 +80002254: 00e62023 sw a4,0(a2) +80002258: 00000793 li a5,0 +8000225c: 00f62223 sw a5,4(a2) +80002260: 0006a703 lw a4,0(a3) +80002264: 0046a783 lw a5,4(a3) +80002268: 00f76733 or a4,a4,a5 +8000226c: fe0712e3 bnez a4,80002250 +80002270: 0106a023 sw a6,0(a3) +80002274: 0116a223 sw a7,4(a3) +80002278: 0000006f j 80002278 + +8000227c : +8000227c: ff010113 addi sp,sp,-16 +80002280: 34900513 li a0,841 +80002284: 00112623 sw ra,12(sp) +80002288: fa1ff0ef jal ra,80002228 + +8000228c : +8000228c: fe010113 addi sp,sp,-32 +80002290: 01b10793 addi a5,sp,27 +80002294: 00b10e93 addi t4,sp,11 +80002298: 00900e13 li t3,9 +8000229c: 00f57693 andi a3,a0,15 +800022a0: 01c59313 slli t1,a1,0x1c +800022a4: 00455513 srli a0,a0,0x4 +800022a8: 05700613 li a2,87 +800022ac: 0ff6f713 andi a4,a3,255 +800022b0: 00de6463 bltu t3,a3,800022b8 +800022b4: 03000613 li a2,48 +800022b8: 00c70733 add a4,a4,a2 +800022bc: 00e78023 sb a4,0(a5) +800022c0: fff78793 addi a5,a5,-1 +800022c4: 00a36533 or a0,t1,a0 +800022c8: 0045d593 srli a1,a1,0x4 +800022cc: fdd798e3 bne a5,t4,8000229c +800022d0: 00c14583 lbu a1,12(sp) +800022d4: 00010e23 sb zero,28(sp) +800022d8: 06058263 beqz a1,8000233c +800022dc: 00c10513 addi a0,sp,12 +800022e0: fffff697 auipc a3,0xfffff +800022e4: d2068693 addi a3,a3,-736 # 80001000 +800022e8: fffff617 auipc a2,0xfffff +800022ec: d5860613 addi a2,a2,-680 # 80001040 +800022f0: 0006a703 lw a4,0(a3) +800022f4: 0046a783 lw a5,4(a3) +800022f8: 00058813 mv a6,a1 +800022fc: 00150513 addi a0,a0,1 +80002300: 00f76733 or a4,a4,a5 +80002304: 010108b7 lui a7,0x1010 +80002308: 02070263 beqz a4,8000232c +8000230c: 00000713 li a4,0 +80002310: 00e62023 sw a4,0(a2) +80002314: 00000793 li a5,0 +80002318: 00f62223 sw a5,4(a2) +8000231c: 0006a703 lw a4,0(a3) +80002320: 0046a783 lw a5,4(a3) +80002324: 00f76733 or a4,a4,a5 +80002328: fe0712e3 bnez a4,8000230c +8000232c: 00054583 lbu a1,0(a0) +80002330: 0106a023 sw a6,0(a3) +80002334: 0116a223 sw a7,4(a3) +80002338: fa059ce3 bnez a1,800022f0 +8000233c: 02010113 addi sp,sp,32 +80002340: 00008067 ret + +80002344 : +80002344: ff010113 addi sp,sp,-16 +80002348: fffff6b7 lui a3,0xfffff +8000234c: 00112623 sw ra,12(sp) +80002350: 00812423 sw s0,8(sp) +80002354: 00912223 sw s1,4(sp) +80002358: 00d50733 add a4,a0,a3 +8000235c: 0003e7b7 lui a5,0x3e +80002360: 16f77263 bleu a5,a4,800024c4 +80002364: 00c55613 srli a2,a0,0xc +80002368: 40060e13 addi t3,a2,1024 +8000236c: 00001317 auipc t1,0x1 +80002370: c9430313 addi t1,t1,-876 # 80003000 +80002374: 002e1793 slli a5,t3,0x2 +80002378: 00f307b3 add a5,t1,a5 +8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000> +80002380: 00d57533 and a0,a0,a3 +80002384: 0e071863 bnez a4,80002474 +80002388: 00003797 auipc a5,0x3 +8000238c: 06c78793 addi a5,a5,108 # 800053f4 +80002390: 0007a583 lw a1,0(a5) +80002394: 1a058063 beqz a1,80002534 +80002398: 0045a783 lw a5,4(a1) +8000239c: 00003717 auipc a4,0x3 +800023a0: 05470713 addi a4,a4,84 # 800053f0 +800023a4: 00072703 lw a4,0(a4) +800023a8: 00003697 auipc a3,0x3 +800023ac: 04f6a623 sw a5,76(a3) # 800053f4 +800023b0: 10e78463 beq a5,a4,800024b8 +800023b4: 0005a703 lw a4,0(a1) +800023b8: 002e1793 slli a5,t3,0x2 +800023bc: 00f307b3 add a5,t1,a5 +800023c0: 00c75713 srli a4,a4,0xc +800023c4: 00a71713 slli a4,a4,0xa +800023c8: 0df76e93 ori t4,a4,223 +800023cc: 01f76693 ori a3,a4,31 +800023d0: 01d7a023 sw t4,0(a5) +800023d4: 12050073 sfence.vma a0 +800023d8: 00003717 auipc a4,0x3 +800023dc: e2070713 addi a4,a4,-480 # 800051f8 +800023e0: 00361793 slli a5,a2,0x3 +800023e4: 00f707b3 add a5,a4,a5 +800023e8: 0007a703 lw a4,0(a5) +800023ec: 1a071a63 bnez a4,800025a0 +800023f0: 0005a703 lw a4,0(a1) +800023f4: 00e7a023 sw a4,0(a5) +800023f8: 0045a703 lw a4,4(a1) +800023fc: 00e7a223 sw a4,4(a5) +80002400: 000407b7 lui a5,0x40 +80002404: 1007a5f3 csrrs a1,sstatus,a5 +80002408: ffc007b7 lui a5,0xffc00 +8000240c: 00f507b3 add a5,a0,a5 +80002410: 00001637 lui a2,0x1 +80002414: 00050713 mv a4,a0 +80002418: 00c78633 add a2,a5,a2 +8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08> +80002420: 0047ae83 lw t4,4(a5) +80002424: 0087a883 lw a7,8(a5) +80002428: 00c7a803 lw a6,12(a5) +8000242c: 01e72023 sw t5,0(a4) +80002430: 01d72223 sw t4,4(a4) +80002434: 01172423 sw a7,8(a4) +80002438: 01072623 sw a6,12(a4) +8000243c: 01078793 addi a5,a5,16 +80002440: 01070713 addi a4,a4,16 +80002444: fcc79ce3 bne a5,a2,8000241c +80002448: 10059073 csrw sstatus,a1 +8000244c: 002e1e13 slli t3,t3,0x2 +80002450: 01c30333 add t1,t1,t3 +80002454: 00d32023 sw a3,0(t1) +80002458: 12050073 sfence.vma a0 +8000245c: 0000100f fence.i +80002460: 00c12083 lw ra,12(sp) +80002464: 00812403 lw s0,8(sp) +80002468: 00412483 lw s1,4(sp) +8000246c: 01010113 addi sp,sp,16 +80002470: 00008067 ret +80002474: 04077693 andi a3,a4,64 +80002478: 02069263 bnez a3,8000249c +8000247c: 04076713 ori a4,a4,64 +80002480: 00e7a023 sw a4,0(a5) +80002484: 12050073 sfence.vma a0 +80002488: 00c12083 lw ra,12(sp) +8000248c: 00812403 lw s0,8(sp) +80002490: 00412483 lw s1,4(sp) +80002494: 01010113 addi sp,sp,16 +80002498: 00008067 ret +8000249c: 08077693 andi a3,a4,128 +800024a0: 16069663 bnez a3,8000260c +800024a4: 00f00693 li a3,15 +800024a8: 16d59263 bne a1,a3,8000260c +800024ac: 08076713 ori a4,a4,128 +800024b0: 00e7a023 sw a4,0(a5) +800024b4: fd1ff06f j 80002484 +800024b8: 00003797 auipc a5,0x3 +800024bc: f207ac23 sw zero,-200(a5) # 800053f0 +800024c0: ef5ff06f j 800023b4 +800024c4: 04100513 li a0,65 +800024c8: 00001597 auipc a1,0x1 +800024cc: 81058593 addi a1,a1,-2032 # 80002cd8 +800024d0: fffff697 auipc a3,0xfffff +800024d4: b3068693 addi a3,a3,-1232 # 80001000 +800024d8: fffff617 auipc a2,0xfffff +800024dc: b6860613 addi a2,a2,-1176 # 80001040 +800024e0: 0006a703 lw a4,0(a3) +800024e4: 0046a783 lw a5,4(a3) +800024e8: 00050313 mv t1,a0 +800024ec: 00158593 addi a1,a1,1 +800024f0: 00f76733 or a4,a4,a5 +800024f4: 010103b7 lui t2,0x1010 +800024f8: 02070263 beqz a4,8000251c +800024fc: 00000793 li a5,0 +80002500: 00f62023 sw a5,0(a2) +80002504: 00000813 li a6,0 +80002508: 01062223 sw a6,4(a2) +8000250c: 0006a703 lw a4,0(a3) +80002510: 0046a783 lw a5,4(a3) +80002514: 00f76733 or a4,a4,a5 +80002518: fe0712e3 bnez a4,800024fc +8000251c: 0005c503 lbu a0,0(a1) +80002520: 0066a023 sw t1,0(a3) +80002524: 0076a223 sw t2,4(a3) +80002528: fa051ce3 bnez a0,800024e0 +8000252c: 00300513 li a0,3 +80002530: cf9ff0ef jal ra,80002228 +80002534: 04100513 li a0,65 +80002538: 00001597 auipc a1,0x1 +8000253c: 82c58593 addi a1,a1,-2004 # 80002d64 +80002540: fffff697 auipc a3,0xfffff +80002544: ac068693 addi a3,a3,-1344 # 80001000 +80002548: fffff617 auipc a2,0xfffff +8000254c: af860613 addi a2,a2,-1288 # 80001040 +80002550: 0006a703 lw a4,0(a3) +80002554: 0046a783 lw a5,4(a3) +80002558: 00050f13 mv t5,a0 +8000255c: 00158593 addi a1,a1,1 +80002560: 00f76733 or a4,a4,a5 +80002564: 01010fb7 lui t6,0x1010 +80002568: 02070263 beqz a4,8000258c +8000256c: 00000793 li a5,0 +80002570: 00f62023 sw a5,0(a2) +80002574: 00000813 li a6,0 +80002578: 01062223 sw a6,4(a2) +8000257c: 0006a703 lw a4,0(a3) +80002580: 0046a783 lw a5,4(a3) +80002584: 00f76733 or a4,a4,a5 +80002588: fe0712e3 bnez a4,8000256c +8000258c: 0005c503 lbu a0,0(a1) +80002590: 01e6a023 sw t5,0(a3) +80002594: 01f6a223 sw t6,4(a3) +80002598: fa051ce3 bnez a0,80002550 +8000259c: f91ff06f j 8000252c +800025a0: 04100513 li a0,65 +800025a4: 00000597 auipc a1,0x0 +800025a8: 7d858593 addi a1,a1,2008 # 80002d7c +800025ac: fffff697 auipc a3,0xfffff +800025b0: a5468693 addi a3,a3,-1452 # 80001000 +800025b4: fffff617 auipc a2,0xfffff +800025b8: a8c60613 addi a2,a2,-1396 # 80001040 +800025bc: 0006a703 lw a4,0(a3) +800025c0: 0046a783 lw a5,4(a3) +800025c4: 00050813 mv a6,a0 +800025c8: 00158593 addi a1,a1,1 +800025cc: 00f76733 or a4,a4,a5 +800025d0: 010108b7 lui a7,0x1010 +800025d4: 02070263 beqz a4,800025f8 +800025d8: 00000713 li a4,0 +800025dc: 00e62023 sw a4,0(a2) +800025e0: 00000793 li a5,0 +800025e4: 00f62223 sw a5,4(a2) +800025e8: 0006a703 lw a4,0(a3) +800025ec: 0046a783 lw a5,4(a3) +800025f0: 00f76733 or a4,a4,a5 +800025f4: fe0712e3 bnez a4,800025d8 +800025f8: 0005c503 lbu a0,0(a1) +800025fc: 0106a023 sw a6,0(a3) +80002600: 0116a223 sw a7,4(a3) +80002604: fa051ce3 bnez a0,800025bc +80002608: f25ff06f j 8000252c +8000260c: 04100793 li a5,65 +80002610: 00000597 auipc a1,0x0 +80002614: 70c58593 addi a1,a1,1804 # 80002d1c +80002618: fffff697 auipc a3,0xfffff +8000261c: 9e868693 addi a3,a3,-1560 # 80001000 +80002620: fffff617 auipc a2,0xfffff +80002624: a2060613 addi a2,a2,-1504 # 80001040 +80002628: 0006a803 lw a6,0(a3) +8000262c: 0046a883 lw a7,4(a3) +80002630: 00078413 mv s0,a5 +80002634: 00158593 addi a1,a1,1 +80002638: 01186833 or a6,a6,a7 +8000263c: 010104b7 lui s1,0x1010 +80002640: 02080263 beqz a6,80002664 +80002644: 00000793 li a5,0 +80002648: 00f62023 sw a5,0(a2) +8000264c: 00000813 li a6,0 +80002650: 01062223 sw a6,4(a2) +80002654: 0006a703 lw a4,0(a3) +80002658: 0046a783 lw a5,4(a3) +8000265c: 00f76733 or a4,a4,a5 +80002660: fe0712e3 bnez a4,80002644 +80002664: 0005c783 lbu a5,0(a1) +80002668: 0086a023 sw s0,0(a3) +8000266c: 0096a223 sw s1,4(a3) +80002670: fa079ce3 bnez a5,80002628 +80002674: eb9ff06f j 8000252c + +80002678 : +80002678: 08c52583 lw a1,140(a0) +8000267c: fb010113 addi sp,sp,-80 +80002680: 03412c23 sw s4,56(sp) +80002684: 04112623 sw ra,76(sp) +80002688: 04812423 sw s0,72(sp) +8000268c: 04912223 sw s1,68(sp) +80002690: 05212023 sw s2,64(sp) +80002694: 03312e23 sw s3,60(sp) +80002698: 03512a23 sw s5,52(sp) +8000269c: 03612823 sw s6,48(sp) +800026a0: 03712623 sw s7,44(sp) +800026a4: 03812423 sw s8,40(sp) +800026a8: 03912223 sw s9,36(sp) +800026ac: 03a12023 sw s10,32(sp) +800026b0: 01b12e23 sw s11,28(sp) +800026b4: 00800793 li a5,8 +800026b8: 00050a13 mv s4,a0 +800026bc: 16f58663 beq a1,a5,80002828 +800026c0: 00200793 li a5,2 +800026c4: 06f58063 beq a1,a5,80002724 +800026c8: ff458793 addi a5,a1,-12 +800026cc: 00100713 li a4,1 +800026d0: 00f77663 bleu a5,a4,800026dc +800026d4: 00f00793 li a5,15 +800026d8: 22f59a63 bne a1,a5,8000290c +800026dc: 088a2503 lw a0,136(s4) +800026e0: c65ff0ef jal ra,80002344 +800026e4: 04812403 lw s0,72(sp) +800026e8: 04c12083 lw ra,76(sp) +800026ec: 04412483 lw s1,68(sp) +800026f0: 04012903 lw s2,64(sp) +800026f4: 03c12983 lw s3,60(sp) +800026f8: 03412a83 lw s5,52(sp) +800026fc: 03012b03 lw s6,48(sp) +80002700: 02c12b83 lw s7,44(sp) +80002704: 02812c03 lw s8,40(sp) +80002708: 02412c83 lw s9,36(sp) +8000270c: 02012d03 lw s10,32(sp) +80002710: 01c12d83 lw s11,28(sp) +80002714: 000a0513 mv a0,s4 +80002718: 03812a03 lw s4,56(sp) +8000271c: 05010113 addi sp,sp,80 +80002720: 91dfd06f j 8000003c +80002724: 08452703 lw a4,132(a0) +80002728: 00377793 andi a5,a4,3 +8000272c: 08079863 bnez a5,800027bc +80002730: 008007ef jal a5,80002738 +80002734: 00301073 fssr zero +80002738: 00072703 lw a4,0(a4) +8000273c: 0007a783 lw a5,0(a5) +80002740: 06f70a63 beq a4,a5,800027b4 +80002744: 04100513 li a0,65 +80002748: 00000597 auipc a1,0x0 +8000274c: 6fc58593 addi a1,a1,1788 # 80002e44 +80002750: fffff697 auipc a3,0xfffff +80002754: 8b068693 addi a3,a3,-1872 # 80001000 +80002758: fffff617 auipc a2,0xfffff +8000275c: 8e860613 addi a2,a2,-1816 # 80001040 +80002760: 0006a703 lw a4,0(a3) +80002764: 0046a783 lw a5,4(a3) +80002768: 00050813 mv a6,a0 +8000276c: 00158593 addi a1,a1,1 +80002770: 00f76733 or a4,a4,a5 +80002774: 010108b7 lui a7,0x1010 +80002778: 02070263 beqz a4,8000279c +8000277c: 00000713 li a4,0 +80002780: 00e62023 sw a4,0(a2) +80002784: 00000793 li a5,0 +80002788: 00f62223 sw a5,4(a2) +8000278c: 0006a703 lw a4,0(a3) +80002790: 0046a783 lw a5,4(a3) +80002794: 00f76733 or a4,a4,a5 +80002798: fe0712e3 bnez a4,8000277c +8000279c: 0005c503 lbu a0,0(a1) +800027a0: 0106a023 sw a6,0(a3) +800027a4: 0116a223 sw a7,4(a3) +800027a8: fa051ce3 bnez a0,80002760 +800027ac: 00300513 li a0,3 +800027b0: a79ff0ef jal ra,80002228 +800027b4: 00100513 li a0,1 +800027b8: a71ff0ef jal ra,80002228 +800027bc: 00000597 auipc a1,0x0 +800027c0: 66458593 addi a1,a1,1636 # 80002e20 +800027c4: 04100613 li a2,65 +800027c8: fffff697 auipc a3,0xfffff +800027cc: 83868693 addi a3,a3,-1992 # 80001000 +800027d0: fffff517 auipc a0,0xfffff +800027d4: 87050513 addi a0,a0,-1936 # 80001040 +800027d8: 0006a703 lw a4,0(a3) +800027dc: 0046a783 lw a5,4(a3) +800027e0: 00060e13 mv t3,a2 +800027e4: 00158593 addi a1,a1,1 +800027e8: 00f76733 or a4,a4,a5 +800027ec: 01010eb7 lui t4,0x1010 +800027f0: 02070263 beqz a4,80002814 +800027f4: 00000793 li a5,0 +800027f8: 00f52023 sw a5,0(a0) +800027fc: 00000813 li a6,0 +80002800: 01052223 sw a6,4(a0) +80002804: 0006a703 lw a4,0(a3) +80002808: 0046a783 lw a5,4(a3) +8000280c: 00f76733 or a4,a4,a5 +80002810: fe0712e3 bnez a4,800027f4 +80002814: 0005c603 lbu a2,0(a1) +80002818: 01c6a023 sw t3,0(a3) +8000281c: 01d6a223 sw t4,4(a3) +80002820: fa061ce3 bnez a2,800027d8 +80002824: f89ff06f j 800027ac +80002828: 02852783 lw a5,40(a0) +8000282c: 00001a37 lui s4,0x1 +80002830: 00003b17 auipc s6,0x3 +80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 +80002838: 00f12223 sw a5,4(sp) +8000283c: 00000d17 auipc s10,0x0 +80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 +80002844: 00040cb7 lui s9,0x40 +80002848: ffc00c37 lui s8,0xffc00 +8000284c: 0003fab7 lui s5,0x3f +80002850: 01c0006f j 8000286c +80002854: 00f72223 sw a5,4(a4) +80002858: 00003717 auipc a4,0x3 +8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 +80002860: 000017b7 lui a5,0x1 +80002864: 00fa0a33 add s4,s4,a5 +80002868: 1b5a0463 beq s4,s5,80002a10 +8000286c: 00ca5713 srli a4,s4,0xc +80002870: 00371b93 slli s7,a4,0x3 +80002874: 017b0633 add a2,s6,s7 +80002878: 00062603 lw a2,0(a2) +8000287c: fe0602e3 beqz a2,80002860 +80002880: 40070713 addi a4,a4,1024 +80002884: 00271713 slli a4,a4,0x2 +80002888: 00ed0733 add a4,s10,a4 +8000288c: 00072703 lw a4,0(a4) +80002890: 04077613 andi a2,a4,64 +80002894: 12060863 beqz a2,800029c4 +80002898: 00e12623 sw a4,12(sp) +8000289c: 100cadf3 csrrs s11,sstatus,s9 +800028a0: 018a0833 add a6,s4,s8 +800028a4: 00001637 lui a2,0x1 +800028a8: 00080593 mv a1,a6 +800028ac: 000a0513 mv a0,s4 +800028b0: 01012423 sw a6,8(sp) +800028b4: 855ff0ef jal ra,80002108 +800028b8: 02050263 beqz a0,800028dc +800028bc: 00c12703 lw a4,12(sp) +800028c0: 00812803 lw a6,8(sp) +800028c4: 08077713 andi a4,a4,128 +800028c8: 0a070863 beqz a4,80002978 +800028cc: 00001637 lui a2,0x1 +800028d0: 00080593 mv a1,a6 +800028d4: 000a0513 mv a0,s4 +800028d8: f28ff0ef jal ra,80002000 +800028dc: 017b07b3 add a5,s6,s7 +800028e0: 100d9073 csrw sstatus,s11 +800028e4: 00003717 auipc a4,0x3 +800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 +800028ec: 00072703 lw a4,0(a4) +800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000> +800028f4: f60710e3 bnez a4,80002854 +800028f8: 00003717 auipc a4,0x3 +800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 +80002900: 00003717 auipc a4,0x3 +80002904: aef72a23 sw a5,-1292(a4) # 800053f4 +80002908: f59ff06f j 80002860 +8000290c: 04100593 li a1,65 +80002910: 00000617 auipc a2,0x0 +80002914: 56060613 addi a2,a2,1376 # 80002e70 +80002918: ffffe697 auipc a3,0xffffe +8000291c: 6e868693 addi a3,a3,1768 # 80001000 +80002920: ffffe517 auipc a0,0xffffe +80002924: 72050513 addi a0,a0,1824 # 80001040 +80002928: 0006a703 lw a4,0(a3) +8000292c: 0046a783 lw a5,4(a3) +80002930: 00058313 mv t1,a1 +80002934: 00160613 addi a2,a2,1 +80002938: 00f76733 or a4,a4,a5 +8000293c: 010103b7 lui t2,0x1010 +80002940: 02070263 beqz a4,80002964 +80002944: 00000793 li a5,0 +80002948: 00f52023 sw a5,0(a0) +8000294c: 00000813 li a6,0 +80002950: 01052223 sw a6,4(a0) +80002954: 0006a703 lw a4,0(a3) +80002958: 0046a783 lw a5,4(a3) +8000295c: 00f76733 or a4,a4,a5 +80002960: fe0712e3 bnez a4,80002944 +80002964: 00064583 lbu a1,0(a2) +80002968: 0066a023 sw t1,0(a3) +8000296c: 0076a223 sw t2,4(a3) +80002970: fa059ce3 bnez a1,80002928 +80002974: e39ff06f j 800027ac +80002978: 04100793 li a5,65 +8000297c: 00000617 auipc a2,0x0 +80002980: 47060613 addi a2,a2,1136 # 80002dec +80002984: ffffe697 auipc a3,0xffffe +80002988: 67c68693 addi a3,a3,1660 # 80001000 +8000298c: ffffe597 auipc a1,0xffffe +80002990: 6b458593 addi a1,a1,1716 # 80001040 +80002994: 00078413 mv s0,a5 +80002998: 00160613 addi a2,a2,1 +8000299c: 010104b7 lui s1,0x1010 +800029a0: 0006a703 lw a4,0(a3) +800029a4: 0046a783 lw a5,4(a3) +800029a8: 00f76733 or a4,a4,a5 +800029ac: 06070663 beqz a4,80002a18 +800029b0: 00000793 li a5,0 +800029b4: 00000813 li a6,0 +800029b8: 00f5a023 sw a5,0(a1) +800029bc: 0105a223 sw a6,4(a1) +800029c0: fe1ff06f j 800029a0 +800029c4: 04100793 li a5,65 +800029c8: 00000617 auipc a2,0x0 +800029cc: 3f060613 addi a2,a2,1008 # 80002db8 +800029d0: ffffe697 auipc a3,0xffffe +800029d4: 63068693 addi a3,a3,1584 # 80001000 +800029d8: ffffe597 auipc a1,0xffffe +800029dc: 66858593 addi a1,a1,1640 # 80001040 +800029e0: 00078913 mv s2,a5 +800029e4: 00160613 addi a2,a2,1 +800029e8: 010109b7 lui s3,0x1010 +800029ec: 0006a703 lw a4,0(a3) +800029f0: 0046a783 lw a5,4(a3) +800029f4: 00f76733 or a4,a4,a5 +800029f8: 02070a63 beqz a4,80002a2c +800029fc: 00000793 li a5,0 +80002a00: 00000813 li a6,0 +80002a04: 00f5a023 sw a5,0(a1) +80002a08: 0105a223 sw a6,4(a1) +80002a0c: fe1ff06f j 800029ec +80002a10: 00412503 lw a0,4(sp) +80002a14: 815ff0ef jal ra,80002228 +80002a18: 00064783 lbu a5,0(a2) +80002a1c: 0086a023 sw s0,0(a3) +80002a20: 0096a223 sw s1,4(a3) +80002a24: f60798e3 bnez a5,80002994 +80002a28: d85ff06f j 800027ac +80002a2c: 00064783 lbu a5,0(a2) +80002a30: 0126a023 sw s2,0(a3) +80002a34: 0136a223 sw s3,4(a3) +80002a38: fa0794e3 bnez a5,800029e0 +80002a3c: d71ff06f j 800027ac + +80002a40 : +80002a40: f14027f3 csrr a5,mhartid +80002a44: 14079a63 bnez a5,80002b98 +80002a48: 00001797 auipc a5,0x1 +80002a4c: 5b878793 addi a5,a5,1464 # 80004000 +80002a50: 00c7d793 srli a5,a5,0xc +80002a54: 00a79793 slli a5,a5,0xa +80002a58: 0017e793 ori a5,a5,1 +80002a5c: 00000697 auipc a3,0x0 +80002a60: 5af6a223 sw a5,1444(a3) # 80003000 +80002a64: 200007b7 lui a5,0x20000 +80002a68: 00000717 auipc a4,0x0 +80002a6c: 59870713 addi a4,a4,1432 # 80003000 +80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31> +80002a74: f6010113 addi sp,sp,-160 +80002a78: 00001697 auipc a3,0x1 +80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc +80002a80: 00c75793 srli a5,a4,0xc +80002a84: 80000737 lui a4,0x80000 +80002a88: 08112e23 sw ra,156(sp) +80002a8c: 08812c23 sw s0,152(sp) +80002a90: 00e7e7b3 or a5,a5,a4 +80002a94: 18079073 csrw satp,a5 +80002a98: 01f00793 li a5,31 +80002a9c: fff00713 li a4,-1 +80002aa0: 00000297 auipc t0,0x0 +80002aa4: 01428293 addi t0,t0,20 # 80002ab4 +80002aa8: 305292f3 csrrw t0,mtvec,t0 +80002aac: 3b071073 csrw pmpaddr0,a4 +80002ab0: 3a079073 csrw pmpcfg0,a5 +80002ab4: 7fbfd797 auipc a5,0x7fbfd +80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc> +80002abc: 10579073 csrw stvec,a5 +80002ac0: 340027f3 csrr a5,mscratch +80002ac4: 7fc00837 lui a6,0x7fc00 +80002ac8: 010787b3 add a5,a5,a6 +80002acc: 14079073 csrw sscratch,a5 +80002ad0: 0000b7b7 lui a5,0xb +80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00> +80002ad8: 30279073 csrw medeleg,a5 +80002adc: 0001e7b7 lui a5,0x1e +80002ae0: 30079073 csrw mstatus,a5 +80002ae4: 30405073 csrwi mie,0 +80002ae8: 7fc02797 auipc a5,0x7fc02 +80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08> +80002af0: 00003717 auipc a4,0x3 +80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 +80002af8: 7fc02797 auipc a5,0x7fc02 +80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8> +80002b00: 00003717 auipc a4,0x3 +80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 +80002b08: 000808b7 lui a7,0x80 +80002b0c: 00002717 auipc a4,0x2 +80002b10: 4f470713 addi a4,a4,1268 # 80005000 +80002b14: 00002317 auipc t1,0x2 +80002b18: 6e430313 addi t1,t1,1764 # 800051f8 +80002b1c: 02000793 li a5,32 +80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1> +80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8> +80002b28: 0017d613 srli a2,a5,0x1 +80002b2c: 011786b3 add a3,a5,a7 +80002b30: 00f647b3 xor a5,a2,a5 +80002b34: 010705b3 add a1,a4,a6 +80002b38: 00c69693 slli a3,a3,0xc +80002b3c: 00579793 slli a5,a5,0x5 +80002b40: 00d72023 sw a3,0(a4) +80002b44: 00b72223 sw a1,4(a4) +80002b48: 0207f793 andi a5,a5,32 +80002b4c: 00870713 addi a4,a4,8 +80002b50: 00f667b3 or a5,a2,a5 +80002b54: fce31ae3 bne t1,a4,80002b28 +80002b58: 00050413 mv s0,a0 +80002b5c: 09000613 li a2,144 +80002b60: 00000593 li a1,0 +80002b64: 00010513 mv a0,sp +80002b68: 00002797 auipc a5,0x2 +80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 +80002b70: cecff0ef jal ra,8000205c +80002b74: 800007b7 lui a5,0x80000 +80002b78: 00f40433 add s0,s0,a5 +80002b7c: 00010513 mv a0,sp +80002b80: 08812223 sw s0,132(sp) +80002b84: cb8fd0ef jal ra,8000003c +80002b88: 09c12083 lw ra,156(sp) +80002b8c: 09812403 lw s0,152(sp) +80002b90: 0a010113 addi sp,sp,160 +80002b94: 00008067 ret +80002b98: 081b87b7 lui a5,0x81b8 +80002b9c: 00080637 lui a2,0x80 +80002ba0: a6f78793 addi a5,a5,-1425 # 81b7a6f <_start-0x77e48591> +80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004> +80002ba8: 800005b7 lui a1,0x80000 +80002bac: 00c7f733 and a4,a5,a2 +80002bb0: 0017f693 andi a3,a5,1 +80002bb4: 00b70733 add a4,a4,a1 +80002bb8: 00068e63 beqz a3,80002bd4 +80002bbc: 0007202f amoadd.w zero,zero,(a4) +80002bc0: 0017d793 srli a5,a5,0x1 +80002bc4: 00c7f733 and a4,a5,a2 +80002bc8: 0017f693 andi a3,a5,1 +80002bcc: 00b70733 add a4,a4,a1 +80002bd0: fe0696e3 bnez a3,80002bbc +80002bd4: 00072003 lw zero,0(a4) +80002bd8: 0017d793 srli a5,a5,0x1 +80002bdc: fe9ff06f j 80002bc4 + +80002be0 : +80002be0: 01400093 li ra,20 +80002be4: 00600113 li sp,6 +80002be8: 0220ff33 remu t5,ra,sp +80002bec: 00200e93 li t4,2 +80002bf0: 00200193 li gp,2 +80002bf4: 0ddf1463 bne t5,t4,80002cbc + +80002bf8 : +80002bf8: fec00093 li ra,-20 +80002bfc: 00600113 li sp,6 +80002c00: 0220ff33 remu t5,ra,sp +80002c04: 00200e93 li t4,2 +80002c08: 00300193 li gp,3 +80002c0c: 0bdf1863 bne t5,t4,80002cbc + +80002c10 : +80002c10: 01400093 li ra,20 +80002c14: ffa00113 li sp,-6 +80002c18: 0220ff33 remu t5,ra,sp +80002c1c: 01400e93 li t4,20 +80002c20: 00400193 li gp,4 +80002c24: 09df1c63 bne t5,t4,80002cbc + +80002c28 : +80002c28: fec00093 li ra,-20 +80002c2c: ffa00113 li sp,-6 +80002c30: 0220ff33 remu t5,ra,sp +80002c34: fec00e93 li t4,-20 +80002c38: 00500193 li gp,5 +80002c3c: 09df1063 bne t5,t4,80002cbc + +80002c40 : +80002c40: 800000b7 lui ra,0x80000 +80002c44: 00100113 li sp,1 +80002c48: 0220ff33 remu t5,ra,sp +80002c4c: 00000e93 li t4,0 +80002c50: 00600193 li gp,6 +80002c54: 07df1463 bne t5,t4,80002cbc + +80002c58 : +80002c58: 800000b7 lui ra,0x80000 +80002c5c: fff00113 li sp,-1 +80002c60: 0220ff33 remu t5,ra,sp +80002c64: 80000eb7 lui t4,0x80000 +80002c68: 00700193 li gp,7 +80002c6c: 05df1863 bne t5,t4,80002cbc + +80002c70 : +80002c70: 800000b7 lui ra,0x80000 +80002c74: 00000113 li sp,0 +80002c78: 0220ff33 remu t5,ra,sp +80002c7c: 80000eb7 lui t4,0x80000 +80002c80: 00800193 li gp,8 +80002c84: 03df1c63 bne t5,t4,80002cbc + +80002c88 : +80002c88: 00100093 li ra,1 +80002c8c: 00000113 li sp,0 +80002c90: 0220ff33 remu t5,ra,sp +80002c94: 00100e93 li t4,1 +80002c98: 00900193 li gp,9 +80002c9c: 03df1063 bne t5,t4,80002cbc + +80002ca0 : +80002ca0: 00000093 li ra,0 +80002ca4: 00000113 li sp,0 +80002ca8: 0220ff33 remu t5,ra,sp +80002cac: 00000e93 li t4,0 +80002cb0: 00a00193 li gp,10 +80002cb4: 01df1463 bne t5,t4,80002cbc +80002cb8: 00301a63 bne zero,gp,80002ccc + +80002cbc : +80002cbc: 00119513 slli a0,gp,0x1 +80002cc0: 00050063 beqz a0,80002cc0 +80002cc4: 00156513 ori a0,a0,1 +80002cc8: 00000073 ecall + +80002ccc : +80002ccc: 00100513 li a0,1 +80002cd0: 00000073 ecall +80002cd4: c0001073 unimp diff --git a/Tests/isa/rv64mi-p-access b/Tests/isa/rv64mi-p-access new file mode 100644 index 0000000..8f6202d Binary files /dev/null and b/Tests/isa/rv64mi-p-access differ diff --git a/Tests/isa/rv64mi-p-access.dump b/Tests/isa/rv64mi-p-access.dump new file mode 100644 index 0000000..5b35e59 --- /dev/null +++ b/Tests/isa/rv64mi-p-access.dump @@ -0,0 +1,142 @@ + +rv64mi-p-access: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 158f0f13 addi t5,t5,344 # 80000178 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00000397 auipc t2,0x0 + 8000010c: 05038393 addi t2,t2,80 # 80000158 + 80000110: fff0029b addiw t0,zero,-1 + 80000114: 03f29293 slli t0,t0,0x3f + 80000118: 0072c2b3 xor t0,t0,t2 + 8000011c: 00200193 li gp,2 + 80000120: 00100313 li t1,1 + 80000124: 00000e17 auipc t3,0x0 + 80000128: 010e0e13 addi t3,t3,16 # 80000134 + 8000012c: 00000393 li t2,0 + 80000130: 000283e7 jalr t2,t0 + 80000134: 00300193 li gp,3 + 80000138: 00500313 li t1,5 + 8000013c: 00000e17 auipc t3,0x0 + 80000140: 014e0e13 addi t3,t3,20 # 80000150 + 80000144: 000e0393 mv t2,t3 + 80000148: 00028383 lb t2,0(t0) + 8000014c: 00c0006f j 80000158 + 80000150: 01c0006f j 8000016c + 80000154: 00301c63 bne zero,gp,8000016c + +0000000080000158 : + 80000158: 0ff0000f fence + 8000015c: 00018063 beqz gp,8000015c + 80000160: 00119193 slli gp,gp,0x1 + 80000164: 0011e193 ori gp,gp,1 + 80000168: 00000073 ecall + +000000008000016c : + 8000016c: 0ff0000f fence + 80000170: 00100193 li gp,1 + 80000174: 00000073 ecall + +0000000080000178 : + 80000178: 00200513 li a0,2 + 8000017c: 00a18863 beq gp,a0,8000018c + 80000180: 00300513 li a0,3 + 80000184: 00a18463 beq gp,a0,8000018c + 80000188: fd1ff06f j 80000158 + 8000018c: fdc396e3 bne t2,t3,80000158 + 80000190: 342023f3 csrr t2,mcause + 80000194: fc6392e3 bne t2,t1,80000158 + 80000198: 341e1073 csrw mepc,t3 + 8000019c: 30200073 mret + 800001a0: c0001073 unimp + 800001a4: 0000 unimp + 800001a6: 0000 unimp + 800001a8: 0000 unimp + 800001aa: 0000 unimp + 800001ac: 0000 unimp + 800001ae: 0000 unimp + 800001b0: 0000 unimp + 800001b2: 0000 unimp + 800001b4: 0000 unimp + 800001b6: 0000 unimp + 800001b8: 0000 unimp + 800001ba: 0000 unimp + 800001bc: 0000 unimp + 800001be: 0000 unimp + 800001c0: 0000 unimp + 800001c2: 0000 unimp diff --git a/Tests/isa/rv64mi-p-breakpoint b/Tests/isa/rv64mi-p-breakpoint new file mode 100644 index 0000000..c67fff1 Binary files /dev/null and b/Tests/isa/rv64mi-p-breakpoint differ diff --git a/Tests/isa/rv64mi-p-breakpoint.dump b/Tests/isa/rv64mi-p-breakpoint.dump new file mode 100644 index 0000000..d882b10 --- /dev/null +++ b/Tests/isa/rv64mi-p-breakpoint.dump @@ -0,0 +1,207 @@ + +rv64mi-p-breakpoint: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 210f0f13 addi t5,t5,528 # 80000230 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00200193 li gp,2 + 8000010c: 7a001073 csrw tselect,zero + 80000110: 7a0025f3 csrr a1,tselect + 80000114: 10b01863 bne zero,a1,80000224 + 80000118: 7a102573 csrr a0,tdata1 + 8000011c: 03c55513 srli a0,a0,0x3c + 80000120: 00200593 li a1,2 + 80000124: 10b51063 bne a0,a1,80000224 + 80000128: 00000617 auipc a2,0x0 + 8000012c: 02060613 addi a2,a2,32 # 80000148 + 80000130: 7a261073 csrw tdata2,a2 + 80000134: 04400513 li a0,68 + 80000138: 7a151073 csrw tdata1,a0 + 8000013c: 7a1025f3 csrr a1,tdata1 + 80000140: 7ff5f593 andi a1,a1,2047 + 80000144: 00b51863 bne a0,a1,80000154 + 80000148: 0c000463 beqz zero,80000210 + 8000014c: 00300193 li gp,3 + 80000150: 00062503 lw a0,0(a2) + 80000154: 00400193 li gp,4 + 80000158: 04100513 li a0,65 + 8000015c: 7a151073 csrw tdata1,a0 + 80000160: 7a1025f3 csrr a1,tdata1 + 80000164: 7ff5f593 andi a1,a1,2047 + 80000168: 02b51063 bne a0,a1,80000188 + 8000016c: 00002617 auipc a2,0x2 + 80000170: e9460613 addi a2,a2,-364 # 80002000 + 80000174: 7a261073 csrw tdata2,a2 + 80000178: 00062603 lw a2,0(a2) + 8000017c: 08060a63 beqz a2,80000210 + 80000180: 00500193 li gp,5 + 80000184: 00062023 sw zero,0(a2) + 80000188: 00600193 li gp,6 + 8000018c: 04200513 li a0,66 + 80000190: 7a151073 csrw tdata1,a0 + 80000194: 7a1025f3 csrr a1,tdata1 + 80000198: 7ff5f593 andi a1,a1,2047 + 8000019c: 06b51863 bne a0,a1,8000020c + 800001a0: 00c62023 sw a2,0(a2) + 800001a4: 00700193 li gp,7 + 800001a8: 00062603 lw a2,0(a2) + 800001ac: 06061263 bnez a2,80000210 + 800001b0: 00100513 li a0,1 + 800001b4: 7a051073 csrw tselect,a0 + 800001b8: 7a0025f3 csrr a1,tselect + 800001bc: 06b51463 bne a0,a1,80000224 + 800001c0: 7a102573 csrr a0,tdata1 + 800001c4: 03c55513 srli a0,a0,0x3c + 800001c8: 00200593 li a1,2 + 800001cc: 04b51c63 bne a0,a1,80000224 + 800001d0: 04100513 li a0,65 + 800001d4: 7a151073 csrw tdata1,a0 + 800001d8: 00002697 auipc a3,0x2 + 800001dc: e2c68693 addi a3,a3,-468 # 80002004 + 800001e0: 7a269073 csrw tdata2,a3 + 800001e4: 00800193 li gp,8 + 800001e8: 0006a683 lw a3,0(a3) + 800001ec: 02068263 beqz a3,80000210 + 800001f0: 00a00193 li gp,10 + 800001f4: 00002617 auipc a2,0x2 + 800001f8: e0c60613 addi a2,a2,-500 # 80002000 + 800001fc: 00c62023 sw a2,0(a2) + 80000200: 00b00193 li gp,11 + 80000204: 00062603 lw a2,0(a2) + 80000208: 00061463 bnez a2,80000210 + 8000020c: 00301c63 bne zero,gp,80000224 + +0000000080000210 : + 80000210: 0ff0000f fence + 80000214: 00018063 beqz gp,80000214 + 80000218: 00119193 slli gp,gp,0x1 + 8000021c: 0011e193 ori gp,gp,1 + 80000220: 00000073 ecall + +0000000080000224 : + 80000224: 0ff0000f fence + 80000228: 00100193 li gp,1 + 8000022c: 00000073 ecall + +0000000080000230 : + 80000230: 0011f293 andi t0,gp,1 + 80000234: fc029ee3 bnez t0,80000210 + 80000238: 00300293 li t0,3 + 8000023c: 34202373 csrr t1,mcause + 80000240: fc6298e3 bne t0,t1,80000210 + 80000244: 341022f3 csrr t0,mepc + 80000248: 00428293 addi t0,t0,4 + 8000024c: 34129073 csrw mepc,t0 + 80000250: 30200073 mret + 80000254: c0001073 unimp + 80000258: 0000 unimp + 8000025a: 0000 unimp + 8000025c: 0000 unimp + 8000025e: 0000 unimp + 80000260: 0000 unimp + 80000262: 0000 unimp + 80000264: 0000 unimp + 80000266: 0000 unimp + 80000268: 0000 unimp + 8000026a: 0000 unimp + 8000026c: 0000 unimp + 8000026e: 0000 unimp + 80000270: 0000 unimp + 80000272: 0000 unimp + 80000274: 0000 unimp + 80000276: 0000 unimp + 80000278: 0000 unimp + 8000027a: 0000 unimp + 8000027c: 0000 unimp + 8000027e: 0000 unimp + 80000280: 0000 unimp + 80000282: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 0000 unimp + +0000000080002004 : + 80002004: 0000 unimp + 80002006: 0000 unimp + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64mi-p-csr b/Tests/isa/rv64mi-p-csr new file mode 100644 index 0000000..4ac38ab Binary files /dev/null and b/Tests/isa/rv64mi-p-csr differ diff --git a/Tests/isa/rv64mi-p-csr.dump b/Tests/isa/rv64mi-p-csr.dump new file mode 100644 index 0000000..e2ccda2 --- /dev/null +++ b/Tests/isa/rv64mi-p-csr.dump @@ -0,0 +1,287 @@ + +rv64mi-p-csr: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 2a0f0f13 addi t5,t5,672 # 800002c0 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 000022b7 lui t0,0x2 + 8000010c: 8002829b addiw t0,t0,-2048 + 80000110: 3002b073 csrc mstatus,t0 + 80000114: 30002373 csrr t1,mstatus + 80000118: 0062f2b3 and t0,t0,t1 + 8000011c: 02029463 bnez t0,80000144 + +0000000080000120 : + 80000120: 30002573 csrr a0,mstatus + 80000124: 0030059b addiw a1,zero,3 + 80000128: 02059593 slli a1,a1,0x20 + 8000012c: 00b57533 and a0,a0,a1 + 80000130: 00100e9b addiw t4,zero,1 + 80000134: 021e9e93 slli t4,t4,0x21 + 80000138: 00d00193 li gp,13 + 8000013c: 17d51263 bne a0,t4,800002a0 + 80000140: 0200006f j 80000160 + +0000000080000144 : + 80000144: 30002573 csrr a0,mstatus + 80000148: 0030059b addiw a1,zero,3 + 8000014c: 02059593 slli a1,a1,0x20 + 80000150: 00b57533 and a0,a0,a1 + 80000154: 00000e93 li t4,0 + 80000158: 00e00193 li gp,14 + 8000015c: 15d51263 bne a0,t4,800002a0 + 80000160: 3401d073 csrwi mscratch,3 + +0000000080000164 : + 80000164: 34002573 csrr a0,mscratch + 80000168: 00300e93 li t4,3 + 8000016c: 00200193 li gp,2 + 80000170: 13d51863 bne a0,t4,800002a0 + +0000000080000174 : + 80000174: 3400f5f3 csrrci a1,mscratch,1 + 80000178: 00300e93 li t4,3 + 8000017c: 00300193 li gp,3 + 80000180: 13d59063 bne a1,t4,800002a0 + +0000000080000184 : + 80000184: 34026673 csrrsi a2,mscratch,4 + 80000188: 00200e93 li t4,2 + 8000018c: 00400193 li gp,4 + 80000190: 11d61863 bne a2,t4,800002a0 + +0000000080000194 : + 80000194: 340156f3 csrrwi a3,mscratch,2 + 80000198: 00600e93 li t4,6 + 8000019c: 00500193 li gp,5 + 800001a0: 11d69063 bne a3,t4,800002a0 + +00000000800001a4 : + 800001a4: 0bad2537 lui a0,0xbad2 + 800001a8: dea5051b addiw a0,a0,-534 + 800001ac: 340515f3 csrrw a1,mscratch,a0 + 800001b0: 00200e93 li t4,2 + 800001b4: 00600193 li gp,6 + 800001b8: 0fd59463 bne a1,t4,800002a0 + +00000000800001bc : + 800001bc: 00002537 lui a0,0x2 + 800001c0: dea5051b addiw a0,a0,-534 + 800001c4: 34053573 csrrc a0,mscratch,a0 + 800001c8: 0bad2eb7 lui t4,0xbad2 + 800001cc: deae8e9b addiw t4,t4,-534 + 800001d0: 00700193 li gp,7 + 800001d4: 0dd51663 bne a0,t4,800002a0 + +00000000800001d8 : + 800001d8: 0000c537 lui a0,0xc + 800001dc: eef5051b addiw a0,a0,-273 + 800001e0: 34052573 csrrs a0,mscratch,a0 + 800001e4: 0bad0eb7 lui t4,0xbad0 + 800001e8: 00800193 li gp,8 + 800001ec: 0bd51a63 bne a0,t4,800002a0 + +00000000800001f0 : + 800001f0: 34002573 csrr a0,mscratch + 800001f4: 0badceb7 lui t4,0xbadc + 800001f8: eefe8e9b addiw t4,t4,-273 + 800001fc: 00900193 li gp,9 + 80000200: 0bd51063 bne a0,t4,800002a0 + 80000204: 30102573 csrr a0,misa + 80000208: 02057513 andi a0,a0,32 + 8000020c: 02050863 beqz a0,8000023c + 80000210: 000065b7 lui a1,0x6 + 80000214: 3005a073 csrs mstatus,a1 + 80000218: f0000053 fmv.w.x ft0,zero + 8000021c: 3005b073 csrc mstatus,a1 + 80000220: 00002597 auipc a1,0x2 + 80000224: de058593 addi a1,a1,-544 # 80002000 + +0000000080000228 : + 80000228: 0005a027 fsw ft0,0(a1) + 8000022c: 0005a503 lw a0,0(a1) + 80000230: 00100e93 li t4,1 + 80000234: 00a00193 li gp,10 + 80000238: 07d51463 bne a0,t4,800002a0 + 8000023c: 30102573 csrr a0,misa + 80000240: 01455513 srli a0,a0,0x14 + 80000244: 00157513 andi a0,a0,1 + 80000248: 04050463 beqz a0,80000290 + 8000024c: 000022b7 lui t0,0x2 + 80000250: 8002829b addiw t0,t0,-2048 + 80000254: 3002b073 csrc mstatus,t0 + 80000258: 00000297 auipc t0,0x0 + 8000025c: 01028293 addi t0,t0,16 # 80000268 + 80000260: 34129073 csrw mepc,t0 + 80000264: 30200073 mret + +0000000080000268 : + 80000268: 0ff00513 li a0,255 + 8000026c: c0001573 csrrw a0,cycle,zero + 80000270: 0ff00e93 li t4,255 + 80000274: 00b00193 li gp,11 + 80000278: 03d51463 bne a0,t4,800002a0 + +000000008000027c : + 8000027c: 0ff00513 li a0,255 + 80000280: 30002573 csrr a0,mstatus + 80000284: 0ff00e93 li t4,255 + 80000288: 00c00193 li gp,12 + 8000028c: 01d51a63 bne a0,t4,800002a0 + +0000000080000290 : + 80000290: 0ff0000f fence + 80000294: 00100193 li gp,1 + 80000298: 00000073 ecall + 8000029c: 00301c63 bne zero,gp,800002b4 + +00000000800002a0 : + 800002a0: 0ff0000f fence + 800002a4: 00018063 beqz gp,800002a4 + 800002a8: 00119193 slli gp,gp,0x1 + 800002ac: 0011e193 ori gp,gp,1 + 800002b0: 00000073 ecall + +00000000800002b4 : + 800002b4: 0ff0000f fence + 800002b8: 00100193 li gp,1 + 800002bc: 00000073 ecall + +00000000800002c0 : + 800002c0: 00900293 li t0,9 + 800002c4: 0051e663 bltu gp,t0,800002d0 + 800002c8: 00b00293 li t0,11 + 800002cc: 0032fe63 bleu gp,t0,800002e8 + 800002d0: 342022f3 csrr t0,mcause + 800002d4: 00800313 li t1,8 + 800002d8: fc6294e3 bne t0,t1,800002a0 + 800002dc: 0ff0000f fence + 800002e0: 00100193 li gp,1 + 800002e4: 00000073 ecall + +00000000800002e8 : + 800002e8: 342022f3 csrr t0,mcause + 800002ec: 00200313 li t1,2 + 800002f0: fa6298e3 bne t0,t1,800002a0 + 800002f4: 341022f3 csrr t0,mepc + 800002f8: 00428293 addi t0,t0,4 + 800002fc: 34129073 csrw mepc,t0 + 80000300: 30200073 mret + 80000304: c0001073 unimp + 80000308: 0000 unimp + 8000030a: 0000 unimp + 8000030c: 0000 unimp + 8000030e: 0000 unimp + 80000310: 0000 unimp + 80000312: 0000 unimp + 80000314: 0000 unimp + 80000316: 0000 unimp + 80000318: 0000 unimp + 8000031a: 0000 unimp + 8000031c: 0000 unimp + 8000031e: 0000 unimp + 80000320: 0000 unimp + 80000322: 0000 unimp + 80000324: 0000 unimp + 80000326: 0000 unimp + 80000328: 0000 unimp + 8000032a: 0000 unimp + 8000032c: 0000 unimp + 8000032e: 0000 unimp + 80000330: 0000 unimp + 80000332: 0000 unimp + 80000334: 0000 unimp + 80000336: 0000 unimp + 80000338: 0000 unimp + 8000033a: 0000 unimp + 8000033c: 0000 unimp + 8000033e: 0000 unimp + 80000340: 0000 unimp + 80000342: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0001 nop + 80002002: 0000 unimp + 80002004: 0000 unimp + 80002006: 0000 unimp + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64mi-p-illegal b/Tests/isa/rv64mi-p-illegal new file mode 100644 index 0000000..104bd5c Binary files /dev/null and b/Tests/isa/rv64mi-p-illegal differ diff --git a/Tests/isa/rv64mi-p-illegal.dump b/Tests/isa/rv64mi-p-illegal.dump new file mode 100644 index 0000000..56485c4 --- /dev/null +++ b/Tests/isa/rv64mi-p-illegal.dump @@ -0,0 +1,383 @@ + +rv64mi-p-illegal: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 2e0f0f13 addi t5,t5,736 # 80000300 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00200193 li gp,2 + +000000008000010c : + 8000010c: 0000 unimp + 8000010e: 0000 unimp + 80000110: 0f40006f j 80000204 + 80000114: 000022b7 lui t0,0x2 + 80000118: 8002829b addiw t0,t0,-2048 + 8000011c: 3002b073 csrc mstatus,t0 + 80000120: 00001337 lui t1,0x1 + 80000124: 8003031b addiw t1,t1,-2048 + 80000128: 30032073 csrs mstatus,t1 + 8000012c: 300023f3 csrr t2,mstatus + 80000130: 0053f3b3 and t2,t2,t0 + 80000134: 0e731263 bne t1,t2,80000218 + +0000000080000138 : + 80000138: 34415073 csrwi mip,2 + 8000013c: 30415073 csrwi mie,2 + 80000140: 00000297 auipc t0,0x0 + 80000144: 1c128293 addi t0,t0,449 # 80000301 + 80000148: 30529473 csrrw s0,mtvec,t0 + 8000014c: 305022f3 csrr t0,mtvec + 80000150: 0012f293 andi t0,t0,1 + 80000154: 00028663 beqz t0,80000160 + 80000158: 30046073 csrsi mstatus,8 + 8000015c: 0000006f j 8000015c + +0000000080000160 : + 80000160: 30541073 csrw mtvec,s0 + 80000164: 30315073 csrwi mideleg,2 + 80000168: 00000297 auipc t0,0x0 + 8000016c: 02828293 addi t0,t0,40 # 80000190 + 80000170: 34129073 csrw mepc,t0 + 80000174: 000022b7 lui t0,0x2 + 80000178: 8002829b addiw t0,t0,-2048 + 8000017c: 3002b073 csrc mstatus,t0 + 80000180: 00001337 lui t1,0x1 + 80000184: 8003031b addiw t1,t1,-2048 + 80000188: 30032073 csrs mstatus,t1 + 8000018c: 30200073 mret + 80000190: 10500073 wfi + +0000000080000194 : + 80000194: 0000 unimp + 80000196: 0000 unimp + 80000198: 06c0006f j 80000204 + +000000008000019c : + 8000019c: 10500073 wfi + 800001a0: 0640006f j 80000204 + 800001a4: 12000073 sfence.vma + 800001a8: 180022f3 csrr t0,satp + +00000000800001ac : + 800001ac: 0000 unimp + 800001ae: 0000 unimp + 800001b0: 0540006f j 80000204 + +00000000800001b4 : + 800001b4: 12000073 sfence.vma + 800001b8: 04c0006f j 80000204 + +00000000800001bc : + 800001bc: 180022f3 csrr t0,satp + 800001c0: 0440006f j 80000204 + 800001c4: 00000297 auipc t0,0x0 + 800001c8: 02028293 addi t0,t0,32 # 800001e4 + 800001cc: 14129073 csrw sepc,t0 + 800001d0: 10000293 li t0,256 + 800001d4: 1002a073 csrs sstatus,t0 + 800001d8: 02000293 li t0,32 + 800001dc: 1002b073 csrc sstatus,t0 + 800001e0: 10200073 sret + +00000000800001e4 : + 800001e4: 0000 unimp + 800001e6: 0000 unimp + 800001e8: 01c0006f j 80000204 + 800001ec: 00000297 auipc t0,0x0 + 800001f0: 01028293 addi t0,t0,16 # 800001fc + 800001f4: 14129073 csrw sepc,t0 + +00000000800001f8 : + 800001f8: 10200073 sret + 800001fc: 0080006f j 80000204 + 80000200: 00301c63 bne zero,gp,80000218 + +0000000080000204 : + 80000204: 0ff0000f fence + 80000208: 00018063 beqz gp,80000208 + 8000020c: 00119193 slli gp,gp,0x1 + 80000210: 0011e193 ori gp,gp,1 + 80000214: 00000073 ecall + +0000000080000218 : + 80000218: 0ff0000f fence + 8000021c: 00100193 li gp,1 + 80000220: 00000073 ecall + 80000224: 00000013 nop + 80000228: 00000013 nop + 8000022c: 00000013 nop + 80000230: 00000013 nop + 80000234: 00000013 nop + 80000238: 00000013 nop + 8000023c: 00000013 nop + 80000240: 00000013 nop + 80000244: 00000013 nop + 80000248: 00000013 nop + 8000024c: 00000013 nop + 80000250: 00000013 nop + 80000254: 00000013 nop + 80000258: 00000013 nop + 8000025c: 00000013 nop + 80000260: 00000013 nop + 80000264: 00000013 nop + 80000268: 00000013 nop + 8000026c: 00000013 nop + 80000270: 00000013 nop + 80000274: 00000013 nop + 80000278: 00000013 nop + 8000027c: 00000013 nop + 80000280: 00000013 nop + 80000284: 00000013 nop + 80000288: 00000013 nop + 8000028c: 00000013 nop + 80000290: 00000013 nop + 80000294: 00000013 nop + 80000298: 00000013 nop + 8000029c: 00000013 nop + 800002a0: 00000013 nop + 800002a4: 00000013 nop + 800002a8: 00000013 nop + 800002ac: 00000013 nop + 800002b0: 00000013 nop + 800002b4: 00000013 nop + 800002b8: 00000013 nop + 800002bc: 00000013 nop + 800002c0: 00000013 nop + 800002c4: 00000013 nop + 800002c8: 00000013 nop + 800002cc: 00000013 nop + 800002d0: 00000013 nop + 800002d4: 00000013 nop + 800002d8: 00000013 nop + 800002dc: 00000013 nop + 800002e0: 00000013 nop + 800002e4: 00000013 nop + 800002e8: 00000013 nop + 800002ec: 00000013 nop + 800002f0: 00000013 nop + 800002f4: 00000013 nop + 800002f8: 00000013 nop + 800002fc: 00000013 nop + +0000000080000300 : + 80000300: 0400006f j 80000340 + 80000304: e5dff06f j 80000160 + 80000308: efdff06f j 80000204 + 8000030c: ef9ff06f j 80000204 + 80000310: ef5ff06f j 80000204 + 80000314: ef1ff06f j 80000204 + 80000318: eedff06f j 80000204 + 8000031c: ee9ff06f j 80000204 + 80000320: ee5ff06f j 80000204 + 80000324: ee1ff06f j 80000204 + 80000328: eddff06f j 80000204 + 8000032c: ed9ff06f j 80000204 + 80000330: ed5ff06f j 80000204 + 80000334: ed1ff06f j 80000204 + 80000338: ecdff06f j 80000204 + 8000033c: ec9ff06f j 80000204 + +0000000080000340 : + 80000340: 00200313 li t1,2 + 80000344: 342022f3 csrr t0,mcause + 80000348: ea629ee3 bne t0,t1,80000204 + 8000034c: 341022f3 csrr t0,mepc + 80000350: 343023f3 csrr t2,mbadaddr + 80000354: 00038c63 beqz t2,8000036c + 80000358: 0002de03 lhu t3,0(t0) + 8000035c: 0022de83 lhu t4,2(t0) + 80000360: 010e9e93 slli t4,t4,0x10 + 80000364: 01de6e33 or t3,t3,t4 + 80000368: e9c39ee3 bne t2,t3,80000204 + 8000036c: 00000317 auipc t1,0x0 + 80000370: da030313 addi t1,t1,-608 # 8000010c + 80000374: 04628e63 beq t0,t1,800003d0 + 80000378: 00000317 auipc t1,0x0 + 8000037c: e1c30313 addi t1,t1,-484 # 80000194 + 80000380: 04628e63 beq t0,t1,800003dc + 80000384: 00000317 auipc t1,0x0 + 80000388: e1830313 addi t1,t1,-488 # 8000019c + 8000038c: 04628263 beq t0,t1,800003d0 + 80000390: 00000317 auipc t1,0x0 + 80000394: e1c30313 addi t1,t1,-484 # 800001ac + 80000398: 04628863 beq t0,t1,800003e8 + 8000039c: 00000317 auipc t1,0x0 + 800003a0: e1830313 addi t1,t1,-488 # 800001b4 + 800003a4: 02628663 beq t0,t1,800003d0 + 800003a8: 00000317 auipc t1,0x0 + 800003ac: e1430313 addi t1,t1,-492 # 800001bc + 800003b0: 02628063 beq t0,t1,800003d0 + 800003b4: 00000317 auipc t1,0x0 + 800003b8: e3030313 addi t1,t1,-464 # 800001e4 + 800003bc: 02628c63 beq t0,t1,800003f4 + 800003c0: 00000317 auipc t1,0x0 + 800003c4: e3830313 addi t1,t1,-456 # 800001f8 + 800003c8: 02628c63 beq t0,t1,80000400 + 800003cc: e39ff06f j 80000204 + 800003d0: 00828293 addi t0,t0,8 + 800003d4: 34129073 csrw mepc,t0 + 800003d8: 30200073 mret + 800003dc: 00200337 lui t1,0x200 + 800003e0: 30032073 csrs mstatus,t1 + 800003e4: fedff06f j 800003d0 + 800003e8: 00100337 lui t1,0x100 + 800003ec: 30032073 csrs mstatus,t1 + 800003f0: fe1ff06f j 800003d0 + 800003f4: 00400337 lui t1,0x400 + 800003f8: 30032073 csrs mstatus,t1 + 800003fc: fd5ff06f j 800003d0 + 80000400: fd1ff06f j 800003d0 + 80000404: c0001073 unimp + 80000408: 0000 unimp + 8000040a: 0000 unimp + 8000040c: 0000 unimp + 8000040e: 0000 unimp + 80000410: 0000 unimp + 80000412: 0000 unimp + 80000414: 0000 unimp + 80000416: 0000 unimp + 80000418: 0000 unimp + 8000041a: 0000 unimp + 8000041c: 0000 unimp + 8000041e: 0000 unimp + 80000420: 0000 unimp + 80000422: 0000 unimp + 80000424: 0000 unimp + 80000426: 0000 unimp + 80000428: 0000 unimp + 8000042a: 0000 unimp + 8000042c: 0000 unimp + 8000042e: 0000 unimp + 80000430: 0000 unimp + 80000432: 0000 unimp + 80000434: 0000 unimp + 80000436: 0000 unimp + 80000438: 0000 unimp + 8000043a: 0000 unimp + 8000043c: 0000 unimp + 8000043e: 0000 unimp + 80000440: 0000 unimp + 80000442: 0000 unimp + 80000444: 0000 unimp + 80000446: 0000 unimp + 80000448: 0000 unimp + 8000044a: 0000 unimp + 8000044c: 0000 unimp + 8000044e: 0000 unimp + 80000450: 0000 unimp + 80000452: 0000 unimp + 80000454: 0000 unimp + 80000456: 0000 unimp + 80000458: 0000 unimp + 8000045a: 0000 unimp + 8000045c: 0000 unimp + 8000045e: 0000 unimp + 80000460: 0000 unimp + 80000462: 0000 unimp + 80000464: 0000 unimp + 80000466: 0000 unimp + 80000468: 0000 unimp + 8000046a: 0000 unimp + 8000046c: 0000 unimp + 8000046e: 0000 unimp + 80000470: 0000 unimp + 80000472: 0000 unimp + 80000474: 0000 unimp + 80000476: 0000 unimp + 80000478: 0000 unimp + 8000047a: 0000 unimp + 8000047c: 0000 unimp + 8000047e: 0000 unimp + 80000480: 0000 unimp + 80000482: 0000 unimp + 80000484: 0000 unimp + 80000486: 0000 unimp + 80000488: 0000 unimp + 8000048a: 0000 unimp + 8000048c: 0000 unimp + 8000048e: 0000 unimp + 80000490: 0000 unimp + 80000492: 0000 unimp + 80000494: 0000 unimp + 80000496: 0000 unimp + 80000498: 0000 unimp + 8000049a: 0000 unimp + 8000049c: 0000 unimp + 8000049e: 0000 unimp + 800004a0: 0000 unimp + 800004a2: 0000 unimp diff --git a/Tests/isa/rv64mi-p-ma_addr b/Tests/isa/rv64mi-p-ma_addr new file mode 100644 index 0000000..ca3d336 Binary files /dev/null and b/Tests/isa/rv64mi-p-ma_addr differ diff --git a/Tests/isa/rv64mi-p-ma_addr.dump b/Tests/isa/rv64mi-p-ma_addr.dump new file mode 100644 index 0000000..b559567 --- /dev/null +++ b/Tests/isa/rv64mi-p-ma_addr.dump @@ -0,0 +1,563 @@ + +rv64mi-p-ma_addr: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 5e8f0f13 addi t5,t5,1512 # 80000608 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00002417 auipc s0,0x2 + 8000010c: ef840413 addi s0,s0,-264 # 80002000 + 80000110: 00400493 li s1,4 + 80000114: 00200193 li gp,2 + 80000118: 00000397 auipc t2,0x0 + 8000011c: 01c38393 addi t2,t2,28 # 80000134 + 80000120: 00140313 addi t1,s0,1 + 80000124: 00141303 lh t1,1(s0) + 80000128: ffffc3b7 lui t2,0xffffc + 8000012c: bcc3839b addiw t2,t2,-1076 + 80000130: 4a731c63 bne t1,t2,800005e8 + 80000134: 00300193 li gp,3 + 80000138: 00000397 auipc t2,0x0 + 8000013c: 01c38393 addi t2,t2,28 # 80000154 + 80000140: 00140313 addi t1,s0,1 + 80000144: 00145303 lhu t1,1(s0) + 80000148: 0000c3b7 lui t2,0xc + 8000014c: bcc3839b addiw t2,t2,-1076 + 80000150: 48731c63 bne t1,t2,800005e8 + 80000154: 00400193 li gp,4 + 80000158: 00000397 auipc t2,0x0 + 8000015c: 01c38393 addi t2,t2,28 # 80000174 + 80000160: 00140313 addi t1,s0,1 + 80000164: 00142303 lw t1,1(s0) + 80000168: 99aac3b7 lui t2,0x99aac + 8000016c: bcc3839b addiw t2,t2,-1076 + 80000170: 46731c63 bne t1,t2,800005e8 + 80000174: 00500193 li gp,5 + 80000178: 00000397 auipc t2,0x0 + 8000017c: 01c38393 addi t2,t2,28 # 80000194 + 80000180: 00240313 addi t1,s0,2 + 80000184: 00242303 lw t1,2(s0) + 80000188: 8899b3b7 lui t2,0x8899b + 8000018c: abb3839b addiw t2,t2,-1349 + 80000190: 44731c63 bne t1,t2,800005e8 + 80000194: 00600193 li gp,6 + 80000198: 00000397 auipc t2,0x0 + 8000019c: 01c38393 addi t2,t2,28 # 800001b4 + 800001a0: 00340313 addi t1,s0,3 + 800001a4: 00342303 lw t1,3(s0) + 800001a8: 7788a3b7 lui t2,0x7788a + 800001ac: 9aa3839b addiw t2,t2,-1622 + 800001b0: 42731c63 bne t1,t2,800005e8 + 800001b4: 00700193 li gp,7 + 800001b8: 00000397 auipc t2,0x0 + 800001bc: 02438393 addi t2,t2,36 # 800001dc + 800001c0: 00140313 addi t1,s0,1 + 800001c4: 00146303 lwu t1,1(s0) + 800001c8: 000263b7 lui t2,0x26 + 800001cc: 6ab3839b addiw t2,t2,1707 + 800001d0: 00e39393 slli t2,t2,0xe + 800001d4: bcc38393 addi t2,t2,-1076 # 25bcc <_start-0x7ffda434> + 800001d8: 40731863 bne t1,t2,800005e8 + 800001dc: 00800193 li gp,8 + 800001e0: 00000397 auipc t2,0x0 + 800001e4: 02438393 addi t2,t2,36 # 80000204 + 800001e8: 00240313 addi t1,s0,2 + 800001ec: 00246303 lwu t1,2(s0) + 800001f0: 000893b7 lui t2,0x89 + 800001f4: 99b3839b addiw t2,t2,-1637 + 800001f8: 00c39393 slli t2,t2,0xc + 800001fc: abb38393 addi t2,t2,-1349 # 88abb <_start-0x7ff77545> + 80000200: 3e731463 bne t1,t2,800005e8 + 80000204: 00900193 li gp,9 + 80000208: 00000397 auipc t2,0x0 + 8000020c: 01c38393 addi t2,t2,28 # 80000224 + 80000210: 00340313 addi t1,s0,3 + 80000214: 00346303 lwu t1,3(s0) + 80000218: 7788a3b7 lui t2,0x7788a + 8000021c: 9aa3839b addiw t2,t2,-1622 + 80000220: 3c731463 bne t1,t2,800005e8 + 80000224: 00a00193 li gp,10 + 80000228: 00000397 auipc t2,0x0 + 8000022c: 03438393 addi t2,t2,52 # 8000025c + 80000230: 00140313 addi t1,s0,1 + 80000234: 00143303 ld t1,1(s0) + 80000238: 00aad3b7 lui t2,0xaad + 8000023c: cef3839b addiw t2,t2,-785 + 80000240: 00c39393 slli t2,t2,0xc + 80000244: 11338393 addi t2,t2,275 # aad113 <_start-0x7f552eed> + 80000248: 00d39393 slli t2,t2,0xd + 8000024c: 6ab38393 addi t2,t2,1707 + 80000250: 00e39393 slli t2,t2,0xe + 80000254: bcc38393 addi t2,t2,-1076 + 80000258: 38731863 bne t1,t2,800005e8 + 8000025c: 00b00193 li gp,11 + 80000260: 00000397 auipc t2,0x0 + 80000264: 03438393 addi t2,t2,52 # 80000294 + 80000268: 00240313 addi t1,s0,2 + 8000026c: 00243303 ld t1,2(s0) + 80000270: 044553b7 lui t2,0x4455 + 80000274: 6673839b addiw t2,t2,1639 + 80000278: 00c39393 slli t2,t2,0xc + 8000027c: 78938393 addi t2,t2,1929 # 4455789 <_start-0x7bbaa877> + 80000280: 00c39393 slli t2,t2,0xc + 80000284: 99b38393 addi t2,t2,-1637 + 80000288: 00c39393 slli t2,t2,0xc + 8000028c: abb38393 addi t2,t2,-1349 + 80000290: 34731c63 bne t1,t2,800005e8 + 80000294: 00c00193 li gp,12 + 80000298: 00000397 auipc t2,0x0 + 8000029c: 03438393 addi t2,t2,52 # 800002cc + 800002a0: 00340313 addi t1,s0,3 + 800002a4: 00343303 ld t1,3(s0) + 800002a8: 006693b7 lui t2,0x669 + 800002ac: 8ab3839b addiw t2,t2,-1877 + 800002b0: 00c39393 slli t2,t2,0xc + 800002b4: ccf38393 addi t2,t2,-817 # 668ccf <_start-0x7f997331> + 800002b8: 00e39393 slli t2,t2,0xe + 800002bc: c4538393 addi t2,t2,-955 + 800002c0: 00d39393 slli t2,t2,0xd + 800002c4: 9aa38393 addi t2,t2,-1622 + 800002c8: 32731063 bne t1,t2,800005e8 + 800002cc: 00d00193 li gp,13 + 800002d0: 00000397 auipc t2,0x0 + 800002d4: 03438393 addi t2,t2,52 # 80000304 + 800002d8: 00440313 addi t1,s0,4 + 800002dc: 00443303 ld t1,4(s0) + 800002e0: 0111a3b7 lui t2,0x111a + 800002e4: a233839b addiw t2,t2,-1501 + 800002e8: 00c39393 slli t2,t2,0xc + 800002ec: ab338393 addi t2,t2,-1357 # 1119ab3 <_start-0x7eee654d> + 800002f0: 00d39393 slli t2,t2,0xd + 800002f4: 77938393 addi t2,t2,1913 + 800002f8: 00c39393 slli t2,t2,0xc + 800002fc: 89938393 addi t2,t2,-1895 + 80000300: 2e731463 bne t1,t2,800005e8 + 80000304: 00e00193 li gp,14 + 80000308: 00000397 auipc t2,0x0 + 8000030c: 03438393 addi t2,t2,52 # 8000033c + 80000310: 00540313 addi t1,s0,5 + 80000314: 00543303 ld t1,5(s0) + 80000318: 004493b7 lui t2,0x449 + 8000031c: 8cd3839b addiw t2,t2,-1843 + 80000320: 00e39393 slli t2,t2,0xe + 80000324: 45538393 addi t2,t2,1109 # 449455 <_start-0x7fbb6bab> + 80000328: 00c39393 slli t2,t2,0xc + 8000032c: 66738393 addi t2,t2,1639 + 80000330: 00c39393 slli t2,t2,0xc + 80000334: 78838393 addi t2,t2,1928 + 80000338: 2a731863 bne t1,t2,800005e8 + 8000033c: 00f00193 li gp,15 + 80000340: 00000397 auipc t2,0x0 + 80000344: 03438393 addi t2,t2,52 # 80000374 + 80000348: 00640313 addi t1,s0,6 + 8000034c: 00643303 ld t1,6(s0) + 80000350: ffb843b7 lui t2,0xffb84 + 80000354: 4893839b addiw t2,t2,1161 + 80000358: 00c39393 slli t2,t2,0xc + 8000035c: cd138393 addi t2,t2,-815 # ffffffffffb83cd1 <_end+0xffffffff7fb81bc1> + 80000360: 00d39393 slli t2,t2,0xd + 80000364: 2ab38393 addi t2,t2,683 + 80000368: 00d39393 slli t2,t2,0xd + 8000036c: 67738393 addi t2,t2,1655 + 80000370: 26731c63 bne t1,t2,800005e8 + 80000374: 01000193 li gp,16 + 80000378: 00000397 auipc t2,0x0 + 8000037c: 02c38393 addi t2,t2,44 # 800003a4 + 80000380: 00740313 addi t1,s0,7 + 80000384: 00743303 ld t1,7(s0) + 80000388: ee1123b7 lui t2,0xee112 + 8000038c: 2333839b addiw t2,t2,563 + 80000390: 00c39393 slli t2,t2,0xc + 80000394: 44538393 addi t2,t2,1093 # ffffffffee112445 <_end+0xffffffff6e110335> + 80000398: 00c39393 slli t2,t2,0xc + 8000039c: 56638393 addi t2,t2,1382 + 800003a0: 24731463 bne t1,t2,800005e8 + 800003a4: 00600493 li s1,6 + 800003a8: 01600193 li gp,22 + 800003ac: 00000397 auipc t2,0x0 + 800003b0: 03038393 addi t2,t2,48 # 800003dc + 800003b4: 00140313 addi t1,s0,1 + 800003b8: 000410a3 sh zero,1(s0) + 800003bc: 00040303 lb t1,0(s0) + 800003c0: 22030463 beqz t1,800005e8 + 800003c4: 00340303 lb t1,3(s0) + 800003c8: 22030063 beqz t1,800005e8 + 800003cc: 00140303 lb t1,1(s0) + 800003d0: 20031c63 bnez t1,800005e8 + 800003d4: 00240303 lb t1,2(s0) + 800003d8: 20031863 bnez t1,800005e8 + 800003dc: 01700193 li gp,23 + 800003e0: 00000397 auipc t2,0x0 + 800003e4: 03038393 addi t2,t2,48 # 80000410 + 800003e8: 00540313 addi t1,s0,5 + 800003ec: 000422a3 sw zero,5(s0) + 800003f0: 00440303 lb t1,4(s0) + 800003f4: 1e030a63 beqz t1,800005e8 + 800003f8: 00940303 lb t1,9(s0) + 800003fc: 1e030663 beqz t1,800005e8 + 80000400: 00540303 lb t1,5(s0) + 80000404: 1e031263 bnez t1,800005e8 + 80000408: 00840303 lb t1,8(s0) + 8000040c: 1c031e63 bnez t1,800005e8 + 80000410: 01800193 li gp,24 + 80000414: 00000397 auipc t2,0x0 + 80000418: 03038393 addi t2,t2,48 # 80000444 + 8000041c: 00a40313 addi t1,s0,10 + 80000420: 00042523 sw zero,10(s0) + 80000424: 00940303 lb t1,9(s0) + 80000428: 1c030063 beqz t1,800005e8 + 8000042c: 00e40303 lb t1,14(s0) + 80000430: 1a030c63 beqz t1,800005e8 + 80000434: 00a40303 lb t1,10(s0) + 80000438: 1a031863 bnez t1,800005e8 + 8000043c: 00d40303 lb t1,13(s0) + 80000440: 1a031463 bnez t1,800005e8 + 80000444: 01900193 li gp,25 + 80000448: 00000397 auipc t2,0x0 + 8000044c: 03038393 addi t2,t2,48 # 80000478 + 80000450: 00f40313 addi t1,s0,15 + 80000454: 000427a3 sw zero,15(s0) + 80000458: 00e40303 lb t1,14(s0) + 8000045c: 18030663 beqz t1,800005e8 + 80000460: 01340303 lb t1,19(s0) + 80000464: 18030263 beqz t1,800005e8 + 80000468: 00f40303 lb t1,15(s0) + 8000046c: 16031e63 bnez t1,800005e8 + 80000470: 01240303 lb t1,18(s0) + 80000474: 16031a63 bnez t1,800005e8 + 80000478: 01a00193 li gp,26 + 8000047c: 00000397 auipc t2,0x0 + 80000480: 03038393 addi t2,t2,48 # 800004ac + 80000484: 01940313 addi t1,s0,25 + 80000488: 00043ca3 sd zero,25(s0) + 8000048c: 01840303 lb t1,24(s0) + 80000490: 14030c63 beqz t1,800005e8 + 80000494: 02140303 lb t1,33(s0) + 80000498: 14030863 beqz t1,800005e8 + 8000049c: 01940303 lb t1,25(s0) + 800004a0: 14031463 bnez t1,800005e8 + 800004a4: 02040303 lb t1,32(s0) + 800004a8: 14031063 bnez t1,800005e8 + 800004ac: 01b00193 li gp,27 + 800004b0: 00000397 auipc t2,0x0 + 800004b4: 03038393 addi t2,t2,48 # 800004e0 + 800004b8: 02240313 addi t1,s0,34 + 800004bc: 02043123 sd zero,34(s0) + 800004c0: 02140303 lb t1,33(s0) + 800004c4: 12030263 beqz t1,800005e8 + 800004c8: 02a40303 lb t1,42(s0) + 800004cc: 10030e63 beqz t1,800005e8 + 800004d0: 02240303 lb t1,34(s0) + 800004d4: 10031a63 bnez t1,800005e8 + 800004d8: 02940303 lb t1,41(s0) + 800004dc: 10031663 bnez t1,800005e8 + 800004e0: 01c00193 li gp,28 + 800004e4: 00000397 auipc t2,0x0 + 800004e8: 03038393 addi t2,t2,48 # 80000514 + 800004ec: 02b40313 addi t1,s0,43 + 800004f0: 020435a3 sd zero,43(s0) + 800004f4: 02a40303 lb t1,42(s0) + 800004f8: 0e030863 beqz t1,800005e8 + 800004fc: 03340303 lb t1,51(s0) + 80000500: 0e030463 beqz t1,800005e8 + 80000504: 02b40303 lb t1,43(s0) + 80000508: 0e031063 bnez t1,800005e8 + 8000050c: 03240303 lb t1,50(s0) + 80000510: 0c031c63 bnez t1,800005e8 + 80000514: 01d00193 li gp,29 + 80000518: 00000397 auipc t2,0x0 + 8000051c: 03038393 addi t2,t2,48 # 80000548 + 80000520: 03440313 addi t1,s0,52 + 80000524: 02043a23 sd zero,52(s0) + 80000528: 03340303 lb t1,51(s0) + 8000052c: 0a030e63 beqz t1,800005e8 + 80000530: 03c40303 lb t1,60(s0) + 80000534: 0a030a63 beqz t1,800005e8 + 80000538: 03440303 lb t1,52(s0) + 8000053c: 0a031663 bnez t1,800005e8 + 80000540: 03b40303 lb t1,59(s0) + 80000544: 0a031263 bnez t1,800005e8 + 80000548: 01e00193 li gp,30 + 8000054c: 00000397 auipc t2,0x0 + 80000550: 03038393 addi t2,t2,48 # 8000057c + 80000554: 03d40313 addi t1,s0,61 + 80000558: 02043ea3 sd zero,61(s0) + 8000055c: 03c40303 lb t1,60(s0) + 80000560: 08030463 beqz t1,800005e8 + 80000564: 04540303 lb t1,69(s0) + 80000568: 08030063 beqz t1,800005e8 + 8000056c: 03d40303 lb t1,61(s0) + 80000570: 06031c63 bnez t1,800005e8 + 80000574: 04440303 lb t1,68(s0) + 80000578: 06031863 bnez t1,800005e8 + 8000057c: 01f00193 li gp,31 + 80000580: 00000397 auipc t2,0x0 + 80000584: 03038393 addi t2,t2,48 # 800005b0 + 80000588: 04640313 addi t1,s0,70 + 8000058c: 04043323 sd zero,70(s0) + 80000590: 04540303 lb t1,69(s0) + 80000594: 04030a63 beqz t1,800005e8 + 80000598: 04e40303 lb t1,78(s0) + 8000059c: 04030663 beqz t1,800005e8 + 800005a0: 04640303 lb t1,70(s0) + 800005a4: 04031263 bnez t1,800005e8 + 800005a8: 04d40303 lb t1,77(s0) + 800005ac: 02031e63 bnez t1,800005e8 + 800005b0: 02000193 li gp,32 + 800005b4: 00000397 auipc t2,0x0 + 800005b8: 03038393 addi t2,t2,48 # 800005e4 + 800005bc: 04f40313 addi t1,s0,79 + 800005c0: 040437a3 sd zero,79(s0) + 800005c4: 04e40303 lb t1,78(s0) + 800005c8: 02030063 beqz t1,800005e8 + 800005cc: 05740303 lb t1,87(s0) + 800005d0: 00030c63 beqz t1,800005e8 + 800005d4: 04f40303 lb t1,79(s0) + 800005d8: 00031863 bnez t1,800005e8 + 800005dc: 05640303 lb t1,86(s0) + 800005e0: 00031463 bnez t1,800005e8 + 800005e4: 00301c63 bne zero,gp,800005fc + +00000000800005e8 : + 800005e8: 0ff0000f fence + 800005ec: 00018063 beqz gp,800005ec + 800005f0: 00119193 slli gp,gp,0x1 + 800005f4: 0011e193 ori gp,gp,1 + 800005f8: 00000073 ecall + +00000000800005fc : + 800005fc: 0ff0000f fence + 80000600: 00100193 li gp,1 + 80000604: 00000073 ecall + +0000000080000608 : + 80000608: 342022f3 csrr t0,mcause + 8000060c: fc929ee3 bne t0,s1,800005e8 + 80000610: 343022f3 csrr t0,mbadaddr + 80000614: fc629ae3 bne t0,t1,800005e8 + 80000618: 00028283 lb t0,0(t0) + 8000061c: fc0286e3 beqz t0,800005e8 + 80000620: 34139073 csrw mepc,t2 + 80000624: 30200073 mret + 80000628: c0001073 unimp + 8000062c: 0000 unimp + 8000062e: 0000 unimp + 80000630: 0000 unimp + 80000632: 0000 unimp + 80000634: 0000 unimp + 80000636: 0000 unimp + 80000638: 0000 unimp + 8000063a: 0000 unimp + 8000063c: 0000 unimp + 8000063e: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: ccdd beqz s1,800020be + 80002002: 8899aabb 0x8899aabb + 80002006: 44556677 0x44556677 + 8000200a: ee112233 0xee112233 + 8000200e: eeff 0xeeff + 80002010: 5050 lw a2,36(s0) + 80002012: 5050 lw a2,36(s0) + 80002014: 5050 lw a2,36(s0) + 80002016: 5050 lw a2,36(s0) + 80002018: 5050 lw a2,36(s0) + 8000201a: 5050 lw a2,36(s0) + 8000201c: 5050 lw a2,36(s0) + 8000201e: 5050 lw a2,36(s0) + 80002020: 5050 lw a2,36(s0) + 80002022: 5050 lw a2,36(s0) + 80002024: 5050 lw a2,36(s0) + 80002026: 5050 lw a2,36(s0) + 80002028: 5050 lw a2,36(s0) + 8000202a: 5050 lw a2,36(s0) + 8000202c: 5050 lw a2,36(s0) + 8000202e: 5050 lw a2,36(s0) + 80002030: 5050 lw a2,36(s0) + 80002032: 5050 lw a2,36(s0) + 80002034: 5050 lw a2,36(s0) + 80002036: 5050 lw a2,36(s0) + 80002038: 5050 lw a2,36(s0) + 8000203a: 5050 lw a2,36(s0) + 8000203c: 5050 lw a2,36(s0) + 8000203e: 5050 lw a2,36(s0) + 80002040: 5050 lw a2,36(s0) + 80002042: 5050 lw a2,36(s0) + 80002044: 5050 lw a2,36(s0) + 80002046: 5050 lw a2,36(s0) + 80002048: 5050 lw a2,36(s0) + 8000204a: 5050 lw a2,36(s0) + 8000204c: 5050 lw a2,36(s0) + 8000204e: 5050 lw a2,36(s0) + 80002050: 5050 lw a2,36(s0) + 80002052: 5050 lw a2,36(s0) + 80002054: 5050 lw a2,36(s0) + 80002056: 5050 lw a2,36(s0) + 80002058: 5050 lw a2,36(s0) + 8000205a: 5050 lw a2,36(s0) + 8000205c: 5050 lw a2,36(s0) + 8000205e: 5050 lw a2,36(s0) + 80002060: 5050 lw a2,36(s0) + 80002062: 5050 lw a2,36(s0) + 80002064: 5050 lw a2,36(s0) + 80002066: 5050 lw a2,36(s0) + 80002068: 5050 lw a2,36(s0) + 8000206a: 5050 lw a2,36(s0) + 8000206c: 5050 lw a2,36(s0) + 8000206e: 5050 lw a2,36(s0) + 80002070: 5050 lw a2,36(s0) + 80002072: 5050 lw a2,36(s0) + 80002074: 5050 lw a2,36(s0) + 80002076: 5050 lw a2,36(s0) + 80002078: 5050 lw a2,36(s0) + 8000207a: 5050 lw a2,36(s0) + 8000207c: 5050 lw a2,36(s0) + 8000207e: 5050 lw a2,36(s0) + 80002080: 5050 lw a2,36(s0) + 80002082: 5050 lw a2,36(s0) + 80002084: 5050 lw a2,36(s0) + 80002086: 5050 lw a2,36(s0) + 80002088: 5050 lw a2,36(s0) + 8000208a: 5050 lw a2,36(s0) + 8000208c: 5050 lw a2,36(s0) + 8000208e: 5050 lw a2,36(s0) + 80002090: 5050 lw a2,36(s0) + 80002092: 5050 lw a2,36(s0) + 80002094: 5050 lw a2,36(s0) + 80002096: 5050 lw a2,36(s0) + 80002098: 5050 lw a2,36(s0) + 8000209a: 5050 lw a2,36(s0) + 8000209c: 5050 lw a2,36(s0) + 8000209e: 5050 lw a2,36(s0) + 800020a0: 5050 lw a2,36(s0) + 800020a2: 5050 lw a2,36(s0) + 800020a4: 5050 lw a2,36(s0) + 800020a6: 5050 lw a2,36(s0) + 800020a8: 5050 lw a2,36(s0) + 800020aa: 5050 lw a2,36(s0) + 800020ac: 5050 lw a2,36(s0) + 800020ae: 5050 lw a2,36(s0) + 800020b0: 5050 lw a2,36(s0) + 800020b2: 5050 lw a2,36(s0) + 800020b4: 5050 lw a2,36(s0) + 800020b6: 5050 lw a2,36(s0) + 800020b8: 5050 lw a2,36(s0) + 800020ba: 5050 lw a2,36(s0) + 800020bc: 5050 lw a2,36(s0) + 800020be: 5050 lw a2,36(s0) + 800020c0: 5050 lw a2,36(s0) + 800020c2: 5050 lw a2,36(s0) + 800020c4: 5050 lw a2,36(s0) + 800020c6: 5050 lw a2,36(s0) + 800020c8: 5050 lw a2,36(s0) + 800020ca: 5050 lw a2,36(s0) + 800020cc: 5050 lw a2,36(s0) + 800020ce: 5050 lw a2,36(s0) + 800020d0: 5050 lw a2,36(s0) + 800020d2: 5050 lw a2,36(s0) + 800020d4: 5050 lw a2,36(s0) + 800020d6: 5050 lw a2,36(s0) + 800020d8: 5050 lw a2,36(s0) + 800020da: 5050 lw a2,36(s0) + 800020dc: 5050 lw a2,36(s0) + 800020de: 5050 lw a2,36(s0) + 800020e0: 5050 lw a2,36(s0) + 800020e2: 5050 lw a2,36(s0) + 800020e4: 5050 lw a2,36(s0) + 800020e6: 5050 lw a2,36(s0) + 800020e8: 5050 lw a2,36(s0) + 800020ea: 5050 lw a2,36(s0) + 800020ec: 5050 lw a2,36(s0) + 800020ee: 5050 lw a2,36(s0) + 800020f0: 5050 lw a2,36(s0) + 800020f2: 5050 lw a2,36(s0) + 800020f4: 5050 lw a2,36(s0) + 800020f6: 5050 lw a2,36(s0) + 800020f8: 5050 lw a2,36(s0) + 800020fa: 5050 lw a2,36(s0) + 800020fc: 5050 lw a2,36(s0) + 800020fe: 5050 lw a2,36(s0) + 80002100: 5050 lw a2,36(s0) + 80002102: 5050 lw a2,36(s0) + 80002104: 5050 lw a2,36(s0) + 80002106: 5050 lw a2,36(s0) + 80002108: 5050 lw a2,36(s0) + 8000210a: 5050 lw a2,36(s0) + 8000210c: 5050 lw a2,36(s0) + 8000210e: 0050 addi a2,sp,4 diff --git a/Tests/isa/rv64mi-p-ma_fetch b/Tests/isa/rv64mi-p-ma_fetch new file mode 100644 index 0000000..061b311 Binary files /dev/null and b/Tests/isa/rv64mi-p-ma_fetch differ diff --git a/Tests/isa/rv64mi-p-ma_fetch.dump b/Tests/isa/rv64mi-p-ma_fetch.dump new file mode 100644 index 0000000..6a5285a --- /dev/null +++ b/Tests/isa/rv64mi-p-ma_fetch.dump @@ -0,0 +1,219 @@ + +rv64mi-p-ma_fetch: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 208f0f13 addi t5,t5,520 # 80000228 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00200193 li gp,2 + 8000010c: 00000313 li t1,0 + 80000110: 00000297 auipc t0,0x0 + 80000114: 00c28293 addi t0,t0,12 # 8000011c + 80000118: 00228367 jalr t1,2(t0) + 8000011c: a011 j 80000120 + 8000011e: a019 j 80000124 + 80000120: 0e80006f j 80000208 + 80000124: 00300193 li gp,3 + 80000128: 00000297 auipc t0,0x0 + 8000012c: 00c28293 addi t0,t0,12 # 80000134 + 80000130: 00128367 jalr t1,1(t0) + 80000134: 0080006f j 8000013c + 80000138: 0d00006f j 80000208 + 8000013c: 00400193 li gp,4 + 80000140: 00000313 li t1,0 + 80000144: 00000297 auipc t0,0x0 + 80000148: 00c28293 addi t0,t0,12 # 80000150 + 8000014c: 00328367 jalr t1,3(t0) + 80000150: a011 j 80000154 + 80000152: a019 j 80000158 + 80000154: 0b40006f j 80000208 + 80000158: 00500193 li gp,5 + 8000015c: 00000313 li t1,0 + 80000160: 00000297 auipc t0,0x0 + 80000164: 00c28293 addi t0,t0,12 # 8000016c + 80000168: 0060036f jal t1,8000016e + 8000016c: a011 j 80000170 + 8000016e: a019 j 80000174 + 80000170: 0980006f j 80000208 + 80000174: 00600193 li gp,6 + 80000178: 00000313 li t1,0 + 8000017c: 00000297 auipc t0,0x0 + 80000180: 00c28293 addi t0,t0,12 # 80000188 + 80000184: 00000363 beqz zero,8000018a + 80000188: a011 j 8000018c + 8000018a: a019 j 80000190 + 8000018c: 07c0006f j 80000208 + 80000190: 00700193 li gp,7 + 80000194: 00001563 bnez zero,8000019e + 80000198: 00c0006f j 800001a4 + 8000019c: a009 j 8000019e + 8000019e: a009 j 800001a0 + 800001a0: 0680006f j 80000208 + 800001a4: 00800193 li gp,8 + 800001a8: 301023f3 csrr t2,misa + 800001ac: 0043f393 andi t2,t2,4 + 800001b0: 04038863 beqz t2,80000200 + 800001b4: 0001 nop + 800001b6: 30127073 csrci misa,4 + 800001ba: 0001 nop + 800001bc: 301023f3 csrr t2,misa + 800001c0: 0043f393 andi t2,t2,4 + 800001c4: 04038263 beqz t2,80000208 + 800001c8: 00000297 auipc t0,0x0 + 800001cc: 03428293 addi t0,t0,52 # 800001fc + 800001d0: ffe28293 addi t0,t0,-2 + 800001d4: 34129073 csrw mepc,t0 + 800001d8: 30127073 csrci misa,4 + 800001dc: 301023f3 csrr t2,misa + 800001e0: 0043f393 andi t2,t2,4 + 800001e4: 00039e63 bnez t2,80000200 + 800001e8: 000023b7 lui t2,0x2 + 800001ec: 8003839b addiw t2,t2,-2048 + 800001f0: 3003a073 csrs mstatus,t2 + 800001f4: 30200073 mret + 800001f8: 00000263 beqz zero,800001fc + 800001fc: 30126073 csrsi misa,4 + 80000200: 01c0006f j 8000021c + 80000204: 00301c63 bne zero,gp,8000021c + +0000000080000208 : + 80000208: 0ff0000f fence + 8000020c: 00018063 beqz gp,8000020c + 80000210: 00119193 slli gp,gp,0x1 + 80000214: 0011e193 ori gp,gp,1 + 80000218: 00000073 ecall + +000000008000021c : + 8000021c: 0ff0000f fence + 80000220: 00100193 li gp,1 + 80000224: 00000073 ecall + +0000000080000228 : + 80000228: 00200513 li a0,2 + 8000022c: 02a18063 beq gp,a0,8000024c + 80000230: 00400513 li a0,4 + 80000234: 00a18c63 beq gp,a0,8000024c + 80000238: 00500513 li a0,5 + 8000023c: 00a18863 beq gp,a0,8000024c + 80000240: 00600513 li a0,6 + 80000244: 00a18463 beq gp,a0,8000024c + 80000248: fc1ff06f j 80000208 + 8000024c: fa031ee3 bnez t1,80000208 + 80000250: 00000593 li a1,0 + 80000254: 34202573 csrr a0,mcause + 80000258: fab518e3 bne a0,a1,80000208 + 8000025c: 341025f3 csrr a1,mepc + 80000260: 00458593 addi a1,a1,4 + 80000264: fab292e3 bne t0,a1,80000208 + 80000268: 34302573 csrr a0,mbadaddr + 8000026c: 00050663 beqz a0,80000278 + 80000270: ffe50513 addi a0,a0,-2 # 1ffe <_start-0x7fffe002> + 80000274: f8551ae3 bne a0,t0,80000208 + 80000278: 00c58593 addi a1,a1,12 + 8000027c: 34159073 csrw mepc,a1 + 80000280: 30200073 mret + 80000284: c0001073 unimp + 80000288: 0000 unimp + 8000028a: 0000 unimp + 8000028c: 0000 unimp + 8000028e: 0000 unimp + 80000290: 0000 unimp + 80000292: 0000 unimp + 80000294: 0000 unimp + 80000296: 0000 unimp + 80000298: 0000 unimp + 8000029a: 0000 unimp + 8000029c: 0000 unimp + 8000029e: 0000 unimp + 800002a0: 0000 unimp + 800002a2: 0000 unimp + 800002a4: 0000 unimp + 800002a6: 0000 unimp + 800002a8: 0000 unimp + 800002aa: 0000 unimp + 800002ac: 0000 unimp + 800002ae: 0000 unimp + 800002b0: 0000 unimp + 800002b2: 0000 unimp + 800002b4: 0000 unimp + 800002b6: 0000 unimp + 800002b8: 0000 unimp + 800002ba: 0000 unimp + 800002bc: 0000 unimp + 800002be: 0000 unimp + 800002c0: 0000 unimp + 800002c2: 0000 unimp diff --git a/Tests/isa/rv64mi-p-mcsr b/Tests/isa/rv64mi-p-mcsr new file mode 100644 index 0000000..b33c79a Binary files /dev/null and b/Tests/isa/rv64mi-p-mcsr differ diff --git a/Tests/isa/rv64mi-p-mcsr.dump b/Tests/isa/rv64mi-p-mcsr.dump new file mode 100644 index 0000000..befb193 --- /dev/null +++ b/Tests/isa/rv64mi-p-mcsr.dump @@ -0,0 +1,126 @@ + +rv64mi-p-mcsr: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 30102573 csrr a0,misa + 8000010c: 03e55513 srli a0,a0,0x3e + 80000110: 00200e93 li t4,2 + 80000114: 00200193 li gp,2 + 80000118: 03d51863 bne a0,t4,80000148 + +000000008000011c : + 8000011c: f1402573 csrr a0,mhartid + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 03d51063 bne a0,t4,80000148 + 8000012c: f1302573 csrr a0,mimpid + 80000130: f1202573 csrr a0,marchid + 80000134: f1102573 csrr a0,mvendorid + 80000138: 00000293 li t0,0 + 8000013c: 3052a073 csrs mtvec,t0 + 80000140: 3412a073 csrs mepc,t0 + 80000144: 00301c63 bne zero,gp,8000015c + +0000000080000148 : + 80000148: 0ff0000f fence + 8000014c: 00018063 beqz gp,8000014c + 80000150: 00119193 slli gp,gp,0x1 + 80000154: 0011e193 ori gp,gp,1 + 80000158: 00000073 ecall + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00100193 li gp,1 + 80000164: 00000073 ecall + 80000168: c0001073 unimp + 8000016c: 0000 unimp + 8000016e: 0000 unimp + 80000170: 0000 unimp + 80000172: 0000 unimp + 80000174: 0000 unimp + 80000176: 0000 unimp + 80000178: 0000 unimp + 8000017a: 0000 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64mi-p-sbreak b/Tests/isa/rv64mi-p-sbreak new file mode 100644 index 0000000..f418e60 Binary files /dev/null and b/Tests/isa/rv64mi-p-sbreak differ diff --git a/Tests/isa/rv64mi-p-sbreak.dump b/Tests/isa/rv64mi-p-sbreak.dump new file mode 100644 index 0000000..8e03511 --- /dev/null +++ b/Tests/isa/rv64mi-p-sbreak.dump @@ -0,0 +1,130 @@ + +rv64mi-p-sbreak: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 118f0f13 addi t5,t5,280 # 80000138 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00200193 li gp,2 + +000000008000010c : + 8000010c: 00100073 ebreak + 80000110: 0080006f j 80000118 + 80000114: 00301c63 bne zero,gp,8000012c + +0000000080000118 : + 80000118: 0ff0000f fence + 8000011c: 00018063 beqz gp,8000011c + 80000120: 00119193 slli gp,gp,0x1 + 80000124: 0011e193 ori gp,gp,1 + 80000128: 00000073 ecall + +000000008000012c : + 8000012c: 0ff0000f fence + 80000130: 00100193 li gp,1 + 80000134: 00000073 ecall + +0000000080000138 : + 80000138: 00300313 li t1,3 + 8000013c: 342022f3 csrr t0,mcause + 80000140: fc629ce3 bne t0,t1,80000118 + 80000144: 00000317 auipc t1,0x0 + 80000148: fc830313 addi t1,t1,-56 # 8000010c + 8000014c: 341022f3 csrr t0,mepc + 80000150: fc6294e3 bne t0,t1,80000118 + 80000154: fd9ff06f j 8000012c + 80000158: c0001073 unimp + 8000015c: 0000 unimp + 8000015e: 0000 unimp + 80000160: 0000 unimp + 80000162: 0000 unimp + 80000164: 0000 unimp + 80000166: 0000 unimp + 80000168: 0000 unimp + 8000016a: 0000 unimp + 8000016c: 0000 unimp + 8000016e: 0000 unimp + 80000170: 0000 unimp + 80000172: 0000 unimp + 80000174: 0000 unimp + 80000176: 0000 unimp + 80000178: 0000 unimp + 8000017a: 0000 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64mi-p-scall b/Tests/isa/rv64mi-p-scall new file mode 100644 index 0000000..52ac8d7 Binary files /dev/null and b/Tests/isa/rv64mi-p-scall differ diff --git a/Tests/isa/rv64mi-p-scall.dump b/Tests/isa/rv64mi-p-scall.dump new file mode 100644 index 0000000..940db03 --- /dev/null +++ b/Tests/isa/rv64mi-p-scall.dump @@ -0,0 +1,147 @@ + +rv64mi-p-scall: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 158f0f13 addi t5,t5,344 # 80000178 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00200193 li gp,2 + 8000010c: 00800313 li t1,8 + 80000110: 000022b7 lui t0,0x2 + 80000114: 8002829b addiw t0,t0,-2048 + 80000118: 3002b073 csrc mstatus,t0 + 8000011c: 30002373 csrr t1,mstatus + 80000120: 0062f2b3 and t0,t0,t1 + 80000124: 00028463 beqz t0,8000012c + 80000128: 00b00313 li t1,11 + 8000012c: 000022b7 lui t0,0x2 + 80000130: 8002829b addiw t0,t0,-2048 + 80000134: 3002b073 csrc mstatus,t0 + 80000138: 00000297 auipc t0,0x0 + 8000013c: 01028293 addi t0,t0,16 # 80000148 + 80000140: 34129073 csrw mepc,t0 + 80000144: 30200073 mret + 80000148: 00100193 li gp,1 + +000000008000014c : + 8000014c: 00000073 ecall + 80000150: 0080006f j 80000158 + 80000154: 00301c63 bne zero,gp,8000016c + +0000000080000158 : + 80000158: 0ff0000f fence + 8000015c: 00018063 beqz gp,8000015c + 80000160: 00119193 slli gp,gp,0x1 + 80000164: 0011e193 ori gp,gp,1 + 80000168: 00000073 ecall + +000000008000016c : + 8000016c: 0ff0000f fence + 80000170: 00100193 li gp,1 + 80000174: 00000073 ecall + +0000000080000178 : + 80000178: 342022f3 csrr t0,mcause + 8000017c: fc629ee3 bne t0,t1,80000158 + 80000180: 00000397 auipc t2,0x0 + 80000184: fcc38393 addi t2,t2,-52 # 8000014c + 80000188: 341022f3 csrr t0,mepc + 8000018c: fc7296e3 bne t0,t2,80000158 + 80000190: fddff06f j 8000016c + 80000194: c0001073 unimp + 80000198: 0000 unimp + 8000019a: 0000 unimp + 8000019c: 0000 unimp + 8000019e: 0000 unimp + 800001a0: 0000 unimp + 800001a2: 0000 unimp + 800001a4: 0000 unimp + 800001a6: 0000 unimp + 800001a8: 0000 unimp + 800001aa: 0000 unimp + 800001ac: 0000 unimp + 800001ae: 0000 unimp + 800001b0: 0000 unimp + 800001b2: 0000 unimp + 800001b4: 0000 unimp + 800001b6: 0000 unimp + 800001b8: 0000 unimp + 800001ba: 0000 unimp + 800001bc: 0000 unimp + 800001be: 0000 unimp + 800001c0: 0000 unimp + 800001c2: 0000 unimp diff --git a/Tests/isa/rv64si-p-csr b/Tests/isa/rv64si-p-csr new file mode 100644 index 0000000..6109586 Binary files /dev/null and b/Tests/isa/rv64si-p-csr differ diff --git a/Tests/isa/rv64si-p-csr.dump b/Tests/isa/rv64si-p-csr.dump new file mode 100644 index 0000000..e4e92ac --- /dev/null +++ b/Tests/isa/rv64si-p-csr.dump @@ -0,0 +1,222 @@ + +rv64si-p-csr: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 00000297 auipc t0,0x0 + 800000c4: 16c28293 addi t0,t0,364 # 8000022c + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00001537 lui a0,0x1 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 02200513 li a0,34 + 800000f8: 30352073 csrs mideleg,a0 + 800000fc: 00000297 auipc t0,0x0 + 80000100: 01428293 addi t0,t0,20 # 80000110 + 80000104: 34129073 csrw mepc,t0 + 80000108: f1402573 csrr a0,mhartid + 8000010c: 30200073 mret + +0000000080000110 : + 80000110: 10002573 csrr a0,sstatus + 80000114: 0030059b addiw a1,zero,3 + 80000118: 02059593 slli a1,a1,0x20 + 8000011c: 00b57533 and a0,a0,a1 + 80000120: 00100e9b addiw t4,zero,1 + 80000124: 021e9e93 slli t4,t4,0x21 + 80000128: 00d00193 li gp,13 + 8000012c: 0fd51063 bne a0,t4,8000020c + 80000130: 1401d073 csrwi sscratch,3 + +0000000080000134 : + 80000134: 14002573 csrr a0,sscratch + 80000138: 00300e93 li t4,3 + 8000013c: 00200193 li gp,2 + 80000140: 0dd51663 bne a0,t4,8000020c + +0000000080000144 : + 80000144: 1400f5f3 csrrci a1,sscratch,1 + 80000148: 00300e93 li t4,3 + 8000014c: 00300193 li gp,3 + 80000150: 0bd59e63 bne a1,t4,8000020c + +0000000080000154 : + 80000154: 14026673 csrrsi a2,sscratch,4 + 80000158: 00200e93 li t4,2 + 8000015c: 00400193 li gp,4 + 80000160: 0bd61663 bne a2,t4,8000020c + +0000000080000164 : + 80000164: 140156f3 csrrwi a3,sscratch,2 + 80000168: 00600e93 li t4,6 + 8000016c: 00500193 li gp,5 + 80000170: 09d69e63 bne a3,t4,8000020c + +0000000080000174 : + 80000174: 0bad2537 lui a0,0xbad2 + 80000178: dea5051b addiw a0,a0,-534 + 8000017c: 140515f3 csrrw a1,sscratch,a0 + 80000180: 00200e93 li t4,2 + 80000184: 00600193 li gp,6 + 80000188: 09d59263 bne a1,t4,8000020c + +000000008000018c : + 8000018c: 00002537 lui a0,0x2 + 80000190: dea5051b addiw a0,a0,-534 + 80000194: 14053573 csrrc a0,sscratch,a0 + 80000198: 0bad2eb7 lui t4,0xbad2 + 8000019c: deae8e9b addiw t4,t4,-534 + 800001a0: 00700193 li gp,7 + 800001a4: 07d51463 bne a0,t4,8000020c + +00000000800001a8 : + 800001a8: 0000c537 lui a0,0xc + 800001ac: eef5051b addiw a0,a0,-273 + 800001b0: 14052573 csrrs a0,sscratch,a0 + 800001b4: 0bad0eb7 lui t4,0xbad0 + 800001b8: 00800193 li gp,8 + 800001bc: 05d51863 bne a0,t4,8000020c + +00000000800001c0 : + 800001c0: 14002573 csrr a0,sscratch + 800001c4: 0badceb7 lui t4,0xbadc + 800001c8: eefe8e9b addiw t4,t4,-273 + 800001cc: 00900193 li gp,9 + 800001d0: 03d51e63 bne a0,t4,8000020c + 800001d4: 10000293 li t0,256 + 800001d8: 1002b073 csrc sstatus,t0 + 800001dc: 00000297 auipc t0,0x0 + 800001e0: 01028293 addi t0,t0,16 # 800001ec + 800001e4: 14129073 csrw sepc,t0 + 800001e8: 10200073 sret + +00000000800001ec : + 800001ec: 00000013 nop + 800001f0: 00000e93 li t4,0 + 800001f4: 00c00193 li gp,12 + 800001f8: 01d01a63 bne zero,t4,8000020c + +00000000800001fc : + 800001fc: 0ff0000f fence + 80000200: 00100193 li gp,1 + 80000204: 00000073 ecall + 80000208: 00301c63 bne zero,gp,80000220 + +000000008000020c : + 8000020c: 0ff0000f fence + 80000210: 00018063 beqz gp,80000210 + 80000214: 00119193 slli gp,gp,0x1 + 80000218: 0011e193 ori gp,gp,1 + 8000021c: 00000073 ecall + +0000000080000220 : + 80000220: 0ff0000f fence + 80000224: 00100193 li gp,1 + 80000228: 00000073 ecall + +000000008000022c : + 8000022c: 00900293 li t0,9 + 80000230: 0051e663 bltu gp,t0,8000023c + 80000234: 00b00293 li t0,11 + 80000238: 0032fe63 bleu gp,t0,80000254 + 8000023c: 142022f3 csrr t0,scause + 80000240: 00800313 li t1,8 + 80000244: fc6294e3 bne t0,t1,8000020c + 80000248: 0ff0000f fence + 8000024c: 00100193 li gp,1 + 80000250: 00000073 ecall + +0000000080000254 : + 80000254: 142022f3 csrr t0,scause + 80000258: 00200313 li t1,2 + 8000025c: fa6298e3 bne t0,t1,8000020c + 80000260: 141022f3 csrr t0,sepc + 80000264: 00428293 addi t0,t0,4 + 80000268: 14129073 csrw sepc,t0 + 8000026c: 10200073 sret + 80000270: c0001073 unimp + 80000274: 0000 unimp + 80000276: 0000 unimp + 80000278: 0000 unimp + 8000027a: 0000 unimp + 8000027c: 0000 unimp + 8000027e: 0000 unimp + 80000280: 0000 unimp + 80000282: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0001 nop + 80002002: 0000 unimp + 80002004: 0000 unimp + 80002006: 0000 unimp + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64si-p-dirty b/Tests/isa/rv64si-p-dirty new file mode 100644 index 0000000..0e5632c Binary files /dev/null and b/Tests/isa/rv64si-p-dirty differ diff --git a/Tests/isa/rv64si-p-dirty.dump b/Tests/isa/rv64si-p-dirty.dump new file mode 100644 index 0000000..a92c70d --- /dev/null +++ b/Tests/isa/rv64si-p-dirty.dump @@ -0,0 +1,202 @@ + +rv64si-p-dirty: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 00000f17 auipc t5,0x0 + 80000024: 1d0f0f13 addi t5,t5,464 # 800001f0 + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: fff0051b addiw a0,zero,-1 + 8000010c: 03f51513 slli a0,a0,0x3f + 80000110: 00002597 auipc a1,0x2 + 80000114: ef058593 addi a1,a1,-272 # 80002000 + 80000118: 00c5d593 srli a1,a1,0xc + 8000011c: 00a5e5b3 or a1,a1,a0 + 80000120: 18059073 csrw satp,a1 + 80000124: 12000073 sfence.vma + 80000128: 000215b7 lui a1,0x21 + 8000012c: 8005859b addiw a1,a1,-2048 + 80000130: 3005a073 csrs mstatus,a1 + 80000134: 00200193 li gp,2 + 80000138: 00100393 li t2,1 + 8000013c: 80002517 auipc a0,0x80002 + 80000140: ec752623 sw t2,-308(a0) # 2008 <_start-0x7fffdff8> + 80000144: 00300193 li gp,3 + 80000148: 000415b7 lui a1,0x41 + 8000014c: 8005859b addiw a1,a1,-2048 + 80000150: 3005a073 csrs mstatus,a1 + 80000154: 80002297 auipc t0,0x80002 + 80000158: eb42a283 lw t0,-332(t0) # 2008 <_start-0x7fffdff8> + 8000015c: 10029063 bnez t0,8000025c + 80000160: 80002517 auipc a0,0x80002 + 80000164: ea752423 sw t2,-344(a0) # 2008 <_start-0x7fffdff8> + 80000168: 80002297 auipc t0,0x80002 + 8000016c: ea02a283 lw t0,-352(t0) # 2008 <_start-0x7fffdff8> + 80000170: 0e729663 bne t0,t2,8000025c + 80000174: 000202b7 lui t0,0x20 + 80000178: 3002b073 csrc mstatus,t0 + 8000017c: 00002297 auipc t0,0x2 + 80000180: e842a283 lw t0,-380(t0) # 80002000 + 80000184: 0c000513 li a0,192 + 80000188: 00a2f2b3 and t0,t0,a0 + 8000018c: 0ca29863 bne t0,a0,8000025c + 80000190: 000202b7 lui t0,0x20 + 80000194: 3002a073 csrs mstatus,t0 + 80000198: 00400193 li gp,4 + 8000019c: 80002517 auipc a0,0x80002 + 800001a0: e6452503 lw a0,-412(a0) # 2000 <_start-0x7fffe000> + 800001a4: 40056513 ori a0,a0,1024 + 800001a8: 80002297 auipc t0,0x80002 + 800001ac: e4a2ac23 sw a0,-424(t0) # 2000 <_start-0x7fffe000> + 800001b0: 12000073 sfence.vma + 800001b4: 80002297 auipc t0,0x80002 + 800001b8: e4a2a623 sw a0,-436(t0) # 2000 <_start-0x7fffe000> + 800001bc: 0a00006f j 8000025c + 800001c0: 0ff0000f fence + 800001c4: 00100193 li gp,1 + 800001c8: 00000073 ecall + 800001cc: 00301c63 bne zero,gp,800001e4 + +00000000800001d0 : + 800001d0: 0ff0000f fence + 800001d4: 00018063 beqz gp,800001d4 + 800001d8: 00119193 slli gp,gp,0x1 + 800001dc: 0011e193 ori gp,gp,1 + 800001e0: 00000073 ecall + +00000000800001e4 : + 800001e4: 0ff0000f fence + 800001e8: 00100193 li gp,1 + 800001ec: 00000073 ecall + +00000000800001f0 : + 800001f0: 342022f3 csrr t0,mcause + 800001f4: ff128293 addi t0,t0,-15 + 800001f8: 06029263 bnez t0,8000025c + 800001fc: 00200313 li t1,2 + 80000200: 02619263 bne gp,t1,80000224 + 80000204: 00002297 auipc t0,0x2 + 80000208: dfc2a283 lw t0,-516(t0) # 80002000 + 8000020c: 0802f313 andi t1,t0,128 + 80000210: 04031663 bnez t1,8000025c + +0000000080000214 : + 80000214: 341022f3 csrr t0,mepc + 80000218: 00428293 addi t0,t0,4 + 8000021c: 34129073 csrw mepc,t0 + 80000220: 30200073 mret + 80000224: 00300313 li t1,3 + 80000228: 02619463 bne gp,t1,80000250 + 8000022c: 00002297 auipc t0,0x2 + 80000230: dd42a283 lw t0,-556(t0) # 80002000 + 80000234: 0802f313 andi t1,t0,128 + 80000238: 02031263 bnez t1,8000025c + 8000023c: 0802e293 ori t0,t0,128 + 80000240: 00002317 auipc t1,0x2 + 80000244: dc532023 sw t0,-576(t1) # 80002000 + 80000248: 12000073 sfence.vma + 8000024c: 30200073 mret + 80000250: 00400313 li t1,4 + 80000254: 00619463 bne gp,t1,8000025c + 80000258: f8dff06f j 800001e4 + +000000008000025c : + 8000025c: 0ff0000f fence + 80000260: 00018063 beqz gp,80000260 + 80000264: 00119193 slli gp,gp,0x1 + 80000268: 0011e193 ori gp,gp,1 + 8000026c: 00000073 ecall + 80000270: c0001073 unimp + 80000274: 0000 unimp + 80000276: 0000 unimp + 80000278: 0000 unimp + 8000027a: 0000 unimp + 8000027c: 0000 unimp + 8000027e: 0000 unimp + 80000280: 0000 unimp + 80000282: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 005f 2000 0000 0x2000005f + 80002006: 0000 unimp + +0000000080002008 : + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64si-p-ma_fetch b/Tests/isa/rv64si-p-ma_fetch new file mode 100644 index 0000000..48f5473 Binary files /dev/null and b/Tests/isa/rv64si-p-ma_fetch differ diff --git a/Tests/isa/rv64si-p-ma_fetch.dump b/Tests/isa/rv64si-p-ma_fetch.dump new file mode 100644 index 0000000..bd8178b --- /dev/null +++ b/Tests/isa/rv64si-p-ma_fetch.dump @@ -0,0 +1,175 @@ + +rv64si-p-ma_fetch: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 00000297 auipc t0,0x0 + 800000c4: 11428293 addi t0,t0,276 # 800001d4 + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00001537 lui a0,0x1 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 02200513 li a0,34 + 800000f8: 30352073 csrs mideleg,a0 + 800000fc: 00000297 auipc t0,0x0 + 80000100: 01428293 addi t0,t0,20 # 80000110 + 80000104: 34129073 csrw mepc,t0 + 80000108: f1402573 csrr a0,mhartid + 8000010c: 30200073 mret + 80000110: 00200193 li gp,2 + 80000114: 00000313 li t1,0 + 80000118: 00000297 auipc t0,0x0 + 8000011c: 00c28293 addi t0,t0,12 # 80000124 + 80000120: 00228367 jalr t1,2(t0) + 80000124: a011 j 80000128 + 80000126: a019 j 8000012c + 80000128: 08c0006f j 800001b4 + 8000012c: 00300193 li gp,3 + 80000130: 00000297 auipc t0,0x0 + 80000134: 00c28293 addi t0,t0,12 # 8000013c + 80000138: 00128367 jalr t1,1(t0) + 8000013c: 0080006f j 80000144 + 80000140: 0740006f j 800001b4 + 80000144: 00400193 li gp,4 + 80000148: 00000313 li t1,0 + 8000014c: 00000297 auipc t0,0x0 + 80000150: 00c28293 addi t0,t0,12 # 80000158 + 80000154: 00328367 jalr t1,3(t0) + 80000158: a011 j 8000015c + 8000015a: a019 j 80000160 + 8000015c: 0580006f j 800001b4 + 80000160: 00500193 li gp,5 + 80000164: 00000313 li t1,0 + 80000168: 00000297 auipc t0,0x0 + 8000016c: 00c28293 addi t0,t0,12 # 80000174 + 80000170: 0060036f jal t1,80000176 + 80000174: a011 j 80000178 + 80000176: a019 j 8000017c + 80000178: 03c0006f j 800001b4 + 8000017c: 00600193 li gp,6 + 80000180: 00000313 li t1,0 + 80000184: 00000297 auipc t0,0x0 + 80000188: 00c28293 addi t0,t0,12 # 80000190 + 8000018c: 00000363 beqz zero,80000192 + 80000190: a011 j 80000194 + 80000192: a019 j 80000198 + 80000194: 0200006f j 800001b4 + 80000198: 00700193 li gp,7 + 8000019c: 00001563 bnez zero,800001a6 + 800001a0: 00c0006f j 800001ac + 800001a4: a009 j 800001a6 + 800001a6: a009 j 800001a8 + 800001a8: 00c0006f j 800001b4 + 800001ac: 01c0006f j 800001c8 + 800001b0: 00301c63 bne zero,gp,800001c8 + +00000000800001b4 : + 800001b4: 0ff0000f fence + 800001b8: 00018063 beqz gp,800001b8 + 800001bc: 00119193 slli gp,gp,0x1 + 800001c0: 0011e193 ori gp,gp,1 + 800001c4: 00000073 ecall + +00000000800001c8 : + 800001c8: 0ff0000f fence + 800001cc: 00100193 li gp,1 + 800001d0: 00000073 ecall + +00000000800001d4 : + 800001d4: 00200513 li a0,2 + 800001d8: 02a18063 beq gp,a0,800001f8 + 800001dc: 00400513 li a0,4 + 800001e0: 00a18c63 beq gp,a0,800001f8 + 800001e4: 00500513 li a0,5 + 800001e8: 00a18863 beq gp,a0,800001f8 + 800001ec: 00600513 li a0,6 + 800001f0: 00a18463 beq gp,a0,800001f8 + 800001f4: fc1ff06f j 800001b4 + 800001f8: fa031ee3 bnez t1,800001b4 + 800001fc: 00000593 li a1,0 + 80000200: 14202573 csrr a0,scause + 80000204: fab518e3 bne a0,a1,800001b4 + 80000208: 141025f3 csrr a1,sepc + 8000020c: 00458593 addi a1,a1,4 + 80000210: fab292e3 bne t0,a1,800001b4 + 80000214: 14302573 csrr a0,sbadaddr + 80000218: 00050663 beqz a0,80000224 + 8000021c: ffe50513 addi a0,a0,-2 # ffe <_start-0x7ffff002> + 80000220: f8551ae3 bne a0,t0,800001b4 + 80000224: 00c58593 addi a1,a1,12 + 80000228: 14159073 csrw sepc,a1 + 8000022c: 10200073 sret + 80000230: c0001073 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64si-p-sbreak b/Tests/isa/rv64si-p-sbreak new file mode 100644 index 0000000..663cc71 Binary files /dev/null and b/Tests/isa/rv64si-p-sbreak differ diff --git a/Tests/isa/rv64si-p-sbreak.dump b/Tests/isa/rv64si-p-sbreak.dump new file mode 100644 index 0000000..e981c54 --- /dev/null +++ b/Tests/isa/rv64si-p-sbreak.dump @@ -0,0 +1,128 @@ + +rv64si-p-sbreak: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 00000297 auipc t0,0x0 + 800000c4: 08028293 addi t0,t0,128 # 80000140 + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00001537 lui a0,0x1 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 02200513 li a0,34 + 800000f8: 30352073 csrs mideleg,a0 + 800000fc: 00000297 auipc t0,0x0 + 80000100: 01428293 addi t0,t0,20 # 80000110 + 80000104: 34129073 csrw mepc,t0 + 80000108: f1402573 csrr a0,mhartid + 8000010c: 30200073 mret + 80000110: 00200193 li gp,2 + +0000000080000114 : + 80000114: 00100073 ebreak + 80000118: 0080006f j 80000120 + 8000011c: 00301c63 bne zero,gp,80000134 + +0000000080000120 : + 80000120: 0ff0000f fence + 80000124: 00018063 beqz gp,80000124 + 80000128: 00119193 slli gp,gp,0x1 + 8000012c: 0011e193 ori gp,gp,1 + 80000130: 00000073 ecall + +0000000080000134 : + 80000134: 0ff0000f fence + 80000138: 00100193 li gp,1 + 8000013c: 00000073 ecall + +0000000080000140 : + 80000140: 00300313 li t1,3 + 80000144: 142022f3 csrr t0,scause + 80000148: fc629ce3 bne t0,t1,80000120 + 8000014c: 00000317 auipc t1,0x0 + 80000150: fc830313 addi t1,t1,-56 # 80000114 + 80000154: 141022f3 csrr t0,sepc + 80000158: fc6294e3 bne t0,t1,80000120 + 8000015c: fd9ff06f j 80000134 + 80000160: c0001073 unimp + 80000164: 0000 unimp + 80000166: 0000 unimp + 80000168: 0000 unimp + 8000016a: 0000 unimp + 8000016c: 0000 unimp + 8000016e: 0000 unimp + 80000170: 0000 unimp + 80000172: 0000 unimp + 80000174: 0000 unimp + 80000176: 0000 unimp + 80000178: 0000 unimp + 8000017a: 0000 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64si-p-scall b/Tests/isa/rv64si-p-scall new file mode 100644 index 0000000..1811b87 Binary files /dev/null and b/Tests/isa/rv64si-p-scall differ diff --git a/Tests/isa/rv64si-p-scall.dump b/Tests/isa/rv64si-p-scall.dump new file mode 100644 index 0000000..9967450 --- /dev/null +++ b/Tests/isa/rv64si-p-scall.dump @@ -0,0 +1,121 @@ + +rv64si-p-scall: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 00000297 auipc t0,0x0 + 800000c4: 0a028293 addi t0,t0,160 # 80000160 + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00001537 lui a0,0x1 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 02200513 li a0,34 + 800000f8: 30352073 csrs mideleg,a0 + 800000fc: 00000297 auipc t0,0x0 + 80000100: 01428293 addi t0,t0,20 # 80000110 + 80000104: 34129073 csrw mepc,t0 + 80000108: f1402573 csrr a0,mhartid + 8000010c: 30200073 mret + 80000110: 00200193 li gp,2 + 80000114: 00800313 li t1,8 + 80000118: 10000293 li t0,256 + 8000011c: 1002b073 csrc sstatus,t0 + 80000120: 00000297 auipc t0,0x0 + 80000124: 01028293 addi t0,t0,16 # 80000130 + 80000128: 14129073 csrw sepc,t0 + 8000012c: 10200073 sret + 80000130: 00100193 li gp,1 + +0000000080000134 : + 80000134: 00000073 ecall + 80000138: 0080006f j 80000140 + 8000013c: 00301c63 bne zero,gp,80000154 + +0000000080000140 : + 80000140: 0ff0000f fence + 80000144: 00018063 beqz gp,80000144 + 80000148: 00119193 slli gp,gp,0x1 + 8000014c: 0011e193 ori gp,gp,1 + 80000150: 00000073 ecall + +0000000080000154 : + 80000154: 0ff0000f fence + 80000158: 00100193 li gp,1 + 8000015c: 00000073 ecall + +0000000080000160 : + 80000160: 142022f3 csrr t0,scause + 80000164: fc629ee3 bne t0,t1,80000140 + 80000168: 00000397 auipc t2,0x0 + 8000016c: fcc38393 addi t2,t2,-52 # 80000134 + 80000170: 141022f3 csrr t0,sepc + 80000174: fc7296e3 bne t0,t2,80000140 + 80000178: fddff06f j 80000154 + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64si-p-wfi b/Tests/isa/rv64si-p-wfi new file mode 100644 index 0000000..fec4f3c Binary files /dev/null and b/Tests/isa/rv64si-p-wfi differ diff --git a/Tests/isa/rv64si-p-wfi.dump b/Tests/isa/rv64si-p-wfi.dump new file mode 100644 index 0000000..2cd7bf8 --- /dev/null +++ b/Tests/isa/rv64si-p-wfi.dump @@ -0,0 +1,128 @@ + +rv64si-p-wfi: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00001537 lui a0,0x1 + 800000ec: 8005051b addiw a0,a0,-2048 + 800000f0: 30052073 csrs mstatus,a0 + 800000f4: 02200513 li a0,34 + 800000f8: 30352073 csrs mideleg,a0 + 800000fc: 00000297 auipc t0,0x0 + 80000100: 01428293 addi t0,t0,20 # 80000110 + 80000104: 34129073 csrw mepc,t0 + 80000108: f1402573 csrr a0,mhartid + 8000010c: 30200073 mret + 80000110: 10017073 csrci sstatus,2 + 80000114: 10416073 csrsi sie,2 + 80000118: 14416073 csrsi sip,2 + 8000011c: 10500073 wfi + 80000120: 0ff0000f fence + 80000124: 00100193 li gp,1 + 80000128: 00000073 ecall + 8000012c: 00301c63 bne zero,gp,80000144 + +0000000080000130 : + 80000130: 0ff0000f fence + 80000134: 00018063 beqz gp,80000134 + 80000138: 00119193 slli gp,gp,0x1 + 8000013c: 0011e193 ori gp,gp,1 + 80000140: 00000073 ecall + +0000000080000144 : + 80000144: 0ff0000f fence + 80000148: 00100193 li gp,1 + 8000014c: 00000073 ecall + 80000150: c0001073 unimp + 80000154: 0000 unimp + 80000156: 0000 unimp + 80000158: 0000 unimp + 8000015a: 0000 unimp + 8000015c: 0000 unimp + 8000015e: 0000 unimp + 80000160: 0000 unimp + 80000162: 0000 unimp + 80000164: 0000 unimp + 80000166: 0000 unimp + 80000168: 0000 unimp + 8000016a: 0000 unimp + 8000016c: 0000 unimp + 8000016e: 0000 unimp + 80000170: 0000 unimp + 80000172: 0000 unimp + 80000174: 0000 unimp + 80000176: 0000 unimp + 80000178: 0000 unimp + 8000017a: 0000 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amoadd_d b/Tests/isa/rv64ua-p-amoadd_d new file mode 100644 index 0000000..686ed97 Binary files /dev/null and b/Tests/isa/rv64ua-p-amoadd_d differ diff --git a/Tests/isa/rv64ua-p-amoadd_d.dump b/Tests/isa/rv64ua-p-amoadd_d.dump new file mode 100644 index 0000000..e90473b --- /dev/null +++ b/Tests/isa/rv64ua-p-amoadd_d.dump @@ -0,0 +1,153 @@ + +rv64ua-p-amoadd_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: 00b6b72f amoadd.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71863 bne a4,t4,8000016c + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: fff00e9b addiw t4,zero,-1 + 80000128: 01fe9e93 slli t4,t4,0x1f + 8000012c: 800e8e93 addi t4,t4,-2048 # ffffffff7ffff800 <_end+0xfffffffeffffd7f8> + 80000130: 00300193 li gp,3 + 80000134: 03d79c63 bne a5,t4,8000016c + +0000000080000138 : + 80000138: 00b6b72f amoadd.d a4,a1,(a3) + 8000013c: fff00e9b addiw t4,zero,-1 + 80000140: 01fe9e93 slli t4,t4,0x1f + 80000144: 800e8e93 addi t4,t4,-2048 + 80000148: 00400193 li gp,4 + 8000014c: 03d71063 bne a4,t4,8000016c + +0000000080000150 : + 80000150: 0006b783 ld a5,0(a3) + 80000154: fff80eb7 lui t4,0xfff80 + 80000158: fffe8e9b addiw t4,t4,-1 + 8000015c: 00ce9e93 slli t4,t4,0xc + 80000160: 00500193 li gp,5 + 80000164: 01d79463 bne a5,t4,8000016c + 80000168: 00301c63 bne zero,gp,80000180 + +000000008000016c : + 8000016c: 0ff0000f fence + 80000170: 00018063 beqz gp,80000170 + 80000174: 00119193 slli gp,gp,0x1 + 80000178: 0011e193 ori gp,gp,1 + 8000017c: 00000073 ecall + +0000000080000180 : + 80000180: 0ff0000f fence + 80000184: 00100193 li gp,1 + 80000188: 00000073 ecall + 8000018c: c0001073 unimp + 80000190: 0000 unimp + 80000192: 0000 unimp + 80000194: 0000 unimp + 80000196: 0000 unimp + 80000198: 0000 unimp + 8000019a: 0000 unimp + 8000019c: 0000 unimp + 8000019e: 0000 unimp + 800001a0: 0000 unimp + 800001a2: 0000 unimp + 800001a4: 0000 unimp + 800001a6: 0000 unimp + 800001a8: 0000 unimp + 800001aa: 0000 unimp + 800001ac: 0000 unimp + 800001ae: 0000 unimp + 800001b0: 0000 unimp + 800001b2: 0000 unimp + 800001b4: 0000 unimp + 800001b6: 0000 unimp + 800001b8: 0000 unimp + 800001ba: 0000 unimp + 800001bc: 0000 unimp + 800001be: 0000 unimp + 800001c0: 0000 unimp + 800001c2: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amoadd_w b/Tests/isa/rv64ua-p-amoadd_w new file mode 100644 index 0000000..e8e99ba Binary files /dev/null and b/Tests/isa/rv64ua-p-amoadd_w differ diff --git a/Tests/isa/rv64ua-p-amoadd_w.dump b/Tests/isa/rv64ua-p-amoadd_w.dump new file mode 100644 index 0000000..a0bc84e --- /dev/null +++ b/Tests/isa/rv64ua-p-amoadd_w.dump @@ -0,0 +1,124 @@ + +rv64ua-p-amoadd_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: 00b6a72f amoadd.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71263 bne a4,t4,80000160 + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 800e8e9b addiw t4,t4,-2048 + 8000012c: 00300193 li gp,3 + 80000130: 03d79863 bne a5,t4,80000160 + +0000000080000134 : + 80000134: 800005b7 lui a1,0x80000 + 80000138: 00b6a72f amoadd.w a4,a1,(a3) + 8000013c: 80000eb7 lui t4,0x80000 + 80000140: 800e8e9b addiw t4,t4,-2048 + 80000144: 00400193 li gp,4 + 80000148: 01d71c63 bne a4,t4,80000160 + +000000008000014c : + 8000014c: 0006a783 lw a5,0(a3) + 80000150: 80000e93 li t4,-2048 + 80000154: 00500193 li gp,5 + 80000158: 01d79463 bne a5,t4,80000160 + 8000015c: 00301c63 bne zero,gp,80000174 + +0000000080000160 : + 80000160: 0ff0000f fence + 80000164: 00018063 beqz gp,80000164 + 80000168: 00119193 slli gp,gp,0x1 + 8000016c: 0011e193 ori gp,gp,1 + 80000170: 00000073 ecall + +0000000080000174 : + 80000174: 0ff0000f fence + 80000178: 00100193 li gp,1 + 8000017c: 00000073 ecall + 80000180: c0001073 unimp diff --git a/Tests/isa/rv64ua-p-amoand_d b/Tests/isa/rv64ua-p-amoand_d new file mode 100644 index 0000000..3ab981a Binary files /dev/null and b/Tests/isa/rv64ua-p-amoand_d differ diff --git a/Tests/isa/rv64ua-p-amoand_d.dump b/Tests/isa/rv64ua-p-amoand_d.dump new file mode 100644 index 0000000..cb398f8 --- /dev/null +++ b/Tests/isa/rv64ua-p-amoand_d.dump @@ -0,0 +1,124 @@ + +rv64ua-p-amoand_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: 60b6b72f amoand.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71263 bne a4,t4,80000160 + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 00300193 li gp,3 + 8000012c: 03d79a63 bne a5,t4,80000160 + +0000000080000130 : + 80000130: 0010059b addiw a1,zero,1 + 80000134: 01f59593 slli a1,a1,0x1f + 80000138: 60b6b72f amoand.d a4,a1,(a3) + 8000013c: 80000eb7 lui t4,0x80000 + 80000140: 00400193 li gp,4 + 80000144: 01d71e63 bne a4,t4,80000160 + +0000000080000148 : + 80000148: 0006b783 ld a5,0(a3) + 8000014c: 00100e9b addiw t4,zero,1 + 80000150: 01fe9e93 slli t4,t4,0x1f + 80000154: 00500193 li gp,5 + 80000158: 01d79463 bne a5,t4,80000160 + 8000015c: 00301c63 bne zero,gp,80000174 + +0000000080000160 : + 80000160: 0ff0000f fence + 80000164: 00018063 beqz gp,80000164 + 80000168: 00119193 slli gp,gp,0x1 + 8000016c: 0011e193 ori gp,gp,1 + 80000170: 00000073 ecall + +0000000080000174 : + 80000174: 0ff0000f fence + 80000178: 00100193 li gp,1 + 8000017c: 00000073 ecall + 80000180: c0001073 unimp diff --git a/Tests/isa/rv64ua-p-amoand_w b/Tests/isa/rv64ua-p-amoand_w new file mode 100644 index 0000000..6e4121c Binary files /dev/null and b/Tests/isa/rv64ua-p-amoand_w differ diff --git a/Tests/isa/rv64ua-p-amoand_w.dump b/Tests/isa/rv64ua-p-amoand_w.dump new file mode 100644 index 0000000..83ce206 --- /dev/null +++ b/Tests/isa/rv64ua-p-amoand_w.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amoand_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: 60b6a72f amoand.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: 0010059b addiw a1,zero,1 + 80000134: 01f59593 slli a1,a1,0x1f + 80000138: 60b6a72f amoand.w a4,a1,(a3) + 8000013c: 80000eb7 lui t4,0x80000 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006a783 lw a5,0(a3) + 8000014c: 80000eb7 lui t4,0x80000 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amomax_d b/Tests/isa/rv64ua-p-amomax_d new file mode 100644 index 0000000..b17a291 Binary files /dev/null and b/Tests/isa/rv64ua-p-amomax_d differ diff --git a/Tests/isa/rv64ua-p-amomax_d.dump b/Tests/isa/rv64ua-p-amomax_d.dump new file mode 100644 index 0000000..c91c2c8 --- /dev/null +++ b/Tests/isa/rv64ua-p-amomax_d.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amomax_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: a0b6b72f amomax.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: 00100593 li a1,1 + 80000134: 0006b023 sd zero,0(a3) + 80000138: a0b6b72f amomax.d a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006b783 ld a5,0(a3) + 8000014c: 00100e93 li t4,1 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amomax_w b/Tests/isa/rv64ua-p-amomax_w new file mode 100644 index 0000000..0edcf6b Binary files /dev/null and b/Tests/isa/rv64ua-p-amomax_w differ diff --git a/Tests/isa/rv64ua-p-amomax_w.dump b/Tests/isa/rv64ua-p-amomax_w.dump new file mode 100644 index 0000000..5de2185 --- /dev/null +++ b/Tests/isa/rv64ua-p-amomax_w.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amomax_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: a0b6a72f amomax.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: 00100593 li a1,1 + 80000134: 0006a023 sw zero,0(a3) + 80000138: a0b6a72f amomax.w a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006a783 lw a5,0(a3) + 8000014c: 00100e93 li t4,1 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amomaxu_d b/Tests/isa/rv64ua-p-amomaxu_d new file mode 100644 index 0000000..8dc1093 Binary files /dev/null and b/Tests/isa/rv64ua-p-amomaxu_d differ diff --git a/Tests/isa/rv64ua-p-amomaxu_d.dump b/Tests/isa/rv64ua-p-amomaxu_d.dump new file mode 100644 index 0000000..8492cd4 --- /dev/null +++ b/Tests/isa/rv64ua-p-amomaxu_d.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amomaxu_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: e0b6b72f amomaxu.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: fff00593 li a1,-1 + 80000134: 0006b023 sd zero,0(a3) + 80000138: e0b6b72f amomaxu.d a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006b783 ld a5,0(a3) + 8000014c: fff00e93 li t4,-1 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amomaxu_w b/Tests/isa/rv64ua-p-amomaxu_w new file mode 100644 index 0000000..e8b8123 Binary files /dev/null and b/Tests/isa/rv64ua-p-amomaxu_w differ diff --git a/Tests/isa/rv64ua-p-amomaxu_w.dump b/Tests/isa/rv64ua-p-amomaxu_w.dump new file mode 100644 index 0000000..1f01067 --- /dev/null +++ b/Tests/isa/rv64ua-p-amomaxu_w.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amomaxu_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: e0b6a72f amomaxu.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: fff00593 li a1,-1 + 80000134: 0006a023 sw zero,0(a3) + 80000138: e0b6a72f amomaxu.w a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006a783 lw a5,0(a3) + 8000014c: fff00e93 li t4,-1 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amomin_d b/Tests/isa/rv64ua-p-amomin_d new file mode 100644 index 0000000..04b8f11 Binary files /dev/null and b/Tests/isa/rv64ua-p-amomin_d differ diff --git a/Tests/isa/rv64ua-p-amomin_d.dump b/Tests/isa/rv64ua-p-amomin_d.dump new file mode 100644 index 0000000..a45ab4f --- /dev/null +++ b/Tests/isa/rv64ua-p-amomin_d.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amomin_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: 80b6b72f amomin.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: fff00593 li a1,-1 + 80000134: 0006b023 sd zero,0(a3) + 80000138: 80b6b72f amomin.d a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006b783 ld a5,0(a3) + 8000014c: fff00e93 li t4,-1 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amomin_w b/Tests/isa/rv64ua-p-amomin_w new file mode 100644 index 0000000..e3b643c Binary files /dev/null and b/Tests/isa/rv64ua-p-amomin_w differ diff --git a/Tests/isa/rv64ua-p-amomin_w.dump b/Tests/isa/rv64ua-p-amomin_w.dump new file mode 100644 index 0000000..b97ec5a --- /dev/null +++ b/Tests/isa/rv64ua-p-amomin_w.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amomin_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: 80b6a72f amomin.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: fff00593 li a1,-1 + 80000134: 0006a023 sw zero,0(a3) + 80000138: 80b6a72f amomin.w a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006a783 lw a5,0(a3) + 8000014c: fff00e93 li t4,-1 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amominu_d b/Tests/isa/rv64ua-p-amominu_d new file mode 100644 index 0000000..93129ea Binary files /dev/null and b/Tests/isa/rv64ua-p-amominu_d differ diff --git a/Tests/isa/rv64ua-p-amominu_d.dump b/Tests/isa/rv64ua-p-amominu_d.dump new file mode 100644 index 0000000..c4b90c6 --- /dev/null +++ b/Tests/isa/rv64ua-p-amominu_d.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amominu_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: c0b6b72f amominu.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: fff00593 li a1,-1 + 80000134: 0006b023 sd zero,0(a3) + 80000138: c0b6b72f amominu.d a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006b783 ld a5,0(a3) + 8000014c: 00000e93 li t4,0 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amominu_w b/Tests/isa/rv64ua-p-amominu_w new file mode 100644 index 0000000..b96e86b Binary files /dev/null and b/Tests/isa/rv64ua-p-amominu_w differ diff --git a/Tests/isa/rv64ua-p-amominu_w.dump b/Tests/isa/rv64ua-p-amominu_w.dump new file mode 100644 index 0000000..7a80790 --- /dev/null +++ b/Tests/isa/rv64ua-p-amominu_w.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amominu_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: c0b6a72f amominu.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: fff00593 li a1,-1 + 80000134: 0006a023 sw zero,0(a3) + 80000138: c0b6a72f amominu.w a4,a1,(a3) + 8000013c: 00000e93 li t4,0 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006a783 lw a5,0(a3) + 8000014c: 00000e93 li t4,0 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amoor_d b/Tests/isa/rv64ua-p-amoor_d new file mode 100644 index 0000000..3a4b2de Binary files /dev/null and b/Tests/isa/rv64ua-p-amoor_d differ diff --git a/Tests/isa/rv64ua-p-amoor_d.dump b/Tests/isa/rv64ua-p-amoor_d.dump new file mode 100644 index 0000000..0248704 --- /dev/null +++ b/Tests/isa/rv64ua-p-amoor_d.dump @@ -0,0 +1,126 @@ + +rv64ua-p-amoor_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: 40b6b72f amoor.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 03d71e63 bne a4,t4,80000158 + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79663 bne a5,t4,80000158 + +0000000080000130 : + 80000130: 00100593 li a1,1 + 80000134: 40b6b72f amoor.d a4,a1,(a3) + 80000138: 80000e93 li t4,-2048 + 8000013c: 00400193 li gp,4 + 80000140: 01d71c63 bne a4,t4,80000158 + +0000000080000144 : + 80000144: 0006b783 ld a5,0(a3) + 80000148: 80100e93 li t4,-2047 + 8000014c: 00500193 li gp,5 + 80000150: 01d79463 bne a5,t4,80000158 + 80000154: 00301c63 bne zero,gp,8000016c + +0000000080000158 : + 80000158: 0ff0000f fence + 8000015c: 00018063 beqz gp,8000015c + 80000160: 00119193 slli gp,gp,0x1 + 80000164: 0011e193 ori gp,gp,1 + 80000168: 00000073 ecall + +000000008000016c : + 8000016c: 0ff0000f fence + 80000170: 00100193 li gp,1 + 80000174: 00000073 ecall + 80000178: c0001073 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amoor_w b/Tests/isa/rv64ua-p-amoor_w new file mode 100644 index 0000000..6daf724 Binary files /dev/null and b/Tests/isa/rv64ua-p-amoor_w differ diff --git a/Tests/isa/rv64ua-p-amoor_w.dump b/Tests/isa/rv64ua-p-amoor_w.dump new file mode 100644 index 0000000..d20d20a --- /dev/null +++ b/Tests/isa/rv64ua-p-amoor_w.dump @@ -0,0 +1,126 @@ + +rv64ua-p-amoor_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: 40b6a72f amoor.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 03d71e63 bne a4,t4,80000158 + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79663 bne a5,t4,80000158 + +0000000080000130 : + 80000130: 00100593 li a1,1 + 80000134: 40b6a72f amoor.w a4,a1,(a3) + 80000138: 80000e93 li t4,-2048 + 8000013c: 00400193 li gp,4 + 80000140: 01d71c63 bne a4,t4,80000158 + +0000000080000144 : + 80000144: 0006a783 lw a5,0(a3) + 80000148: 80100e93 li t4,-2047 + 8000014c: 00500193 li gp,5 + 80000150: 01d79463 bne a5,t4,80000158 + 80000154: 00301c63 bne zero,gp,8000016c + +0000000080000158 : + 80000158: 0ff0000f fence + 8000015c: 00018063 beqz gp,8000015c + 80000160: 00119193 slli gp,gp,0x1 + 80000164: 0011e193 ori gp,gp,1 + 80000168: 00000073 ecall + +000000008000016c : + 8000016c: 0ff0000f fence + 80000170: 00100193 li gp,1 + 80000174: 00000073 ecall + 80000178: c0001073 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amoswap_d b/Tests/isa/rv64ua-p-amoswap_d new file mode 100644 index 0000000..f6cc017 Binary files /dev/null and b/Tests/isa/rv64ua-p-amoswap_d differ diff --git a/Tests/isa/rv64ua-p-amoswap_d.dump b/Tests/isa/rv64ua-p-amoswap_d.dump new file mode 100644 index 0000000..f61e23b --- /dev/null +++ b/Tests/isa/rv64ua-p-amoswap_d.dump @@ -0,0 +1,124 @@ + +rv64ua-p-amoswap_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: 08b6b72f amoswap.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71263 bne a4,t4,80000160 + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79a63 bne a5,t4,80000160 + +0000000080000130 : + 80000130: 0010059b addiw a1,zero,1 + 80000134: 01f59593 slli a1,a1,0x1f + 80000138: 08b6b72f amoswap.d a4,a1,(a3) + 8000013c: 80000e93 li t4,-2048 + 80000140: 00400193 li gp,4 + 80000144: 01d71e63 bne a4,t4,80000160 + +0000000080000148 : + 80000148: 0006b783 ld a5,0(a3) + 8000014c: 00100e9b addiw t4,zero,1 + 80000150: 01fe9e93 slli t4,t4,0x1f + 80000154: 00500193 li gp,5 + 80000158: 01d79463 bne a5,t4,80000160 + 8000015c: 00301c63 bne zero,gp,80000174 + +0000000080000160 : + 80000160: 0ff0000f fence + 80000164: 00018063 beqz gp,80000164 + 80000168: 00119193 slli gp,gp,0x1 + 8000016c: 0011e193 ori gp,gp,1 + 80000170: 00000073 ecall + +0000000080000174 : + 80000174: 0ff0000f fence + 80000178: 00100193 li gp,1 + 8000017c: 00000073 ecall + 80000180: c0001073 unimp diff --git a/Tests/isa/rv64ua-p-amoswap_w b/Tests/isa/rv64ua-p-amoswap_w new file mode 100644 index 0000000..df44820 Binary files /dev/null and b/Tests/isa/rv64ua-p-amoswap_w differ diff --git a/Tests/isa/rv64ua-p-amoswap_w.dump b/Tests/isa/rv64ua-p-amoswap_w.dump new file mode 100644 index 0000000..e43f382 --- /dev/null +++ b/Tests/isa/rv64ua-p-amoswap_w.dump @@ -0,0 +1,125 @@ + +rv64ua-p-amoswap_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: 08b6a72f amoswap.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71063 bne a4,t4,8000015c + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000e93 li t4,-2048 + 80000128: 00300193 li gp,3 + 8000012c: 03d79863 bne a5,t4,8000015c + +0000000080000130 : + 80000130: 0010059b addiw a1,zero,1 + 80000134: 01f59593 slli a1,a1,0x1f + 80000138: 08b6a72f amoswap.w a4,a1,(a3) + 8000013c: 80000e93 li t4,-2048 + 80000140: 00400193 li gp,4 + 80000144: 01d71c63 bne a4,t4,8000015c + +0000000080000148 : + 80000148: 0006a783 lw a5,0(a3) + 8000014c: 80000eb7 lui t4,0x80000 + 80000150: 00500193 li gp,5 + 80000154: 01d79463 bne a5,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amoxor_d b/Tests/isa/rv64ua-p-amoxor_d new file mode 100644 index 0000000..e62a9e3 Binary files /dev/null and b/Tests/isa/rv64ua-p-amoxor_d differ diff --git a/Tests/isa/rv64ua-p-amoxor_d.dump b/Tests/isa/rv64ua-p-amoxor_d.dump new file mode 100644 index 0000000..992a22e --- /dev/null +++ b/Tests/isa/rv64ua-p-amoxor_d.dump @@ -0,0 +1,155 @@ + +rv64ua-p-amoxor_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6b023 sd a0,0(a3) + 80000110: 20b6b72f amoxor.d a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71463 bne a4,t4,80000164 + +0000000080000120 : + 80000120: 0006b783 ld a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 800e8e9b addiw t4,t4,-2048 + 8000012c: 00300193 li gp,3 + 80000130: 03d79a63 bne a5,t4,80000164 + +0000000080000134 : + 80000134: 00100593 li a1,1 + 80000138: 20b6b72f amoxor.d a4,a1,(a3) + 8000013c: 80000eb7 lui t4,0x80000 + 80000140: 800e8e9b addiw t4,t4,-2048 + 80000144: 00400193 li gp,4 + 80000148: 01d71e63 bne a4,t4,80000164 + +000000008000014c : + 8000014c: 0006b783 ld a5,0(a3) + 80000150: 80000eb7 lui t4,0x80000 + 80000154: 801e8e9b addiw t4,t4,-2047 + 80000158: 00500193 li gp,5 + 8000015c: 01d79463 bne a5,t4,80000164 + 80000160: 00301c63 bne zero,gp,80000178 + +0000000080000164 : + 80000164: 0ff0000f fence + 80000168: 00018063 beqz gp,80000168 + 8000016c: 00119193 slli gp,gp,0x1 + 80000170: 0011e193 ori gp,gp,1 + 80000174: 00000073 ecall + +0000000080000178 : + 80000178: 0ff0000f fence + 8000017c: 00100193 li gp,1 + 80000180: 00000073 ecall + 80000184: c0001073 unimp + 80000188: 0000 unimp + 8000018a: 0000 unimp + 8000018c: 0000 unimp + 8000018e: 0000 unimp + 80000190: 0000 unimp + 80000192: 0000 unimp + 80000194: 0000 unimp + 80000196: 0000 unimp + 80000198: 0000 unimp + 8000019a: 0000 unimp + 8000019c: 0000 unimp + 8000019e: 0000 unimp + 800001a0: 0000 unimp + 800001a2: 0000 unimp + 800001a4: 0000 unimp + 800001a6: 0000 unimp + 800001a8: 0000 unimp + 800001aa: 0000 unimp + 800001ac: 0000 unimp + 800001ae: 0000 unimp + 800001b0: 0000 unimp + 800001b2: 0000 unimp + 800001b4: 0000 unimp + 800001b6: 0000 unimp + 800001b8: 0000 unimp + 800001ba: 0000 unimp + 800001bc: 0000 unimp + 800001be: 0000 unimp + 800001c0: 0000 unimp + 800001c2: 0000 unimp diff --git a/Tests/isa/rv64ua-p-amoxor_w b/Tests/isa/rv64ua-p-amoxor_w new file mode 100644 index 0000000..2cbba75 Binary files /dev/null and b/Tests/isa/rv64ua-p-amoxor_w differ diff --git a/Tests/isa/rv64ua-p-amoxor_w.dump b/Tests/isa/rv64ua-p-amoxor_w.dump new file mode 100644 index 0000000..6bca3f6 --- /dev/null +++ b/Tests/isa/rv64ua-p-amoxor_w.dump @@ -0,0 +1,153 @@ + +rv64ua-p-amoxor_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 80000537 lui a0,0x80000 + 80000100: 80000593 li a1,-2048 + 80000104: 00002697 auipc a3,0x2 + 80000108: efc68693 addi a3,a3,-260 # 80002000 + 8000010c: 00a6a023 sw a0,0(a3) + 80000110: 20b6a72f amoxor.w a4,a1,(a3) + 80000114: 80000eb7 lui t4,0x80000 + 80000118: 00200193 li gp,2 + 8000011c: 05d71863 bne a4,t4,8000016c + +0000000080000120 : + 80000120: 0006a783 lw a5,0(a3) + 80000124: 80000eb7 lui t4,0x80000 + 80000128: 800e8e9b addiw t4,t4,-2048 + 8000012c: 00300193 li gp,3 + 80000130: 03d79e63 bne a5,t4,8000016c + +0000000080000134 : + 80000134: 0030059b addiw a1,zero,3 + 80000138: 01e59593 slli a1,a1,0x1e + 8000013c: 00158593 addi a1,a1,1 + 80000140: 20b6a72f amoxor.w a4,a1,(a3) + 80000144: 80000eb7 lui t4,0x80000 + 80000148: 800e8e9b addiw t4,t4,-2048 + 8000014c: 00400193 li gp,4 + 80000150: 01d71e63 bne a4,t4,8000016c + +0000000080000154 : + 80000154: 0006a783 lw a5,0(a3) + 80000158: c0000eb7 lui t4,0xc0000 + 8000015c: 801e8e9b addiw t4,t4,-2047 + 80000160: 00500193 li gp,5 + 80000164: 01d79463 bne a5,t4,8000016c + 80000168: 00301c63 bne zero,gp,80000180 + +000000008000016c : + 8000016c: 0ff0000f fence + 80000170: 00018063 beqz gp,80000170 + 80000174: 00119193 slli gp,gp,0x1 + 80000178: 0011e193 ori gp,gp,1 + 8000017c: 00000073 ecall + +0000000080000180 : + 80000180: 0ff0000f fence + 80000184: 00100193 li gp,1 + 80000188: 00000073 ecall + 8000018c: c0001073 unimp + 80000190: 0000 unimp + 80000192: 0000 unimp + 80000194: 0000 unimp + 80000196: 0000 unimp + 80000198: 0000 unimp + 8000019a: 0000 unimp + 8000019c: 0000 unimp + 8000019e: 0000 unimp + 800001a0: 0000 unimp + 800001a2: 0000 unimp + 800001a4: 0000 unimp + 800001a6: 0000 unimp + 800001a8: 0000 unimp + 800001aa: 0000 unimp + 800001ac: 0000 unimp + 800001ae: 0000 unimp + 800001b0: 0000 unimp + 800001b2: 0000 unimp + 800001b4: 0000 unimp + 800001b6: 0000 unimp + 800001b8: 0000 unimp + 800001ba: 0000 unimp + 800001bc: 0000 unimp + 800001be: 0000 unimp + 800001c0: 0000 unimp + 800001c2: 0000 unimp diff --git a/Tests/isa/rv64ua-p-lrsc b/Tests/isa/rv64ua-p-lrsc new file mode 100644 index 0000000..9557d54 Binary files /dev/null and b/Tests/isa/rv64ua-p-lrsc differ diff --git a/Tests/isa/rv64ua-p-lrsc.dump b/Tests/isa/rv64ua-p-lrsc.dump new file mode 100644 index 0000000..4aec511 --- /dev/null +++ b/Tests/isa/rv64ua-p-lrsc.dump @@ -0,0 +1,178 @@ + +rv64ua-p-lrsc: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + 800000fc: 00002517 auipc a0,0x2 + 80000100: f0450513 addi a0,a0,-252 # 80002000 + 80000104: 00100593 li a1,1 + 80000108: 00b5262f amoadd.w a2,a1,(a0) + 8000010c: 00100693 li a3,1 + 80000110: fed67ee3 bleu a3,a2,8000010c + 80000114: 00052583 lw a1,0(a0) + 80000118: fed5eee3 bltu a1,a3,80000114 + +000000008000011c : + 8000011c: 00002517 auipc a0,0x2 + 80000120: eec50513 addi a0,a0,-276 # 80002008 + 80000124: 1805272f sc.w a4,zero,(a0) + 80000128: 00100e93 li t4,1 + 8000012c: 00200193 li gp,2 + 80000130: 09d71863 bne a4,t4,800001c0 + +0000000080000134 : + 80000134: 00002517 auipc a0,0x2 + 80000138: ed450513 addi a0,a0,-300 # 80002008 + 8000013c: 40050593 addi a1,a0,1024 + 80000140: 1005a5af lr.w a1,(a1) + 80000144: 18b5272f sc.w a4,a1,(a0) + 80000148: 00100e93 li t4,1 + 8000014c: 00300193 li gp,3 + 80000150: 07d71863 bne a4,t4,800001c0 + 80000154: 00002517 auipc a0,0x2 + 80000158: eb450513 addi a0,a0,-332 # 80002008 + 8000015c: 40000593 li a1,1024 + 80000160: 00160613 addi a2,a2,1 + 80000164: 1005272f lr.w a4,(a0) + 80000168: 00c70733 add a4,a4,a2 + 8000016c: 18e5272f sc.w a4,a4,(a0) + 80000170: fe071ae3 bnez a4,80000164 + 80000174: fff58593 addi a1,a1,-1 + 80000178: fe0596e3 bnez a1,80000164 + 8000017c: 00002517 auipc a0,0x2 + 80000180: e8850513 addi a0,a0,-376 # 80002004 + 80000184: 00100593 li a1,1 + 80000188: 00b5202f amoadd.w zero,a1,(a0) + 8000018c: 00052583 lw a1,0(a0) + 80000190: fed5cee3 blt a1,a3,8000018c + 80000194: 0ff0000f fence + +0000000080000198 : + 80000198: 00002517 auipc a0,0x2 + 8000019c: e7052503 lw a0,-400(a0) # 80002008 + 800001a0: 00969593 slli a1,a3,0x9 + 800001a4: 40b50533 sub a0,a0,a1 + 800001a8: fff68693 addi a3,a3,-1 + 800001ac: fe06dce3 bgez a3,800001a4 + 800001b0: 00000e93 li t4,0 + 800001b4: 00400193 li gp,4 + 800001b8: 01d51463 bne a0,t4,800001c0 + 800001bc: 00301c63 bne zero,gp,800001d4 + +00000000800001c0 : + 800001c0: 0ff0000f fence + 800001c4: 00018063 beqz gp,800001c4 + 800001c8: 00119193 slli gp,gp,0x1 + 800001cc: 0011e193 ori gp,gp,1 + 800001d0: 00000073 ecall + +00000000800001d4 : + 800001d4: 0ff0000f fence + 800001d8: 00100193 li gp,1 + 800001dc: 00000073 ecall + 800001e0: c0001073 unimp + 800001e4: 0000 unimp + 800001e6: 0000 unimp + 800001e8: 0000 unimp + 800001ea: 0000 unimp + 800001ec: 0000 unimp + 800001ee: 0000 unimp + 800001f0: 0000 unimp + 800001f2: 0000 unimp + 800001f4: 0000 unimp + 800001f6: 0000 unimp + 800001f8: 0000 unimp + 800001fa: 0000 unimp + 800001fc: 0000 unimp + 800001fe: 0000 unimp + 80000200: 0000 unimp + 80000202: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 0000 unimp + +0000000080002004 : + 80002004: 0000 unimp + 80002006: 0000 unimp + +0000000080002008 : + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64ua-v-amoadd_d b/Tests/isa/rv64ua-v-amoadd_d new file mode 100644 index 0000000..0c8426a Binary files /dev/null and b/Tests/isa/rv64ua-v-amoadd_d differ diff --git a/Tests/isa/rv64ua-v-amoadd_d.dump b/Tests/isa/rv64ua-v-amoadd_d.dump new file mode 100644 index 0000000..6e2c614 --- /dev/null +++ b/Tests/isa/rv64ua-v-amoadd_d.dump @@ -0,0 +1,874 @@ + +rv64ua-v-amoadd_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 70068693 addi a3,a3,1792 # 80002b58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 73460613 addi a2,a2,1844 # 80002be8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6fc60613 addi a2,a2,1788 # 80002c00 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 64c68693 addi a3,a3,1612 # 80002ba0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 66868693 addi a3,a3,1640 # 80002cd8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5e860613 addi a2,a2,1512 # 80002cb0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 51c68693 addi a3,a3,1308 # 80002d08 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 43c68693 addi a3,a3,1084 # 80002c78 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3cc68693 addi a3,a3,972 # 80002c40 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03e00793 li a5,62 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0f6267b7 lui a5,0xf626 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 79178793 addi a5,a5,1937 # f626791 <_start-0x709d986f> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: 00b6b72f amoadd.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71863 bne a4,t4,80002b38 + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: fff00e9b addiw t4,zero,-1 + 80002af4: 01fe9e93 slli t4,t4,0x1f + 80002af8: 800e8e93 addi t4,t4,-2048 # ffffffff7ffff800 <_end+0xfffffffeffff7010> + 80002afc: 00300193 li gp,3 + 80002b00: 03d79c63 bne a5,t4,80002b38 + +0000000080002b04 : + 80002b04: 00b6b72f amoadd.d a4,a1,(a3) + 80002b08: fff00e9b addiw t4,zero,-1 + 80002b0c: 01fe9e93 slli t4,t4,0x1f + 80002b10: 800e8e93 addi t4,t4,-2048 + 80002b14: 00400193 li gp,4 + 80002b18: 03d71063 bne a4,t4,80002b38 + +0000000080002b1c : + 80002b1c: 0006b783 ld a5,0(a3) + 80002b20: fff80eb7 lui t4,0xfff80 + 80002b24: fffe8e9b addiw t4,t4,-1 + 80002b28: 00ce9e93 slli t4,t4,0xc + 80002b2c: 00500193 li gp,5 + 80002b30: 01d79463 bne a5,t4,80002b38 + 80002b34: 00301a63 bne zero,gp,80002b48 + +0000000080002b38 : + 80002b38: 00119513 slli a0,gp,0x1 + 80002b3c: 00050063 beqz a0,80002b3c + 80002b40: 00156513 ori a0,a0,1 + 80002b44: 00000073 ecall + +0000000080002b48 : + 80002b48: 00100513 li a0,1 + 80002b4c: 00000073 ecall + 80002b50: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoadd_w b/Tests/isa/rv64ua-v-amoadd_w new file mode 100644 index 0000000..2bbcd43 Binary files /dev/null and b/Tests/isa/rv64ua-v-amoadd_w differ diff --git a/Tests/isa/rv64ua-v-amoadd_w.dump b/Tests/isa/rv64ua-v-amoadd_w.dump new file mode 100644 index 0000000..b8ca9c8 --- /dev/null +++ b/Tests/isa/rv64ua-v-amoadd_w.dump @@ -0,0 +1,871 @@ + +rv64ua-v-amoadd_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00100793 li a5,1 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0806d7b7 lui a5,0x806d + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 4f578793 addi a5,a5,1269 # 806d4f5 <_start-0x77f92b0b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: 00b6a72f amoadd.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71263 bne a4,t4,80002b2c + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 800e8e9b addiw t4,t4,-2048 + 80002af8: 00300193 li gp,3 + 80002afc: 03d79863 bne a5,t4,80002b2c + +0000000080002b00 : + 80002b00: 800005b7 lui a1,0x80000 + 80002b04: 00b6a72f amoadd.w a4,a1,(a3) + 80002b08: 80000eb7 lui t4,0x80000 + 80002b0c: 800e8e9b addiw t4,t4,-2048 + 80002b10: 00400193 li gp,4 + 80002b14: 01d71c63 bne a4,t4,80002b2c + +0000000080002b18 : + 80002b18: 0006a783 lw a5,0(a3) + 80002b1c: 80000e93 li t4,-2048 + 80002b20: 00500193 li gp,5 + 80002b24: 01d79463 bne a5,t4,80002b2c + 80002b28: 00301a63 bne zero,gp,80002b3c + +0000000080002b2c : + 80002b2c: 00119513 slli a0,gp,0x1 + 80002b30: 00050063 beqz a0,80002b30 + 80002b34: 00156513 ori a0,a0,1 + 80002b38: 00000073 ecall + +0000000080002b3c : + 80002b3c: 00100513 li a0,1 + 80002b40: 00000073 ecall + 80002b44: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoand_d b/Tests/isa/rv64ua-v-amoand_d new file mode 100644 index 0000000..a11fcf4 Binary files /dev/null and b/Tests/isa/rv64ua-v-amoand_d differ diff --git a/Tests/isa/rv64ua-v-amoand_d.dump b/Tests/isa/rv64ua-v-amoand_d.dump new file mode 100644 index 0000000..89e4722 --- /dev/null +++ b/Tests/isa/rv64ua-v-amoand_d.dump @@ -0,0 +1,871 @@ + +rv64ua-v-amoand_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02800793 li a5,40 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 02f8b7b7 lui a5,0x2f8b + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 4c878793 addi a5,a5,1224 # 2f8b4c8 <_start-0x7d074b38> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: 60b6b72f amoand.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71263 bne a4,t4,80002b2c + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79a63 bne a5,t4,80002b2c + +0000000080002afc : + 80002afc: 0010059b addiw a1,zero,1 + 80002b00: 01f59593 slli a1,a1,0x1f + 80002b04: 60b6b72f amoand.d a4,a1,(a3) + 80002b08: 80000eb7 lui t4,0x80000 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71e63 bne a4,t4,80002b2c + +0000000080002b14 : + 80002b14: 0006b783 ld a5,0(a3) + 80002b18: 00100e9b addiw t4,zero,1 + 80002b1c: 01fe9e93 slli t4,t4,0x1f + 80002b20: 00500193 li gp,5 + 80002b24: 01d79463 bne a5,t4,80002b2c + 80002b28: 00301a63 bne zero,gp,80002b3c + +0000000080002b2c : + 80002b2c: 00119513 slli a0,gp,0x1 + 80002b30: 00050063 beqz a0,80002b30 + 80002b34: 00156513 ori a0,a0,1 + 80002b38: 00000073 ecall + +0000000080002b3c : + 80002b3c: 00100513 li a0,1 + 80002b40: 00000073 ecall + 80002b44: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoand_w b/Tests/isa/rv64ua-v-amoand_w new file mode 100644 index 0000000..aa702b0 Binary files /dev/null and b/Tests/isa/rv64ua-v-amoand_w differ diff --git a/Tests/isa/rv64ua-v-amoand_w.dump b/Tests/isa/rv64ua-v-amoand_w.dump new file mode 100644 index 0000000..0fdbc13 --- /dev/null +++ b/Tests/isa/rv64ua-v-amoand_w.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amoand_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00900793 li a5,9 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 068a27b7 lui a5,0x68a2 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: d4878793 addi a5,a5,-696 # 68a1d48 <_start-0x7975e2b8> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: 60b6a72f amoand.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: 0010059b addiw a1,zero,1 + 80002b00: 01f59593 slli a1,a1,0x1f + 80002b04: 60b6a72f amoand.w a4,a1,(a3) + 80002b08: 80000eb7 lui t4,0x80000 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006a783 lw a5,0(a3) + 80002b18: 80000eb7 lui t4,0x80000 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amomax_d b/Tests/isa/rv64ua-v-amomax_d new file mode 100644 index 0000000..fc37e5e Binary files /dev/null and b/Tests/isa/rv64ua-v-amomax_d differ diff --git a/Tests/isa/rv64ua-v-amomax_d.dump b/Tests/isa/rv64ua-v-amomax_d.dump new file mode 100644 index 0000000..d69d15d --- /dev/null +++ b/Tests/isa/rv64ua-v-amomax_d.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amomax_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03c00793 li a5,60 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 09d2d7b7 lui a5,0x9d2d + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 6b578793 addi a5,a5,1717 # 9d2d6b5 <_start-0x762d294b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: a0b6b72f amomax.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: 00100593 li a1,1 + 80002b00: 0006b023 sd zero,0(a3) + 80002b04: a0b6b72f amomax.d a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006b783 ld a5,0(a3) + 80002b18: 00100e93 li t4,1 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amomax_w b/Tests/isa/rv64ua-v-amomax_w new file mode 100644 index 0000000..ec50cc8 Binary files /dev/null and b/Tests/isa/rv64ua-v-amomax_w differ diff --git a/Tests/isa/rv64ua-v-amomax_w.dump b/Tests/isa/rv64ua-v-amomax_w.dump new file mode 100644 index 0000000..eb204ee --- /dev/null +++ b/Tests/isa/rv64ua-v-amomax_w.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amomax_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02700793 li a5,39 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 06a237b7 lui a5,0x6a23 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 87378793 addi a5,a5,-1933 # 6a22873 <_start-0x795dd78d> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: a0b6a72f amomax.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: 00100593 li a1,1 + 80002b00: 0006a023 sw zero,0(a3) + 80002b04: a0b6a72f amomax.w a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006a783 lw a5,0(a3) + 80002b18: 00100e93 li t4,1 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amomaxu_d b/Tests/isa/rv64ua-v-amomaxu_d new file mode 100644 index 0000000..7815def Binary files /dev/null and b/Tests/isa/rv64ua-v-amomaxu_d differ diff --git a/Tests/isa/rv64ua-v-amomaxu_d.dump b/Tests/isa/rv64ua-v-amomaxu_d.dump new file mode 100644 index 0000000..271a03c --- /dev/null +++ b/Tests/isa/rv64ua-v-amomaxu_d.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amomaxu_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03700793 li a5,55 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 00b117b7 lui a5,0xb11 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: cc678793 addi a5,a5,-826 # b10cc6 <_start-0x7f4ef33a> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: e0b6b72f amomaxu.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: fff00593 li a1,-1 + 80002b00: 0006b023 sd zero,0(a3) + 80002b04: e0b6b72f amomaxu.d a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006b783 ld a5,0(a3) + 80002b18: fff00e93 li t4,-1 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amomaxu_w b/Tests/isa/rv64ua-v-amomaxu_w new file mode 100644 index 0000000..df26d77 Binary files /dev/null and b/Tests/isa/rv64ua-v-amomaxu_w differ diff --git a/Tests/isa/rv64ua-v-amomaxu_w.dump b/Tests/isa/rv64ua-v-amomaxu_w.dump new file mode 100644 index 0000000..d6f336e --- /dev/null +++ b/Tests/isa/rv64ua-v-amomaxu_w.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amomaxu_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00700793 li a5,7 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0d8487b7 lui a5,0xd848 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: c5e78793 addi a5,a5,-930 # d847c5e <_start-0x727b83a2> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: e0b6a72f amomaxu.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: fff00593 li a1,-1 + 80002b00: 0006a023 sw zero,0(a3) + 80002b04: e0b6a72f amomaxu.w a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006a783 lw a5,0(a3) + 80002b18: fff00e93 li t4,-1 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amomin_d b/Tests/isa/rv64ua-v-amomin_d new file mode 100644 index 0000000..9c57bd3 Binary files /dev/null and b/Tests/isa/rv64ua-v-amomin_d differ diff --git a/Tests/isa/rv64ua-v-amomin_d.dump b/Tests/isa/rv64ua-v-amomin_d.dump new file mode 100644 index 0000000..a97febd --- /dev/null +++ b/Tests/isa/rv64ua-v-amomin_d.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amomin_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00500793 li a5,5 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0353d7b7 lui a5,0x353d + 80002a70: 000805b7 lui a1,0x80 + 80002a74: a0778793 addi a5,a5,-1529 # 353ca07 <_start-0x7cac35f9> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: 80b6b72f amomin.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: fff00593 li a1,-1 + 80002b00: 0006b023 sd zero,0(a3) + 80002b04: 80b6b72f amomin.d a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006b783 ld a5,0(a3) + 80002b18: fff00e93 li t4,-1 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amomin_w b/Tests/isa/rv64ua-v-amomin_w new file mode 100644 index 0000000..588deb8 Binary files /dev/null and b/Tests/isa/rv64ua-v-amomin_w differ diff --git a/Tests/isa/rv64ua-v-amomin_w.dump b/Tests/isa/rv64ua-v-amomin_w.dump new file mode 100644 index 0000000..a436c95 --- /dev/null +++ b/Tests/isa/rv64ua-v-amomin_w.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amomin_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03800793 li a5,56 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0ccca7b7 lui a5,0xccca + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 0ea78793 addi a5,a5,234 # ccca0ea <_start-0x73335f16> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: 80b6a72f amomin.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: fff00593 li a1,-1 + 80002b00: 0006a023 sw zero,0(a3) + 80002b04: 80b6a72f amomin.w a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006a783 lw a5,0(a3) + 80002b18: fff00e93 li t4,-1 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amominu_d b/Tests/isa/rv64ua-v-amominu_d new file mode 100644 index 0000000..5a31f5b Binary files /dev/null and b/Tests/isa/rv64ua-v-amominu_d differ diff --git a/Tests/isa/rv64ua-v-amominu_d.dump b/Tests/isa/rv64ua-v-amominu_d.dump new file mode 100644 index 0000000..693d6a6 --- /dev/null +++ b/Tests/isa/rv64ua-v-amominu_d.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amominu_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02800793 li a5,40 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 08b4f7b7 lui a5,0x8b4f + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 5cb78793 addi a5,a5,1483 # 8b4f5cb <_start-0x774b0a35> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: c0b6b72f amominu.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: fff00593 li a1,-1 + 80002b00: 0006b023 sd zero,0(a3) + 80002b04: c0b6b72f amominu.d a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006b783 ld a5,0(a3) + 80002b18: 00000e93 li t4,0 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amominu_w b/Tests/isa/rv64ua-v-amominu_w new file mode 100644 index 0000000..80eaf71 Binary files /dev/null and b/Tests/isa/rv64ua-v-amominu_w differ diff --git a/Tests/isa/rv64ua-v-amominu_w.dump b/Tests/isa/rv64ua-v-amominu_w.dump new file mode 100644 index 0000000..ac8240d --- /dev/null +++ b/Tests/isa/rv64ua-v-amominu_w.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amominu_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01500793 li a5,21 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 083c07b7 lui a5,0x83c0 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 36f78793 addi a5,a5,879 # 83c036f <_start-0x77c3fc91> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: c0b6a72f amominu.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: fff00593 li a1,-1 + 80002b00: 0006a023 sw zero,0(a3) + 80002b04: c0b6a72f amominu.w a4,a1,(a3) + 80002b08: 00000e93 li t4,0 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006a783 lw a5,0(a3) + 80002b18: 00000e93 li t4,0 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoor_d b/Tests/isa/rv64ua-v-amoor_d new file mode 100644 index 0000000..7796356 Binary files /dev/null and b/Tests/isa/rv64ua-v-amoor_d differ diff --git a/Tests/isa/rv64ua-v-amoor_d.dump b/Tests/isa/rv64ua-v-amoor_d.dump new file mode 100644 index 0000000..6bf5fa1 --- /dev/null +++ b/Tests/isa/rv64ua-v-amoor_d.dump @@ -0,0 +1,869 @@ + +rv64ua-v-amoor_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6e868693 addi a3,a3,1768 # 80002b40 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 71c60613 addi a2,a2,1820 # 80002bd0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6e460613 addi a2,a2,1764 # 80002be8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63468693 addi a3,a3,1588 # 80002b88 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65068693 addi a3,a3,1616 # 80002cc0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d060613 addi a2,a2,1488 # 80002c98 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50468693 addi a3,a3,1284 # 80002cf0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42468693 addi a3,a3,1060 # 80002c60 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3b468693 addi a3,a3,948 # 80002c28 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02d00793 li a5,45 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 006937b7 lui a5,0x693 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: b1378793 addi a5,a5,-1261 # 692b13 <_start-0x7f96d4ed> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: 40b6b72f amoor.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 03d71e63 bne a4,t4,80002b24 + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79663 bne a5,t4,80002b24 + +0000000080002afc : + 80002afc: 00100593 li a1,1 + 80002b00: 40b6b72f amoor.d a4,a1,(a3) + 80002b04: 80000e93 li t4,-2048 + 80002b08: 00400193 li gp,4 + 80002b0c: 01d71c63 bne a4,t4,80002b24 + +0000000080002b10 : + 80002b10: 0006b783 ld a5,0(a3) + 80002b14: 80100e93 li t4,-2047 + 80002b18: 00500193 li gp,5 + 80002b1c: 01d79463 bne a5,t4,80002b24 + 80002b20: 00301a63 bne zero,gp,80002b34 + +0000000080002b24 : + 80002b24: 00119513 slli a0,gp,0x1 + 80002b28: 00050063 beqz a0,80002b28 + 80002b2c: 00156513 ori a0,a0,1 + 80002b30: 00000073 ecall + +0000000080002b34 : + 80002b34: 00100513 li a0,1 + 80002b38: 00000073 ecall + 80002b3c: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoor_w b/Tests/isa/rv64ua-v-amoor_w new file mode 100644 index 0000000..26b554f Binary files /dev/null and b/Tests/isa/rv64ua-v-amoor_w differ diff --git a/Tests/isa/rv64ua-v-amoor_w.dump b/Tests/isa/rv64ua-v-amoor_w.dump new file mode 100644 index 0000000..71a4ebe --- /dev/null +++ b/Tests/isa/rv64ua-v-amoor_w.dump @@ -0,0 +1,869 @@ + +rv64ua-v-amoor_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6e868693 addi a3,a3,1768 # 80002b40 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 71c60613 addi a2,a2,1820 # 80002bd0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6e460613 addi a2,a2,1764 # 80002be8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63468693 addi a3,a3,1588 # 80002b88 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65068693 addi a3,a3,1616 # 80002cc0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d060613 addi a2,a2,1488 # 80002c98 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50468693 addi a3,a3,1284 # 80002cf0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42468693 addi a3,a3,1060 # 80002c60 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3b468693 addi a3,a3,948 # 80002c28 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00f00793 li a5,15 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 092c77b7 lui a5,0x92c7 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: f3678793 addi a5,a5,-202 # 92c6f36 <_start-0x76d390ca> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: 40b6a72f amoor.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 03d71e63 bne a4,t4,80002b24 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79663 bne a5,t4,80002b24 + +0000000080002afc : + 80002afc: 00100593 li a1,1 + 80002b00: 40b6a72f amoor.w a4,a1,(a3) + 80002b04: 80000e93 li t4,-2048 + 80002b08: 00400193 li gp,4 + 80002b0c: 01d71c63 bne a4,t4,80002b24 + +0000000080002b10 : + 80002b10: 0006a783 lw a5,0(a3) + 80002b14: 80100e93 li t4,-2047 + 80002b18: 00500193 li gp,5 + 80002b1c: 01d79463 bne a5,t4,80002b24 + 80002b20: 00301a63 bne zero,gp,80002b34 + +0000000080002b24 : + 80002b24: 00119513 slli a0,gp,0x1 + 80002b28: 00050063 beqz a0,80002b28 + 80002b2c: 00156513 ori a0,a0,1 + 80002b30: 00000073 ecall + +0000000080002b34 : + 80002b34: 00100513 li a0,1 + 80002b38: 00000073 ecall + 80002b3c: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoswap_d b/Tests/isa/rv64ua-v-amoswap_d new file mode 100644 index 0000000..fe25dac Binary files /dev/null and b/Tests/isa/rv64ua-v-amoswap_d differ diff --git a/Tests/isa/rv64ua-v-amoswap_d.dump b/Tests/isa/rv64ua-v-amoswap_d.dump new file mode 100644 index 0000000..bcb607b --- /dev/null +++ b/Tests/isa/rv64ua-v-amoswap_d.dump @@ -0,0 +1,871 @@ + +rv64ua-v-amoswap_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03700793 li a5,55 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 039c87b7 lui a5,0x39c8 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: e8a78793 addi a5,a5,-374 # 39c7e8a <_start-0x7c638176> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: 08b6b72f amoswap.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71263 bne a4,t4,80002b2c + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79a63 bne a5,t4,80002b2c + +0000000080002afc : + 80002afc: 0010059b addiw a1,zero,1 + 80002b00: 01f59593 slli a1,a1,0x1f + 80002b04: 08b6b72f amoswap.d a4,a1,(a3) + 80002b08: 80000e93 li t4,-2048 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71e63 bne a4,t4,80002b2c + +0000000080002b14 : + 80002b14: 0006b783 ld a5,0(a3) + 80002b18: 00100e9b addiw t4,zero,1 + 80002b1c: 01fe9e93 slli t4,t4,0x1f + 80002b20: 00500193 li gp,5 + 80002b24: 01d79463 bne a5,t4,80002b2c + 80002b28: 00301a63 bne zero,gp,80002b3c + +0000000080002b2c : + 80002b2c: 00119513 slli a0,gp,0x1 + 80002b30: 00050063 beqz a0,80002b30 + 80002b34: 00156513 ori a0,a0,1 + 80002b38: 00000073 ecall + +0000000080002b3c : + 80002b3c: 00100513 li a0,1 + 80002b40: 00000073 ecall + 80002b44: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoswap_w b/Tests/isa/rv64ua-v-amoswap_w new file mode 100644 index 0000000..5a907be Binary files /dev/null and b/Tests/isa/rv64ua-v-amoswap_w differ diff --git a/Tests/isa/rv64ua-v-amoswap_w.dump b/Tests/isa/rv64ua-v-amoswap_w.dump new file mode 100644 index 0000000..2369b0d --- /dev/null +++ b/Tests/isa/rv64ua-v-amoswap_w.dump @@ -0,0 +1,870 @@ + +rv64ua-v-amoswap_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00d00793 li a5,13 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0788e7b7 lui a5,0x788e + 80002a70: 000805b7 lui a1,0x80 + 80002a74: c2478793 addi a5,a5,-988 # 788dc24 <_start-0x787723dc> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: 08b6a72f amoswap.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71063 bne a4,t4,80002b28 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000e93 li t4,-2048 + 80002af4: 00300193 li gp,3 + 80002af8: 03d79863 bne a5,t4,80002b28 + +0000000080002afc : + 80002afc: 0010059b addiw a1,zero,1 + 80002b00: 01f59593 slli a1,a1,0x1f + 80002b04: 08b6a72f amoswap.w a4,a1,(a3) + 80002b08: 80000e93 li t4,-2048 + 80002b0c: 00400193 li gp,4 + 80002b10: 01d71c63 bne a4,t4,80002b28 + +0000000080002b14 : + 80002b14: 0006a783 lw a5,0(a3) + 80002b18: 80000eb7 lui t4,0x80000 + 80002b1c: 00500193 li gp,5 + 80002b20: 01d79463 bne a5,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoxor_d b/Tests/isa/rv64ua-v-amoxor_d new file mode 100644 index 0000000..ede3c31 Binary files /dev/null and b/Tests/isa/rv64ua-v-amoxor_d differ diff --git a/Tests/isa/rv64ua-v-amoxor_d.dump b/Tests/isa/rv64ua-v-amoxor_d.dump new file mode 100644 index 0000000..6fa564d --- /dev/null +++ b/Tests/isa/rv64ua-v-amoxor_d.dump @@ -0,0 +1,872 @@ + +rv64ua-v-amoxor_d: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f868693 addi a3,a3,1784 # 80002b50 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72c60613 addi a2,a2,1836 # 80002be0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6f460613 addi a2,a2,1780 # 80002bf8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 64468693 addi a3,a3,1604 # 80002b98 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 66068693 addi a3,a3,1632 # 80002cd0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5e060613 addi a2,a2,1504 # 80002ca8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 51468693 addi a3,a3,1300 # 80002d00 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 43468693 addi a3,a3,1076 # 80002c70 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3c468693 addi a3,a3,964 # 80002c38 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02e00793 li a5,46 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a9e67b7 lui a5,0xa9e6 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 11178793 addi a5,a5,273 # a9e6111 <_start-0x75619eef> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6b023 sd a0,0(a3) + 80002adc: 20b6b72f amoxor.d a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71463 bne a4,t4,80002b30 + +0000000080002aec : + 80002aec: 0006b783 ld a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 800e8e9b addiw t4,t4,-2048 + 80002af8: 00300193 li gp,3 + 80002afc: 03d79a63 bne a5,t4,80002b30 + +0000000080002b00 : + 80002b00: 00100593 li a1,1 + 80002b04: 20b6b72f amoxor.d a4,a1,(a3) + 80002b08: 80000eb7 lui t4,0x80000 + 80002b0c: 800e8e9b addiw t4,t4,-2048 + 80002b10: 00400193 li gp,4 + 80002b14: 01d71e63 bne a4,t4,80002b30 + +0000000080002b18 : + 80002b18: 0006b783 ld a5,0(a3) + 80002b1c: 80000eb7 lui t4,0x80000 + 80002b20: 801e8e9b addiw t4,t4,-2047 + 80002b24: 00500193 li gp,5 + 80002b28: 01d79463 bne a5,t4,80002b30 + 80002b2c: 00301a63 bne zero,gp,80002b40 + +0000000080002b30 : + 80002b30: 00119513 slli a0,gp,0x1 + 80002b34: 00050063 beqz a0,80002b34 + 80002b38: 00156513 ori a0,a0,1 + 80002b3c: 00000073 ecall + +0000000080002b40 : + 80002b40: 00100513 li a0,1 + 80002b44: 00000073 ecall + 80002b48: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-amoxor_w b/Tests/isa/rv64ua-v-amoxor_w new file mode 100644 index 0000000..c3f4222 Binary files /dev/null and b/Tests/isa/rv64ua-v-amoxor_w differ diff --git a/Tests/isa/rv64ua-v-amoxor_w.dump b/Tests/isa/rv64ua-v-amoxor_w.dump new file mode 100644 index 0000000..6ced740 --- /dev/null +++ b/Tests/isa/rv64ua-v-amoxor_w.dump @@ -0,0 +1,874 @@ + +rv64ua-v-amoxor_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 70068693 addi a3,a3,1792 # 80002b58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 73460613 addi a2,a2,1844 # 80002be8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6fc60613 addi a2,a2,1788 # 80002c00 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 64c68693 addi a3,a3,1612 # 80002ba0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 66868693 addi a3,a3,1640 # 80002cd8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5e860613 addi a2,a2,1512 # 80002cb0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 51c68693 addi a3,a3,1308 # 80002d08 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 43c68693 addi a3,a3,1084 # 80002c78 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3cc68693 addi a3,a3,972 # 80002c40 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00600793 li a5,6 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 078757b7 lui a5,0x7875 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 2db78793 addi a5,a5,731 # 78752db <_start-0x7878ad25> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 80000537 lui a0,0x80000 + 80002acc: 80000593 li a1,-2048 + 80002ad0: 00000697 auipc a3,0x0 + 80002ad4: 53068693 addi a3,a3,1328 # 80003000 + 80002ad8: 00a6a023 sw a0,0(a3) + 80002adc: 20b6a72f amoxor.w a4,a1,(a3) + 80002ae0: 80000eb7 lui t4,0x80000 + 80002ae4: 00200193 li gp,2 + 80002ae8: 05d71863 bne a4,t4,80002b38 + +0000000080002aec : + 80002aec: 0006a783 lw a5,0(a3) + 80002af0: 80000eb7 lui t4,0x80000 + 80002af4: 800e8e9b addiw t4,t4,-2048 + 80002af8: 00300193 li gp,3 + 80002afc: 03d79e63 bne a5,t4,80002b38 + +0000000080002b00 : + 80002b00: 0030059b addiw a1,zero,3 + 80002b04: 01e59593 slli a1,a1,0x1e + 80002b08: 00158593 addi a1,a1,1 + 80002b0c: 20b6a72f amoxor.w a4,a1,(a3) + 80002b10: 80000eb7 lui t4,0x80000 + 80002b14: 800e8e9b addiw t4,t4,-2048 + 80002b18: 00400193 li gp,4 + 80002b1c: 01d71e63 bne a4,t4,80002b38 + +0000000080002b20 : + 80002b20: 0006a783 lw a5,0(a3) + 80002b24: c0000eb7 lui t4,0xc0000 + 80002b28: 801e8e9b addiw t4,t4,-2047 + 80002b2c: 00500193 li gp,5 + 80002b30: 01d79463 bne a5,t4,80002b38 + 80002b34: 00301a63 bne zero,gp,80002b48 + +0000000080002b38 : + 80002b38: 00119513 slli a0,gp,0x1 + 80002b3c: 00050063 beqz a0,80002b3c + 80002b40: 00156513 ori a0,a0,1 + 80002b44: 00000073 ecall + +0000000080002b48 : + 80002b48: 00100513 li a0,1 + 80002b4c: 00000073 ecall + 80002b50: c0001073 unimp diff --git a/Tests/isa/rv64ua-v-lrsc b/Tests/isa/rv64ua-v-lrsc new file mode 100644 index 0000000..bd68b26 Binary files /dev/null and b/Tests/isa/rv64ua-v-lrsc differ diff --git a/Tests/isa/rv64ua-v-lrsc.dump b/Tests/isa/rv64ua-v-lrsc.dump new file mode 100644 index 0000000..484d573 --- /dev/null +++ b/Tests/isa/rv64ua-v-lrsc.dump @@ -0,0 +1,909 @@ + +rv64ua-v-lrsc: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 75068693 addi a3,a3,1872 # 80002ba8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 78460613 addi a2,a2,1924 # 80002c38 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 74c60613 addi a2,a2,1868 # 80002c50 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 69c68693 addi a3,a3,1692 # 80002bf0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6b868693 addi a3,a3,1720 # 80002d28 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 63860613 addi a2,a2,1592 # 80002d00 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 56c68693 addi a3,a3,1388 # 80002d58 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 48c68693 addi a3,a3,1164 # 80002cc8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 41c68693 addi a3,a3,1052 # 80002c90 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02c00793 li a5,44 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0b4d77b7 lui a5,0xb4d7 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 59f78793 addi a5,a5,1439 # b4d759f <_start-0x74b28a61> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000517 auipc a0,0x0 + 80002acc: 53850513 addi a0,a0,1336 # 80003000 + 80002ad0: 00100593 li a1,1 + 80002ad4: 00b5262f amoadd.w a2,a1,(a0) + 80002ad8: 00100693 li a3,1 + 80002adc: fed67ee3 bleu a3,a2,80002ad8 + 80002ae0: 00052583 lw a1,0(a0) + 80002ae4: fed5eee3 bltu a1,a3,80002ae0 + +0000000080002ae8 : + 80002ae8: 00000517 auipc a0,0x0 + 80002aec: 52050513 addi a0,a0,1312 # 80003008 + 80002af0: 1805272f sc.w a4,zero,(a0) + 80002af4: 00100e93 li t4,1 + 80002af8: 00200193 li gp,2 + 80002afc: 09d71863 bne a4,t4,80002b8c + +0000000080002b00 : + 80002b00: 00000517 auipc a0,0x0 + 80002b04: 50850513 addi a0,a0,1288 # 80003008 + 80002b08: 40050593 addi a1,a0,1024 + 80002b0c: 1005a5af lr.w a1,(a1) + 80002b10: 18b5272f sc.w a4,a1,(a0) + 80002b14: 00100e93 li t4,1 + 80002b18: 00300193 li gp,3 + 80002b1c: 07d71863 bne a4,t4,80002b8c + 80002b20: 00000517 auipc a0,0x0 + 80002b24: 4e850513 addi a0,a0,1256 # 80003008 + 80002b28: 40000593 li a1,1024 + 80002b2c: 00160613 addi a2,a2,1 + 80002b30: 1005272f lr.w a4,(a0) + 80002b34: 00c70733 add a4,a4,a2 + 80002b38: 18e5272f sc.w a4,a4,(a0) + 80002b3c: fe071ae3 bnez a4,80002b30 + 80002b40: fff58593 addi a1,a1,-1 + 80002b44: fe0596e3 bnez a1,80002b30 + 80002b48: 00000517 auipc a0,0x0 + 80002b4c: 4bc50513 addi a0,a0,1212 # 80003004 + 80002b50: 00100593 li a1,1 + 80002b54: 00b5202f amoadd.w zero,a1,(a0) + 80002b58: 00052583 lw a1,0(a0) + 80002b5c: fed5cee3 blt a1,a3,80002b58 + 80002b60: 0ff0000f fence + +0000000080002b64 : + 80002b64: 00000517 auipc a0,0x0 + 80002b68: 4a452503 lw a0,1188(a0) # 80003008 + 80002b6c: 00969593 slli a1,a3,0x9 + 80002b70: 40b50533 sub a0,a0,a1 + 80002b74: fff68693 addi a3,a3,-1 + 80002b78: fe06dce3 bgez a3,80002b70 + 80002b7c: 00000e93 li t4,0 + 80002b80: 00400193 li gp,4 + 80002b84: 01d51463 bne a0,t4,80002b8c + 80002b88: 00301a63 bne zero,gp,80002b9c + +0000000080002b8c : + 80002b8c: 00119513 slli a0,gp,0x1 + 80002b90: 00050063 beqz a0,80002b90 + 80002b94: 00156513 ori a0,a0,1 + 80002b98: 00000073 ecall + +0000000080002b9c : + 80002b9c: 00100513 li a0,1 + 80002ba0: 00000073 ecall + 80002ba4: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 0000 unimp + +0000000080003004 : + 80003004: 0000 unimp + 80003006: 0000 unimp + +0000000080003008 : + 80003008: 0000 unimp + 8000300a: 0000 unimp diff --git a/Tests/isa/rv64uc-p-rvc b/Tests/isa/rv64uc-p-rvc new file mode 100644 index 0000000..8eb6a38 Binary files /dev/null and b/Tests/isa/rv64uc-p-rvc differ diff --git a/Tests/isa/rv64uc-p-rvc.dump b/Tests/isa/rv64uc-p-rvc.dump new file mode 100644 index 0000000..616e38f --- /dev/null +++ b/Tests/isa/rv64uc-p-rvc.dump @@ -0,0 +1,4878 @@ + +rv64uc-p-rvc: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00003f17 auipc t5,0x3 + 80000044: fc3f2023 sw gp,-64(t5) # 80003000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + 800000fc: 00200193 li gp,2 + 80000100: 29a00593 li a1,666 + +0000000080000104 : + 80000104: 6fb0106f j 80001ffe + +0000000080000108 : + 80000108: 3210 fld fa2,32(a2) + 8000010a: 7654 ld a3,168(a2) + 8000010c: ba98 fsd fa4,48(a3) + 8000010e: fedc sd a5,184(a3) + 80000110: 3210 fld fa2,32(a2) + 80000112: 7654 ld a3,168(a2) + 80000114: ba98 fsd fa4,48(a3) + 80000116: fedc sd a5,184(a3) + 80000118: 00000013 nop + 8000011c: 00000013 nop + 80000120: 00000013 nop + 80000124: 00000013 nop + 80000128: 00000013 nop + 8000012c: 00000013 nop + 80000130: 00000013 nop + 80000134: 00000013 nop + 80000138: 00000013 nop + 8000013c: 00000013 nop + 80000140: 00000013 nop + 80000144: 00000013 nop + 80000148: 00000013 nop + 8000014c: 00000013 nop + 80000150: 00000013 nop + 80000154: 00000013 nop + 80000158: 00000013 nop + 8000015c: 00000013 nop + 80000160: 00000013 nop + 80000164: 00000013 nop + 80000168: 00000013 nop + 8000016c: 00000013 nop + 80000170: 00000013 nop + 80000174: 00000013 nop + 80000178: 00000013 nop + 8000017c: 00000013 nop + 80000180: 00000013 nop + 80000184: 00000013 nop + 80000188: 00000013 nop + 8000018c: 00000013 nop + 80000190: 00000013 nop + 80000194: 00000013 nop + 80000198: 00000013 nop + 8000019c: 00000013 nop + 800001a0: 00000013 nop + 800001a4: 00000013 nop + 800001a8: 00000013 nop + 800001ac: 00000013 nop + 800001b0: 00000013 nop + 800001b4: 00000013 nop + 800001b8: 00000013 nop + 800001bc: 00000013 nop + 800001c0: 00000013 nop + 800001c4: 00000013 nop + 800001c8: 00000013 nop + 800001cc: 00000013 nop + 800001d0: 00000013 nop + 800001d4: 00000013 nop + 800001d8: 00000013 nop + 800001dc: 00000013 nop + 800001e0: 00000013 nop + 800001e4: 00000013 nop + 800001e8: 00000013 nop + 800001ec: 00000013 nop + 800001f0: 00000013 nop + 800001f4: 00000013 nop + 800001f8: 00000013 nop + 800001fc: 00000013 nop + 80000200: 00000013 nop + 80000204: 00000013 nop + 80000208: 00000013 nop + 8000020c: 00000013 nop + 80000210: 00000013 nop + 80000214: 00000013 nop + 80000218: 00000013 nop + 8000021c: 00000013 nop + 80000220: 00000013 nop + 80000224: 00000013 nop + 80000228: 00000013 nop + 8000022c: 00000013 nop + 80000230: 00000013 nop + 80000234: 00000013 nop + 80000238: 00000013 nop + 8000023c: 00000013 nop + 80000240: 00000013 nop + 80000244: 00000013 nop + 80000248: 00000013 nop + 8000024c: 00000013 nop + 80000250: 00000013 nop + 80000254: 00000013 nop + 80000258: 00000013 nop + 8000025c: 00000013 nop + 80000260: 00000013 nop + 80000264: 00000013 nop + 80000268: 00000013 nop + 8000026c: 00000013 nop + 80000270: 00000013 nop + 80000274: 00000013 nop + 80000278: 00000013 nop + 8000027c: 00000013 nop + 80000280: 00000013 nop + 80000284: 00000013 nop + 80000288: 00000013 nop + 8000028c: 00000013 nop + 80000290: 00000013 nop + 80000294: 00000013 nop + 80000298: 00000013 nop + 8000029c: 00000013 nop + 800002a0: 00000013 nop + 800002a4: 00000013 nop + 800002a8: 00000013 nop + 800002ac: 00000013 nop + 800002b0: 00000013 nop + 800002b4: 00000013 nop + 800002b8: 00000013 nop + 800002bc: 00000013 nop + 800002c0: 00000013 nop + 800002c4: 00000013 nop + 800002c8: 00000013 nop + 800002cc: 00000013 nop + 800002d0: 00000013 nop + 800002d4: 00000013 nop + 800002d8: 00000013 nop + 800002dc: 00000013 nop + 800002e0: 00000013 nop + 800002e4: 00000013 nop + 800002e8: 00000013 nop + 800002ec: 00000013 nop + 800002f0: 00000013 nop + 800002f4: 00000013 nop + 800002f8: 00000013 nop + 800002fc: 00000013 nop + 80000300: 00000013 nop + 80000304: 00000013 nop + 80000308: 00000013 nop + 8000030c: 00000013 nop + 80000310: 00000013 nop + 80000314: 00000013 nop + 80000318: 00000013 nop + 8000031c: 00000013 nop + 80000320: 00000013 nop + 80000324: 00000013 nop + 80000328: 00000013 nop + 8000032c: 00000013 nop + 80000330: 00000013 nop + 80000334: 00000013 nop + 80000338: 00000013 nop + 8000033c: 00000013 nop + 80000340: 00000013 nop + 80000344: 00000013 nop + 80000348: 00000013 nop + 8000034c: 00000013 nop + 80000350: 00000013 nop + 80000354: 00000013 nop + 80000358: 00000013 nop + 8000035c: 00000013 nop + 80000360: 00000013 nop + 80000364: 00000013 nop + 80000368: 00000013 nop + 8000036c: 00000013 nop + 80000370: 00000013 nop + 80000374: 00000013 nop + 80000378: 00000013 nop + 8000037c: 00000013 nop + 80000380: 00000013 nop + 80000384: 00000013 nop + 80000388: 00000013 nop + 8000038c: 00000013 nop + 80000390: 00000013 nop + 80000394: 00000013 nop + 80000398: 00000013 nop + 8000039c: 00000013 nop + 800003a0: 00000013 nop + 800003a4: 00000013 nop + 800003a8: 00000013 nop + 800003ac: 00000013 nop + 800003b0: 00000013 nop + 800003b4: 00000013 nop + 800003b8: 00000013 nop + 800003bc: 00000013 nop + 800003c0: 00000013 nop + 800003c4: 00000013 nop + 800003c8: 00000013 nop + 800003cc: 00000013 nop + 800003d0: 00000013 nop + 800003d4: 00000013 nop + 800003d8: 00000013 nop + 800003dc: 00000013 nop + 800003e0: 00000013 nop + 800003e4: 00000013 nop + 800003e8: 00000013 nop + 800003ec: 00000013 nop + 800003f0: 00000013 nop + 800003f4: 00000013 nop + 800003f8: 00000013 nop + 800003fc: 00000013 nop + 80000400: 00000013 nop + 80000404: 00000013 nop + 80000408: 00000013 nop + 8000040c: 00000013 nop + 80000410: 00000013 nop + 80000414: 00000013 nop + 80000418: 00000013 nop + 8000041c: 00000013 nop + 80000420: 00000013 nop + 80000424: 00000013 nop + 80000428: 00000013 nop + 8000042c: 00000013 nop + 80000430: 00000013 nop + 80000434: 00000013 nop + 80000438: 00000013 nop + 8000043c: 00000013 nop + 80000440: 00000013 nop + 80000444: 00000013 nop + 80000448: 00000013 nop + 8000044c: 00000013 nop + 80000450: 00000013 nop + 80000454: 00000013 nop + 80000458: 00000013 nop + 8000045c: 00000013 nop + 80000460: 00000013 nop + 80000464: 00000013 nop + 80000468: 00000013 nop + 8000046c: 00000013 nop + 80000470: 00000013 nop + 80000474: 00000013 nop + 80000478: 00000013 nop + 8000047c: 00000013 nop + 80000480: 00000013 nop + 80000484: 00000013 nop + 80000488: 00000013 nop + 8000048c: 00000013 nop + 80000490: 00000013 nop + 80000494: 00000013 nop + 80000498: 00000013 nop + 8000049c: 00000013 nop + 800004a0: 00000013 nop + 800004a4: 00000013 nop + 800004a8: 00000013 nop + 800004ac: 00000013 nop + 800004b0: 00000013 nop + 800004b4: 00000013 nop + 800004b8: 00000013 nop + 800004bc: 00000013 nop + 800004c0: 00000013 nop + 800004c4: 00000013 nop + 800004c8: 00000013 nop + 800004cc: 00000013 nop + 800004d0: 00000013 nop + 800004d4: 00000013 nop + 800004d8: 00000013 nop + 800004dc: 00000013 nop + 800004e0: 00000013 nop + 800004e4: 00000013 nop + 800004e8: 00000013 nop + 800004ec: 00000013 nop + 800004f0: 00000013 nop + 800004f4: 00000013 nop + 800004f8: 00000013 nop + 800004fc: 00000013 nop + 80000500: 00000013 nop + 80000504: 00000013 nop + 80000508: 00000013 nop + 8000050c: 00000013 nop + 80000510: 00000013 nop + 80000514: 00000013 nop + 80000518: 00000013 nop + 8000051c: 00000013 nop + 80000520: 00000013 nop + 80000524: 00000013 nop + 80000528: 00000013 nop + 8000052c: 00000013 nop + 80000530: 00000013 nop + 80000534: 00000013 nop + 80000538: 00000013 nop + 8000053c: 00000013 nop + 80000540: 00000013 nop + 80000544: 00000013 nop + 80000548: 00000013 nop + 8000054c: 00000013 nop + 80000550: 00000013 nop + 80000554: 00000013 nop + 80000558: 00000013 nop + 8000055c: 00000013 nop + 80000560: 00000013 nop + 80000564: 00000013 nop + 80000568: 00000013 nop + 8000056c: 00000013 nop + 80000570: 00000013 nop + 80000574: 00000013 nop + 80000578: 00000013 nop + 8000057c: 00000013 nop + 80000580: 00000013 nop + 80000584: 00000013 nop + 80000588: 00000013 nop + 8000058c: 00000013 nop + 80000590: 00000013 nop + 80000594: 00000013 nop + 80000598: 00000013 nop + 8000059c: 00000013 nop + 800005a0: 00000013 nop + 800005a4: 00000013 nop + 800005a8: 00000013 nop + 800005ac: 00000013 nop + 800005b0: 00000013 nop + 800005b4: 00000013 nop + 800005b8: 00000013 nop + 800005bc: 00000013 nop + 800005c0: 00000013 nop + 800005c4: 00000013 nop + 800005c8: 00000013 nop + 800005cc: 00000013 nop + 800005d0: 00000013 nop + 800005d4: 00000013 nop + 800005d8: 00000013 nop + 800005dc: 00000013 nop + 800005e0: 00000013 nop + 800005e4: 00000013 nop + 800005e8: 00000013 nop + 800005ec: 00000013 nop + 800005f0: 00000013 nop + 800005f4: 00000013 nop + 800005f8: 00000013 nop + 800005fc: 00000013 nop + 80000600: 00000013 nop + 80000604: 00000013 nop + 80000608: 00000013 nop + 8000060c: 00000013 nop + 80000610: 00000013 nop + 80000614: 00000013 nop + 80000618: 00000013 nop + 8000061c: 00000013 nop + 80000620: 00000013 nop + 80000624: 00000013 nop + 80000628: 00000013 nop + 8000062c: 00000013 nop + 80000630: 00000013 nop + 80000634: 00000013 nop + 80000638: 00000013 nop + 8000063c: 00000013 nop + 80000640: 00000013 nop + 80000644: 00000013 nop + 80000648: 00000013 nop + 8000064c: 00000013 nop + 80000650: 00000013 nop + 80000654: 00000013 nop + 80000658: 00000013 nop + 8000065c: 00000013 nop + 80000660: 00000013 nop + 80000664: 00000013 nop + 80000668: 00000013 nop + 8000066c: 00000013 nop + 80000670: 00000013 nop + 80000674: 00000013 nop + 80000678: 00000013 nop + 8000067c: 00000013 nop + 80000680: 00000013 nop + 80000684: 00000013 nop + 80000688: 00000013 nop + 8000068c: 00000013 nop + 80000690: 00000013 nop + 80000694: 00000013 nop + 80000698: 00000013 nop + 8000069c: 00000013 nop + 800006a0: 00000013 nop + 800006a4: 00000013 nop + 800006a8: 00000013 nop + 800006ac: 00000013 nop + 800006b0: 00000013 nop + 800006b4: 00000013 nop + 800006b8: 00000013 nop + 800006bc: 00000013 nop + 800006c0: 00000013 nop + 800006c4: 00000013 nop + 800006c8: 00000013 nop + 800006cc: 00000013 nop + 800006d0: 00000013 nop + 800006d4: 00000013 nop + 800006d8: 00000013 nop + 800006dc: 00000013 nop + 800006e0: 00000013 nop + 800006e4: 00000013 nop + 800006e8: 00000013 nop + 800006ec: 00000013 nop + 800006f0: 00000013 nop + 800006f4: 00000013 nop + 800006f8: 00000013 nop + 800006fc: 00000013 nop + 80000700: 00000013 nop + 80000704: 00000013 nop + 80000708: 00000013 nop + 8000070c: 00000013 nop + 80000710: 00000013 nop + 80000714: 00000013 nop + 80000718: 00000013 nop + 8000071c: 00000013 nop + 80000720: 00000013 nop + 80000724: 00000013 nop + 80000728: 00000013 nop + 8000072c: 00000013 nop + 80000730: 00000013 nop + 80000734: 00000013 nop + 80000738: 00000013 nop + 8000073c: 00000013 nop + 80000740: 00000013 nop + 80000744: 00000013 nop + 80000748: 00000013 nop + 8000074c: 00000013 nop + 80000750: 00000013 nop + 80000754: 00000013 nop + 80000758: 00000013 nop + 8000075c: 00000013 nop + 80000760: 00000013 nop + 80000764: 00000013 nop + 80000768: 00000013 nop + 8000076c: 00000013 nop + 80000770: 00000013 nop + 80000774: 00000013 nop + 80000778: 00000013 nop + 8000077c: 00000013 nop + 80000780: 00000013 nop + 80000784: 00000013 nop + 80000788: 00000013 nop + 8000078c: 00000013 nop + 80000790: 00000013 nop + 80000794: 00000013 nop + 80000798: 00000013 nop + 8000079c: 00000013 nop + 800007a0: 00000013 nop + 800007a4: 00000013 nop + 800007a8: 00000013 nop + 800007ac: 00000013 nop + 800007b0: 00000013 nop + 800007b4: 00000013 nop + 800007b8: 00000013 nop + 800007bc: 00000013 nop + 800007c0: 00000013 nop + 800007c4: 00000013 nop + 800007c8: 00000013 nop + 800007cc: 00000013 nop + 800007d0: 00000013 nop + 800007d4: 00000013 nop + 800007d8: 00000013 nop + 800007dc: 00000013 nop + 800007e0: 00000013 nop + 800007e4: 00000013 nop + 800007e8: 00000013 nop + 800007ec: 00000013 nop + 800007f0: 00000013 nop + 800007f4: 00000013 nop + 800007f8: 00000013 nop + 800007fc: 00000013 nop + 80000800: 00000013 nop + 80000804: 00000013 nop + 80000808: 00000013 nop + 8000080c: 00000013 nop + 80000810: 00000013 nop + 80000814: 00000013 nop + 80000818: 00000013 nop + 8000081c: 00000013 nop + 80000820: 00000013 nop + 80000824: 00000013 nop + 80000828: 00000013 nop + 8000082c: 00000013 nop + 80000830: 00000013 nop + 80000834: 00000013 nop + 80000838: 00000013 nop + 8000083c: 00000013 nop + 80000840: 00000013 nop + 80000844: 00000013 nop + 80000848: 00000013 nop + 8000084c: 00000013 nop + 80000850: 00000013 nop + 80000854: 00000013 nop + 80000858: 00000013 nop + 8000085c: 00000013 nop + 80000860: 00000013 nop + 80000864: 00000013 nop + 80000868: 00000013 nop + 8000086c: 00000013 nop + 80000870: 00000013 nop + 80000874: 00000013 nop + 80000878: 00000013 nop + 8000087c: 00000013 nop + 80000880: 00000013 nop + 80000884: 00000013 nop + 80000888: 00000013 nop + 8000088c: 00000013 nop + 80000890: 00000013 nop + 80000894: 00000013 nop + 80000898: 00000013 nop + 8000089c: 00000013 nop + 800008a0: 00000013 nop + 800008a4: 00000013 nop + 800008a8: 00000013 nop + 800008ac: 00000013 nop + 800008b0: 00000013 nop + 800008b4: 00000013 nop + 800008b8: 00000013 nop + 800008bc: 00000013 nop + 800008c0: 00000013 nop + 800008c4: 00000013 nop + 800008c8: 00000013 nop + 800008cc: 00000013 nop + 800008d0: 00000013 nop + 800008d4: 00000013 nop + 800008d8: 00000013 nop + 800008dc: 00000013 nop + 800008e0: 00000013 nop + 800008e4: 00000013 nop + 800008e8: 00000013 nop + 800008ec: 00000013 nop + 800008f0: 00000013 nop + 800008f4: 00000013 nop + 800008f8: 00000013 nop + 800008fc: 00000013 nop + 80000900: 00000013 nop + 80000904: 00000013 nop + 80000908: 00000013 nop + 8000090c: 00000013 nop + 80000910: 00000013 nop + 80000914: 00000013 nop + 80000918: 00000013 nop + 8000091c: 00000013 nop + 80000920: 00000013 nop + 80000924: 00000013 nop + 80000928: 00000013 nop + 8000092c: 00000013 nop + 80000930: 00000013 nop + 80000934: 00000013 nop + 80000938: 00000013 nop + 8000093c: 00000013 nop + 80000940: 00000013 nop + 80000944: 00000013 nop + 80000948: 00000013 nop + 8000094c: 00000013 nop + 80000950: 00000013 nop + 80000954: 00000013 nop + 80000958: 00000013 nop + 8000095c: 00000013 nop + 80000960: 00000013 nop + 80000964: 00000013 nop + 80000968: 00000013 nop + 8000096c: 00000013 nop + 80000970: 00000013 nop + 80000974: 00000013 nop + 80000978: 00000013 nop + 8000097c: 00000013 nop + 80000980: 00000013 nop + 80000984: 00000013 nop + 80000988: 00000013 nop + 8000098c: 00000013 nop + 80000990: 00000013 nop + 80000994: 00000013 nop + 80000998: 00000013 nop + 8000099c: 00000013 nop + 800009a0: 00000013 nop + 800009a4: 00000013 nop + 800009a8: 00000013 nop + 800009ac: 00000013 nop + 800009b0: 00000013 nop + 800009b4: 00000013 nop + 800009b8: 00000013 nop + 800009bc: 00000013 nop + 800009c0: 00000013 nop + 800009c4: 00000013 nop + 800009c8: 00000013 nop + 800009cc: 00000013 nop + 800009d0: 00000013 nop + 800009d4: 00000013 nop + 800009d8: 00000013 nop + 800009dc: 00000013 nop + 800009e0: 00000013 nop + 800009e4: 00000013 nop + 800009e8: 00000013 nop + 800009ec: 00000013 nop + 800009f0: 00000013 nop + 800009f4: 00000013 nop + 800009f8: 00000013 nop + 800009fc: 00000013 nop + 80000a00: 00000013 nop + 80000a04: 00000013 nop + 80000a08: 00000013 nop + 80000a0c: 00000013 nop + 80000a10: 00000013 nop + 80000a14: 00000013 nop + 80000a18: 00000013 nop + 80000a1c: 00000013 nop + 80000a20: 00000013 nop + 80000a24: 00000013 nop + 80000a28: 00000013 nop + 80000a2c: 00000013 nop + 80000a30: 00000013 nop + 80000a34: 00000013 nop + 80000a38: 00000013 nop + 80000a3c: 00000013 nop + 80000a40: 00000013 nop + 80000a44: 00000013 nop + 80000a48: 00000013 nop + 80000a4c: 00000013 nop + 80000a50: 00000013 nop + 80000a54: 00000013 nop + 80000a58: 00000013 nop + 80000a5c: 00000013 nop + 80000a60: 00000013 nop + 80000a64: 00000013 nop + 80000a68: 00000013 nop + 80000a6c: 00000013 nop + 80000a70: 00000013 nop + 80000a74: 00000013 nop + 80000a78: 00000013 nop + 80000a7c: 00000013 nop + 80000a80: 00000013 nop + 80000a84: 00000013 nop + 80000a88: 00000013 nop + 80000a8c: 00000013 nop + 80000a90: 00000013 nop + 80000a94: 00000013 nop + 80000a98: 00000013 nop + 80000a9c: 00000013 nop + 80000aa0: 00000013 nop + 80000aa4: 00000013 nop + 80000aa8: 00000013 nop + 80000aac: 00000013 nop + 80000ab0: 00000013 nop + 80000ab4: 00000013 nop + 80000ab8: 00000013 nop + 80000abc: 00000013 nop + 80000ac0: 00000013 nop + 80000ac4: 00000013 nop + 80000ac8: 00000013 nop + 80000acc: 00000013 nop + 80000ad0: 00000013 nop + 80000ad4: 00000013 nop + 80000ad8: 00000013 nop + 80000adc: 00000013 nop + 80000ae0: 00000013 nop + 80000ae4: 00000013 nop + 80000ae8: 00000013 nop + 80000aec: 00000013 nop + 80000af0: 00000013 nop + 80000af4: 00000013 nop + 80000af8: 00000013 nop + 80000afc: 00000013 nop + 80000b00: 00000013 nop + 80000b04: 00000013 nop + 80000b08: 00000013 nop + 80000b0c: 00000013 nop + 80000b10: 00000013 nop + 80000b14: 00000013 nop + 80000b18: 00000013 nop + 80000b1c: 00000013 nop + 80000b20: 00000013 nop + 80000b24: 00000013 nop + 80000b28: 00000013 nop + 80000b2c: 00000013 nop + 80000b30: 00000013 nop + 80000b34: 00000013 nop + 80000b38: 00000013 nop + 80000b3c: 00000013 nop + 80000b40: 00000013 nop + 80000b44: 00000013 nop + 80000b48: 00000013 nop + 80000b4c: 00000013 nop + 80000b50: 00000013 nop + 80000b54: 00000013 nop + 80000b58: 00000013 nop + 80000b5c: 00000013 nop + 80000b60: 00000013 nop + 80000b64: 00000013 nop + 80000b68: 00000013 nop + 80000b6c: 00000013 nop + 80000b70: 00000013 nop + 80000b74: 00000013 nop + 80000b78: 00000013 nop + 80000b7c: 00000013 nop + 80000b80: 00000013 nop + 80000b84: 00000013 nop + 80000b88: 00000013 nop + 80000b8c: 00000013 nop + 80000b90: 00000013 nop + 80000b94: 00000013 nop + 80000b98: 00000013 nop + 80000b9c: 00000013 nop + 80000ba0: 00000013 nop + 80000ba4: 00000013 nop + 80000ba8: 00000013 nop + 80000bac: 00000013 nop + 80000bb0: 00000013 nop + 80000bb4: 00000013 nop + 80000bb8: 00000013 nop + 80000bbc: 00000013 nop + 80000bc0: 00000013 nop + 80000bc4: 00000013 nop + 80000bc8: 00000013 nop + 80000bcc: 00000013 nop + 80000bd0: 00000013 nop + 80000bd4: 00000013 nop + 80000bd8: 00000013 nop + 80000bdc: 00000013 nop + 80000be0: 00000013 nop + 80000be4: 00000013 nop + 80000be8: 00000013 nop + 80000bec: 00000013 nop + 80000bf0: 00000013 nop + 80000bf4: 00000013 nop + 80000bf8: 00000013 nop + 80000bfc: 00000013 nop + 80000c00: 00000013 nop + 80000c04: 00000013 nop + 80000c08: 00000013 nop + 80000c0c: 00000013 nop + 80000c10: 00000013 nop + 80000c14: 00000013 nop + 80000c18: 00000013 nop + 80000c1c: 00000013 nop + 80000c20: 00000013 nop + 80000c24: 00000013 nop + 80000c28: 00000013 nop + 80000c2c: 00000013 nop + 80000c30: 00000013 nop + 80000c34: 00000013 nop + 80000c38: 00000013 nop + 80000c3c: 00000013 nop + 80000c40: 00000013 nop + 80000c44: 00000013 nop + 80000c48: 00000013 nop + 80000c4c: 00000013 nop + 80000c50: 00000013 nop + 80000c54: 00000013 nop + 80000c58: 00000013 nop + 80000c5c: 00000013 nop + 80000c60: 00000013 nop + 80000c64: 00000013 nop + 80000c68: 00000013 nop + 80000c6c: 00000013 nop + 80000c70: 00000013 nop + 80000c74: 00000013 nop + 80000c78: 00000013 nop + 80000c7c: 00000013 nop + 80000c80: 00000013 nop + 80000c84: 00000013 nop + 80000c88: 00000013 nop + 80000c8c: 00000013 nop + 80000c90: 00000013 nop + 80000c94: 00000013 nop + 80000c98: 00000013 nop + 80000c9c: 00000013 nop + 80000ca0: 00000013 nop + 80000ca4: 00000013 nop + 80000ca8: 00000013 nop + 80000cac: 00000013 nop + 80000cb0: 00000013 nop + 80000cb4: 00000013 nop + 80000cb8: 00000013 nop + 80000cbc: 00000013 nop + 80000cc0: 00000013 nop + 80000cc4: 00000013 nop + 80000cc8: 00000013 nop + 80000ccc: 00000013 nop + 80000cd0: 00000013 nop + 80000cd4: 00000013 nop + 80000cd8: 00000013 nop + 80000cdc: 00000013 nop + 80000ce0: 00000013 nop + 80000ce4: 00000013 nop + 80000ce8: 00000013 nop + 80000cec: 00000013 nop + 80000cf0: 00000013 nop + 80000cf4: 00000013 nop + 80000cf8: 00000013 nop + 80000cfc: 00000013 nop + 80000d00: 00000013 nop + 80000d04: 00000013 nop + 80000d08: 00000013 nop + 80000d0c: 00000013 nop + 80000d10: 00000013 nop + 80000d14: 00000013 nop + 80000d18: 00000013 nop + 80000d1c: 00000013 nop + 80000d20: 00000013 nop + 80000d24: 00000013 nop + 80000d28: 00000013 nop + 80000d2c: 00000013 nop + 80000d30: 00000013 nop + 80000d34: 00000013 nop + 80000d38: 00000013 nop + 80000d3c: 00000013 nop + 80000d40: 00000013 nop + 80000d44: 00000013 nop + 80000d48: 00000013 nop + 80000d4c: 00000013 nop + 80000d50: 00000013 nop + 80000d54: 00000013 nop + 80000d58: 00000013 nop + 80000d5c: 00000013 nop + 80000d60: 00000013 nop + 80000d64: 00000013 nop + 80000d68: 00000013 nop + 80000d6c: 00000013 nop + 80000d70: 00000013 nop + 80000d74: 00000013 nop + 80000d78: 00000013 nop + 80000d7c: 00000013 nop + 80000d80: 00000013 nop + 80000d84: 00000013 nop + 80000d88: 00000013 nop + 80000d8c: 00000013 nop + 80000d90: 00000013 nop + 80000d94: 00000013 nop + 80000d98: 00000013 nop + 80000d9c: 00000013 nop + 80000da0: 00000013 nop + 80000da4: 00000013 nop + 80000da8: 00000013 nop + 80000dac: 00000013 nop + 80000db0: 00000013 nop + 80000db4: 00000013 nop + 80000db8: 00000013 nop + 80000dbc: 00000013 nop + 80000dc0: 00000013 nop + 80000dc4: 00000013 nop + 80000dc8: 00000013 nop + 80000dcc: 00000013 nop + 80000dd0: 00000013 nop + 80000dd4: 00000013 nop + 80000dd8: 00000013 nop + 80000ddc: 00000013 nop + 80000de0: 00000013 nop + 80000de4: 00000013 nop + 80000de8: 00000013 nop + 80000dec: 00000013 nop + 80000df0: 00000013 nop + 80000df4: 00000013 nop + 80000df8: 00000013 nop + 80000dfc: 00000013 nop + 80000e00: 00000013 nop + 80000e04: 00000013 nop + 80000e08: 00000013 nop + 80000e0c: 00000013 nop + 80000e10: 00000013 nop + 80000e14: 00000013 nop + 80000e18: 00000013 nop + 80000e1c: 00000013 nop + 80000e20: 00000013 nop + 80000e24: 00000013 nop + 80000e28: 00000013 nop + 80000e2c: 00000013 nop + 80000e30: 00000013 nop + 80000e34: 00000013 nop + 80000e38: 00000013 nop + 80000e3c: 00000013 nop + 80000e40: 00000013 nop + 80000e44: 00000013 nop + 80000e48: 00000013 nop + 80000e4c: 00000013 nop + 80000e50: 00000013 nop + 80000e54: 00000013 nop + 80000e58: 00000013 nop + 80000e5c: 00000013 nop + 80000e60: 00000013 nop + 80000e64: 00000013 nop + 80000e68: 00000013 nop + 80000e6c: 00000013 nop + 80000e70: 00000013 nop + 80000e74: 00000013 nop + 80000e78: 00000013 nop + 80000e7c: 00000013 nop + 80000e80: 00000013 nop + 80000e84: 00000013 nop + 80000e88: 00000013 nop + 80000e8c: 00000013 nop + 80000e90: 00000013 nop + 80000e94: 00000013 nop + 80000e98: 00000013 nop + 80000e9c: 00000013 nop + 80000ea0: 00000013 nop + 80000ea4: 00000013 nop + 80000ea8: 00000013 nop + 80000eac: 00000013 nop + 80000eb0: 00000013 nop + 80000eb4: 00000013 nop + 80000eb8: 00000013 nop + 80000ebc: 00000013 nop + 80000ec0: 00000013 nop + 80000ec4: 00000013 nop + 80000ec8: 00000013 nop + 80000ecc: 00000013 nop + 80000ed0: 00000013 nop + 80000ed4: 00000013 nop + 80000ed8: 00000013 nop + 80000edc: 00000013 nop + 80000ee0: 00000013 nop + 80000ee4: 00000013 nop + 80000ee8: 00000013 nop + 80000eec: 00000013 nop + 80000ef0: 00000013 nop + 80000ef4: 00000013 nop + 80000ef8: 00000013 nop + 80000efc: 00000013 nop + 80000f00: 00000013 nop + 80000f04: 00000013 nop + 80000f08: 00000013 nop + 80000f0c: 00000013 nop + 80000f10: 00000013 nop + 80000f14: 00000013 nop + 80000f18: 00000013 nop + 80000f1c: 00000013 nop + 80000f20: 00000013 nop + 80000f24: 00000013 nop + 80000f28: 00000013 nop + 80000f2c: 00000013 nop + 80000f30: 00000013 nop + 80000f34: 00000013 nop + 80000f38: 00000013 nop + 80000f3c: 00000013 nop + 80000f40: 00000013 nop + 80000f44: 00000013 nop + 80000f48: 00000013 nop + 80000f4c: 00000013 nop + 80000f50: 00000013 nop + 80000f54: 00000013 nop + 80000f58: 00000013 nop + 80000f5c: 00000013 nop + 80000f60: 00000013 nop + 80000f64: 00000013 nop + 80000f68: 00000013 nop + 80000f6c: 00000013 nop + 80000f70: 00000013 nop + 80000f74: 00000013 nop + 80000f78: 00000013 nop + 80000f7c: 00000013 nop + 80000f80: 00000013 nop + 80000f84: 00000013 nop + 80000f88: 00000013 nop + 80000f8c: 00000013 nop + 80000f90: 00000013 nop + 80000f94: 00000013 nop + 80000f98: 00000013 nop + 80000f9c: 00000013 nop + 80000fa0: 00000013 nop + 80000fa4: 00000013 nop + 80000fa8: 00000013 nop + 80000fac: 00000013 nop + 80000fb0: 00000013 nop + 80000fb4: 00000013 nop + 80000fb8: 00000013 nop + 80000fbc: 00000013 nop + 80000fc0: 00000013 nop + 80000fc4: 00000013 nop + 80000fc8: 00000013 nop + 80000fcc: 00000013 nop + 80000fd0: 00000013 nop + 80000fd4: 00000013 nop + 80000fd8: 00000013 nop + 80000fdc: 00000013 nop + 80000fe0: 00000013 nop + 80000fe4: 00000013 nop + 80000fe8: 00000013 nop + 80000fec: 00000013 nop + 80000ff0: 00000013 nop + 80000ff4: 00000013 nop + 80000ff8: 00000013 nop + 80000ffc: 00000013 nop + 80001000: 0000 unimp + 80001002: 0000 unimp + 80001004: 0000 unimp + 80001006: 0000 unimp + 80001008: 0000 unimp + 8000100a: 0000 unimp + 8000100c: 0000 unimp + 8000100e: 0000 unimp + 80001010: 0000 unimp + 80001012: 0000 unimp + 80001014: 0000 unimp + 80001016: 0000 unimp + 80001018: 0000 unimp + 8000101a: 0000 unimp + 8000101c: 0000 unimp + 8000101e: 0000 unimp + 80001020: 0000 unimp + 80001022: 0000 unimp + 80001024: 0000 unimp + 80001026: 0000 unimp + 80001028: 0000 unimp + 8000102a: 0000 unimp + 8000102c: 0000 unimp + 8000102e: 0000 unimp + 80001030: 0000 unimp + 80001032: 0000 unimp + 80001034: 0000 unimp + 80001036: 0000 unimp + 80001038: 0000 unimp + 8000103a: 0000 unimp + 8000103c: 0000 unimp + 8000103e: 0000 unimp + 80001040: 0000 unimp + 80001042: 0000 unimp + 80001044: 0000 unimp + 80001046: 0000 unimp + 80001048: 0000 unimp + 8000104a: 0000 unimp + 8000104c: 0000 unimp + 8000104e: 0000 unimp + 80001050: 0000 unimp + 80001052: 0000 unimp + 80001054: 0000 unimp + 80001056: 0000 unimp + 80001058: 0000 unimp + 8000105a: 0000 unimp + 8000105c: 0000 unimp + 8000105e: 0000 unimp + 80001060: 0000 unimp + 80001062: 0000 unimp + 80001064: 0000 unimp + 80001066: 0000 unimp + 80001068: 0000 unimp + 8000106a: 0000 unimp + 8000106c: 0000 unimp + 8000106e: 0000 unimp + 80001070: 0000 unimp + 80001072: 0000 unimp + 80001074: 0000 unimp + 80001076: 0000 unimp + 80001078: 0000 unimp + 8000107a: 0000 unimp + 8000107c: 0000 unimp + 8000107e: 0000 unimp + 80001080: 0000 unimp + 80001082: 0000 unimp + 80001084: 0000 unimp + 80001086: 0000 unimp + 80001088: 0000 unimp + 8000108a: 0000 unimp + 8000108c: 0000 unimp + 8000108e: 0000 unimp + 80001090: 0000 unimp + 80001092: 0000 unimp + 80001094: 0000 unimp + 80001096: 0000 unimp + 80001098: 0000 unimp + 8000109a: 0000 unimp + 8000109c: 0000 unimp + 8000109e: 0000 unimp + 800010a0: 0000 unimp + 800010a2: 0000 unimp + 800010a4: 0000 unimp + 800010a6: 0000 unimp + 800010a8: 0000 unimp + 800010aa: 0000 unimp + 800010ac: 0000 unimp + 800010ae: 0000 unimp + 800010b0: 0000 unimp + 800010b2: 0000 unimp + 800010b4: 0000 unimp + 800010b6: 0000 unimp + 800010b8: 0000 unimp + 800010ba: 0000 unimp + 800010bc: 0000 unimp + 800010be: 0000 unimp + 800010c0: 0000 unimp + 800010c2: 0000 unimp + 800010c4: 0000 unimp + 800010c6: 0000 unimp + 800010c8: 0000 unimp + 800010ca: 0000 unimp + 800010cc: 0000 unimp + 800010ce: 0000 unimp + 800010d0: 0000 unimp + 800010d2: 0000 unimp + 800010d4: 0000 unimp + 800010d6: 0000 unimp + 800010d8: 0000 unimp + 800010da: 0000 unimp + 800010dc: 0000 unimp + 800010de: 0000 unimp + 800010e0: 0000 unimp + 800010e2: 0000 unimp + 800010e4: 0000 unimp + 800010e6: 0000 unimp + 800010e8: 0000 unimp + 800010ea: 0000 unimp + 800010ec: 0000 unimp + 800010ee: 0000 unimp + 800010f0: 0000 unimp + 800010f2: 0000 unimp + 800010f4: 0000 unimp + 800010f6: 0000 unimp + 800010f8: 0000 unimp + 800010fa: 0000 unimp + 800010fc: 0000 unimp + 800010fe: 0000 unimp + 80001100: 0000 unimp + 80001102: 0000 unimp + 80001104: 0000 unimp + 80001106: 0000 unimp + 80001108: 0000 unimp + 8000110a: 0000 unimp + 8000110c: 0000 unimp + 8000110e: 0000 unimp + 80001110: 0000 unimp + 80001112: 0000 unimp + 80001114: 0000 unimp + 80001116: 0000 unimp + 80001118: 0000 unimp + 8000111a: 0000 unimp + 8000111c: 0000 unimp + 8000111e: 0000 unimp + 80001120: 0000 unimp + 80001122: 0000 unimp + 80001124: 0000 unimp + 80001126: 0000 unimp + 80001128: 0000 unimp + 8000112a: 0000 unimp + 8000112c: 0000 unimp + 8000112e: 0000 unimp + 80001130: 0000 unimp + 80001132: 0000 unimp + 80001134: 0000 unimp + 80001136: 0000 unimp + 80001138: 0000 unimp + 8000113a: 0000 unimp + 8000113c: 0000 unimp + 8000113e: 0000 unimp + 80001140: 0000 unimp + 80001142: 0000 unimp + 80001144: 0000 unimp + 80001146: 0000 unimp + 80001148: 0000 unimp + 8000114a: 0000 unimp + 8000114c: 0000 unimp + 8000114e: 0000 unimp + 80001150: 0000 unimp + 80001152: 0000 unimp + 80001154: 0000 unimp + 80001156: 0000 unimp + 80001158: 0000 unimp + 8000115a: 0000 unimp + 8000115c: 0000 unimp + 8000115e: 0000 unimp + 80001160: 0000 unimp + 80001162: 0000 unimp + 80001164: 0000 unimp + 80001166: 0000 unimp + 80001168: 0000 unimp + 8000116a: 0000 unimp + 8000116c: 0000 unimp + 8000116e: 0000 unimp + 80001170: 0000 unimp + 80001172: 0000 unimp + 80001174: 0000 unimp + 80001176: 0000 unimp + 80001178: 0000 unimp + 8000117a: 0000 unimp + 8000117c: 0000 unimp + 8000117e: 0000 unimp + 80001180: 0000 unimp + 80001182: 0000 unimp + 80001184: 0000 unimp + 80001186: 0000 unimp + 80001188: 0000 unimp + 8000118a: 0000 unimp + 8000118c: 0000 unimp + 8000118e: 0000 unimp + 80001190: 0000 unimp + 80001192: 0000 unimp + 80001194: 0000 unimp + 80001196: 0000 unimp + 80001198: 0000 unimp + 8000119a: 0000 unimp + 8000119c: 0000 unimp + 8000119e: 0000 unimp + 800011a0: 0000 unimp + 800011a2: 0000 unimp + 800011a4: 0000 unimp + 800011a6: 0000 unimp + 800011a8: 0000 unimp + 800011aa: 0000 unimp + 800011ac: 0000 unimp + 800011ae: 0000 unimp + 800011b0: 0000 unimp + 800011b2: 0000 unimp + 800011b4: 0000 unimp + 800011b6: 0000 unimp + 800011b8: 0000 unimp + 800011ba: 0000 unimp + 800011bc: 0000 unimp + 800011be: 0000 unimp + 800011c0: 0000 unimp + 800011c2: 0000 unimp + 800011c4: 0000 unimp + 800011c6: 0000 unimp + 800011c8: 0000 unimp + 800011ca: 0000 unimp + 800011cc: 0000 unimp + 800011ce: 0000 unimp + 800011d0: 0000 unimp + 800011d2: 0000 unimp + 800011d4: 0000 unimp + 800011d6: 0000 unimp + 800011d8: 0000 unimp + 800011da: 0000 unimp + 800011dc: 0000 unimp + 800011de: 0000 unimp + 800011e0: 0000 unimp + 800011e2: 0000 unimp + 800011e4: 0000 unimp + 800011e6: 0000 unimp + 800011e8: 0000 unimp + 800011ea: 0000 unimp + 800011ec: 0000 unimp + 800011ee: 0000 unimp + 800011f0: 0000 unimp + 800011f2: 0000 unimp + 800011f4: 0000 unimp + 800011f6: 0000 unimp + 800011f8: 0000 unimp + 800011fa: 0000 unimp + 800011fc: 0000 unimp + 800011fe: 0000 unimp + 80001200: 0000 unimp + 80001202: 0000 unimp + 80001204: 0000 unimp + 80001206: 0000 unimp + 80001208: 0000 unimp + 8000120a: 0000 unimp + 8000120c: 0000 unimp + 8000120e: 0000 unimp + 80001210: 0000 unimp + 80001212: 0000 unimp + 80001214: 0000 unimp + 80001216: 0000 unimp + 80001218: 0000 unimp + 8000121a: 0000 unimp + 8000121c: 0000 unimp + 8000121e: 0000 unimp + 80001220: 0000 unimp + 80001222: 0000 unimp + 80001224: 0000 unimp + 80001226: 0000 unimp + 80001228: 0000 unimp + 8000122a: 0000 unimp + 8000122c: 0000 unimp + 8000122e: 0000 unimp + 80001230: 0000 unimp + 80001232: 0000 unimp + 80001234: 0000 unimp + 80001236: 0000 unimp + 80001238: 0000 unimp + 8000123a: 0000 unimp + 8000123c: 0000 unimp + 8000123e: 0000 unimp + 80001240: 0000 unimp + 80001242: 0000 unimp + 80001244: 0000 unimp + 80001246: 0000 unimp + 80001248: 0000 unimp + 8000124a: 0000 unimp + 8000124c: 0000 unimp + 8000124e: 0000 unimp + 80001250: 0000 unimp + 80001252: 0000 unimp + 80001254: 0000 unimp + 80001256: 0000 unimp + 80001258: 0000 unimp + 8000125a: 0000 unimp + 8000125c: 0000 unimp + 8000125e: 0000 unimp + 80001260: 0000 unimp + 80001262: 0000 unimp + 80001264: 0000 unimp + 80001266: 0000 unimp + 80001268: 0000 unimp + 8000126a: 0000 unimp + 8000126c: 0000 unimp + 8000126e: 0000 unimp + 80001270: 0000 unimp + 80001272: 0000 unimp + 80001274: 0000 unimp + 80001276: 0000 unimp + 80001278: 0000 unimp + 8000127a: 0000 unimp + 8000127c: 0000 unimp + 8000127e: 0000 unimp + 80001280: 0000 unimp + 80001282: 0000 unimp + 80001284: 0000 unimp + 80001286: 0000 unimp + 80001288: 0000 unimp + 8000128a: 0000 unimp + 8000128c: 0000 unimp + 8000128e: 0000 unimp + 80001290: 0000 unimp + 80001292: 0000 unimp + 80001294: 0000 unimp + 80001296: 0000 unimp + 80001298: 0000 unimp + 8000129a: 0000 unimp + 8000129c: 0000 unimp + 8000129e: 0000 unimp + 800012a0: 0000 unimp + 800012a2: 0000 unimp + 800012a4: 0000 unimp + 800012a6: 0000 unimp + 800012a8: 0000 unimp + 800012aa: 0000 unimp + 800012ac: 0000 unimp + 800012ae: 0000 unimp + 800012b0: 0000 unimp + 800012b2: 0000 unimp + 800012b4: 0000 unimp + 800012b6: 0000 unimp + 800012b8: 0000 unimp + 800012ba: 0000 unimp + 800012bc: 0000 unimp + 800012be: 0000 unimp + 800012c0: 0000 unimp + 800012c2: 0000 unimp + 800012c4: 0000 unimp + 800012c6: 0000 unimp + 800012c8: 0000 unimp + 800012ca: 0000 unimp + 800012cc: 0000 unimp + 800012ce: 0000 unimp + 800012d0: 0000 unimp + 800012d2: 0000 unimp + 800012d4: 0000 unimp + 800012d6: 0000 unimp + 800012d8: 0000 unimp + 800012da: 0000 unimp + 800012dc: 0000 unimp + 800012de: 0000 unimp + 800012e0: 0000 unimp + 800012e2: 0000 unimp + 800012e4: 0000 unimp + 800012e6: 0000 unimp + 800012e8: 0000 unimp + 800012ea: 0000 unimp + 800012ec: 0000 unimp + 800012ee: 0000 unimp + 800012f0: 0000 unimp + 800012f2: 0000 unimp + 800012f4: 0000 unimp + 800012f6: 0000 unimp + 800012f8: 0000 unimp + 800012fa: 0000 unimp + 800012fc: 0000 unimp + 800012fe: 0000 unimp + 80001300: 0000 unimp + 80001302: 0000 unimp + 80001304: 0000 unimp + 80001306: 0000 unimp + 80001308: 0000 unimp + 8000130a: 0000 unimp + 8000130c: 0000 unimp + 8000130e: 0000 unimp + 80001310: 0000 unimp + 80001312: 0000 unimp + 80001314: 0000 unimp + 80001316: 0000 unimp + 80001318: 0000 unimp + 8000131a: 0000 unimp + 8000131c: 0000 unimp + 8000131e: 0000 unimp + 80001320: 0000 unimp + 80001322: 0000 unimp + 80001324: 0000 unimp + 80001326: 0000 unimp + 80001328: 0000 unimp + 8000132a: 0000 unimp + 8000132c: 0000 unimp + 8000132e: 0000 unimp + 80001330: 0000 unimp + 80001332: 0000 unimp + 80001334: 0000 unimp + 80001336: 0000 unimp + 80001338: 0000 unimp + 8000133a: 0000 unimp + 8000133c: 0000 unimp + 8000133e: 0000 unimp + 80001340: 0000 unimp + 80001342: 0000 unimp + 80001344: 0000 unimp + 80001346: 0000 unimp + 80001348: 0000 unimp + 8000134a: 0000 unimp + 8000134c: 0000 unimp + 8000134e: 0000 unimp + 80001350: 0000 unimp + 80001352: 0000 unimp + 80001354: 0000 unimp + 80001356: 0000 unimp + 80001358: 0000 unimp + 8000135a: 0000 unimp + 8000135c: 0000 unimp + 8000135e: 0000 unimp + 80001360: 0000 unimp + 80001362: 0000 unimp + 80001364: 0000 unimp + 80001366: 0000 unimp + 80001368: 0000 unimp + 8000136a: 0000 unimp + 8000136c: 0000 unimp + 8000136e: 0000 unimp + 80001370: 0000 unimp + 80001372: 0000 unimp + 80001374: 0000 unimp + 80001376: 0000 unimp + 80001378: 0000 unimp + 8000137a: 0000 unimp + 8000137c: 0000 unimp + 8000137e: 0000 unimp + 80001380: 0000 unimp + 80001382: 0000 unimp + 80001384: 0000 unimp + 80001386: 0000 unimp + 80001388: 0000 unimp + 8000138a: 0000 unimp + 8000138c: 0000 unimp + 8000138e: 0000 unimp + 80001390: 0000 unimp + 80001392: 0000 unimp + 80001394: 0000 unimp + 80001396: 0000 unimp + 80001398: 0000 unimp + 8000139a: 0000 unimp + 8000139c: 0000 unimp + 8000139e: 0000 unimp + 800013a0: 0000 unimp + 800013a2: 0000 unimp + 800013a4: 0000 unimp + 800013a6: 0000 unimp + 800013a8: 0000 unimp + 800013aa: 0000 unimp + 800013ac: 0000 unimp + 800013ae: 0000 unimp + 800013b0: 0000 unimp + 800013b2: 0000 unimp + 800013b4: 0000 unimp + 800013b6: 0000 unimp + 800013b8: 0000 unimp + 800013ba: 0000 unimp + 800013bc: 0000 unimp + 800013be: 0000 unimp + 800013c0: 0000 unimp + 800013c2: 0000 unimp + 800013c4: 0000 unimp + 800013c6: 0000 unimp + 800013c8: 0000 unimp + 800013ca: 0000 unimp + 800013cc: 0000 unimp + 800013ce: 0000 unimp + 800013d0: 0000 unimp + 800013d2: 0000 unimp + 800013d4: 0000 unimp + 800013d6: 0000 unimp + 800013d8: 0000 unimp + 800013da: 0000 unimp + 800013dc: 0000 unimp + 800013de: 0000 unimp + 800013e0: 0000 unimp + 800013e2: 0000 unimp + 800013e4: 0000 unimp + 800013e6: 0000 unimp + 800013e8: 0000 unimp + 800013ea: 0000 unimp + 800013ec: 0000 unimp + 800013ee: 0000 unimp + 800013f0: 0000 unimp + 800013f2: 0000 unimp + 800013f4: 0000 unimp + 800013f6: 0000 unimp + 800013f8: 0000 unimp + 800013fa: 0000 unimp + 800013fc: 0000 unimp + 800013fe: 0000 unimp + 80001400: 0000 unimp + 80001402: 0000 unimp + 80001404: 0000 unimp + 80001406: 0000 unimp + 80001408: 0000 unimp + 8000140a: 0000 unimp + 8000140c: 0000 unimp + 8000140e: 0000 unimp + 80001410: 0000 unimp + 80001412: 0000 unimp + 80001414: 0000 unimp + 80001416: 0000 unimp + 80001418: 0000 unimp + 8000141a: 0000 unimp + 8000141c: 0000 unimp + 8000141e: 0000 unimp + 80001420: 0000 unimp + 80001422: 0000 unimp + 80001424: 0000 unimp + 80001426: 0000 unimp + 80001428: 0000 unimp + 8000142a: 0000 unimp + 8000142c: 0000 unimp + 8000142e: 0000 unimp + 80001430: 0000 unimp + 80001432: 0000 unimp + 80001434: 0000 unimp + 80001436: 0000 unimp + 80001438: 0000 unimp + 8000143a: 0000 unimp + 8000143c: 0000 unimp + 8000143e: 0000 unimp + 80001440: 0000 unimp + 80001442: 0000 unimp + 80001444: 0000 unimp + 80001446: 0000 unimp + 80001448: 0000 unimp + 8000144a: 0000 unimp + 8000144c: 0000 unimp + 8000144e: 0000 unimp + 80001450: 0000 unimp + 80001452: 0000 unimp + 80001454: 0000 unimp + 80001456: 0000 unimp + 80001458: 0000 unimp + 8000145a: 0000 unimp + 8000145c: 0000 unimp + 8000145e: 0000 unimp + 80001460: 0000 unimp + 80001462: 0000 unimp + 80001464: 0000 unimp + 80001466: 0000 unimp + 80001468: 0000 unimp + 8000146a: 0000 unimp + 8000146c: 0000 unimp + 8000146e: 0000 unimp + 80001470: 0000 unimp + 80001472: 0000 unimp + 80001474: 0000 unimp + 80001476: 0000 unimp + 80001478: 0000 unimp + 8000147a: 0000 unimp + 8000147c: 0000 unimp + 8000147e: 0000 unimp + 80001480: 0000 unimp + 80001482: 0000 unimp + 80001484: 0000 unimp + 80001486: 0000 unimp + 80001488: 0000 unimp + 8000148a: 0000 unimp + 8000148c: 0000 unimp + 8000148e: 0000 unimp + 80001490: 0000 unimp + 80001492: 0000 unimp + 80001494: 0000 unimp + 80001496: 0000 unimp + 80001498: 0000 unimp + 8000149a: 0000 unimp + 8000149c: 0000 unimp + 8000149e: 0000 unimp + 800014a0: 0000 unimp + 800014a2: 0000 unimp + 800014a4: 0000 unimp + 800014a6: 0000 unimp + 800014a8: 0000 unimp + 800014aa: 0000 unimp + 800014ac: 0000 unimp + 800014ae: 0000 unimp + 800014b0: 0000 unimp + 800014b2: 0000 unimp + 800014b4: 0000 unimp + 800014b6: 0000 unimp + 800014b8: 0000 unimp + 800014ba: 0000 unimp + 800014bc: 0000 unimp + 800014be: 0000 unimp + 800014c0: 0000 unimp + 800014c2: 0000 unimp + 800014c4: 0000 unimp + 800014c6: 0000 unimp + 800014c8: 0000 unimp + 800014ca: 0000 unimp + 800014cc: 0000 unimp + 800014ce: 0000 unimp + 800014d0: 0000 unimp + 800014d2: 0000 unimp + 800014d4: 0000 unimp + 800014d6: 0000 unimp + 800014d8: 0000 unimp + 800014da: 0000 unimp + 800014dc: 0000 unimp + 800014de: 0000 unimp + 800014e0: 0000 unimp + 800014e2: 0000 unimp + 800014e4: 0000 unimp + 800014e6: 0000 unimp + 800014e8: 0000 unimp + 800014ea: 0000 unimp + 800014ec: 0000 unimp + 800014ee: 0000 unimp + 800014f0: 0000 unimp + 800014f2: 0000 unimp + 800014f4: 0000 unimp + 800014f6: 0000 unimp + 800014f8: 0000 unimp + 800014fa: 0000 unimp + 800014fc: 0000 unimp + 800014fe: 0000 unimp + 80001500: 0000 unimp + 80001502: 0000 unimp + 80001504: 0000 unimp + 80001506: 0000 unimp + 80001508: 0000 unimp + 8000150a: 0000 unimp + 8000150c: 0000 unimp + 8000150e: 0000 unimp + 80001510: 0000 unimp + 80001512: 0000 unimp + 80001514: 0000 unimp + 80001516: 0000 unimp + 80001518: 0000 unimp + 8000151a: 0000 unimp + 8000151c: 0000 unimp + 8000151e: 0000 unimp + 80001520: 0000 unimp + 80001522: 0000 unimp + 80001524: 0000 unimp + 80001526: 0000 unimp + 80001528: 0000 unimp + 8000152a: 0000 unimp + 8000152c: 0000 unimp + 8000152e: 0000 unimp + 80001530: 0000 unimp + 80001532: 0000 unimp + 80001534: 0000 unimp + 80001536: 0000 unimp + 80001538: 0000 unimp + 8000153a: 0000 unimp + 8000153c: 0000 unimp + 8000153e: 0000 unimp + 80001540: 0000 unimp + 80001542: 0000 unimp + 80001544: 0000 unimp + 80001546: 0000 unimp + 80001548: 0000 unimp + 8000154a: 0000 unimp + 8000154c: 0000 unimp + 8000154e: 0000 unimp + 80001550: 0000 unimp + 80001552: 0000 unimp + 80001554: 0000 unimp + 80001556: 0000 unimp + 80001558: 0000 unimp + 8000155a: 0000 unimp + 8000155c: 0000 unimp + 8000155e: 0000 unimp + 80001560: 0000 unimp + 80001562: 0000 unimp + 80001564: 0000 unimp + 80001566: 0000 unimp + 80001568: 0000 unimp + 8000156a: 0000 unimp + 8000156c: 0000 unimp + 8000156e: 0000 unimp + 80001570: 0000 unimp + 80001572: 0000 unimp + 80001574: 0000 unimp + 80001576: 0000 unimp + 80001578: 0000 unimp + 8000157a: 0000 unimp + 8000157c: 0000 unimp + 8000157e: 0000 unimp + 80001580: 0000 unimp + 80001582: 0000 unimp + 80001584: 0000 unimp + 80001586: 0000 unimp + 80001588: 0000 unimp + 8000158a: 0000 unimp + 8000158c: 0000 unimp + 8000158e: 0000 unimp + 80001590: 0000 unimp + 80001592: 0000 unimp + 80001594: 0000 unimp + 80001596: 0000 unimp + 80001598: 0000 unimp + 8000159a: 0000 unimp + 8000159c: 0000 unimp + 8000159e: 0000 unimp + 800015a0: 0000 unimp + 800015a2: 0000 unimp + 800015a4: 0000 unimp + 800015a6: 0000 unimp + 800015a8: 0000 unimp + 800015aa: 0000 unimp + 800015ac: 0000 unimp + 800015ae: 0000 unimp + 800015b0: 0000 unimp + 800015b2: 0000 unimp + 800015b4: 0000 unimp + 800015b6: 0000 unimp + 800015b8: 0000 unimp + 800015ba: 0000 unimp + 800015bc: 0000 unimp + 800015be: 0000 unimp + 800015c0: 0000 unimp + 800015c2: 0000 unimp + 800015c4: 0000 unimp + 800015c6: 0000 unimp + 800015c8: 0000 unimp + 800015ca: 0000 unimp + 800015cc: 0000 unimp + 800015ce: 0000 unimp + 800015d0: 0000 unimp + 800015d2: 0000 unimp + 800015d4: 0000 unimp + 800015d6: 0000 unimp + 800015d8: 0000 unimp + 800015da: 0000 unimp + 800015dc: 0000 unimp + 800015de: 0000 unimp + 800015e0: 0000 unimp + 800015e2: 0000 unimp + 800015e4: 0000 unimp + 800015e6: 0000 unimp + 800015e8: 0000 unimp + 800015ea: 0000 unimp + 800015ec: 0000 unimp + 800015ee: 0000 unimp + 800015f0: 0000 unimp + 800015f2: 0000 unimp + 800015f4: 0000 unimp + 800015f6: 0000 unimp + 800015f8: 0000 unimp + 800015fa: 0000 unimp + 800015fc: 0000 unimp + 800015fe: 0000 unimp + 80001600: 0000 unimp + 80001602: 0000 unimp + 80001604: 0000 unimp + 80001606: 0000 unimp + 80001608: 0000 unimp + 8000160a: 0000 unimp + 8000160c: 0000 unimp + 8000160e: 0000 unimp + 80001610: 0000 unimp + 80001612: 0000 unimp + 80001614: 0000 unimp + 80001616: 0000 unimp + 80001618: 0000 unimp + 8000161a: 0000 unimp + 8000161c: 0000 unimp + 8000161e: 0000 unimp + 80001620: 0000 unimp + 80001622: 0000 unimp + 80001624: 0000 unimp + 80001626: 0000 unimp + 80001628: 0000 unimp + 8000162a: 0000 unimp + 8000162c: 0000 unimp + 8000162e: 0000 unimp + 80001630: 0000 unimp + 80001632: 0000 unimp + 80001634: 0000 unimp + 80001636: 0000 unimp + 80001638: 0000 unimp + 8000163a: 0000 unimp + 8000163c: 0000 unimp + 8000163e: 0000 unimp + 80001640: 0000 unimp + 80001642: 0000 unimp + 80001644: 0000 unimp + 80001646: 0000 unimp + 80001648: 0000 unimp + 8000164a: 0000 unimp + 8000164c: 0000 unimp + 8000164e: 0000 unimp + 80001650: 0000 unimp + 80001652: 0000 unimp + 80001654: 0000 unimp + 80001656: 0000 unimp + 80001658: 0000 unimp + 8000165a: 0000 unimp + 8000165c: 0000 unimp + 8000165e: 0000 unimp + 80001660: 0000 unimp + 80001662: 0000 unimp + 80001664: 0000 unimp + 80001666: 0000 unimp + 80001668: 0000 unimp + 8000166a: 0000 unimp + 8000166c: 0000 unimp + 8000166e: 0000 unimp + 80001670: 0000 unimp + 80001672: 0000 unimp + 80001674: 0000 unimp + 80001676: 0000 unimp + 80001678: 0000 unimp + 8000167a: 0000 unimp + 8000167c: 0000 unimp + 8000167e: 0000 unimp + 80001680: 0000 unimp + 80001682: 0000 unimp + 80001684: 0000 unimp + 80001686: 0000 unimp + 80001688: 0000 unimp + 8000168a: 0000 unimp + 8000168c: 0000 unimp + 8000168e: 0000 unimp + 80001690: 0000 unimp + 80001692: 0000 unimp + 80001694: 0000 unimp + 80001696: 0000 unimp + 80001698: 0000 unimp + 8000169a: 0000 unimp + 8000169c: 0000 unimp + 8000169e: 0000 unimp + 800016a0: 0000 unimp + 800016a2: 0000 unimp + 800016a4: 0000 unimp + 800016a6: 0000 unimp + 800016a8: 0000 unimp + 800016aa: 0000 unimp + 800016ac: 0000 unimp + 800016ae: 0000 unimp + 800016b0: 0000 unimp + 800016b2: 0000 unimp + 800016b4: 0000 unimp + 800016b6: 0000 unimp + 800016b8: 0000 unimp + 800016ba: 0000 unimp + 800016bc: 0000 unimp + 800016be: 0000 unimp + 800016c0: 0000 unimp + 800016c2: 0000 unimp + 800016c4: 0000 unimp + 800016c6: 0000 unimp + 800016c8: 0000 unimp + 800016ca: 0000 unimp + 800016cc: 0000 unimp + 800016ce: 0000 unimp + 800016d0: 0000 unimp + 800016d2: 0000 unimp + 800016d4: 0000 unimp + 800016d6: 0000 unimp + 800016d8: 0000 unimp + 800016da: 0000 unimp + 800016dc: 0000 unimp + 800016de: 0000 unimp + 800016e0: 0000 unimp + 800016e2: 0000 unimp + 800016e4: 0000 unimp + 800016e6: 0000 unimp + 800016e8: 0000 unimp + 800016ea: 0000 unimp + 800016ec: 0000 unimp + 800016ee: 0000 unimp + 800016f0: 0000 unimp + 800016f2: 0000 unimp + 800016f4: 0000 unimp + 800016f6: 0000 unimp + 800016f8: 0000 unimp + 800016fa: 0000 unimp + 800016fc: 0000 unimp + 800016fe: 0000 unimp + 80001700: 0000 unimp + 80001702: 0000 unimp + 80001704: 0000 unimp + 80001706: 0000 unimp + 80001708: 0000 unimp + 8000170a: 0000 unimp + 8000170c: 0000 unimp + 8000170e: 0000 unimp + 80001710: 0000 unimp + 80001712: 0000 unimp + 80001714: 0000 unimp + 80001716: 0000 unimp + 80001718: 0000 unimp + 8000171a: 0000 unimp + 8000171c: 0000 unimp + 8000171e: 0000 unimp + 80001720: 0000 unimp + 80001722: 0000 unimp + 80001724: 0000 unimp + 80001726: 0000 unimp + 80001728: 0000 unimp + 8000172a: 0000 unimp + 8000172c: 0000 unimp + 8000172e: 0000 unimp + 80001730: 0000 unimp + 80001732: 0000 unimp + 80001734: 0000 unimp + 80001736: 0000 unimp + 80001738: 0000 unimp + 8000173a: 0000 unimp + 8000173c: 0000 unimp + 8000173e: 0000 unimp + 80001740: 0000 unimp + 80001742: 0000 unimp + 80001744: 0000 unimp + 80001746: 0000 unimp + 80001748: 0000 unimp + 8000174a: 0000 unimp + 8000174c: 0000 unimp + 8000174e: 0000 unimp + 80001750: 0000 unimp + 80001752: 0000 unimp + 80001754: 0000 unimp + 80001756: 0000 unimp + 80001758: 0000 unimp + 8000175a: 0000 unimp + 8000175c: 0000 unimp + 8000175e: 0000 unimp + 80001760: 0000 unimp + 80001762: 0000 unimp + 80001764: 0000 unimp + 80001766: 0000 unimp + 80001768: 0000 unimp + 8000176a: 0000 unimp + 8000176c: 0000 unimp + 8000176e: 0000 unimp + 80001770: 0000 unimp + 80001772: 0000 unimp + 80001774: 0000 unimp + 80001776: 0000 unimp + 80001778: 0000 unimp + 8000177a: 0000 unimp + 8000177c: 0000 unimp + 8000177e: 0000 unimp + 80001780: 0000 unimp + 80001782: 0000 unimp + 80001784: 0000 unimp + 80001786: 0000 unimp + 80001788: 0000 unimp + 8000178a: 0000 unimp + 8000178c: 0000 unimp + 8000178e: 0000 unimp + 80001790: 0000 unimp + 80001792: 0000 unimp + 80001794: 0000 unimp + 80001796: 0000 unimp + 80001798: 0000 unimp + 8000179a: 0000 unimp + 8000179c: 0000 unimp + 8000179e: 0000 unimp + 800017a0: 0000 unimp + 800017a2: 0000 unimp + 800017a4: 0000 unimp + 800017a6: 0000 unimp + 800017a8: 0000 unimp + 800017aa: 0000 unimp + 800017ac: 0000 unimp + 800017ae: 0000 unimp + 800017b0: 0000 unimp + 800017b2: 0000 unimp + 800017b4: 0000 unimp + 800017b6: 0000 unimp + 800017b8: 0000 unimp + 800017ba: 0000 unimp + 800017bc: 0000 unimp + 800017be: 0000 unimp + 800017c0: 0000 unimp + 800017c2: 0000 unimp + 800017c4: 0000 unimp + 800017c6: 0000 unimp + 800017c8: 0000 unimp + 800017ca: 0000 unimp + 800017cc: 0000 unimp + 800017ce: 0000 unimp + 800017d0: 0000 unimp + 800017d2: 0000 unimp + 800017d4: 0000 unimp + 800017d6: 0000 unimp + 800017d8: 0000 unimp + 800017da: 0000 unimp + 800017dc: 0000 unimp + 800017de: 0000 unimp + 800017e0: 0000 unimp + 800017e2: 0000 unimp + 800017e4: 0000 unimp + 800017e6: 0000 unimp + 800017e8: 0000 unimp + 800017ea: 0000 unimp + 800017ec: 0000 unimp + 800017ee: 0000 unimp + 800017f0: 0000 unimp + 800017f2: 0000 unimp + 800017f4: 0000 unimp + 800017f6: 0000 unimp + 800017f8: 0000 unimp + 800017fa: 0000 unimp + 800017fc: 0000 unimp + 800017fe: 0000 unimp + 80001800: 0000 unimp + 80001802: 0000 unimp + 80001804: 0000 unimp + 80001806: 0000 unimp + 80001808: 0000 unimp + 8000180a: 0000 unimp + 8000180c: 0000 unimp + 8000180e: 0000 unimp + 80001810: 0000 unimp + 80001812: 0000 unimp + 80001814: 0000 unimp + 80001816: 0000 unimp + 80001818: 0000 unimp + 8000181a: 0000 unimp + 8000181c: 0000 unimp + 8000181e: 0000 unimp + 80001820: 0000 unimp + 80001822: 0000 unimp + 80001824: 0000 unimp + 80001826: 0000 unimp + 80001828: 0000 unimp + 8000182a: 0000 unimp + 8000182c: 0000 unimp + 8000182e: 0000 unimp + 80001830: 0000 unimp + 80001832: 0000 unimp + 80001834: 0000 unimp + 80001836: 0000 unimp + 80001838: 0000 unimp + 8000183a: 0000 unimp + 8000183c: 0000 unimp + 8000183e: 0000 unimp + 80001840: 0000 unimp + 80001842: 0000 unimp + 80001844: 0000 unimp + 80001846: 0000 unimp + 80001848: 0000 unimp + 8000184a: 0000 unimp + 8000184c: 0000 unimp + 8000184e: 0000 unimp + 80001850: 0000 unimp + 80001852: 0000 unimp + 80001854: 0000 unimp + 80001856: 0000 unimp + 80001858: 0000 unimp + 8000185a: 0000 unimp + 8000185c: 0000 unimp + 8000185e: 0000 unimp + 80001860: 0000 unimp + 80001862: 0000 unimp + 80001864: 0000 unimp + 80001866: 0000 unimp + 80001868: 0000 unimp + 8000186a: 0000 unimp + 8000186c: 0000 unimp + 8000186e: 0000 unimp + 80001870: 0000 unimp + 80001872: 0000 unimp + 80001874: 0000 unimp + 80001876: 0000 unimp + 80001878: 0000 unimp + 8000187a: 0000 unimp + 8000187c: 0000 unimp + 8000187e: 0000 unimp + 80001880: 0000 unimp + 80001882: 0000 unimp + 80001884: 0000 unimp + 80001886: 0000 unimp + 80001888: 0000 unimp + 8000188a: 0000 unimp + 8000188c: 0000 unimp + 8000188e: 0000 unimp + 80001890: 0000 unimp + 80001892: 0000 unimp + 80001894: 0000 unimp + 80001896: 0000 unimp + 80001898: 0000 unimp + 8000189a: 0000 unimp + 8000189c: 0000 unimp + 8000189e: 0000 unimp + 800018a0: 0000 unimp + 800018a2: 0000 unimp + 800018a4: 0000 unimp + 800018a6: 0000 unimp + 800018a8: 0000 unimp + 800018aa: 0000 unimp + 800018ac: 0000 unimp + 800018ae: 0000 unimp + 800018b0: 0000 unimp + 800018b2: 0000 unimp + 800018b4: 0000 unimp + 800018b6: 0000 unimp + 800018b8: 0000 unimp + 800018ba: 0000 unimp + 800018bc: 0000 unimp + 800018be: 0000 unimp + 800018c0: 0000 unimp + 800018c2: 0000 unimp + 800018c4: 0000 unimp + 800018c6: 0000 unimp + 800018c8: 0000 unimp + 800018ca: 0000 unimp + 800018cc: 0000 unimp + 800018ce: 0000 unimp + 800018d0: 0000 unimp + 800018d2: 0000 unimp + 800018d4: 0000 unimp + 800018d6: 0000 unimp + 800018d8: 0000 unimp + 800018da: 0000 unimp + 800018dc: 0000 unimp + 800018de: 0000 unimp + 800018e0: 0000 unimp + 800018e2: 0000 unimp + 800018e4: 0000 unimp + 800018e6: 0000 unimp + 800018e8: 0000 unimp + 800018ea: 0000 unimp + 800018ec: 0000 unimp + 800018ee: 0000 unimp + 800018f0: 0000 unimp + 800018f2: 0000 unimp + 800018f4: 0000 unimp + 800018f6: 0000 unimp + 800018f8: 0000 unimp + 800018fa: 0000 unimp + 800018fc: 0000 unimp + 800018fe: 0000 unimp + 80001900: 0000 unimp + 80001902: 0000 unimp + 80001904: 0000 unimp + 80001906: 0000 unimp + 80001908: 0000 unimp + 8000190a: 0000 unimp + 8000190c: 0000 unimp + 8000190e: 0000 unimp + 80001910: 0000 unimp + 80001912: 0000 unimp + 80001914: 0000 unimp + 80001916: 0000 unimp + 80001918: 0000 unimp + 8000191a: 0000 unimp + 8000191c: 0000 unimp + 8000191e: 0000 unimp + 80001920: 0000 unimp + 80001922: 0000 unimp + 80001924: 0000 unimp + 80001926: 0000 unimp + 80001928: 0000 unimp + 8000192a: 0000 unimp + 8000192c: 0000 unimp + 8000192e: 0000 unimp + 80001930: 0000 unimp + 80001932: 0000 unimp + 80001934: 0000 unimp + 80001936: 0000 unimp + 80001938: 0000 unimp + 8000193a: 0000 unimp + 8000193c: 0000 unimp + 8000193e: 0000 unimp + 80001940: 0000 unimp + 80001942: 0000 unimp + 80001944: 0000 unimp + 80001946: 0000 unimp + 80001948: 0000 unimp + 8000194a: 0000 unimp + 8000194c: 0000 unimp + 8000194e: 0000 unimp + 80001950: 0000 unimp + 80001952: 0000 unimp + 80001954: 0000 unimp + 80001956: 0000 unimp + 80001958: 0000 unimp + 8000195a: 0000 unimp + 8000195c: 0000 unimp + 8000195e: 0000 unimp + 80001960: 0000 unimp + 80001962: 0000 unimp + 80001964: 0000 unimp + 80001966: 0000 unimp + 80001968: 0000 unimp + 8000196a: 0000 unimp + 8000196c: 0000 unimp + 8000196e: 0000 unimp + 80001970: 0000 unimp + 80001972: 0000 unimp + 80001974: 0000 unimp + 80001976: 0000 unimp + 80001978: 0000 unimp + 8000197a: 0000 unimp + 8000197c: 0000 unimp + 8000197e: 0000 unimp + 80001980: 0000 unimp + 80001982: 0000 unimp + 80001984: 0000 unimp + 80001986: 0000 unimp + 80001988: 0000 unimp + 8000198a: 0000 unimp + 8000198c: 0000 unimp + 8000198e: 0000 unimp + 80001990: 0000 unimp + 80001992: 0000 unimp + 80001994: 0000 unimp + 80001996: 0000 unimp + 80001998: 0000 unimp + 8000199a: 0000 unimp + 8000199c: 0000 unimp + 8000199e: 0000 unimp + 800019a0: 0000 unimp + 800019a2: 0000 unimp + 800019a4: 0000 unimp + 800019a6: 0000 unimp + 800019a8: 0000 unimp + 800019aa: 0000 unimp + 800019ac: 0000 unimp + 800019ae: 0000 unimp + 800019b0: 0000 unimp + 800019b2: 0000 unimp + 800019b4: 0000 unimp + 800019b6: 0000 unimp + 800019b8: 0000 unimp + 800019ba: 0000 unimp + 800019bc: 0000 unimp + 800019be: 0000 unimp + 800019c0: 0000 unimp + 800019c2: 0000 unimp + 800019c4: 0000 unimp + 800019c6: 0000 unimp + 800019c8: 0000 unimp + 800019ca: 0000 unimp + 800019cc: 0000 unimp + 800019ce: 0000 unimp + 800019d0: 0000 unimp + 800019d2: 0000 unimp + 800019d4: 0000 unimp + 800019d6: 0000 unimp + 800019d8: 0000 unimp + 800019da: 0000 unimp + 800019dc: 0000 unimp + 800019de: 0000 unimp + 800019e0: 0000 unimp + 800019e2: 0000 unimp + 800019e4: 0000 unimp + 800019e6: 0000 unimp + 800019e8: 0000 unimp + 800019ea: 0000 unimp + 800019ec: 0000 unimp + 800019ee: 0000 unimp + 800019f0: 0000 unimp + 800019f2: 0000 unimp + 800019f4: 0000 unimp + 800019f6: 0000 unimp + 800019f8: 0000 unimp + 800019fa: 0000 unimp + 800019fc: 0000 unimp + 800019fe: 0000 unimp + 80001a00: 0000 unimp + 80001a02: 0000 unimp + 80001a04: 0000 unimp + 80001a06: 0000 unimp + 80001a08: 0000 unimp + 80001a0a: 0000 unimp + 80001a0c: 0000 unimp + 80001a0e: 0000 unimp + 80001a10: 0000 unimp + 80001a12: 0000 unimp + 80001a14: 0000 unimp + 80001a16: 0000 unimp + 80001a18: 0000 unimp + 80001a1a: 0000 unimp + 80001a1c: 0000 unimp + 80001a1e: 0000 unimp + 80001a20: 0000 unimp + 80001a22: 0000 unimp + 80001a24: 0000 unimp + 80001a26: 0000 unimp + 80001a28: 0000 unimp + 80001a2a: 0000 unimp + 80001a2c: 0000 unimp + 80001a2e: 0000 unimp + 80001a30: 0000 unimp + 80001a32: 0000 unimp + 80001a34: 0000 unimp + 80001a36: 0000 unimp + 80001a38: 0000 unimp + 80001a3a: 0000 unimp + 80001a3c: 0000 unimp + 80001a3e: 0000 unimp + 80001a40: 0000 unimp + 80001a42: 0000 unimp + 80001a44: 0000 unimp + 80001a46: 0000 unimp + 80001a48: 0000 unimp + 80001a4a: 0000 unimp + 80001a4c: 0000 unimp + 80001a4e: 0000 unimp + 80001a50: 0000 unimp + 80001a52: 0000 unimp + 80001a54: 0000 unimp + 80001a56: 0000 unimp + 80001a58: 0000 unimp + 80001a5a: 0000 unimp + 80001a5c: 0000 unimp + 80001a5e: 0000 unimp + 80001a60: 0000 unimp + 80001a62: 0000 unimp + 80001a64: 0000 unimp + 80001a66: 0000 unimp + 80001a68: 0000 unimp + 80001a6a: 0000 unimp + 80001a6c: 0000 unimp + 80001a6e: 0000 unimp + 80001a70: 0000 unimp + 80001a72: 0000 unimp + 80001a74: 0000 unimp + 80001a76: 0000 unimp + 80001a78: 0000 unimp + 80001a7a: 0000 unimp + 80001a7c: 0000 unimp + 80001a7e: 0000 unimp + 80001a80: 0000 unimp + 80001a82: 0000 unimp + 80001a84: 0000 unimp + 80001a86: 0000 unimp + 80001a88: 0000 unimp + 80001a8a: 0000 unimp + 80001a8c: 0000 unimp + 80001a8e: 0000 unimp + 80001a90: 0000 unimp + 80001a92: 0000 unimp + 80001a94: 0000 unimp + 80001a96: 0000 unimp + 80001a98: 0000 unimp + 80001a9a: 0000 unimp + 80001a9c: 0000 unimp + 80001a9e: 0000 unimp + 80001aa0: 0000 unimp + 80001aa2: 0000 unimp + 80001aa4: 0000 unimp + 80001aa6: 0000 unimp + 80001aa8: 0000 unimp + 80001aaa: 0000 unimp + 80001aac: 0000 unimp + 80001aae: 0000 unimp + 80001ab0: 0000 unimp + 80001ab2: 0000 unimp + 80001ab4: 0000 unimp + 80001ab6: 0000 unimp + 80001ab8: 0000 unimp + 80001aba: 0000 unimp + 80001abc: 0000 unimp + 80001abe: 0000 unimp + 80001ac0: 0000 unimp + 80001ac2: 0000 unimp + 80001ac4: 0000 unimp + 80001ac6: 0000 unimp + 80001ac8: 0000 unimp + 80001aca: 0000 unimp + 80001acc: 0000 unimp + 80001ace: 0000 unimp + 80001ad0: 0000 unimp + 80001ad2: 0000 unimp + 80001ad4: 0000 unimp + 80001ad6: 0000 unimp + 80001ad8: 0000 unimp + 80001ada: 0000 unimp + 80001adc: 0000 unimp + 80001ade: 0000 unimp + 80001ae0: 0000 unimp + 80001ae2: 0000 unimp + 80001ae4: 0000 unimp + 80001ae6: 0000 unimp + 80001ae8: 0000 unimp + 80001aea: 0000 unimp + 80001aec: 0000 unimp + 80001aee: 0000 unimp + 80001af0: 0000 unimp + 80001af2: 0000 unimp + 80001af4: 0000 unimp + 80001af6: 0000 unimp + 80001af8: 0000 unimp + 80001afa: 0000 unimp + 80001afc: 0000 unimp + 80001afe: 0000 unimp + 80001b00: 0000 unimp + 80001b02: 0000 unimp + 80001b04: 0000 unimp + 80001b06: 0000 unimp + 80001b08: 0000 unimp + 80001b0a: 0000 unimp + 80001b0c: 0000 unimp + 80001b0e: 0000 unimp + 80001b10: 0000 unimp + 80001b12: 0000 unimp + 80001b14: 0000 unimp + 80001b16: 0000 unimp + 80001b18: 0000 unimp + 80001b1a: 0000 unimp + 80001b1c: 0000 unimp + 80001b1e: 0000 unimp + 80001b20: 0000 unimp + 80001b22: 0000 unimp + 80001b24: 0000 unimp + 80001b26: 0000 unimp + 80001b28: 0000 unimp + 80001b2a: 0000 unimp + 80001b2c: 0000 unimp + 80001b2e: 0000 unimp + 80001b30: 0000 unimp + 80001b32: 0000 unimp + 80001b34: 0000 unimp + 80001b36: 0000 unimp + 80001b38: 0000 unimp + 80001b3a: 0000 unimp + 80001b3c: 0000 unimp + 80001b3e: 0000 unimp + 80001b40: 0000 unimp + 80001b42: 0000 unimp + 80001b44: 0000 unimp + 80001b46: 0000 unimp + 80001b48: 0000 unimp + 80001b4a: 0000 unimp + 80001b4c: 0000 unimp + 80001b4e: 0000 unimp + 80001b50: 0000 unimp + 80001b52: 0000 unimp + 80001b54: 0000 unimp + 80001b56: 0000 unimp + 80001b58: 0000 unimp + 80001b5a: 0000 unimp + 80001b5c: 0000 unimp + 80001b5e: 0000 unimp + 80001b60: 0000 unimp + 80001b62: 0000 unimp + 80001b64: 0000 unimp + 80001b66: 0000 unimp + 80001b68: 0000 unimp + 80001b6a: 0000 unimp + 80001b6c: 0000 unimp + 80001b6e: 0000 unimp + 80001b70: 0000 unimp + 80001b72: 0000 unimp + 80001b74: 0000 unimp + 80001b76: 0000 unimp + 80001b78: 0000 unimp + 80001b7a: 0000 unimp + 80001b7c: 0000 unimp + 80001b7e: 0000 unimp + 80001b80: 0000 unimp + 80001b82: 0000 unimp + 80001b84: 0000 unimp + 80001b86: 0000 unimp + 80001b88: 0000 unimp + 80001b8a: 0000 unimp + 80001b8c: 0000 unimp + 80001b8e: 0000 unimp + 80001b90: 0000 unimp + 80001b92: 0000 unimp + 80001b94: 0000 unimp + 80001b96: 0000 unimp + 80001b98: 0000 unimp + 80001b9a: 0000 unimp + 80001b9c: 0000 unimp + 80001b9e: 0000 unimp + 80001ba0: 0000 unimp + 80001ba2: 0000 unimp + 80001ba4: 0000 unimp + 80001ba6: 0000 unimp + 80001ba8: 0000 unimp + 80001baa: 0000 unimp + 80001bac: 0000 unimp + 80001bae: 0000 unimp + 80001bb0: 0000 unimp + 80001bb2: 0000 unimp + 80001bb4: 0000 unimp + 80001bb6: 0000 unimp + 80001bb8: 0000 unimp + 80001bba: 0000 unimp + 80001bbc: 0000 unimp + 80001bbe: 0000 unimp + 80001bc0: 0000 unimp + 80001bc2: 0000 unimp + 80001bc4: 0000 unimp + 80001bc6: 0000 unimp + 80001bc8: 0000 unimp + 80001bca: 0000 unimp + 80001bcc: 0000 unimp + 80001bce: 0000 unimp + 80001bd0: 0000 unimp + 80001bd2: 0000 unimp + 80001bd4: 0000 unimp + 80001bd6: 0000 unimp + 80001bd8: 0000 unimp + 80001bda: 0000 unimp + 80001bdc: 0000 unimp + 80001bde: 0000 unimp + 80001be0: 0000 unimp + 80001be2: 0000 unimp + 80001be4: 0000 unimp + 80001be6: 0000 unimp + 80001be8: 0000 unimp + 80001bea: 0000 unimp + 80001bec: 0000 unimp + 80001bee: 0000 unimp + 80001bf0: 0000 unimp + 80001bf2: 0000 unimp + 80001bf4: 0000 unimp + 80001bf6: 0000 unimp + 80001bf8: 0000 unimp + 80001bfa: 0000 unimp + 80001bfc: 0000 unimp + 80001bfe: 0000 unimp + 80001c00: 0000 unimp + 80001c02: 0000 unimp + 80001c04: 0000 unimp + 80001c06: 0000 unimp + 80001c08: 0000 unimp + 80001c0a: 0000 unimp + 80001c0c: 0000 unimp + 80001c0e: 0000 unimp + 80001c10: 0000 unimp + 80001c12: 0000 unimp + 80001c14: 0000 unimp + 80001c16: 0000 unimp + 80001c18: 0000 unimp + 80001c1a: 0000 unimp + 80001c1c: 0000 unimp + 80001c1e: 0000 unimp + 80001c20: 0000 unimp + 80001c22: 0000 unimp + 80001c24: 0000 unimp + 80001c26: 0000 unimp + 80001c28: 0000 unimp + 80001c2a: 0000 unimp + 80001c2c: 0000 unimp + 80001c2e: 0000 unimp + 80001c30: 0000 unimp + 80001c32: 0000 unimp + 80001c34: 0000 unimp + 80001c36: 0000 unimp + 80001c38: 0000 unimp + 80001c3a: 0000 unimp + 80001c3c: 0000 unimp + 80001c3e: 0000 unimp + 80001c40: 0000 unimp + 80001c42: 0000 unimp + 80001c44: 0000 unimp + 80001c46: 0000 unimp + 80001c48: 0000 unimp + 80001c4a: 0000 unimp + 80001c4c: 0000 unimp + 80001c4e: 0000 unimp + 80001c50: 0000 unimp + 80001c52: 0000 unimp + 80001c54: 0000 unimp + 80001c56: 0000 unimp + 80001c58: 0000 unimp + 80001c5a: 0000 unimp + 80001c5c: 0000 unimp + 80001c5e: 0000 unimp + 80001c60: 0000 unimp + 80001c62: 0000 unimp + 80001c64: 0000 unimp + 80001c66: 0000 unimp + 80001c68: 0000 unimp + 80001c6a: 0000 unimp + 80001c6c: 0000 unimp + 80001c6e: 0000 unimp + 80001c70: 0000 unimp + 80001c72: 0000 unimp + 80001c74: 0000 unimp + 80001c76: 0000 unimp + 80001c78: 0000 unimp + 80001c7a: 0000 unimp + 80001c7c: 0000 unimp + 80001c7e: 0000 unimp + 80001c80: 0000 unimp + 80001c82: 0000 unimp + 80001c84: 0000 unimp + 80001c86: 0000 unimp + 80001c88: 0000 unimp + 80001c8a: 0000 unimp + 80001c8c: 0000 unimp + 80001c8e: 0000 unimp + 80001c90: 0000 unimp + 80001c92: 0000 unimp + 80001c94: 0000 unimp + 80001c96: 0000 unimp + 80001c98: 0000 unimp + 80001c9a: 0000 unimp + 80001c9c: 0000 unimp + 80001c9e: 0000 unimp + 80001ca0: 0000 unimp + 80001ca2: 0000 unimp + 80001ca4: 0000 unimp + 80001ca6: 0000 unimp + 80001ca8: 0000 unimp + 80001caa: 0000 unimp + 80001cac: 0000 unimp + 80001cae: 0000 unimp + 80001cb0: 0000 unimp + 80001cb2: 0000 unimp + 80001cb4: 0000 unimp + 80001cb6: 0000 unimp + 80001cb8: 0000 unimp + 80001cba: 0000 unimp + 80001cbc: 0000 unimp + 80001cbe: 0000 unimp + 80001cc0: 0000 unimp + 80001cc2: 0000 unimp + 80001cc4: 0000 unimp + 80001cc6: 0000 unimp + 80001cc8: 0000 unimp + 80001cca: 0000 unimp + 80001ccc: 0000 unimp + 80001cce: 0000 unimp + 80001cd0: 0000 unimp + 80001cd2: 0000 unimp + 80001cd4: 0000 unimp + 80001cd6: 0000 unimp + 80001cd8: 0000 unimp + 80001cda: 0000 unimp + 80001cdc: 0000 unimp + 80001cde: 0000 unimp + 80001ce0: 0000 unimp + 80001ce2: 0000 unimp + 80001ce4: 0000 unimp + 80001ce6: 0000 unimp + 80001ce8: 0000 unimp + 80001cea: 0000 unimp + 80001cec: 0000 unimp + 80001cee: 0000 unimp + 80001cf0: 0000 unimp + 80001cf2: 0000 unimp + 80001cf4: 0000 unimp + 80001cf6: 0000 unimp + 80001cf8: 0000 unimp + 80001cfa: 0000 unimp + 80001cfc: 0000 unimp + 80001cfe: 0000 unimp + 80001d00: 0000 unimp + 80001d02: 0000 unimp + 80001d04: 0000 unimp + 80001d06: 0000 unimp + 80001d08: 0000 unimp + 80001d0a: 0000 unimp + 80001d0c: 0000 unimp + 80001d0e: 0000 unimp + 80001d10: 0000 unimp + 80001d12: 0000 unimp + 80001d14: 0000 unimp + 80001d16: 0000 unimp + 80001d18: 0000 unimp + 80001d1a: 0000 unimp + 80001d1c: 0000 unimp + 80001d1e: 0000 unimp + 80001d20: 0000 unimp + 80001d22: 0000 unimp + 80001d24: 0000 unimp + 80001d26: 0000 unimp + 80001d28: 0000 unimp + 80001d2a: 0000 unimp + 80001d2c: 0000 unimp + 80001d2e: 0000 unimp + 80001d30: 0000 unimp + 80001d32: 0000 unimp + 80001d34: 0000 unimp + 80001d36: 0000 unimp + 80001d38: 0000 unimp + 80001d3a: 0000 unimp + 80001d3c: 0000 unimp + 80001d3e: 0000 unimp + 80001d40: 0000 unimp + 80001d42: 0000 unimp + 80001d44: 0000 unimp + 80001d46: 0000 unimp + 80001d48: 0000 unimp + 80001d4a: 0000 unimp + 80001d4c: 0000 unimp + 80001d4e: 0000 unimp + 80001d50: 0000 unimp + 80001d52: 0000 unimp + 80001d54: 0000 unimp + 80001d56: 0000 unimp + 80001d58: 0000 unimp + 80001d5a: 0000 unimp + 80001d5c: 0000 unimp + 80001d5e: 0000 unimp + 80001d60: 0000 unimp + 80001d62: 0000 unimp + 80001d64: 0000 unimp + 80001d66: 0000 unimp + 80001d68: 0000 unimp + 80001d6a: 0000 unimp + 80001d6c: 0000 unimp + 80001d6e: 0000 unimp + 80001d70: 0000 unimp + 80001d72: 0000 unimp + 80001d74: 0000 unimp + 80001d76: 0000 unimp + 80001d78: 0000 unimp + 80001d7a: 0000 unimp + 80001d7c: 0000 unimp + 80001d7e: 0000 unimp + 80001d80: 0000 unimp + 80001d82: 0000 unimp + 80001d84: 0000 unimp + 80001d86: 0000 unimp + 80001d88: 0000 unimp + 80001d8a: 0000 unimp + 80001d8c: 0000 unimp + 80001d8e: 0000 unimp + 80001d90: 0000 unimp + 80001d92: 0000 unimp + 80001d94: 0000 unimp + 80001d96: 0000 unimp + 80001d98: 0000 unimp + 80001d9a: 0000 unimp + 80001d9c: 0000 unimp + 80001d9e: 0000 unimp + 80001da0: 0000 unimp + 80001da2: 0000 unimp + 80001da4: 0000 unimp + 80001da6: 0000 unimp + 80001da8: 0000 unimp + 80001daa: 0000 unimp + 80001dac: 0000 unimp + 80001dae: 0000 unimp + 80001db0: 0000 unimp + 80001db2: 0000 unimp + 80001db4: 0000 unimp + 80001db6: 0000 unimp + 80001db8: 0000 unimp + 80001dba: 0000 unimp + 80001dbc: 0000 unimp + 80001dbe: 0000 unimp + 80001dc0: 0000 unimp + 80001dc2: 0000 unimp + 80001dc4: 0000 unimp + 80001dc6: 0000 unimp + 80001dc8: 0000 unimp + 80001dca: 0000 unimp + 80001dcc: 0000 unimp + 80001dce: 0000 unimp + 80001dd0: 0000 unimp + 80001dd2: 0000 unimp + 80001dd4: 0000 unimp + 80001dd6: 0000 unimp + 80001dd8: 0000 unimp + 80001dda: 0000 unimp + 80001ddc: 0000 unimp + 80001dde: 0000 unimp + 80001de0: 0000 unimp + 80001de2: 0000 unimp + 80001de4: 0000 unimp + 80001de6: 0000 unimp + 80001de8: 0000 unimp + 80001dea: 0000 unimp + 80001dec: 0000 unimp + 80001dee: 0000 unimp + 80001df0: 0000 unimp + 80001df2: 0000 unimp + 80001df4: 0000 unimp + 80001df6: 0000 unimp + 80001df8: 0000 unimp + 80001dfa: 0000 unimp + 80001dfc: 0000 unimp + 80001dfe: 0000 unimp + 80001e00: 0000 unimp + 80001e02: 0000 unimp + 80001e04: 0000 unimp + 80001e06: 0000 unimp + 80001e08: 0000 unimp + 80001e0a: 0000 unimp + 80001e0c: 0000 unimp + 80001e0e: 0000 unimp + 80001e10: 0000 unimp + 80001e12: 0000 unimp + 80001e14: 0000 unimp + 80001e16: 0000 unimp + 80001e18: 0000 unimp + 80001e1a: 0000 unimp + 80001e1c: 0000 unimp + 80001e1e: 0000 unimp + 80001e20: 0000 unimp + 80001e22: 0000 unimp + 80001e24: 0000 unimp + 80001e26: 0000 unimp + 80001e28: 0000 unimp + 80001e2a: 0000 unimp + 80001e2c: 0000 unimp + 80001e2e: 0000 unimp + 80001e30: 0000 unimp + 80001e32: 0000 unimp + 80001e34: 0000 unimp + 80001e36: 0000 unimp + 80001e38: 0000 unimp + 80001e3a: 0000 unimp + 80001e3c: 0000 unimp + 80001e3e: 0000 unimp + 80001e40: 0000 unimp + 80001e42: 0000 unimp + 80001e44: 0000 unimp + 80001e46: 0000 unimp + 80001e48: 0000 unimp + 80001e4a: 0000 unimp + 80001e4c: 0000 unimp + 80001e4e: 0000 unimp + 80001e50: 0000 unimp + 80001e52: 0000 unimp + 80001e54: 0000 unimp + 80001e56: 0000 unimp + 80001e58: 0000 unimp + 80001e5a: 0000 unimp + 80001e5c: 0000 unimp + 80001e5e: 0000 unimp + 80001e60: 0000 unimp + 80001e62: 0000 unimp + 80001e64: 0000 unimp + 80001e66: 0000 unimp + 80001e68: 0000 unimp + 80001e6a: 0000 unimp + 80001e6c: 0000 unimp + 80001e6e: 0000 unimp + 80001e70: 0000 unimp + 80001e72: 0000 unimp + 80001e74: 0000 unimp + 80001e76: 0000 unimp + 80001e78: 0000 unimp + 80001e7a: 0000 unimp + 80001e7c: 0000 unimp + 80001e7e: 0000 unimp + 80001e80: 0000 unimp + 80001e82: 0000 unimp + 80001e84: 0000 unimp + 80001e86: 0000 unimp + 80001e88: 0000 unimp + 80001e8a: 0000 unimp + 80001e8c: 0000 unimp + 80001e8e: 0000 unimp + 80001e90: 0000 unimp + 80001e92: 0000 unimp + 80001e94: 0000 unimp + 80001e96: 0000 unimp + 80001e98: 0000 unimp + 80001e9a: 0000 unimp + 80001e9c: 0000 unimp + 80001e9e: 0000 unimp + 80001ea0: 0000 unimp + 80001ea2: 0000 unimp + 80001ea4: 0000 unimp + 80001ea6: 0000 unimp + 80001ea8: 0000 unimp + 80001eaa: 0000 unimp + 80001eac: 0000 unimp + 80001eae: 0000 unimp + 80001eb0: 0000 unimp + 80001eb2: 0000 unimp + 80001eb4: 0000 unimp + 80001eb6: 0000 unimp + 80001eb8: 0000 unimp + 80001eba: 0000 unimp + 80001ebc: 0000 unimp + 80001ebe: 0000 unimp + 80001ec0: 0000 unimp + 80001ec2: 0000 unimp + 80001ec4: 0000 unimp + 80001ec6: 0000 unimp + 80001ec8: 0000 unimp + 80001eca: 0000 unimp + 80001ecc: 0000 unimp + 80001ece: 0000 unimp + 80001ed0: 0000 unimp + 80001ed2: 0000 unimp + 80001ed4: 0000 unimp + 80001ed6: 0000 unimp + 80001ed8: 0000 unimp + 80001eda: 0000 unimp + 80001edc: 0000 unimp + 80001ede: 0000 unimp + 80001ee0: 0000 unimp + 80001ee2: 0000 unimp + 80001ee4: 0000 unimp + 80001ee6: 0000 unimp + 80001ee8: 0000 unimp + 80001eea: 0000 unimp + 80001eec: 0000 unimp + 80001eee: 0000 unimp + 80001ef0: 0000 unimp + 80001ef2: 0000 unimp + 80001ef4: 0000 unimp + 80001ef6: 0000 unimp + 80001ef8: 0000 unimp + 80001efa: 0000 unimp + 80001efc: 0000 unimp + 80001efe: 0000 unimp + 80001f00: 0000 unimp + 80001f02: 0000 unimp + 80001f04: 0000 unimp + 80001f06: 0000 unimp + 80001f08: 0000 unimp + 80001f0a: 0000 unimp + 80001f0c: 0000 unimp + 80001f0e: 0000 unimp + 80001f10: 0000 unimp + 80001f12: 0000 unimp + 80001f14: 0000 unimp + 80001f16: 0000 unimp + 80001f18: 0000 unimp + 80001f1a: 0000 unimp + 80001f1c: 0000 unimp + 80001f1e: 0000 unimp + 80001f20: 0000 unimp + 80001f22: 0000 unimp + 80001f24: 0000 unimp + 80001f26: 0000 unimp + 80001f28: 0000 unimp + 80001f2a: 0000 unimp + 80001f2c: 0000 unimp + 80001f2e: 0000 unimp + 80001f30: 0000 unimp + 80001f32: 0000 unimp + 80001f34: 0000 unimp + 80001f36: 0000 unimp + 80001f38: 0000 unimp + 80001f3a: 0000 unimp + 80001f3c: 0000 unimp + 80001f3e: 0000 unimp + 80001f40: 0000 unimp + 80001f42: 0000 unimp + 80001f44: 0000 unimp + 80001f46: 0000 unimp + 80001f48: 0000 unimp + 80001f4a: 0000 unimp + 80001f4c: 0000 unimp + 80001f4e: 0000 unimp + 80001f50: 0000 unimp + 80001f52: 0000 unimp + 80001f54: 0000 unimp + 80001f56: 0000 unimp + 80001f58: 0000 unimp + 80001f5a: 0000 unimp + 80001f5c: 0000 unimp + 80001f5e: 0000 unimp + 80001f60: 0000 unimp + 80001f62: 0000 unimp + 80001f64: 0000 unimp + 80001f66: 0000 unimp + 80001f68: 0000 unimp + 80001f6a: 0000 unimp + 80001f6c: 0000 unimp + 80001f6e: 0000 unimp + 80001f70: 0000 unimp + 80001f72: 0000 unimp + 80001f74: 0000 unimp + 80001f76: 0000 unimp + 80001f78: 0000 unimp + 80001f7a: 0000 unimp + 80001f7c: 0000 unimp + 80001f7e: 0000 unimp + 80001f80: 0000 unimp + 80001f82: 0000 unimp + 80001f84: 0000 unimp + 80001f86: 0000 unimp + 80001f88: 0000 unimp + 80001f8a: 0000 unimp + 80001f8c: 0000 unimp + 80001f8e: 0000 unimp + 80001f90: 0000 unimp + 80001f92: 0000 unimp + 80001f94: 0000 unimp + 80001f96: 0000 unimp + 80001f98: 0000 unimp + 80001f9a: 0000 unimp + 80001f9c: 0000 unimp + 80001f9e: 0000 unimp + 80001fa0: 0000 unimp + 80001fa2: 0000 unimp + 80001fa4: 0000 unimp + 80001fa6: 0000 unimp + 80001fa8: 0000 unimp + 80001faa: 0000 unimp + 80001fac: 0000 unimp + 80001fae: 0000 unimp + 80001fb0: 0000 unimp + 80001fb2: 0000 unimp + 80001fb4: 0000 unimp + 80001fb6: 0000 unimp + 80001fb8: 0000 unimp + 80001fba: 0000 unimp + 80001fbc: 0000 unimp + 80001fbe: 0000 unimp + 80001fc0: 0000 unimp + 80001fc2: 0000 unimp + 80001fc4: 0000 unimp + 80001fc6: 0000 unimp + 80001fc8: 0000 unimp + 80001fca: 0000 unimp + 80001fcc: 0000 unimp + 80001fce: 0000 unimp + 80001fd0: 0000 unimp + 80001fd2: 0000 unimp + 80001fd4: 0000 unimp + 80001fd6: 0000 unimp + 80001fd8: 0000 unimp + 80001fda: 0000 unimp + 80001fdc: 0000 unimp + 80001fde: 0000 unimp + 80001fe0: 0000 unimp + 80001fe2: 0000 unimp + 80001fe4: 0000 unimp + 80001fe6: 0000 unimp + 80001fe8: 0000 unimp + 80001fea: 0000 unimp + 80001fec: 0000 unimp + 80001fee: 0000 unimp + 80001ff0: 0000 unimp + 80001ff2: 0000 unimp + 80001ff4: 0000 unimp + 80001ff6: 0000 unimp + 80001ff8: 0000 unimp + 80001ffa: 0000 unimp + 80001ffc: 0000 unimp + 80001ffe: 00158593 addi a1,a1,1 + 80002002: 29b00e93 li t4,667 + 80002006: 00200193 li gp,2 + 8000200a: 2dd59163 bne a1,t4,800022cc + 8000200e: 00001137 lui sp,0x1 + 80002012: 2341011b addiw sp,sp,564 + +0000000080002016 : + 80002016: 1fe8 addi a0,sp,1020 + 80002018: 00001eb7 lui t4,0x1 + 8000201c: 630e8e9b addiw t4,t4,1584 + 80002020: 00300193 li gp,3 + 80002024: 2bd51463 bne a0,t4,800022cc + +0000000080002028 : + 80002028: 617d addi sp,sp,496 + 8000202a: 0001 nop + 8000202c: 00001eb7 lui t4,0x1 + 80002030: 424e8e9b addiw t4,t4,1060 + 80002034: 00400193 li gp,4 + 80002038: 29d11a63 bne sp,t4,800022cc + +000000008000203c : + 8000203c: 7101 addi sp,sp,-512 + 8000203e: 0001 nop + 80002040: 00001eb7 lui t4,0x1 + 80002044: 224e8e9b addiw t4,t4,548 + 80002048: 00500193 li gp,5 + 8000204c: 29d11063 bne sp,t4,800022cc + 80002050: ffffe597 auipc a1,0xffffe + 80002054: 0b858593 addi a1,a1,184 # 80000108 + +0000000080002058 : + 80002058: 41c8 lw a0,4(a1) + 8000205a: 0505 addi a0,a0,1 + 8000205c: c1c8 sw a0,4(a1) + 8000205e: 41d0 lw a2,4(a1) + 80002060: fedcceb7 lui t4,0xfedcc + 80002064: a99e8e9b addiw t4,t4,-1383 + 80002068: 00600193 li gp,6 + 8000206c: 27d61063 bne a2,t4,800022cc + +0000000080002070 : + 80002070: 6188 ld a0,0(a1) + 80002072: 0505 addi a0,a0,1 + 80002074: e188 sd a0,0(a1) + 80002076: 6190 ld a2,0(a1) + 80002078: fff6eeb7 lui t4,0xfff6e + 8000207c: 5d5e8e9b addiw t4,t4,1493 + 80002080: 00ce9e93 slli t4,t4,0xc + 80002084: cbbe8e93 addi t4,t4,-837 # fffffffffff6dcbb <_end+0xffffffff7ff69cbb> + 80002088: 00de9e93 slli t4,t4,0xd + 8000208c: 543e8e93 addi t4,t4,1347 + 80002090: 00ce9e93 slli t4,t4,0xc + 80002094: 211e8e93 addi t4,t4,529 + 80002098: 00700193 li gp,7 + 8000209c: 23d61863 bne a2,t4,800022cc + +00000000800020a0 : + 800020a0: 00106513 ori a0,zero,1 + 800020a4: 1541 addi a0,a0,-16 + 800020a6: 0001 nop + 800020a8: ff100e93 li t4,-15 + 800020ac: 00800193 li gp,8 + 800020b0: 21d51e63 bne a0,t4,800022cc + +00000000800020b4 : + 800020b4: 00106793 ori a5,zero,1 + 800020b8: 57c1 li a5,-16 + 800020ba: 0001 nop + 800020bc: ff000e93 li t4,-16 + 800020c0: 00900193 li gp,9 + 800020c4: 21d79463 bne a5,t4,800022cc + +00000000800020c8 : + 800020c8: 6188 ld a0,0(a1) + 800020ca: 357d addiw a0,a0,-1 + 800020cc: 76543eb7 lui t4,0x76543 + 800020d0: 210e8e9b addiw t4,t4,528 + 800020d4: 00a00193 li gp,10 + 800020d8: 1fd51a63 bne a0,t4,800022cc + +00000000800020dc : + 800020dc: 7405 lui s0,0xfffe1 + 800020de: 8431 srai s0,s0,0xc + 800020e0: fe100e93 li t4,-31 + 800020e4: 00b00193 li gp,11 + 800020e8: 1fd41263 bne s0,t4,800022cc + +00000000800020ec : + 800020ec: 7405 lui s0,0xfffe1 + 800020ee: 8031 srli s0,s0,0xc + 800020f0: 00100e9b addiw t4,zero,1 + 800020f4: 034e9e93 slli t4,t4,0x34 + 800020f8: fe1e8e93 addi t4,t4,-31 # 76542fe1 <_start-0x9abd01f> + 800020fc: 00c00193 li gp,12 + 80002100: 1dd41663 bne s0,t4,800022cc + +0000000080002104 : + 80002104: 5479 li s0,-2 + 80002106: 983d andi s0,s0,-17 + 80002108: fee00e93 li t4,-18 + 8000210c: 00e00193 li gp,14 + 80002110: 1bd41e63 bne s0,t4,800022cc + +0000000080002114 : + 80002114: 44d1 li s1,20 + 80002116: 4519 li a0,6 + 80002118: 8c89 sub s1,s1,a0 + 8000211a: 0001 nop + 8000211c: 00e00e93 li t4,14 + 80002120: 00f00193 li gp,15 + 80002124: 1bd49463 bne s1,t4,800022cc + +0000000080002128 : + 80002128: 44d1 li s1,20 + 8000212a: 4519 li a0,6 + 8000212c: 8ca9 xor s1,s1,a0 + 8000212e: 0001 nop + 80002130: 01200e93 li t4,18 + 80002134: 01000193 li gp,16 + 80002138: 19d49a63 bne s1,t4,800022cc + +000000008000213c : + 8000213c: 44d1 li s1,20 + 8000213e: 4519 li a0,6 + 80002140: 8cc9 or s1,s1,a0 + 80002142: 0001 nop + 80002144: 01600e93 li t4,22 + 80002148: 01100193 li gp,17 + 8000214c: 19d49063 bne s1,t4,800022cc + +0000000080002150 : + 80002150: 44d1 li s1,20 + 80002152: 4519 li a0,6 + 80002154: 8ce9 and s1,s1,a0 + 80002156: 0001 nop + 80002158: 00400e93 li t4,4 + 8000215c: 01200193 li gp,18 + 80002160: 17d49663 bne s1,t4,800022cc + +0000000080002164 : + 80002164: 800004b7 lui s1,0x80000 + 80002168: fff4849b addiw s1,s1,-1 + 8000216c: 557d li a0,-1 + 8000216e: 9c89 subw s1,s1,a0 + 80002170: 80000eb7 lui t4,0x80000 + 80002174: 01300193 li gp,19 + 80002178: 15d49a63 bne s1,t4,800022cc + +000000008000217c : + 8000217c: 800004b7 lui s1,0x80000 + 80002180: fff4849b addiw s1,s1,-1 + 80002184: 4505 li a0,1 + 80002186: 9ca9 addw s1,s1,a0 + 80002188: 80000eb7 lui t4,0x80000 + 8000218c: 01400193 li gp,20 + 80002190: 13d49e63 bne s1,t4,800022cc + +0000000080002194 : + 80002194: 00001437 lui s0,0x1 + 80002198: 2344041b addiw s0,s0,564 + 8000219c: 0412 slli s0,s0,0x4 + 8000219e: 0001 nop + 800021a0: 00012eb7 lui t4,0x12 + 800021a4: 340e8e9b addiw t4,t4,832 + 800021a8: 01500193 li gp,21 + 800021ac: 13d41063 bne s0,t4,800022cc + +00000000800021b0 : + 800021b0: 4081 li ra,0 + 800021b2: a011 j 800021b6 + 800021b4: a011 j 800021b8 + 800021b6: a011 j 800021ba + 800021b8: aa11 j 800022cc + 800021ba: 0001 nop + 800021bc: 00000e93 li t4,0 + 800021c0: 01e00193 li gp,30 + 800021c4: 11d09463 bne ra,t4,800022cc + +00000000800021c8 : + 800021c8: 4501 li a0,0 + 800021ca: c111 beqz a0,800021ce + 800021cc: a011 j 800021d0 + 800021ce: a011 j 800021d2 + 800021d0: a8f5 j 800022cc + 800021d2: 0001 nop + 800021d4: 00000e93 li t4,0 + 800021d8: 01f00193 li gp,31 + 800021dc: 0fd01863 bne zero,t4,800022cc + +00000000800021e0 : + 800021e0: 4505 li a0,1 + 800021e2: e111 bnez a0,800021e6 + 800021e4: a011 j 800021e8 + 800021e6: a011 j 800021ea + 800021e8: a0d5 j 800022cc + 800021ea: 0001 nop + 800021ec: 00000e93 li t4,0 + 800021f0: 02000193 li gp,32 + 800021f4: 0dd01c63 bne zero,t4,800022cc + +00000000800021f8 : + 800021f8: 4505 li a0,1 + 800021fa: c111 beqz a0,800021fe + 800021fc: a011 j 80002200 + 800021fe: a0f9 j 800022cc + 80002200: 00000e93 li t4,0 + 80002204: 02100193 li gp,33 + 80002208: 0dd01263 bne zero,t4,800022cc + +000000008000220c : + 8000220c: 4501 li a0,0 + 8000220e: e111 bnez a0,80002212 + 80002210: a011 j 80002214 + 80002212: a86d j 800022cc + 80002214: 00000e93 li t4,0 + 80002218: 02200193 li gp,34 + 8000221c: 0bd01863 bne zero,t4,800022cc + +0000000080002220 : + 80002220: 00000297 auipc t0,0x0 + 80002224: 00e28293 addi t0,t0,14 # 8000222e + 80002228: 4081 li ra,0 + 8000222a: 8282 jr t0 + 8000222c: a011 j 80002230 + 8000222e: a011 j 80002232 + 80002230: a871 j 800022cc + 80002232: 0001 nop + 80002234: 00000e93 li t4,0 + 80002238: 02300193 li gp,35 + 8000223c: 09d09863 bne ra,t4,800022cc + +0000000080002240 : + 80002240: 00000297 auipc t0,0x0 + 80002244: 00e28293 addi t0,t0,14 # 8000224e + 80002248: 4081 li ra,0 + 8000224a: 9282 jalr t0 + 8000224c: a011 j 80002250 + 8000224e: a011 j 80002252 + 80002250: a8b5 j 800022cc + 80002252: 405080b3 sub ra,ra,t0 + 80002256: 0001 nop + 80002258: ffe00e93 li t4,-2 + 8000225c: 02400193 li gp,36 + 80002260: 07d09663 bne ra,t4,800022cc + 80002264: ffffe117 auipc sp,0xffffe + 80002268: ea410113 addi sp,sp,-348 # 80000108 + +000000008000226c : + 8000226c: 4532 lw a0,12(sp) + 8000226e: 0505 addi a0,a0,1 + 80002270: c62a sw a0,12(sp) + 80002272: 4632 lw a2,12(sp) + 80002274: fedcceb7 lui t4,0xfedcc + 80002278: a99e8e9b addiw t4,t4,-1383 + 8000227c: 02800193 li gp,40 + 80002280: 05d61663 bne a2,t4,800022cc + +0000000080002284 : + 80002284: 6522 ld a0,8(sp) + 80002286: 0505 addi a0,a0,1 + 80002288: e42a sd a0,8(sp) + 8000228a: 6622 ld a2,8(sp) + 8000228c: fff6eeb7 lui t4,0xfff6e + 80002290: 5d5e8e9b addiw t4,t4,1493 + 80002294: 00ce9e93 slli t4,t4,0xc + 80002298: cbbe8e93 addi t4,t4,-837 # fffffffffff6dcbb <_end+0xffffffff7ff69cbb> + 8000229c: 00de9e93 slli t4,t4,0xd + 800022a0: 543e8e93 addi t4,t4,1347 + 800022a4: 00ce9e93 slli t4,t4,0xc + 800022a8: 211e8e93 addi t4,t4,529 + 800022ac: 02900193 li gp,41 + 800022b0: 01d61e63 bne a2,t4,800022cc + +00000000800022b4 : + 800022b4: 12300513 li a0,291 + 800022b8: 82aa mv t0,a0 + 800022ba: 92aa add t0,t0,a0 + 800022bc: 24600e93 li t4,582 + 800022c0: 02a00193 li gp,42 + 800022c4: 01d29463 bne t0,t4,800022cc + 800022c8: 00301c63 bne zero,gp,800022e0 + +00000000800022cc : + 800022cc: 0ff0000f fence + 800022d0: 00018063 beqz gp,800022d0 + 800022d4: 00119193 slli gp,gp,0x1 + 800022d8: 0011e193 ori gp,gp,1 + 800022dc: 00000073 ecall + +00000000800022e0 : + 800022e0: 0ff0000f fence + 800022e4: 00100193 li gp,1 + 800022e8: 00000073 ecall + 800022ec: c0001073 unimp + 800022f0: 0000 unimp + 800022f2: 0000 unimp + 800022f4: 0000 unimp + 800022f6: 0000 unimp + 800022f8: 0000 unimp + 800022fa: 0000 unimp + 800022fc: 0000 unimp + 800022fe: 0000 unimp + 80002300: 0000 unimp + 80002302: 0000 unimp + 80002304: 0000 unimp + 80002306: 0000 unimp + 80002308: 0000 unimp + 8000230a: 0000 unimp + 8000230c: 0000 unimp + 8000230e: 0000 unimp + 80002310: 0000 unimp + 80002312: 0000 unimp + 80002314: 0000 unimp + 80002316: 0000 unimp + 80002318: 0000 unimp + 8000231a: 0000 unimp + 8000231c: 0000 unimp + 8000231e: 0000 unimp + 80002320: 0000 unimp + 80002322: 0000 unimp + 80002324: 0000 unimp + 80002326: 0000 unimp + 80002328: 0000 unimp + 8000232a: 0000 unimp + 8000232c: 0000 unimp + 8000232e: 0000 unimp + 80002330: 0000 unimp + 80002332: 0000 unimp + 80002334: 0000 unimp + 80002336: 0000 unimp + 80002338: 0000 unimp + 8000233a: 0000 unimp + 8000233c: 0000 unimp + 8000233e: 0000 unimp + 80002340: 0000 unimp + 80002342: 0000 unimp + 80002344: 0000 unimp + 80002346: 0000 unimp + 80002348: 0000 unimp + 8000234a: 0000 unimp + 8000234c: 0000 unimp + 8000234e: 0000 unimp + 80002350: 0000 unimp + 80002352: 0000 unimp + 80002354: 0000 unimp + 80002356: 0000 unimp + 80002358: 0000 unimp + 8000235a: 0000 unimp + 8000235c: 0000 unimp + 8000235e: 0000 unimp + 80002360: 0000 unimp + 80002362: 0000 unimp + 80002364: 0000 unimp + 80002366: 0000 unimp + 80002368: 0000 unimp + 8000236a: 0000 unimp + 8000236c: 0000 unimp + 8000236e: 0000 unimp + 80002370: 0000 unimp + 80002372: 0000 unimp + 80002374: 0000 unimp + 80002376: 0000 unimp + 80002378: 0000 unimp + 8000237a: 0000 unimp + 8000237c: 0000 unimp + 8000237e: 0000 unimp + 80002380: 0000 unimp + 80002382: 0000 unimp + 80002384: 0000 unimp + 80002386: 0000 unimp + 80002388: 0000 unimp + 8000238a: 0000 unimp + 8000238c: 0000 unimp + 8000238e: 0000 unimp + 80002390: 0000 unimp + 80002392: 0000 unimp + 80002394: 0000 unimp + 80002396: 0000 unimp + 80002398: 0000 unimp + 8000239a: 0000 unimp + 8000239c: 0000 unimp + 8000239e: 0000 unimp + 800023a0: 0000 unimp + 800023a2: 0000 unimp + 800023a4: 0000 unimp + 800023a6: 0000 unimp + 800023a8: 0000 unimp + 800023aa: 0000 unimp + 800023ac: 0000 unimp + 800023ae: 0000 unimp + 800023b0: 0000 unimp + 800023b2: 0000 unimp + 800023b4: 0000 unimp + 800023b6: 0000 unimp + 800023b8: 0000 unimp + 800023ba: 0000 unimp + 800023bc: 0000 unimp + 800023be: 0000 unimp + 800023c0: 0000 unimp + 800023c2: 0000 unimp + 800023c4: 0000 unimp + 800023c6: 0000 unimp + 800023c8: 0000 unimp + 800023ca: 0000 unimp + 800023cc: 0000 unimp + 800023ce: 0000 unimp + 800023d0: 0000 unimp + 800023d2: 0000 unimp + 800023d4: 0000 unimp + 800023d6: 0000 unimp + 800023d8: 0000 unimp + 800023da: 0000 unimp + 800023dc: 0000 unimp + 800023de: 0000 unimp + 800023e0: 0000 unimp + 800023e2: 0000 unimp + 800023e4: 0000 unimp + 800023e6: 0000 unimp + 800023e8: 0000 unimp + 800023ea: 0000 unimp + 800023ec: 0000 unimp + 800023ee: 0000 unimp + 800023f0: 0000 unimp + 800023f2: 0000 unimp + 800023f4: 0000 unimp + 800023f6: 0000 unimp + 800023f8: 0000 unimp + 800023fa: 0000 unimp + 800023fc: 0000 unimp + 800023fe: 0000 unimp + 80002400: 0000 unimp + 80002402: 0000 unimp + 80002404: 0000 unimp + 80002406: 0000 unimp + 80002408: 0000 unimp + 8000240a: 0000 unimp + 8000240c: 0000 unimp + 8000240e: 0000 unimp + 80002410: 0000 unimp + 80002412: 0000 unimp + 80002414: 0000 unimp + 80002416: 0000 unimp + 80002418: 0000 unimp + 8000241a: 0000 unimp + 8000241c: 0000 unimp + 8000241e: 0000 unimp + 80002420: 0000 unimp + 80002422: 0000 unimp + 80002424: 0000 unimp + 80002426: 0000 unimp + 80002428: 0000 unimp + 8000242a: 0000 unimp + 8000242c: 0000 unimp + 8000242e: 0000 unimp + 80002430: 0000 unimp + 80002432: 0000 unimp + 80002434: 0000 unimp + 80002436: 0000 unimp + 80002438: 0000 unimp + 8000243a: 0000 unimp + 8000243c: 0000 unimp + 8000243e: 0000 unimp + 80002440: 0000 unimp + 80002442: 0000 unimp + 80002444: 0000 unimp + 80002446: 0000 unimp + 80002448: 0000 unimp + 8000244a: 0000 unimp + 8000244c: 0000 unimp + 8000244e: 0000 unimp + 80002450: 0000 unimp + 80002452: 0000 unimp + 80002454: 0000 unimp + 80002456: 0000 unimp + 80002458: 0000 unimp + 8000245a: 0000 unimp + 8000245c: 0000 unimp + 8000245e: 0000 unimp + 80002460: 0000 unimp + 80002462: 0000 unimp + 80002464: 0000 unimp + 80002466: 0000 unimp + 80002468: 0000 unimp + 8000246a: 0000 unimp + 8000246c: 0000 unimp + 8000246e: 0000 unimp + 80002470: 0000 unimp + 80002472: 0000 unimp + 80002474: 0000 unimp + 80002476: 0000 unimp + 80002478: 0000 unimp + 8000247a: 0000 unimp + 8000247c: 0000 unimp + 8000247e: 0000 unimp + 80002480: 0000 unimp + 80002482: 0000 unimp + 80002484: 0000 unimp + 80002486: 0000 unimp + 80002488: 0000 unimp + 8000248a: 0000 unimp + 8000248c: 0000 unimp + 8000248e: 0000 unimp + 80002490: 0000 unimp + 80002492: 0000 unimp + 80002494: 0000 unimp + 80002496: 0000 unimp + 80002498: 0000 unimp + 8000249a: 0000 unimp + 8000249c: 0000 unimp + 8000249e: 0000 unimp + 800024a0: 0000 unimp + 800024a2: 0000 unimp + 800024a4: 0000 unimp + 800024a6: 0000 unimp + 800024a8: 0000 unimp + 800024aa: 0000 unimp + 800024ac: 0000 unimp + 800024ae: 0000 unimp + 800024b0: 0000 unimp + 800024b2: 0000 unimp + 800024b4: 0000 unimp + 800024b6: 0000 unimp + 800024b8: 0000 unimp + 800024ba: 0000 unimp + 800024bc: 0000 unimp + 800024be: 0000 unimp + 800024c0: 0000 unimp + 800024c2: 0000 unimp + 800024c4: 0000 unimp + 800024c6: 0000 unimp + 800024c8: 0000 unimp + 800024ca: 0000 unimp + 800024cc: 0000 unimp + 800024ce: 0000 unimp + 800024d0: 0000 unimp + 800024d2: 0000 unimp + 800024d4: 0000 unimp + 800024d6: 0000 unimp + 800024d8: 0000 unimp + 800024da: 0000 unimp + 800024dc: 0000 unimp + 800024de: 0000 unimp + 800024e0: 0000 unimp + 800024e2: 0000 unimp + 800024e4: 0000 unimp + 800024e6: 0000 unimp + 800024e8: 0000 unimp + 800024ea: 0000 unimp + 800024ec: 0000 unimp + 800024ee: 0000 unimp + 800024f0: 0000 unimp + 800024f2: 0000 unimp + 800024f4: 0000 unimp + 800024f6: 0000 unimp + 800024f8: 0000 unimp + 800024fa: 0000 unimp + 800024fc: 0000 unimp + 800024fe: 0000 unimp + 80002500: 0000 unimp + 80002502: 0000 unimp + 80002504: 0000 unimp + 80002506: 0000 unimp + 80002508: 0000 unimp + 8000250a: 0000 unimp + 8000250c: 0000 unimp + 8000250e: 0000 unimp + 80002510: 0000 unimp + 80002512: 0000 unimp + 80002514: 0000 unimp + 80002516: 0000 unimp + 80002518: 0000 unimp + 8000251a: 0000 unimp + 8000251c: 0000 unimp + 8000251e: 0000 unimp + 80002520: 0000 unimp + 80002522: 0000 unimp + 80002524: 0000 unimp + 80002526: 0000 unimp + 80002528: 0000 unimp + 8000252a: 0000 unimp + 8000252c: 0000 unimp + 8000252e: 0000 unimp + 80002530: 0000 unimp + 80002532: 0000 unimp + 80002534: 0000 unimp + 80002536: 0000 unimp + 80002538: 0000 unimp + 8000253a: 0000 unimp + 8000253c: 0000 unimp + 8000253e: 0000 unimp + 80002540: 0000 unimp + 80002542: 0000 unimp + 80002544: 0000 unimp + 80002546: 0000 unimp + 80002548: 0000 unimp + 8000254a: 0000 unimp + 8000254c: 0000 unimp + 8000254e: 0000 unimp + 80002550: 0000 unimp + 80002552: 0000 unimp + 80002554: 0000 unimp + 80002556: 0000 unimp + 80002558: 0000 unimp + 8000255a: 0000 unimp + 8000255c: 0000 unimp + 8000255e: 0000 unimp + 80002560: 0000 unimp + 80002562: 0000 unimp + 80002564: 0000 unimp + 80002566: 0000 unimp + 80002568: 0000 unimp + 8000256a: 0000 unimp + 8000256c: 0000 unimp + 8000256e: 0000 unimp + 80002570: 0000 unimp + 80002572: 0000 unimp + 80002574: 0000 unimp + 80002576: 0000 unimp + 80002578: 0000 unimp + 8000257a: 0000 unimp + 8000257c: 0000 unimp + 8000257e: 0000 unimp + 80002580: 0000 unimp + 80002582: 0000 unimp + 80002584: 0000 unimp + 80002586: 0000 unimp + 80002588: 0000 unimp + 8000258a: 0000 unimp + 8000258c: 0000 unimp + 8000258e: 0000 unimp + 80002590: 0000 unimp + 80002592: 0000 unimp + 80002594: 0000 unimp + 80002596: 0000 unimp + 80002598: 0000 unimp + 8000259a: 0000 unimp + 8000259c: 0000 unimp + 8000259e: 0000 unimp + 800025a0: 0000 unimp + 800025a2: 0000 unimp + 800025a4: 0000 unimp + 800025a6: 0000 unimp + 800025a8: 0000 unimp + 800025aa: 0000 unimp + 800025ac: 0000 unimp + 800025ae: 0000 unimp + 800025b0: 0000 unimp + 800025b2: 0000 unimp + 800025b4: 0000 unimp + 800025b6: 0000 unimp + 800025b8: 0000 unimp + 800025ba: 0000 unimp + 800025bc: 0000 unimp + 800025be: 0000 unimp + 800025c0: 0000 unimp + 800025c2: 0000 unimp + 800025c4: 0000 unimp + 800025c6: 0000 unimp + 800025c8: 0000 unimp + 800025ca: 0000 unimp + 800025cc: 0000 unimp + 800025ce: 0000 unimp + 800025d0: 0000 unimp + 800025d2: 0000 unimp + 800025d4: 0000 unimp + 800025d6: 0000 unimp + 800025d8: 0000 unimp + 800025da: 0000 unimp + 800025dc: 0000 unimp + 800025de: 0000 unimp + 800025e0: 0000 unimp + 800025e2: 0000 unimp + 800025e4: 0000 unimp + 800025e6: 0000 unimp + 800025e8: 0000 unimp + 800025ea: 0000 unimp + 800025ec: 0000 unimp + 800025ee: 0000 unimp + 800025f0: 0000 unimp + 800025f2: 0000 unimp + 800025f4: 0000 unimp + 800025f6: 0000 unimp + 800025f8: 0000 unimp + 800025fa: 0000 unimp + 800025fc: 0000 unimp + 800025fe: 0000 unimp + 80002600: 0000 unimp + 80002602: 0000 unimp + 80002604: 0000 unimp + 80002606: 0000 unimp + 80002608: 0000 unimp + 8000260a: 0000 unimp + 8000260c: 0000 unimp + 8000260e: 0000 unimp + 80002610: 0000 unimp + 80002612: 0000 unimp + 80002614: 0000 unimp + 80002616: 0000 unimp + 80002618: 0000 unimp + 8000261a: 0000 unimp + 8000261c: 0000 unimp + 8000261e: 0000 unimp + 80002620: 0000 unimp + 80002622: 0000 unimp + 80002624: 0000 unimp + 80002626: 0000 unimp + 80002628: 0000 unimp + 8000262a: 0000 unimp + 8000262c: 0000 unimp + 8000262e: 0000 unimp + 80002630: 0000 unimp + 80002632: 0000 unimp + 80002634: 0000 unimp + 80002636: 0000 unimp + 80002638: 0000 unimp + 8000263a: 0000 unimp + 8000263c: 0000 unimp + 8000263e: 0000 unimp + 80002640: 0000 unimp + 80002642: 0000 unimp + 80002644: 0000 unimp + 80002646: 0000 unimp + 80002648: 0000 unimp + 8000264a: 0000 unimp + 8000264c: 0000 unimp + 8000264e: 0000 unimp + 80002650: 0000 unimp + 80002652: 0000 unimp + 80002654: 0000 unimp + 80002656: 0000 unimp + 80002658: 0000 unimp + 8000265a: 0000 unimp + 8000265c: 0000 unimp + 8000265e: 0000 unimp + 80002660: 0000 unimp + 80002662: 0000 unimp + 80002664: 0000 unimp + 80002666: 0000 unimp + 80002668: 0000 unimp + 8000266a: 0000 unimp + 8000266c: 0000 unimp + 8000266e: 0000 unimp + 80002670: 0000 unimp + 80002672: 0000 unimp + 80002674: 0000 unimp + 80002676: 0000 unimp + 80002678: 0000 unimp + 8000267a: 0000 unimp + 8000267c: 0000 unimp + 8000267e: 0000 unimp + 80002680: 0000 unimp + 80002682: 0000 unimp + 80002684: 0000 unimp + 80002686: 0000 unimp + 80002688: 0000 unimp + 8000268a: 0000 unimp + 8000268c: 0000 unimp + 8000268e: 0000 unimp + 80002690: 0000 unimp + 80002692: 0000 unimp + 80002694: 0000 unimp + 80002696: 0000 unimp + 80002698: 0000 unimp + 8000269a: 0000 unimp + 8000269c: 0000 unimp + 8000269e: 0000 unimp + 800026a0: 0000 unimp + 800026a2: 0000 unimp + 800026a4: 0000 unimp + 800026a6: 0000 unimp + 800026a8: 0000 unimp + 800026aa: 0000 unimp + 800026ac: 0000 unimp + 800026ae: 0000 unimp + 800026b0: 0000 unimp + 800026b2: 0000 unimp + 800026b4: 0000 unimp + 800026b6: 0000 unimp + 800026b8: 0000 unimp + 800026ba: 0000 unimp + 800026bc: 0000 unimp + 800026be: 0000 unimp + 800026c0: 0000 unimp + 800026c2: 0000 unimp + 800026c4: 0000 unimp + 800026c6: 0000 unimp + 800026c8: 0000 unimp + 800026ca: 0000 unimp + 800026cc: 0000 unimp + 800026ce: 0000 unimp + 800026d0: 0000 unimp + 800026d2: 0000 unimp + 800026d4: 0000 unimp + 800026d6: 0000 unimp + 800026d8: 0000 unimp + 800026da: 0000 unimp + 800026dc: 0000 unimp + 800026de: 0000 unimp + 800026e0: 0000 unimp + 800026e2: 0000 unimp + 800026e4: 0000 unimp + 800026e6: 0000 unimp + 800026e8: 0000 unimp + 800026ea: 0000 unimp + 800026ec: 0000 unimp + 800026ee: 0000 unimp + 800026f0: 0000 unimp + 800026f2: 0000 unimp + 800026f4: 0000 unimp + 800026f6: 0000 unimp + 800026f8: 0000 unimp + 800026fa: 0000 unimp + 800026fc: 0000 unimp + 800026fe: 0000 unimp + 80002700: 0000 unimp + 80002702: 0000 unimp + 80002704: 0000 unimp + 80002706: 0000 unimp + 80002708: 0000 unimp + 8000270a: 0000 unimp + 8000270c: 0000 unimp + 8000270e: 0000 unimp + 80002710: 0000 unimp + 80002712: 0000 unimp + 80002714: 0000 unimp + 80002716: 0000 unimp + 80002718: 0000 unimp + 8000271a: 0000 unimp + 8000271c: 0000 unimp + 8000271e: 0000 unimp + 80002720: 0000 unimp + 80002722: 0000 unimp + 80002724: 0000 unimp + 80002726: 0000 unimp + 80002728: 0000 unimp + 8000272a: 0000 unimp + 8000272c: 0000 unimp + 8000272e: 0000 unimp + 80002730: 0000 unimp + 80002732: 0000 unimp + 80002734: 0000 unimp + 80002736: 0000 unimp + 80002738: 0000 unimp + 8000273a: 0000 unimp + 8000273c: 0000 unimp + 8000273e: 0000 unimp + 80002740: 0000 unimp + 80002742: 0000 unimp + 80002744: 0000 unimp + 80002746: 0000 unimp + 80002748: 0000 unimp + 8000274a: 0000 unimp + 8000274c: 0000 unimp + 8000274e: 0000 unimp + 80002750: 0000 unimp + 80002752: 0000 unimp + 80002754: 0000 unimp + 80002756: 0000 unimp + 80002758: 0000 unimp + 8000275a: 0000 unimp + 8000275c: 0000 unimp + 8000275e: 0000 unimp + 80002760: 0000 unimp + 80002762: 0000 unimp + 80002764: 0000 unimp + 80002766: 0000 unimp + 80002768: 0000 unimp + 8000276a: 0000 unimp + 8000276c: 0000 unimp + 8000276e: 0000 unimp + 80002770: 0000 unimp + 80002772: 0000 unimp + 80002774: 0000 unimp + 80002776: 0000 unimp + 80002778: 0000 unimp + 8000277a: 0000 unimp + 8000277c: 0000 unimp + 8000277e: 0000 unimp + 80002780: 0000 unimp + 80002782: 0000 unimp + 80002784: 0000 unimp + 80002786: 0000 unimp + 80002788: 0000 unimp + 8000278a: 0000 unimp + 8000278c: 0000 unimp + 8000278e: 0000 unimp + 80002790: 0000 unimp + 80002792: 0000 unimp + 80002794: 0000 unimp + 80002796: 0000 unimp + 80002798: 0000 unimp + 8000279a: 0000 unimp + 8000279c: 0000 unimp + 8000279e: 0000 unimp + 800027a0: 0000 unimp + 800027a2: 0000 unimp + 800027a4: 0000 unimp + 800027a6: 0000 unimp + 800027a8: 0000 unimp + 800027aa: 0000 unimp + 800027ac: 0000 unimp + 800027ae: 0000 unimp + 800027b0: 0000 unimp + 800027b2: 0000 unimp + 800027b4: 0000 unimp + 800027b6: 0000 unimp + 800027b8: 0000 unimp + 800027ba: 0000 unimp + 800027bc: 0000 unimp + 800027be: 0000 unimp + 800027c0: 0000 unimp + 800027c2: 0000 unimp + 800027c4: 0000 unimp + 800027c6: 0000 unimp + 800027c8: 0000 unimp + 800027ca: 0000 unimp + 800027cc: 0000 unimp + 800027ce: 0000 unimp + 800027d0: 0000 unimp + 800027d2: 0000 unimp + 800027d4: 0000 unimp + 800027d6: 0000 unimp + 800027d8: 0000 unimp + 800027da: 0000 unimp + 800027dc: 0000 unimp + 800027de: 0000 unimp + 800027e0: 0000 unimp + 800027e2: 0000 unimp + 800027e4: 0000 unimp + 800027e6: 0000 unimp + 800027e8: 0000 unimp + 800027ea: 0000 unimp + 800027ec: 0000 unimp + 800027ee: 0000 unimp + 800027f0: 0000 unimp + 800027f2: 0000 unimp + 800027f4: 0000 unimp + 800027f6: 0000 unimp + 800027f8: 0000 unimp + 800027fa: 0000 unimp + 800027fc: 0000 unimp + 800027fe: 0000 unimp + 80002800: 0000 unimp + 80002802: 0000 unimp + 80002804: 0000 unimp + 80002806: 0000 unimp + 80002808: 0000 unimp + 8000280a: 0000 unimp + 8000280c: 0000 unimp + 8000280e: 0000 unimp + 80002810: 0000 unimp + 80002812: 0000 unimp + 80002814: 0000 unimp + 80002816: 0000 unimp + 80002818: 0000 unimp + 8000281a: 0000 unimp + 8000281c: 0000 unimp + 8000281e: 0000 unimp + 80002820: 0000 unimp + 80002822: 0000 unimp + 80002824: 0000 unimp + 80002826: 0000 unimp + 80002828: 0000 unimp + 8000282a: 0000 unimp + 8000282c: 0000 unimp + 8000282e: 0000 unimp + 80002830: 0000 unimp + 80002832: 0000 unimp + 80002834: 0000 unimp + 80002836: 0000 unimp + 80002838: 0000 unimp + 8000283a: 0000 unimp + 8000283c: 0000 unimp + 8000283e: 0000 unimp + 80002840: 0000 unimp + 80002842: 0000 unimp + 80002844: 0000 unimp + 80002846: 0000 unimp + 80002848: 0000 unimp + 8000284a: 0000 unimp + 8000284c: 0000 unimp + 8000284e: 0000 unimp + 80002850: 0000 unimp + 80002852: 0000 unimp + 80002854: 0000 unimp + 80002856: 0000 unimp + 80002858: 0000 unimp + 8000285a: 0000 unimp + 8000285c: 0000 unimp + 8000285e: 0000 unimp + 80002860: 0000 unimp + 80002862: 0000 unimp + 80002864: 0000 unimp + 80002866: 0000 unimp + 80002868: 0000 unimp + 8000286a: 0000 unimp + 8000286c: 0000 unimp + 8000286e: 0000 unimp + 80002870: 0000 unimp + 80002872: 0000 unimp + 80002874: 0000 unimp + 80002876: 0000 unimp + 80002878: 0000 unimp + 8000287a: 0000 unimp + 8000287c: 0000 unimp + 8000287e: 0000 unimp + 80002880: 0000 unimp + 80002882: 0000 unimp + 80002884: 0000 unimp + 80002886: 0000 unimp + 80002888: 0000 unimp + 8000288a: 0000 unimp + 8000288c: 0000 unimp + 8000288e: 0000 unimp + 80002890: 0000 unimp + 80002892: 0000 unimp + 80002894: 0000 unimp + 80002896: 0000 unimp + 80002898: 0000 unimp + 8000289a: 0000 unimp + 8000289c: 0000 unimp + 8000289e: 0000 unimp + 800028a0: 0000 unimp + 800028a2: 0000 unimp + 800028a4: 0000 unimp + 800028a6: 0000 unimp + 800028a8: 0000 unimp + 800028aa: 0000 unimp + 800028ac: 0000 unimp + 800028ae: 0000 unimp + 800028b0: 0000 unimp + 800028b2: 0000 unimp + 800028b4: 0000 unimp + 800028b6: 0000 unimp + 800028b8: 0000 unimp + 800028ba: 0000 unimp + 800028bc: 0000 unimp + 800028be: 0000 unimp + 800028c0: 0000 unimp + 800028c2: 0000 unimp + 800028c4: 0000 unimp + 800028c6: 0000 unimp + 800028c8: 0000 unimp + 800028ca: 0000 unimp + 800028cc: 0000 unimp + 800028ce: 0000 unimp + 800028d0: 0000 unimp + 800028d2: 0000 unimp + 800028d4: 0000 unimp + 800028d6: 0000 unimp + 800028d8: 0000 unimp + 800028da: 0000 unimp + 800028dc: 0000 unimp + 800028de: 0000 unimp + 800028e0: 0000 unimp + 800028e2: 0000 unimp + 800028e4: 0000 unimp + 800028e6: 0000 unimp + 800028e8: 0000 unimp + 800028ea: 0000 unimp + 800028ec: 0000 unimp + 800028ee: 0000 unimp + 800028f0: 0000 unimp + 800028f2: 0000 unimp + 800028f4: 0000 unimp + 800028f6: 0000 unimp + 800028f8: 0000 unimp + 800028fa: 0000 unimp + 800028fc: 0000 unimp + 800028fe: 0000 unimp + 80002900: 0000 unimp + 80002902: 0000 unimp + 80002904: 0000 unimp + 80002906: 0000 unimp + 80002908: 0000 unimp + 8000290a: 0000 unimp + 8000290c: 0000 unimp + 8000290e: 0000 unimp + 80002910: 0000 unimp + 80002912: 0000 unimp + 80002914: 0000 unimp + 80002916: 0000 unimp + 80002918: 0000 unimp + 8000291a: 0000 unimp + 8000291c: 0000 unimp + 8000291e: 0000 unimp + 80002920: 0000 unimp + 80002922: 0000 unimp + 80002924: 0000 unimp + 80002926: 0000 unimp + 80002928: 0000 unimp + 8000292a: 0000 unimp + 8000292c: 0000 unimp + 8000292e: 0000 unimp + 80002930: 0000 unimp + 80002932: 0000 unimp + 80002934: 0000 unimp + 80002936: 0000 unimp + 80002938: 0000 unimp + 8000293a: 0000 unimp + 8000293c: 0000 unimp + 8000293e: 0000 unimp + 80002940: 0000 unimp + 80002942: 0000 unimp + 80002944: 0000 unimp + 80002946: 0000 unimp + 80002948: 0000 unimp + 8000294a: 0000 unimp + 8000294c: 0000 unimp + 8000294e: 0000 unimp + 80002950: 0000 unimp + 80002952: 0000 unimp + 80002954: 0000 unimp + 80002956: 0000 unimp + 80002958: 0000 unimp + 8000295a: 0000 unimp + 8000295c: 0000 unimp + 8000295e: 0000 unimp + 80002960: 0000 unimp + 80002962: 0000 unimp + 80002964: 0000 unimp + 80002966: 0000 unimp + 80002968: 0000 unimp + 8000296a: 0000 unimp + 8000296c: 0000 unimp + 8000296e: 0000 unimp + 80002970: 0000 unimp + 80002972: 0000 unimp + 80002974: 0000 unimp + 80002976: 0000 unimp + 80002978: 0000 unimp + 8000297a: 0000 unimp + 8000297c: 0000 unimp + 8000297e: 0000 unimp + 80002980: 0000 unimp + 80002982: 0000 unimp + 80002984: 0000 unimp + 80002986: 0000 unimp + 80002988: 0000 unimp + 8000298a: 0000 unimp + 8000298c: 0000 unimp + 8000298e: 0000 unimp + 80002990: 0000 unimp + 80002992: 0000 unimp + 80002994: 0000 unimp + 80002996: 0000 unimp + 80002998: 0000 unimp + 8000299a: 0000 unimp + 8000299c: 0000 unimp + 8000299e: 0000 unimp + 800029a0: 0000 unimp + 800029a2: 0000 unimp + 800029a4: 0000 unimp + 800029a6: 0000 unimp + 800029a8: 0000 unimp + 800029aa: 0000 unimp + 800029ac: 0000 unimp + 800029ae: 0000 unimp + 800029b0: 0000 unimp + 800029b2: 0000 unimp + 800029b4: 0000 unimp + 800029b6: 0000 unimp + 800029b8: 0000 unimp + 800029ba: 0000 unimp + 800029bc: 0000 unimp + 800029be: 0000 unimp + 800029c0: 0000 unimp + 800029c2: 0000 unimp + 800029c4: 0000 unimp + 800029c6: 0000 unimp + 800029c8: 0000 unimp + 800029ca: 0000 unimp + 800029cc: 0000 unimp + 800029ce: 0000 unimp + 800029d0: 0000 unimp + 800029d2: 0000 unimp + 800029d4: 0000 unimp + 800029d6: 0000 unimp + 800029d8: 0000 unimp + 800029da: 0000 unimp + 800029dc: 0000 unimp + 800029de: 0000 unimp + 800029e0: 0000 unimp + 800029e2: 0000 unimp + 800029e4: 0000 unimp + 800029e6: 0000 unimp + 800029e8: 0000 unimp + 800029ea: 0000 unimp + 800029ec: 0000 unimp + 800029ee: 0000 unimp + 800029f0: 0000 unimp + 800029f2: 0000 unimp + 800029f4: 0000 unimp + 800029f6: 0000 unimp + 800029f8: 0000 unimp + 800029fa: 0000 unimp + 800029fc: 0000 unimp + 800029fe: 0000 unimp + 80002a00: 0000 unimp + 80002a02: 0000 unimp + 80002a04: 0000 unimp + 80002a06: 0000 unimp + 80002a08: 0000 unimp + 80002a0a: 0000 unimp + 80002a0c: 0000 unimp + 80002a0e: 0000 unimp + 80002a10: 0000 unimp + 80002a12: 0000 unimp + 80002a14: 0000 unimp + 80002a16: 0000 unimp + 80002a18: 0000 unimp + 80002a1a: 0000 unimp + 80002a1c: 0000 unimp + 80002a1e: 0000 unimp + 80002a20: 0000 unimp + 80002a22: 0000 unimp + 80002a24: 0000 unimp + 80002a26: 0000 unimp + 80002a28: 0000 unimp + 80002a2a: 0000 unimp + 80002a2c: 0000 unimp + 80002a2e: 0000 unimp + 80002a30: 0000 unimp + 80002a32: 0000 unimp + 80002a34: 0000 unimp + 80002a36: 0000 unimp + 80002a38: 0000 unimp + 80002a3a: 0000 unimp + 80002a3c: 0000 unimp + 80002a3e: 0000 unimp + 80002a40: 0000 unimp + 80002a42: 0000 unimp + 80002a44: 0000 unimp + 80002a46: 0000 unimp + 80002a48: 0000 unimp + 80002a4a: 0000 unimp + 80002a4c: 0000 unimp + 80002a4e: 0000 unimp + 80002a50: 0000 unimp + 80002a52: 0000 unimp + 80002a54: 0000 unimp + 80002a56: 0000 unimp + 80002a58: 0000 unimp + 80002a5a: 0000 unimp + 80002a5c: 0000 unimp + 80002a5e: 0000 unimp + 80002a60: 0000 unimp + 80002a62: 0000 unimp + 80002a64: 0000 unimp + 80002a66: 0000 unimp + 80002a68: 0000 unimp + 80002a6a: 0000 unimp + 80002a6c: 0000 unimp + 80002a6e: 0000 unimp + 80002a70: 0000 unimp + 80002a72: 0000 unimp + 80002a74: 0000 unimp + 80002a76: 0000 unimp + 80002a78: 0000 unimp + 80002a7a: 0000 unimp + 80002a7c: 0000 unimp + 80002a7e: 0000 unimp + 80002a80: 0000 unimp + 80002a82: 0000 unimp + 80002a84: 0000 unimp + 80002a86: 0000 unimp + 80002a88: 0000 unimp + 80002a8a: 0000 unimp + 80002a8c: 0000 unimp + 80002a8e: 0000 unimp + 80002a90: 0000 unimp + 80002a92: 0000 unimp + 80002a94: 0000 unimp + 80002a96: 0000 unimp + 80002a98: 0000 unimp + 80002a9a: 0000 unimp + 80002a9c: 0000 unimp + 80002a9e: 0000 unimp + 80002aa0: 0000 unimp + 80002aa2: 0000 unimp + 80002aa4: 0000 unimp + 80002aa6: 0000 unimp + 80002aa8: 0000 unimp + 80002aaa: 0000 unimp + 80002aac: 0000 unimp + 80002aae: 0000 unimp + 80002ab0: 0000 unimp + 80002ab2: 0000 unimp + 80002ab4: 0000 unimp + 80002ab6: 0000 unimp + 80002ab8: 0000 unimp + 80002aba: 0000 unimp + 80002abc: 0000 unimp + 80002abe: 0000 unimp + 80002ac0: 0000 unimp + 80002ac2: 0000 unimp + 80002ac4: 0000 unimp + 80002ac6: 0000 unimp + 80002ac8: 0000 unimp + 80002aca: 0000 unimp + 80002acc: 0000 unimp + 80002ace: 0000 unimp + 80002ad0: 0000 unimp + 80002ad2: 0000 unimp + 80002ad4: 0000 unimp + 80002ad6: 0000 unimp + 80002ad8: 0000 unimp + 80002ada: 0000 unimp + 80002adc: 0000 unimp + 80002ade: 0000 unimp + 80002ae0: 0000 unimp + 80002ae2: 0000 unimp + 80002ae4: 0000 unimp + 80002ae6: 0000 unimp + 80002ae8: 0000 unimp + 80002aea: 0000 unimp + 80002aec: 0000 unimp + 80002aee: 0000 unimp + 80002af0: 0000 unimp + 80002af2: 0000 unimp + 80002af4: 0000 unimp + 80002af6: 0000 unimp + 80002af8: 0000 unimp + 80002afa: 0000 unimp + 80002afc: 0000 unimp + 80002afe: 0000 unimp + 80002b00: 0000 unimp + 80002b02: 0000 unimp + 80002b04: 0000 unimp + 80002b06: 0000 unimp + 80002b08: 0000 unimp + 80002b0a: 0000 unimp + 80002b0c: 0000 unimp + 80002b0e: 0000 unimp + 80002b10: 0000 unimp + 80002b12: 0000 unimp + 80002b14: 0000 unimp + 80002b16: 0000 unimp + 80002b18: 0000 unimp + 80002b1a: 0000 unimp + 80002b1c: 0000 unimp + 80002b1e: 0000 unimp + 80002b20: 0000 unimp + 80002b22: 0000 unimp + 80002b24: 0000 unimp + 80002b26: 0000 unimp + 80002b28: 0000 unimp + 80002b2a: 0000 unimp + 80002b2c: 0000 unimp + 80002b2e: 0000 unimp + 80002b30: 0000 unimp + 80002b32: 0000 unimp + 80002b34: 0000 unimp + 80002b36: 0000 unimp + 80002b38: 0000 unimp + 80002b3a: 0000 unimp + 80002b3c: 0000 unimp + 80002b3e: 0000 unimp + 80002b40: 0000 unimp + 80002b42: 0000 unimp + 80002b44: 0000 unimp + 80002b46: 0000 unimp + 80002b48: 0000 unimp + 80002b4a: 0000 unimp + 80002b4c: 0000 unimp + 80002b4e: 0000 unimp + 80002b50: 0000 unimp + 80002b52: 0000 unimp + 80002b54: 0000 unimp + 80002b56: 0000 unimp + 80002b58: 0000 unimp + 80002b5a: 0000 unimp + 80002b5c: 0000 unimp + 80002b5e: 0000 unimp + 80002b60: 0000 unimp + 80002b62: 0000 unimp + 80002b64: 0000 unimp + 80002b66: 0000 unimp + 80002b68: 0000 unimp + 80002b6a: 0000 unimp + 80002b6c: 0000 unimp + 80002b6e: 0000 unimp + 80002b70: 0000 unimp + 80002b72: 0000 unimp + 80002b74: 0000 unimp + 80002b76: 0000 unimp + 80002b78: 0000 unimp + 80002b7a: 0000 unimp + 80002b7c: 0000 unimp + 80002b7e: 0000 unimp + 80002b80: 0000 unimp + 80002b82: 0000 unimp + 80002b84: 0000 unimp + 80002b86: 0000 unimp + 80002b88: 0000 unimp + 80002b8a: 0000 unimp + 80002b8c: 0000 unimp + 80002b8e: 0000 unimp + 80002b90: 0000 unimp + 80002b92: 0000 unimp + 80002b94: 0000 unimp + 80002b96: 0000 unimp + 80002b98: 0000 unimp + 80002b9a: 0000 unimp + 80002b9c: 0000 unimp + 80002b9e: 0000 unimp + 80002ba0: 0000 unimp + 80002ba2: 0000 unimp + 80002ba4: 0000 unimp + 80002ba6: 0000 unimp + 80002ba8: 0000 unimp + 80002baa: 0000 unimp + 80002bac: 0000 unimp + 80002bae: 0000 unimp + 80002bb0: 0000 unimp + 80002bb2: 0000 unimp + 80002bb4: 0000 unimp + 80002bb6: 0000 unimp + 80002bb8: 0000 unimp + 80002bba: 0000 unimp + 80002bbc: 0000 unimp + 80002bbe: 0000 unimp + 80002bc0: 0000 unimp + 80002bc2: 0000 unimp + 80002bc4: 0000 unimp + 80002bc6: 0000 unimp + 80002bc8: 0000 unimp + 80002bca: 0000 unimp + 80002bcc: 0000 unimp + 80002bce: 0000 unimp + 80002bd0: 0000 unimp + 80002bd2: 0000 unimp + 80002bd4: 0000 unimp + 80002bd6: 0000 unimp + 80002bd8: 0000 unimp + 80002bda: 0000 unimp + 80002bdc: 0000 unimp + 80002bde: 0000 unimp + 80002be0: 0000 unimp + 80002be2: 0000 unimp + 80002be4: 0000 unimp + 80002be6: 0000 unimp + 80002be8: 0000 unimp + 80002bea: 0000 unimp + 80002bec: 0000 unimp + 80002bee: 0000 unimp + 80002bf0: 0000 unimp + 80002bf2: 0000 unimp + 80002bf4: 0000 unimp + 80002bf6: 0000 unimp + 80002bf8: 0000 unimp + 80002bfa: 0000 unimp + 80002bfc: 0000 unimp + 80002bfe: 0000 unimp + 80002c00: 0000 unimp + 80002c02: 0000 unimp + 80002c04: 0000 unimp + 80002c06: 0000 unimp + 80002c08: 0000 unimp + 80002c0a: 0000 unimp + 80002c0c: 0000 unimp + 80002c0e: 0000 unimp + 80002c10: 0000 unimp + 80002c12: 0000 unimp + 80002c14: 0000 unimp + 80002c16: 0000 unimp + 80002c18: 0000 unimp + 80002c1a: 0000 unimp + 80002c1c: 0000 unimp + 80002c1e: 0000 unimp + 80002c20: 0000 unimp + 80002c22: 0000 unimp + 80002c24: 0000 unimp + 80002c26: 0000 unimp + 80002c28: 0000 unimp + 80002c2a: 0000 unimp + 80002c2c: 0000 unimp + 80002c2e: 0000 unimp + 80002c30: 0000 unimp + 80002c32: 0000 unimp + 80002c34: 0000 unimp + 80002c36: 0000 unimp + 80002c38: 0000 unimp + 80002c3a: 0000 unimp + 80002c3c: 0000 unimp + 80002c3e: 0000 unimp + 80002c40: 0000 unimp + 80002c42: 0000 unimp + 80002c44: 0000 unimp + 80002c46: 0000 unimp + 80002c48: 0000 unimp + 80002c4a: 0000 unimp + 80002c4c: 0000 unimp + 80002c4e: 0000 unimp + 80002c50: 0000 unimp + 80002c52: 0000 unimp + 80002c54: 0000 unimp + 80002c56: 0000 unimp + 80002c58: 0000 unimp + 80002c5a: 0000 unimp + 80002c5c: 0000 unimp + 80002c5e: 0000 unimp + 80002c60: 0000 unimp + 80002c62: 0000 unimp + 80002c64: 0000 unimp + 80002c66: 0000 unimp + 80002c68: 0000 unimp + 80002c6a: 0000 unimp + 80002c6c: 0000 unimp + 80002c6e: 0000 unimp + 80002c70: 0000 unimp + 80002c72: 0000 unimp + 80002c74: 0000 unimp + 80002c76: 0000 unimp + 80002c78: 0000 unimp + 80002c7a: 0000 unimp + 80002c7c: 0000 unimp + 80002c7e: 0000 unimp + 80002c80: 0000 unimp + 80002c82: 0000 unimp + 80002c84: 0000 unimp + 80002c86: 0000 unimp + 80002c88: 0000 unimp + 80002c8a: 0000 unimp + 80002c8c: 0000 unimp + 80002c8e: 0000 unimp + 80002c90: 0000 unimp + 80002c92: 0000 unimp + 80002c94: 0000 unimp + 80002c96: 0000 unimp + 80002c98: 0000 unimp + 80002c9a: 0000 unimp + 80002c9c: 0000 unimp + 80002c9e: 0000 unimp + 80002ca0: 0000 unimp + 80002ca2: 0000 unimp + 80002ca4: 0000 unimp + 80002ca6: 0000 unimp + 80002ca8: 0000 unimp + 80002caa: 0000 unimp + 80002cac: 0000 unimp + 80002cae: 0000 unimp + 80002cb0: 0000 unimp + 80002cb2: 0000 unimp + 80002cb4: 0000 unimp + 80002cb6: 0000 unimp + 80002cb8: 0000 unimp + 80002cba: 0000 unimp + 80002cbc: 0000 unimp + 80002cbe: 0000 unimp + 80002cc0: 0000 unimp + 80002cc2: 0000 unimp + 80002cc4: 0000 unimp + 80002cc6: 0000 unimp + 80002cc8: 0000 unimp + 80002cca: 0000 unimp + 80002ccc: 0000 unimp + 80002cce: 0000 unimp + 80002cd0: 0000 unimp + 80002cd2: 0000 unimp + 80002cd4: 0000 unimp + 80002cd6: 0000 unimp + 80002cd8: 0000 unimp + 80002cda: 0000 unimp + 80002cdc: 0000 unimp + 80002cde: 0000 unimp + 80002ce0: 0000 unimp + 80002ce2: 0000 unimp + 80002ce4: 0000 unimp + 80002ce6: 0000 unimp + 80002ce8: 0000 unimp + 80002cea: 0000 unimp + 80002cec: 0000 unimp + 80002cee: 0000 unimp + 80002cf0: 0000 unimp + 80002cf2: 0000 unimp + 80002cf4: 0000 unimp + 80002cf6: 0000 unimp + 80002cf8: 0000 unimp + 80002cfa: 0000 unimp + 80002cfc: 0000 unimp + 80002cfe: 0000 unimp + 80002d00: 0000 unimp + 80002d02: 0000 unimp + 80002d04: 0000 unimp + 80002d06: 0000 unimp + 80002d08: 0000 unimp + 80002d0a: 0000 unimp + 80002d0c: 0000 unimp + 80002d0e: 0000 unimp + 80002d10: 0000 unimp + 80002d12: 0000 unimp + 80002d14: 0000 unimp + 80002d16: 0000 unimp + 80002d18: 0000 unimp + 80002d1a: 0000 unimp + 80002d1c: 0000 unimp + 80002d1e: 0000 unimp + 80002d20: 0000 unimp + 80002d22: 0000 unimp + 80002d24: 0000 unimp + 80002d26: 0000 unimp + 80002d28: 0000 unimp + 80002d2a: 0000 unimp + 80002d2c: 0000 unimp + 80002d2e: 0000 unimp + 80002d30: 0000 unimp + 80002d32: 0000 unimp + 80002d34: 0000 unimp + 80002d36: 0000 unimp + 80002d38: 0000 unimp + 80002d3a: 0000 unimp + 80002d3c: 0000 unimp + 80002d3e: 0000 unimp + 80002d40: 0000 unimp + 80002d42: 0000 unimp + 80002d44: 0000 unimp + 80002d46: 0000 unimp + 80002d48: 0000 unimp + 80002d4a: 0000 unimp + 80002d4c: 0000 unimp + 80002d4e: 0000 unimp + 80002d50: 0000 unimp + 80002d52: 0000 unimp + 80002d54: 0000 unimp + 80002d56: 0000 unimp + 80002d58: 0000 unimp + 80002d5a: 0000 unimp + 80002d5c: 0000 unimp + 80002d5e: 0000 unimp + 80002d60: 0000 unimp + 80002d62: 0000 unimp + 80002d64: 0000 unimp + 80002d66: 0000 unimp + 80002d68: 0000 unimp + 80002d6a: 0000 unimp + 80002d6c: 0000 unimp + 80002d6e: 0000 unimp + 80002d70: 0000 unimp + 80002d72: 0000 unimp + 80002d74: 0000 unimp + 80002d76: 0000 unimp + 80002d78: 0000 unimp + 80002d7a: 0000 unimp + 80002d7c: 0000 unimp + 80002d7e: 0000 unimp + 80002d80: 0000 unimp + 80002d82: 0000 unimp + 80002d84: 0000 unimp + 80002d86: 0000 unimp + 80002d88: 0000 unimp + 80002d8a: 0000 unimp + 80002d8c: 0000 unimp + 80002d8e: 0000 unimp + 80002d90: 0000 unimp + 80002d92: 0000 unimp + 80002d94: 0000 unimp + 80002d96: 0000 unimp + 80002d98: 0000 unimp + 80002d9a: 0000 unimp + 80002d9c: 0000 unimp + 80002d9e: 0000 unimp + 80002da0: 0000 unimp + 80002da2: 0000 unimp + 80002da4: 0000 unimp + 80002da6: 0000 unimp + 80002da8: 0000 unimp + 80002daa: 0000 unimp + 80002dac: 0000 unimp + 80002dae: 0000 unimp + 80002db0: 0000 unimp + 80002db2: 0000 unimp + 80002db4: 0000 unimp + 80002db6: 0000 unimp + 80002db8: 0000 unimp + 80002dba: 0000 unimp + 80002dbc: 0000 unimp + 80002dbe: 0000 unimp + 80002dc0: 0000 unimp + 80002dc2: 0000 unimp + 80002dc4: 0000 unimp + 80002dc6: 0000 unimp + 80002dc8: 0000 unimp + 80002dca: 0000 unimp + 80002dcc: 0000 unimp + 80002dce: 0000 unimp + 80002dd0: 0000 unimp + 80002dd2: 0000 unimp + 80002dd4: 0000 unimp + 80002dd6: 0000 unimp + 80002dd8: 0000 unimp + 80002dda: 0000 unimp + 80002ddc: 0000 unimp + 80002dde: 0000 unimp + 80002de0: 0000 unimp + 80002de2: 0000 unimp + 80002de4: 0000 unimp + 80002de6: 0000 unimp + 80002de8: 0000 unimp + 80002dea: 0000 unimp + 80002dec: 0000 unimp + 80002dee: 0000 unimp + 80002df0: 0000 unimp + 80002df2: 0000 unimp + 80002df4: 0000 unimp + 80002df6: 0000 unimp + 80002df8: 0000 unimp + 80002dfa: 0000 unimp + 80002dfc: 0000 unimp + 80002dfe: 0000 unimp + 80002e00: 0000 unimp + 80002e02: 0000 unimp + 80002e04: 0000 unimp + 80002e06: 0000 unimp + 80002e08: 0000 unimp + 80002e0a: 0000 unimp + 80002e0c: 0000 unimp + 80002e0e: 0000 unimp + 80002e10: 0000 unimp + 80002e12: 0000 unimp + 80002e14: 0000 unimp + 80002e16: 0000 unimp + 80002e18: 0000 unimp + 80002e1a: 0000 unimp + 80002e1c: 0000 unimp + 80002e1e: 0000 unimp + 80002e20: 0000 unimp + 80002e22: 0000 unimp + 80002e24: 0000 unimp + 80002e26: 0000 unimp + 80002e28: 0000 unimp + 80002e2a: 0000 unimp + 80002e2c: 0000 unimp + 80002e2e: 0000 unimp + 80002e30: 0000 unimp + 80002e32: 0000 unimp + 80002e34: 0000 unimp + 80002e36: 0000 unimp + 80002e38: 0000 unimp + 80002e3a: 0000 unimp + 80002e3c: 0000 unimp + 80002e3e: 0000 unimp + 80002e40: 0000 unimp + 80002e42: 0000 unimp + 80002e44: 0000 unimp + 80002e46: 0000 unimp + 80002e48: 0000 unimp + 80002e4a: 0000 unimp + 80002e4c: 0000 unimp + 80002e4e: 0000 unimp + 80002e50: 0000 unimp + 80002e52: 0000 unimp + 80002e54: 0000 unimp + 80002e56: 0000 unimp + 80002e58: 0000 unimp + 80002e5a: 0000 unimp + 80002e5c: 0000 unimp + 80002e5e: 0000 unimp + 80002e60: 0000 unimp + 80002e62: 0000 unimp + 80002e64: 0000 unimp + 80002e66: 0000 unimp + 80002e68: 0000 unimp + 80002e6a: 0000 unimp + 80002e6c: 0000 unimp + 80002e6e: 0000 unimp + 80002e70: 0000 unimp + 80002e72: 0000 unimp + 80002e74: 0000 unimp + 80002e76: 0000 unimp + 80002e78: 0000 unimp + 80002e7a: 0000 unimp + 80002e7c: 0000 unimp + 80002e7e: 0000 unimp + 80002e80: 0000 unimp + 80002e82: 0000 unimp + 80002e84: 0000 unimp + 80002e86: 0000 unimp + 80002e88: 0000 unimp + 80002e8a: 0000 unimp + 80002e8c: 0000 unimp + 80002e8e: 0000 unimp diff --git a/Tests/isa/rv64uc-v-rvc b/Tests/isa/rv64uc-v-rvc new file mode 100644 index 0000000..976ca2b Binary files /dev/null and b/Tests/isa/rv64uc-v-rvc differ diff --git a/Tests/isa/rv64uc-v-rvc.dump b/Tests/isa/rv64uc-v-rvc.dump new file mode 100644 index 0000000..696b038 --- /dev/null +++ b/Tests/isa/rv64uc-v-rvc.dump @@ -0,0 +1,6518 @@ + +rv64uc-v-rvc: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000c117 auipc sp,0xc + 8000001c: 6b810113 addi sp,sp,1720 # 8000c6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: fd050513 addi a0,a0,-48 # 80003000 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00005617 auipc a2,0x5 + 80002318: cec60613 addi a2,a2,-788 # 80007000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00009797 auipc a5,0x9 + 80002334: 4b878793 addi a5,a5,1208 # 8000b7e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00009717 auipc a4,0x9 + 80002348: 49c70713 addi a4,a4,1180 # 8000b7e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00009897 auipc a7,0x9 + 80002354: 48f8bc23 sd a5,1176(a7) # 8000b7e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00009797 auipc a5,0x9 + 80002384: 07078793 addi a5,a5,112 # 8000b3f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf4810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00009797 auipc a5,0x9 + 80002448: 3807be23 sd zero,924(a5) # 8000b7e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00004697 auipc a3,0x4 + 8000245c: b7068693 addi a3,a3,-1168 # 80005fc8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00004617 auipc a2,0x4 + 800024b8: ba460613 addi a2,a2,-1116 # 80006058 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00004617 auipc a2,0x4 + 80002508: b6c60613 addi a2,a2,-1172 # 80006070 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00004697 auipc a3,0x4 + 80002558: abc68693 addi a3,a3,-1348 # 80006010 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00004697 auipc a3,0x4 + 80002674: ad868693 addi a3,a3,-1320 # 80006148 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00004617 auipc a2,0x4 + 800026cc: a5860613 addi a2,a2,-1448 # 80006120 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00009d17 auipc s10,0x9 + 80002720: cd4d0d13 addi s10,s10,-812 # 8000b3f0 + 80002724: 00005b97 auipc s7,0x5 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80007000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00009a17 auipc s4,0x9 + 80002738: 0aca0a13 addi s4,s4,172 # 8000b7e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00009717 auipc a4,0x9 + 8000274c: 08f73c23 sd a5,152(a4) # 8000b7e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00009717 auipc a4,0x9 + 800027d4: 00f73823 sd a5,16(a4) # 8000b7e0 + 800027d8: 00009717 auipc a4,0x9 + 800027dc: 00f73823 sd a5,16(a4) # 8000b7e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00004697 auipc a3,0x4 + 800027f0: 98c68693 addi a3,a3,-1652 # 80006178 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00004697 auipc a3,0x4 + 80002840: 8ac68693 addi a3,a3,-1876 # 800060e8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00004697 auipc a3,0x4 + 80002878: 83c68693 addi a3,a3,-1988 # 800060b0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00005697 auipc a3,0x5 + 800028e0: 72468693 addi a3,a3,1828 # 80008000 + 800028e4: 00006717 auipc a4,0x6 + 800028e8: 71c70713 addi a4,a4,1820 # 80009000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00007797 auipc a5,0x7 + 800028f8: 70c78793 addi a5,a5,1804 # 8000a000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00004897 auipc a7,0x4 + 80002914: 6ed8b823 sd a3,1776(a7) # 80007000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00005697 auipc a3,0x5 + 80002920: 6ce6be23 sd a4,1756(a3) # 80007ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00004617 auipc a2,0x4 + 80002938: 6cc60613 addi a2,a2,1740 # 80007000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00007697 auipc a3,0x7 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80009ff8 + 8000294c: 00005717 auipc a4,0x5 + 80002950: 6af73a23 sd a5,1716(a4) # 80008000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00008697 auipc a3,0x8 + 800029c0: 64468693 addi a3,a3,1604 # 8000b000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00009617 auipc a2,0x9 + 800029d0: e0f63e23 sd a5,-484(a2) # 8000b7e8 + 800029d4: 00009797 auipc a5,0x9 + 800029d8: e0e7b623 sd a4,-500(a5) # 8000b7e0 + 800029dc: 00009317 auipc t1,0x9 + 800029e0: a1430313 addi t1,t1,-1516 # 8000b3f0 + 800029e4: 03000793 li a5,48 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00009797 auipc a5,0x9 + 80002a40: 9a07b623 sd zero,-1620(a5) # 8000b3e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0db157b7 lui a5,0xdb15 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 50c78793 addi a5,a5,1292 # db1550c <_start-0x724eaaf4> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + 80002ac8: 0000 unimp + 80002aca: 0000 unimp + 80002acc: 0000 unimp + 80002ace: 0000 unimp + 80002ad0: 0000 unimp + 80002ad2: 0000 unimp + 80002ad4: 0000 unimp + 80002ad6: 0000 unimp + 80002ad8: 0000 unimp + 80002ada: 0000 unimp + 80002adc: 0000 unimp + 80002ade: 0000 unimp + 80002ae0: 0000 unimp + 80002ae2: 0000 unimp + 80002ae4: 0000 unimp + 80002ae6: 0000 unimp + 80002ae8: 0000 unimp + 80002aea: 0000 unimp + 80002aec: 0000 unimp + 80002aee: 0000 unimp + 80002af0: 0000 unimp + 80002af2: 0000 unimp + 80002af4: 0000 unimp + 80002af6: 0000 unimp + 80002af8: 0000 unimp + 80002afa: 0000 unimp + 80002afc: 0000 unimp + 80002afe: 0000 unimp + 80002b00: 0000 unimp + 80002b02: 0000 unimp + 80002b04: 0000 unimp + 80002b06: 0000 unimp + 80002b08: 0000 unimp + 80002b0a: 0000 unimp + 80002b0c: 0000 unimp + 80002b0e: 0000 unimp + 80002b10: 0000 unimp + 80002b12: 0000 unimp + 80002b14: 0000 unimp + 80002b16: 0000 unimp + 80002b18: 0000 unimp + 80002b1a: 0000 unimp + 80002b1c: 0000 unimp + 80002b1e: 0000 unimp + 80002b20: 0000 unimp + 80002b22: 0000 unimp + 80002b24: 0000 unimp + 80002b26: 0000 unimp + 80002b28: 0000 unimp + 80002b2a: 0000 unimp + 80002b2c: 0000 unimp + 80002b2e: 0000 unimp + 80002b30: 0000 unimp + 80002b32: 0000 unimp + 80002b34: 0000 unimp + 80002b36: 0000 unimp + 80002b38: 0000 unimp + 80002b3a: 0000 unimp + 80002b3c: 0000 unimp + 80002b3e: 0000 unimp + 80002b40: 0000 unimp + 80002b42: 0000 unimp + 80002b44: 0000 unimp + 80002b46: 0000 unimp + 80002b48: 0000 unimp + 80002b4a: 0000 unimp + 80002b4c: 0000 unimp + 80002b4e: 0000 unimp + 80002b50: 0000 unimp + 80002b52: 0000 unimp + 80002b54: 0000 unimp + 80002b56: 0000 unimp + 80002b58: 0000 unimp + 80002b5a: 0000 unimp + 80002b5c: 0000 unimp + 80002b5e: 0000 unimp + 80002b60: 0000 unimp + 80002b62: 0000 unimp + 80002b64: 0000 unimp + 80002b66: 0000 unimp + 80002b68: 0000 unimp + 80002b6a: 0000 unimp + 80002b6c: 0000 unimp + 80002b6e: 0000 unimp + 80002b70: 0000 unimp + 80002b72: 0000 unimp + 80002b74: 0000 unimp + 80002b76: 0000 unimp + 80002b78: 0000 unimp + 80002b7a: 0000 unimp + 80002b7c: 0000 unimp + 80002b7e: 0000 unimp + 80002b80: 0000 unimp + 80002b82: 0000 unimp + 80002b84: 0000 unimp + 80002b86: 0000 unimp + 80002b88: 0000 unimp + 80002b8a: 0000 unimp + 80002b8c: 0000 unimp + 80002b8e: 0000 unimp + 80002b90: 0000 unimp + 80002b92: 0000 unimp + 80002b94: 0000 unimp + 80002b96: 0000 unimp + 80002b98: 0000 unimp + 80002b9a: 0000 unimp + 80002b9c: 0000 unimp + 80002b9e: 0000 unimp + 80002ba0: 0000 unimp + 80002ba2: 0000 unimp + 80002ba4: 0000 unimp + 80002ba6: 0000 unimp + 80002ba8: 0000 unimp + 80002baa: 0000 unimp + 80002bac: 0000 unimp + 80002bae: 0000 unimp + 80002bb0: 0000 unimp + 80002bb2: 0000 unimp + 80002bb4: 0000 unimp + 80002bb6: 0000 unimp + 80002bb8: 0000 unimp + 80002bba: 0000 unimp + 80002bbc: 0000 unimp + 80002bbe: 0000 unimp + 80002bc0: 0000 unimp + 80002bc2: 0000 unimp + 80002bc4: 0000 unimp + 80002bc6: 0000 unimp + 80002bc8: 0000 unimp + 80002bca: 0000 unimp + 80002bcc: 0000 unimp + 80002bce: 0000 unimp + 80002bd0: 0000 unimp + 80002bd2: 0000 unimp + 80002bd4: 0000 unimp + 80002bd6: 0000 unimp + 80002bd8: 0000 unimp + 80002bda: 0000 unimp + 80002bdc: 0000 unimp + 80002bde: 0000 unimp + 80002be0: 0000 unimp + 80002be2: 0000 unimp + 80002be4: 0000 unimp + 80002be6: 0000 unimp + 80002be8: 0000 unimp + 80002bea: 0000 unimp + 80002bec: 0000 unimp + 80002bee: 0000 unimp + 80002bf0: 0000 unimp + 80002bf2: 0000 unimp + 80002bf4: 0000 unimp + 80002bf6: 0000 unimp + 80002bf8: 0000 unimp + 80002bfa: 0000 unimp + 80002bfc: 0000 unimp + 80002bfe: 0000 unimp + 80002c00: 0000 unimp + 80002c02: 0000 unimp + 80002c04: 0000 unimp + 80002c06: 0000 unimp + 80002c08: 0000 unimp + 80002c0a: 0000 unimp + 80002c0c: 0000 unimp + 80002c0e: 0000 unimp + 80002c10: 0000 unimp + 80002c12: 0000 unimp + 80002c14: 0000 unimp + 80002c16: 0000 unimp + 80002c18: 0000 unimp + 80002c1a: 0000 unimp + 80002c1c: 0000 unimp + 80002c1e: 0000 unimp + 80002c20: 0000 unimp + 80002c22: 0000 unimp + 80002c24: 0000 unimp + 80002c26: 0000 unimp + 80002c28: 0000 unimp + 80002c2a: 0000 unimp + 80002c2c: 0000 unimp + 80002c2e: 0000 unimp + 80002c30: 0000 unimp + 80002c32: 0000 unimp + 80002c34: 0000 unimp + 80002c36: 0000 unimp + 80002c38: 0000 unimp + 80002c3a: 0000 unimp + 80002c3c: 0000 unimp + 80002c3e: 0000 unimp + 80002c40: 0000 unimp + 80002c42: 0000 unimp + 80002c44: 0000 unimp + 80002c46: 0000 unimp + 80002c48: 0000 unimp + 80002c4a: 0000 unimp + 80002c4c: 0000 unimp + 80002c4e: 0000 unimp + 80002c50: 0000 unimp + 80002c52: 0000 unimp + 80002c54: 0000 unimp + 80002c56: 0000 unimp + 80002c58: 0000 unimp + 80002c5a: 0000 unimp + 80002c5c: 0000 unimp + 80002c5e: 0000 unimp + 80002c60: 0000 unimp + 80002c62: 0000 unimp + 80002c64: 0000 unimp + 80002c66: 0000 unimp + 80002c68: 0000 unimp + 80002c6a: 0000 unimp + 80002c6c: 0000 unimp + 80002c6e: 0000 unimp + 80002c70: 0000 unimp + 80002c72: 0000 unimp + 80002c74: 0000 unimp + 80002c76: 0000 unimp + 80002c78: 0000 unimp + 80002c7a: 0000 unimp + 80002c7c: 0000 unimp + 80002c7e: 0000 unimp + 80002c80: 0000 unimp + 80002c82: 0000 unimp + 80002c84: 0000 unimp + 80002c86: 0000 unimp + 80002c88: 0000 unimp + 80002c8a: 0000 unimp + 80002c8c: 0000 unimp + 80002c8e: 0000 unimp + 80002c90: 0000 unimp + 80002c92: 0000 unimp + 80002c94: 0000 unimp + 80002c96: 0000 unimp + 80002c98: 0000 unimp + 80002c9a: 0000 unimp + 80002c9c: 0000 unimp + 80002c9e: 0000 unimp + 80002ca0: 0000 unimp + 80002ca2: 0000 unimp + 80002ca4: 0000 unimp + 80002ca6: 0000 unimp + 80002ca8: 0000 unimp + 80002caa: 0000 unimp + 80002cac: 0000 unimp + 80002cae: 0000 unimp + 80002cb0: 0000 unimp + 80002cb2: 0000 unimp + 80002cb4: 0000 unimp + 80002cb6: 0000 unimp + 80002cb8: 0000 unimp + 80002cba: 0000 unimp + 80002cbc: 0000 unimp + 80002cbe: 0000 unimp + 80002cc0: 0000 unimp + 80002cc2: 0000 unimp + 80002cc4: 0000 unimp + 80002cc6: 0000 unimp + 80002cc8: 0000 unimp + 80002cca: 0000 unimp + 80002ccc: 0000 unimp + 80002cce: 0000 unimp + 80002cd0: 0000 unimp + 80002cd2: 0000 unimp + 80002cd4: 0000 unimp + 80002cd6: 0000 unimp + 80002cd8: 0000 unimp + 80002cda: 0000 unimp + 80002cdc: 0000 unimp + 80002cde: 0000 unimp + 80002ce0: 0000 unimp + 80002ce2: 0000 unimp + 80002ce4: 0000 unimp + 80002ce6: 0000 unimp + 80002ce8: 0000 unimp + 80002cea: 0000 unimp + 80002cec: 0000 unimp + 80002cee: 0000 unimp + 80002cf0: 0000 unimp + 80002cf2: 0000 unimp + 80002cf4: 0000 unimp + 80002cf6: 0000 unimp + 80002cf8: 0000 unimp + 80002cfa: 0000 unimp + 80002cfc: 0000 unimp + 80002cfe: 0000 unimp + 80002d00: 0000 unimp + 80002d02: 0000 unimp + 80002d04: 0000 unimp + 80002d06: 0000 unimp + 80002d08: 0000 unimp + 80002d0a: 0000 unimp + 80002d0c: 0000 unimp + 80002d0e: 0000 unimp + 80002d10: 0000 unimp + 80002d12: 0000 unimp + 80002d14: 0000 unimp + 80002d16: 0000 unimp + 80002d18: 0000 unimp + 80002d1a: 0000 unimp + 80002d1c: 0000 unimp + 80002d1e: 0000 unimp + 80002d20: 0000 unimp + 80002d22: 0000 unimp + 80002d24: 0000 unimp + 80002d26: 0000 unimp + 80002d28: 0000 unimp + 80002d2a: 0000 unimp + 80002d2c: 0000 unimp + 80002d2e: 0000 unimp + 80002d30: 0000 unimp + 80002d32: 0000 unimp + 80002d34: 0000 unimp + 80002d36: 0000 unimp + 80002d38: 0000 unimp + 80002d3a: 0000 unimp + 80002d3c: 0000 unimp + 80002d3e: 0000 unimp + 80002d40: 0000 unimp + 80002d42: 0000 unimp + 80002d44: 0000 unimp + 80002d46: 0000 unimp + 80002d48: 0000 unimp + 80002d4a: 0000 unimp + 80002d4c: 0000 unimp + 80002d4e: 0000 unimp + 80002d50: 0000 unimp + 80002d52: 0000 unimp + 80002d54: 0000 unimp + 80002d56: 0000 unimp + 80002d58: 0000 unimp + 80002d5a: 0000 unimp + 80002d5c: 0000 unimp + 80002d5e: 0000 unimp + 80002d60: 0000 unimp + 80002d62: 0000 unimp + 80002d64: 0000 unimp + 80002d66: 0000 unimp + 80002d68: 0000 unimp + 80002d6a: 0000 unimp + 80002d6c: 0000 unimp + 80002d6e: 0000 unimp + 80002d70: 0000 unimp + 80002d72: 0000 unimp + 80002d74: 0000 unimp + 80002d76: 0000 unimp + 80002d78: 0000 unimp + 80002d7a: 0000 unimp + 80002d7c: 0000 unimp + 80002d7e: 0000 unimp + 80002d80: 0000 unimp + 80002d82: 0000 unimp + 80002d84: 0000 unimp + 80002d86: 0000 unimp + 80002d88: 0000 unimp + 80002d8a: 0000 unimp + 80002d8c: 0000 unimp + 80002d8e: 0000 unimp + 80002d90: 0000 unimp + 80002d92: 0000 unimp + 80002d94: 0000 unimp + 80002d96: 0000 unimp + 80002d98: 0000 unimp + 80002d9a: 0000 unimp + 80002d9c: 0000 unimp + 80002d9e: 0000 unimp + 80002da0: 0000 unimp + 80002da2: 0000 unimp + 80002da4: 0000 unimp + 80002da6: 0000 unimp + 80002da8: 0000 unimp + 80002daa: 0000 unimp + 80002dac: 0000 unimp + 80002dae: 0000 unimp + 80002db0: 0000 unimp + 80002db2: 0000 unimp + 80002db4: 0000 unimp + 80002db6: 0000 unimp + 80002db8: 0000 unimp + 80002dba: 0000 unimp + 80002dbc: 0000 unimp + 80002dbe: 0000 unimp + 80002dc0: 0000 unimp + 80002dc2: 0000 unimp + 80002dc4: 0000 unimp + 80002dc6: 0000 unimp + 80002dc8: 0000 unimp + 80002dca: 0000 unimp + 80002dcc: 0000 unimp + 80002dce: 0000 unimp + 80002dd0: 0000 unimp + 80002dd2: 0000 unimp + 80002dd4: 0000 unimp + 80002dd6: 0000 unimp + 80002dd8: 0000 unimp + 80002dda: 0000 unimp + 80002ddc: 0000 unimp + 80002dde: 0000 unimp + 80002de0: 0000 unimp + 80002de2: 0000 unimp + 80002de4: 0000 unimp + 80002de6: 0000 unimp + 80002de8: 0000 unimp + 80002dea: 0000 unimp + 80002dec: 0000 unimp + 80002dee: 0000 unimp + 80002df0: 0000 unimp + 80002df2: 0000 unimp + 80002df4: 0000 unimp + 80002df6: 0000 unimp + 80002df8: 0000 unimp + 80002dfa: 0000 unimp + 80002dfc: 0000 unimp + 80002dfe: 0000 unimp + 80002e00: 0000 unimp + 80002e02: 0000 unimp + 80002e04: 0000 unimp + 80002e06: 0000 unimp + 80002e08: 0000 unimp + 80002e0a: 0000 unimp + 80002e0c: 0000 unimp + 80002e0e: 0000 unimp + 80002e10: 0000 unimp + 80002e12: 0000 unimp + 80002e14: 0000 unimp + 80002e16: 0000 unimp + 80002e18: 0000 unimp + 80002e1a: 0000 unimp + 80002e1c: 0000 unimp + 80002e1e: 0000 unimp + 80002e20: 0000 unimp + 80002e22: 0000 unimp + 80002e24: 0000 unimp + 80002e26: 0000 unimp + 80002e28: 0000 unimp + 80002e2a: 0000 unimp + 80002e2c: 0000 unimp + 80002e2e: 0000 unimp + 80002e30: 0000 unimp + 80002e32: 0000 unimp + 80002e34: 0000 unimp + 80002e36: 0000 unimp + 80002e38: 0000 unimp + 80002e3a: 0000 unimp + 80002e3c: 0000 unimp + 80002e3e: 0000 unimp + 80002e40: 0000 unimp + 80002e42: 0000 unimp + 80002e44: 0000 unimp + 80002e46: 0000 unimp + 80002e48: 0000 unimp + 80002e4a: 0000 unimp + 80002e4c: 0000 unimp + 80002e4e: 0000 unimp + 80002e50: 0000 unimp + 80002e52: 0000 unimp + 80002e54: 0000 unimp + 80002e56: 0000 unimp + 80002e58: 0000 unimp + 80002e5a: 0000 unimp + 80002e5c: 0000 unimp + 80002e5e: 0000 unimp + 80002e60: 0000 unimp + 80002e62: 0000 unimp + 80002e64: 0000 unimp + 80002e66: 0000 unimp + 80002e68: 0000 unimp + 80002e6a: 0000 unimp + 80002e6c: 0000 unimp + 80002e6e: 0000 unimp + 80002e70: 0000 unimp + 80002e72: 0000 unimp + 80002e74: 0000 unimp + 80002e76: 0000 unimp + 80002e78: 0000 unimp + 80002e7a: 0000 unimp + 80002e7c: 0000 unimp + 80002e7e: 0000 unimp + 80002e80: 0000 unimp + 80002e82: 0000 unimp + 80002e84: 0000 unimp + 80002e86: 0000 unimp + 80002e88: 0000 unimp + 80002e8a: 0000 unimp + 80002e8c: 0000 unimp + 80002e8e: 0000 unimp + 80002e90: 0000 unimp + 80002e92: 0000 unimp + 80002e94: 0000 unimp + 80002e96: 0000 unimp + 80002e98: 0000 unimp + 80002e9a: 0000 unimp + 80002e9c: 0000 unimp + 80002e9e: 0000 unimp + 80002ea0: 0000 unimp + 80002ea2: 0000 unimp + 80002ea4: 0000 unimp + 80002ea6: 0000 unimp + 80002ea8: 0000 unimp + 80002eaa: 0000 unimp + 80002eac: 0000 unimp + 80002eae: 0000 unimp + 80002eb0: 0000 unimp + 80002eb2: 0000 unimp + 80002eb4: 0000 unimp + 80002eb6: 0000 unimp + 80002eb8: 0000 unimp + 80002eba: 0000 unimp + 80002ebc: 0000 unimp + 80002ebe: 0000 unimp + 80002ec0: 0000 unimp + 80002ec2: 0000 unimp + 80002ec4: 0000 unimp + 80002ec6: 0000 unimp + 80002ec8: 0000 unimp + 80002eca: 0000 unimp + 80002ecc: 0000 unimp + 80002ece: 0000 unimp + 80002ed0: 0000 unimp + 80002ed2: 0000 unimp + 80002ed4: 0000 unimp + 80002ed6: 0000 unimp + 80002ed8: 0000 unimp + 80002eda: 0000 unimp + 80002edc: 0000 unimp + 80002ede: 0000 unimp + 80002ee0: 0000 unimp + 80002ee2: 0000 unimp + 80002ee4: 0000 unimp + 80002ee6: 0000 unimp + 80002ee8: 0000 unimp + 80002eea: 0000 unimp + 80002eec: 0000 unimp + 80002eee: 0000 unimp + 80002ef0: 0000 unimp + 80002ef2: 0000 unimp + 80002ef4: 0000 unimp + 80002ef6: 0000 unimp + 80002ef8: 0000 unimp + 80002efa: 0000 unimp + 80002efc: 0000 unimp + 80002efe: 0000 unimp + 80002f00: 0000 unimp + 80002f02: 0000 unimp + 80002f04: 0000 unimp + 80002f06: 0000 unimp + 80002f08: 0000 unimp + 80002f0a: 0000 unimp + 80002f0c: 0000 unimp + 80002f0e: 0000 unimp + 80002f10: 0000 unimp + 80002f12: 0000 unimp + 80002f14: 0000 unimp + 80002f16: 0000 unimp + 80002f18: 0000 unimp + 80002f1a: 0000 unimp + 80002f1c: 0000 unimp + 80002f1e: 0000 unimp + 80002f20: 0000 unimp + 80002f22: 0000 unimp + 80002f24: 0000 unimp + 80002f26: 0000 unimp + 80002f28: 0000 unimp + 80002f2a: 0000 unimp + 80002f2c: 0000 unimp + 80002f2e: 0000 unimp + 80002f30: 0000 unimp + 80002f32: 0000 unimp + 80002f34: 0000 unimp + 80002f36: 0000 unimp + 80002f38: 0000 unimp + 80002f3a: 0000 unimp + 80002f3c: 0000 unimp + 80002f3e: 0000 unimp + 80002f40: 0000 unimp + 80002f42: 0000 unimp + 80002f44: 0000 unimp + 80002f46: 0000 unimp + 80002f48: 0000 unimp + 80002f4a: 0000 unimp + 80002f4c: 0000 unimp + 80002f4e: 0000 unimp + 80002f50: 0000 unimp + 80002f52: 0000 unimp + 80002f54: 0000 unimp + 80002f56: 0000 unimp + 80002f58: 0000 unimp + 80002f5a: 0000 unimp + 80002f5c: 0000 unimp + 80002f5e: 0000 unimp + 80002f60: 0000 unimp + 80002f62: 0000 unimp + 80002f64: 0000 unimp + 80002f66: 0000 unimp + 80002f68: 0000 unimp + 80002f6a: 0000 unimp + 80002f6c: 0000 unimp + 80002f6e: 0000 unimp + 80002f70: 0000 unimp + 80002f72: 0000 unimp + 80002f74: 0000 unimp + 80002f76: 0000 unimp + 80002f78: 0000 unimp + 80002f7a: 0000 unimp + 80002f7c: 0000 unimp + 80002f7e: 0000 unimp + 80002f80: 0000 unimp + 80002f82: 0000 unimp + 80002f84: 0000 unimp + 80002f86: 0000 unimp + 80002f88: 0000 unimp + 80002f8a: 0000 unimp + 80002f8c: 0000 unimp + 80002f8e: 0000 unimp + 80002f90: 0000 unimp + 80002f92: 0000 unimp + 80002f94: 0000 unimp + 80002f96: 0000 unimp + 80002f98: 0000 unimp + 80002f9a: 0000 unimp + 80002f9c: 0000 unimp + 80002f9e: 0000 unimp + 80002fa0: 0000 unimp + 80002fa2: 0000 unimp + 80002fa4: 0000 unimp + 80002fa6: 0000 unimp + 80002fa8: 0000 unimp + 80002faa: 0000 unimp + 80002fac: 0000 unimp + 80002fae: 0000 unimp + 80002fb0: 0000 unimp + 80002fb2: 0000 unimp + 80002fb4: 0000 unimp + 80002fb6: 0000 unimp + 80002fb8: 0000 unimp + 80002fba: 0000 unimp + 80002fbc: 0000 unimp + 80002fbe: 0000 unimp + 80002fc0: 0000 unimp + 80002fc2: 0000 unimp + 80002fc4: 0000 unimp + 80002fc6: 0000 unimp + 80002fc8: 0000 unimp + 80002fca: 0000 unimp + 80002fcc: 0000 unimp + 80002fce: 0000 unimp + 80002fd0: 0000 unimp + 80002fd2: 0000 unimp + 80002fd4: 0000 unimp + 80002fd6: 0000 unimp + 80002fd8: 0000 unimp + 80002fda: 0000 unimp + 80002fdc: 0000 unimp + 80002fde: 0000 unimp + 80002fe0: 0000 unimp + 80002fe2: 0000 unimp + 80002fe4: 0000 unimp + 80002fe6: 0000 unimp + 80002fe8: 0000 unimp + 80002fea: 0000 unimp + 80002fec: 0000 unimp + 80002fee: 0000 unimp + 80002ff0: 0000 unimp + 80002ff2: 0000 unimp + 80002ff4: 0000 unimp + 80002ff6: 0000 unimp + 80002ff8: 0000 unimp + 80002ffa: 0000 unimp + 80002ffc: 0000 unimp + 80002ffe: 0000 unimp + +0000000080003000 : + 80003000: 00200193 li gp,2 + 80003004: 29a00593 li a1,666 + +0000000080003008 : + 80003008: 7f70106f j 80004ffe + 8000300c: 00000013 nop + +0000000080003010 : + 80003010: 3210 fld fa2,32(a2) + 80003012: 7654 ld a3,168(a2) + 80003014: ba98 fsd fa4,48(a3) + 80003016: fedc sd a5,184(a3) + 80003018: 3210 fld fa2,32(a2) + 8000301a: 7654 ld a3,168(a2) + 8000301c: ba98 fsd fa4,48(a3) + 8000301e: fedc sd a5,184(a3) + 80003020: 00000013 nop + 80003024: 00000013 nop + 80003028: 00000013 nop + 8000302c: 00000013 nop + 80003030: 00000013 nop + 80003034: 00000013 nop + 80003038: 00000013 nop + 8000303c: 00000013 nop + 80003040: 00000013 nop + 80003044: 00000013 nop + 80003048: 00000013 nop + 8000304c: 00000013 nop + 80003050: 00000013 nop + 80003054: 00000013 nop + 80003058: 00000013 nop + 8000305c: 00000013 nop + 80003060: 00000013 nop + 80003064: 00000013 nop + 80003068: 00000013 nop + 8000306c: 00000013 nop + 80003070: 00000013 nop + 80003074: 00000013 nop + 80003078: 00000013 nop + 8000307c: 00000013 nop + 80003080: 00000013 nop + 80003084: 00000013 nop + 80003088: 00000013 nop + 8000308c: 00000013 nop + 80003090: 00000013 nop + 80003094: 00000013 nop + 80003098: 00000013 nop + 8000309c: 00000013 nop + 800030a0: 00000013 nop + 800030a4: 00000013 nop + 800030a8: 00000013 nop + 800030ac: 00000013 nop + 800030b0: 00000013 nop + 800030b4: 00000013 nop + 800030b8: 00000013 nop + 800030bc: 00000013 nop + 800030c0: 00000013 nop + 800030c4: 00000013 nop + 800030c8: 00000013 nop + 800030cc: 00000013 nop + 800030d0: 00000013 nop + 800030d4: 00000013 nop + 800030d8: 00000013 nop + 800030dc: 00000013 nop + 800030e0: 00000013 nop + 800030e4: 00000013 nop + 800030e8: 00000013 nop + 800030ec: 00000013 nop + 800030f0: 00000013 nop + 800030f4: 00000013 nop + 800030f8: 00000013 nop + 800030fc: 00000013 nop + 80003100: 00000013 nop + 80003104: 00000013 nop + 80003108: 00000013 nop + 8000310c: 00000013 nop + 80003110: 00000013 nop + 80003114: 00000013 nop + 80003118: 00000013 nop + 8000311c: 00000013 nop + 80003120: 00000013 nop + 80003124: 00000013 nop + 80003128: 00000013 nop + 8000312c: 00000013 nop + 80003130: 00000013 nop + 80003134: 00000013 nop + 80003138: 00000013 nop + 8000313c: 00000013 nop + 80003140: 00000013 nop + 80003144: 00000013 nop + 80003148: 00000013 nop + 8000314c: 00000013 nop + 80003150: 00000013 nop + 80003154: 00000013 nop + 80003158: 00000013 nop + 8000315c: 00000013 nop + 80003160: 00000013 nop + 80003164: 00000013 nop + 80003168: 00000013 nop + 8000316c: 00000013 nop + 80003170: 00000013 nop + 80003174: 00000013 nop + 80003178: 00000013 nop + 8000317c: 00000013 nop + 80003180: 00000013 nop + 80003184: 00000013 nop + 80003188: 00000013 nop + 8000318c: 00000013 nop + 80003190: 00000013 nop + 80003194: 00000013 nop + 80003198: 00000013 nop + 8000319c: 00000013 nop + 800031a0: 00000013 nop + 800031a4: 00000013 nop + 800031a8: 00000013 nop + 800031ac: 00000013 nop + 800031b0: 00000013 nop + 800031b4: 00000013 nop + 800031b8: 00000013 nop + 800031bc: 00000013 nop + 800031c0: 00000013 nop + 800031c4: 00000013 nop + 800031c8: 00000013 nop + 800031cc: 00000013 nop + 800031d0: 00000013 nop + 800031d4: 00000013 nop + 800031d8: 00000013 nop + 800031dc: 00000013 nop + 800031e0: 00000013 nop + 800031e4: 00000013 nop + 800031e8: 00000013 nop + 800031ec: 00000013 nop + 800031f0: 00000013 nop + 800031f4: 00000013 nop + 800031f8: 00000013 nop + 800031fc: 00000013 nop + 80003200: 00000013 nop + 80003204: 00000013 nop + 80003208: 00000013 nop + 8000320c: 00000013 nop + 80003210: 00000013 nop + 80003214: 00000013 nop + 80003218: 00000013 nop + 8000321c: 00000013 nop + 80003220: 00000013 nop + 80003224: 00000013 nop + 80003228: 00000013 nop + 8000322c: 00000013 nop + 80003230: 00000013 nop + 80003234: 00000013 nop + 80003238: 00000013 nop + 8000323c: 00000013 nop + 80003240: 00000013 nop + 80003244: 00000013 nop + 80003248: 00000013 nop + 8000324c: 00000013 nop + 80003250: 00000013 nop + 80003254: 00000013 nop + 80003258: 00000013 nop + 8000325c: 00000013 nop + 80003260: 00000013 nop + 80003264: 00000013 nop + 80003268: 00000013 nop + 8000326c: 00000013 nop + 80003270: 00000013 nop + 80003274: 00000013 nop + 80003278: 00000013 nop + 8000327c: 00000013 nop + 80003280: 00000013 nop + 80003284: 00000013 nop + 80003288: 00000013 nop + 8000328c: 00000013 nop + 80003290: 00000013 nop + 80003294: 00000013 nop + 80003298: 00000013 nop + 8000329c: 00000013 nop + 800032a0: 00000013 nop + 800032a4: 00000013 nop + 800032a8: 00000013 nop + 800032ac: 00000013 nop + 800032b0: 00000013 nop + 800032b4: 00000013 nop + 800032b8: 00000013 nop + 800032bc: 00000013 nop + 800032c0: 00000013 nop + 800032c4: 00000013 nop + 800032c8: 00000013 nop + 800032cc: 00000013 nop + 800032d0: 00000013 nop + 800032d4: 00000013 nop + 800032d8: 00000013 nop + 800032dc: 00000013 nop + 800032e0: 00000013 nop + 800032e4: 00000013 nop + 800032e8: 00000013 nop + 800032ec: 00000013 nop + 800032f0: 00000013 nop + 800032f4: 00000013 nop + 800032f8: 00000013 nop + 800032fc: 00000013 nop + 80003300: 00000013 nop + 80003304: 00000013 nop + 80003308: 00000013 nop + 8000330c: 00000013 nop + 80003310: 00000013 nop + 80003314: 00000013 nop + 80003318: 00000013 nop + 8000331c: 00000013 nop + 80003320: 00000013 nop + 80003324: 00000013 nop + 80003328: 00000013 nop + 8000332c: 00000013 nop + 80003330: 00000013 nop + 80003334: 00000013 nop + 80003338: 00000013 nop + 8000333c: 00000013 nop + 80003340: 00000013 nop + 80003344: 00000013 nop + 80003348: 00000013 nop + 8000334c: 00000013 nop + 80003350: 00000013 nop + 80003354: 00000013 nop + 80003358: 00000013 nop + 8000335c: 00000013 nop + 80003360: 00000013 nop + 80003364: 00000013 nop + 80003368: 00000013 nop + 8000336c: 00000013 nop + 80003370: 00000013 nop + 80003374: 00000013 nop + 80003378: 00000013 nop + 8000337c: 00000013 nop + 80003380: 00000013 nop + 80003384: 00000013 nop + 80003388: 00000013 nop + 8000338c: 00000013 nop + 80003390: 00000013 nop + 80003394: 00000013 nop + 80003398: 00000013 nop + 8000339c: 00000013 nop + 800033a0: 00000013 nop + 800033a4: 00000013 nop + 800033a8: 00000013 nop + 800033ac: 00000013 nop + 800033b0: 00000013 nop + 800033b4: 00000013 nop + 800033b8: 00000013 nop + 800033bc: 00000013 nop + 800033c0: 00000013 nop + 800033c4: 00000013 nop + 800033c8: 00000013 nop + 800033cc: 00000013 nop + 800033d0: 00000013 nop + 800033d4: 00000013 nop + 800033d8: 00000013 nop + 800033dc: 00000013 nop + 800033e0: 00000013 nop + 800033e4: 00000013 nop + 800033e8: 00000013 nop + 800033ec: 00000013 nop + 800033f0: 00000013 nop + 800033f4: 00000013 nop + 800033f8: 00000013 nop + 800033fc: 00000013 nop + 80003400: 00000013 nop + 80003404: 00000013 nop + 80003408: 00000013 nop + 8000340c: 00000013 nop + 80003410: 00000013 nop + 80003414: 00000013 nop + 80003418: 00000013 nop + 8000341c: 00000013 nop + 80003420: 00000013 nop + 80003424: 00000013 nop + 80003428: 00000013 nop + 8000342c: 00000013 nop + 80003430: 00000013 nop + 80003434: 00000013 nop + 80003438: 00000013 nop + 8000343c: 00000013 nop + 80003440: 00000013 nop + 80003444: 00000013 nop + 80003448: 00000013 nop + 8000344c: 00000013 nop + 80003450: 00000013 nop + 80003454: 00000013 nop + 80003458: 00000013 nop + 8000345c: 00000013 nop + 80003460: 00000013 nop + 80003464: 00000013 nop + 80003468: 00000013 nop + 8000346c: 00000013 nop + 80003470: 00000013 nop + 80003474: 00000013 nop + 80003478: 00000013 nop + 8000347c: 00000013 nop + 80003480: 00000013 nop + 80003484: 00000013 nop + 80003488: 00000013 nop + 8000348c: 00000013 nop + 80003490: 00000013 nop + 80003494: 00000013 nop + 80003498: 00000013 nop + 8000349c: 00000013 nop + 800034a0: 00000013 nop + 800034a4: 00000013 nop + 800034a8: 00000013 nop + 800034ac: 00000013 nop + 800034b0: 00000013 nop + 800034b4: 00000013 nop + 800034b8: 00000013 nop + 800034bc: 00000013 nop + 800034c0: 00000013 nop + 800034c4: 00000013 nop + 800034c8: 00000013 nop + 800034cc: 00000013 nop + 800034d0: 00000013 nop + 800034d4: 00000013 nop + 800034d8: 00000013 nop + 800034dc: 00000013 nop + 800034e0: 00000013 nop + 800034e4: 00000013 nop + 800034e8: 00000013 nop + 800034ec: 00000013 nop + 800034f0: 00000013 nop + 800034f4: 00000013 nop + 800034f8: 00000013 nop + 800034fc: 00000013 nop + 80003500: 00000013 nop + 80003504: 00000013 nop + 80003508: 00000013 nop + 8000350c: 00000013 nop + 80003510: 00000013 nop + 80003514: 00000013 nop + 80003518: 00000013 nop + 8000351c: 00000013 nop + 80003520: 00000013 nop + 80003524: 00000013 nop + 80003528: 00000013 nop + 8000352c: 00000013 nop + 80003530: 00000013 nop + 80003534: 00000013 nop + 80003538: 00000013 nop + 8000353c: 00000013 nop + 80003540: 00000013 nop + 80003544: 00000013 nop + 80003548: 00000013 nop + 8000354c: 00000013 nop + 80003550: 00000013 nop + 80003554: 00000013 nop + 80003558: 00000013 nop + 8000355c: 00000013 nop + 80003560: 00000013 nop + 80003564: 00000013 nop + 80003568: 00000013 nop + 8000356c: 00000013 nop + 80003570: 00000013 nop + 80003574: 00000013 nop + 80003578: 00000013 nop + 8000357c: 00000013 nop + 80003580: 00000013 nop + 80003584: 00000013 nop + 80003588: 00000013 nop + 8000358c: 00000013 nop + 80003590: 00000013 nop + 80003594: 00000013 nop + 80003598: 00000013 nop + 8000359c: 00000013 nop + 800035a0: 00000013 nop + 800035a4: 00000013 nop + 800035a8: 00000013 nop + 800035ac: 00000013 nop + 800035b0: 00000013 nop + 800035b4: 00000013 nop + 800035b8: 00000013 nop + 800035bc: 00000013 nop + 800035c0: 00000013 nop + 800035c4: 00000013 nop + 800035c8: 00000013 nop + 800035cc: 00000013 nop + 800035d0: 00000013 nop + 800035d4: 00000013 nop + 800035d8: 00000013 nop + 800035dc: 00000013 nop + 800035e0: 00000013 nop + 800035e4: 00000013 nop + 800035e8: 00000013 nop + 800035ec: 00000013 nop + 800035f0: 00000013 nop + 800035f4: 00000013 nop + 800035f8: 00000013 nop + 800035fc: 00000013 nop + 80003600: 00000013 nop + 80003604: 00000013 nop + 80003608: 00000013 nop + 8000360c: 00000013 nop + 80003610: 00000013 nop + 80003614: 00000013 nop + 80003618: 00000013 nop + 8000361c: 00000013 nop + 80003620: 00000013 nop + 80003624: 00000013 nop + 80003628: 00000013 nop + 8000362c: 00000013 nop + 80003630: 00000013 nop + 80003634: 00000013 nop + 80003638: 00000013 nop + 8000363c: 00000013 nop + 80003640: 00000013 nop + 80003644: 00000013 nop + 80003648: 00000013 nop + 8000364c: 00000013 nop + 80003650: 00000013 nop + 80003654: 00000013 nop + 80003658: 00000013 nop + 8000365c: 00000013 nop + 80003660: 00000013 nop + 80003664: 00000013 nop + 80003668: 00000013 nop + 8000366c: 00000013 nop + 80003670: 00000013 nop + 80003674: 00000013 nop + 80003678: 00000013 nop + 8000367c: 00000013 nop + 80003680: 00000013 nop + 80003684: 00000013 nop + 80003688: 00000013 nop + 8000368c: 00000013 nop + 80003690: 00000013 nop + 80003694: 00000013 nop + 80003698: 00000013 nop + 8000369c: 00000013 nop + 800036a0: 00000013 nop + 800036a4: 00000013 nop + 800036a8: 00000013 nop + 800036ac: 00000013 nop + 800036b0: 00000013 nop + 800036b4: 00000013 nop + 800036b8: 00000013 nop + 800036bc: 00000013 nop + 800036c0: 00000013 nop + 800036c4: 00000013 nop + 800036c8: 00000013 nop + 800036cc: 00000013 nop + 800036d0: 00000013 nop + 800036d4: 00000013 nop + 800036d8: 00000013 nop + 800036dc: 00000013 nop + 800036e0: 00000013 nop + 800036e4: 00000013 nop + 800036e8: 00000013 nop + 800036ec: 00000013 nop + 800036f0: 00000013 nop + 800036f4: 00000013 nop + 800036f8: 00000013 nop + 800036fc: 00000013 nop + 80003700: 00000013 nop + 80003704: 00000013 nop + 80003708: 00000013 nop + 8000370c: 00000013 nop + 80003710: 00000013 nop + 80003714: 00000013 nop + 80003718: 00000013 nop + 8000371c: 00000013 nop + 80003720: 00000013 nop + 80003724: 00000013 nop + 80003728: 00000013 nop + 8000372c: 00000013 nop + 80003730: 00000013 nop + 80003734: 00000013 nop + 80003738: 00000013 nop + 8000373c: 00000013 nop + 80003740: 00000013 nop + 80003744: 00000013 nop + 80003748: 00000013 nop + 8000374c: 00000013 nop + 80003750: 00000013 nop + 80003754: 00000013 nop + 80003758: 00000013 nop + 8000375c: 00000013 nop + 80003760: 00000013 nop + 80003764: 00000013 nop + 80003768: 00000013 nop + 8000376c: 00000013 nop + 80003770: 00000013 nop + 80003774: 00000013 nop + 80003778: 00000013 nop + 8000377c: 00000013 nop + 80003780: 00000013 nop + 80003784: 00000013 nop + 80003788: 00000013 nop + 8000378c: 00000013 nop + 80003790: 00000013 nop + 80003794: 00000013 nop + 80003798: 00000013 nop + 8000379c: 00000013 nop + 800037a0: 00000013 nop + 800037a4: 00000013 nop + 800037a8: 00000013 nop + 800037ac: 00000013 nop + 800037b0: 00000013 nop + 800037b4: 00000013 nop + 800037b8: 00000013 nop + 800037bc: 00000013 nop + 800037c0: 00000013 nop + 800037c4: 00000013 nop + 800037c8: 00000013 nop + 800037cc: 00000013 nop + 800037d0: 00000013 nop + 800037d4: 00000013 nop + 800037d8: 00000013 nop + 800037dc: 00000013 nop + 800037e0: 00000013 nop + 800037e4: 00000013 nop + 800037e8: 00000013 nop + 800037ec: 00000013 nop + 800037f0: 00000013 nop + 800037f4: 00000013 nop + 800037f8: 00000013 nop + 800037fc: 00000013 nop + 80003800: 00000013 nop + 80003804: 00000013 nop + 80003808: 00000013 nop + 8000380c: 00000013 nop + 80003810: 00000013 nop + 80003814: 00000013 nop + 80003818: 00000013 nop + 8000381c: 00000013 nop + 80003820: 00000013 nop + 80003824: 00000013 nop + 80003828: 00000013 nop + 8000382c: 00000013 nop + 80003830: 00000013 nop + 80003834: 00000013 nop + 80003838: 00000013 nop + 8000383c: 00000013 nop + 80003840: 00000013 nop + 80003844: 00000013 nop + 80003848: 00000013 nop + 8000384c: 00000013 nop + 80003850: 00000013 nop + 80003854: 00000013 nop + 80003858: 00000013 nop + 8000385c: 00000013 nop + 80003860: 00000013 nop + 80003864: 00000013 nop + 80003868: 00000013 nop + 8000386c: 00000013 nop + 80003870: 00000013 nop + 80003874: 00000013 nop + 80003878: 00000013 nop + 8000387c: 00000013 nop + 80003880: 00000013 nop + 80003884: 00000013 nop + 80003888: 00000013 nop + 8000388c: 00000013 nop + 80003890: 00000013 nop + 80003894: 00000013 nop + 80003898: 00000013 nop + 8000389c: 00000013 nop + 800038a0: 00000013 nop + 800038a4: 00000013 nop + 800038a8: 00000013 nop + 800038ac: 00000013 nop + 800038b0: 00000013 nop + 800038b4: 00000013 nop + 800038b8: 00000013 nop + 800038bc: 00000013 nop + 800038c0: 00000013 nop + 800038c4: 00000013 nop + 800038c8: 00000013 nop + 800038cc: 00000013 nop + 800038d0: 00000013 nop + 800038d4: 00000013 nop + 800038d8: 00000013 nop + 800038dc: 00000013 nop + 800038e0: 00000013 nop + 800038e4: 00000013 nop + 800038e8: 00000013 nop + 800038ec: 00000013 nop + 800038f0: 00000013 nop + 800038f4: 00000013 nop + 800038f8: 00000013 nop + 800038fc: 00000013 nop + 80003900: 00000013 nop + 80003904: 00000013 nop + 80003908: 00000013 nop + 8000390c: 00000013 nop + 80003910: 00000013 nop + 80003914: 00000013 nop + 80003918: 00000013 nop + 8000391c: 00000013 nop + 80003920: 00000013 nop + 80003924: 00000013 nop + 80003928: 00000013 nop + 8000392c: 00000013 nop + 80003930: 00000013 nop + 80003934: 00000013 nop + 80003938: 00000013 nop + 8000393c: 00000013 nop + 80003940: 00000013 nop + 80003944: 00000013 nop + 80003948: 00000013 nop + 8000394c: 00000013 nop + 80003950: 00000013 nop + 80003954: 00000013 nop + 80003958: 00000013 nop + 8000395c: 00000013 nop + 80003960: 00000013 nop + 80003964: 00000013 nop + 80003968: 00000013 nop + 8000396c: 00000013 nop + 80003970: 00000013 nop + 80003974: 00000013 nop + 80003978: 00000013 nop + 8000397c: 00000013 nop + 80003980: 00000013 nop + 80003984: 00000013 nop + 80003988: 00000013 nop + 8000398c: 00000013 nop + 80003990: 00000013 nop + 80003994: 00000013 nop + 80003998: 00000013 nop + 8000399c: 00000013 nop + 800039a0: 00000013 nop + 800039a4: 00000013 nop + 800039a8: 00000013 nop + 800039ac: 00000013 nop + 800039b0: 00000013 nop + 800039b4: 00000013 nop + 800039b8: 00000013 nop + 800039bc: 00000013 nop + 800039c0: 00000013 nop + 800039c4: 00000013 nop + 800039c8: 00000013 nop + 800039cc: 00000013 nop + 800039d0: 00000013 nop + 800039d4: 00000013 nop + 800039d8: 00000013 nop + 800039dc: 00000013 nop + 800039e0: 00000013 nop + 800039e4: 00000013 nop + 800039e8: 00000013 nop + 800039ec: 00000013 nop + 800039f0: 00000013 nop + 800039f4: 00000013 nop + 800039f8: 00000013 nop + 800039fc: 00000013 nop + 80003a00: 00000013 nop + 80003a04: 00000013 nop + 80003a08: 00000013 nop + 80003a0c: 00000013 nop + 80003a10: 00000013 nop + 80003a14: 00000013 nop + 80003a18: 00000013 nop + 80003a1c: 00000013 nop + 80003a20: 00000013 nop + 80003a24: 00000013 nop + 80003a28: 00000013 nop + 80003a2c: 00000013 nop + 80003a30: 00000013 nop + 80003a34: 00000013 nop + 80003a38: 00000013 nop + 80003a3c: 00000013 nop + 80003a40: 00000013 nop + 80003a44: 00000013 nop + 80003a48: 00000013 nop + 80003a4c: 00000013 nop + 80003a50: 00000013 nop + 80003a54: 00000013 nop + 80003a58: 00000013 nop + 80003a5c: 00000013 nop + 80003a60: 00000013 nop + 80003a64: 00000013 nop + 80003a68: 00000013 nop + 80003a6c: 00000013 nop + 80003a70: 00000013 nop + 80003a74: 00000013 nop + 80003a78: 00000013 nop + 80003a7c: 00000013 nop + 80003a80: 00000013 nop + 80003a84: 00000013 nop + 80003a88: 00000013 nop + 80003a8c: 00000013 nop + 80003a90: 00000013 nop + 80003a94: 00000013 nop + 80003a98: 00000013 nop + 80003a9c: 00000013 nop + 80003aa0: 00000013 nop + 80003aa4: 00000013 nop + 80003aa8: 00000013 nop + 80003aac: 00000013 nop + 80003ab0: 00000013 nop + 80003ab4: 00000013 nop + 80003ab8: 00000013 nop + 80003abc: 00000013 nop + 80003ac0: 00000013 nop + 80003ac4: 00000013 nop + 80003ac8: 00000013 nop + 80003acc: 00000013 nop + 80003ad0: 00000013 nop + 80003ad4: 00000013 nop + 80003ad8: 00000013 nop + 80003adc: 00000013 nop + 80003ae0: 00000013 nop + 80003ae4: 00000013 nop + 80003ae8: 00000013 nop + 80003aec: 00000013 nop + 80003af0: 00000013 nop + 80003af4: 00000013 nop + 80003af8: 00000013 nop + 80003afc: 00000013 nop + 80003b00: 00000013 nop + 80003b04: 00000013 nop + 80003b08: 00000013 nop + 80003b0c: 00000013 nop + 80003b10: 00000013 nop + 80003b14: 00000013 nop + 80003b18: 00000013 nop + 80003b1c: 00000013 nop + 80003b20: 00000013 nop + 80003b24: 00000013 nop + 80003b28: 00000013 nop + 80003b2c: 00000013 nop + 80003b30: 00000013 nop + 80003b34: 00000013 nop + 80003b38: 00000013 nop + 80003b3c: 00000013 nop + 80003b40: 00000013 nop + 80003b44: 00000013 nop + 80003b48: 00000013 nop + 80003b4c: 00000013 nop + 80003b50: 00000013 nop + 80003b54: 00000013 nop + 80003b58: 00000013 nop + 80003b5c: 00000013 nop + 80003b60: 00000013 nop + 80003b64: 00000013 nop + 80003b68: 00000013 nop + 80003b6c: 00000013 nop + 80003b70: 00000013 nop + 80003b74: 00000013 nop + 80003b78: 00000013 nop + 80003b7c: 00000013 nop + 80003b80: 00000013 nop + 80003b84: 00000013 nop + 80003b88: 00000013 nop + 80003b8c: 00000013 nop + 80003b90: 00000013 nop + 80003b94: 00000013 nop + 80003b98: 00000013 nop + 80003b9c: 00000013 nop + 80003ba0: 00000013 nop + 80003ba4: 00000013 nop + 80003ba8: 00000013 nop + 80003bac: 00000013 nop + 80003bb0: 00000013 nop + 80003bb4: 00000013 nop + 80003bb8: 00000013 nop + 80003bbc: 00000013 nop + 80003bc0: 00000013 nop + 80003bc4: 00000013 nop + 80003bc8: 00000013 nop + 80003bcc: 00000013 nop + 80003bd0: 00000013 nop + 80003bd4: 00000013 nop + 80003bd8: 00000013 nop + 80003bdc: 00000013 nop + 80003be0: 00000013 nop + 80003be4: 00000013 nop + 80003be8: 00000013 nop + 80003bec: 00000013 nop + 80003bf0: 00000013 nop + 80003bf4: 00000013 nop + 80003bf8: 00000013 nop + 80003bfc: 00000013 nop + 80003c00: 00000013 nop + 80003c04: 00000013 nop + 80003c08: 00000013 nop + 80003c0c: 00000013 nop + 80003c10: 00000013 nop + 80003c14: 00000013 nop + 80003c18: 00000013 nop + 80003c1c: 00000013 nop + 80003c20: 00000013 nop + 80003c24: 00000013 nop + 80003c28: 00000013 nop + 80003c2c: 00000013 nop + 80003c30: 00000013 nop + 80003c34: 00000013 nop + 80003c38: 00000013 nop + 80003c3c: 00000013 nop + 80003c40: 00000013 nop + 80003c44: 00000013 nop + 80003c48: 00000013 nop + 80003c4c: 00000013 nop + 80003c50: 00000013 nop + 80003c54: 00000013 nop + 80003c58: 00000013 nop + 80003c5c: 00000013 nop + 80003c60: 00000013 nop + 80003c64: 00000013 nop + 80003c68: 00000013 nop + 80003c6c: 00000013 nop + 80003c70: 00000013 nop + 80003c74: 00000013 nop + 80003c78: 00000013 nop + 80003c7c: 00000013 nop + 80003c80: 00000013 nop + 80003c84: 00000013 nop + 80003c88: 00000013 nop + 80003c8c: 00000013 nop + 80003c90: 00000013 nop + 80003c94: 00000013 nop + 80003c98: 00000013 nop + 80003c9c: 00000013 nop + 80003ca0: 00000013 nop + 80003ca4: 00000013 nop + 80003ca8: 00000013 nop + 80003cac: 00000013 nop + 80003cb0: 00000013 nop + 80003cb4: 00000013 nop + 80003cb8: 00000013 nop + 80003cbc: 00000013 nop + 80003cc0: 00000013 nop + 80003cc4: 00000013 nop + 80003cc8: 00000013 nop + 80003ccc: 00000013 nop + 80003cd0: 00000013 nop + 80003cd4: 00000013 nop + 80003cd8: 00000013 nop + 80003cdc: 00000013 nop + 80003ce0: 00000013 nop + 80003ce4: 00000013 nop + 80003ce8: 00000013 nop + 80003cec: 00000013 nop + 80003cf0: 00000013 nop + 80003cf4: 00000013 nop + 80003cf8: 00000013 nop + 80003cfc: 00000013 nop + 80003d00: 00000013 nop + 80003d04: 00000013 nop + 80003d08: 00000013 nop + 80003d0c: 00000013 nop + 80003d10: 00000013 nop + 80003d14: 00000013 nop + 80003d18: 00000013 nop + 80003d1c: 00000013 nop + 80003d20: 00000013 nop + 80003d24: 00000013 nop + 80003d28: 00000013 nop + 80003d2c: 00000013 nop + 80003d30: 00000013 nop + 80003d34: 00000013 nop + 80003d38: 00000013 nop + 80003d3c: 00000013 nop + 80003d40: 00000013 nop + 80003d44: 00000013 nop + 80003d48: 00000013 nop + 80003d4c: 00000013 nop + 80003d50: 00000013 nop + 80003d54: 00000013 nop + 80003d58: 00000013 nop + 80003d5c: 00000013 nop + 80003d60: 00000013 nop + 80003d64: 00000013 nop + 80003d68: 00000013 nop + 80003d6c: 00000013 nop + 80003d70: 00000013 nop + 80003d74: 00000013 nop + 80003d78: 00000013 nop + 80003d7c: 00000013 nop + 80003d80: 00000013 nop + 80003d84: 00000013 nop + 80003d88: 00000013 nop + 80003d8c: 00000013 nop + 80003d90: 00000013 nop + 80003d94: 00000013 nop + 80003d98: 00000013 nop + 80003d9c: 00000013 nop + 80003da0: 00000013 nop + 80003da4: 00000013 nop + 80003da8: 00000013 nop + 80003dac: 00000013 nop + 80003db0: 00000013 nop + 80003db4: 00000013 nop + 80003db8: 00000013 nop + 80003dbc: 00000013 nop + 80003dc0: 00000013 nop + 80003dc4: 00000013 nop + 80003dc8: 00000013 nop + 80003dcc: 00000013 nop + 80003dd0: 00000013 nop + 80003dd4: 00000013 nop + 80003dd8: 00000013 nop + 80003ddc: 00000013 nop + 80003de0: 00000013 nop + 80003de4: 00000013 nop + 80003de8: 00000013 nop + 80003dec: 00000013 nop + 80003df0: 00000013 nop + 80003df4: 00000013 nop + 80003df8: 00000013 nop + 80003dfc: 00000013 nop + 80003e00: 00000013 nop + 80003e04: 00000013 nop + 80003e08: 00000013 nop + 80003e0c: 00000013 nop + 80003e10: 00000013 nop + 80003e14: 00000013 nop + 80003e18: 00000013 nop + 80003e1c: 00000013 nop + 80003e20: 00000013 nop + 80003e24: 00000013 nop + 80003e28: 00000013 nop + 80003e2c: 00000013 nop + 80003e30: 00000013 nop + 80003e34: 00000013 nop + 80003e38: 00000013 nop + 80003e3c: 00000013 nop + 80003e40: 00000013 nop + 80003e44: 00000013 nop + 80003e48: 00000013 nop + 80003e4c: 00000013 nop + 80003e50: 00000013 nop + 80003e54: 00000013 nop + 80003e58: 00000013 nop + 80003e5c: 00000013 nop + 80003e60: 00000013 nop + 80003e64: 00000013 nop + 80003e68: 00000013 nop + 80003e6c: 00000013 nop + 80003e70: 00000013 nop + 80003e74: 00000013 nop + 80003e78: 00000013 nop + 80003e7c: 00000013 nop + 80003e80: 00000013 nop + 80003e84: 00000013 nop + 80003e88: 00000013 nop + 80003e8c: 00000013 nop + 80003e90: 00000013 nop + 80003e94: 00000013 nop + 80003e98: 00000013 nop + 80003e9c: 00000013 nop + 80003ea0: 00000013 nop + 80003ea4: 00000013 nop + 80003ea8: 00000013 nop + 80003eac: 00000013 nop + 80003eb0: 00000013 nop + 80003eb4: 00000013 nop + 80003eb8: 00000013 nop + 80003ebc: 00000013 nop + 80003ec0: 00000013 nop + 80003ec4: 00000013 nop + 80003ec8: 00000013 nop + 80003ecc: 00000013 nop + 80003ed0: 00000013 nop + 80003ed4: 00000013 nop + 80003ed8: 00000013 nop + 80003edc: 00000013 nop + 80003ee0: 00000013 nop + 80003ee4: 00000013 nop + 80003ee8: 00000013 nop + 80003eec: 00000013 nop + 80003ef0: 00000013 nop + 80003ef4: 00000013 nop + 80003ef8: 00000013 nop + 80003efc: 00000013 nop + 80003f00: 00000013 nop + 80003f04: 00000013 nop + 80003f08: 00000013 nop + 80003f0c: 00000013 nop + 80003f10: 00000013 nop + 80003f14: 00000013 nop + 80003f18: 00000013 nop + 80003f1c: 00000013 nop + 80003f20: 00000013 nop + 80003f24: 00000013 nop + 80003f28: 00000013 nop + 80003f2c: 00000013 nop + 80003f30: 00000013 nop + 80003f34: 00000013 nop + 80003f38: 00000013 nop + 80003f3c: 00000013 nop + 80003f40: 00000013 nop + 80003f44: 00000013 nop + 80003f48: 00000013 nop + 80003f4c: 00000013 nop + 80003f50: 00000013 nop + 80003f54: 00000013 nop + 80003f58: 00000013 nop + 80003f5c: 00000013 nop + 80003f60: 00000013 nop + 80003f64: 00000013 nop + 80003f68: 00000013 nop + 80003f6c: 00000013 nop + 80003f70: 00000013 nop + 80003f74: 00000013 nop + 80003f78: 00000013 nop + 80003f7c: 00000013 nop + 80003f80: 00000013 nop + 80003f84: 00000013 nop + 80003f88: 00000013 nop + 80003f8c: 00000013 nop + 80003f90: 00000013 nop + 80003f94: 00000013 nop + 80003f98: 00000013 nop + 80003f9c: 00000013 nop + 80003fa0: 00000013 nop + 80003fa4: 00000013 nop + 80003fa8: 00000013 nop + 80003fac: 00000013 nop + 80003fb0: 00000013 nop + 80003fb4: 00000013 nop + 80003fb8: 00000013 nop + 80003fbc: 00000013 nop + 80003fc0: 00000013 nop + 80003fc4: 00000013 nop + 80003fc8: 00000013 nop + 80003fcc: 00000013 nop + 80003fd0: 00000013 nop + 80003fd4: 00000013 nop + 80003fd8: 00000013 nop + 80003fdc: 00000013 nop + 80003fe0: 00000013 nop + 80003fe4: 00000013 nop + 80003fe8: 00000013 nop + 80003fec: 00000013 nop + 80003ff0: 00000013 nop + 80003ff4: 00000013 nop + 80003ff8: 00000013 nop + 80003ffc: 00000013 nop + 80004000: 0000 unimp + 80004002: 0000 unimp + 80004004: 0000 unimp + 80004006: 0000 unimp + 80004008: 0000 unimp + 8000400a: 0000 unimp + 8000400c: 0000 unimp + 8000400e: 0000 unimp + 80004010: 0000 unimp + 80004012: 0000 unimp + 80004014: 0000 unimp + 80004016: 0000 unimp + 80004018: 0000 unimp + 8000401a: 0000 unimp + 8000401c: 0000 unimp + 8000401e: 0000 unimp + 80004020: 0000 unimp + 80004022: 0000 unimp + 80004024: 0000 unimp + 80004026: 0000 unimp + 80004028: 0000 unimp + 8000402a: 0000 unimp + 8000402c: 0000 unimp + 8000402e: 0000 unimp + 80004030: 0000 unimp + 80004032: 0000 unimp + 80004034: 0000 unimp + 80004036: 0000 unimp + 80004038: 0000 unimp + 8000403a: 0000 unimp + 8000403c: 0000 unimp + 8000403e: 0000 unimp + 80004040: 0000 unimp + 80004042: 0000 unimp + 80004044: 0000 unimp + 80004046: 0000 unimp + 80004048: 0000 unimp + 8000404a: 0000 unimp + 8000404c: 0000 unimp + 8000404e: 0000 unimp + 80004050: 0000 unimp + 80004052: 0000 unimp + 80004054: 0000 unimp + 80004056: 0000 unimp + 80004058: 0000 unimp + 8000405a: 0000 unimp + 8000405c: 0000 unimp + 8000405e: 0000 unimp + 80004060: 0000 unimp + 80004062: 0000 unimp + 80004064: 0000 unimp + 80004066: 0000 unimp + 80004068: 0000 unimp + 8000406a: 0000 unimp + 8000406c: 0000 unimp + 8000406e: 0000 unimp + 80004070: 0000 unimp + 80004072: 0000 unimp + 80004074: 0000 unimp + 80004076: 0000 unimp + 80004078: 0000 unimp + 8000407a: 0000 unimp + 8000407c: 0000 unimp + 8000407e: 0000 unimp + 80004080: 0000 unimp + 80004082: 0000 unimp + 80004084: 0000 unimp + 80004086: 0000 unimp + 80004088: 0000 unimp + 8000408a: 0000 unimp + 8000408c: 0000 unimp + 8000408e: 0000 unimp + 80004090: 0000 unimp + 80004092: 0000 unimp + 80004094: 0000 unimp + 80004096: 0000 unimp + 80004098: 0000 unimp + 8000409a: 0000 unimp + 8000409c: 0000 unimp + 8000409e: 0000 unimp + 800040a0: 0000 unimp + 800040a2: 0000 unimp + 800040a4: 0000 unimp + 800040a6: 0000 unimp + 800040a8: 0000 unimp + 800040aa: 0000 unimp + 800040ac: 0000 unimp + 800040ae: 0000 unimp + 800040b0: 0000 unimp + 800040b2: 0000 unimp + 800040b4: 0000 unimp + 800040b6: 0000 unimp + 800040b8: 0000 unimp + 800040ba: 0000 unimp + 800040bc: 0000 unimp + 800040be: 0000 unimp + 800040c0: 0000 unimp + 800040c2: 0000 unimp + 800040c4: 0000 unimp + 800040c6: 0000 unimp + 800040c8: 0000 unimp + 800040ca: 0000 unimp + 800040cc: 0000 unimp + 800040ce: 0000 unimp + 800040d0: 0000 unimp + 800040d2: 0000 unimp + 800040d4: 0000 unimp + 800040d6: 0000 unimp + 800040d8: 0000 unimp + 800040da: 0000 unimp + 800040dc: 0000 unimp + 800040de: 0000 unimp + 800040e0: 0000 unimp + 800040e2: 0000 unimp + 800040e4: 0000 unimp + 800040e6: 0000 unimp + 800040e8: 0000 unimp + 800040ea: 0000 unimp + 800040ec: 0000 unimp + 800040ee: 0000 unimp + 800040f0: 0000 unimp + 800040f2: 0000 unimp + 800040f4: 0000 unimp + 800040f6: 0000 unimp + 800040f8: 0000 unimp + 800040fa: 0000 unimp + 800040fc: 0000 unimp + 800040fe: 0000 unimp + 80004100: 0000 unimp + 80004102: 0000 unimp + 80004104: 0000 unimp + 80004106: 0000 unimp + 80004108: 0000 unimp + 8000410a: 0000 unimp + 8000410c: 0000 unimp + 8000410e: 0000 unimp + 80004110: 0000 unimp + 80004112: 0000 unimp + 80004114: 0000 unimp + 80004116: 0000 unimp + 80004118: 0000 unimp + 8000411a: 0000 unimp + 8000411c: 0000 unimp + 8000411e: 0000 unimp + 80004120: 0000 unimp + 80004122: 0000 unimp + 80004124: 0000 unimp + 80004126: 0000 unimp + 80004128: 0000 unimp + 8000412a: 0000 unimp + 8000412c: 0000 unimp + 8000412e: 0000 unimp + 80004130: 0000 unimp + 80004132: 0000 unimp + 80004134: 0000 unimp + 80004136: 0000 unimp + 80004138: 0000 unimp + 8000413a: 0000 unimp + 8000413c: 0000 unimp + 8000413e: 0000 unimp + 80004140: 0000 unimp + 80004142: 0000 unimp + 80004144: 0000 unimp + 80004146: 0000 unimp + 80004148: 0000 unimp + 8000414a: 0000 unimp + 8000414c: 0000 unimp + 8000414e: 0000 unimp + 80004150: 0000 unimp + 80004152: 0000 unimp + 80004154: 0000 unimp + 80004156: 0000 unimp + 80004158: 0000 unimp + 8000415a: 0000 unimp + 8000415c: 0000 unimp + 8000415e: 0000 unimp + 80004160: 0000 unimp + 80004162: 0000 unimp + 80004164: 0000 unimp + 80004166: 0000 unimp + 80004168: 0000 unimp + 8000416a: 0000 unimp + 8000416c: 0000 unimp + 8000416e: 0000 unimp + 80004170: 0000 unimp + 80004172: 0000 unimp + 80004174: 0000 unimp + 80004176: 0000 unimp + 80004178: 0000 unimp + 8000417a: 0000 unimp + 8000417c: 0000 unimp + 8000417e: 0000 unimp + 80004180: 0000 unimp + 80004182: 0000 unimp + 80004184: 0000 unimp + 80004186: 0000 unimp + 80004188: 0000 unimp + 8000418a: 0000 unimp + 8000418c: 0000 unimp + 8000418e: 0000 unimp + 80004190: 0000 unimp + 80004192: 0000 unimp + 80004194: 0000 unimp + 80004196: 0000 unimp + 80004198: 0000 unimp + 8000419a: 0000 unimp + 8000419c: 0000 unimp + 8000419e: 0000 unimp + 800041a0: 0000 unimp + 800041a2: 0000 unimp + 800041a4: 0000 unimp + 800041a6: 0000 unimp + 800041a8: 0000 unimp + 800041aa: 0000 unimp + 800041ac: 0000 unimp + 800041ae: 0000 unimp + 800041b0: 0000 unimp + 800041b2: 0000 unimp + 800041b4: 0000 unimp + 800041b6: 0000 unimp + 800041b8: 0000 unimp + 800041ba: 0000 unimp + 800041bc: 0000 unimp + 800041be: 0000 unimp + 800041c0: 0000 unimp + 800041c2: 0000 unimp + 800041c4: 0000 unimp + 800041c6: 0000 unimp + 800041c8: 0000 unimp + 800041ca: 0000 unimp + 800041cc: 0000 unimp + 800041ce: 0000 unimp + 800041d0: 0000 unimp + 800041d2: 0000 unimp + 800041d4: 0000 unimp + 800041d6: 0000 unimp + 800041d8: 0000 unimp + 800041da: 0000 unimp + 800041dc: 0000 unimp + 800041de: 0000 unimp + 800041e0: 0000 unimp + 800041e2: 0000 unimp + 800041e4: 0000 unimp + 800041e6: 0000 unimp + 800041e8: 0000 unimp + 800041ea: 0000 unimp + 800041ec: 0000 unimp + 800041ee: 0000 unimp + 800041f0: 0000 unimp + 800041f2: 0000 unimp + 800041f4: 0000 unimp + 800041f6: 0000 unimp + 800041f8: 0000 unimp + 800041fa: 0000 unimp + 800041fc: 0000 unimp + 800041fe: 0000 unimp + 80004200: 0000 unimp + 80004202: 0000 unimp + 80004204: 0000 unimp + 80004206: 0000 unimp + 80004208: 0000 unimp + 8000420a: 0000 unimp + 8000420c: 0000 unimp + 8000420e: 0000 unimp + 80004210: 0000 unimp + 80004212: 0000 unimp + 80004214: 0000 unimp + 80004216: 0000 unimp + 80004218: 0000 unimp + 8000421a: 0000 unimp + 8000421c: 0000 unimp + 8000421e: 0000 unimp + 80004220: 0000 unimp + 80004222: 0000 unimp + 80004224: 0000 unimp + 80004226: 0000 unimp + 80004228: 0000 unimp + 8000422a: 0000 unimp + 8000422c: 0000 unimp + 8000422e: 0000 unimp + 80004230: 0000 unimp + 80004232: 0000 unimp + 80004234: 0000 unimp + 80004236: 0000 unimp + 80004238: 0000 unimp + 8000423a: 0000 unimp + 8000423c: 0000 unimp + 8000423e: 0000 unimp + 80004240: 0000 unimp + 80004242: 0000 unimp + 80004244: 0000 unimp + 80004246: 0000 unimp + 80004248: 0000 unimp + 8000424a: 0000 unimp + 8000424c: 0000 unimp + 8000424e: 0000 unimp + 80004250: 0000 unimp + 80004252: 0000 unimp + 80004254: 0000 unimp + 80004256: 0000 unimp + 80004258: 0000 unimp + 8000425a: 0000 unimp + 8000425c: 0000 unimp + 8000425e: 0000 unimp + 80004260: 0000 unimp + 80004262: 0000 unimp + 80004264: 0000 unimp + 80004266: 0000 unimp + 80004268: 0000 unimp + 8000426a: 0000 unimp + 8000426c: 0000 unimp + 8000426e: 0000 unimp + 80004270: 0000 unimp + 80004272: 0000 unimp + 80004274: 0000 unimp + 80004276: 0000 unimp + 80004278: 0000 unimp + 8000427a: 0000 unimp + 8000427c: 0000 unimp + 8000427e: 0000 unimp + 80004280: 0000 unimp + 80004282: 0000 unimp + 80004284: 0000 unimp + 80004286: 0000 unimp + 80004288: 0000 unimp + 8000428a: 0000 unimp + 8000428c: 0000 unimp + 8000428e: 0000 unimp + 80004290: 0000 unimp + 80004292: 0000 unimp + 80004294: 0000 unimp + 80004296: 0000 unimp + 80004298: 0000 unimp + 8000429a: 0000 unimp + 8000429c: 0000 unimp + 8000429e: 0000 unimp + 800042a0: 0000 unimp + 800042a2: 0000 unimp + 800042a4: 0000 unimp + 800042a6: 0000 unimp + 800042a8: 0000 unimp + 800042aa: 0000 unimp + 800042ac: 0000 unimp + 800042ae: 0000 unimp + 800042b0: 0000 unimp + 800042b2: 0000 unimp + 800042b4: 0000 unimp + 800042b6: 0000 unimp + 800042b8: 0000 unimp + 800042ba: 0000 unimp + 800042bc: 0000 unimp + 800042be: 0000 unimp + 800042c0: 0000 unimp + 800042c2: 0000 unimp + 800042c4: 0000 unimp + 800042c6: 0000 unimp + 800042c8: 0000 unimp + 800042ca: 0000 unimp + 800042cc: 0000 unimp + 800042ce: 0000 unimp + 800042d0: 0000 unimp + 800042d2: 0000 unimp + 800042d4: 0000 unimp + 800042d6: 0000 unimp + 800042d8: 0000 unimp + 800042da: 0000 unimp + 800042dc: 0000 unimp + 800042de: 0000 unimp + 800042e0: 0000 unimp + 800042e2: 0000 unimp + 800042e4: 0000 unimp + 800042e6: 0000 unimp + 800042e8: 0000 unimp + 800042ea: 0000 unimp + 800042ec: 0000 unimp + 800042ee: 0000 unimp + 800042f0: 0000 unimp + 800042f2: 0000 unimp + 800042f4: 0000 unimp + 800042f6: 0000 unimp + 800042f8: 0000 unimp + 800042fa: 0000 unimp + 800042fc: 0000 unimp + 800042fe: 0000 unimp + 80004300: 0000 unimp + 80004302: 0000 unimp + 80004304: 0000 unimp + 80004306: 0000 unimp + 80004308: 0000 unimp + 8000430a: 0000 unimp + 8000430c: 0000 unimp + 8000430e: 0000 unimp + 80004310: 0000 unimp + 80004312: 0000 unimp + 80004314: 0000 unimp + 80004316: 0000 unimp + 80004318: 0000 unimp + 8000431a: 0000 unimp + 8000431c: 0000 unimp + 8000431e: 0000 unimp + 80004320: 0000 unimp + 80004322: 0000 unimp + 80004324: 0000 unimp + 80004326: 0000 unimp + 80004328: 0000 unimp + 8000432a: 0000 unimp + 8000432c: 0000 unimp + 8000432e: 0000 unimp + 80004330: 0000 unimp + 80004332: 0000 unimp + 80004334: 0000 unimp + 80004336: 0000 unimp + 80004338: 0000 unimp + 8000433a: 0000 unimp + 8000433c: 0000 unimp + 8000433e: 0000 unimp + 80004340: 0000 unimp + 80004342: 0000 unimp + 80004344: 0000 unimp + 80004346: 0000 unimp + 80004348: 0000 unimp + 8000434a: 0000 unimp + 8000434c: 0000 unimp + 8000434e: 0000 unimp + 80004350: 0000 unimp + 80004352: 0000 unimp + 80004354: 0000 unimp + 80004356: 0000 unimp + 80004358: 0000 unimp + 8000435a: 0000 unimp + 8000435c: 0000 unimp + 8000435e: 0000 unimp + 80004360: 0000 unimp + 80004362: 0000 unimp + 80004364: 0000 unimp + 80004366: 0000 unimp + 80004368: 0000 unimp + 8000436a: 0000 unimp + 8000436c: 0000 unimp + 8000436e: 0000 unimp + 80004370: 0000 unimp + 80004372: 0000 unimp + 80004374: 0000 unimp + 80004376: 0000 unimp + 80004378: 0000 unimp + 8000437a: 0000 unimp + 8000437c: 0000 unimp + 8000437e: 0000 unimp + 80004380: 0000 unimp + 80004382: 0000 unimp + 80004384: 0000 unimp + 80004386: 0000 unimp + 80004388: 0000 unimp + 8000438a: 0000 unimp + 8000438c: 0000 unimp + 8000438e: 0000 unimp + 80004390: 0000 unimp + 80004392: 0000 unimp + 80004394: 0000 unimp + 80004396: 0000 unimp + 80004398: 0000 unimp + 8000439a: 0000 unimp + 8000439c: 0000 unimp + 8000439e: 0000 unimp + 800043a0: 0000 unimp + 800043a2: 0000 unimp + 800043a4: 0000 unimp + 800043a6: 0000 unimp + 800043a8: 0000 unimp + 800043aa: 0000 unimp + 800043ac: 0000 unimp + 800043ae: 0000 unimp + 800043b0: 0000 unimp + 800043b2: 0000 unimp + 800043b4: 0000 unimp + 800043b6: 0000 unimp + 800043b8: 0000 unimp + 800043ba: 0000 unimp + 800043bc: 0000 unimp + 800043be: 0000 unimp + 800043c0: 0000 unimp + 800043c2: 0000 unimp + 800043c4: 0000 unimp + 800043c6: 0000 unimp + 800043c8: 0000 unimp + 800043ca: 0000 unimp + 800043cc: 0000 unimp + 800043ce: 0000 unimp + 800043d0: 0000 unimp + 800043d2: 0000 unimp + 800043d4: 0000 unimp + 800043d6: 0000 unimp + 800043d8: 0000 unimp + 800043da: 0000 unimp + 800043dc: 0000 unimp + 800043de: 0000 unimp + 800043e0: 0000 unimp + 800043e2: 0000 unimp + 800043e4: 0000 unimp + 800043e6: 0000 unimp + 800043e8: 0000 unimp + 800043ea: 0000 unimp + 800043ec: 0000 unimp + 800043ee: 0000 unimp + 800043f0: 0000 unimp + 800043f2: 0000 unimp + 800043f4: 0000 unimp + 800043f6: 0000 unimp + 800043f8: 0000 unimp + 800043fa: 0000 unimp + 800043fc: 0000 unimp + 800043fe: 0000 unimp + 80004400: 0000 unimp + 80004402: 0000 unimp + 80004404: 0000 unimp + 80004406: 0000 unimp + 80004408: 0000 unimp + 8000440a: 0000 unimp + 8000440c: 0000 unimp + 8000440e: 0000 unimp + 80004410: 0000 unimp + 80004412: 0000 unimp + 80004414: 0000 unimp + 80004416: 0000 unimp + 80004418: 0000 unimp + 8000441a: 0000 unimp + 8000441c: 0000 unimp + 8000441e: 0000 unimp + 80004420: 0000 unimp + 80004422: 0000 unimp + 80004424: 0000 unimp + 80004426: 0000 unimp + 80004428: 0000 unimp + 8000442a: 0000 unimp + 8000442c: 0000 unimp + 8000442e: 0000 unimp + 80004430: 0000 unimp + 80004432: 0000 unimp + 80004434: 0000 unimp + 80004436: 0000 unimp + 80004438: 0000 unimp + 8000443a: 0000 unimp + 8000443c: 0000 unimp + 8000443e: 0000 unimp + 80004440: 0000 unimp + 80004442: 0000 unimp + 80004444: 0000 unimp + 80004446: 0000 unimp + 80004448: 0000 unimp + 8000444a: 0000 unimp + 8000444c: 0000 unimp + 8000444e: 0000 unimp + 80004450: 0000 unimp + 80004452: 0000 unimp + 80004454: 0000 unimp + 80004456: 0000 unimp + 80004458: 0000 unimp + 8000445a: 0000 unimp + 8000445c: 0000 unimp + 8000445e: 0000 unimp + 80004460: 0000 unimp + 80004462: 0000 unimp + 80004464: 0000 unimp + 80004466: 0000 unimp + 80004468: 0000 unimp + 8000446a: 0000 unimp + 8000446c: 0000 unimp + 8000446e: 0000 unimp + 80004470: 0000 unimp + 80004472: 0000 unimp + 80004474: 0000 unimp + 80004476: 0000 unimp + 80004478: 0000 unimp + 8000447a: 0000 unimp + 8000447c: 0000 unimp + 8000447e: 0000 unimp + 80004480: 0000 unimp + 80004482: 0000 unimp + 80004484: 0000 unimp + 80004486: 0000 unimp + 80004488: 0000 unimp + 8000448a: 0000 unimp + 8000448c: 0000 unimp + 8000448e: 0000 unimp + 80004490: 0000 unimp + 80004492: 0000 unimp + 80004494: 0000 unimp + 80004496: 0000 unimp + 80004498: 0000 unimp + 8000449a: 0000 unimp + 8000449c: 0000 unimp + 8000449e: 0000 unimp + 800044a0: 0000 unimp + 800044a2: 0000 unimp + 800044a4: 0000 unimp + 800044a6: 0000 unimp + 800044a8: 0000 unimp + 800044aa: 0000 unimp + 800044ac: 0000 unimp + 800044ae: 0000 unimp + 800044b0: 0000 unimp + 800044b2: 0000 unimp + 800044b4: 0000 unimp + 800044b6: 0000 unimp + 800044b8: 0000 unimp + 800044ba: 0000 unimp + 800044bc: 0000 unimp + 800044be: 0000 unimp + 800044c0: 0000 unimp + 800044c2: 0000 unimp + 800044c4: 0000 unimp + 800044c6: 0000 unimp + 800044c8: 0000 unimp + 800044ca: 0000 unimp + 800044cc: 0000 unimp + 800044ce: 0000 unimp + 800044d0: 0000 unimp + 800044d2: 0000 unimp + 800044d4: 0000 unimp + 800044d6: 0000 unimp + 800044d8: 0000 unimp + 800044da: 0000 unimp + 800044dc: 0000 unimp + 800044de: 0000 unimp + 800044e0: 0000 unimp + 800044e2: 0000 unimp + 800044e4: 0000 unimp + 800044e6: 0000 unimp + 800044e8: 0000 unimp + 800044ea: 0000 unimp + 800044ec: 0000 unimp + 800044ee: 0000 unimp + 800044f0: 0000 unimp + 800044f2: 0000 unimp + 800044f4: 0000 unimp + 800044f6: 0000 unimp + 800044f8: 0000 unimp + 800044fa: 0000 unimp + 800044fc: 0000 unimp + 800044fe: 0000 unimp + 80004500: 0000 unimp + 80004502: 0000 unimp + 80004504: 0000 unimp + 80004506: 0000 unimp + 80004508: 0000 unimp + 8000450a: 0000 unimp + 8000450c: 0000 unimp + 8000450e: 0000 unimp + 80004510: 0000 unimp + 80004512: 0000 unimp + 80004514: 0000 unimp + 80004516: 0000 unimp + 80004518: 0000 unimp + 8000451a: 0000 unimp + 8000451c: 0000 unimp + 8000451e: 0000 unimp + 80004520: 0000 unimp + 80004522: 0000 unimp + 80004524: 0000 unimp + 80004526: 0000 unimp + 80004528: 0000 unimp + 8000452a: 0000 unimp + 8000452c: 0000 unimp + 8000452e: 0000 unimp + 80004530: 0000 unimp + 80004532: 0000 unimp + 80004534: 0000 unimp + 80004536: 0000 unimp + 80004538: 0000 unimp + 8000453a: 0000 unimp + 8000453c: 0000 unimp + 8000453e: 0000 unimp + 80004540: 0000 unimp + 80004542: 0000 unimp + 80004544: 0000 unimp + 80004546: 0000 unimp + 80004548: 0000 unimp + 8000454a: 0000 unimp + 8000454c: 0000 unimp + 8000454e: 0000 unimp + 80004550: 0000 unimp + 80004552: 0000 unimp + 80004554: 0000 unimp + 80004556: 0000 unimp + 80004558: 0000 unimp + 8000455a: 0000 unimp + 8000455c: 0000 unimp + 8000455e: 0000 unimp + 80004560: 0000 unimp + 80004562: 0000 unimp + 80004564: 0000 unimp + 80004566: 0000 unimp + 80004568: 0000 unimp + 8000456a: 0000 unimp + 8000456c: 0000 unimp + 8000456e: 0000 unimp + 80004570: 0000 unimp + 80004572: 0000 unimp + 80004574: 0000 unimp + 80004576: 0000 unimp + 80004578: 0000 unimp + 8000457a: 0000 unimp + 8000457c: 0000 unimp + 8000457e: 0000 unimp + 80004580: 0000 unimp + 80004582: 0000 unimp + 80004584: 0000 unimp + 80004586: 0000 unimp + 80004588: 0000 unimp + 8000458a: 0000 unimp + 8000458c: 0000 unimp + 8000458e: 0000 unimp + 80004590: 0000 unimp + 80004592: 0000 unimp + 80004594: 0000 unimp + 80004596: 0000 unimp + 80004598: 0000 unimp + 8000459a: 0000 unimp + 8000459c: 0000 unimp + 8000459e: 0000 unimp + 800045a0: 0000 unimp + 800045a2: 0000 unimp + 800045a4: 0000 unimp + 800045a6: 0000 unimp + 800045a8: 0000 unimp + 800045aa: 0000 unimp + 800045ac: 0000 unimp + 800045ae: 0000 unimp + 800045b0: 0000 unimp + 800045b2: 0000 unimp + 800045b4: 0000 unimp + 800045b6: 0000 unimp + 800045b8: 0000 unimp + 800045ba: 0000 unimp + 800045bc: 0000 unimp + 800045be: 0000 unimp + 800045c0: 0000 unimp + 800045c2: 0000 unimp + 800045c4: 0000 unimp + 800045c6: 0000 unimp + 800045c8: 0000 unimp + 800045ca: 0000 unimp + 800045cc: 0000 unimp + 800045ce: 0000 unimp + 800045d0: 0000 unimp + 800045d2: 0000 unimp + 800045d4: 0000 unimp + 800045d6: 0000 unimp + 800045d8: 0000 unimp + 800045da: 0000 unimp + 800045dc: 0000 unimp + 800045de: 0000 unimp + 800045e0: 0000 unimp + 800045e2: 0000 unimp + 800045e4: 0000 unimp + 800045e6: 0000 unimp + 800045e8: 0000 unimp + 800045ea: 0000 unimp + 800045ec: 0000 unimp + 800045ee: 0000 unimp + 800045f0: 0000 unimp + 800045f2: 0000 unimp + 800045f4: 0000 unimp + 800045f6: 0000 unimp + 800045f8: 0000 unimp + 800045fa: 0000 unimp + 800045fc: 0000 unimp + 800045fe: 0000 unimp + 80004600: 0000 unimp + 80004602: 0000 unimp + 80004604: 0000 unimp + 80004606: 0000 unimp + 80004608: 0000 unimp + 8000460a: 0000 unimp + 8000460c: 0000 unimp + 8000460e: 0000 unimp + 80004610: 0000 unimp + 80004612: 0000 unimp + 80004614: 0000 unimp + 80004616: 0000 unimp + 80004618: 0000 unimp + 8000461a: 0000 unimp + 8000461c: 0000 unimp + 8000461e: 0000 unimp + 80004620: 0000 unimp + 80004622: 0000 unimp + 80004624: 0000 unimp + 80004626: 0000 unimp + 80004628: 0000 unimp + 8000462a: 0000 unimp + 8000462c: 0000 unimp + 8000462e: 0000 unimp + 80004630: 0000 unimp + 80004632: 0000 unimp + 80004634: 0000 unimp + 80004636: 0000 unimp + 80004638: 0000 unimp + 8000463a: 0000 unimp + 8000463c: 0000 unimp + 8000463e: 0000 unimp + 80004640: 0000 unimp + 80004642: 0000 unimp + 80004644: 0000 unimp + 80004646: 0000 unimp + 80004648: 0000 unimp + 8000464a: 0000 unimp + 8000464c: 0000 unimp + 8000464e: 0000 unimp + 80004650: 0000 unimp + 80004652: 0000 unimp + 80004654: 0000 unimp + 80004656: 0000 unimp + 80004658: 0000 unimp + 8000465a: 0000 unimp + 8000465c: 0000 unimp + 8000465e: 0000 unimp + 80004660: 0000 unimp + 80004662: 0000 unimp + 80004664: 0000 unimp + 80004666: 0000 unimp + 80004668: 0000 unimp + 8000466a: 0000 unimp + 8000466c: 0000 unimp + 8000466e: 0000 unimp + 80004670: 0000 unimp + 80004672: 0000 unimp + 80004674: 0000 unimp + 80004676: 0000 unimp + 80004678: 0000 unimp + 8000467a: 0000 unimp + 8000467c: 0000 unimp + 8000467e: 0000 unimp + 80004680: 0000 unimp + 80004682: 0000 unimp + 80004684: 0000 unimp + 80004686: 0000 unimp + 80004688: 0000 unimp + 8000468a: 0000 unimp + 8000468c: 0000 unimp + 8000468e: 0000 unimp + 80004690: 0000 unimp + 80004692: 0000 unimp + 80004694: 0000 unimp + 80004696: 0000 unimp + 80004698: 0000 unimp + 8000469a: 0000 unimp + 8000469c: 0000 unimp + 8000469e: 0000 unimp + 800046a0: 0000 unimp + 800046a2: 0000 unimp + 800046a4: 0000 unimp + 800046a6: 0000 unimp + 800046a8: 0000 unimp + 800046aa: 0000 unimp + 800046ac: 0000 unimp + 800046ae: 0000 unimp + 800046b0: 0000 unimp + 800046b2: 0000 unimp + 800046b4: 0000 unimp + 800046b6: 0000 unimp + 800046b8: 0000 unimp + 800046ba: 0000 unimp + 800046bc: 0000 unimp + 800046be: 0000 unimp + 800046c0: 0000 unimp + 800046c2: 0000 unimp + 800046c4: 0000 unimp + 800046c6: 0000 unimp + 800046c8: 0000 unimp + 800046ca: 0000 unimp + 800046cc: 0000 unimp + 800046ce: 0000 unimp + 800046d0: 0000 unimp + 800046d2: 0000 unimp + 800046d4: 0000 unimp + 800046d6: 0000 unimp + 800046d8: 0000 unimp + 800046da: 0000 unimp + 800046dc: 0000 unimp + 800046de: 0000 unimp + 800046e0: 0000 unimp + 800046e2: 0000 unimp + 800046e4: 0000 unimp + 800046e6: 0000 unimp + 800046e8: 0000 unimp + 800046ea: 0000 unimp + 800046ec: 0000 unimp + 800046ee: 0000 unimp + 800046f0: 0000 unimp + 800046f2: 0000 unimp + 800046f4: 0000 unimp + 800046f6: 0000 unimp + 800046f8: 0000 unimp + 800046fa: 0000 unimp + 800046fc: 0000 unimp + 800046fe: 0000 unimp + 80004700: 0000 unimp + 80004702: 0000 unimp + 80004704: 0000 unimp + 80004706: 0000 unimp + 80004708: 0000 unimp + 8000470a: 0000 unimp + 8000470c: 0000 unimp + 8000470e: 0000 unimp + 80004710: 0000 unimp + 80004712: 0000 unimp + 80004714: 0000 unimp + 80004716: 0000 unimp + 80004718: 0000 unimp + 8000471a: 0000 unimp + 8000471c: 0000 unimp + 8000471e: 0000 unimp + 80004720: 0000 unimp + 80004722: 0000 unimp + 80004724: 0000 unimp + 80004726: 0000 unimp + 80004728: 0000 unimp + 8000472a: 0000 unimp + 8000472c: 0000 unimp + 8000472e: 0000 unimp + 80004730: 0000 unimp + 80004732: 0000 unimp + 80004734: 0000 unimp + 80004736: 0000 unimp + 80004738: 0000 unimp + 8000473a: 0000 unimp + 8000473c: 0000 unimp + 8000473e: 0000 unimp + 80004740: 0000 unimp + 80004742: 0000 unimp + 80004744: 0000 unimp + 80004746: 0000 unimp + 80004748: 0000 unimp + 8000474a: 0000 unimp + 8000474c: 0000 unimp + 8000474e: 0000 unimp + 80004750: 0000 unimp + 80004752: 0000 unimp + 80004754: 0000 unimp + 80004756: 0000 unimp + 80004758: 0000 unimp + 8000475a: 0000 unimp + 8000475c: 0000 unimp + 8000475e: 0000 unimp + 80004760: 0000 unimp + 80004762: 0000 unimp + 80004764: 0000 unimp + 80004766: 0000 unimp + 80004768: 0000 unimp + 8000476a: 0000 unimp + 8000476c: 0000 unimp + 8000476e: 0000 unimp + 80004770: 0000 unimp + 80004772: 0000 unimp + 80004774: 0000 unimp + 80004776: 0000 unimp + 80004778: 0000 unimp + 8000477a: 0000 unimp + 8000477c: 0000 unimp + 8000477e: 0000 unimp + 80004780: 0000 unimp + 80004782: 0000 unimp + 80004784: 0000 unimp + 80004786: 0000 unimp + 80004788: 0000 unimp + 8000478a: 0000 unimp + 8000478c: 0000 unimp + 8000478e: 0000 unimp + 80004790: 0000 unimp + 80004792: 0000 unimp + 80004794: 0000 unimp + 80004796: 0000 unimp + 80004798: 0000 unimp + 8000479a: 0000 unimp + 8000479c: 0000 unimp + 8000479e: 0000 unimp + 800047a0: 0000 unimp + 800047a2: 0000 unimp + 800047a4: 0000 unimp + 800047a6: 0000 unimp + 800047a8: 0000 unimp + 800047aa: 0000 unimp + 800047ac: 0000 unimp + 800047ae: 0000 unimp + 800047b0: 0000 unimp + 800047b2: 0000 unimp + 800047b4: 0000 unimp + 800047b6: 0000 unimp + 800047b8: 0000 unimp + 800047ba: 0000 unimp + 800047bc: 0000 unimp + 800047be: 0000 unimp + 800047c0: 0000 unimp + 800047c2: 0000 unimp + 800047c4: 0000 unimp + 800047c6: 0000 unimp + 800047c8: 0000 unimp + 800047ca: 0000 unimp + 800047cc: 0000 unimp + 800047ce: 0000 unimp + 800047d0: 0000 unimp + 800047d2: 0000 unimp + 800047d4: 0000 unimp + 800047d6: 0000 unimp + 800047d8: 0000 unimp + 800047da: 0000 unimp + 800047dc: 0000 unimp + 800047de: 0000 unimp + 800047e0: 0000 unimp + 800047e2: 0000 unimp + 800047e4: 0000 unimp + 800047e6: 0000 unimp + 800047e8: 0000 unimp + 800047ea: 0000 unimp + 800047ec: 0000 unimp + 800047ee: 0000 unimp + 800047f0: 0000 unimp + 800047f2: 0000 unimp + 800047f4: 0000 unimp + 800047f6: 0000 unimp + 800047f8: 0000 unimp + 800047fa: 0000 unimp + 800047fc: 0000 unimp + 800047fe: 0000 unimp + 80004800: 0000 unimp + 80004802: 0000 unimp + 80004804: 0000 unimp + 80004806: 0000 unimp + 80004808: 0000 unimp + 8000480a: 0000 unimp + 8000480c: 0000 unimp + 8000480e: 0000 unimp + 80004810: 0000 unimp + 80004812: 0000 unimp + 80004814: 0000 unimp + 80004816: 0000 unimp + 80004818: 0000 unimp + 8000481a: 0000 unimp + 8000481c: 0000 unimp + 8000481e: 0000 unimp + 80004820: 0000 unimp + 80004822: 0000 unimp + 80004824: 0000 unimp + 80004826: 0000 unimp + 80004828: 0000 unimp + 8000482a: 0000 unimp + 8000482c: 0000 unimp + 8000482e: 0000 unimp + 80004830: 0000 unimp + 80004832: 0000 unimp + 80004834: 0000 unimp + 80004836: 0000 unimp + 80004838: 0000 unimp + 8000483a: 0000 unimp + 8000483c: 0000 unimp + 8000483e: 0000 unimp + 80004840: 0000 unimp + 80004842: 0000 unimp + 80004844: 0000 unimp + 80004846: 0000 unimp + 80004848: 0000 unimp + 8000484a: 0000 unimp + 8000484c: 0000 unimp + 8000484e: 0000 unimp + 80004850: 0000 unimp + 80004852: 0000 unimp + 80004854: 0000 unimp + 80004856: 0000 unimp + 80004858: 0000 unimp + 8000485a: 0000 unimp + 8000485c: 0000 unimp + 8000485e: 0000 unimp + 80004860: 0000 unimp + 80004862: 0000 unimp + 80004864: 0000 unimp + 80004866: 0000 unimp + 80004868: 0000 unimp + 8000486a: 0000 unimp + 8000486c: 0000 unimp + 8000486e: 0000 unimp + 80004870: 0000 unimp + 80004872: 0000 unimp + 80004874: 0000 unimp + 80004876: 0000 unimp + 80004878: 0000 unimp + 8000487a: 0000 unimp + 8000487c: 0000 unimp + 8000487e: 0000 unimp + 80004880: 0000 unimp + 80004882: 0000 unimp + 80004884: 0000 unimp + 80004886: 0000 unimp + 80004888: 0000 unimp + 8000488a: 0000 unimp + 8000488c: 0000 unimp + 8000488e: 0000 unimp + 80004890: 0000 unimp + 80004892: 0000 unimp + 80004894: 0000 unimp + 80004896: 0000 unimp + 80004898: 0000 unimp + 8000489a: 0000 unimp + 8000489c: 0000 unimp + 8000489e: 0000 unimp + 800048a0: 0000 unimp + 800048a2: 0000 unimp + 800048a4: 0000 unimp + 800048a6: 0000 unimp + 800048a8: 0000 unimp + 800048aa: 0000 unimp + 800048ac: 0000 unimp + 800048ae: 0000 unimp + 800048b0: 0000 unimp + 800048b2: 0000 unimp + 800048b4: 0000 unimp + 800048b6: 0000 unimp + 800048b8: 0000 unimp + 800048ba: 0000 unimp + 800048bc: 0000 unimp + 800048be: 0000 unimp + 800048c0: 0000 unimp + 800048c2: 0000 unimp + 800048c4: 0000 unimp + 800048c6: 0000 unimp + 800048c8: 0000 unimp + 800048ca: 0000 unimp + 800048cc: 0000 unimp + 800048ce: 0000 unimp + 800048d0: 0000 unimp + 800048d2: 0000 unimp + 800048d4: 0000 unimp + 800048d6: 0000 unimp + 800048d8: 0000 unimp + 800048da: 0000 unimp + 800048dc: 0000 unimp + 800048de: 0000 unimp + 800048e0: 0000 unimp + 800048e2: 0000 unimp + 800048e4: 0000 unimp + 800048e6: 0000 unimp + 800048e8: 0000 unimp + 800048ea: 0000 unimp + 800048ec: 0000 unimp + 800048ee: 0000 unimp + 800048f0: 0000 unimp + 800048f2: 0000 unimp + 800048f4: 0000 unimp + 800048f6: 0000 unimp + 800048f8: 0000 unimp + 800048fa: 0000 unimp + 800048fc: 0000 unimp + 800048fe: 0000 unimp + 80004900: 0000 unimp + 80004902: 0000 unimp + 80004904: 0000 unimp + 80004906: 0000 unimp + 80004908: 0000 unimp + 8000490a: 0000 unimp + 8000490c: 0000 unimp + 8000490e: 0000 unimp + 80004910: 0000 unimp + 80004912: 0000 unimp + 80004914: 0000 unimp + 80004916: 0000 unimp + 80004918: 0000 unimp + 8000491a: 0000 unimp + 8000491c: 0000 unimp + 8000491e: 0000 unimp + 80004920: 0000 unimp + 80004922: 0000 unimp + 80004924: 0000 unimp + 80004926: 0000 unimp + 80004928: 0000 unimp + 8000492a: 0000 unimp + 8000492c: 0000 unimp + 8000492e: 0000 unimp + 80004930: 0000 unimp + 80004932: 0000 unimp + 80004934: 0000 unimp + 80004936: 0000 unimp + 80004938: 0000 unimp + 8000493a: 0000 unimp + 8000493c: 0000 unimp + 8000493e: 0000 unimp + 80004940: 0000 unimp + 80004942: 0000 unimp + 80004944: 0000 unimp + 80004946: 0000 unimp + 80004948: 0000 unimp + 8000494a: 0000 unimp + 8000494c: 0000 unimp + 8000494e: 0000 unimp + 80004950: 0000 unimp + 80004952: 0000 unimp + 80004954: 0000 unimp + 80004956: 0000 unimp + 80004958: 0000 unimp + 8000495a: 0000 unimp + 8000495c: 0000 unimp + 8000495e: 0000 unimp + 80004960: 0000 unimp + 80004962: 0000 unimp + 80004964: 0000 unimp + 80004966: 0000 unimp + 80004968: 0000 unimp + 8000496a: 0000 unimp + 8000496c: 0000 unimp + 8000496e: 0000 unimp + 80004970: 0000 unimp + 80004972: 0000 unimp + 80004974: 0000 unimp + 80004976: 0000 unimp + 80004978: 0000 unimp + 8000497a: 0000 unimp + 8000497c: 0000 unimp + 8000497e: 0000 unimp + 80004980: 0000 unimp + 80004982: 0000 unimp + 80004984: 0000 unimp + 80004986: 0000 unimp + 80004988: 0000 unimp + 8000498a: 0000 unimp + 8000498c: 0000 unimp + 8000498e: 0000 unimp + 80004990: 0000 unimp + 80004992: 0000 unimp + 80004994: 0000 unimp + 80004996: 0000 unimp + 80004998: 0000 unimp + 8000499a: 0000 unimp + 8000499c: 0000 unimp + 8000499e: 0000 unimp + 800049a0: 0000 unimp + 800049a2: 0000 unimp + 800049a4: 0000 unimp + 800049a6: 0000 unimp + 800049a8: 0000 unimp + 800049aa: 0000 unimp + 800049ac: 0000 unimp + 800049ae: 0000 unimp + 800049b0: 0000 unimp + 800049b2: 0000 unimp + 800049b4: 0000 unimp + 800049b6: 0000 unimp + 800049b8: 0000 unimp + 800049ba: 0000 unimp + 800049bc: 0000 unimp + 800049be: 0000 unimp + 800049c0: 0000 unimp + 800049c2: 0000 unimp + 800049c4: 0000 unimp + 800049c6: 0000 unimp + 800049c8: 0000 unimp + 800049ca: 0000 unimp + 800049cc: 0000 unimp + 800049ce: 0000 unimp + 800049d0: 0000 unimp + 800049d2: 0000 unimp + 800049d4: 0000 unimp + 800049d6: 0000 unimp + 800049d8: 0000 unimp + 800049da: 0000 unimp + 800049dc: 0000 unimp + 800049de: 0000 unimp + 800049e0: 0000 unimp + 800049e2: 0000 unimp + 800049e4: 0000 unimp + 800049e6: 0000 unimp + 800049e8: 0000 unimp + 800049ea: 0000 unimp + 800049ec: 0000 unimp + 800049ee: 0000 unimp + 800049f0: 0000 unimp + 800049f2: 0000 unimp + 800049f4: 0000 unimp + 800049f6: 0000 unimp + 800049f8: 0000 unimp + 800049fa: 0000 unimp + 800049fc: 0000 unimp + 800049fe: 0000 unimp + 80004a00: 0000 unimp + 80004a02: 0000 unimp + 80004a04: 0000 unimp + 80004a06: 0000 unimp + 80004a08: 0000 unimp + 80004a0a: 0000 unimp + 80004a0c: 0000 unimp + 80004a0e: 0000 unimp + 80004a10: 0000 unimp + 80004a12: 0000 unimp + 80004a14: 0000 unimp + 80004a16: 0000 unimp + 80004a18: 0000 unimp + 80004a1a: 0000 unimp + 80004a1c: 0000 unimp + 80004a1e: 0000 unimp + 80004a20: 0000 unimp + 80004a22: 0000 unimp + 80004a24: 0000 unimp + 80004a26: 0000 unimp + 80004a28: 0000 unimp + 80004a2a: 0000 unimp + 80004a2c: 0000 unimp + 80004a2e: 0000 unimp + 80004a30: 0000 unimp + 80004a32: 0000 unimp + 80004a34: 0000 unimp + 80004a36: 0000 unimp + 80004a38: 0000 unimp + 80004a3a: 0000 unimp + 80004a3c: 0000 unimp + 80004a3e: 0000 unimp + 80004a40: 0000 unimp + 80004a42: 0000 unimp + 80004a44: 0000 unimp + 80004a46: 0000 unimp + 80004a48: 0000 unimp + 80004a4a: 0000 unimp + 80004a4c: 0000 unimp + 80004a4e: 0000 unimp + 80004a50: 0000 unimp + 80004a52: 0000 unimp + 80004a54: 0000 unimp + 80004a56: 0000 unimp + 80004a58: 0000 unimp + 80004a5a: 0000 unimp + 80004a5c: 0000 unimp + 80004a5e: 0000 unimp + 80004a60: 0000 unimp + 80004a62: 0000 unimp + 80004a64: 0000 unimp + 80004a66: 0000 unimp + 80004a68: 0000 unimp + 80004a6a: 0000 unimp + 80004a6c: 0000 unimp + 80004a6e: 0000 unimp + 80004a70: 0000 unimp + 80004a72: 0000 unimp + 80004a74: 0000 unimp + 80004a76: 0000 unimp + 80004a78: 0000 unimp + 80004a7a: 0000 unimp + 80004a7c: 0000 unimp + 80004a7e: 0000 unimp + 80004a80: 0000 unimp + 80004a82: 0000 unimp + 80004a84: 0000 unimp + 80004a86: 0000 unimp + 80004a88: 0000 unimp + 80004a8a: 0000 unimp + 80004a8c: 0000 unimp + 80004a8e: 0000 unimp + 80004a90: 0000 unimp + 80004a92: 0000 unimp + 80004a94: 0000 unimp + 80004a96: 0000 unimp + 80004a98: 0000 unimp + 80004a9a: 0000 unimp + 80004a9c: 0000 unimp + 80004a9e: 0000 unimp + 80004aa0: 0000 unimp + 80004aa2: 0000 unimp + 80004aa4: 0000 unimp + 80004aa6: 0000 unimp + 80004aa8: 0000 unimp + 80004aaa: 0000 unimp + 80004aac: 0000 unimp + 80004aae: 0000 unimp + 80004ab0: 0000 unimp + 80004ab2: 0000 unimp + 80004ab4: 0000 unimp + 80004ab6: 0000 unimp + 80004ab8: 0000 unimp + 80004aba: 0000 unimp + 80004abc: 0000 unimp + 80004abe: 0000 unimp + 80004ac0: 0000 unimp + 80004ac2: 0000 unimp + 80004ac4: 0000 unimp + 80004ac6: 0000 unimp + 80004ac8: 0000 unimp + 80004aca: 0000 unimp + 80004acc: 0000 unimp + 80004ace: 0000 unimp + 80004ad0: 0000 unimp + 80004ad2: 0000 unimp + 80004ad4: 0000 unimp + 80004ad6: 0000 unimp + 80004ad8: 0000 unimp + 80004ada: 0000 unimp + 80004adc: 0000 unimp + 80004ade: 0000 unimp + 80004ae0: 0000 unimp + 80004ae2: 0000 unimp + 80004ae4: 0000 unimp + 80004ae6: 0000 unimp + 80004ae8: 0000 unimp + 80004aea: 0000 unimp + 80004aec: 0000 unimp + 80004aee: 0000 unimp + 80004af0: 0000 unimp + 80004af2: 0000 unimp + 80004af4: 0000 unimp + 80004af6: 0000 unimp + 80004af8: 0000 unimp + 80004afa: 0000 unimp + 80004afc: 0000 unimp + 80004afe: 0000 unimp + 80004b00: 0000 unimp + 80004b02: 0000 unimp + 80004b04: 0000 unimp + 80004b06: 0000 unimp + 80004b08: 0000 unimp + 80004b0a: 0000 unimp + 80004b0c: 0000 unimp + 80004b0e: 0000 unimp + 80004b10: 0000 unimp + 80004b12: 0000 unimp + 80004b14: 0000 unimp + 80004b16: 0000 unimp + 80004b18: 0000 unimp + 80004b1a: 0000 unimp + 80004b1c: 0000 unimp + 80004b1e: 0000 unimp + 80004b20: 0000 unimp + 80004b22: 0000 unimp + 80004b24: 0000 unimp + 80004b26: 0000 unimp + 80004b28: 0000 unimp + 80004b2a: 0000 unimp + 80004b2c: 0000 unimp + 80004b2e: 0000 unimp + 80004b30: 0000 unimp + 80004b32: 0000 unimp + 80004b34: 0000 unimp + 80004b36: 0000 unimp + 80004b38: 0000 unimp + 80004b3a: 0000 unimp + 80004b3c: 0000 unimp + 80004b3e: 0000 unimp + 80004b40: 0000 unimp + 80004b42: 0000 unimp + 80004b44: 0000 unimp + 80004b46: 0000 unimp + 80004b48: 0000 unimp + 80004b4a: 0000 unimp + 80004b4c: 0000 unimp + 80004b4e: 0000 unimp + 80004b50: 0000 unimp + 80004b52: 0000 unimp + 80004b54: 0000 unimp + 80004b56: 0000 unimp + 80004b58: 0000 unimp + 80004b5a: 0000 unimp + 80004b5c: 0000 unimp + 80004b5e: 0000 unimp + 80004b60: 0000 unimp + 80004b62: 0000 unimp + 80004b64: 0000 unimp + 80004b66: 0000 unimp + 80004b68: 0000 unimp + 80004b6a: 0000 unimp + 80004b6c: 0000 unimp + 80004b6e: 0000 unimp + 80004b70: 0000 unimp + 80004b72: 0000 unimp + 80004b74: 0000 unimp + 80004b76: 0000 unimp + 80004b78: 0000 unimp + 80004b7a: 0000 unimp + 80004b7c: 0000 unimp + 80004b7e: 0000 unimp + 80004b80: 0000 unimp + 80004b82: 0000 unimp + 80004b84: 0000 unimp + 80004b86: 0000 unimp + 80004b88: 0000 unimp + 80004b8a: 0000 unimp + 80004b8c: 0000 unimp + 80004b8e: 0000 unimp + 80004b90: 0000 unimp + 80004b92: 0000 unimp + 80004b94: 0000 unimp + 80004b96: 0000 unimp + 80004b98: 0000 unimp + 80004b9a: 0000 unimp + 80004b9c: 0000 unimp + 80004b9e: 0000 unimp + 80004ba0: 0000 unimp + 80004ba2: 0000 unimp + 80004ba4: 0000 unimp + 80004ba6: 0000 unimp + 80004ba8: 0000 unimp + 80004baa: 0000 unimp + 80004bac: 0000 unimp + 80004bae: 0000 unimp + 80004bb0: 0000 unimp + 80004bb2: 0000 unimp + 80004bb4: 0000 unimp + 80004bb6: 0000 unimp + 80004bb8: 0000 unimp + 80004bba: 0000 unimp + 80004bbc: 0000 unimp + 80004bbe: 0000 unimp + 80004bc0: 0000 unimp + 80004bc2: 0000 unimp + 80004bc4: 0000 unimp + 80004bc6: 0000 unimp + 80004bc8: 0000 unimp + 80004bca: 0000 unimp + 80004bcc: 0000 unimp + 80004bce: 0000 unimp + 80004bd0: 0000 unimp + 80004bd2: 0000 unimp + 80004bd4: 0000 unimp + 80004bd6: 0000 unimp + 80004bd8: 0000 unimp + 80004bda: 0000 unimp + 80004bdc: 0000 unimp + 80004bde: 0000 unimp + 80004be0: 0000 unimp + 80004be2: 0000 unimp + 80004be4: 0000 unimp + 80004be6: 0000 unimp + 80004be8: 0000 unimp + 80004bea: 0000 unimp + 80004bec: 0000 unimp + 80004bee: 0000 unimp + 80004bf0: 0000 unimp + 80004bf2: 0000 unimp + 80004bf4: 0000 unimp + 80004bf6: 0000 unimp + 80004bf8: 0000 unimp + 80004bfa: 0000 unimp + 80004bfc: 0000 unimp + 80004bfe: 0000 unimp + 80004c00: 0000 unimp + 80004c02: 0000 unimp + 80004c04: 0000 unimp + 80004c06: 0000 unimp + 80004c08: 0000 unimp + 80004c0a: 0000 unimp + 80004c0c: 0000 unimp + 80004c0e: 0000 unimp + 80004c10: 0000 unimp + 80004c12: 0000 unimp + 80004c14: 0000 unimp + 80004c16: 0000 unimp + 80004c18: 0000 unimp + 80004c1a: 0000 unimp + 80004c1c: 0000 unimp + 80004c1e: 0000 unimp + 80004c20: 0000 unimp + 80004c22: 0000 unimp + 80004c24: 0000 unimp + 80004c26: 0000 unimp + 80004c28: 0000 unimp + 80004c2a: 0000 unimp + 80004c2c: 0000 unimp + 80004c2e: 0000 unimp + 80004c30: 0000 unimp + 80004c32: 0000 unimp + 80004c34: 0000 unimp + 80004c36: 0000 unimp + 80004c38: 0000 unimp + 80004c3a: 0000 unimp + 80004c3c: 0000 unimp + 80004c3e: 0000 unimp + 80004c40: 0000 unimp + 80004c42: 0000 unimp + 80004c44: 0000 unimp + 80004c46: 0000 unimp + 80004c48: 0000 unimp + 80004c4a: 0000 unimp + 80004c4c: 0000 unimp + 80004c4e: 0000 unimp + 80004c50: 0000 unimp + 80004c52: 0000 unimp + 80004c54: 0000 unimp + 80004c56: 0000 unimp + 80004c58: 0000 unimp + 80004c5a: 0000 unimp + 80004c5c: 0000 unimp + 80004c5e: 0000 unimp + 80004c60: 0000 unimp + 80004c62: 0000 unimp + 80004c64: 0000 unimp + 80004c66: 0000 unimp + 80004c68: 0000 unimp + 80004c6a: 0000 unimp + 80004c6c: 0000 unimp + 80004c6e: 0000 unimp + 80004c70: 0000 unimp + 80004c72: 0000 unimp + 80004c74: 0000 unimp + 80004c76: 0000 unimp + 80004c78: 0000 unimp + 80004c7a: 0000 unimp + 80004c7c: 0000 unimp + 80004c7e: 0000 unimp + 80004c80: 0000 unimp + 80004c82: 0000 unimp + 80004c84: 0000 unimp + 80004c86: 0000 unimp + 80004c88: 0000 unimp + 80004c8a: 0000 unimp + 80004c8c: 0000 unimp + 80004c8e: 0000 unimp + 80004c90: 0000 unimp + 80004c92: 0000 unimp + 80004c94: 0000 unimp + 80004c96: 0000 unimp + 80004c98: 0000 unimp + 80004c9a: 0000 unimp + 80004c9c: 0000 unimp + 80004c9e: 0000 unimp + 80004ca0: 0000 unimp + 80004ca2: 0000 unimp + 80004ca4: 0000 unimp + 80004ca6: 0000 unimp + 80004ca8: 0000 unimp + 80004caa: 0000 unimp + 80004cac: 0000 unimp + 80004cae: 0000 unimp + 80004cb0: 0000 unimp + 80004cb2: 0000 unimp + 80004cb4: 0000 unimp + 80004cb6: 0000 unimp + 80004cb8: 0000 unimp + 80004cba: 0000 unimp + 80004cbc: 0000 unimp + 80004cbe: 0000 unimp + 80004cc0: 0000 unimp + 80004cc2: 0000 unimp + 80004cc4: 0000 unimp + 80004cc6: 0000 unimp + 80004cc8: 0000 unimp + 80004cca: 0000 unimp + 80004ccc: 0000 unimp + 80004cce: 0000 unimp + 80004cd0: 0000 unimp + 80004cd2: 0000 unimp + 80004cd4: 0000 unimp + 80004cd6: 0000 unimp + 80004cd8: 0000 unimp + 80004cda: 0000 unimp + 80004cdc: 0000 unimp + 80004cde: 0000 unimp + 80004ce0: 0000 unimp + 80004ce2: 0000 unimp + 80004ce4: 0000 unimp + 80004ce6: 0000 unimp + 80004ce8: 0000 unimp + 80004cea: 0000 unimp + 80004cec: 0000 unimp + 80004cee: 0000 unimp + 80004cf0: 0000 unimp + 80004cf2: 0000 unimp + 80004cf4: 0000 unimp + 80004cf6: 0000 unimp + 80004cf8: 0000 unimp + 80004cfa: 0000 unimp + 80004cfc: 0000 unimp + 80004cfe: 0000 unimp + 80004d00: 0000 unimp + 80004d02: 0000 unimp + 80004d04: 0000 unimp + 80004d06: 0000 unimp + 80004d08: 0000 unimp + 80004d0a: 0000 unimp + 80004d0c: 0000 unimp + 80004d0e: 0000 unimp + 80004d10: 0000 unimp + 80004d12: 0000 unimp + 80004d14: 0000 unimp + 80004d16: 0000 unimp + 80004d18: 0000 unimp + 80004d1a: 0000 unimp + 80004d1c: 0000 unimp + 80004d1e: 0000 unimp + 80004d20: 0000 unimp + 80004d22: 0000 unimp + 80004d24: 0000 unimp + 80004d26: 0000 unimp + 80004d28: 0000 unimp + 80004d2a: 0000 unimp + 80004d2c: 0000 unimp + 80004d2e: 0000 unimp + 80004d30: 0000 unimp + 80004d32: 0000 unimp + 80004d34: 0000 unimp + 80004d36: 0000 unimp + 80004d38: 0000 unimp + 80004d3a: 0000 unimp + 80004d3c: 0000 unimp + 80004d3e: 0000 unimp + 80004d40: 0000 unimp + 80004d42: 0000 unimp + 80004d44: 0000 unimp + 80004d46: 0000 unimp + 80004d48: 0000 unimp + 80004d4a: 0000 unimp + 80004d4c: 0000 unimp + 80004d4e: 0000 unimp + 80004d50: 0000 unimp + 80004d52: 0000 unimp + 80004d54: 0000 unimp + 80004d56: 0000 unimp + 80004d58: 0000 unimp + 80004d5a: 0000 unimp + 80004d5c: 0000 unimp + 80004d5e: 0000 unimp + 80004d60: 0000 unimp + 80004d62: 0000 unimp + 80004d64: 0000 unimp + 80004d66: 0000 unimp + 80004d68: 0000 unimp + 80004d6a: 0000 unimp + 80004d6c: 0000 unimp + 80004d6e: 0000 unimp + 80004d70: 0000 unimp + 80004d72: 0000 unimp + 80004d74: 0000 unimp + 80004d76: 0000 unimp + 80004d78: 0000 unimp + 80004d7a: 0000 unimp + 80004d7c: 0000 unimp + 80004d7e: 0000 unimp + 80004d80: 0000 unimp + 80004d82: 0000 unimp + 80004d84: 0000 unimp + 80004d86: 0000 unimp + 80004d88: 0000 unimp + 80004d8a: 0000 unimp + 80004d8c: 0000 unimp + 80004d8e: 0000 unimp + 80004d90: 0000 unimp + 80004d92: 0000 unimp + 80004d94: 0000 unimp + 80004d96: 0000 unimp + 80004d98: 0000 unimp + 80004d9a: 0000 unimp + 80004d9c: 0000 unimp + 80004d9e: 0000 unimp + 80004da0: 0000 unimp + 80004da2: 0000 unimp + 80004da4: 0000 unimp + 80004da6: 0000 unimp + 80004da8: 0000 unimp + 80004daa: 0000 unimp + 80004dac: 0000 unimp + 80004dae: 0000 unimp + 80004db0: 0000 unimp + 80004db2: 0000 unimp + 80004db4: 0000 unimp + 80004db6: 0000 unimp + 80004db8: 0000 unimp + 80004dba: 0000 unimp + 80004dbc: 0000 unimp + 80004dbe: 0000 unimp + 80004dc0: 0000 unimp + 80004dc2: 0000 unimp + 80004dc4: 0000 unimp + 80004dc6: 0000 unimp + 80004dc8: 0000 unimp + 80004dca: 0000 unimp + 80004dcc: 0000 unimp + 80004dce: 0000 unimp + 80004dd0: 0000 unimp + 80004dd2: 0000 unimp + 80004dd4: 0000 unimp + 80004dd6: 0000 unimp + 80004dd8: 0000 unimp + 80004dda: 0000 unimp + 80004ddc: 0000 unimp + 80004dde: 0000 unimp + 80004de0: 0000 unimp + 80004de2: 0000 unimp + 80004de4: 0000 unimp + 80004de6: 0000 unimp + 80004de8: 0000 unimp + 80004dea: 0000 unimp + 80004dec: 0000 unimp + 80004dee: 0000 unimp + 80004df0: 0000 unimp + 80004df2: 0000 unimp + 80004df4: 0000 unimp + 80004df6: 0000 unimp + 80004df8: 0000 unimp + 80004dfa: 0000 unimp + 80004dfc: 0000 unimp + 80004dfe: 0000 unimp + 80004e00: 0000 unimp + 80004e02: 0000 unimp + 80004e04: 0000 unimp + 80004e06: 0000 unimp + 80004e08: 0000 unimp + 80004e0a: 0000 unimp + 80004e0c: 0000 unimp + 80004e0e: 0000 unimp + 80004e10: 0000 unimp + 80004e12: 0000 unimp + 80004e14: 0000 unimp + 80004e16: 0000 unimp + 80004e18: 0000 unimp + 80004e1a: 0000 unimp + 80004e1c: 0000 unimp + 80004e1e: 0000 unimp + 80004e20: 0000 unimp + 80004e22: 0000 unimp + 80004e24: 0000 unimp + 80004e26: 0000 unimp + 80004e28: 0000 unimp + 80004e2a: 0000 unimp + 80004e2c: 0000 unimp + 80004e2e: 0000 unimp + 80004e30: 0000 unimp + 80004e32: 0000 unimp + 80004e34: 0000 unimp + 80004e36: 0000 unimp + 80004e38: 0000 unimp + 80004e3a: 0000 unimp + 80004e3c: 0000 unimp + 80004e3e: 0000 unimp + 80004e40: 0000 unimp + 80004e42: 0000 unimp + 80004e44: 0000 unimp + 80004e46: 0000 unimp + 80004e48: 0000 unimp + 80004e4a: 0000 unimp + 80004e4c: 0000 unimp + 80004e4e: 0000 unimp + 80004e50: 0000 unimp + 80004e52: 0000 unimp + 80004e54: 0000 unimp + 80004e56: 0000 unimp + 80004e58: 0000 unimp + 80004e5a: 0000 unimp + 80004e5c: 0000 unimp + 80004e5e: 0000 unimp + 80004e60: 0000 unimp + 80004e62: 0000 unimp + 80004e64: 0000 unimp + 80004e66: 0000 unimp + 80004e68: 0000 unimp + 80004e6a: 0000 unimp + 80004e6c: 0000 unimp + 80004e6e: 0000 unimp + 80004e70: 0000 unimp + 80004e72: 0000 unimp + 80004e74: 0000 unimp + 80004e76: 0000 unimp + 80004e78: 0000 unimp + 80004e7a: 0000 unimp + 80004e7c: 0000 unimp + 80004e7e: 0000 unimp + 80004e80: 0000 unimp + 80004e82: 0000 unimp + 80004e84: 0000 unimp + 80004e86: 0000 unimp + 80004e88: 0000 unimp + 80004e8a: 0000 unimp + 80004e8c: 0000 unimp + 80004e8e: 0000 unimp + 80004e90: 0000 unimp + 80004e92: 0000 unimp + 80004e94: 0000 unimp + 80004e96: 0000 unimp + 80004e98: 0000 unimp + 80004e9a: 0000 unimp + 80004e9c: 0000 unimp + 80004e9e: 0000 unimp + 80004ea0: 0000 unimp + 80004ea2: 0000 unimp + 80004ea4: 0000 unimp + 80004ea6: 0000 unimp + 80004ea8: 0000 unimp + 80004eaa: 0000 unimp + 80004eac: 0000 unimp + 80004eae: 0000 unimp + 80004eb0: 0000 unimp + 80004eb2: 0000 unimp + 80004eb4: 0000 unimp + 80004eb6: 0000 unimp + 80004eb8: 0000 unimp + 80004eba: 0000 unimp + 80004ebc: 0000 unimp + 80004ebe: 0000 unimp + 80004ec0: 0000 unimp + 80004ec2: 0000 unimp + 80004ec4: 0000 unimp + 80004ec6: 0000 unimp + 80004ec8: 0000 unimp + 80004eca: 0000 unimp + 80004ecc: 0000 unimp + 80004ece: 0000 unimp + 80004ed0: 0000 unimp + 80004ed2: 0000 unimp + 80004ed4: 0000 unimp + 80004ed6: 0000 unimp + 80004ed8: 0000 unimp + 80004eda: 0000 unimp + 80004edc: 0000 unimp + 80004ede: 0000 unimp + 80004ee0: 0000 unimp + 80004ee2: 0000 unimp + 80004ee4: 0000 unimp + 80004ee6: 0000 unimp + 80004ee8: 0000 unimp + 80004eea: 0000 unimp + 80004eec: 0000 unimp + 80004eee: 0000 unimp + 80004ef0: 0000 unimp + 80004ef2: 0000 unimp + 80004ef4: 0000 unimp + 80004ef6: 0000 unimp + 80004ef8: 0000 unimp + 80004efa: 0000 unimp + 80004efc: 0000 unimp + 80004efe: 0000 unimp + 80004f00: 0000 unimp + 80004f02: 0000 unimp + 80004f04: 0000 unimp + 80004f06: 0000 unimp + 80004f08: 0000 unimp + 80004f0a: 0000 unimp + 80004f0c: 0000 unimp + 80004f0e: 0000 unimp + 80004f10: 0000 unimp + 80004f12: 0000 unimp + 80004f14: 0000 unimp + 80004f16: 0000 unimp + 80004f18: 0000 unimp + 80004f1a: 0000 unimp + 80004f1c: 0000 unimp + 80004f1e: 0000 unimp + 80004f20: 0000 unimp + 80004f22: 0000 unimp + 80004f24: 0000 unimp + 80004f26: 0000 unimp + 80004f28: 0000 unimp + 80004f2a: 0000 unimp + 80004f2c: 0000 unimp + 80004f2e: 0000 unimp + 80004f30: 0000 unimp + 80004f32: 0000 unimp + 80004f34: 0000 unimp + 80004f36: 0000 unimp + 80004f38: 0000 unimp + 80004f3a: 0000 unimp + 80004f3c: 0000 unimp + 80004f3e: 0000 unimp + 80004f40: 0000 unimp + 80004f42: 0000 unimp + 80004f44: 0000 unimp + 80004f46: 0000 unimp + 80004f48: 0000 unimp + 80004f4a: 0000 unimp + 80004f4c: 0000 unimp + 80004f4e: 0000 unimp + 80004f50: 0000 unimp + 80004f52: 0000 unimp + 80004f54: 0000 unimp + 80004f56: 0000 unimp + 80004f58: 0000 unimp + 80004f5a: 0000 unimp + 80004f5c: 0000 unimp + 80004f5e: 0000 unimp + 80004f60: 0000 unimp + 80004f62: 0000 unimp + 80004f64: 0000 unimp + 80004f66: 0000 unimp + 80004f68: 0000 unimp + 80004f6a: 0000 unimp + 80004f6c: 0000 unimp + 80004f6e: 0000 unimp + 80004f70: 0000 unimp + 80004f72: 0000 unimp + 80004f74: 0000 unimp + 80004f76: 0000 unimp + 80004f78: 0000 unimp + 80004f7a: 0000 unimp + 80004f7c: 0000 unimp + 80004f7e: 0000 unimp + 80004f80: 0000 unimp + 80004f82: 0000 unimp + 80004f84: 0000 unimp + 80004f86: 0000 unimp + 80004f88: 0000 unimp + 80004f8a: 0000 unimp + 80004f8c: 0000 unimp + 80004f8e: 0000 unimp + 80004f90: 0000 unimp + 80004f92: 0000 unimp + 80004f94: 0000 unimp + 80004f96: 0000 unimp + 80004f98: 0000 unimp + 80004f9a: 0000 unimp + 80004f9c: 0000 unimp + 80004f9e: 0000 unimp + 80004fa0: 0000 unimp + 80004fa2: 0000 unimp + 80004fa4: 0000 unimp + 80004fa6: 0000 unimp + 80004fa8: 0000 unimp + 80004faa: 0000 unimp + 80004fac: 0000 unimp + 80004fae: 0000 unimp + 80004fb0: 0000 unimp + 80004fb2: 0000 unimp + 80004fb4: 0000 unimp + 80004fb6: 0000 unimp + 80004fb8: 0000 unimp + 80004fba: 0000 unimp + 80004fbc: 0000 unimp + 80004fbe: 0000 unimp + 80004fc0: 0000 unimp + 80004fc2: 0000 unimp + 80004fc4: 0000 unimp + 80004fc6: 0000 unimp + 80004fc8: 0000 unimp + 80004fca: 0000 unimp + 80004fcc: 0000 unimp + 80004fce: 0000 unimp + 80004fd0: 0000 unimp + 80004fd2: 0000 unimp + 80004fd4: 0000 unimp + 80004fd6: 0000 unimp + 80004fd8: 0000 unimp + 80004fda: 0000 unimp + 80004fdc: 0000 unimp + 80004fde: 0000 unimp + 80004fe0: 0000 unimp + 80004fe2: 0000 unimp + 80004fe4: 0000 unimp + 80004fe6: 0000 unimp + 80004fe8: 0000 unimp + 80004fea: 0000 unimp + 80004fec: 0000 unimp + 80004fee: 0000 unimp + 80004ff0: 0000 unimp + 80004ff2: 0000 unimp + 80004ff4: 0000 unimp + 80004ff6: 0000 unimp + 80004ff8: 0000 unimp + 80004ffa: 0000 unimp + 80004ffc: 0000 unimp + 80004ffe: 00158593 addi a1,a1,1 + 80005002: 29b00e93 li t4,667 + 80005006: 00200193 li gp,2 + 8000500a: 2dd59163 bne a1,t4,800052cc + 8000500e: 00001137 lui sp,0x1 + 80005012: 2341011b addiw sp,sp,564 + +0000000080005016 : + 80005016: 1fe8 addi a0,sp,1020 + 80005018: 00001eb7 lui t4,0x1 + 8000501c: 630e8e9b addiw t4,t4,1584 + 80005020: 00300193 li gp,3 + 80005024: 2bd51463 bne a0,t4,800052cc + +0000000080005028 : + 80005028: 617d addi sp,sp,496 + 8000502a: 0001 nop + 8000502c: 00001eb7 lui t4,0x1 + 80005030: 424e8e9b addiw t4,t4,1060 + 80005034: 00400193 li gp,4 + 80005038: 29d11a63 bne sp,t4,800052cc + +000000008000503c : + 8000503c: 7101 addi sp,sp,-512 + 8000503e: 0001 nop + 80005040: 00001eb7 lui t4,0x1 + 80005044: 224e8e9b addiw t4,t4,548 + 80005048: 00500193 li gp,5 + 8000504c: 29d11063 bne sp,t4,800052cc + 80005050: ffffe597 auipc a1,0xffffe + 80005054: fc058593 addi a1,a1,-64 # 80003010 + +0000000080005058 : + 80005058: 41c8 lw a0,4(a1) + 8000505a: 0505 addi a0,a0,1 + 8000505c: c1c8 sw a0,4(a1) + 8000505e: 41d0 lw a2,4(a1) + 80005060: fedcceb7 lui t4,0xfedcc + 80005064: a99e8e9b addiw t4,t4,-1383 + 80005068: 00600193 li gp,6 + 8000506c: 27d61063 bne a2,t4,800052cc + +0000000080005070 : + 80005070: 6188 ld a0,0(a1) + 80005072: 0505 addi a0,a0,1 + 80005074: e188 sd a0,0(a1) + 80005076: 6190 ld a2,0(a1) + 80005078: fff6eeb7 lui t4,0xfff6e + 8000507c: 5d5e8e9b addiw t4,t4,1493 + 80005080: 00ce9e93 slli t4,t4,0xc + 80005084: cbbe8e93 addi t4,t4,-837 # fffffffffff6dcbb <_end+0xffffffff7ff624cb> + 80005088: 00de9e93 slli t4,t4,0xd + 8000508c: 543e8e93 addi t4,t4,1347 + 80005090: 00ce9e93 slli t4,t4,0xc + 80005094: 211e8e93 addi t4,t4,529 + 80005098: 00700193 li gp,7 + 8000509c: 23d61863 bne a2,t4,800052cc + +00000000800050a0 : + 800050a0: 00106513 ori a0,zero,1 + 800050a4: 1541 addi a0,a0,-16 + 800050a6: 0001 nop + 800050a8: ff100e93 li t4,-15 + 800050ac: 00800193 li gp,8 + 800050b0: 21d51e63 bne a0,t4,800052cc + +00000000800050b4 : + 800050b4: 00106793 ori a5,zero,1 + 800050b8: 57c1 li a5,-16 + 800050ba: 0001 nop + 800050bc: ff000e93 li t4,-16 + 800050c0: 00900193 li gp,9 + 800050c4: 21d79463 bne a5,t4,800052cc + +00000000800050c8 : + 800050c8: 6188 ld a0,0(a1) + 800050ca: 357d addiw a0,a0,-1 + 800050cc: 76543eb7 lui t4,0x76543 + 800050d0: 210e8e9b addiw t4,t4,528 + 800050d4: 00a00193 li gp,10 + 800050d8: 1fd51a63 bne a0,t4,800052cc + +00000000800050dc : + 800050dc: 7405 lui s0,0xfffe1 + 800050de: 8431 srai s0,s0,0xc + 800050e0: fe100e93 li t4,-31 + 800050e4: 00b00193 li gp,11 + 800050e8: 1fd41263 bne s0,t4,800052cc + +00000000800050ec : + 800050ec: 7405 lui s0,0xfffe1 + 800050ee: 8031 srli s0,s0,0xc + 800050f0: 00100e9b addiw t4,zero,1 + 800050f4: 034e9e93 slli t4,t4,0x34 + 800050f8: fe1e8e93 addi t4,t4,-31 # 76542fe1 <_start-0x9abd01f> + 800050fc: 00c00193 li gp,12 + 80005100: 1dd41663 bne s0,t4,800052cc + +0000000080005104 : + 80005104: 5479 li s0,-2 + 80005106: 983d andi s0,s0,-17 + 80005108: fee00e93 li t4,-18 + 8000510c: 00e00193 li gp,14 + 80005110: 1bd41e63 bne s0,t4,800052cc + +0000000080005114 : + 80005114: 44d1 li s1,20 + 80005116: 4519 li a0,6 + 80005118: 8c89 sub s1,s1,a0 + 8000511a: 0001 nop + 8000511c: 00e00e93 li t4,14 + 80005120: 00f00193 li gp,15 + 80005124: 1bd49463 bne s1,t4,800052cc + +0000000080005128 : + 80005128: 44d1 li s1,20 + 8000512a: 4519 li a0,6 + 8000512c: 8ca9 xor s1,s1,a0 + 8000512e: 0001 nop + 80005130: 01200e93 li t4,18 + 80005134: 01000193 li gp,16 + 80005138: 19d49a63 bne s1,t4,800052cc + +000000008000513c : + 8000513c: 44d1 li s1,20 + 8000513e: 4519 li a0,6 + 80005140: 8cc9 or s1,s1,a0 + 80005142: 0001 nop + 80005144: 01600e93 li t4,22 + 80005148: 01100193 li gp,17 + 8000514c: 19d49063 bne s1,t4,800052cc + +0000000080005150 : + 80005150: 44d1 li s1,20 + 80005152: 4519 li a0,6 + 80005154: 8ce9 and s1,s1,a0 + 80005156: 0001 nop + 80005158: 00400e93 li t4,4 + 8000515c: 01200193 li gp,18 + 80005160: 17d49663 bne s1,t4,800052cc + +0000000080005164 : + 80005164: 800004b7 lui s1,0x80000 + 80005168: fff4849b addiw s1,s1,-1 + 8000516c: 557d li a0,-1 + 8000516e: 9c89 subw s1,s1,a0 + 80005170: 80000eb7 lui t4,0x80000 + 80005174: 01300193 li gp,19 + 80005178: 15d49a63 bne s1,t4,800052cc + +000000008000517c : + 8000517c: 800004b7 lui s1,0x80000 + 80005180: fff4849b addiw s1,s1,-1 + 80005184: 4505 li a0,1 + 80005186: 9ca9 addw s1,s1,a0 + 80005188: 80000eb7 lui t4,0x80000 + 8000518c: 01400193 li gp,20 + 80005190: 13d49e63 bne s1,t4,800052cc + +0000000080005194 : + 80005194: 00001437 lui s0,0x1 + 80005198: 2344041b addiw s0,s0,564 + 8000519c: 0412 slli s0,s0,0x4 + 8000519e: 0001 nop + 800051a0: 00012eb7 lui t4,0x12 + 800051a4: 340e8e9b addiw t4,t4,832 + 800051a8: 01500193 li gp,21 + 800051ac: 13d41063 bne s0,t4,800052cc + +00000000800051b0 : + 800051b0: 4081 li ra,0 + 800051b2: a011 j 800051b6 + 800051b4: a011 j 800051b8 + 800051b6: a011 j 800051ba + 800051b8: aa11 j 800052cc + 800051ba: 0001 nop + 800051bc: 00000e93 li t4,0 + 800051c0: 01e00193 li gp,30 + 800051c4: 11d09463 bne ra,t4,800052cc + +00000000800051c8 : + 800051c8: 4501 li a0,0 + 800051ca: c111 beqz a0,800051ce + 800051cc: a011 j 800051d0 + 800051ce: a011 j 800051d2 + 800051d0: a8f5 j 800052cc + 800051d2: 0001 nop + 800051d4: 00000e93 li t4,0 + 800051d8: 01f00193 li gp,31 + 800051dc: 0fd01863 bne zero,t4,800052cc + +00000000800051e0 : + 800051e0: 4505 li a0,1 + 800051e2: e111 bnez a0,800051e6 + 800051e4: a011 j 800051e8 + 800051e6: a011 j 800051ea + 800051e8: a0d5 j 800052cc + 800051ea: 0001 nop + 800051ec: 00000e93 li t4,0 + 800051f0: 02000193 li gp,32 + 800051f4: 0dd01c63 bne zero,t4,800052cc + +00000000800051f8 : + 800051f8: 4505 li a0,1 + 800051fa: c111 beqz a0,800051fe + 800051fc: a011 j 80005200 + 800051fe: a0f9 j 800052cc + 80005200: 00000e93 li t4,0 + 80005204: 02100193 li gp,33 + 80005208: 0dd01263 bne zero,t4,800052cc + +000000008000520c : + 8000520c: 4501 li a0,0 + 8000520e: e111 bnez a0,80005212 + 80005210: a011 j 80005214 + 80005212: a86d j 800052cc + 80005214: 00000e93 li t4,0 + 80005218: 02200193 li gp,34 + 8000521c: 0bd01863 bne zero,t4,800052cc + +0000000080005220 : + 80005220: 00000297 auipc t0,0x0 + 80005224: 00e28293 addi t0,t0,14 # 8000522e + 80005228: 4081 li ra,0 + 8000522a: 8282 jr t0 + 8000522c: a011 j 80005230 + 8000522e: a011 j 80005232 + 80005230: a871 j 800052cc + 80005232: 0001 nop + 80005234: 00000e93 li t4,0 + 80005238: 02300193 li gp,35 + 8000523c: 09d09863 bne ra,t4,800052cc + +0000000080005240 : + 80005240: 00000297 auipc t0,0x0 + 80005244: 00e28293 addi t0,t0,14 # 8000524e + 80005248: 4081 li ra,0 + 8000524a: 9282 jalr t0 + 8000524c: a011 j 80005250 + 8000524e: a011 j 80005252 + 80005250: a8b5 j 800052cc + 80005252: 405080b3 sub ra,ra,t0 + 80005256: 0001 nop + 80005258: ffe00e93 li t4,-2 + 8000525c: 02400193 li gp,36 + 80005260: 07d09663 bne ra,t4,800052cc + 80005264: ffffe117 auipc sp,0xffffe + 80005268: dac10113 addi sp,sp,-596 # 80003010 + +000000008000526c : + 8000526c: 4532 lw a0,12(sp) + 8000526e: 0505 addi a0,a0,1 + 80005270: c62a sw a0,12(sp) + 80005272: 4632 lw a2,12(sp) + 80005274: fedcceb7 lui t4,0xfedcc + 80005278: a99e8e9b addiw t4,t4,-1383 + 8000527c: 02800193 li gp,40 + 80005280: 05d61663 bne a2,t4,800052cc + +0000000080005284 : + 80005284: 6522 ld a0,8(sp) + 80005286: 0505 addi a0,a0,1 + 80005288: e42a sd a0,8(sp) + 8000528a: 6622 ld a2,8(sp) + 8000528c: fff6eeb7 lui t4,0xfff6e + 80005290: 5d5e8e9b addiw t4,t4,1493 + 80005294: 00ce9e93 slli t4,t4,0xc + 80005298: cbbe8e93 addi t4,t4,-837 # fffffffffff6dcbb <_end+0xffffffff7ff624cb> + 8000529c: 00de9e93 slli t4,t4,0xd + 800052a0: 543e8e93 addi t4,t4,1347 + 800052a4: 00ce9e93 slli t4,t4,0xc + 800052a8: 211e8e93 addi t4,t4,529 + 800052ac: 02900193 li gp,41 + 800052b0: 01d61e63 bne a2,t4,800052cc + +00000000800052b4 : + 800052b4: 12300513 li a0,291 + 800052b8: 82aa mv t0,a0 + 800052ba: 92aa add t0,t0,a0 + 800052bc: 24600e93 li t4,582 + 800052c0: 02a00193 li gp,42 + 800052c4: 01d29463 bne t0,t4,800052cc + 800052c8: 00301a63 bne zero,gp,800052dc + +00000000800052cc : + 800052cc: 00119513 slli a0,gp,0x1 + 800052d0: 00050063 beqz a0,800052d0 + 800052d4: 00156513 ori a0,a0,1 + 800052d8: 00000073 ecall + +00000000800052dc : + 800052dc: 00100513 li a0,1 + 800052e0: 00000073 ecall + 800052e4: c0001073 unimp + 800052e8: 0000 unimp + 800052ea: 0000 unimp + 800052ec: 0000 unimp + 800052ee: 0000 unimp + 800052f0: 0000 unimp + 800052f2: 0000 unimp + 800052f4: 0000 unimp + 800052f6: 0000 unimp + 800052f8: 0000 unimp + 800052fa: 0000 unimp + 800052fc: 0000 unimp + 800052fe: 0000 unimp + 80005300: 0000 unimp + 80005302: 0000 unimp + 80005304: 0000 unimp + 80005306: 0000 unimp + 80005308: 0000 unimp + 8000530a: 0000 unimp + 8000530c: 0000 unimp + 8000530e: 0000 unimp + 80005310: 0000 unimp + 80005312: 0000 unimp + 80005314: 0000 unimp + 80005316: 0000 unimp + 80005318: 0000 unimp + 8000531a: 0000 unimp + 8000531c: 0000 unimp + 8000531e: 0000 unimp + 80005320: 0000 unimp + 80005322: 0000 unimp + 80005324: 0000 unimp + 80005326: 0000 unimp + 80005328: 0000 unimp + 8000532a: 0000 unimp + 8000532c: 0000 unimp + 8000532e: 0000 unimp + 80005330: 0000 unimp + 80005332: 0000 unimp + 80005334: 0000 unimp + 80005336: 0000 unimp + 80005338: 0000 unimp + 8000533a: 0000 unimp + 8000533c: 0000 unimp + 8000533e: 0000 unimp + 80005340: 0000 unimp + 80005342: 0000 unimp + 80005344: 0000 unimp + 80005346: 0000 unimp + 80005348: 0000 unimp + 8000534a: 0000 unimp + 8000534c: 0000 unimp + 8000534e: 0000 unimp + 80005350: 0000 unimp + 80005352: 0000 unimp + 80005354: 0000 unimp + 80005356: 0000 unimp + 80005358: 0000 unimp + 8000535a: 0000 unimp + 8000535c: 0000 unimp + 8000535e: 0000 unimp + 80005360: 0000 unimp + 80005362: 0000 unimp + 80005364: 0000 unimp + 80005366: 0000 unimp + 80005368: 0000 unimp + 8000536a: 0000 unimp + 8000536c: 0000 unimp + 8000536e: 0000 unimp + 80005370: 0000 unimp + 80005372: 0000 unimp + 80005374: 0000 unimp + 80005376: 0000 unimp + 80005378: 0000 unimp + 8000537a: 0000 unimp + 8000537c: 0000 unimp + 8000537e: 0000 unimp + 80005380: 0000 unimp + 80005382: 0000 unimp + 80005384: 0000 unimp + 80005386: 0000 unimp + 80005388: 0000 unimp + 8000538a: 0000 unimp + 8000538c: 0000 unimp + 8000538e: 0000 unimp + 80005390: 0000 unimp + 80005392: 0000 unimp + 80005394: 0000 unimp + 80005396: 0000 unimp + 80005398: 0000 unimp + 8000539a: 0000 unimp + 8000539c: 0000 unimp + 8000539e: 0000 unimp + 800053a0: 0000 unimp + 800053a2: 0000 unimp + 800053a4: 0000 unimp + 800053a6: 0000 unimp + 800053a8: 0000 unimp + 800053aa: 0000 unimp + 800053ac: 0000 unimp + 800053ae: 0000 unimp + 800053b0: 0000 unimp + 800053b2: 0000 unimp + 800053b4: 0000 unimp + 800053b6: 0000 unimp + 800053b8: 0000 unimp + 800053ba: 0000 unimp + 800053bc: 0000 unimp + 800053be: 0000 unimp + 800053c0: 0000 unimp + 800053c2: 0000 unimp + 800053c4: 0000 unimp + 800053c6: 0000 unimp + 800053c8: 0000 unimp + 800053ca: 0000 unimp + 800053cc: 0000 unimp + 800053ce: 0000 unimp + 800053d0: 0000 unimp + 800053d2: 0000 unimp + 800053d4: 0000 unimp + 800053d6: 0000 unimp + 800053d8: 0000 unimp + 800053da: 0000 unimp + 800053dc: 0000 unimp + 800053de: 0000 unimp + 800053e0: 0000 unimp + 800053e2: 0000 unimp + 800053e4: 0000 unimp + 800053e6: 0000 unimp + 800053e8: 0000 unimp + 800053ea: 0000 unimp + 800053ec: 0000 unimp + 800053ee: 0000 unimp + 800053f0: 0000 unimp + 800053f2: 0000 unimp + 800053f4: 0000 unimp + 800053f6: 0000 unimp + 800053f8: 0000 unimp + 800053fa: 0000 unimp + 800053fc: 0000 unimp + 800053fe: 0000 unimp + 80005400: 0000 unimp + 80005402: 0000 unimp + 80005404: 0000 unimp + 80005406: 0000 unimp + 80005408: 0000 unimp + 8000540a: 0000 unimp + 8000540c: 0000 unimp + 8000540e: 0000 unimp + 80005410: 0000 unimp + 80005412: 0000 unimp + 80005414: 0000 unimp + 80005416: 0000 unimp + 80005418: 0000 unimp + 8000541a: 0000 unimp + 8000541c: 0000 unimp + 8000541e: 0000 unimp + 80005420: 0000 unimp + 80005422: 0000 unimp + 80005424: 0000 unimp + 80005426: 0000 unimp + 80005428: 0000 unimp + 8000542a: 0000 unimp + 8000542c: 0000 unimp + 8000542e: 0000 unimp + 80005430: 0000 unimp + 80005432: 0000 unimp + 80005434: 0000 unimp + 80005436: 0000 unimp + 80005438: 0000 unimp + 8000543a: 0000 unimp + 8000543c: 0000 unimp + 8000543e: 0000 unimp + 80005440: 0000 unimp + 80005442: 0000 unimp + 80005444: 0000 unimp + 80005446: 0000 unimp + 80005448: 0000 unimp + 8000544a: 0000 unimp + 8000544c: 0000 unimp + 8000544e: 0000 unimp + 80005450: 0000 unimp + 80005452: 0000 unimp + 80005454: 0000 unimp + 80005456: 0000 unimp + 80005458: 0000 unimp + 8000545a: 0000 unimp + 8000545c: 0000 unimp + 8000545e: 0000 unimp + 80005460: 0000 unimp + 80005462: 0000 unimp + 80005464: 0000 unimp + 80005466: 0000 unimp + 80005468: 0000 unimp + 8000546a: 0000 unimp + 8000546c: 0000 unimp + 8000546e: 0000 unimp + 80005470: 0000 unimp + 80005472: 0000 unimp + 80005474: 0000 unimp + 80005476: 0000 unimp + 80005478: 0000 unimp + 8000547a: 0000 unimp + 8000547c: 0000 unimp + 8000547e: 0000 unimp + 80005480: 0000 unimp + 80005482: 0000 unimp + 80005484: 0000 unimp + 80005486: 0000 unimp + 80005488: 0000 unimp + 8000548a: 0000 unimp + 8000548c: 0000 unimp + 8000548e: 0000 unimp + 80005490: 0000 unimp + 80005492: 0000 unimp + 80005494: 0000 unimp + 80005496: 0000 unimp + 80005498: 0000 unimp + 8000549a: 0000 unimp + 8000549c: 0000 unimp + 8000549e: 0000 unimp + 800054a0: 0000 unimp + 800054a2: 0000 unimp + 800054a4: 0000 unimp + 800054a6: 0000 unimp + 800054a8: 0000 unimp + 800054aa: 0000 unimp + 800054ac: 0000 unimp + 800054ae: 0000 unimp + 800054b0: 0000 unimp + 800054b2: 0000 unimp + 800054b4: 0000 unimp + 800054b6: 0000 unimp + 800054b8: 0000 unimp + 800054ba: 0000 unimp + 800054bc: 0000 unimp + 800054be: 0000 unimp + 800054c0: 0000 unimp + 800054c2: 0000 unimp + 800054c4: 0000 unimp + 800054c6: 0000 unimp + 800054c8: 0000 unimp + 800054ca: 0000 unimp + 800054cc: 0000 unimp + 800054ce: 0000 unimp + 800054d0: 0000 unimp + 800054d2: 0000 unimp + 800054d4: 0000 unimp + 800054d6: 0000 unimp + 800054d8: 0000 unimp + 800054da: 0000 unimp + 800054dc: 0000 unimp + 800054de: 0000 unimp + 800054e0: 0000 unimp + 800054e2: 0000 unimp + 800054e4: 0000 unimp + 800054e6: 0000 unimp + 800054e8: 0000 unimp + 800054ea: 0000 unimp + 800054ec: 0000 unimp + 800054ee: 0000 unimp + 800054f0: 0000 unimp + 800054f2: 0000 unimp + 800054f4: 0000 unimp + 800054f6: 0000 unimp + 800054f8: 0000 unimp + 800054fa: 0000 unimp + 800054fc: 0000 unimp + 800054fe: 0000 unimp + 80005500: 0000 unimp + 80005502: 0000 unimp + 80005504: 0000 unimp + 80005506: 0000 unimp + 80005508: 0000 unimp + 8000550a: 0000 unimp + 8000550c: 0000 unimp + 8000550e: 0000 unimp + 80005510: 0000 unimp + 80005512: 0000 unimp + 80005514: 0000 unimp + 80005516: 0000 unimp + 80005518: 0000 unimp + 8000551a: 0000 unimp + 8000551c: 0000 unimp + 8000551e: 0000 unimp + 80005520: 0000 unimp + 80005522: 0000 unimp + 80005524: 0000 unimp + 80005526: 0000 unimp + 80005528: 0000 unimp + 8000552a: 0000 unimp + 8000552c: 0000 unimp + 8000552e: 0000 unimp + 80005530: 0000 unimp + 80005532: 0000 unimp + 80005534: 0000 unimp + 80005536: 0000 unimp + 80005538: 0000 unimp + 8000553a: 0000 unimp + 8000553c: 0000 unimp + 8000553e: 0000 unimp + 80005540: 0000 unimp + 80005542: 0000 unimp + 80005544: 0000 unimp + 80005546: 0000 unimp + 80005548: 0000 unimp + 8000554a: 0000 unimp + 8000554c: 0000 unimp + 8000554e: 0000 unimp + 80005550: 0000 unimp + 80005552: 0000 unimp + 80005554: 0000 unimp + 80005556: 0000 unimp + 80005558: 0000 unimp + 8000555a: 0000 unimp + 8000555c: 0000 unimp + 8000555e: 0000 unimp + 80005560: 0000 unimp + 80005562: 0000 unimp + 80005564: 0000 unimp + 80005566: 0000 unimp + 80005568: 0000 unimp + 8000556a: 0000 unimp + 8000556c: 0000 unimp + 8000556e: 0000 unimp + 80005570: 0000 unimp + 80005572: 0000 unimp + 80005574: 0000 unimp + 80005576: 0000 unimp + 80005578: 0000 unimp + 8000557a: 0000 unimp + 8000557c: 0000 unimp + 8000557e: 0000 unimp + 80005580: 0000 unimp + 80005582: 0000 unimp + 80005584: 0000 unimp + 80005586: 0000 unimp + 80005588: 0000 unimp + 8000558a: 0000 unimp + 8000558c: 0000 unimp + 8000558e: 0000 unimp + 80005590: 0000 unimp + 80005592: 0000 unimp + 80005594: 0000 unimp + 80005596: 0000 unimp + 80005598: 0000 unimp + 8000559a: 0000 unimp + 8000559c: 0000 unimp + 8000559e: 0000 unimp + 800055a0: 0000 unimp + 800055a2: 0000 unimp + 800055a4: 0000 unimp + 800055a6: 0000 unimp + 800055a8: 0000 unimp + 800055aa: 0000 unimp + 800055ac: 0000 unimp + 800055ae: 0000 unimp + 800055b0: 0000 unimp + 800055b2: 0000 unimp + 800055b4: 0000 unimp + 800055b6: 0000 unimp + 800055b8: 0000 unimp + 800055ba: 0000 unimp + 800055bc: 0000 unimp + 800055be: 0000 unimp + 800055c0: 0000 unimp + 800055c2: 0000 unimp + 800055c4: 0000 unimp + 800055c6: 0000 unimp + 800055c8: 0000 unimp + 800055ca: 0000 unimp + 800055cc: 0000 unimp + 800055ce: 0000 unimp + 800055d0: 0000 unimp + 800055d2: 0000 unimp + 800055d4: 0000 unimp + 800055d6: 0000 unimp + 800055d8: 0000 unimp + 800055da: 0000 unimp + 800055dc: 0000 unimp + 800055de: 0000 unimp + 800055e0: 0000 unimp + 800055e2: 0000 unimp + 800055e4: 0000 unimp + 800055e6: 0000 unimp + 800055e8: 0000 unimp + 800055ea: 0000 unimp + 800055ec: 0000 unimp + 800055ee: 0000 unimp + 800055f0: 0000 unimp + 800055f2: 0000 unimp + 800055f4: 0000 unimp + 800055f6: 0000 unimp + 800055f8: 0000 unimp + 800055fa: 0000 unimp + 800055fc: 0000 unimp + 800055fe: 0000 unimp + 80005600: 0000 unimp + 80005602: 0000 unimp + 80005604: 0000 unimp + 80005606: 0000 unimp + 80005608: 0000 unimp + 8000560a: 0000 unimp + 8000560c: 0000 unimp + 8000560e: 0000 unimp + 80005610: 0000 unimp + 80005612: 0000 unimp + 80005614: 0000 unimp + 80005616: 0000 unimp + 80005618: 0000 unimp + 8000561a: 0000 unimp + 8000561c: 0000 unimp + 8000561e: 0000 unimp + 80005620: 0000 unimp + 80005622: 0000 unimp + 80005624: 0000 unimp + 80005626: 0000 unimp + 80005628: 0000 unimp + 8000562a: 0000 unimp + 8000562c: 0000 unimp + 8000562e: 0000 unimp + 80005630: 0000 unimp + 80005632: 0000 unimp + 80005634: 0000 unimp + 80005636: 0000 unimp + 80005638: 0000 unimp + 8000563a: 0000 unimp + 8000563c: 0000 unimp + 8000563e: 0000 unimp + 80005640: 0000 unimp + 80005642: 0000 unimp + 80005644: 0000 unimp + 80005646: 0000 unimp + 80005648: 0000 unimp + 8000564a: 0000 unimp + 8000564c: 0000 unimp + 8000564e: 0000 unimp + 80005650: 0000 unimp + 80005652: 0000 unimp + 80005654: 0000 unimp + 80005656: 0000 unimp + 80005658: 0000 unimp + 8000565a: 0000 unimp + 8000565c: 0000 unimp + 8000565e: 0000 unimp + 80005660: 0000 unimp + 80005662: 0000 unimp + 80005664: 0000 unimp + 80005666: 0000 unimp + 80005668: 0000 unimp + 8000566a: 0000 unimp + 8000566c: 0000 unimp + 8000566e: 0000 unimp + 80005670: 0000 unimp + 80005672: 0000 unimp + 80005674: 0000 unimp + 80005676: 0000 unimp + 80005678: 0000 unimp + 8000567a: 0000 unimp + 8000567c: 0000 unimp + 8000567e: 0000 unimp + 80005680: 0000 unimp + 80005682: 0000 unimp + 80005684: 0000 unimp + 80005686: 0000 unimp + 80005688: 0000 unimp + 8000568a: 0000 unimp + 8000568c: 0000 unimp + 8000568e: 0000 unimp + 80005690: 0000 unimp + 80005692: 0000 unimp + 80005694: 0000 unimp + 80005696: 0000 unimp + 80005698: 0000 unimp + 8000569a: 0000 unimp + 8000569c: 0000 unimp + 8000569e: 0000 unimp + 800056a0: 0000 unimp + 800056a2: 0000 unimp + 800056a4: 0000 unimp + 800056a6: 0000 unimp + 800056a8: 0000 unimp + 800056aa: 0000 unimp + 800056ac: 0000 unimp + 800056ae: 0000 unimp + 800056b0: 0000 unimp + 800056b2: 0000 unimp + 800056b4: 0000 unimp + 800056b6: 0000 unimp + 800056b8: 0000 unimp + 800056ba: 0000 unimp + 800056bc: 0000 unimp + 800056be: 0000 unimp + 800056c0: 0000 unimp + 800056c2: 0000 unimp + 800056c4: 0000 unimp + 800056c6: 0000 unimp + 800056c8: 0000 unimp + 800056ca: 0000 unimp + 800056cc: 0000 unimp + 800056ce: 0000 unimp + 800056d0: 0000 unimp + 800056d2: 0000 unimp + 800056d4: 0000 unimp + 800056d6: 0000 unimp + 800056d8: 0000 unimp + 800056da: 0000 unimp + 800056dc: 0000 unimp + 800056de: 0000 unimp + 800056e0: 0000 unimp + 800056e2: 0000 unimp + 800056e4: 0000 unimp + 800056e6: 0000 unimp + 800056e8: 0000 unimp + 800056ea: 0000 unimp + 800056ec: 0000 unimp + 800056ee: 0000 unimp + 800056f0: 0000 unimp + 800056f2: 0000 unimp + 800056f4: 0000 unimp + 800056f6: 0000 unimp + 800056f8: 0000 unimp + 800056fa: 0000 unimp + 800056fc: 0000 unimp + 800056fe: 0000 unimp + 80005700: 0000 unimp + 80005702: 0000 unimp + 80005704: 0000 unimp + 80005706: 0000 unimp + 80005708: 0000 unimp + 8000570a: 0000 unimp + 8000570c: 0000 unimp + 8000570e: 0000 unimp + 80005710: 0000 unimp + 80005712: 0000 unimp + 80005714: 0000 unimp + 80005716: 0000 unimp + 80005718: 0000 unimp + 8000571a: 0000 unimp + 8000571c: 0000 unimp + 8000571e: 0000 unimp + 80005720: 0000 unimp + 80005722: 0000 unimp + 80005724: 0000 unimp + 80005726: 0000 unimp + 80005728: 0000 unimp + 8000572a: 0000 unimp + 8000572c: 0000 unimp + 8000572e: 0000 unimp + 80005730: 0000 unimp + 80005732: 0000 unimp + 80005734: 0000 unimp + 80005736: 0000 unimp + 80005738: 0000 unimp + 8000573a: 0000 unimp + 8000573c: 0000 unimp + 8000573e: 0000 unimp + 80005740: 0000 unimp + 80005742: 0000 unimp + 80005744: 0000 unimp + 80005746: 0000 unimp + 80005748: 0000 unimp + 8000574a: 0000 unimp + 8000574c: 0000 unimp + 8000574e: 0000 unimp + 80005750: 0000 unimp + 80005752: 0000 unimp + 80005754: 0000 unimp + 80005756: 0000 unimp + 80005758: 0000 unimp + 8000575a: 0000 unimp + 8000575c: 0000 unimp + 8000575e: 0000 unimp + 80005760: 0000 unimp + 80005762: 0000 unimp + 80005764: 0000 unimp + 80005766: 0000 unimp + 80005768: 0000 unimp + 8000576a: 0000 unimp + 8000576c: 0000 unimp + 8000576e: 0000 unimp + 80005770: 0000 unimp + 80005772: 0000 unimp + 80005774: 0000 unimp + 80005776: 0000 unimp + 80005778: 0000 unimp + 8000577a: 0000 unimp + 8000577c: 0000 unimp + 8000577e: 0000 unimp + 80005780: 0000 unimp + 80005782: 0000 unimp + 80005784: 0000 unimp + 80005786: 0000 unimp + 80005788: 0000 unimp + 8000578a: 0000 unimp + 8000578c: 0000 unimp + 8000578e: 0000 unimp + 80005790: 0000 unimp + 80005792: 0000 unimp + 80005794: 0000 unimp + 80005796: 0000 unimp + 80005798: 0000 unimp + 8000579a: 0000 unimp + 8000579c: 0000 unimp + 8000579e: 0000 unimp + 800057a0: 0000 unimp + 800057a2: 0000 unimp + 800057a4: 0000 unimp + 800057a6: 0000 unimp + 800057a8: 0000 unimp + 800057aa: 0000 unimp + 800057ac: 0000 unimp + 800057ae: 0000 unimp + 800057b0: 0000 unimp + 800057b2: 0000 unimp + 800057b4: 0000 unimp + 800057b6: 0000 unimp + 800057b8: 0000 unimp + 800057ba: 0000 unimp + 800057bc: 0000 unimp + 800057be: 0000 unimp + 800057c0: 0000 unimp + 800057c2: 0000 unimp + 800057c4: 0000 unimp + 800057c6: 0000 unimp + 800057c8: 0000 unimp + 800057ca: 0000 unimp + 800057cc: 0000 unimp + 800057ce: 0000 unimp + 800057d0: 0000 unimp + 800057d2: 0000 unimp + 800057d4: 0000 unimp + 800057d6: 0000 unimp + 800057d8: 0000 unimp + 800057da: 0000 unimp + 800057dc: 0000 unimp + 800057de: 0000 unimp + 800057e0: 0000 unimp + 800057e2: 0000 unimp + 800057e4: 0000 unimp + 800057e6: 0000 unimp + 800057e8: 0000 unimp + 800057ea: 0000 unimp + 800057ec: 0000 unimp + 800057ee: 0000 unimp + 800057f0: 0000 unimp + 800057f2: 0000 unimp + 800057f4: 0000 unimp + 800057f6: 0000 unimp + 800057f8: 0000 unimp + 800057fa: 0000 unimp + 800057fc: 0000 unimp + 800057fe: 0000 unimp + 80005800: 0000 unimp + 80005802: 0000 unimp + 80005804: 0000 unimp + 80005806: 0000 unimp + 80005808: 0000 unimp + 8000580a: 0000 unimp + 8000580c: 0000 unimp + 8000580e: 0000 unimp + 80005810: 0000 unimp + 80005812: 0000 unimp + 80005814: 0000 unimp + 80005816: 0000 unimp + 80005818: 0000 unimp + 8000581a: 0000 unimp + 8000581c: 0000 unimp + 8000581e: 0000 unimp + 80005820: 0000 unimp + 80005822: 0000 unimp + 80005824: 0000 unimp + 80005826: 0000 unimp + 80005828: 0000 unimp + 8000582a: 0000 unimp + 8000582c: 0000 unimp + 8000582e: 0000 unimp + 80005830: 0000 unimp + 80005832: 0000 unimp + 80005834: 0000 unimp + 80005836: 0000 unimp + 80005838: 0000 unimp + 8000583a: 0000 unimp + 8000583c: 0000 unimp + 8000583e: 0000 unimp + 80005840: 0000 unimp + 80005842: 0000 unimp + 80005844: 0000 unimp + 80005846: 0000 unimp + 80005848: 0000 unimp + 8000584a: 0000 unimp + 8000584c: 0000 unimp + 8000584e: 0000 unimp + 80005850: 0000 unimp + 80005852: 0000 unimp + 80005854: 0000 unimp + 80005856: 0000 unimp + 80005858: 0000 unimp + 8000585a: 0000 unimp + 8000585c: 0000 unimp + 8000585e: 0000 unimp + 80005860: 0000 unimp + 80005862: 0000 unimp + 80005864: 0000 unimp + 80005866: 0000 unimp + 80005868: 0000 unimp + 8000586a: 0000 unimp + 8000586c: 0000 unimp + 8000586e: 0000 unimp + 80005870: 0000 unimp + 80005872: 0000 unimp + 80005874: 0000 unimp + 80005876: 0000 unimp + 80005878: 0000 unimp + 8000587a: 0000 unimp + 8000587c: 0000 unimp + 8000587e: 0000 unimp + 80005880: 0000 unimp + 80005882: 0000 unimp + 80005884: 0000 unimp + 80005886: 0000 unimp + 80005888: 0000 unimp + 8000588a: 0000 unimp + 8000588c: 0000 unimp + 8000588e: 0000 unimp + 80005890: 0000 unimp + 80005892: 0000 unimp + 80005894: 0000 unimp + 80005896: 0000 unimp + 80005898: 0000 unimp + 8000589a: 0000 unimp + 8000589c: 0000 unimp + 8000589e: 0000 unimp + 800058a0: 0000 unimp + 800058a2: 0000 unimp + 800058a4: 0000 unimp + 800058a6: 0000 unimp + 800058a8: 0000 unimp + 800058aa: 0000 unimp + 800058ac: 0000 unimp + 800058ae: 0000 unimp + 800058b0: 0000 unimp + 800058b2: 0000 unimp + 800058b4: 0000 unimp + 800058b6: 0000 unimp + 800058b8: 0000 unimp + 800058ba: 0000 unimp + 800058bc: 0000 unimp + 800058be: 0000 unimp + 800058c0: 0000 unimp + 800058c2: 0000 unimp + 800058c4: 0000 unimp + 800058c6: 0000 unimp + 800058c8: 0000 unimp + 800058ca: 0000 unimp + 800058cc: 0000 unimp + 800058ce: 0000 unimp + 800058d0: 0000 unimp + 800058d2: 0000 unimp + 800058d4: 0000 unimp + 800058d6: 0000 unimp + 800058d8: 0000 unimp + 800058da: 0000 unimp + 800058dc: 0000 unimp + 800058de: 0000 unimp + 800058e0: 0000 unimp + 800058e2: 0000 unimp + 800058e4: 0000 unimp + 800058e6: 0000 unimp + 800058e8: 0000 unimp + 800058ea: 0000 unimp + 800058ec: 0000 unimp + 800058ee: 0000 unimp + 800058f0: 0000 unimp + 800058f2: 0000 unimp + 800058f4: 0000 unimp + 800058f6: 0000 unimp + 800058f8: 0000 unimp + 800058fa: 0000 unimp + 800058fc: 0000 unimp + 800058fe: 0000 unimp + 80005900: 0000 unimp + 80005902: 0000 unimp + 80005904: 0000 unimp + 80005906: 0000 unimp + 80005908: 0000 unimp + 8000590a: 0000 unimp + 8000590c: 0000 unimp + 8000590e: 0000 unimp + 80005910: 0000 unimp + 80005912: 0000 unimp + 80005914: 0000 unimp + 80005916: 0000 unimp + 80005918: 0000 unimp + 8000591a: 0000 unimp + 8000591c: 0000 unimp + 8000591e: 0000 unimp + 80005920: 0000 unimp + 80005922: 0000 unimp + 80005924: 0000 unimp + 80005926: 0000 unimp + 80005928: 0000 unimp + 8000592a: 0000 unimp + 8000592c: 0000 unimp + 8000592e: 0000 unimp + 80005930: 0000 unimp + 80005932: 0000 unimp + 80005934: 0000 unimp + 80005936: 0000 unimp + 80005938: 0000 unimp + 8000593a: 0000 unimp + 8000593c: 0000 unimp + 8000593e: 0000 unimp + 80005940: 0000 unimp + 80005942: 0000 unimp + 80005944: 0000 unimp + 80005946: 0000 unimp + 80005948: 0000 unimp + 8000594a: 0000 unimp + 8000594c: 0000 unimp + 8000594e: 0000 unimp + 80005950: 0000 unimp + 80005952: 0000 unimp + 80005954: 0000 unimp + 80005956: 0000 unimp + 80005958: 0000 unimp + 8000595a: 0000 unimp + 8000595c: 0000 unimp + 8000595e: 0000 unimp + 80005960: 0000 unimp + 80005962: 0000 unimp + 80005964: 0000 unimp + 80005966: 0000 unimp + 80005968: 0000 unimp + 8000596a: 0000 unimp + 8000596c: 0000 unimp + 8000596e: 0000 unimp + 80005970: 0000 unimp + 80005972: 0000 unimp + 80005974: 0000 unimp + 80005976: 0000 unimp + 80005978: 0000 unimp + 8000597a: 0000 unimp + 8000597c: 0000 unimp + 8000597e: 0000 unimp + 80005980: 0000 unimp + 80005982: 0000 unimp + 80005984: 0000 unimp + 80005986: 0000 unimp + 80005988: 0000 unimp + 8000598a: 0000 unimp + 8000598c: 0000 unimp + 8000598e: 0000 unimp + 80005990: 0000 unimp + 80005992: 0000 unimp + 80005994: 0000 unimp + 80005996: 0000 unimp + 80005998: 0000 unimp + 8000599a: 0000 unimp + 8000599c: 0000 unimp + 8000599e: 0000 unimp + 800059a0: 0000 unimp + 800059a2: 0000 unimp + 800059a4: 0000 unimp + 800059a6: 0000 unimp + 800059a8: 0000 unimp + 800059aa: 0000 unimp + 800059ac: 0000 unimp + 800059ae: 0000 unimp + 800059b0: 0000 unimp + 800059b2: 0000 unimp + 800059b4: 0000 unimp + 800059b6: 0000 unimp + 800059b8: 0000 unimp + 800059ba: 0000 unimp + 800059bc: 0000 unimp + 800059be: 0000 unimp + 800059c0: 0000 unimp + 800059c2: 0000 unimp + 800059c4: 0000 unimp + 800059c6: 0000 unimp + 800059c8: 0000 unimp + 800059ca: 0000 unimp + 800059cc: 0000 unimp + 800059ce: 0000 unimp + 800059d0: 0000 unimp + 800059d2: 0000 unimp + 800059d4: 0000 unimp + 800059d6: 0000 unimp + 800059d8: 0000 unimp + 800059da: 0000 unimp + 800059dc: 0000 unimp + 800059de: 0000 unimp + 800059e0: 0000 unimp + 800059e2: 0000 unimp + 800059e4: 0000 unimp + 800059e6: 0000 unimp + 800059e8: 0000 unimp + 800059ea: 0000 unimp + 800059ec: 0000 unimp + 800059ee: 0000 unimp + 800059f0: 0000 unimp + 800059f2: 0000 unimp + 800059f4: 0000 unimp + 800059f6: 0000 unimp + 800059f8: 0000 unimp + 800059fa: 0000 unimp + 800059fc: 0000 unimp + 800059fe: 0000 unimp + 80005a00: 0000 unimp + 80005a02: 0000 unimp + 80005a04: 0000 unimp + 80005a06: 0000 unimp + 80005a08: 0000 unimp + 80005a0a: 0000 unimp + 80005a0c: 0000 unimp + 80005a0e: 0000 unimp + 80005a10: 0000 unimp + 80005a12: 0000 unimp + 80005a14: 0000 unimp + 80005a16: 0000 unimp + 80005a18: 0000 unimp + 80005a1a: 0000 unimp + 80005a1c: 0000 unimp + 80005a1e: 0000 unimp + 80005a20: 0000 unimp + 80005a22: 0000 unimp + 80005a24: 0000 unimp + 80005a26: 0000 unimp + 80005a28: 0000 unimp + 80005a2a: 0000 unimp + 80005a2c: 0000 unimp + 80005a2e: 0000 unimp + 80005a30: 0000 unimp + 80005a32: 0000 unimp + 80005a34: 0000 unimp + 80005a36: 0000 unimp + 80005a38: 0000 unimp + 80005a3a: 0000 unimp + 80005a3c: 0000 unimp + 80005a3e: 0000 unimp + 80005a40: 0000 unimp + 80005a42: 0000 unimp + 80005a44: 0000 unimp + 80005a46: 0000 unimp + 80005a48: 0000 unimp + 80005a4a: 0000 unimp + 80005a4c: 0000 unimp + 80005a4e: 0000 unimp + 80005a50: 0000 unimp + 80005a52: 0000 unimp + 80005a54: 0000 unimp + 80005a56: 0000 unimp + 80005a58: 0000 unimp + 80005a5a: 0000 unimp + 80005a5c: 0000 unimp + 80005a5e: 0000 unimp + 80005a60: 0000 unimp + 80005a62: 0000 unimp + 80005a64: 0000 unimp + 80005a66: 0000 unimp + 80005a68: 0000 unimp + 80005a6a: 0000 unimp + 80005a6c: 0000 unimp + 80005a6e: 0000 unimp + 80005a70: 0000 unimp + 80005a72: 0000 unimp + 80005a74: 0000 unimp + 80005a76: 0000 unimp + 80005a78: 0000 unimp + 80005a7a: 0000 unimp + 80005a7c: 0000 unimp + 80005a7e: 0000 unimp + 80005a80: 0000 unimp + 80005a82: 0000 unimp + 80005a84: 0000 unimp + 80005a86: 0000 unimp + 80005a88: 0000 unimp + 80005a8a: 0000 unimp + 80005a8c: 0000 unimp + 80005a8e: 0000 unimp + 80005a90: 0000 unimp + 80005a92: 0000 unimp + 80005a94: 0000 unimp + 80005a96: 0000 unimp + 80005a98: 0000 unimp + 80005a9a: 0000 unimp + 80005a9c: 0000 unimp + 80005a9e: 0000 unimp + 80005aa0: 0000 unimp + 80005aa2: 0000 unimp + 80005aa4: 0000 unimp + 80005aa6: 0000 unimp + 80005aa8: 0000 unimp + 80005aaa: 0000 unimp + 80005aac: 0000 unimp + 80005aae: 0000 unimp + 80005ab0: 0000 unimp + 80005ab2: 0000 unimp + 80005ab4: 0000 unimp + 80005ab6: 0000 unimp + 80005ab8: 0000 unimp + 80005aba: 0000 unimp + 80005abc: 0000 unimp + 80005abe: 0000 unimp + 80005ac0: 0000 unimp + 80005ac2: 0000 unimp + 80005ac4: 0000 unimp + 80005ac6: 0000 unimp + 80005ac8: 0000 unimp + 80005aca: 0000 unimp + 80005acc: 0000 unimp + 80005ace: 0000 unimp + 80005ad0: 0000 unimp + 80005ad2: 0000 unimp + 80005ad4: 0000 unimp + 80005ad6: 0000 unimp + 80005ad8: 0000 unimp + 80005ada: 0000 unimp + 80005adc: 0000 unimp + 80005ade: 0000 unimp + 80005ae0: 0000 unimp + 80005ae2: 0000 unimp + 80005ae4: 0000 unimp + 80005ae6: 0000 unimp + 80005ae8: 0000 unimp + 80005aea: 0000 unimp + 80005aec: 0000 unimp + 80005aee: 0000 unimp + 80005af0: 0000 unimp + 80005af2: 0000 unimp + 80005af4: 0000 unimp + 80005af6: 0000 unimp + 80005af8: 0000 unimp + 80005afa: 0000 unimp + 80005afc: 0000 unimp + 80005afe: 0000 unimp + 80005b00: 0000 unimp + 80005b02: 0000 unimp + 80005b04: 0000 unimp + 80005b06: 0000 unimp + 80005b08: 0000 unimp + 80005b0a: 0000 unimp + 80005b0c: 0000 unimp + 80005b0e: 0000 unimp + 80005b10: 0000 unimp + 80005b12: 0000 unimp + 80005b14: 0000 unimp + 80005b16: 0000 unimp + 80005b18: 0000 unimp + 80005b1a: 0000 unimp + 80005b1c: 0000 unimp + 80005b1e: 0000 unimp + 80005b20: 0000 unimp + 80005b22: 0000 unimp + 80005b24: 0000 unimp + 80005b26: 0000 unimp + 80005b28: 0000 unimp + 80005b2a: 0000 unimp + 80005b2c: 0000 unimp + 80005b2e: 0000 unimp + 80005b30: 0000 unimp + 80005b32: 0000 unimp + 80005b34: 0000 unimp + 80005b36: 0000 unimp + 80005b38: 0000 unimp + 80005b3a: 0000 unimp + 80005b3c: 0000 unimp + 80005b3e: 0000 unimp + 80005b40: 0000 unimp + 80005b42: 0000 unimp + 80005b44: 0000 unimp + 80005b46: 0000 unimp + 80005b48: 0000 unimp + 80005b4a: 0000 unimp + 80005b4c: 0000 unimp + 80005b4e: 0000 unimp + 80005b50: 0000 unimp + 80005b52: 0000 unimp + 80005b54: 0000 unimp + 80005b56: 0000 unimp + 80005b58: 0000 unimp + 80005b5a: 0000 unimp + 80005b5c: 0000 unimp + 80005b5e: 0000 unimp + 80005b60: 0000 unimp + 80005b62: 0000 unimp + 80005b64: 0000 unimp + 80005b66: 0000 unimp + 80005b68: 0000 unimp + 80005b6a: 0000 unimp + 80005b6c: 0000 unimp + 80005b6e: 0000 unimp + 80005b70: 0000 unimp + 80005b72: 0000 unimp + 80005b74: 0000 unimp + 80005b76: 0000 unimp + 80005b78: 0000 unimp + 80005b7a: 0000 unimp + 80005b7c: 0000 unimp + 80005b7e: 0000 unimp + 80005b80: 0000 unimp + 80005b82: 0000 unimp + 80005b84: 0000 unimp + 80005b86: 0000 unimp + 80005b88: 0000 unimp + 80005b8a: 0000 unimp + 80005b8c: 0000 unimp + 80005b8e: 0000 unimp + 80005b90: 0000 unimp + 80005b92: 0000 unimp + 80005b94: 0000 unimp + 80005b96: 0000 unimp + 80005b98: 0000 unimp + 80005b9a: 0000 unimp + 80005b9c: 0000 unimp + 80005b9e: 0000 unimp + 80005ba0: 0000 unimp + 80005ba2: 0000 unimp + 80005ba4: 0000 unimp + 80005ba6: 0000 unimp + 80005ba8: 0000 unimp + 80005baa: 0000 unimp + 80005bac: 0000 unimp + 80005bae: 0000 unimp + 80005bb0: 0000 unimp + 80005bb2: 0000 unimp + 80005bb4: 0000 unimp + 80005bb6: 0000 unimp + 80005bb8: 0000 unimp + 80005bba: 0000 unimp + 80005bbc: 0000 unimp + 80005bbe: 0000 unimp + 80005bc0: 0000 unimp + 80005bc2: 0000 unimp + 80005bc4: 0000 unimp + 80005bc6: 0000 unimp + 80005bc8: 0000 unimp + 80005bca: 0000 unimp + 80005bcc: 0000 unimp + 80005bce: 0000 unimp + 80005bd0: 0000 unimp + 80005bd2: 0000 unimp + 80005bd4: 0000 unimp + 80005bd6: 0000 unimp + 80005bd8: 0000 unimp + 80005bda: 0000 unimp + 80005bdc: 0000 unimp + 80005bde: 0000 unimp + 80005be0: 0000 unimp + 80005be2: 0000 unimp + 80005be4: 0000 unimp + 80005be6: 0000 unimp + 80005be8: 0000 unimp + 80005bea: 0000 unimp + 80005bec: 0000 unimp + 80005bee: 0000 unimp + 80005bf0: 0000 unimp + 80005bf2: 0000 unimp + 80005bf4: 0000 unimp + 80005bf6: 0000 unimp + 80005bf8: 0000 unimp + 80005bfa: 0000 unimp + 80005bfc: 0000 unimp + 80005bfe: 0000 unimp + 80005c00: 0000 unimp + 80005c02: 0000 unimp + 80005c04: 0000 unimp + 80005c06: 0000 unimp + 80005c08: 0000 unimp + 80005c0a: 0000 unimp + 80005c0c: 0000 unimp + 80005c0e: 0000 unimp + 80005c10: 0000 unimp + 80005c12: 0000 unimp + 80005c14: 0000 unimp + 80005c16: 0000 unimp + 80005c18: 0000 unimp + 80005c1a: 0000 unimp + 80005c1c: 0000 unimp + 80005c1e: 0000 unimp + 80005c20: 0000 unimp + 80005c22: 0000 unimp + 80005c24: 0000 unimp + 80005c26: 0000 unimp + 80005c28: 0000 unimp + 80005c2a: 0000 unimp + 80005c2c: 0000 unimp + 80005c2e: 0000 unimp + 80005c30: 0000 unimp + 80005c32: 0000 unimp + 80005c34: 0000 unimp + 80005c36: 0000 unimp + 80005c38: 0000 unimp + 80005c3a: 0000 unimp + 80005c3c: 0000 unimp + 80005c3e: 0000 unimp + 80005c40: 0000 unimp + 80005c42: 0000 unimp + 80005c44: 0000 unimp + 80005c46: 0000 unimp + 80005c48: 0000 unimp + 80005c4a: 0000 unimp + 80005c4c: 0000 unimp + 80005c4e: 0000 unimp + 80005c50: 0000 unimp + 80005c52: 0000 unimp + 80005c54: 0000 unimp + 80005c56: 0000 unimp + 80005c58: 0000 unimp + 80005c5a: 0000 unimp + 80005c5c: 0000 unimp + 80005c5e: 0000 unimp + 80005c60: 0000 unimp + 80005c62: 0000 unimp + 80005c64: 0000 unimp + 80005c66: 0000 unimp + 80005c68: 0000 unimp + 80005c6a: 0000 unimp + 80005c6c: 0000 unimp + 80005c6e: 0000 unimp + 80005c70: 0000 unimp + 80005c72: 0000 unimp + 80005c74: 0000 unimp + 80005c76: 0000 unimp + 80005c78: 0000 unimp + 80005c7a: 0000 unimp + 80005c7c: 0000 unimp + 80005c7e: 0000 unimp + 80005c80: 0000 unimp + 80005c82: 0000 unimp + 80005c84: 0000 unimp + 80005c86: 0000 unimp + 80005c88: 0000 unimp + 80005c8a: 0000 unimp + 80005c8c: 0000 unimp + 80005c8e: 0000 unimp + 80005c90: 0000 unimp + 80005c92: 0000 unimp + 80005c94: 0000 unimp + 80005c96: 0000 unimp + 80005c98: 0000 unimp + 80005c9a: 0000 unimp + 80005c9c: 0000 unimp + 80005c9e: 0000 unimp + 80005ca0: 0000 unimp + 80005ca2: 0000 unimp + 80005ca4: 0000 unimp + 80005ca6: 0000 unimp + 80005ca8: 0000 unimp + 80005caa: 0000 unimp + 80005cac: 0000 unimp + 80005cae: 0000 unimp + 80005cb0: 0000 unimp + 80005cb2: 0000 unimp + 80005cb4: 0000 unimp + 80005cb6: 0000 unimp + 80005cb8: 0000 unimp + 80005cba: 0000 unimp + 80005cbc: 0000 unimp + 80005cbe: 0000 unimp + 80005cc0: 0000 unimp + 80005cc2: 0000 unimp + 80005cc4: 0000 unimp + 80005cc6: 0000 unimp + 80005cc8: 0000 unimp + 80005cca: 0000 unimp + 80005ccc: 0000 unimp + 80005cce: 0000 unimp + 80005cd0: 0000 unimp + 80005cd2: 0000 unimp + 80005cd4: 0000 unimp + 80005cd6: 0000 unimp + 80005cd8: 0000 unimp + 80005cda: 0000 unimp + 80005cdc: 0000 unimp + 80005cde: 0000 unimp + 80005ce0: 0000 unimp + 80005ce2: 0000 unimp + 80005ce4: 0000 unimp + 80005ce6: 0000 unimp + 80005ce8: 0000 unimp + 80005cea: 0000 unimp + 80005cec: 0000 unimp + 80005cee: 0000 unimp + 80005cf0: 0000 unimp + 80005cf2: 0000 unimp + 80005cf4: 0000 unimp + 80005cf6: 0000 unimp + 80005cf8: 0000 unimp + 80005cfa: 0000 unimp + 80005cfc: 0000 unimp + 80005cfe: 0000 unimp + 80005d00: 0000 unimp + 80005d02: 0000 unimp + 80005d04: 0000 unimp + 80005d06: 0000 unimp + 80005d08: 0000 unimp + 80005d0a: 0000 unimp + 80005d0c: 0000 unimp + 80005d0e: 0000 unimp + 80005d10: 0000 unimp + 80005d12: 0000 unimp + 80005d14: 0000 unimp + 80005d16: 0000 unimp + 80005d18: 0000 unimp + 80005d1a: 0000 unimp + 80005d1c: 0000 unimp + 80005d1e: 0000 unimp + 80005d20: 0000 unimp + 80005d22: 0000 unimp + 80005d24: 0000 unimp + 80005d26: 0000 unimp + 80005d28: 0000 unimp + 80005d2a: 0000 unimp + 80005d2c: 0000 unimp + 80005d2e: 0000 unimp + 80005d30: 0000 unimp + 80005d32: 0000 unimp + 80005d34: 0000 unimp + 80005d36: 0000 unimp + 80005d38: 0000 unimp + 80005d3a: 0000 unimp + 80005d3c: 0000 unimp + 80005d3e: 0000 unimp + 80005d40: 0000 unimp + 80005d42: 0000 unimp + 80005d44: 0000 unimp + 80005d46: 0000 unimp + 80005d48: 0000 unimp + 80005d4a: 0000 unimp + 80005d4c: 0000 unimp + 80005d4e: 0000 unimp + 80005d50: 0000 unimp + 80005d52: 0000 unimp + 80005d54: 0000 unimp + 80005d56: 0000 unimp + 80005d58: 0000 unimp + 80005d5a: 0000 unimp + 80005d5c: 0000 unimp + 80005d5e: 0000 unimp + 80005d60: 0000 unimp + 80005d62: 0000 unimp + 80005d64: 0000 unimp + 80005d66: 0000 unimp + 80005d68: 0000 unimp + 80005d6a: 0000 unimp + 80005d6c: 0000 unimp + 80005d6e: 0000 unimp + 80005d70: 0000 unimp + 80005d72: 0000 unimp + 80005d74: 0000 unimp + 80005d76: 0000 unimp + 80005d78: 0000 unimp + 80005d7a: 0000 unimp + 80005d7c: 0000 unimp + 80005d7e: 0000 unimp + 80005d80: 0000 unimp + 80005d82: 0000 unimp + 80005d84: 0000 unimp + 80005d86: 0000 unimp + 80005d88: 0000 unimp + 80005d8a: 0000 unimp + 80005d8c: 0000 unimp + 80005d8e: 0000 unimp + 80005d90: 0000 unimp + 80005d92: 0000 unimp + 80005d94: 0000 unimp + 80005d96: 0000 unimp + 80005d98: 0000 unimp + 80005d9a: 0000 unimp + 80005d9c: 0000 unimp + 80005d9e: 0000 unimp + 80005da0: 0000 unimp + 80005da2: 0000 unimp + 80005da4: 0000 unimp + 80005da6: 0000 unimp + 80005da8: 0000 unimp + 80005daa: 0000 unimp + 80005dac: 0000 unimp + 80005dae: 0000 unimp + 80005db0: 0000 unimp + 80005db2: 0000 unimp + 80005db4: 0000 unimp + 80005db6: 0000 unimp + 80005db8: 0000 unimp + 80005dba: 0000 unimp + 80005dbc: 0000 unimp + 80005dbe: 0000 unimp + 80005dc0: 0000 unimp + 80005dc2: 0000 unimp + 80005dc4: 0000 unimp + 80005dc6: 0000 unimp + 80005dc8: 0000 unimp + 80005dca: 0000 unimp + 80005dcc: 0000 unimp + 80005dce: 0000 unimp + 80005dd0: 0000 unimp + 80005dd2: 0000 unimp + 80005dd4: 0000 unimp + 80005dd6: 0000 unimp + 80005dd8: 0000 unimp + 80005dda: 0000 unimp + 80005ddc: 0000 unimp + 80005dde: 0000 unimp + 80005de0: 0000 unimp + 80005de2: 0000 unimp + 80005de4: 0000 unimp + 80005de6: 0000 unimp + 80005de8: 0000 unimp + 80005dea: 0000 unimp + 80005dec: 0000 unimp + 80005dee: 0000 unimp + 80005df0: 0000 unimp + 80005df2: 0000 unimp + 80005df4: 0000 unimp + 80005df6: 0000 unimp + 80005df8: 0000 unimp + 80005dfa: 0000 unimp + 80005dfc: 0000 unimp + 80005dfe: 0000 unimp + 80005e00: 0000 unimp + 80005e02: 0000 unimp + 80005e04: 0000 unimp + 80005e06: 0000 unimp + 80005e08: 0000 unimp + 80005e0a: 0000 unimp + 80005e0c: 0000 unimp + 80005e0e: 0000 unimp + 80005e10: 0000 unimp + 80005e12: 0000 unimp + 80005e14: 0000 unimp + 80005e16: 0000 unimp + 80005e18: 0000 unimp + 80005e1a: 0000 unimp + 80005e1c: 0000 unimp + 80005e1e: 0000 unimp + 80005e20: 0000 unimp + 80005e22: 0000 unimp + 80005e24: 0000 unimp + 80005e26: 0000 unimp + 80005e28: 0000 unimp + 80005e2a: 0000 unimp + 80005e2c: 0000 unimp + 80005e2e: 0000 unimp + 80005e30: 0000 unimp + 80005e32: 0000 unimp + 80005e34: 0000 unimp + 80005e36: 0000 unimp + 80005e38: 0000 unimp + 80005e3a: 0000 unimp + 80005e3c: 0000 unimp + 80005e3e: 0000 unimp + 80005e40: 0000 unimp + 80005e42: 0000 unimp + 80005e44: 0000 unimp + 80005e46: 0000 unimp + 80005e48: 0000 unimp + 80005e4a: 0000 unimp + 80005e4c: 0000 unimp + 80005e4e: 0000 unimp + 80005e50: 0000 unimp + 80005e52: 0000 unimp + 80005e54: 0000 unimp + 80005e56: 0000 unimp + 80005e58: 0000 unimp + 80005e5a: 0000 unimp + 80005e5c: 0000 unimp + 80005e5e: 0000 unimp + 80005e60: 0000 unimp + 80005e62: 0000 unimp + 80005e64: 0000 unimp + 80005e66: 0000 unimp + 80005e68: 0000 unimp + 80005e6a: 0000 unimp + 80005e6c: 0000 unimp + 80005e6e: 0000 unimp + 80005e70: 0000 unimp + 80005e72: 0000 unimp + 80005e74: 0000 unimp + 80005e76: 0000 unimp + 80005e78: 0000 unimp + 80005e7a: 0000 unimp + 80005e7c: 0000 unimp + 80005e7e: 0000 unimp + 80005e80: 0000 unimp + 80005e82: 0000 unimp + 80005e84: 0000 unimp + 80005e86: 0000 unimp + 80005e88: 0000 unimp + 80005e8a: 0000 unimp + 80005e8c: 0000 unimp + 80005e8e: 0000 unimp + 80005e90: 0000 unimp + 80005e92: 0000 unimp + 80005e94: 0000 unimp + 80005e96: 0000 unimp + 80005e98: 0000 unimp + 80005e9a: 0000 unimp + 80005e9c: 0000 unimp + 80005e9e: 0000 unimp + 80005ea0: 0000 unimp + 80005ea2: 0000 unimp + 80005ea4: 0000 unimp + 80005ea6: 0000 unimp + 80005ea8: 0000 unimp + 80005eaa: 0000 unimp + 80005eac: 0000 unimp + 80005eae: 0000 unimp + 80005eb0: 0000 unimp + 80005eb2: 0000 unimp + 80005eb4: 0000 unimp + 80005eb6: 0000 unimp + 80005eb8: 0000 unimp + 80005eba: 0000 unimp + 80005ebc: 0000 unimp + 80005ebe: 0000 unimp + 80005ec0: 0000 unimp + 80005ec2: 0000 unimp + 80005ec4: 0000 unimp + 80005ec6: 0000 unimp + 80005ec8: 0000 unimp + 80005eca: 0000 unimp + 80005ecc: 0000 unimp + 80005ece: 0000 unimp + 80005ed0: 0000 unimp + 80005ed2: 0000 unimp + 80005ed4: 0000 unimp + 80005ed6: 0000 unimp + 80005ed8: 0000 unimp + 80005eda: 0000 unimp + 80005edc: 0000 unimp + 80005ede: 0000 unimp + 80005ee0: 0000 unimp + 80005ee2: 0000 unimp + 80005ee4: 0000 unimp + 80005ee6: 0000 unimp + 80005ee8: 0000 unimp + 80005eea: 0000 unimp + 80005eec: 0000 unimp + 80005eee: 0000 unimp + 80005ef0: 0000 unimp + 80005ef2: 0000 unimp + 80005ef4: 0000 unimp + 80005ef6: 0000 unimp + 80005ef8: 0000 unimp + 80005efa: 0000 unimp + 80005efc: 0000 unimp + 80005efe: 0000 unimp + 80005f00: 0000 unimp + 80005f02: 0000 unimp + 80005f04: 0000 unimp + 80005f06: 0000 unimp + 80005f08: 0000 unimp + 80005f0a: 0000 unimp + 80005f0c: 0000 unimp + 80005f0e: 0000 unimp + 80005f10: 0000 unimp + 80005f12: 0000 unimp + 80005f14: 0000 unimp + 80005f16: 0000 unimp + 80005f18: 0000 unimp + 80005f1a: 0000 unimp + 80005f1c: 0000 unimp + 80005f1e: 0000 unimp + 80005f20: 0000 unimp + 80005f22: 0000 unimp + 80005f24: 0000 unimp + 80005f26: 0000 unimp + 80005f28: 0000 unimp + 80005f2a: 0000 unimp + 80005f2c: 0000 unimp + 80005f2e: 0000 unimp + 80005f30: 0000 unimp + 80005f32: 0000 unimp + 80005f34: 0000 unimp + 80005f36: 0000 unimp + 80005f38: 0000 unimp + 80005f3a: 0000 unimp + 80005f3c: 0000 unimp + 80005f3e: 0000 unimp + 80005f40: 0000 unimp + 80005f42: 0000 unimp + 80005f44: 0000 unimp + 80005f46: 0000 unimp + 80005f48: 0000 unimp + 80005f4a: 0000 unimp + 80005f4c: 0000 unimp + 80005f4e: 0000 unimp + 80005f50: 0000 unimp + 80005f52: 0000 unimp + 80005f54: 0000 unimp + 80005f56: 0000 unimp + 80005f58: 0000 unimp + 80005f5a: 0000 unimp + 80005f5c: 0000 unimp + 80005f5e: 0000 unimp + 80005f60: 0000 unimp + 80005f62: 0000 unimp + 80005f64: 0000 unimp + 80005f66: 0000 unimp + 80005f68: 0000 unimp + 80005f6a: 0000 unimp + 80005f6c: 0000 unimp + 80005f6e: 0000 unimp + 80005f70: 0000 unimp + 80005f72: 0000 unimp + 80005f74: 0000 unimp + 80005f76: 0000 unimp + 80005f78: 0000 unimp + 80005f7a: 0000 unimp + 80005f7c: 0000 unimp + 80005f7e: 0000 unimp + 80005f80: 0000 unimp + 80005f82: 0000 unimp + 80005f84: 0000 unimp + 80005f86: 0000 unimp + 80005f88: 0000 unimp + 80005f8a: 0000 unimp + 80005f8c: 0000 unimp + 80005f8e: 0000 unimp + 80005f90: 0000 unimp + 80005f92: 0000 unimp + 80005f94: 0000 unimp + 80005f96: 0000 unimp + 80005f98: 0000 unimp + 80005f9a: 0000 unimp + 80005f9c: 0000 unimp + 80005f9e: 0000 unimp + 80005fa0: 0000 unimp + 80005fa2: 0000 unimp + 80005fa4: 0000 unimp + 80005fa6: 0000 unimp + 80005fa8: 0000 unimp + 80005faa: 0000 unimp + 80005fac: 0000 unimp + 80005fae: 0000 unimp + 80005fb0: 0000 unimp + 80005fb2: 0000 unimp + 80005fb4: 0000 unimp + 80005fb6: 0000 unimp + 80005fb8: 0000 unimp + 80005fba: 0000 unimp + 80005fbc: 0000 unimp + 80005fbe: 0000 unimp + 80005fc0: 0000 unimp + 80005fc2: 0000 unimp + 80005fc4: 0000 unimp + 80005fc6: 0000 unimp diff --git a/Tests/isa/rv64ud-p-fadd b/Tests/isa/rv64ud-p-fadd new file mode 100644 index 0000000..d81b654 Binary files /dev/null and b/Tests/isa/rv64ud-p-fadd differ diff --git a/Tests/isa/rv64ud-p-fadd.dump b/Tests/isa/rv64ud-p-fadd.dump new file mode 100644 index 0000000..2775cc5 --- /dev/null +++ b/Tests/isa/rv64ud-p-fadd.dump @@ -0,0 +1,422 @@ + +rv64ud-p-fadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00053007 fld ft0,0(a0) + 80000118: 00853087 fld ft1,8(a0) + 8000011c: 01053107 fld ft2,16(a0) + 80000120: 01853683 ld a3,24(a0) + 80000124: 021071d3 fadd.d ft3,ft0,ft1 + 80000128: e2018553 fmv.x.d a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00000613 li a2,0 + 80000134: 1ed51063 bne a0,a3,80000314 + 80000138: 1cc59e63 bne a1,a2,80000314 + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ee050513 addi a0,a0,-288 # 80002020 + 80000148: 00053007 fld ft0,0(a0) + 8000014c: 00853087 fld ft1,8(a0) + 80000150: 01053107 fld ft2,16(a0) + 80000154: 01853683 ld a3,24(a0) + 80000158: 021071d3 fadd.d ft3,ft0,ft1 + 8000015c: e2018553 fmv.x.d a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00100613 li a2,1 + 80000168: 1ad51663 bne a0,a3,80000314 + 8000016c: 1ac59463 bne a1,a2,80000314 + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: ecc50513 addi a0,a0,-308 # 80002040 + 8000017c: 00053007 fld ft0,0(a0) + 80000180: 00853087 fld ft1,8(a0) + 80000184: 01053107 fld ft2,16(a0) + 80000188: 01853683 ld a3,24(a0) + 8000018c: 021071d3 fadd.d ft3,ft0,ft1 + 80000190: e2018553 fmv.x.d a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00100613 li a2,1 + 8000019c: 16d51c63 bne a0,a3,80000314 + 800001a0: 16c59a63 bne a1,a2,80000314 + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: eb850513 addi a0,a0,-328 # 80002060 + 800001b0: 00053007 fld ft0,0(a0) + 800001b4: 00853087 fld ft1,8(a0) + 800001b8: 01053107 fld ft2,16(a0) + 800001bc: 01853683 ld a3,24(a0) + 800001c0: 0a1071d3 fsub.d ft3,ft0,ft1 + 800001c4: e2018553 fmv.x.d a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00000613 li a2,0 + 800001d0: 14d51263 bne a0,a3,80000314 + 800001d4: 14c59063 bne a1,a2,80000314 + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: ea450513 addi a0,a0,-348 # 80002080 + 800001e4: 00053007 fld ft0,0(a0) + 800001e8: 00853087 fld ft1,8(a0) + 800001ec: 01053107 fld ft2,16(a0) + 800001f0: 01853683 ld a3,24(a0) + 800001f4: 0a1071d3 fsub.d ft3,ft0,ft1 + 800001f8: e2018553 fmv.x.d a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00100613 li a2,1 + 80000204: 10d51863 bne a0,a3,80000314 + 80000208: 10c59663 bne a1,a2,80000314 + +000000008000020c : + 8000020c: 00700193 li gp,7 + 80000210: 00002517 auipc a0,0x2 + 80000214: e9050513 addi a0,a0,-368 # 800020a0 + 80000218: 00053007 fld ft0,0(a0) + 8000021c: 00853087 fld ft1,8(a0) + 80000220: 01053107 fld ft2,16(a0) + 80000224: 01853683 ld a3,24(a0) + 80000228: 0a1071d3 fsub.d ft3,ft0,ft1 + 8000022c: e2018553 fmv.x.d a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 00100613 li a2,1 + 80000238: 0cd51e63 bne a0,a3,80000314 + 8000023c: 0cc59c63 bne a1,a2,80000314 + +0000000080000240 : + 80000240: 00800193 li gp,8 + 80000244: 00002517 auipc a0,0x2 + 80000248: e7c50513 addi a0,a0,-388 # 800020c0 + 8000024c: 00053007 fld ft0,0(a0) + 80000250: 00853087 fld ft1,8(a0) + 80000254: 01053107 fld ft2,16(a0) + 80000258: 01853683 ld a3,24(a0) + 8000025c: 121071d3 fmul.d ft3,ft0,ft1 + 80000260: e2018553 fmv.x.d a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00000613 li a2,0 + 8000026c: 0ad51463 bne a0,a3,80000314 + 80000270: 0ac59263 bne a1,a2,80000314 + +0000000080000274 : + 80000274: 00900193 li gp,9 + 80000278: 00002517 auipc a0,0x2 + 8000027c: e6850513 addi a0,a0,-408 # 800020e0 + 80000280: 00053007 fld ft0,0(a0) + 80000284: 00853087 fld ft1,8(a0) + 80000288: 01053107 fld ft2,16(a0) + 8000028c: 01853683 ld a3,24(a0) + 80000290: 121071d3 fmul.d ft3,ft0,ft1 + 80000294: e2018553 fmv.x.d a0,ft3 + 80000298: 001015f3 fsflags a1,zero + 8000029c: 00100613 li a2,1 + 800002a0: 06d51a63 bne a0,a3,80000314 + 800002a4: 06c59863 bne a1,a2,80000314 + +00000000800002a8 : + 800002a8: 00a00193 li gp,10 + 800002ac: 00002517 auipc a0,0x2 + 800002b0: e5450513 addi a0,a0,-428 # 80002100 + 800002b4: 00053007 fld ft0,0(a0) + 800002b8: 00853087 fld ft1,8(a0) + 800002bc: 01053107 fld ft2,16(a0) + 800002c0: 01853683 ld a3,24(a0) + 800002c4: 121071d3 fmul.d ft3,ft0,ft1 + 800002c8: e2018553 fmv.x.d a0,ft3 + 800002cc: 001015f3 fsflags a1,zero + 800002d0: 00100613 li a2,1 + 800002d4: 04d51063 bne a0,a3,80000314 + 800002d8: 02c59e63 bne a1,a2,80000314 + +00000000800002dc : + 800002dc: 00b00193 li gp,11 + 800002e0: 00002517 auipc a0,0x2 + 800002e4: e4050513 addi a0,a0,-448 # 80002120 + 800002e8: 00053007 fld ft0,0(a0) + 800002ec: 00853087 fld ft1,8(a0) + 800002f0: 01053107 fld ft2,16(a0) + 800002f4: 01853683 ld a3,24(a0) + 800002f8: 0a1071d3 fsub.d ft3,ft0,ft1 + 800002fc: e2018553 fmv.x.d a0,ft3 + 80000300: 001015f3 fsflags a1,zero + 80000304: 01000613 li a2,16 + 80000308: 00d51663 bne a0,a3,80000314 + 8000030c: 00c59463 bne a1,a2,80000314 + 80000310: 00301c63 bne zero,gp,80000328 + +0000000080000314 : + 80000314: 0ff0000f fence + 80000318: 00018063 beqz gp,80000318 + 8000031c: 00119193 slli gp,gp,0x1 + 80000320: 0011e193 ori gp,gp,1 + 80000324: 00000073 ecall + +0000000080000328 : + 80000328: 0ff0000f fence + 8000032c: 00100193 li gp,1 + 80000330: 00000073 ecall + 80000334: c0001073 unimp + 80000338: 0000 unimp + 8000033a: 0000 unimp + 8000033c: 0000 unimp + 8000033e: 0000 unimp + 80000340: 0000 unimp + 80000342: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 0000 unimp + 80002004: 0000 unimp + 80002006: 4004 lw s1,0(s0) + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 3ff0 fld fa2,248(a5) + 80002010: 0000 unimp + 80002012: 0000 unimp + 80002014: 0000 unimp + 80002016: 0000 unimp + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: 0000 unimp + 8000201e: 400c lw a1,0(s0) + +0000000080002020 : + 80002020: 6666 ld a2,88(sp) + 80002022: 6666 ld a2,88(sp) + 80002024: 4c66 lw s8,88(sp) + 80002026: 999ac093 xori ra,s5,-1639 + 8000202a: 9999 andi a1,a1,-26 + 8000202c: 9999 andi a1,a1,-26 + 8000202e: 3ff1 addiw t6,t6,-4 + 80002030: 0000 unimp + 80002032: 0000 unimp + 80002034: 0000 unimp + 80002036: 0000 unimp + 80002038: 0000 unimp + 8000203a: 0000 unimp + 8000203c: 4800 lw s0,16(s0) + 8000203e: xori ra,gp,-689 + +0000000080002040 : + 80002040: d4f1 beqz s1,8000200c + 80002042: 53c8 lw a0,36(a5) + 80002044: 400921fb 0x400921fb + 80002048: 8c3a mv s8,a4 + 8000204a: e230 sd a2,64(a2) + 8000204c: 798e ld s3,224(sp) + 8000204e: 3e45 addiw t3,t3,-15 + 80002050: 0000 unimp + 80002052: 0000 unimp + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: 6ddf 5520 21fb 0x21fb55206ddf + 8000205e: 4009 c.li zero,2 + +0000000080002060 : + 80002060: 0000 unimp + 80002062: 0000 unimp + 80002064: 0000 unimp + 80002066: 4004 lw s1,0(s0) + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 3ff0 fld fa2,248(a5) + 80002070: 0000 unimp + 80002072: 0000 unimp + 80002074: 0000 unimp + 80002076: 0000 unimp + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: 0000 unimp + 8000207e: 3ff8 fld fa4,248(a5) + +0000000080002080 : + 80002080: 6666 ld a2,88(sp) + 80002082: 6666 ld a2,88(sp) + 80002084: 4c66 lw s8,88(sp) + 80002086: 999ac093 xori ra,s5,-1639 + 8000208a: 9999 andi a1,a1,-26 + 8000208c: 9999 andi a1,a1,-26 + 8000208e: bff1 j 8000206a + 80002090: 0000 unimp + 80002092: 0000 unimp + 80002094: 0000 unimp + 80002096: 0000 unimp + 80002098: 0000 unimp + 8000209a: 0000 unimp + 8000209c: 4800 lw s0,16(s0) + 8000209e: xori ra,gp,-689 + +00000000800020a0 : + 800020a0: d4f1 beqz s1,8000206c + 800020a2: 53c8 lw a0,36(a5) + 800020a4: 400921fb 0x400921fb + 800020a8: 8c3a mv s8,a4 + 800020aa: e230 sd a2,64(a2) + 800020ac: 798e ld s3,224(sp) + 800020ae: 3e45 addiw t3,t3,-15 + 800020b0: 0000 unimp + 800020b2: 0000 unimp + 800020b4: 0000 unimp + 800020b6: 0000 unimp + 800020b8: 52713c03 ld s8,1319(sp) + 800020bc: 400921fb 0x400921fb + +00000000800020c0 : + 800020c0: 0000 unimp + 800020c2: 0000 unimp + 800020c4: 0000 unimp + 800020c6: 4004 lw s1,0(s0) + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 3ff0 fld fa2,248(a5) + 800020d0: 0000 unimp + 800020d2: 0000 unimp + 800020d4: 0000 unimp + 800020d6: 0000 unimp + 800020d8: 0000 unimp + 800020da: 0000 unimp + 800020dc: 0000 unimp + 800020de: 4004 lw s1,0(s0) + +00000000800020e0 : + 800020e0: 6666 ld a2,88(sp) + 800020e2: 6666 ld a2,88(sp) + 800020e4: 4c66 lw s8,88(sp) + 800020e6: 999ac093 xori ra,s5,-1639 + 800020ea: 9999 andi a1,a1,-26 + 800020ec: 9999 andi a1,a1,-26 + 800020ee: bff1 j 800020ca + 800020f0: 0000 unimp + 800020f2: 0000 unimp + 800020f4: 0000 unimp + 800020f6: 0000 unimp + 800020f8: 0a3d addi s4,s4,15 + 800020fa: 3a70a3d7 0x3a70a3d7 + 800020fe: 4095 li ra,5 + +0000000080002100 : + 80002100: d4f1 beqz s1,800020cc + 80002102: 53c8 lw a0,36(a5) + 80002104: 400921fb 0x400921fb + 80002108: 8c3a mv s8,a4 + 8000210a: e230 sd a2,64(a2) + 8000210c: 798e ld s3,224(sp) + 8000210e: 3e45 addiw t3,t3,-15 + 80002110: 0000 unimp + 80002112: 0000 unimp + 80002114: 0000 unimp + 80002116: 0000 unimp + 80002118: ff09 bnez a4,80002032 + 8000211a: a5c1 j 800027da <_end+0x69a> + 8000211c: ddc5 beqz a1,800020d4 + 8000211e: 3e60 fld fs0,248(a2) + +0000000080002120 : + 80002120: 0000 unimp + 80002122: 0000 unimp + 80002124: 0000 unimp + 80002126: 7ff0 ld a2,248(a5) + 80002128: 0000 unimp + 8000212a: 0000 unimp + 8000212c: 0000 unimp + 8000212e: 7ff0 ld a2,248(a5) + 80002130: 0000 unimp + 80002132: 0000 unimp + 80002134: 0000 unimp + 80002136: 0000 unimp + 80002138: 0000 unimp + 8000213a: 0000 unimp + 8000213c: 0000 unimp + 8000213e: 7ff8 ld a4,248(a5) diff --git a/Tests/isa/rv64ud-p-fclass b/Tests/isa/rv64ud-p-fclass new file mode 100644 index 0000000..b0b210d Binary files /dev/null and b/Tests/isa/rv64ud-p-fclass differ diff --git a/Tests/isa/rv64ud-p-fclass.dump b/Tests/isa/rv64ud-p-fclass.dump new file mode 100644 index 0000000..8fb0b28 --- /dev/null +++ b/Tests/isa/rv64ud-p-fclass.dump @@ -0,0 +1,212 @@ + +rv64ud-p-fclass: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: fff0051b addiw a0,zero,-1 + 8000010c: 03451513 slli a0,a0,0x34 + 80000110: f2050553 fmv.d.x fa0,a0 + 80000114: e2051553 fclass.d a0,fa0 + 80000118: 00100e93 li t4,1 + 8000011c: 00200193 li gp,2 + 80000120: 11d51863 bne a0,t4,80000230 + +0000000080000124 : + 80000124: bff0051b addiw a0,zero,-1025 + 80000128: 03451513 slli a0,a0,0x34 + 8000012c: f2050553 fmv.d.x fa0,a0 + 80000130: e2051553 fclass.d a0,fa0 + 80000134: 00200e93 li t4,2 + 80000138: 00300193 li gp,3 + 8000013c: 0fd51a63 bne a0,t4,80000230 + +0000000080000140 : + 80000140: 8010051b addiw a0,zero,-2047 + 80000144: 03451513 slli a0,a0,0x34 + 80000148: fff50513 addi a0,a0,-1 # 1fff <_start-0x7fffe001> + 8000014c: f2050553 fmv.d.x fa0,a0 + 80000150: e2051553 fclass.d a0,fa0 + 80000154: 00400e93 li t4,4 + 80000158: 00400193 li gp,4 + 8000015c: 0dd51a63 bne a0,t4,80000230 + +0000000080000160 : + 80000160: fff0051b addiw a0,zero,-1 + 80000164: 03f51513 slli a0,a0,0x3f + 80000168: f2050553 fmv.d.x fa0,a0 + 8000016c: e2051553 fclass.d a0,fa0 + 80000170: 00800e93 li t4,8 + 80000174: 00500193 li gp,5 + 80000178: 0bd51c63 bne a0,t4,80000230 + +000000008000017c : + 8000017c: 00000513 li a0,0 + 80000180: f2050553 fmv.d.x fa0,a0 + 80000184: e2051553 fclass.d a0,fa0 + 80000188: 01000e93 li t4,16 + 8000018c: 00600193 li gp,6 + 80000190: 0bd51063 bne a0,t4,80000230 + +0000000080000194 : + 80000194: 0010051b addiw a0,zero,1 + 80000198: 03451513 slli a0,a0,0x34 + 8000019c: fff50513 addi a0,a0,-1 + 800001a0: f2050553 fmv.d.x fa0,a0 + 800001a4: e2051553 fclass.d a0,fa0 + 800001a8: 02000e93 li t4,32 + 800001ac: 00700193 li gp,7 + 800001b0: 09d51063 bne a0,t4,80000230 + +00000000800001b4 : + 800001b4: 3ff0051b addiw a0,zero,1023 + 800001b8: 03451513 slli a0,a0,0x34 + 800001bc: f2050553 fmv.d.x fa0,a0 + 800001c0: e2051553 fclass.d a0,fa0 + 800001c4: 04000e93 li t4,64 + 800001c8: 00800193 li gp,8 + 800001cc: 07d51263 bne a0,t4,80000230 + +00000000800001d0 : + 800001d0: 7ff0051b addiw a0,zero,2047 + 800001d4: 03451513 slli a0,a0,0x34 + 800001d8: f2050553 fmv.d.x fa0,a0 + 800001dc: e2051553 fclass.d a0,fa0 + 800001e0: 08000e93 li t4,128 + 800001e4: 00900193 li gp,9 + 800001e8: 05d51463 bne a0,t4,80000230 + +00000000800001ec : + 800001ec: 7ff0051b addiw a0,zero,2047 + 800001f0: 03451513 slli a0,a0,0x34 + 800001f4: 00150513 addi a0,a0,1 + 800001f8: f2050553 fmv.d.x fa0,a0 + 800001fc: e2051553 fclass.d a0,fa0 + 80000200: 10000e93 li t4,256 + 80000204: 00a00193 li gp,10 + 80000208: 03d51463 bne a0,t4,80000230 + +000000008000020c : + 8000020c: 00001537 lui a0,0x1 + 80000210: fff5051b addiw a0,a0,-1 + 80000214: 03351513 slli a0,a0,0x33 + 80000218: f2050553 fmv.d.x fa0,a0 + 8000021c: e2051553 fclass.d a0,fa0 + 80000220: 20000e93 li t4,512 + 80000224: 00b00193 li gp,11 + 80000228: 01d51463 bne a0,t4,80000230 + 8000022c: 00301c63 bne zero,gp,80000244 + +0000000080000230 : + 80000230: 0ff0000f fence + 80000234: 00018063 beqz gp,80000234 + 80000238: 00119193 slli gp,gp,0x1 + 8000023c: 0011e193 ori gp,gp,1 + 80000240: 00000073 ecall + +0000000080000244 : + 80000244: 0ff0000f fence + 80000248: 00100193 li gp,1 + 8000024c: 00000073 ecall + 80000250: c0001073 unimp + 80000254: 0000 unimp + 80000256: 0000 unimp + 80000258: 0000 unimp + 8000025a: 0000 unimp + 8000025c: 0000 unimp + 8000025e: 0000 unimp + 80000260: 0000 unimp + 80000262: 0000 unimp + 80000264: 0000 unimp + 80000266: 0000 unimp + 80000268: 0000 unimp + 8000026a: 0000 unimp + 8000026c: 0000 unimp + 8000026e: 0000 unimp + 80000270: 0000 unimp + 80000272: 0000 unimp + 80000274: 0000 unimp + 80000276: 0000 unimp + 80000278: 0000 unimp + 8000027a: 0000 unimp + 8000027c: 0000 unimp + 8000027e: 0000 unimp + 80000280: 0000 unimp + 80000282: 0000 unimp diff --git a/Tests/isa/rv64ud-p-fcmp b/Tests/isa/rv64ud-p-fcmp new file mode 100644 index 0000000..fd0c7f5 Binary files /dev/null and b/Tests/isa/rv64ud-p-fcmp differ diff --git a/Tests/isa/rv64ud-p-fcmp.dump b/Tests/isa/rv64ud-p-fcmp.dump new file mode 100644 index 0000000..3598543 --- /dev/null +++ b/Tests/isa/rv64ud-p-fcmp.dump @@ -0,0 +1,561 @@ + +rv64ud-p-fcmp: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00053007 fld ft0,0(a0) + 80000118: 00853087 fld ft1,8(a0) + 8000011c: 01053107 fld ft2,16(a0) + 80000120: 01853683 ld a3,24(a0) + 80000124: a2102553 feq.d a0,ft0,ft1 + 80000128: 001015f3 fsflags a1,zero + 8000012c: 00000613 li a2,0 + 80000130: 2ad51663 bne a0,a3,800003dc + 80000134: 2ac59463 bne a1,a2,800003dc + +0000000080000138 : + 80000138: 00300193 li gp,3 + 8000013c: 00002517 auipc a0,0x2 + 80000140: ee450513 addi a0,a0,-284 # 80002020 + 80000144: 00053007 fld ft0,0(a0) + 80000148: 00853087 fld ft1,8(a0) + 8000014c: 01053107 fld ft2,16(a0) + 80000150: 01853683 ld a3,24(a0) + 80000154: a2100553 fle.d a0,ft0,ft1 + 80000158: 001015f3 fsflags a1,zero + 8000015c: 00000613 li a2,0 + 80000160: 26d51e63 bne a0,a3,800003dc + 80000164: 26c59c63 bne a1,a2,800003dc + +0000000080000168 : + 80000168: 00400193 li gp,4 + 8000016c: 00002517 auipc a0,0x2 + 80000170: ed450513 addi a0,a0,-300 # 80002040 + 80000174: 00053007 fld ft0,0(a0) + 80000178: 00853087 fld ft1,8(a0) + 8000017c: 01053107 fld ft2,16(a0) + 80000180: 01853683 ld a3,24(a0) + 80000184: a2101553 flt.d a0,ft0,ft1 + 80000188: 001015f3 fsflags a1,zero + 8000018c: 00000613 li a2,0 + 80000190: 24d51663 bne a0,a3,800003dc + 80000194: 24c59463 bne a1,a2,800003dc + +0000000080000198 : + 80000198: 00500193 li gp,5 + 8000019c: 00002517 auipc a0,0x2 + 800001a0: ec450513 addi a0,a0,-316 # 80002060 + 800001a4: 00053007 fld ft0,0(a0) + 800001a8: 00853087 fld ft1,8(a0) + 800001ac: 01053107 fld ft2,16(a0) + 800001b0: 01853683 ld a3,24(a0) + 800001b4: a2102553 feq.d a0,ft0,ft1 + 800001b8: 001015f3 fsflags a1,zero + 800001bc: 00000613 li a2,0 + 800001c0: 20d51e63 bne a0,a3,800003dc + 800001c4: 20c59c63 bne a1,a2,800003dc + +00000000800001c8 : + 800001c8: 00600193 li gp,6 + 800001cc: 00002517 auipc a0,0x2 + 800001d0: eb450513 addi a0,a0,-332 # 80002080 + 800001d4: 00053007 fld ft0,0(a0) + 800001d8: 00853087 fld ft1,8(a0) + 800001dc: 01053107 fld ft2,16(a0) + 800001e0: 01853683 ld a3,24(a0) + 800001e4: a2100553 fle.d a0,ft0,ft1 + 800001e8: 001015f3 fsflags a1,zero + 800001ec: 00000613 li a2,0 + 800001f0: 1ed51663 bne a0,a3,800003dc + 800001f4: 1ec59463 bne a1,a2,800003dc + +00000000800001f8 : + 800001f8: 00700193 li gp,7 + 800001fc: 00002517 auipc a0,0x2 + 80000200: ea450513 addi a0,a0,-348 # 800020a0 + 80000204: 00053007 fld ft0,0(a0) + 80000208: 00853087 fld ft1,8(a0) + 8000020c: 01053107 fld ft2,16(a0) + 80000210: 01853683 ld a3,24(a0) + 80000214: a2101553 flt.d a0,ft0,ft1 + 80000218: 001015f3 fsflags a1,zero + 8000021c: 00000613 li a2,0 + 80000220: 1ad51e63 bne a0,a3,800003dc + 80000224: 1ac59c63 bne a1,a2,800003dc + +0000000080000228 : + 80000228: 00800193 li gp,8 + 8000022c: 00002517 auipc a0,0x2 + 80000230: e9450513 addi a0,a0,-364 # 800020c0 + 80000234: 00053007 fld ft0,0(a0) + 80000238: 00853087 fld ft1,8(a0) + 8000023c: 01053107 fld ft2,16(a0) + 80000240: 01853683 ld a3,24(a0) + 80000244: a2102553 feq.d a0,ft0,ft1 + 80000248: 001015f3 fsflags a1,zero + 8000024c: 00000613 li a2,0 + 80000250: 18d51663 bne a0,a3,800003dc + 80000254: 18c59463 bne a1,a2,800003dc + +0000000080000258 : + 80000258: 00900193 li gp,9 + 8000025c: 00002517 auipc a0,0x2 + 80000260: e8450513 addi a0,a0,-380 # 800020e0 + 80000264: 00053007 fld ft0,0(a0) + 80000268: 00853087 fld ft1,8(a0) + 8000026c: 01053107 fld ft2,16(a0) + 80000270: 01853683 ld a3,24(a0) + 80000274: a2102553 feq.d a0,ft0,ft1 + 80000278: 001015f3 fsflags a1,zero + 8000027c: 00000613 li a2,0 + 80000280: 14d51e63 bne a0,a3,800003dc + 80000284: 14c59c63 bne a1,a2,800003dc + +0000000080000288 : + 80000288: 00a00193 li gp,10 + 8000028c: 00002517 auipc a0,0x2 + 80000290: e7450513 addi a0,a0,-396 # 80002100 + 80000294: 00053007 fld ft0,0(a0) + 80000298: 00853087 fld ft1,8(a0) + 8000029c: 01053107 fld ft2,16(a0) + 800002a0: 01853683 ld a3,24(a0) + 800002a4: a2102553 feq.d a0,ft0,ft1 + 800002a8: 001015f3 fsflags a1,zero + 800002ac: 01000613 li a2,16 + 800002b0: 12d51663 bne a0,a3,800003dc + 800002b4: 12c59463 bne a1,a2,800003dc + +00000000800002b8 : + 800002b8: 00b00193 li gp,11 + 800002bc: 00002517 auipc a0,0x2 + 800002c0: e6450513 addi a0,a0,-412 # 80002120 + 800002c4: 00053007 fld ft0,0(a0) + 800002c8: 00853087 fld ft1,8(a0) + 800002cc: 01053107 fld ft2,16(a0) + 800002d0: 01853683 ld a3,24(a0) + 800002d4: a2101553 flt.d a0,ft0,ft1 + 800002d8: 001015f3 fsflags a1,zero + 800002dc: 01000613 li a2,16 + 800002e0: 0ed51e63 bne a0,a3,800003dc + 800002e4: 0ec59c63 bne a1,a2,800003dc + +00000000800002e8 : + 800002e8: 00c00193 li gp,12 + 800002ec: 00002517 auipc a0,0x2 + 800002f0: e5450513 addi a0,a0,-428 # 80002140 + 800002f4: 00053007 fld ft0,0(a0) + 800002f8: 00853087 fld ft1,8(a0) + 800002fc: 01053107 fld ft2,16(a0) + 80000300: 01853683 ld a3,24(a0) + 80000304: a2101553 flt.d a0,ft0,ft1 + 80000308: 001015f3 fsflags a1,zero + 8000030c: 01000613 li a2,16 + 80000310: 0cd51663 bne a0,a3,800003dc + 80000314: 0cc59463 bne a1,a2,800003dc + +0000000080000318 : + 80000318: 00d00193 li gp,13 + 8000031c: 00002517 auipc a0,0x2 + 80000320: e4450513 addi a0,a0,-444 # 80002160 + 80000324: 00053007 fld ft0,0(a0) + 80000328: 00853087 fld ft1,8(a0) + 8000032c: 01053107 fld ft2,16(a0) + 80000330: 01853683 ld a3,24(a0) + 80000334: a2101553 flt.d a0,ft0,ft1 + 80000338: 001015f3 fsflags a1,zero + 8000033c: 01000613 li a2,16 + 80000340: 08d51e63 bne a0,a3,800003dc + 80000344: 08c59c63 bne a1,a2,800003dc + +0000000080000348 : + 80000348: 00e00193 li gp,14 + 8000034c: 00002517 auipc a0,0x2 + 80000350: e3450513 addi a0,a0,-460 # 80002180 + 80000354: 00053007 fld ft0,0(a0) + 80000358: 00853087 fld ft1,8(a0) + 8000035c: 01053107 fld ft2,16(a0) + 80000360: 01853683 ld a3,24(a0) + 80000364: a2100553 fle.d a0,ft0,ft1 + 80000368: 001015f3 fsflags a1,zero + 8000036c: 01000613 li a2,16 + 80000370: 06d51663 bne a0,a3,800003dc + 80000374: 06c59463 bne a1,a2,800003dc + +0000000080000378 : + 80000378: 00f00193 li gp,15 + 8000037c: 00002517 auipc a0,0x2 + 80000380: e2450513 addi a0,a0,-476 # 800021a0 + 80000384: 00053007 fld ft0,0(a0) + 80000388: 00853087 fld ft1,8(a0) + 8000038c: 01053107 fld ft2,16(a0) + 80000390: 01853683 ld a3,24(a0) + 80000394: a2100553 fle.d a0,ft0,ft1 + 80000398: 001015f3 fsflags a1,zero + 8000039c: 01000613 li a2,16 + 800003a0: 02d51e63 bne a0,a3,800003dc + 800003a4: 02c59c63 bne a1,a2,800003dc + +00000000800003a8 : + 800003a8: 01000193 li gp,16 + 800003ac: 00002517 auipc a0,0x2 + 800003b0: e1450513 addi a0,a0,-492 # 800021c0 + 800003b4: 00053007 fld ft0,0(a0) + 800003b8: 00853087 fld ft1,8(a0) + 800003bc: 01053107 fld ft2,16(a0) + 800003c0: 01853683 ld a3,24(a0) + 800003c4: a2100553 fle.d a0,ft0,ft1 + 800003c8: 001015f3 fsflags a1,zero + 800003cc: 01000613 li a2,16 + 800003d0: 00d51663 bne a0,a3,800003dc + 800003d4: 00c59463 bne a1,a2,800003dc + 800003d8: 00301c63 bne zero,gp,800003f0 + +00000000800003dc : + 800003dc: 0ff0000f fence + 800003e0: 00018063 beqz gp,800003e0 + 800003e4: 00119193 slli gp,gp,0x1 + 800003e8: 0011e193 ori gp,gp,1 + 800003ec: 00000073 ecall + +00000000800003f0 : + 800003f0: 0ff0000f fence + 800003f4: 00100193 li gp,1 + 800003f8: 00000073 ecall + 800003fc: c0001073 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 5c28f5c3 0x5c28f5c3 + 80002004: bff5c28f 0xbff5c28f + 80002008: 5c28f5c3 0x5c28f5c3 + 8000200c: bff5c28f 0xbff5c28f + 80002010: 0000 unimp + 80002012: 0000 unimp + 80002014: 0000 unimp + 80002016: 0000 unimp + 80002018: 0001 nop + 8000201a: 0000 unimp + 8000201c: 0000 unimp + 8000201e: 0000 unimp + +0000000080002020 : + 80002020: 5c28f5c3 0x5c28f5c3 + 80002024: bff5c28f 0xbff5c28f + 80002028: 5c28f5c3 0x5c28f5c3 + 8000202c: bff5c28f 0xbff5c28f + 80002030: 0000 unimp + 80002032: 0000 unimp + 80002034: 0000 unimp + 80002036: 0000 unimp + 80002038: 0001 nop + 8000203a: 0000 unimp + 8000203c: 0000 unimp + 8000203e: 0000 unimp + +0000000080002040 : + 80002040: 5c28f5c3 0x5c28f5c3 + 80002044: bff5c28f 0xbff5c28f + 80002048: 5c28f5c3 0x5c28f5c3 + 8000204c: bff5c28f 0xbff5c28f + 80002050: 0000 unimp + 80002052: 0000 unimp + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0000 unimp + 8000205e: 0000 unimp + +0000000080002060 : + 80002060: 51ec lw a1,100(a1) + 80002062: 1eb8 addi a4,sp,888 + 80002064: eb85 bnez a5,80002094 + 80002066: bff5 j 80002062 + 80002068: 5c28f5c3 0x5c28f5c3 + 8000206c: bff5c28f 0xbff5c28f + 80002070: 0000 unimp + 80002072: 0000 unimp + 80002074: 0000 unimp + 80002076: 0000 unimp + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: 0000 unimp + 8000207e: 0000 unimp + +0000000080002080 : + 80002080: 51ec lw a1,100(a1) + 80002082: 1eb8 addi a4,sp,888 + 80002084: eb85 bnez a5,800020b4 + 80002086: bff5 j 80002082 + 80002088: 5c28f5c3 0x5c28f5c3 + 8000208c: bff5c28f 0xbff5c28f + 80002090: 0000 unimp + 80002092: 0000 unimp + 80002094: 0000 unimp + 80002096: 0000 unimp + 80002098: 0001 nop + 8000209a: 0000 unimp + 8000209c: 0000 unimp + 8000209e: 0000 unimp + +00000000800020a0 : + 800020a0: 51ec lw a1,100(a1) + 800020a2: 1eb8 addi a4,sp,888 + 800020a4: eb85 bnez a5,800020d4 + 800020a6: bff5 j 800020a2 + 800020a8: 5c28f5c3 0x5c28f5c3 + 800020ac: bff5c28f 0xbff5c28f + 800020b0: 0000 unimp + 800020b2: 0000 unimp + 800020b4: 0000 unimp + 800020b6: 0000 unimp + 800020b8: 0001 nop + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: 0000 unimp + +00000000800020c0 : + 800020c0: ffff 0xffff + 800020c2: ffff 0xffff + 800020c4: ffff 0xffff + 800020c6: 7fff 0x7fff + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 0000 unimp + 800020d0: 0000 unimp + 800020d2: 0000 unimp + 800020d4: 0000 unimp + 800020d6: 0000 unimp + 800020d8: 0000 unimp + 800020da: 0000 unimp + 800020dc: 0000 unimp + 800020de: 0000 unimp + +00000000800020e0 : + 800020e0: ffff 0xffff + 800020e2: ffff 0xffff + 800020e4: ffff 0xffff + 800020e6: 7fff 0x7fff + 800020e8: ffff 0xffff + 800020ea: ffff 0xffff + 800020ec: ffff 0xffff + 800020ee: 7fff 0x7fff + 800020f0: 0000 unimp + 800020f2: 0000 unimp + 800020f4: 0000 unimp + 800020f6: 0000 unimp + 800020f8: 0000 unimp + 800020fa: 0000 unimp + 800020fc: 0000 unimp + 800020fe: 0000 unimp + +0000000080002100 : + 80002100: 0001 nop + 80002102: 0000 unimp + 80002104: 0000 unimp + 80002106: 7ff0 ld a2,248(a5) + 80002108: 0000 unimp + 8000210a: 0000 unimp + 8000210c: 0000 unimp + 8000210e: 0000 unimp + 80002110: 0000 unimp + 80002112: 0000 unimp + 80002114: 0000 unimp + 80002116: 0000 unimp + 80002118: 0000 unimp + 8000211a: 0000 unimp + 8000211c: 0000 unimp + 8000211e: 0000 unimp + +0000000080002120 : + 80002120: ffff 0xffff + 80002122: ffff 0xffff + 80002124: ffff 0xffff + 80002126: 7fff 0x7fff + 80002128: 0000 unimp + 8000212a: 0000 unimp + 8000212c: 0000 unimp + 8000212e: 0000 unimp + 80002130: 0000 unimp + 80002132: 0000 unimp + 80002134: 0000 unimp + 80002136: 0000 unimp + 80002138: 0000 unimp + 8000213a: 0000 unimp + 8000213c: 0000 unimp + 8000213e: 0000 unimp + +0000000080002140 : + 80002140: ffff 0xffff + 80002142: ffff 0xffff + 80002144: ffff 0xffff + 80002146: 7fff 0x7fff + 80002148: ffff 0xffff + 8000214a: ffff 0xffff + 8000214c: ffff 0xffff + 8000214e: 7fff 0x7fff + 80002150: 0000 unimp + 80002152: 0000 unimp + 80002154: 0000 unimp + 80002156: 0000 unimp + 80002158: 0000 unimp + 8000215a: 0000 unimp + 8000215c: 0000 unimp + 8000215e: 0000 unimp + +0000000080002160 : + 80002160: 0001 nop + 80002162: 0000 unimp + 80002164: 0000 unimp + 80002166: 7ff0 ld a2,248(a5) + 80002168: 0000 unimp + 8000216a: 0000 unimp + 8000216c: 0000 unimp + 8000216e: 0000 unimp + 80002170: 0000 unimp + 80002172: 0000 unimp + 80002174: 0000 unimp + 80002176: 0000 unimp + 80002178: 0000 unimp + 8000217a: 0000 unimp + 8000217c: 0000 unimp + 8000217e: 0000 unimp + +0000000080002180 : + 80002180: ffff 0xffff + 80002182: ffff 0xffff + 80002184: ffff 0xffff + 80002186: 7fff 0x7fff + 80002188: 0000 unimp + 8000218a: 0000 unimp + 8000218c: 0000 unimp + 8000218e: 0000 unimp + 80002190: 0000 unimp + 80002192: 0000 unimp + 80002194: 0000 unimp + 80002196: 0000 unimp + 80002198: 0000 unimp + 8000219a: 0000 unimp + 8000219c: 0000 unimp + 8000219e: 0000 unimp + +00000000800021a0 : + 800021a0: ffff 0xffff + 800021a2: ffff 0xffff + 800021a4: ffff 0xffff + 800021a6: 7fff 0x7fff + 800021a8: ffff 0xffff + 800021aa: ffff 0xffff + 800021ac: ffff 0xffff + 800021ae: 7fff 0x7fff + 800021b0: 0000 unimp + 800021b2: 0000 unimp + 800021b4: 0000 unimp + 800021b6: 0000 unimp + 800021b8: 0000 unimp + 800021ba: 0000 unimp + 800021bc: 0000 unimp + 800021be: 0000 unimp + +00000000800021c0 : + 800021c0: 0001 nop + 800021c2: 0000 unimp + 800021c4: 0000 unimp + 800021c6: 7ff0 ld a2,248(a5) + 800021c8: 0000 unimp + 800021ca: 0000 unimp + 800021cc: 0000 unimp + 800021ce: 0000 unimp + 800021d0: 0000 unimp + 800021d2: 0000 unimp + 800021d4: 0000 unimp + 800021d6: 0000 unimp + 800021d8: 0000 unimp + 800021da: 0000 unimp + 800021dc: 0000 unimp + 800021de: 0000 unimp diff --git a/Tests/isa/rv64ud-p-fcvt b/Tests/isa/rv64ud-p-fcvt new file mode 100644 index 0000000..7cd14d2 Binary files /dev/null and b/Tests/isa/rv64ud-p-fcvt differ diff --git a/Tests/isa/rv64ud-p-fcvt.dump b/Tests/isa/rv64ud-p-fcvt.dump new file mode 100644 index 0000000..54e2a24 --- /dev/null +++ b/Tests/isa/rv64ud-p-fcvt.dump @@ -0,0 +1,327 @@ + +rv64ud-p-fcvt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00053683 ld a3,0(a0) + 80000118: 00200513 li a0,2 + 8000011c: d2050053 fcvt.d.w ft0,a0 + 80000120: 00101073 fsflags zero + 80000124: e2000553 fmv.x.d a0,ft0 + 80000128: 1ad51263 bne a0,a3,800002cc + +000000008000012c : + 8000012c: 00300193 li gp,3 + 80000130: 00002517 auipc a0,0x2 + 80000134: ed850513 addi a0,a0,-296 # 80002008 + 80000138: 00053683 ld a3,0(a0) + 8000013c: ffe00513 li a0,-2 + 80000140: d2050053 fcvt.d.w ft0,a0 + 80000144: 00101073 fsflags zero + 80000148: e2000553 fmv.x.d a0,ft0 + 8000014c: 18d51063 bne a0,a3,800002cc + +0000000080000150 : + 80000150: 00400193 li gp,4 + 80000154: 00002517 auipc a0,0x2 + 80000158: ebc50513 addi a0,a0,-324 # 80002010 + 8000015c: 00053683 ld a3,0(a0) + 80000160: 00200513 li a0,2 + 80000164: d2150053 fcvt.d.wu ft0,a0 + 80000168: 00101073 fsflags zero + 8000016c: e2000553 fmv.x.d a0,ft0 + 80000170: 14d51e63 bne a0,a3,800002cc + +0000000080000174 : + 80000174: 00500193 li gp,5 + 80000178: 00002517 auipc a0,0x2 + 8000017c: ea050513 addi a0,a0,-352 # 80002018 + 80000180: 00053683 ld a3,0(a0) + 80000184: ffe00513 li a0,-2 + 80000188: d2150053 fcvt.d.wu ft0,a0 + 8000018c: 00101073 fsflags zero + 80000190: e2000553 fmv.x.d a0,ft0 + 80000194: 12d51c63 bne a0,a3,800002cc + +0000000080000198 : + 80000198: 00600193 li gp,6 + 8000019c: 00002517 auipc a0,0x2 + 800001a0: e8450513 addi a0,a0,-380 # 80002020 + 800001a4: 00053683 ld a3,0(a0) + 800001a8: 00200513 li a0,2 + 800001ac: d2257053 fcvt.d.l ft0,a0 + 800001b0: 00101073 fsflags zero + 800001b4: e2000553 fmv.x.d a0,ft0 + 800001b8: 10d51a63 bne a0,a3,800002cc + +00000000800001bc : + 800001bc: 00700193 li gp,7 + 800001c0: 00002517 auipc a0,0x2 + 800001c4: e6850513 addi a0,a0,-408 # 80002028 + 800001c8: 00053683 ld a3,0(a0) + 800001cc: ffe00513 li a0,-2 + 800001d0: d2257053 fcvt.d.l ft0,a0 + 800001d4: 00101073 fsflags zero + 800001d8: e2000553 fmv.x.d a0,ft0 + 800001dc: 0ed51863 bne a0,a3,800002cc + +00000000800001e0 : + 800001e0: 00800193 li gp,8 + 800001e4: 00002517 auipc a0,0x2 + 800001e8: e4c50513 addi a0,a0,-436 # 80002030 + 800001ec: 00053683 ld a3,0(a0) + 800001f0: 00200513 li a0,2 + 800001f4: d2357053 fcvt.d.lu ft0,a0 + 800001f8: 00101073 fsflags zero + 800001fc: e2000553 fmv.x.d a0,ft0 + 80000200: 0cd51663 bne a0,a3,800002cc + +0000000080000204 : + 80000204: 00900193 li gp,9 + 80000208: 00002517 auipc a0,0x2 + 8000020c: e3050513 addi a0,a0,-464 # 80002038 + 80000210: 00053683 ld a3,0(a0) + 80000214: ffe00513 li a0,-2 + 80000218: d2357053 fcvt.d.lu ft0,a0 + 8000021c: 00101073 fsflags zero + 80000220: e2000553 fmv.x.d a0,ft0 + 80000224: 0ad51463 bne a0,a3,800002cc + +0000000080000228 : + 80000228: 00a00193 li gp,10 + 8000022c: 00002517 auipc a0,0x2 + 80000230: e1450513 addi a0,a0,-492 # 80002040 + 80000234: 00053007 fld ft0,0(a0) + 80000238: 00853087 fld ft1,8(a0) + 8000023c: 01053107 fld ft2,16(a0) + 80000240: 01853683 ld a3,24(a0) + 80000244: 401071d3 fcvt.s.d ft3,ft0 + 80000248: 420181d3 fcvt.d.s ft3,ft3 + 8000024c: e2018553 fmv.x.d a0,ft3 + 80000250: 001015f3 fsflags a1,zero + 80000254: 00000613 li a2,0 + 80000258: 06d51a63 bne a0,a3,800002cc + 8000025c: 06c59863 bne a1,a2,800002cc + +0000000080000260 : + 80000260: 00b00193 li gp,11 + 80000264: 00002517 auipc a0,0x2 + 80000268: dfc50513 addi a0,a0,-516 # 80002060 + 8000026c: 00052007 flw ft0,0(a0) + 80000270: 00452087 flw ft1,4(a0) + 80000274: 00852107 flw ft2,8(a0) + 80000278: 00c52683 lw a3,12(a0) + 8000027c: 420001d3 fcvt.d.s ft3,ft0 + 80000280: 4011f1d3 fcvt.s.d ft3,ft3 + 80000284: e0018553 fmv.x.w a0,ft3 + 80000288: 001015f3 fsflags a1,zero + 8000028c: 00000613 li a2,0 + 80000290: 02d51e63 bne a0,a3,800002cc + 80000294: 02c59c63 bne a1,a2,800002cc + +0000000080000298 : + 80000298: 00002597 auipc a1,0x2 + 8000029c: dd858593 addi a1,a1,-552 # 80002070 + 800002a0: 0005b603 ld a2,0(a1) + 800002a4: f2060153 fmv.d.x ft2,a2 + 800002a8: 40117153 fcvt.s.d ft2,ft2 + 800002ac: 42010153 fcvt.d.s ft2,ft2 + 800002b0: e2010553 fmv.x.d a0,ft2 + 800002b4: 00001eb7 lui t4,0x1 + 800002b8: fffe8e9b addiw t4,t4,-1 + 800002bc: 033e9e93 slli t4,t4,0x33 + 800002c0: 00c00193 li gp,12 + 800002c4: 01d51463 bne a0,t4,800002cc + 800002c8: 00301c63 bne zero,gp,800002e0 + +00000000800002cc : + 800002cc: 0ff0000f fence + 800002d0: 00018063 beqz gp,800002d0 + 800002d4: 00119193 slli gp,gp,0x1 + 800002d8: 0011e193 ori gp,gp,1 + 800002dc: 00000073 ecall + +00000000800002e0 : + 800002e0: 0ff0000f fence + 800002e4: 00100193 li gp,1 + 800002e8: 00000073 ecall + 800002ec: c0001073 unimp + 800002f0: 0000 unimp + 800002f2: 0000 unimp + 800002f4: 0000 unimp + 800002f6: 0000 unimp + 800002f8: 0000 unimp + 800002fa: 0000 unimp + 800002fc: 0000 unimp + 800002fe: 0000 unimp + 80000300: 0000 unimp + 80000302: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 0000 unimp + 80002004: 0000 unimp + 80002006: 4000 lw s0,0(s0) + +0000000080002008 : + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: c000 sw s0,0(s0) + +0000000080002010 : + 80002010: 0000 unimp + 80002012: 0000 unimp + 80002014: 0000 unimp + 80002016: 4000 lw s0,0(s0) + +0000000080002018 : + 80002018: 0000 unimp + 8000201a: ffc0 sd s0,184(a5) + 8000201c: ffff 0xffff + 8000201e: jal gp,8000601e <_end+0x3f9e> + +0000000080002020 : + 80002020: 0000 unimp + 80002022: 0000 unimp + 80002024: 0000 unimp + 80002026: 4000 lw s0,0(s0) + +0000000080002028 : + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: 0000 unimp + 8000202e: c000 sw s0,0(s0) + +0000000080002030 : + 80002030: 0000 unimp + 80002032: 0000 unimp + 80002034: 0000 unimp + 80002036: 4000 lw s0,0(s0) + +0000000080002038 : + 80002038: 0000 unimp + 8000203a: 0000 unimp + 8000203c: 0000 unimp + 8000203e: 43f0 lw a2,68(a5) + +0000000080002040 : + 80002040: 0000 unimp + 80002042: 0000 unimp + 80002044: 0000 unimp + 80002046: bff8 fsd fa4,248(a5) + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 0000 unimp + 8000204e: 0000 unimp + 80002050: 0000 unimp + 80002052: 0000 unimp + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0000 unimp + 8000205e: bff8 fsd fa4,248(a5) + +0000000080002060 : + 80002060: 0000 unimp + 80002062: bfc0 fsd fs0,184(a5) + 80002064: 0000 unimp + 80002066: 0000 unimp + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: bfc0 fsd fs0,184(a5) + +0000000080002070 : + 80002070: 8004 0x8004 + 80002072: ffff 0xffff + 80002074: ffff 0xffff + 80002076: 7ffc ld a5,248(a5) + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: 0000 unimp + 8000207e: 0000 unimp diff --git a/Tests/isa/rv64ud-p-fcvt_w b/Tests/isa/rv64ud-p-fcvt_w new file mode 100644 index 0000000..34d4b8f Binary files /dev/null and b/Tests/isa/rv64ud-p-fcvt_w differ diff --git a/Tests/isa/rv64ud-p-fcvt_w.dump b/Tests/isa/rv64ud-p-fcvt_w.dump new file mode 100644 index 0000000..6094959 --- /dev/null +++ b/Tests/isa/rv64ud-p-fcvt_w.dump @@ -0,0 +1,1364 @@ + +rv64ud-p-fcvt_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00053007 fld ft0,0(a0) + 80000118: 00853087 fld ft1,8(a0) + 8000011c: 01053107 fld ft2,16(a0) + 80000120: 01853683 ld a3,24(a0) + 80000124: c2001553 fcvt.w.d a0,ft0,rtz + 80000128: 001015f3 fsflags a1,zero + 8000012c: 00100613 li a2,1 + 80000130: 02d512e3 bne a0,a3,80000954 + 80000134: 02c590e3 bne a1,a2,80000954 + +0000000080000138 : + 80000138: 00300193 li gp,3 + 8000013c: 00002517 auipc a0,0x2 + 80000140: ee450513 addi a0,a0,-284 # 80002020 + 80000144: 00053007 fld ft0,0(a0) + 80000148: 00853087 fld ft1,8(a0) + 8000014c: 01053107 fld ft2,16(a0) + 80000150: 01853683 ld a3,24(a0) + 80000154: c2001553 fcvt.w.d a0,ft0,rtz + 80000158: 001015f3 fsflags a1,zero + 8000015c: 00000613 li a2,0 + 80000160: 7ed51a63 bne a0,a3,80000954 + 80000164: 7ec59863 bne a1,a2,80000954 + +0000000080000168 : + 80000168: 00400193 li gp,4 + 8000016c: 00002517 auipc a0,0x2 + 80000170: ed450513 addi a0,a0,-300 # 80002040 + 80000174: 00053007 fld ft0,0(a0) + 80000178: 00853087 fld ft1,8(a0) + 8000017c: 01053107 fld ft2,16(a0) + 80000180: 01853683 ld a3,24(a0) + 80000184: c2001553 fcvt.w.d a0,ft0,rtz + 80000188: 001015f3 fsflags a1,zero + 8000018c: 00100613 li a2,1 + 80000190: 7cd51263 bne a0,a3,80000954 + 80000194: 7cc59063 bne a1,a2,80000954 + +0000000080000198 : + 80000198: 00500193 li gp,5 + 8000019c: 00002517 auipc a0,0x2 + 800001a0: ec450513 addi a0,a0,-316 # 80002060 + 800001a4: 00053007 fld ft0,0(a0) + 800001a8: 00853087 fld ft1,8(a0) + 800001ac: 01053107 fld ft2,16(a0) + 800001b0: 01853683 ld a3,24(a0) + 800001b4: c2001553 fcvt.w.d a0,ft0,rtz + 800001b8: 001015f3 fsflags a1,zero + 800001bc: 00100613 li a2,1 + 800001c0: 78d51a63 bne a0,a3,80000954 + 800001c4: 78c59863 bne a1,a2,80000954 + +00000000800001c8 : + 800001c8: 00600193 li gp,6 + 800001cc: 00002517 auipc a0,0x2 + 800001d0: eb450513 addi a0,a0,-332 # 80002080 + 800001d4: 00053007 fld ft0,0(a0) + 800001d8: 00853087 fld ft1,8(a0) + 800001dc: 01053107 fld ft2,16(a0) + 800001e0: 01853683 ld a3,24(a0) + 800001e4: c2001553 fcvt.w.d a0,ft0,rtz + 800001e8: 001015f3 fsflags a1,zero + 800001ec: 00000613 li a2,0 + 800001f0: 76d51263 bne a0,a3,80000954 + 800001f4: 76c59063 bne a1,a2,80000954 + +00000000800001f8 : + 800001f8: 00700193 li gp,7 + 800001fc: 00002517 auipc a0,0x2 + 80000200: ea450513 addi a0,a0,-348 # 800020a0 + 80000204: 00053007 fld ft0,0(a0) + 80000208: 00853087 fld ft1,8(a0) + 8000020c: 01053107 fld ft2,16(a0) + 80000210: 01853683 ld a3,24(a0) + 80000214: c2001553 fcvt.w.d a0,ft0,rtz + 80000218: 001015f3 fsflags a1,zero + 8000021c: 00100613 li a2,1 + 80000220: 72d51a63 bne a0,a3,80000954 + 80000224: 72c59863 bne a1,a2,80000954 + +0000000080000228 : + 80000228: 00800193 li gp,8 + 8000022c: 00002517 auipc a0,0x2 + 80000230: e9450513 addi a0,a0,-364 # 800020c0 + 80000234: 00053007 fld ft0,0(a0) + 80000238: 00853087 fld ft1,8(a0) + 8000023c: 01053107 fld ft2,16(a0) + 80000240: 01853683 ld a3,24(a0) + 80000244: c2001553 fcvt.w.d a0,ft0,rtz + 80000248: 001015f3 fsflags a1,zero + 8000024c: 01000613 li a2,16 + 80000250: 70d51263 bne a0,a3,80000954 + 80000254: 70c59063 bne a1,a2,80000954 + +0000000080000258 : + 80000258: 00900193 li gp,9 + 8000025c: 00002517 auipc a0,0x2 + 80000260: e8450513 addi a0,a0,-380 # 800020e0 + 80000264: 00053007 fld ft0,0(a0) + 80000268: 00853087 fld ft1,8(a0) + 8000026c: 01053107 fld ft2,16(a0) + 80000270: 01853683 ld a3,24(a0) + 80000274: c2001553 fcvt.w.d a0,ft0,rtz + 80000278: 001015f3 fsflags a1,zero + 8000027c: 01000613 li a2,16 + 80000280: 6cd51a63 bne a0,a3,80000954 + 80000284: 6cc59863 bne a1,a2,80000954 + +0000000080000288 : + 80000288: 00c00193 li gp,12 + 8000028c: 00002517 auipc a0,0x2 + 80000290: e7450513 addi a0,a0,-396 # 80002100 + 80000294: 00053007 fld ft0,0(a0) + 80000298: 00853087 fld ft1,8(a0) + 8000029c: 01053107 fld ft2,16(a0) + 800002a0: 01853683 ld a3,24(a0) + 800002a4: c2101553 fcvt.wu.d a0,ft0,rtz + 800002a8: 001015f3 fsflags a1,zero + 800002ac: 01000613 li a2,16 + 800002b0: 6ad51263 bne a0,a3,80000954 + 800002b4: 6ac59063 bne a1,a2,80000954 + +00000000800002b8 : + 800002b8: 00d00193 li gp,13 + 800002bc: 00002517 auipc a0,0x2 + 800002c0: e6450513 addi a0,a0,-412 # 80002120 + 800002c4: 00053007 fld ft0,0(a0) + 800002c8: 00853087 fld ft1,8(a0) + 800002cc: 01053107 fld ft2,16(a0) + 800002d0: 01853683 ld a3,24(a0) + 800002d4: c2101553 fcvt.wu.d a0,ft0,rtz + 800002d8: 001015f3 fsflags a1,zero + 800002dc: 01000613 li a2,16 + 800002e0: 66d51a63 bne a0,a3,80000954 + 800002e4: 66c59863 bne a1,a2,80000954 + +00000000800002e8 : + 800002e8: 00e00193 li gp,14 + 800002ec: 00002517 auipc a0,0x2 + 800002f0: e5450513 addi a0,a0,-428 # 80002140 + 800002f4: 00053007 fld ft0,0(a0) + 800002f8: 00853087 fld ft1,8(a0) + 800002fc: 01053107 fld ft2,16(a0) + 80000300: 01853683 ld a3,24(a0) + 80000304: c2101553 fcvt.wu.d a0,ft0,rtz + 80000308: 001015f3 fsflags a1,zero + 8000030c: 00100613 li a2,1 + 80000310: 64d51263 bne a0,a3,80000954 + 80000314: 64c59063 bne a1,a2,80000954 + +0000000080000318 : + 80000318: 00f00193 li gp,15 + 8000031c: 00002517 auipc a0,0x2 + 80000320: e4450513 addi a0,a0,-444 # 80002160 + 80000324: 00053007 fld ft0,0(a0) + 80000328: 00853087 fld ft1,8(a0) + 8000032c: 01053107 fld ft2,16(a0) + 80000330: 01853683 ld a3,24(a0) + 80000334: c2101553 fcvt.wu.d a0,ft0,rtz + 80000338: 001015f3 fsflags a1,zero + 8000033c: 00100613 li a2,1 + 80000340: 60d51a63 bne a0,a3,80000954 + 80000344: 60c59863 bne a1,a2,80000954 + +0000000080000348 : + 80000348: 01000193 li gp,16 + 8000034c: 00002517 auipc a0,0x2 + 80000350: e3450513 addi a0,a0,-460 # 80002180 + 80000354: 00053007 fld ft0,0(a0) + 80000358: 00853087 fld ft1,8(a0) + 8000035c: 01053107 fld ft2,16(a0) + 80000360: 01853683 ld a3,24(a0) + 80000364: c2101553 fcvt.wu.d a0,ft0,rtz + 80000368: 001015f3 fsflags a1,zero + 8000036c: 00000613 li a2,0 + 80000370: 5ed51263 bne a0,a3,80000954 + 80000374: 5ec59063 bne a1,a2,80000954 + +0000000080000378 : + 80000378: 01100193 li gp,17 + 8000037c: 00002517 auipc a0,0x2 + 80000380: e2450513 addi a0,a0,-476 # 800021a0 + 80000384: 00053007 fld ft0,0(a0) + 80000388: 00853087 fld ft1,8(a0) + 8000038c: 01053107 fld ft2,16(a0) + 80000390: 01853683 ld a3,24(a0) + 80000394: c2101553 fcvt.wu.d a0,ft0,rtz + 80000398: 001015f3 fsflags a1,zero + 8000039c: 00100613 li a2,1 + 800003a0: 5ad51a63 bne a0,a3,80000954 + 800003a4: 5ac59863 bne a1,a2,80000954 + +00000000800003a8 : + 800003a8: 01200193 li gp,18 + 800003ac: 00002517 auipc a0,0x2 + 800003b0: e1450513 addi a0,a0,-492 # 800021c0 + 800003b4: 00053007 fld ft0,0(a0) + 800003b8: 00853087 fld ft1,8(a0) + 800003bc: 01053107 fld ft2,16(a0) + 800003c0: 01853683 ld a3,24(a0) + 800003c4: c2101553 fcvt.wu.d a0,ft0,rtz + 800003c8: 001015f3 fsflags a1,zero + 800003cc: 01000613 li a2,16 + 800003d0: 58d51263 bne a0,a3,80000954 + 800003d4: 58c59063 bne a1,a2,80000954 + +00000000800003d8 : + 800003d8: 01300193 li gp,19 + 800003dc: 00002517 auipc a0,0x2 + 800003e0: e0450513 addi a0,a0,-508 # 800021e0 + 800003e4: 00053007 fld ft0,0(a0) + 800003e8: 00853087 fld ft1,8(a0) + 800003ec: 01053107 fld ft2,16(a0) + 800003f0: 01853683 ld a3,24(a0) + 800003f4: c2101553 fcvt.wu.d a0,ft0,rtz + 800003f8: 001015f3 fsflags a1,zero + 800003fc: 00000613 li a2,0 + 80000400: 54d51a63 bne a0,a3,80000954 + 80000404: 54c59863 bne a1,a2,80000954 + +0000000080000408 : + 80000408: 01600193 li gp,22 + 8000040c: 00002517 auipc a0,0x2 + 80000410: df450513 addi a0,a0,-524 # 80002200 + 80000414: 00053007 fld ft0,0(a0) + 80000418: 00853087 fld ft1,8(a0) + 8000041c: 01053107 fld ft2,16(a0) + 80000420: 01853683 ld a3,24(a0) + 80000424: c2201553 fcvt.l.d a0,ft0,rtz + 80000428: 001015f3 fsflags a1,zero + 8000042c: 00100613 li a2,1 + 80000430: 52d51263 bne a0,a3,80000954 + 80000434: 52c59063 bne a1,a2,80000954 + +0000000080000438 : + 80000438: 01700193 li gp,23 + 8000043c: 00002517 auipc a0,0x2 + 80000440: de450513 addi a0,a0,-540 # 80002220 + 80000444: 00053007 fld ft0,0(a0) + 80000448: 00853087 fld ft1,8(a0) + 8000044c: 01053107 fld ft2,16(a0) + 80000450: 01853683 ld a3,24(a0) + 80000454: c2201553 fcvt.l.d a0,ft0,rtz + 80000458: 001015f3 fsflags a1,zero + 8000045c: 00000613 li a2,0 + 80000460: 4ed51a63 bne a0,a3,80000954 + 80000464: 4ec59863 bne a1,a2,80000954 + +0000000080000468 : + 80000468: 01800193 li gp,24 + 8000046c: 00002517 auipc a0,0x2 + 80000470: dd450513 addi a0,a0,-556 # 80002240 + 80000474: 00053007 fld ft0,0(a0) + 80000478: 00853087 fld ft1,8(a0) + 8000047c: 01053107 fld ft2,16(a0) + 80000480: 01853683 ld a3,24(a0) + 80000484: c2201553 fcvt.l.d a0,ft0,rtz + 80000488: 001015f3 fsflags a1,zero + 8000048c: 00100613 li a2,1 + 80000490: 4cd51263 bne a0,a3,80000954 + 80000494: 4cc59063 bne a1,a2,80000954 + +0000000080000498 : + 80000498: 01900193 li gp,25 + 8000049c: 00002517 auipc a0,0x2 + 800004a0: dc450513 addi a0,a0,-572 # 80002260 + 800004a4: 00053007 fld ft0,0(a0) + 800004a8: 00853087 fld ft1,8(a0) + 800004ac: 01053107 fld ft2,16(a0) + 800004b0: 01853683 ld a3,24(a0) + 800004b4: c2201553 fcvt.l.d a0,ft0,rtz + 800004b8: 001015f3 fsflags a1,zero + 800004bc: 00100613 li a2,1 + 800004c0: 48d51a63 bne a0,a3,80000954 + 800004c4: 48c59863 bne a1,a2,80000954 + +00000000800004c8 : + 800004c8: 01a00193 li gp,26 + 800004cc: 00002517 auipc a0,0x2 + 800004d0: db450513 addi a0,a0,-588 # 80002280 + 800004d4: 00053007 fld ft0,0(a0) + 800004d8: 00853087 fld ft1,8(a0) + 800004dc: 01053107 fld ft2,16(a0) + 800004e0: 01853683 ld a3,24(a0) + 800004e4: c2201553 fcvt.l.d a0,ft0,rtz + 800004e8: 001015f3 fsflags a1,zero + 800004ec: 00000613 li a2,0 + 800004f0: 46d51263 bne a0,a3,80000954 + 800004f4: 46c59063 bne a1,a2,80000954 + +00000000800004f8 : + 800004f8: 01b00193 li gp,27 + 800004fc: 00002517 auipc a0,0x2 + 80000500: da450513 addi a0,a0,-604 # 800022a0 + 80000504: 00053007 fld ft0,0(a0) + 80000508: 00853087 fld ft1,8(a0) + 8000050c: 01053107 fld ft2,16(a0) + 80000510: 01853683 ld a3,24(a0) + 80000514: c2201553 fcvt.l.d a0,ft0,rtz + 80000518: 001015f3 fsflags a1,zero + 8000051c: 00100613 li a2,1 + 80000520: 42d51a63 bne a0,a3,80000954 + 80000524: 42c59863 bne a1,a2,80000954 + +0000000080000528 : + 80000528: 01c00193 li gp,28 + 8000052c: 00002517 auipc a0,0x2 + 80000530: d9450513 addi a0,a0,-620 # 800022c0 + 80000534: 00053007 fld ft0,0(a0) + 80000538: 00853087 fld ft1,8(a0) + 8000053c: 01053107 fld ft2,16(a0) + 80000540: 01853683 ld a3,24(a0) + 80000544: c2201553 fcvt.l.d a0,ft0,rtz + 80000548: 001015f3 fsflags a1,zero + 8000054c: 00000613 li a2,0 + 80000550: 40d51263 bne a0,a3,80000954 + 80000554: 40c59063 bne a1,a2,80000954 + +0000000080000558 : + 80000558: 01d00193 li gp,29 + 8000055c: 00002517 auipc a0,0x2 + 80000560: d8450513 addi a0,a0,-636 # 800022e0 + 80000564: 00053007 fld ft0,0(a0) + 80000568: 00853087 fld ft1,8(a0) + 8000056c: 01053107 fld ft2,16(a0) + 80000570: 01853683 ld a3,24(a0) + 80000574: c2201553 fcvt.l.d a0,ft0,rtz + 80000578: 001015f3 fsflags a1,zero + 8000057c: 00000613 li a2,0 + 80000580: 3cd51a63 bne a0,a3,80000954 + 80000584: 3cc59863 bne a1,a2,80000954 + +0000000080000588 : + 80000588: 01400193 li gp,20 + 8000058c: 00002517 auipc a0,0x2 + 80000590: d7450513 addi a0,a0,-652 # 80002300 + 80000594: 00053007 fld ft0,0(a0) + 80000598: 00853087 fld ft1,8(a0) + 8000059c: 01053107 fld ft2,16(a0) + 800005a0: 01853683 ld a3,24(a0) + 800005a4: c2201553 fcvt.l.d a0,ft0,rtz + 800005a8: 001015f3 fsflags a1,zero + 800005ac: 01000613 li a2,16 + 800005b0: 3ad51263 bne a0,a3,80000954 + 800005b4: 3ac59063 bne a1,a2,80000954 + +00000000800005b8 : + 800005b8: 01500193 li gp,21 + 800005bc: 00002517 auipc a0,0x2 + 800005c0: d6450513 addi a0,a0,-668 # 80002320 + 800005c4: 00053007 fld ft0,0(a0) + 800005c8: 00853087 fld ft1,8(a0) + 800005cc: 01053107 fld ft2,16(a0) + 800005d0: 01853683 ld a3,24(a0) + 800005d4: c2201553 fcvt.l.d a0,ft0,rtz + 800005d8: 001015f3 fsflags a1,zero + 800005dc: 01000613 li a2,16 + 800005e0: 36d51a63 bne a0,a3,80000954 + 800005e4: 36c59863 bne a1,a2,80000954 + +00000000800005e8 : + 800005e8: 02000193 li gp,32 + 800005ec: 00002517 auipc a0,0x2 + 800005f0: d5450513 addi a0,a0,-684 # 80002340 + 800005f4: 00053007 fld ft0,0(a0) + 800005f8: 00853087 fld ft1,8(a0) + 800005fc: 01053107 fld ft2,16(a0) + 80000600: 01853683 ld a3,24(a0) + 80000604: c2301553 fcvt.lu.d a0,ft0,rtz + 80000608: 001015f3 fsflags a1,zero + 8000060c: 01000613 li a2,16 + 80000610: 34d51263 bne a0,a3,80000954 + 80000614: 34c59063 bne a1,a2,80000954 + +0000000080000618 : + 80000618: 02100193 li gp,33 + 8000061c: 00002517 auipc a0,0x2 + 80000620: d4450513 addi a0,a0,-700 # 80002360 + 80000624: 00053007 fld ft0,0(a0) + 80000628: 00853087 fld ft1,8(a0) + 8000062c: 01053107 fld ft2,16(a0) + 80000630: 01853683 ld a3,24(a0) + 80000634: c2301553 fcvt.lu.d a0,ft0,rtz + 80000638: 001015f3 fsflags a1,zero + 8000063c: 01000613 li a2,16 + 80000640: 30d51a63 bne a0,a3,80000954 + 80000644: 30c59863 bne a1,a2,80000954 + +0000000080000648 : + 80000648: 02200193 li gp,34 + 8000064c: 00002517 auipc a0,0x2 + 80000650: d3450513 addi a0,a0,-716 # 80002380 + 80000654: 00053007 fld ft0,0(a0) + 80000658: 00853087 fld ft1,8(a0) + 8000065c: 01053107 fld ft2,16(a0) + 80000660: 01853683 ld a3,24(a0) + 80000664: c2301553 fcvt.lu.d a0,ft0,rtz + 80000668: 001015f3 fsflags a1,zero + 8000066c: 00100613 li a2,1 + 80000670: 2ed51263 bne a0,a3,80000954 + 80000674: 2ec59063 bne a1,a2,80000954 + +0000000080000678 : + 80000678: 02300193 li gp,35 + 8000067c: 00002517 auipc a0,0x2 + 80000680: d2450513 addi a0,a0,-732 # 800023a0 + 80000684: 00053007 fld ft0,0(a0) + 80000688: 00853087 fld ft1,8(a0) + 8000068c: 01053107 fld ft2,16(a0) + 80000690: 01853683 ld a3,24(a0) + 80000694: c2301553 fcvt.lu.d a0,ft0,rtz + 80000698: 001015f3 fsflags a1,zero + 8000069c: 00100613 li a2,1 + 800006a0: 2ad51a63 bne a0,a3,80000954 + 800006a4: 2ac59863 bne a1,a2,80000954 + +00000000800006a8 : + 800006a8: 02400193 li gp,36 + 800006ac: 00002517 auipc a0,0x2 + 800006b0: d1450513 addi a0,a0,-748 # 800023c0 + 800006b4: 00053007 fld ft0,0(a0) + 800006b8: 00853087 fld ft1,8(a0) + 800006bc: 01053107 fld ft2,16(a0) + 800006c0: 01853683 ld a3,24(a0) + 800006c4: c2301553 fcvt.lu.d a0,ft0,rtz + 800006c8: 001015f3 fsflags a1,zero + 800006cc: 00000613 li a2,0 + 800006d0: 28d51263 bne a0,a3,80000954 + 800006d4: 28c59063 bne a1,a2,80000954 + +00000000800006d8 : + 800006d8: 02500193 li gp,37 + 800006dc: 00002517 auipc a0,0x2 + 800006e0: d0450513 addi a0,a0,-764 # 800023e0 + 800006e4: 00053007 fld ft0,0(a0) + 800006e8: 00853087 fld ft1,8(a0) + 800006ec: 01053107 fld ft2,16(a0) + 800006f0: 01853683 ld a3,24(a0) + 800006f4: c2301553 fcvt.lu.d a0,ft0,rtz + 800006f8: 001015f3 fsflags a1,zero + 800006fc: 00100613 li a2,1 + 80000700: 24d51a63 bne a0,a3,80000954 + 80000704: 24c59863 bne a1,a2,80000954 + +0000000080000708 : + 80000708: 02600193 li gp,38 + 8000070c: 00002517 auipc a0,0x2 + 80000710: cf450513 addi a0,a0,-780 # 80002400 + 80000714: 00053007 fld ft0,0(a0) + 80000718: 00853087 fld ft1,8(a0) + 8000071c: 01053107 fld ft2,16(a0) + 80000720: 01853683 ld a3,24(a0) + 80000724: c2301553 fcvt.lu.d a0,ft0,rtz + 80000728: 001015f3 fsflags a1,zero + 8000072c: 01000613 li a2,16 + 80000730: 22d51263 bne a0,a3,80000954 + 80000734: 22c59063 bne a1,a2,80000954 + +0000000080000738 : + 80000738: 02700193 li gp,39 + 8000073c: 00002517 auipc a0,0x2 + 80000740: ce450513 addi a0,a0,-796 # 80002420 + 80000744: 00053007 fld ft0,0(a0) + 80000748: 00853087 fld ft1,8(a0) + 8000074c: 01053107 fld ft2,16(a0) + 80000750: 01853683 ld a3,24(a0) + 80000754: c2301553 fcvt.lu.d a0,ft0,rtz + 80000758: 001015f3 fsflags a1,zero + 8000075c: 00000613 li a2,0 + 80000760: 1ed51a63 bne a0,a3,80000954 + 80000764: 1ec59863 bne a1,a2,80000954 + +0000000080000768 : + 80000768: 00002097 auipc ra,0x2 + 8000076c: ce808093 addi ra,ra,-792 # 80002450 + 80000770: 0000b087 fld ft1,0(ra) + 80000774: c200f0d3 fcvt.w.d ra,ft1 + 80000778: 80000eb7 lui t4,0x80000 + 8000077c: fffe8e9b addiw t4,t4,-1 + 80000780: 02a00193 li gp,42 + 80000784: 1dd09863 bne ra,t4,80000954 + +0000000080000788 : + 80000788: 00002097 auipc ra,0x2 + 8000078c: cc808093 addi ra,ra,-824 # 80002450 + 80000790: 0000b087 fld ft1,0(ra) + 80000794: c220f0d3 fcvt.l.d ra,ft1 + 80000798: fff00e9b addiw t4,zero,-1 + 8000079c: 03fe9e93 slli t4,t4,0x3f + 800007a0: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffffdb8f> + 800007a4: 02b00193 li gp,43 + 800007a8: 1bd09663 bne ra,t4,80000954 + +00000000800007ac : + 800007ac: 00002097 auipc ra,0x2 + 800007b0: ca408093 addi ra,ra,-860 # 80002450 + 800007b4: 0100b087 fld ft1,16(ra) + 800007b8: c200f0d3 fcvt.w.d ra,ft1 + 800007bc: 80000eb7 lui t4,0x80000 + 800007c0: 02c00193 li gp,44 + 800007c4: 19d09863 bne ra,t4,80000954 + +00000000800007c8 : + 800007c8: 00002097 auipc ra,0x2 + 800007cc: c8808093 addi ra,ra,-888 # 80002450 + 800007d0: 0100b087 fld ft1,16(ra) + 800007d4: c220f0d3 fcvt.l.d ra,ft1 + 800007d8: fff00e9b addiw t4,zero,-1 + 800007dc: 03fe9e93 slli t4,t4,0x3f + 800007e0: 02d00193 li gp,45 + 800007e4: 17d09863 bne ra,t4,80000954 + +00000000800007e8 : + 800007e8: 00002097 auipc ra,0x2 + 800007ec: c6808093 addi ra,ra,-920 # 80002450 + 800007f0: 0080b087 fld ft1,8(ra) + 800007f4: c200f0d3 fcvt.w.d ra,ft1 + 800007f8: 80000eb7 lui t4,0x80000 + 800007fc: fffe8e9b addiw t4,t4,-1 + 80000800: 03400193 li gp,52 + 80000804: 15d09863 bne ra,t4,80000954 + +0000000080000808 : + 80000808: 00002097 auipc ra,0x2 + 8000080c: c4808093 addi ra,ra,-952 # 80002450 + 80000810: 0080b087 fld ft1,8(ra) + 80000814: c220f0d3 fcvt.l.d ra,ft1 + 80000818: fff00e9b addiw t4,zero,-1 + 8000081c: 03fe9e93 slli t4,t4,0x3f + 80000820: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffffdb8f> + 80000824: 03500193 li gp,53 + 80000828: 13d09663 bne ra,t4,80000954 + +000000008000082c : + 8000082c: 00002097 auipc ra,0x2 + 80000830: c2408093 addi ra,ra,-988 # 80002450 + 80000834: 0180b087 fld ft1,24(ra) + 80000838: c200f0d3 fcvt.w.d ra,ft1 + 8000083c: 80000eb7 lui t4,0x80000 + 80000840: fffe8e9b addiw t4,t4,-1 + 80000844: 03600193 li gp,54 + 80000848: 11d09663 bne ra,t4,80000954 + +000000008000084c : + 8000084c: 00002097 auipc ra,0x2 + 80000850: c0408093 addi ra,ra,-1020 # 80002450 + 80000854: 0180b087 fld ft1,24(ra) + 80000858: c220f0d3 fcvt.l.d ra,ft1 + 8000085c: fff00e9b addiw t4,zero,-1 + 80000860: 03fe9e93 slli t4,t4,0x3f + 80000864: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffffdb8f> + 80000868: 03700193 li gp,55 + 8000086c: 0fd09463 bne ra,t4,80000954 + +0000000080000870 : + 80000870: 00002097 auipc ra,0x2 + 80000874: be008093 addi ra,ra,-1056 # 80002450 + 80000878: 0000b087 fld ft1,0(ra) + 8000087c: c210f0d3 fcvt.wu.d ra,ft1 + 80000880: fff00e93 li t4,-1 + 80000884: 03e00193 li gp,62 + 80000888: 0dd09663 bne ra,t4,80000954 + +000000008000088c : + 8000088c: 00002097 auipc ra,0x2 + 80000890: bc408093 addi ra,ra,-1084 # 80002450 + 80000894: 0080b087 fld ft1,8(ra) + 80000898: c210f0d3 fcvt.wu.d ra,ft1 + 8000089c: fff00e93 li t4,-1 + 800008a0: 03f00193 li gp,63 + 800008a4: 0bd09863 bne ra,t4,80000954 + +00000000800008a8 : + 800008a8: 00002097 auipc ra,0x2 + 800008ac: ba808093 addi ra,ra,-1112 # 80002450 + 800008b0: 0100b087 fld ft1,16(ra) + 800008b4: c210f0d3 fcvt.wu.d ra,ft1 + 800008b8: 00000e93 li t4,0 + 800008bc: 04000193 li gp,64 + 800008c0: 09d09a63 bne ra,t4,80000954 + +00000000800008c4 : + 800008c4: 00002097 auipc ra,0x2 + 800008c8: b8c08093 addi ra,ra,-1140 # 80002450 + 800008cc: 0180b087 fld ft1,24(ra) + 800008d0: c210f0d3 fcvt.wu.d ra,ft1 + 800008d4: fff00e93 li t4,-1 + 800008d8: 04100193 li gp,65 + 800008dc: 07d09c63 bne ra,t4,80000954 + +00000000800008e0 : + 800008e0: 00002097 auipc ra,0x2 + 800008e4: b7008093 addi ra,ra,-1168 # 80002450 + 800008e8: 0000b087 fld ft1,0(ra) + 800008ec: c230f0d3 fcvt.lu.d ra,ft1 + 800008f0: fff00e93 li t4,-1 + 800008f4: 04200193 li gp,66 + 800008f8: 05d09e63 bne ra,t4,80000954 + +00000000800008fc : + 800008fc: 00002097 auipc ra,0x2 + 80000900: b5408093 addi ra,ra,-1196 # 80002450 + 80000904: 0080b087 fld ft1,8(ra) + 80000908: c230f0d3 fcvt.lu.d ra,ft1 + 8000090c: fff00e93 li t4,-1 + 80000910: 04300193 li gp,67 + 80000914: 05d09063 bne ra,t4,80000954 + +0000000080000918 : + 80000918: 00002097 auipc ra,0x2 + 8000091c: b3808093 addi ra,ra,-1224 # 80002450 + 80000920: 0100b087 fld ft1,16(ra) + 80000924: c230f0d3 fcvt.lu.d ra,ft1 + 80000928: 00000e93 li t4,0 + 8000092c: 04400193 li gp,68 + 80000930: 03d09263 bne ra,t4,80000954 + +0000000080000934 : + 80000934: 00002097 auipc ra,0x2 + 80000938: b1c08093 addi ra,ra,-1252 # 80002450 + 8000093c: 0180b087 fld ft1,24(ra) + 80000940: c230f0d3 fcvt.lu.d ra,ft1 + 80000944: fff00e93 li t4,-1 + 80000948: 04500193 li gp,69 + 8000094c: 01d09463 bne ra,t4,80000954 + 80000950: 00301c63 bne zero,gp,80000968 + +0000000080000954 : + 80000954: 0ff0000f fence + 80000958: 00018063 beqz gp,80000958 + 8000095c: 00119193 slli gp,gp,0x1 + 80000960: 0011e193 ori gp,gp,1 + 80000964: 00000073 ecall + +0000000080000968 : + 80000968: 0ff0000f fence + 8000096c: 00100193 li gp,1 + 80000970: 00000073 ecall + 80000974: c0001073 unimp + 80000978: 0000 unimp + 8000097a: 0000 unimp + 8000097c: 0000 unimp + 8000097e: 0000 unimp + 80000980: 0000 unimp + 80000982: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 999a add s3,s3,t1 + 80002002: 9999 andi a1,a1,-26 + 80002004: 9999 andi a1,a1,-26 + 80002006: bff1 j 80001fe2 + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp + 80002010: 0000 unimp + 80002012: 0000 unimp + 80002014: 0000 unimp + 80002016: 0000 unimp + 80002018: ffff 0xffff + 8000201a: ffff 0xffff + 8000201c: ffff 0xffff + 8000201e: ffff 0xffff + +0000000080002020 : + 80002020: 0000 unimp + 80002022: 0000 unimp + 80002024: 0000 unimp + 80002026: bff0 fsd fa2,248(a5) + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: 0000 unimp + 8000202e: 0000 unimp + 80002030: 0000 unimp + 80002032: 0000 unimp + 80002034: 0000 unimp + 80002036: 0000 unimp + 80002038: ffff 0xffff + 8000203a: ffff 0xffff + 8000203c: ffff 0xffff + 8000203e: ffff 0xffff + +0000000080002040 : + 80002040: cccd beqz s1,800020fa + 80002042: cccc sw a1,28(s1) + 80002044: cccc sw a1,28(s1) + 80002046: bfec fsd fa1,248(a5) + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 0000 unimp + 8000204e: 0000 unimp + 80002050: 0000 unimp + 80002052: 0000 unimp + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0000 unimp + 8000205e: 0000 unimp + +0000000080002060 : + 80002060: cccd beqz s1,8000211a + 80002062: cccc sw a1,28(s1) + 80002064: cccc sw a1,28(s1) + 80002066: 3fec fld fa1,248(a5) + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 0000 unimp + 80002070: 0000 unimp + 80002072: 0000 unimp + 80002074: 0000 unimp + 80002076: 0000 unimp + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: 0000 unimp + 8000207e: 0000 unimp + +0000000080002080 : + 80002080: 0000 unimp + 80002082: 0000 unimp + 80002084: 0000 unimp + 80002086: 3ff0 fld fa2,248(a5) + 80002088: 0000 unimp + 8000208a: 0000 unimp + 8000208c: 0000 unimp + 8000208e: 0000 unimp + 80002090: 0000 unimp + 80002092: 0000 unimp + 80002094: 0000 unimp + 80002096: 0000 unimp + 80002098: 0001 nop + 8000209a: 0000 unimp + 8000209c: 0000 unimp + 8000209e: 0000 unimp + +00000000800020a0 : + 800020a0: 999a add s3,s3,t1 + 800020a2: 9999 andi a1,a1,-26 + 800020a4: 9999 andi a1,a1,-26 + 800020a6: 3ff1 addiw t6,t6,-4 + 800020a8: 0000 unimp + 800020aa: 0000 unimp + 800020ac: 0000 unimp + 800020ae: 0000 unimp + 800020b0: 0000 unimp + 800020b2: 0000 unimp + 800020b4: 0000 unimp + 800020b6: 0000 unimp + 800020b8: 0001 nop + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: 0000 unimp + +00000000800020c0 : + 800020c0: 0000 unimp + 800020c2: c000 sw s0,0(s0) + 800020c4: c1e65a0b 0xc1e65a0b + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 0000 unimp + 800020d0: 0000 unimp + 800020d2: 0000 unimp + 800020d4: 0000 unimp + 800020d6: 0000 unimp + 800020d8: 0000 unimp + 800020da: 8000 0x8000 + 800020dc: ffff 0xffff + 800020de: ffff 0xffff + +00000000800020e0 : + 800020e0: 0000 unimp + 800020e2: c000 sw s0,0(s0) + 800020e4: 41e65a0b 0x41e65a0b + 800020e8: 0000 unimp + 800020ea: 0000 unimp + 800020ec: 0000 unimp + 800020ee: 0000 unimp + 800020f0: 0000 unimp + 800020f2: 0000 unimp + 800020f4: 0000 unimp + 800020f6: 0000 unimp + 800020f8: ffff 0xffff + 800020fa: 7fff 0x7fff + 800020fc: 0000 unimp + 800020fe: 0000 unimp + +0000000080002100 : + 80002100: 0000 unimp + 80002102: 0000 unimp + 80002104: 0000 unimp + 80002106: c008 sw a0,0(s0) + 80002108: 0000 unimp + 8000210a: 0000 unimp + 8000210c: 0000 unimp + 8000210e: 0000 unimp + 80002110: 0000 unimp + 80002112: 0000 unimp + 80002114: 0000 unimp + 80002116: 0000 unimp + 80002118: 0000 unimp + 8000211a: 0000 unimp + 8000211c: 0000 unimp + 8000211e: 0000 unimp + +0000000080002120 : + 80002120: 0000 unimp + 80002122: 0000 unimp + 80002124: 0000 unimp + 80002126: bff0 fsd fa2,248(a5) + 80002128: 0000 unimp + 8000212a: 0000 unimp + 8000212c: 0000 unimp + 8000212e: 0000 unimp + 80002130: 0000 unimp + 80002132: 0000 unimp + 80002134: 0000 unimp + 80002136: 0000 unimp + 80002138: 0000 unimp + 8000213a: 0000 unimp + 8000213c: 0000 unimp + 8000213e: 0000 unimp + +0000000080002140 : + 80002140: cccd beqz s1,800021fa + 80002142: cccc sw a1,28(s1) + 80002144: cccc sw a1,28(s1) + 80002146: bfec fsd fa1,248(a5) + 80002148: 0000 unimp + 8000214a: 0000 unimp + 8000214c: 0000 unimp + 8000214e: 0000 unimp + 80002150: 0000 unimp + 80002152: 0000 unimp + 80002154: 0000 unimp + 80002156: 0000 unimp + 80002158: 0000 unimp + 8000215a: 0000 unimp + 8000215c: 0000 unimp + 8000215e: 0000 unimp + +0000000080002160 : + 80002160: cccd beqz s1,8000221a + 80002162: cccc sw a1,28(s1) + 80002164: cccc sw a1,28(s1) + 80002166: 3fec fld fa1,248(a5) + 80002168: 0000 unimp + 8000216a: 0000 unimp + 8000216c: 0000 unimp + 8000216e: 0000 unimp + 80002170: 0000 unimp + 80002172: 0000 unimp + 80002174: 0000 unimp + 80002176: 0000 unimp + 80002178: 0000 unimp + 8000217a: 0000 unimp + 8000217c: 0000 unimp + 8000217e: 0000 unimp + +0000000080002180 : + 80002180: 0000 unimp + 80002182: 0000 unimp + 80002184: 0000 unimp + 80002186: 3ff0 fld fa2,248(a5) + 80002188: 0000 unimp + 8000218a: 0000 unimp + 8000218c: 0000 unimp + 8000218e: 0000 unimp + 80002190: 0000 unimp + 80002192: 0000 unimp + 80002194: 0000 unimp + 80002196: 0000 unimp + 80002198: 0001 nop + 8000219a: 0000 unimp + 8000219c: 0000 unimp + 8000219e: 0000 unimp + +00000000800021a0 : + 800021a0: 999a add s3,s3,t1 + 800021a2: 9999 andi a1,a1,-26 + 800021a4: 9999 andi a1,a1,-26 + 800021a6: 3ff1 addiw t6,t6,-4 + 800021a8: 0000 unimp + 800021aa: 0000 unimp + 800021ac: 0000 unimp + 800021ae: 0000 unimp + 800021b0: 0000 unimp + 800021b2: 0000 unimp + 800021b4: 0000 unimp + 800021b6: 0000 unimp + 800021b8: 0001 nop + 800021ba: 0000 unimp + 800021bc: 0000 unimp + 800021be: 0000 unimp + +00000000800021c0 : + 800021c0: 0000 unimp + 800021c2: c000 sw s0,0(s0) + 800021c4: c1e65a0b 0xc1e65a0b + 800021c8: 0000 unimp + 800021ca: 0000 unimp + 800021cc: 0000 unimp + 800021ce: 0000 unimp + 800021d0: 0000 unimp + 800021d2: 0000 unimp + 800021d4: 0000 unimp + 800021d6: 0000 unimp + 800021d8: 0000 unimp + 800021da: 0000 unimp + 800021dc: 0000 unimp + 800021de: 0000 unimp + +00000000800021e0 : + 800021e0: 0000 unimp + 800021e2: c000 sw s0,0(s0) + 800021e4: 41e65a0b 0x41e65a0b + 800021e8: 0000 unimp + 800021ea: 0000 unimp + 800021ec: 0000 unimp + 800021ee: 0000 unimp + 800021f0: 0000 unimp + 800021f2: 0000 unimp + 800021f4: 0000 unimp + 800021f6: 0000 unimp + 800021f8: 5e00 lw s0,56(a2) + 800021fa: b2d0 fsd fa2,160(a3) + 800021fc: ffff 0xffff + 800021fe: ffff 0xffff + +0000000080002200 : + 80002200: 999a add s3,s3,t1 + 80002202: 9999 andi a1,a1,-26 + 80002204: 9999 andi a1,a1,-26 + 80002206: bff1 j 800021e2 + 80002208: 0000 unimp + 8000220a: 0000 unimp + 8000220c: 0000 unimp + 8000220e: 0000 unimp + 80002210: 0000 unimp + 80002212: 0000 unimp + 80002214: 0000 unimp + 80002216: 0000 unimp + 80002218: ffff 0xffff + 8000221a: ffff 0xffff + 8000221c: ffff 0xffff + 8000221e: ffff 0xffff + +0000000080002220 : + 80002220: 0000 unimp + 80002222: 0000 unimp + 80002224: 0000 unimp + 80002226: bff0 fsd fa2,248(a5) + 80002228: 0000 unimp + 8000222a: 0000 unimp + 8000222c: 0000 unimp + 8000222e: 0000 unimp + 80002230: 0000 unimp + 80002232: 0000 unimp + 80002234: 0000 unimp + 80002236: 0000 unimp + 80002238: ffff 0xffff + 8000223a: ffff 0xffff + 8000223c: ffff 0xffff + 8000223e: ffff 0xffff + +0000000080002240 : + 80002240: cccd beqz s1,800022fa + 80002242: cccc sw a1,28(s1) + 80002244: cccc sw a1,28(s1) + 80002246: bfec fsd fa1,248(a5) + 80002248: 0000 unimp + 8000224a: 0000 unimp + 8000224c: 0000 unimp + 8000224e: 0000 unimp + 80002250: 0000 unimp + 80002252: 0000 unimp + 80002254: 0000 unimp + 80002256: 0000 unimp + 80002258: 0000 unimp + 8000225a: 0000 unimp + 8000225c: 0000 unimp + 8000225e: 0000 unimp + +0000000080002260 : + 80002260: cccd beqz s1,8000231a + 80002262: cccc sw a1,28(s1) + 80002264: cccc sw a1,28(s1) + 80002266: 3fec fld fa1,248(a5) + 80002268: 0000 unimp + 8000226a: 0000 unimp + 8000226c: 0000 unimp + 8000226e: 0000 unimp + 80002270: 0000 unimp + 80002272: 0000 unimp + 80002274: 0000 unimp + 80002276: 0000 unimp + 80002278: 0000 unimp + 8000227a: 0000 unimp + 8000227c: 0000 unimp + 8000227e: 0000 unimp + +0000000080002280 : + 80002280: 0000 unimp + 80002282: 0000 unimp + 80002284: 0000 unimp + 80002286: 3ff0 fld fa2,248(a5) + 80002288: 0000 unimp + 8000228a: 0000 unimp + 8000228c: 0000 unimp + 8000228e: 0000 unimp + 80002290: 0000 unimp + 80002292: 0000 unimp + 80002294: 0000 unimp + 80002296: 0000 unimp + 80002298: 0001 nop + 8000229a: 0000 unimp + 8000229c: 0000 unimp + 8000229e: 0000 unimp + +00000000800022a0 : + 800022a0: 999a add s3,s3,t1 + 800022a2: 9999 andi a1,a1,-26 + 800022a4: 9999 andi a1,a1,-26 + 800022a6: 3ff1 addiw t6,t6,-4 + 800022a8: 0000 unimp + 800022aa: 0000 unimp + 800022ac: 0000 unimp + 800022ae: 0000 unimp + 800022b0: 0000 unimp + 800022b2: 0000 unimp + 800022b4: 0000 unimp + 800022b6: 0000 unimp + 800022b8: 0001 nop + 800022ba: 0000 unimp + 800022bc: 0000 unimp + 800022be: 0000 unimp + +00000000800022c0 : + 800022c0: 0000 unimp + 800022c2: c000 sw s0,0(s0) + 800022c4: c1e65a0b 0xc1e65a0b + 800022c8: 0000 unimp + 800022ca: 0000 unimp + 800022cc: 0000 unimp + 800022ce: 0000 unimp + 800022d0: 0000 unimp + 800022d2: 0000 unimp + 800022d4: 0000 unimp + 800022d6: 0000 unimp + 800022d8: a200 fsd fs0,0(a2) + 800022da: ffff4d2f 0xffff4d2f + 800022de: ffff 0xffff + +00000000800022e0 : + 800022e0: 0000 unimp + 800022e2: c000 sw s0,0(s0) + 800022e4: 41e65a0b 0x41e65a0b + 800022e8: 0000 unimp + 800022ea: 0000 unimp + 800022ec: 0000 unimp + 800022ee: 0000 unimp + 800022f0: 0000 unimp + 800022f2: 0000 unimp + 800022f4: 0000 unimp + 800022f6: 0000 unimp + 800022f8: 5e00 lw s0,56(a2) + 800022fa: b2d0 fsd fa2,160(a3) + 800022fc: 0000 unimp + 800022fe: 0000 unimp + +0000000080002300 : + 80002300: db80 sw s0,48(a5) + 80002302: 90d9 srli s1,s1,0x36 + 80002304: 0556 slli a0,a0,0x15 + 80002306: c3fa sw t5,196(sp) + 80002308: 0000 unimp + 8000230a: 0000 unimp + 8000230c: 0000 unimp + 8000230e: 0000 unimp + 80002310: 0000 unimp + 80002312: 0000 unimp + 80002314: 0000 unimp + 80002316: 0000 unimp + 80002318: 0000 unimp + 8000231a: 0000 unimp + 8000231c: 0000 unimp + 8000231e: 8000 0x8000 + +0000000080002320 : + 80002320: db80 sw s0,48(a5) + 80002322: 90d9 srli s1,s1,0x36 + 80002324: 0556 slli a0,a0,0x15 + 80002326: 43fa lw t2,156(sp) + 80002328: 0000 unimp + 8000232a: 0000 unimp + 8000232c: 0000 unimp + 8000232e: 0000 unimp + 80002330: 0000 unimp + 80002332: 0000 unimp + 80002334: 0000 unimp + 80002336: 0000 unimp + 80002338: ffff 0xffff + 8000233a: ffff 0xffff + 8000233c: ffff 0xffff + 8000233e: 7fff 0x7fff + +0000000080002340 : + 80002340: 0000 unimp + 80002342: 0000 unimp + 80002344: 0000 unimp + 80002346: c008 sw a0,0(s0) + 80002348: 0000 unimp + 8000234a: 0000 unimp + 8000234c: 0000 unimp + 8000234e: 0000 unimp + 80002350: 0000 unimp + 80002352: 0000 unimp + 80002354: 0000 unimp + 80002356: 0000 unimp + 80002358: 0000 unimp + 8000235a: 0000 unimp + 8000235c: 0000 unimp + 8000235e: 0000 unimp + +0000000080002360 : + 80002360: 0000 unimp + 80002362: 0000 unimp + 80002364: 0000 unimp + 80002366: bff0 fsd fa2,248(a5) + 80002368: 0000 unimp + 8000236a: 0000 unimp + 8000236c: 0000 unimp + 8000236e: 0000 unimp + 80002370: 0000 unimp + 80002372: 0000 unimp + 80002374: 0000 unimp + 80002376: 0000 unimp + 80002378: 0000 unimp + 8000237a: 0000 unimp + 8000237c: 0000 unimp + 8000237e: 0000 unimp + +0000000080002380 : + 80002380: cccd beqz s1,8000243a + 80002382: cccc sw a1,28(s1) + 80002384: cccc sw a1,28(s1) + 80002386: bfec fsd fa1,248(a5) + 80002388: 0000 unimp + 8000238a: 0000 unimp + 8000238c: 0000 unimp + 8000238e: 0000 unimp + 80002390: 0000 unimp + 80002392: 0000 unimp + 80002394: 0000 unimp + 80002396: 0000 unimp + 80002398: 0000 unimp + 8000239a: 0000 unimp + 8000239c: 0000 unimp + 8000239e: 0000 unimp + +00000000800023a0 : + 800023a0: cccd beqz s1,8000245a + 800023a2: cccc sw a1,28(s1) + 800023a4: cccc sw a1,28(s1) + 800023a6: 3fec fld fa1,248(a5) + 800023a8: 0000 unimp + 800023aa: 0000 unimp + 800023ac: 0000 unimp + 800023ae: 0000 unimp + 800023b0: 0000 unimp + 800023b2: 0000 unimp + 800023b4: 0000 unimp + 800023b6: 0000 unimp + 800023b8: 0000 unimp + 800023ba: 0000 unimp + 800023bc: 0000 unimp + 800023be: 0000 unimp + +00000000800023c0 : + 800023c0: 0000 unimp + 800023c2: 0000 unimp + 800023c4: 0000 unimp + 800023c6: 3ff0 fld fa2,248(a5) + 800023c8: 0000 unimp + 800023ca: 0000 unimp + 800023cc: 0000 unimp + 800023ce: 0000 unimp + 800023d0: 0000 unimp + 800023d2: 0000 unimp + 800023d4: 0000 unimp + 800023d6: 0000 unimp + 800023d8: 0001 nop + 800023da: 0000 unimp + 800023dc: 0000 unimp + 800023de: 0000 unimp + +00000000800023e0 : + 800023e0: 999a add s3,s3,t1 + 800023e2: 9999 andi a1,a1,-26 + 800023e4: 9999 andi a1,a1,-26 + 800023e6: 3ff1 addiw t6,t6,-4 + 800023e8: 0000 unimp + 800023ea: 0000 unimp + 800023ec: 0000 unimp + 800023ee: 0000 unimp + 800023f0: 0000 unimp + 800023f2: 0000 unimp + 800023f4: 0000 unimp + 800023f6: 0000 unimp + 800023f8: 0001 nop + 800023fa: 0000 unimp + 800023fc: 0000 unimp + 800023fe: 0000 unimp + +0000000080002400 : + 80002400: 0000 unimp + 80002402: c000 sw s0,0(s0) + 80002404: c1e65a0b 0xc1e65a0b + 80002408: 0000 unimp + 8000240a: 0000 unimp + 8000240c: 0000 unimp + 8000240e: 0000 unimp + 80002410: 0000 unimp + 80002412: 0000 unimp + 80002414: 0000 unimp + 80002416: 0000 unimp + 80002418: 0000 unimp + 8000241a: 0000 unimp + 8000241c: 0000 unimp + 8000241e: 0000 unimp + +0000000080002420 : + 80002420: 0000 unimp + 80002422: c000 sw s0,0(s0) + 80002424: 41e65a0b 0x41e65a0b + 80002428: 0000 unimp + 8000242a: 0000 unimp + 8000242c: 0000 unimp + 8000242e: 0000 unimp + 80002430: 0000 unimp + 80002432: 0000 unimp + 80002434: 0000 unimp + 80002436: 0000 unimp + 80002438: 5e00 lw s0,56(a2) + 8000243a: b2d0 fsd fa2,160(a3) + 8000243c: 0000 unimp + 8000243e: 0000 unimp + +0000000080002440 : + 80002440: ffff 0xffff + 80002442: ffff 0xffff + 80002444: ffff 0xffff + 80002446: 7fff 0x7fff + 80002448: 0000 unimp + 8000244a: ff80 sd s0,56(a5) + 8000244c: 0000 unimp + 8000244e: 7f80 ld s0,56(a5) + +0000000080002450 : + 80002450: ffff 0xffff + 80002452: ffff 0xffff + 80002454: ffff 0xffff + 80002456: ffff 0xffff + 80002458: ffff 0xffff + 8000245a: ffff 0xffff + 8000245c: ffff 0xffff + 8000245e: 7fff 0x7fff + 80002460: 0000 unimp + 80002462: 0000 unimp + 80002464: 0000 unimp + 80002466: fff0 sd a2,248(a5) + 80002468: 0000 unimp + 8000246a: 0000 unimp + 8000246c: 0000 unimp + 8000246e: 7ff0 ld a2,248(a5) diff --git a/Tests/isa/rv64ud-p-fdiv b/Tests/isa/rv64ud-p-fdiv new file mode 100644 index 0000000..b5acc65 Binary files /dev/null and b/Tests/isa/rv64ud-p-fdiv differ diff --git a/Tests/isa/rv64ud-p-fdiv.dump b/Tests/isa/rv64ud-p-fdiv.dump new file mode 100644 index 0000000..ee1330c --- /dev/null +++ b/Tests/isa/rv64ud-p-fdiv.dump @@ -0,0 +1,375 @@ + +rv64ud-p-fdiv: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00053007 fld ft0,0(a0) + 80000118: 00853087 fld ft1,8(a0) + 8000011c: 01053107 fld ft2,16(a0) + 80000120: 01853683 ld a3,24(a0) + 80000124: 1a1071d3 fdiv.d ft3,ft0,ft1 + 80000128: e2018553 fmv.x.d a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00100613 li a2,1 + 80000134: 16d51c63 bne a0,a3,800002ac + 80000138: 16c59a63 bne a1,a2,800002ac + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ee050513 addi a0,a0,-288 # 80002020 + 80000148: 00053007 fld ft0,0(a0) + 8000014c: 00853087 fld ft1,8(a0) + 80000150: 01053107 fld ft2,16(a0) + 80000154: 01853683 ld a3,24(a0) + 80000158: 1a1071d3 fdiv.d ft3,ft0,ft1 + 8000015c: e2018553 fmv.x.d a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00100613 li a2,1 + 80000168: 14d51263 bne a0,a3,800002ac + 8000016c: 14c59063 bne a1,a2,800002ac + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: ecc50513 addi a0,a0,-308 # 80002040 + 8000017c: 00053007 fld ft0,0(a0) + 80000180: 00853087 fld ft1,8(a0) + 80000184: 01053107 fld ft2,16(a0) + 80000188: 01853683 ld a3,24(a0) + 8000018c: 1a1071d3 fdiv.d ft3,ft0,ft1 + 80000190: e2018553 fmv.x.d a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00000613 li a2,0 + 8000019c: 10d51863 bne a0,a3,800002ac + 800001a0: 10c59663 bne a1,a2,800002ac + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: eb850513 addi a0,a0,-328 # 80002060 + 800001b0: 00053007 fld ft0,0(a0) + 800001b4: 00853087 fld ft1,8(a0) + 800001b8: 01053107 fld ft2,16(a0) + 800001bc: 01853683 ld a3,24(a0) + 800001c0: 5a0071d3 fsqrt.d ft3,ft0 + 800001c4: e2018553 fmv.x.d a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00100613 li a2,1 + 800001d0: 0cd51e63 bne a0,a3,800002ac + 800001d4: 0cc59c63 bne a1,a2,800002ac + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: ea450513 addi a0,a0,-348 # 80002080 + 800001e4: 00053007 fld ft0,0(a0) + 800001e8: 00853087 fld ft1,8(a0) + 800001ec: 01053107 fld ft2,16(a0) + 800001f0: 01853683 ld a3,24(a0) + 800001f4: 5a0071d3 fsqrt.d ft3,ft0 + 800001f8: e2018553 fmv.x.d a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00000613 li a2,0 + 80000204: 0ad51463 bne a0,a3,800002ac + 80000208: 0ac59263 bne a1,a2,800002ac + +000000008000020c : + 8000020c: 01000193 li gp,16 + 80000210: 00002517 auipc a0,0x2 + 80000214: e9050513 addi a0,a0,-368 # 800020a0 + 80000218: 00053007 fld ft0,0(a0) + 8000021c: 00853087 fld ft1,8(a0) + 80000220: 01053107 fld ft2,16(a0) + 80000224: 01853683 ld a3,24(a0) + 80000228: 5a0071d3 fsqrt.d ft3,ft0 + 8000022c: e2018553 fmv.x.d a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 01000613 li a2,16 + 80000238: 06d51a63 bne a0,a3,800002ac + 8000023c: 06c59863 bne a1,a2,800002ac + +0000000080000240 : + 80000240: 00700193 li gp,7 + 80000244: 00002517 auipc a0,0x2 + 80000248: e7c50513 addi a0,a0,-388 # 800020c0 + 8000024c: 00053007 fld ft0,0(a0) + 80000250: 00853087 fld ft1,8(a0) + 80000254: 01053107 fld ft2,16(a0) + 80000258: 01853683 ld a3,24(a0) + 8000025c: 5a0071d3 fsqrt.d ft3,ft0 + 80000260: e2018553 fmv.x.d a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00100613 li a2,1 + 8000026c: 04d51063 bne a0,a3,800002ac + 80000270: 02c59e63 bne a1,a2,800002ac + +0000000080000274 : + 80000274: 00800193 li gp,8 + 80000278: 00002517 auipc a0,0x2 + 8000027c: e6850513 addi a0,a0,-408 # 800020e0 + 80000280: 00053007 fld ft0,0(a0) + 80000284: 00853087 fld ft1,8(a0) + 80000288: 01053107 fld ft2,16(a0) + 8000028c: 01853683 ld a3,24(a0) + 80000290: 5a0071d3 fsqrt.d ft3,ft0 + 80000294: e2018553 fmv.x.d a0,ft3 + 80000298: 001015f3 fsflags a1,zero + 8000029c: 00100613 li a2,1 + 800002a0: 00d51663 bne a0,a3,800002ac + 800002a4: 00c59463 bne a1,a2,800002ac + 800002a8: 00301c63 bne zero,gp,800002c0 + +00000000800002ac : + 800002ac: 0ff0000f fence + 800002b0: 00018063 beqz gp,800002b0 + 800002b4: 00119193 slli gp,gp,0x1 + 800002b8: 0011e193 ori gp,gp,1 + 800002bc: 00000073 ecall + +00000000800002c0 : + 800002c0: 0ff0000f fence + 800002c4: 00100193 li gp,1 + 800002c8: 00000073 ecall + 800002cc: c0001073 unimp + 800002d0: 0000 unimp + 800002d2: 0000 unimp + 800002d4: 0000 unimp + 800002d6: 0000 unimp + 800002d8: 0000 unimp + 800002da: 0000 unimp + 800002dc: 0000 unimp + 800002de: 0000 unimp + 800002e0: 0000 unimp + 800002e2: 0000 unimp + 800002e4: 0000 unimp + 800002e6: 0000 unimp + 800002e8: 0000 unimp + 800002ea: 0000 unimp + 800002ec: 0000 unimp + 800002ee: 0000 unimp + 800002f0: 0000 unimp + 800002f2: 0000 unimp + 800002f4: 0000 unimp + 800002f6: 0000 unimp + 800002f8: 0000 unimp + 800002fa: 0000 unimp + 800002fc: 0000 unimp + 800002fe: 0000 unimp + 80000300: 0000 unimp + 80000302: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: d4f1 beqz s1,80001fcc + 80002002: 53c8 lw a0,36(a5) + 80002004: 400921fb 0x400921fb + 80002008: b0dd j 800018ee + 8000200a: 89f1 andi a1,a1,28 + 8000200c: bf0a fsd ft2,440(sp) + 8000200e: 4005 c.li zero,1 + 80002010: 0000 unimp + 80002012: 0000 unimp + 80002014: 0000 unimp + 80002016: 0000 unimp + 80002018: 83ec 0x83ec + 8000201a: 7ddbf6c3 0x7ddbf6c3 + 8000201e: 3ff2 fld ft11,312(sp) + +0000000080002020 : + 80002020: 0000 unimp + 80002022: 0000 unimp + 80002024: 4800 lw s0,16(s0) + 80002026: 6666c093 xori ra,a3,1638 + 8000202a: 6666 ld a2,88(sp) + 8000202c: 4c66 lw s8,88(sp) + 8000202e: 00004093 xori ra,zero,0 + 80002032: 0000 unimp + 80002034: 0000 unimp + 80002036: 0000 unimp + 80002038: 29a5 addiw s3,s3,9 + 8000203a: 3e19 addiw t3,t3,-26 + 8000203c: f8b4 sd a3,112(s1) + 8000203e: jal t6,7ff1dd8c <_start-0xe2274> + +0000000080002040 : + 80002040: d4f1 beqz s1,8000200c + 80002042: 53c8 lw a0,36(a5) + 80002044: 400921fb 0x400921fb + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 0000 unimp + 8000204e: 3ff0 fld fa2,248(a5) + 80002050: 0000 unimp + 80002052: 0000 unimp + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: d4f1 beqz s1,80002024 + 8000205a: 53c8 lw a0,36(a5) + 8000205c: 400921fb 0x400921fb + +0000000080002060 : + 80002060: d4f1 beqz s1,8000202c + 80002062: 53c8 lw a0,36(a5) + 80002064: 400921fb 0x400921fb + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 0000 unimp + 80002070: 0000 unimp + 80002072: 0000 unimp + 80002074: 0000 unimp + 80002076: 0000 unimp + 80002078: 916f587b 0x916f587b + 8000207c: 5bf8 lw a4,116(a5) + 8000207e: 3ffc fld fa5,248(a5) + +0000000080002080 : + 80002080: 0000 unimp + 80002082: 0000 unimp + 80002084: 8800 0x8800 + 80002086: 000040c3 fmadd.s ft1,ft0,ft0,ft0,rmm + 8000208a: 0000 unimp + 8000208c: 0000 unimp + 8000208e: 0000 unimp + 80002090: 0000 unimp + 80002092: 0000 unimp + 80002094: 0000 unimp + 80002096: 0000 unimp + 80002098: 0000 unimp + 8000209a: 0000 unimp + 8000209c: 0000 unimp + 8000209e: 4059 c.li zero,22 + +00000000800020a0 : + 800020a0: 0000 unimp + 800020a2: 0000 unimp + 800020a4: 0000 unimp + 800020a6: bff0 fsd fa2,248(a5) + 800020a8: 0000 unimp + 800020aa: 0000 unimp + 800020ac: 0000 unimp + 800020ae: 0000 unimp + 800020b0: 0000 unimp + 800020b2: 0000 unimp + 800020b4: 0000 unimp + 800020b6: 0000 unimp + 800020b8: 0000 unimp + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: 7ff8 ld a4,248(a5) + +00000000800020c0 : + 800020c0: 0000 unimp + 800020c2: 0000 unimp + 800020c4: 6000 ld s0,0(s0) + 800020c6: 4065 c.li zero,25 + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 0000 unimp + 800020d0: 0000 unimp + 800020d2: 0000 unimp + 800020d4: 0000 unimp + 800020d6: 0000 unimp + 800020d8: 74f5 lui s1,0xffffd + 800020da: ce96 sw t0,92(sp) + 800020dc: 2744 fld fs1,136(a4) + 800020de: 402a 0x402a + +00000000800020e0 : + 800020e0: a105 j 80002500 <_end+0x400> + 800020e2: c70a sw sp,140(sp) + 800020e4: 94df 3e85 0000 0x3e8594df + 800020ea: 0000 unimp + 800020ec: 0000 unimp + 800020ee: 0000 unimp + 800020f0: 0000 unimp + 800020f2: 0000 unimp + 800020f4: 0000 unimp + 800020f6: 0000 unimp + 800020f8: 7f99 lui t6,0xfffe6 + 800020fa: 4789c0e3 blt s3,s8,80002d5a <_end+0xc5a> + 800020fe: 3f3a fld ft10,424(sp) diff --git a/Tests/isa/rv64ud-p-fmadd b/Tests/isa/rv64ud-p-fmadd new file mode 100644 index 0000000..3f23bd3 Binary files /dev/null and b/Tests/isa/rv64ud-p-fmadd differ diff --git a/Tests/isa/rv64ud-p-fmadd.dump b/Tests/isa/rv64ud-p-fmadd.dump new file mode 100644 index 0000000..c04db2d --- /dev/null +++ b/Tests/isa/rv64ud-p-fmadd.dump @@ -0,0 +1,507 @@ + +rv64ud-p-fmadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00053007 fld ft0,0(a0) + 80000118: 00853087 fld ft1,8(a0) + 8000011c: 01053107 fld ft2,16(a0) + 80000120: 01853683 ld a3,24(a0) + 80000124: 121071c3 fmadd.d ft3,ft0,ft1,ft2 + 80000128: e2018553 fmv.x.d a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00000613 li a2,0 + 80000134: 24d51463 bne a0,a3,8000037c + 80000138: 24c59263 bne a1,a2,8000037c + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ee050513 addi a0,a0,-288 # 80002020 + 80000148: 00053007 fld ft0,0(a0) + 8000014c: 00853087 fld ft1,8(a0) + 80000150: 01053107 fld ft2,16(a0) + 80000154: 01853683 ld a3,24(a0) + 80000158: 121071c3 fmadd.d ft3,ft0,ft1,ft2 + 8000015c: e2018553 fmv.x.d a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00100613 li a2,1 + 80000168: 20d51a63 bne a0,a3,8000037c + 8000016c: 20c59863 bne a1,a2,8000037c + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: ecc50513 addi a0,a0,-308 # 80002040 + 8000017c: 00053007 fld ft0,0(a0) + 80000180: 00853087 fld ft1,8(a0) + 80000184: 01053107 fld ft2,16(a0) + 80000188: 01853683 ld a3,24(a0) + 8000018c: 121071c3 fmadd.d ft3,ft0,ft1,ft2 + 80000190: e2018553 fmv.x.d a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00000613 li a2,0 + 8000019c: 1ed51063 bne a0,a3,8000037c + 800001a0: 1cc59e63 bne a1,a2,8000037c + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: eb850513 addi a0,a0,-328 # 80002060 + 800001b0: 00053007 fld ft0,0(a0) + 800001b4: 00853087 fld ft1,8(a0) + 800001b8: 01053107 fld ft2,16(a0) + 800001bc: 01853683 ld a3,24(a0) + 800001c0: 121071cf fnmadd.d ft3,ft0,ft1,ft2 + 800001c4: e2018553 fmv.x.d a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00000613 li a2,0 + 800001d0: 1ad51663 bne a0,a3,8000037c + 800001d4: 1ac59463 bne a1,a2,8000037c + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: ea450513 addi a0,a0,-348 # 80002080 + 800001e4: 00053007 fld ft0,0(a0) + 800001e8: 00853087 fld ft1,8(a0) + 800001ec: 01053107 fld ft2,16(a0) + 800001f0: 01853683 ld a3,24(a0) + 800001f4: 121071cf fnmadd.d ft3,ft0,ft1,ft2 + 800001f8: e2018553 fmv.x.d a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00100613 li a2,1 + 80000204: 16d51c63 bne a0,a3,8000037c + 80000208: 16c59a63 bne a1,a2,8000037c + +000000008000020c : + 8000020c: 00700193 li gp,7 + 80000210: 00002517 auipc a0,0x2 + 80000214: e9050513 addi a0,a0,-368 # 800020a0 + 80000218: 00053007 fld ft0,0(a0) + 8000021c: 00853087 fld ft1,8(a0) + 80000220: 01053107 fld ft2,16(a0) + 80000224: 01853683 ld a3,24(a0) + 80000228: 121071cf fnmadd.d ft3,ft0,ft1,ft2 + 8000022c: e2018553 fmv.x.d a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 00000613 li a2,0 + 80000238: 14d51263 bne a0,a3,8000037c + 8000023c: 14c59063 bne a1,a2,8000037c + +0000000080000240 : + 80000240: 00800193 li gp,8 + 80000244: 00002517 auipc a0,0x2 + 80000248: e7c50513 addi a0,a0,-388 # 800020c0 + 8000024c: 00053007 fld ft0,0(a0) + 80000250: 00853087 fld ft1,8(a0) + 80000254: 01053107 fld ft2,16(a0) + 80000258: 01853683 ld a3,24(a0) + 8000025c: 121071c7 fmsub.d ft3,ft0,ft1,ft2 + 80000260: e2018553 fmv.x.d a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00000613 li a2,0 + 8000026c: 10d51863 bne a0,a3,8000037c + 80000270: 10c59663 bne a1,a2,8000037c + +0000000080000274 : + 80000274: 00900193 li gp,9 + 80000278: 00002517 auipc a0,0x2 + 8000027c: e6850513 addi a0,a0,-408 # 800020e0 + 80000280: 00053007 fld ft0,0(a0) + 80000284: 00853087 fld ft1,8(a0) + 80000288: 01053107 fld ft2,16(a0) + 8000028c: 01853683 ld a3,24(a0) + 80000290: 121071c7 fmsub.d ft3,ft0,ft1,ft2 + 80000294: e2018553 fmv.x.d a0,ft3 + 80000298: 001015f3 fsflags a1,zero + 8000029c: 00100613 li a2,1 + 800002a0: 0cd51e63 bne a0,a3,8000037c + 800002a4: 0cc59c63 bne a1,a2,8000037c + +00000000800002a8 : + 800002a8: 00a00193 li gp,10 + 800002ac: 00002517 auipc a0,0x2 + 800002b0: e5450513 addi a0,a0,-428 # 80002100 + 800002b4: 00053007 fld ft0,0(a0) + 800002b8: 00853087 fld ft1,8(a0) + 800002bc: 01053107 fld ft2,16(a0) + 800002c0: 01853683 ld a3,24(a0) + 800002c4: 121071c7 fmsub.d ft3,ft0,ft1,ft2 + 800002c8: e2018553 fmv.x.d a0,ft3 + 800002cc: 001015f3 fsflags a1,zero + 800002d0: 00000613 li a2,0 + 800002d4: 0ad51463 bne a0,a3,8000037c + 800002d8: 0ac59263 bne a1,a2,8000037c + +00000000800002dc : + 800002dc: 00b00193 li gp,11 + 800002e0: 00002517 auipc a0,0x2 + 800002e4: e4050513 addi a0,a0,-448 # 80002120 + 800002e8: 00053007 fld ft0,0(a0) + 800002ec: 00853087 fld ft1,8(a0) + 800002f0: 01053107 fld ft2,16(a0) + 800002f4: 01853683 ld a3,24(a0) + 800002f8: 121071cb fnmsub.d ft3,ft0,ft1,ft2 + 800002fc: e2018553 fmv.x.d a0,ft3 + 80000300: 001015f3 fsflags a1,zero + 80000304: 00000613 li a2,0 + 80000308: 06d51a63 bne a0,a3,8000037c + 8000030c: 06c59863 bne a1,a2,8000037c + +0000000080000310 : + 80000310: 00c00193 li gp,12 + 80000314: 00002517 auipc a0,0x2 + 80000318: e2c50513 addi a0,a0,-468 # 80002140 + 8000031c: 00053007 fld ft0,0(a0) + 80000320: 00853087 fld ft1,8(a0) + 80000324: 01053107 fld ft2,16(a0) + 80000328: 01853683 ld a3,24(a0) + 8000032c: 121071cb fnmsub.d ft3,ft0,ft1,ft2 + 80000330: e2018553 fmv.x.d a0,ft3 + 80000334: 001015f3 fsflags a1,zero + 80000338: 00100613 li a2,1 + 8000033c: 04d51063 bne a0,a3,8000037c + 80000340: 02c59e63 bne a1,a2,8000037c + +0000000080000344 : + 80000344: 00d00193 li gp,13 + 80000348: 00002517 auipc a0,0x2 + 8000034c: e1850513 addi a0,a0,-488 # 80002160 + 80000350: 00053007 fld ft0,0(a0) + 80000354: 00853087 fld ft1,8(a0) + 80000358: 01053107 fld ft2,16(a0) + 8000035c: 01853683 ld a3,24(a0) + 80000360: 121071cb fnmsub.d ft3,ft0,ft1,ft2 + 80000364: e2018553 fmv.x.d a0,ft3 + 80000368: 001015f3 fsflags a1,zero + 8000036c: 00000613 li a2,0 + 80000370: 00d51663 bne a0,a3,8000037c + 80000374: 00c59463 bne a1,a2,8000037c + 80000378: 00301c63 bne zero,gp,80000390 + +000000008000037c : + 8000037c: 0ff0000f fence + 80000380: 00018063 beqz gp,80000380 + 80000384: 00119193 slli gp,gp,0x1 + 80000388: 0011e193 ori gp,gp,1 + 8000038c: 00000073 ecall + +0000000080000390 : + 80000390: 0ff0000f fence + 80000394: 00100193 li gp,1 + 80000398: 00000073 ecall + 8000039c: c0001073 unimp + 800003a0: 0000 unimp + 800003a2: 0000 unimp + 800003a4: 0000 unimp + 800003a6: 0000 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 0000 unimp + 80002004: 0000 unimp + 80002006: 3ff0 fld fa2,248(a5) + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 4004 lw s1,0(s0) + 80002010: 0000 unimp + 80002012: 0000 unimp + 80002014: 0000 unimp + 80002016: 3ff0 fld fa2,248(a5) + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: 0000 unimp + 8000201e: 400c lw a1,0(s0) + +0000000080002020 : + 80002020: 0000 unimp + 80002022: 0000 unimp + 80002024: 0000 unimp + 80002026: bff0 fsd fa2,248(a5) + 80002028: 6666 ld a2,88(sp) + 8000202a: 6666 ld a2,88(sp) + 8000202c: 4c66 lw s8,88(sp) + 8000202e: 999ac093 xori ra,s5,-1639 + 80002032: 9999 andi a1,a1,-26 + 80002034: 9999 andi a1,a1,-26 + 80002036: 3ff1 addiw t6,t6,-4 + 80002038: cccc sw a1,28(s1) + 8000203a: cccc sw a1,28(s1) + 8000203c: 50cc lw a1,36(s1) + 8000203e: xori ra,zero,0 + +0000000080002040 : + 80002040: 0000 unimp + 80002042: 0000 unimp + 80002044: 0000 unimp + 80002046: 4000 lw s0,0(s0) + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 0000 unimp + 8000204e: c014 sw a3,0(s0) + 80002050: 0000 unimp + 80002052: 0000 unimp + 80002054: 0000 unimp + 80002056: c000 sw s0,0(s0) + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0000 unimp + 8000205e: c028 sw a0,64(s0) + +0000000080002060 : + 80002060: 0000 unimp + 80002062: 0000 unimp + 80002064: 0000 unimp + 80002066: 3ff0 fld fa2,248(a5) + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 4004 lw s1,0(s0) + 80002070: 0000 unimp + 80002072: 0000 unimp + 80002074: 0000 unimp + 80002076: 3ff0 fld fa2,248(a5) + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: 0000 unimp + 8000207e: c00c sw a1,0(s0) + +0000000080002080 : + 80002080: 0000 unimp + 80002082: 0000 unimp + 80002084: 0000 unimp + 80002086: bff0 fsd fa2,248(a5) + 80002088: 6666 ld a2,88(sp) + 8000208a: 6666 ld a2,88(sp) + 8000208c: 4c66 lw s8,88(sp) + 8000208e: 999ac093 xori ra,s5,-1639 + 80002092: 9999 andi a1,a1,-26 + 80002094: 9999 andi a1,a1,-26 + 80002096: 3ff1 addiw t6,t6,-4 + 80002098: cccc sw a1,28(s1) + 8000209a: cccc sw a1,28(s1) + 8000209c: 50cc lw a1,36(s1) + 8000209e: xori ra,ra,0 + +00000000800020a0 : + 800020a0: 0000 unimp + 800020a2: 0000 unimp + 800020a4: 0000 unimp + 800020a6: 4000 lw s0,0(s0) + 800020a8: 0000 unimp + 800020aa: 0000 unimp + 800020ac: 0000 unimp + 800020ae: c014 sw a3,0(s0) + 800020b0: 0000 unimp + 800020b2: 0000 unimp + 800020b4: 0000 unimp + 800020b6: c000 sw s0,0(s0) + 800020b8: 0000 unimp + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: 4028 lw a0,64(s0) + +00000000800020c0 : + 800020c0: 0000 unimp + 800020c2: 0000 unimp + 800020c4: 0000 unimp + 800020c6: 3ff0 fld fa2,248(a5) + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 4004 lw s1,0(s0) + 800020d0: 0000 unimp + 800020d2: 0000 unimp + 800020d4: 0000 unimp + 800020d6: 3ff0 fld fa2,248(a5) + 800020d8: 0000 unimp + 800020da: 0000 unimp + 800020dc: 0000 unimp + 800020de: 3ff8 fld fa4,248(a5) + +00000000800020e0 : + 800020e0: 0000 unimp + 800020e2: 0000 unimp + 800020e4: 0000 unimp + 800020e6: bff0 fsd fa2,248(a5) + 800020e8: 6666 ld a2,88(sp) + 800020ea: 6666 ld a2,88(sp) + 800020ec: 4c66 lw s8,88(sp) + 800020ee: 999ac093 xori ra,s5,-1639 + 800020f2: 9999 andi a1,a1,-26 + 800020f4: 9999 andi a1,a1,-26 + 800020f6: 3ff1 addiw t6,t6,-4 + 800020f8: 0000 unimp + 800020fa: 0000 unimp + 800020fc: 4800 lw s0,16(s0) + 800020fe: xori ra,zero,0 + +0000000080002100 : + 80002100: 0000 unimp + 80002102: 0000 unimp + 80002104: 0000 unimp + 80002106: 4000 lw s0,0(s0) + 80002108: 0000 unimp + 8000210a: 0000 unimp + 8000210c: 0000 unimp + 8000210e: c014 sw a3,0(s0) + 80002110: 0000 unimp + 80002112: 0000 unimp + 80002114: 0000 unimp + 80002116: c000 sw s0,0(s0) + 80002118: 0000 unimp + 8000211a: 0000 unimp + 8000211c: 0000 unimp + 8000211e: c020 sw s0,64(s0) + +0000000080002120 : + 80002120: 0000 unimp + 80002122: 0000 unimp + 80002124: 0000 unimp + 80002126: 3ff0 fld fa2,248(a5) + 80002128: 0000 unimp + 8000212a: 0000 unimp + 8000212c: 0000 unimp + 8000212e: 4004 lw s1,0(s0) + 80002130: 0000 unimp + 80002132: 0000 unimp + 80002134: 0000 unimp + 80002136: 3ff0 fld fa2,248(a5) + 80002138: 0000 unimp + 8000213a: 0000 unimp + 8000213c: 0000 unimp + 8000213e: bff8 fsd fa4,248(a5) + +0000000080002140 : + 80002140: 0000 unimp + 80002142: 0000 unimp + 80002144: 0000 unimp + 80002146: bff0 fsd fa2,248(a5) + 80002148: 6666 ld a2,88(sp) + 8000214a: 6666 ld a2,88(sp) + 8000214c: 4c66 lw s8,88(sp) + 8000214e: 999ac093 xori ra,s5,-1639 + 80002152: 9999 andi a1,a1,-26 + 80002154: 9999 andi a1,a1,-26 + 80002156: 3ff1 addiw t6,t6,-4 + 80002158: 0000 unimp + 8000215a: 0000 unimp + 8000215c: 4800 lw s0,16(s0) + 8000215e: xori ra,ra,0 + +0000000080002160 : + 80002160: 0000 unimp + 80002162: 0000 unimp + 80002164: 0000 unimp + 80002166: 4000 lw s0,0(s0) + 80002168: 0000 unimp + 8000216a: 0000 unimp + 8000216c: 0000 unimp + 8000216e: c014 sw a3,0(s0) + 80002170: 0000 unimp + 80002172: 0000 unimp + 80002174: 0000 unimp + 80002176: c000 sw s0,0(s0) + 80002178: 0000 unimp + 8000217a: 0000 unimp + 8000217c: 0000 unimp + 8000217e: 4020 lw s0,64(s0) diff --git a/Tests/isa/rv64ud-p-fmin b/Tests/isa/rv64ud-p-fmin new file mode 100644 index 0000000..e51e94e Binary files /dev/null and b/Tests/isa/rv64ud-p-fmin differ diff --git a/Tests/isa/rv64ud-p-fmin.dump b/Tests/isa/rv64ud-p-fmin.dump new file mode 100644 index 0000000..1024cdd --- /dev/null +++ b/Tests/isa/rv64ud-p-fmin.dump @@ -0,0 +1,704 @@ + +rv64ud-p-fmin: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00053007 fld ft0,0(a0) + 80000118: 00853087 fld ft1,8(a0) + 8000011c: 01053107 fld ft2,16(a0) + 80000120: 01853683 ld a3,24(a0) + 80000124: 2a1001d3 fmin.d ft3,ft0,ft1 + 80000128: e2018553 fmv.x.d a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00000613 li a2,0 + 80000134: 38d51063 bne a0,a3,800004b4 + 80000138: 36c59e63 bne a1,a2,800004b4 + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ee050513 addi a0,a0,-288 # 80002020 + 80000148: 00053007 fld ft0,0(a0) + 8000014c: 00853087 fld ft1,8(a0) + 80000150: 01053107 fld ft2,16(a0) + 80000154: 01853683 ld a3,24(a0) + 80000158: 2a1001d3 fmin.d ft3,ft0,ft1 + 8000015c: e2018553 fmv.x.d a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00000613 li a2,0 + 80000168: 34d51663 bne a0,a3,800004b4 + 8000016c: 34c59463 bne a1,a2,800004b4 + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: ecc50513 addi a0,a0,-308 # 80002040 + 8000017c: 00053007 fld ft0,0(a0) + 80000180: 00853087 fld ft1,8(a0) + 80000184: 01053107 fld ft2,16(a0) + 80000188: 01853683 ld a3,24(a0) + 8000018c: 2a1001d3 fmin.d ft3,ft0,ft1 + 80000190: e2018553 fmv.x.d a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00000613 li a2,0 + 8000019c: 30d51c63 bne a0,a3,800004b4 + 800001a0: 30c59a63 bne a1,a2,800004b4 + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: eb850513 addi a0,a0,-328 # 80002060 + 800001b0: 00053007 fld ft0,0(a0) + 800001b4: 00853087 fld ft1,8(a0) + 800001b8: 01053107 fld ft2,16(a0) + 800001bc: 01853683 ld a3,24(a0) + 800001c0: 2a1001d3 fmin.d ft3,ft0,ft1 + 800001c4: e2018553 fmv.x.d a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00000613 li a2,0 + 800001d0: 2ed51263 bne a0,a3,800004b4 + 800001d4: 2ec59063 bne a1,a2,800004b4 + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: ea450513 addi a0,a0,-348 # 80002080 + 800001e4: 00053007 fld ft0,0(a0) + 800001e8: 00853087 fld ft1,8(a0) + 800001ec: 01053107 fld ft2,16(a0) + 800001f0: 01853683 ld a3,24(a0) + 800001f4: 2a1001d3 fmin.d ft3,ft0,ft1 + 800001f8: e2018553 fmv.x.d a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00000613 li a2,0 + 80000204: 2ad51863 bne a0,a3,800004b4 + 80000208: 2ac59663 bne a1,a2,800004b4 + +000000008000020c : + 8000020c: 00700193 li gp,7 + 80000210: 00002517 auipc a0,0x2 + 80000214: e9050513 addi a0,a0,-368 # 800020a0 + 80000218: 00053007 fld ft0,0(a0) + 8000021c: 00853087 fld ft1,8(a0) + 80000220: 01053107 fld ft2,16(a0) + 80000224: 01853683 ld a3,24(a0) + 80000228: 2a1001d3 fmin.d ft3,ft0,ft1 + 8000022c: e2018553 fmv.x.d a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 00000613 li a2,0 + 80000238: 26d51e63 bne a0,a3,800004b4 + 8000023c: 26c59c63 bne a1,a2,800004b4 + +0000000080000240 : + 80000240: 00c00193 li gp,12 + 80000244: 00002517 auipc a0,0x2 + 80000248: e7c50513 addi a0,a0,-388 # 800020c0 + 8000024c: 00053007 fld ft0,0(a0) + 80000250: 00853087 fld ft1,8(a0) + 80000254: 01053107 fld ft2,16(a0) + 80000258: 01853683 ld a3,24(a0) + 8000025c: 2a1011d3 fmax.d ft3,ft0,ft1 + 80000260: e2018553 fmv.x.d a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00000613 li a2,0 + 8000026c: 24d51463 bne a0,a3,800004b4 + 80000270: 24c59263 bne a1,a2,800004b4 + +0000000080000274 : + 80000274: 00d00193 li gp,13 + 80000278: 00002517 auipc a0,0x2 + 8000027c: e6850513 addi a0,a0,-408 # 800020e0 + 80000280: 00053007 fld ft0,0(a0) + 80000284: 00853087 fld ft1,8(a0) + 80000288: 01053107 fld ft2,16(a0) + 8000028c: 01853683 ld a3,24(a0) + 80000290: 2a1011d3 fmax.d ft3,ft0,ft1 + 80000294: e2018553 fmv.x.d a0,ft3 + 80000298: 001015f3 fsflags a1,zero + 8000029c: 00000613 li a2,0 + 800002a0: 20d51a63 bne a0,a3,800004b4 + 800002a4: 20c59863 bne a1,a2,800004b4 + +00000000800002a8 : + 800002a8: 00e00193 li gp,14 + 800002ac: 00002517 auipc a0,0x2 + 800002b0: e5450513 addi a0,a0,-428 # 80002100 + 800002b4: 00053007 fld ft0,0(a0) + 800002b8: 00853087 fld ft1,8(a0) + 800002bc: 01053107 fld ft2,16(a0) + 800002c0: 01853683 ld a3,24(a0) + 800002c4: 2a1011d3 fmax.d ft3,ft0,ft1 + 800002c8: e2018553 fmv.x.d a0,ft3 + 800002cc: 001015f3 fsflags a1,zero + 800002d0: 00000613 li a2,0 + 800002d4: 1ed51063 bne a0,a3,800004b4 + 800002d8: 1cc59e63 bne a1,a2,800004b4 + +00000000800002dc : + 800002dc: 00f00193 li gp,15 + 800002e0: 00002517 auipc a0,0x2 + 800002e4: e4050513 addi a0,a0,-448 # 80002120 + 800002e8: 00053007 fld ft0,0(a0) + 800002ec: 00853087 fld ft1,8(a0) + 800002f0: 01053107 fld ft2,16(a0) + 800002f4: 01853683 ld a3,24(a0) + 800002f8: 2a1011d3 fmax.d ft3,ft0,ft1 + 800002fc: e2018553 fmv.x.d a0,ft3 + 80000300: 001015f3 fsflags a1,zero + 80000304: 00000613 li a2,0 + 80000308: 1ad51663 bne a0,a3,800004b4 + 8000030c: 1ac59463 bne a1,a2,800004b4 + +0000000080000310 : + 80000310: 01000193 li gp,16 + 80000314: 00002517 auipc a0,0x2 + 80000318: e2c50513 addi a0,a0,-468 # 80002140 + 8000031c: 00053007 fld ft0,0(a0) + 80000320: 00853087 fld ft1,8(a0) + 80000324: 01053107 fld ft2,16(a0) + 80000328: 01853683 ld a3,24(a0) + 8000032c: 2a1011d3 fmax.d ft3,ft0,ft1 + 80000330: e2018553 fmv.x.d a0,ft3 + 80000334: 001015f3 fsflags a1,zero + 80000338: 00000613 li a2,0 + 8000033c: 16d51c63 bne a0,a3,800004b4 + 80000340: 16c59a63 bne a1,a2,800004b4 + +0000000080000344 : + 80000344: 01100193 li gp,17 + 80000348: 00002517 auipc a0,0x2 + 8000034c: e1850513 addi a0,a0,-488 # 80002160 + 80000350: 00053007 fld ft0,0(a0) + 80000354: 00853087 fld ft1,8(a0) + 80000358: 01053107 fld ft2,16(a0) + 8000035c: 01853683 ld a3,24(a0) + 80000360: 2a1011d3 fmax.d ft3,ft0,ft1 + 80000364: e2018553 fmv.x.d a0,ft3 + 80000368: 001015f3 fsflags a1,zero + 8000036c: 00000613 li a2,0 + 80000370: 14d51263 bne a0,a3,800004b4 + 80000374: 14c59063 bne a1,a2,800004b4 + +0000000080000378 : + 80000378: 01400193 li gp,20 + 8000037c: 00002517 auipc a0,0x2 + 80000380: e0450513 addi a0,a0,-508 # 80002180 + 80000384: 00053007 fld ft0,0(a0) + 80000388: 00853087 fld ft1,8(a0) + 8000038c: 01053107 fld ft2,16(a0) + 80000390: 01853683 ld a3,24(a0) + 80000394: 2a1011d3 fmax.d ft3,ft0,ft1 + 80000398: e2018553 fmv.x.d a0,ft3 + 8000039c: 001015f3 fsflags a1,zero + 800003a0: 01000613 li a2,16 + 800003a4: 10d51863 bne a0,a3,800004b4 + 800003a8: 10c59663 bne a1,a2,800004b4 + +00000000800003ac : + 800003ac: 01500193 li gp,21 + 800003b0: 00002517 auipc a0,0x2 + 800003b4: df050513 addi a0,a0,-528 # 800021a0 + 800003b8: 00053007 fld ft0,0(a0) + 800003bc: 00853087 fld ft1,8(a0) + 800003c0: 01053107 fld ft2,16(a0) + 800003c4: 01853683 ld a3,24(a0) + 800003c8: 2a1011d3 fmax.d ft3,ft0,ft1 + 800003cc: e2018553 fmv.x.d a0,ft3 + 800003d0: 001015f3 fsflags a1,zero + 800003d4: 00000613 li a2,0 + 800003d8: 0cd51e63 bne a0,a3,800004b4 + 800003dc: 0cc59c63 bne a1,a2,800004b4 + +00000000800003e0 : + 800003e0: 01e00193 li gp,30 + 800003e4: 00002517 auipc a0,0x2 + 800003e8: ddc50513 addi a0,a0,-548 # 800021c0 + 800003ec: 00053007 fld ft0,0(a0) + 800003f0: 00853087 fld ft1,8(a0) + 800003f4: 01053107 fld ft2,16(a0) + 800003f8: 01853683 ld a3,24(a0) + 800003fc: 2a1001d3 fmin.d ft3,ft0,ft1 + 80000400: e2018553 fmv.x.d a0,ft3 + 80000404: 001015f3 fsflags a1,zero + 80000408: 00000613 li a2,0 + 8000040c: 0ad51463 bne a0,a3,800004b4 + 80000410: 0ac59263 bne a1,a2,800004b4 + +0000000080000414 : + 80000414: 01f00193 li gp,31 + 80000418: 00002517 auipc a0,0x2 + 8000041c: dc850513 addi a0,a0,-568 # 800021e0 + 80000420: 00053007 fld ft0,0(a0) + 80000424: 00853087 fld ft1,8(a0) + 80000428: 01053107 fld ft2,16(a0) + 8000042c: 01853683 ld a3,24(a0) + 80000430: 2a1001d3 fmin.d ft3,ft0,ft1 + 80000434: e2018553 fmv.x.d a0,ft3 + 80000438: 001015f3 fsflags a1,zero + 8000043c: 00000613 li a2,0 + 80000440: 06d51a63 bne a0,a3,800004b4 + 80000444: 06c59863 bne a1,a2,800004b4 + +0000000080000448 : + 80000448: 02000193 li gp,32 + 8000044c: 00002517 auipc a0,0x2 + 80000450: db450513 addi a0,a0,-588 # 80002200 + 80000454: 00053007 fld ft0,0(a0) + 80000458: 00853087 fld ft1,8(a0) + 8000045c: 01053107 fld ft2,16(a0) + 80000460: 01853683 ld a3,24(a0) + 80000464: 2a1011d3 fmax.d ft3,ft0,ft1 + 80000468: e2018553 fmv.x.d a0,ft3 + 8000046c: 001015f3 fsflags a1,zero + 80000470: 00000613 li a2,0 + 80000474: 04d51063 bne a0,a3,800004b4 + 80000478: 02c59e63 bne a1,a2,800004b4 + +000000008000047c : + 8000047c: 02100193 li gp,33 + 80000480: 00002517 auipc a0,0x2 + 80000484: da050513 addi a0,a0,-608 # 80002220 + 80000488: 00053007 fld ft0,0(a0) + 8000048c: 00853087 fld ft1,8(a0) + 80000490: 01053107 fld ft2,16(a0) + 80000494: 01853683 ld a3,24(a0) + 80000498: 2a1011d3 fmax.d ft3,ft0,ft1 + 8000049c: e2018553 fmv.x.d a0,ft3 + 800004a0: 001015f3 fsflags a1,zero + 800004a4: 00000613 li a2,0 + 800004a8: 00d51663 bne a0,a3,800004b4 + 800004ac: 00c59463 bne a1,a2,800004b4 + 800004b0: 00301c63 bne zero,gp,800004c8 + +00000000800004b4 : + 800004b4: 0ff0000f fence + 800004b8: 00018063 beqz gp,800004b8 + 800004bc: 00119193 slli gp,gp,0x1 + 800004c0: 0011e193 ori gp,gp,1 + 800004c4: 00000073 ecall + +00000000800004c8 : + 800004c8: 0ff0000f fence + 800004cc: 00100193 li gp,1 + 800004d0: 00000073 ecall + 800004d4: c0001073 unimp + 800004d8: 0000 unimp + 800004da: 0000 unimp + 800004dc: 0000 unimp + 800004de: 0000 unimp + 800004e0: 0000 unimp + 800004e2: 0000 unimp + 800004e4: 0000 unimp + 800004e6: 0000 unimp + 800004e8: 0000 unimp + 800004ea: 0000 unimp + 800004ec: 0000 unimp + 800004ee: 0000 unimp + 800004f0: 0000 unimp + 800004f2: 0000 unimp + 800004f4: 0000 unimp + 800004f6: 0000 unimp + 800004f8: 0000 unimp + 800004fa: 0000 unimp + 800004fc: 0000 unimp + 800004fe: 0000 unimp + 80000500: 0000 unimp + 80000502: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 0000 unimp + 80002004: 0000 unimp + 80002006: 4004 lw s1,0(s0) + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 3ff0 fld fa2,248(a5) + 80002010: 0000 unimp + 80002012: 0000 unimp + 80002014: 0000 unimp + 80002016: 0000 unimp + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: 0000 unimp + 8000201e: 3ff0 fld fa2,248(a5) + +0000000080002020 : + 80002020: 6666 ld a2,88(sp) + 80002022: 6666 ld a2,88(sp) + 80002024: 4c66 lw s8,88(sp) + 80002026: 999ac093 xori ra,s5,-1639 + 8000202a: 9999 andi a1,a1,-26 + 8000202c: 9999 andi a1,a1,-26 + 8000202e: 3ff1 addiw t6,t6,-4 + 80002030: 0000 unimp + 80002032: 0000 unimp + 80002034: 0000 unimp + 80002036: 0000 unimp + 80002038: 6666 ld a2,88(sp) + 8000203a: 6666 ld a2,88(sp) + 8000203c: 4c66 lw s8,88(sp) + 8000203e: xori ra,s5,-1639 + +0000000080002040 : + 80002040: 999a add s3,s3,t1 + 80002042: 9999 andi a1,a1,-26 + 80002044: 9999 andi a1,a1,-26 + 80002046: 3ff1 addiw t6,t6,-4 + 80002048: 6666 ld a2,88(sp) + 8000204a: 6666 ld a2,88(sp) + 8000204c: 4c66 lw s8,88(sp) + 8000204e: 0000c093 xori ra,ra,0 + 80002052: 0000 unimp + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: 6666 ld a2,88(sp) + 8000205a: 6666 ld a2,88(sp) + 8000205c: 4c66 lw s8,88(sp) + 8000205e: not ra,t6 + +0000000080002060 : + 80002060: ffff 0xffff + 80002062: ffff 0xffff + 80002064: ffff 0xffff + 80002066: 7fff 0x7fff + 80002068: 6666 ld a2,88(sp) + 8000206a: 6666 ld a2,88(sp) + 8000206c: 4c66 lw s8,88(sp) + 8000206e: 0000c093 xori ra,ra,0 + 80002072: 0000 unimp + 80002074: 0000 unimp + 80002076: 0000 unimp + 80002078: 6666 ld a2,88(sp) + 8000207a: 6666 ld a2,88(sp) + 8000207c: 4c66 lw s8,88(sp) + 8000207e: xori ra,gp,-689 + +0000000080002080 : + 80002080: d4f1 beqz s1,8000204c + 80002082: 53c8 lw a0,36(a5) + 80002084: 400921fb 0x400921fb + 80002088: 8c3a mv s8,a4 + 8000208a: e230 sd a2,64(a2) + 8000208c: 798e ld s3,224(sp) + 8000208e: 3e45 addiw t3,t3,-15 + 80002090: 0000 unimp + 80002092: 0000 unimp + 80002094: 0000 unimp + 80002096: 0000 unimp + 80002098: 8c3a mv s8,a4 + 8000209a: e230 sd a2,64(a2) + 8000209c: 798e ld s3,224(sp) + 8000209e: 3e45 addiw t3,t3,-15 + +00000000800020a0 : + 800020a0: 0000 unimp + 800020a2: 0000 unimp + 800020a4: 0000 unimp + 800020a6: bff0 fsd fa2,248(a5) + 800020a8: 0000 unimp + 800020aa: 0000 unimp + 800020ac: 0000 unimp + 800020ae: c000 sw s0,0(s0) + 800020b0: 0000 unimp + 800020b2: 0000 unimp + 800020b4: 0000 unimp + 800020b6: 0000 unimp + 800020b8: 0000 unimp + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: c000 sw s0,0(s0) + +00000000800020c0 : + 800020c0: 0000 unimp + 800020c2: 0000 unimp + 800020c4: 0000 unimp + 800020c6: 4004 lw s1,0(s0) + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 3ff0 fld fa2,248(a5) + 800020d0: 0000 unimp + 800020d2: 0000 unimp + 800020d4: 0000 unimp + 800020d6: 0000 unimp + 800020d8: 0000 unimp + 800020da: 0000 unimp + 800020dc: 0000 unimp + 800020de: 4004 lw s1,0(s0) + +00000000800020e0 : + 800020e0: 6666 ld a2,88(sp) + 800020e2: 6666 ld a2,88(sp) + 800020e4: 4c66 lw s8,88(sp) + 800020e6: 999ac093 xori ra,s5,-1639 + 800020ea: 9999 andi a1,a1,-26 + 800020ec: 9999 andi a1,a1,-26 + 800020ee: 3ff1 addiw t6,t6,-4 + 800020f0: 0000 unimp + 800020f2: 0000 unimp + 800020f4: 0000 unimp + 800020f6: 0000 unimp + 800020f8: 999a add s3,s3,t1 + 800020fa: 9999 andi a1,a1,-26 + 800020fc: 9999 andi a1,a1,-26 + 800020fe: 3ff1 addiw t6,t6,-4 + +0000000080002100 : + 80002100: 999a add s3,s3,t1 + 80002102: 9999 andi a1,a1,-26 + 80002104: 9999 andi a1,a1,-26 + 80002106: 3ff1 addiw t6,t6,-4 + 80002108: 6666 ld a2,88(sp) + 8000210a: 6666 ld a2,88(sp) + 8000210c: 4c66 lw s8,88(sp) + 8000210e: 0000c093 xori ra,ra,0 + 80002112: 0000 unimp + 80002114: 0000 unimp + 80002116: 0000 unimp + 80002118: 999a add s3,s3,t1 + 8000211a: 9999 andi a1,a1,-26 + 8000211c: 9999 andi a1,a1,-26 + 8000211e: 3ff1 addiw t6,t6,-4 + +0000000080002120 : + 80002120: ffff 0xffff + 80002122: ffff 0xffff + 80002124: ffff 0xffff + 80002126: 7fff 0x7fff + 80002128: 6666 ld a2,88(sp) + 8000212a: 6666 ld a2,88(sp) + 8000212c: 4c66 lw s8,88(sp) + 8000212e: 0000c093 xori ra,ra,0 + 80002132: 0000 unimp + 80002134: 0000 unimp + 80002136: 0000 unimp + 80002138: 6666 ld a2,88(sp) + 8000213a: 6666 ld a2,88(sp) + 8000213c: 4c66 lw s8,88(sp) + 8000213e: xori ra,gp,-689 + +0000000080002140 : + 80002140: d4f1 beqz s1,8000210c + 80002142: 53c8 lw a0,36(a5) + 80002144: 400921fb 0x400921fb + 80002148: 8c3a mv s8,a4 + 8000214a: e230 sd a2,64(a2) + 8000214c: 798e ld s3,224(sp) + 8000214e: 3e45 addiw t3,t3,-15 + 80002150: 0000 unimp + 80002152: 0000 unimp + 80002154: 0000 unimp + 80002156: 0000 unimp + 80002158: d4f1 beqz s1,80002124 + 8000215a: 53c8 lw a0,36(a5) + 8000215c: 400921fb 0x400921fb + +0000000080002160 : + 80002160: 0000 unimp + 80002162: 0000 unimp + 80002164: 0000 unimp + 80002166: bff0 fsd fa2,248(a5) + 80002168: 0000 unimp + 8000216a: 0000 unimp + 8000216c: 0000 unimp + 8000216e: c000 sw s0,0(s0) + 80002170: 0000 unimp + 80002172: 0000 unimp + 80002174: 0000 unimp + 80002176: 0000 unimp + 80002178: 0000 unimp + 8000217a: 0000 unimp + 8000217c: 0000 unimp + 8000217e: bff0 fsd fa2,248(a5) + +0000000080002180 : + 80002180: 0001 nop + 80002182: 0000 unimp + 80002184: 0000 unimp + 80002186: 7ff0 ld a2,248(a5) + 80002188: 0000 unimp + 8000218a: 0000 unimp + 8000218c: 0000 unimp + 8000218e: 3ff0 fld fa2,248(a5) + 80002190: 0000 unimp + 80002192: 0000 unimp + 80002194: 0000 unimp + 80002196: 0000 unimp + 80002198: 0000 unimp + 8000219a: 0000 unimp + 8000219c: 0000 unimp + 8000219e: 3ff0 fld fa2,248(a5) + +00000000800021a0 : + 800021a0: ffff 0xffff + 800021a2: ffff 0xffff + 800021a4: ffff 0xffff + 800021a6: 7fff 0x7fff + 800021a8: ffff 0xffff + 800021aa: ffff 0xffff + 800021ac: ffff 0xffff + 800021ae: 7fff 0x7fff + 800021b0: 0000 unimp + 800021b2: 0000 unimp + 800021b4: 0000 unimp + 800021b6: 0000 unimp + 800021b8: 0000 unimp + 800021ba: 0000 unimp + 800021bc: 0000 unimp + 800021be: 7ff8 ld a4,248(a5) + +00000000800021c0 : + 800021c0: 0000 unimp + 800021c2: 0000 unimp + 800021c4: 0000 unimp + 800021c6: 8000 0x8000 + 800021c8: 0000 unimp + 800021ca: 0000 unimp + 800021cc: 0000 unimp + 800021ce: 0000 unimp + 800021d0: 0000 unimp + 800021d2: 0000 unimp + 800021d4: 0000 unimp + 800021d6: 0000 unimp + 800021d8: 0000 unimp + 800021da: 0000 unimp + 800021dc: 0000 unimp + 800021de: 8000 0x8000 + +00000000800021e0 : + 800021e0: 0000 unimp + 800021e2: 0000 unimp + 800021e4: 0000 unimp + 800021e6: 0000 unimp + 800021e8: 0000 unimp + 800021ea: 0000 unimp + 800021ec: 0000 unimp + 800021ee: 8000 0x8000 + 800021f0: 0000 unimp + 800021f2: 0000 unimp + 800021f4: 0000 unimp + 800021f6: 0000 unimp + 800021f8: 0000 unimp + 800021fa: 0000 unimp + 800021fc: 0000 unimp + 800021fe: 8000 0x8000 + +0000000080002200 : + 80002200: 0000 unimp + 80002202: 0000 unimp + 80002204: 0000 unimp + 80002206: 8000 0x8000 + 80002208: 0000 unimp + 8000220a: 0000 unimp + 8000220c: 0000 unimp + 8000220e: 0000 unimp + 80002210: 0000 unimp + 80002212: 0000 unimp + 80002214: 0000 unimp + 80002216: 0000 unimp + 80002218: 0000 unimp + 8000221a: 0000 unimp + 8000221c: 0000 unimp + 8000221e: 0000 unimp + +0000000080002220 : + 80002220: 0000 unimp + 80002222: 0000 unimp + 80002224: 0000 unimp + 80002226: 0000 unimp + 80002228: 0000 unimp + 8000222a: 0000 unimp + 8000222c: 0000 unimp + 8000222e: 8000 0x8000 + 80002230: 0000 unimp + 80002232: 0000 unimp + 80002234: 0000 unimp + 80002236: 0000 unimp + 80002238: 0000 unimp + 8000223a: 0000 unimp + 8000223c: 0000 unimp + 8000223e: 0000 unimp diff --git a/Tests/isa/rv64ud-p-ldst b/Tests/isa/rv64ud-p-ldst new file mode 100644 index 0000000..f35e32c Binary files /dev/null and b/Tests/isa/rv64ud-p-ldst differ diff --git a/Tests/isa/rv64ud-p-ldst.dump b/Tests/isa/rv64ud-p-ldst.dump new file mode 100644 index 0000000..e298f6d --- /dev/null +++ b/Tests/isa/rv64ud-p-ldst.dump @@ -0,0 +1,185 @@ + +rv64ud-p-ldst: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00002417 auipc s0,0x2 + 8000010c: ef840413 addi s0,s0,-264 # 80002000 + +0000000080000110 : + 80000110: 00043107 fld ft2,0(s0) + 80000114: 00243827 fsd ft2,16(s0) + 80000118: 01043503 ld a0,16(s0) + 8000011c: 00100e9b addiw t4,zero,1 + 80000120: 027e9e93 slli t4,t4,0x27 + 80000124: 17fe8e93 addi t4,t4,383 + 80000128: 017e9e93 slli t4,t4,0x17 + 8000012c: 00200193 li gp,2 + 80000130: 09d51863 bne a0,t4,800001c0 + +0000000080000134 : + 80000134: 00043107 fld ft2,0(s0) + 80000138: 00242827 fsw ft2,16(s0) + 8000013c: 01043503 ld a0,16(s0) + 80000140: 00100e9b addiw t4,zero,1 + 80000144: 027e9e93 slli t4,t4,0x27 + 80000148: 17fe8e93 addi t4,t4,383 + 8000014c: 017e9e93 slli t4,t4,0x17 + 80000150: 00300193 li gp,3 + 80000154: 07d51663 bne a0,t4,800001c0 + +0000000080000158 : + 80000158: 00042107 flw ft2,0(s0) + 8000015c: 00242827 fsw ft2,16(s0) + 80000160: 01043503 ld a0,16(s0) + 80000164: 00100e9b addiw t4,zero,1 + 80000168: 027e9e93 slli t4,t4,0x27 + 8000016c: 17fe8e93 addi t4,t4,383 + 80000170: 017e9e93 slli t4,t4,0x17 + 80000174: 00400193 li gp,4 + 80000178: 05d51463 bne a0,t4,800001c0 + +000000008000017c : + 8000017c: 00843107 fld ft2,8(s0) + 80000180: 00243827 fsd ft2,16(s0) + 80000184: 01043503 ld a0,16(s0) + 80000188: f8100e9b addiw t4,zero,-127 + 8000018c: 021e9e93 slli t4,t4,0x21 + 80000190: 101e8e93 addi t4,t4,257 + 80000194: 016e9e93 slli t4,t4,0x16 + 80000198: 00500193 li gp,5 + 8000019c: 03d51263 bne a0,t4,800001c0 + +00000000800001a0 : + 800001a0: 00842107 flw ft2,8(s0) + 800001a4: 00243827 fsd ft2,16(s0) + 800001a8: 01043503 ld a0,16(s0) + 800001ac: d0100e9b addiw t4,zero,-767 + 800001b0: 016e9e93 slli t4,t4,0x16 + 800001b4: 00600193 li gp,6 + 800001b8: 01d51463 bne a0,t4,800001c0 + 800001bc: 00301c63 bne zero,gp,800001d4 + +00000000800001c0 : + 800001c0: 0ff0000f fence + 800001c4: 00018063 beqz gp,800001c4 + 800001c8: 00119193 slli gp,gp,0x1 + 800001cc: 0011e193 ori gp,gp,1 + 800001d0: 00000073 ecall + +00000000800001d4 : + 800001d4: 0ff0000f fence + 800001d8: 00100193 li gp,1 + 800001dc: 00000073 ecall + 800001e0: c0001073 unimp + 800001e4: 0000 unimp + 800001e6: 0000 unimp + 800001e8: 0000 unimp + 800001ea: 0000 unimp + 800001ec: 0000 unimp + 800001ee: 0000 unimp + 800001f0: 0000 unimp + 800001f2: 0000 unimp + 800001f4: 0000 unimp + 800001f6: 0000 unimp + 800001f8: 0000 unimp + 800001fa: 0000 unimp + 800001fc: 0000 unimp + 800001fe: 0000 unimp + 80000200: 0000 unimp + 80000202: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: bf80 fsd fs0,56(a5) + 80002004: 0000 unimp + 80002006: 4000 lw s0,0(s0) + 80002008: 0000 unimp + 8000200a: 4040 lw s0,4(s0) + 8000200c: 0000 unimp + 8000200e: c080 sw s0,0(s1) + 80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> + 80002014: babe fsd fa5,368(sp) + 80002016: cafe sw t6,84(sp) + 80002018: 1dea slli s11,s11,0x3a + 8000201a: abad j 80002594 <_end+0x574> + 8000201c: d00d beqz s0,80001f3e + 8000201e: lui t1,0x1 diff --git a/Tests/isa/rv64ud-p-move b/Tests/isa/rv64ud-p-move new file mode 100644 index 0000000..86a958f Binary files /dev/null and b/Tests/isa/rv64ud-p-move differ diff --git a/Tests/isa/rv64ud-p-move.dump b/Tests/isa/rv64ud-p-move.dump new file mode 100644 index 0000000..2426175 --- /dev/null +++ b/Tests/isa/rv64ud-p-move.dump @@ -0,0 +1,1179 @@ + +rv64ud-p-move: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00002f17 auipc t5,0x2 + 80000044: fc3f2023 sw gp,-64(t5) # 80002000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 002475b7 lui a1,0x247 + 8000010c: 8ad5859b addiw a1,a1,-1875 + 80000110: 00e59593 slli a1,a1,0xe + 80000114: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80000118: 00c59593 slli a1,a1,0xc + 8000011c: 5e758593 addi a1,a1,1511 + 80000120: 00d59593 slli a1,a1,0xd + 80000124: ef058593 addi a1,a1,-272 + 80000128: 00000613 li a2,0 + 8000012c: f20580d3 fmv.d.x ft1,a1 + 80000130: f2060153 fmv.d.x ft2,a2 + 80000134: 22208053 fsgnj.d ft0,ft1,ft2 + 80000138: e2000553 fmv.x.d a0,ft0 + 8000013c: 00247eb7 lui t4,0x247 + 80000140: 8ade8e9b addiw t4,t4,-1875 + 80000144: 00ee9e93 slli t4,t4,0xe + 80000148: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 8000014c: 00ce9e93 slli t4,t4,0xc + 80000150: 5e7e8e93 addi t4,t4,1511 + 80000154: 00de9e93 slli t4,t4,0xd + 80000158: ef0e8e93 addi t4,t4,-272 + 8000015c: 00a00193 li gp,10 + 80000160: 69d512e3 bne a0,t4,80000fe4 + +0000000080000164 : + 80000164: 002475b7 lui a1,0x247 + 80000168: 8ad5859b addiw a1,a1,-1875 + 8000016c: 00e59593 slli a1,a1,0xe + 80000170: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80000174: 00c59593 slli a1,a1,0xc + 80000178: 5e758593 addi a1,a1,1511 + 8000017c: 00d59593 slli a1,a1,0xd + 80000180: ef058593 addi a1,a1,-272 + 80000184: fff00613 li a2,-1 + 80000188: f20580d3 fmv.d.x ft1,a1 + 8000018c: f2060153 fmv.d.x ft2,a2 + 80000190: 22208053 fsgnj.d ft0,ft1,ft2 + 80000194: e2000553 fmv.x.d a0,ft0 + 80000198: ff247eb7 lui t4,0xff247 + 8000019c: 8ade8e9b addiw t4,t4,-1875 + 800001a0: 00ee9e93 slli t4,t4,0xe + 800001a4: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 800001a8: 00ce9e93 slli t4,t4,0xc + 800001ac: 5e7e8e93 addi t4,t4,1511 + 800001b0: 00de9e93 slli t4,t4,0xd + 800001b4: ef0e8e93 addi t4,t4,-272 + 800001b8: 00b00193 li gp,11 + 800001bc: 63d514e3 bne a0,t4,80000fe4 + +00000000800001c0 : + 800001c0: ff2475b7 lui a1,0xff247 + 800001c4: 8ad5859b addiw a1,a1,-1875 + 800001c8: 00e59593 slli a1,a1,0xe + 800001cc: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 800001d0: 00c59593 slli a1,a1,0xc + 800001d4: 5e758593 addi a1,a1,1511 + 800001d8: 00d59593 slli a1,a1,0xd + 800001dc: ef058593 addi a1,a1,-272 + 800001e0: 00000613 li a2,0 + 800001e4: f20580d3 fmv.d.x ft1,a1 + 800001e8: f2060153 fmv.d.x ft2,a2 + 800001ec: 22208053 fsgnj.d ft0,ft1,ft2 + 800001f0: e2000553 fmv.x.d a0,ft0 + 800001f4: 00247eb7 lui t4,0x247 + 800001f8: 8ade8e9b addiw t4,t4,-1875 + 800001fc: 00ee9e93 slli t4,t4,0xe + 80000200: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80000204: 00ce9e93 slli t4,t4,0xc + 80000208: 5e7e8e93 addi t4,t4,1511 + 8000020c: 00de9e93 slli t4,t4,0xd + 80000210: ef0e8e93 addi t4,t4,-272 + 80000214: 00c00193 li gp,12 + 80000218: 5dd516e3 bne a0,t4,80000fe4 + +000000008000021c : + 8000021c: ff2475b7 lui a1,0xff247 + 80000220: 8ad5859b addiw a1,a1,-1875 + 80000224: 00e59593 slli a1,a1,0xe + 80000228: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 8000022c: 00c59593 slli a1,a1,0xc + 80000230: 5e758593 addi a1,a1,1511 + 80000234: 00d59593 slli a1,a1,0xd + 80000238: ef058593 addi a1,a1,-272 + 8000023c: fff00613 li a2,-1 + 80000240: f20580d3 fmv.d.x ft1,a1 + 80000244: f2060153 fmv.d.x ft2,a2 + 80000248: 22208053 fsgnj.d ft0,ft1,ft2 + 8000024c: e2000553 fmv.x.d a0,ft0 + 80000250: ff247eb7 lui t4,0xff247 + 80000254: 8ade8e9b addiw t4,t4,-1875 + 80000258: 00ee9e93 slli t4,t4,0xe + 8000025c: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 80000260: 00ce9e93 slli t4,t4,0xc + 80000264: 5e7e8e93 addi t4,t4,1511 + 80000268: 00de9e93 slli t4,t4,0xd + 8000026c: ef0e8e93 addi t4,t4,-272 + 80000270: 00d00193 li gp,13 + 80000274: 57d518e3 bne a0,t4,80000fe4 + +0000000080000278 : + 80000278: 002475b7 lui a1,0x247 + 8000027c: 8ad5859b addiw a1,a1,-1875 + 80000280: 00e59593 slli a1,a1,0xe + 80000284: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80000288: 00c59593 slli a1,a1,0xc + 8000028c: 5e758593 addi a1,a1,1511 + 80000290: 00d59593 slli a1,a1,0xd + 80000294: ef058593 addi a1,a1,-272 + 80000298: 00000613 li a2,0 + 8000029c: f20580d3 fmv.d.x ft1,a1 + 800002a0: f2060153 fmv.d.x ft2,a2 + 800002a4: 22209053 fsgnjn.d ft0,ft1,ft2 + 800002a8: e2000553 fmv.x.d a0,ft0 + 800002ac: ff247eb7 lui t4,0xff247 + 800002b0: 8ade8e9b addiw t4,t4,-1875 + 800002b4: 00ee9e93 slli t4,t4,0xe + 800002b8: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 800002bc: 00ce9e93 slli t4,t4,0xc + 800002c0: 5e7e8e93 addi t4,t4,1511 + 800002c4: 00de9e93 slli t4,t4,0xd + 800002c8: ef0e8e93 addi t4,t4,-272 + 800002cc: 01400193 li gp,20 + 800002d0: 51d51ae3 bne a0,t4,80000fe4 + +00000000800002d4 : + 800002d4: 002475b7 lui a1,0x247 + 800002d8: 8ad5859b addiw a1,a1,-1875 + 800002dc: 00e59593 slli a1,a1,0xe + 800002e0: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 800002e4: 00c59593 slli a1,a1,0xc + 800002e8: 5e758593 addi a1,a1,1511 + 800002ec: 00d59593 slli a1,a1,0xd + 800002f0: ef058593 addi a1,a1,-272 + 800002f4: fff00613 li a2,-1 + 800002f8: f20580d3 fmv.d.x ft1,a1 + 800002fc: f2060153 fmv.d.x ft2,a2 + 80000300: 22209053 fsgnjn.d ft0,ft1,ft2 + 80000304: e2000553 fmv.x.d a0,ft0 + 80000308: 00247eb7 lui t4,0x247 + 8000030c: 8ade8e9b addiw t4,t4,-1875 + 80000310: 00ee9e93 slli t4,t4,0xe + 80000314: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80000318: 00ce9e93 slli t4,t4,0xc + 8000031c: 5e7e8e93 addi t4,t4,1511 + 80000320: 00de9e93 slli t4,t4,0xd + 80000324: ef0e8e93 addi t4,t4,-272 + 80000328: 01500193 li gp,21 + 8000032c: 4bd51ce3 bne a0,t4,80000fe4 + +0000000080000330 : + 80000330: ff2475b7 lui a1,0xff247 + 80000334: 8ad5859b addiw a1,a1,-1875 + 80000338: 00e59593 slli a1,a1,0xe + 8000033c: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 80000340: 00c59593 slli a1,a1,0xc + 80000344: 5e758593 addi a1,a1,1511 + 80000348: 00d59593 slli a1,a1,0xd + 8000034c: ef058593 addi a1,a1,-272 + 80000350: 00000613 li a2,0 + 80000354: f20580d3 fmv.d.x ft1,a1 + 80000358: f2060153 fmv.d.x ft2,a2 + 8000035c: 22209053 fsgnjn.d ft0,ft1,ft2 + 80000360: e2000553 fmv.x.d a0,ft0 + 80000364: ff247eb7 lui t4,0xff247 + 80000368: 8ade8e9b addiw t4,t4,-1875 + 8000036c: 00ee9e93 slli t4,t4,0xe + 80000370: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 80000374: 00ce9e93 slli t4,t4,0xc + 80000378: 5e7e8e93 addi t4,t4,1511 + 8000037c: 00de9e93 slli t4,t4,0xd + 80000380: ef0e8e93 addi t4,t4,-272 + 80000384: 01600193 li gp,22 + 80000388: 45d51ee3 bne a0,t4,80000fe4 + +000000008000038c : + 8000038c: ff2475b7 lui a1,0xff247 + 80000390: 8ad5859b addiw a1,a1,-1875 + 80000394: 00e59593 slli a1,a1,0xe + 80000398: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 8000039c: 00c59593 slli a1,a1,0xc + 800003a0: 5e758593 addi a1,a1,1511 + 800003a4: 00d59593 slli a1,a1,0xd + 800003a8: ef058593 addi a1,a1,-272 + 800003ac: fff00613 li a2,-1 + 800003b0: f20580d3 fmv.d.x ft1,a1 + 800003b4: f2060153 fmv.d.x ft2,a2 + 800003b8: 22209053 fsgnjn.d ft0,ft1,ft2 + 800003bc: e2000553 fmv.x.d a0,ft0 + 800003c0: 00247eb7 lui t4,0x247 + 800003c4: 8ade8e9b addiw t4,t4,-1875 + 800003c8: 00ee9e93 slli t4,t4,0xe + 800003cc: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 800003d0: 00ce9e93 slli t4,t4,0xc + 800003d4: 5e7e8e93 addi t4,t4,1511 + 800003d8: 00de9e93 slli t4,t4,0xd + 800003dc: ef0e8e93 addi t4,t4,-272 + 800003e0: 01700193 li gp,23 + 800003e4: 41d510e3 bne a0,t4,80000fe4 + +00000000800003e8 : + 800003e8: 002475b7 lui a1,0x247 + 800003ec: 8ad5859b addiw a1,a1,-1875 + 800003f0: 00e59593 slli a1,a1,0xe + 800003f4: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 800003f8: 00c59593 slli a1,a1,0xc + 800003fc: 5e758593 addi a1,a1,1511 + 80000400: 00d59593 slli a1,a1,0xd + 80000404: ef058593 addi a1,a1,-272 + 80000408: 00000613 li a2,0 + 8000040c: f20580d3 fmv.d.x ft1,a1 + 80000410: f2060153 fmv.d.x ft2,a2 + 80000414: 2220a053 fsgnjx.d ft0,ft1,ft2 + 80000418: e2000553 fmv.x.d a0,ft0 + 8000041c: 00247eb7 lui t4,0x247 + 80000420: 8ade8e9b addiw t4,t4,-1875 + 80000424: 00ee9e93 slli t4,t4,0xe + 80000428: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 8000042c: 00ce9e93 slli t4,t4,0xc + 80000430: 5e7e8e93 addi t4,t4,1511 + 80000434: 00de9e93 slli t4,t4,0xd + 80000438: ef0e8e93 addi t4,t4,-272 + 8000043c: 01e00193 li gp,30 + 80000440: 3bd512e3 bne a0,t4,80000fe4 + +0000000080000444 : + 80000444: 002475b7 lui a1,0x247 + 80000448: 8ad5859b addiw a1,a1,-1875 + 8000044c: 00e59593 slli a1,a1,0xe + 80000450: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80000454: 00c59593 slli a1,a1,0xc + 80000458: 5e758593 addi a1,a1,1511 + 8000045c: 00d59593 slli a1,a1,0xd + 80000460: ef058593 addi a1,a1,-272 + 80000464: fff00613 li a2,-1 + 80000468: f20580d3 fmv.d.x ft1,a1 + 8000046c: f2060153 fmv.d.x ft2,a2 + 80000470: 2220a053 fsgnjx.d ft0,ft1,ft2 + 80000474: e2000553 fmv.x.d a0,ft0 + 80000478: ff247eb7 lui t4,0xff247 + 8000047c: 8ade8e9b addiw t4,t4,-1875 + 80000480: 00ee9e93 slli t4,t4,0xe + 80000484: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 80000488: 00ce9e93 slli t4,t4,0xc + 8000048c: 5e7e8e93 addi t4,t4,1511 + 80000490: 00de9e93 slli t4,t4,0xd + 80000494: ef0e8e93 addi t4,t4,-272 + 80000498: 01f00193 li gp,31 + 8000049c: 35d514e3 bne a0,t4,80000fe4 + +00000000800004a0 : + 800004a0: ff2475b7 lui a1,0xff247 + 800004a4: 8ad5859b addiw a1,a1,-1875 + 800004a8: 00e59593 slli a1,a1,0xe + 800004ac: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 800004b0: 00c59593 slli a1,a1,0xc + 800004b4: 5e758593 addi a1,a1,1511 + 800004b8: 00d59593 slli a1,a1,0xd + 800004bc: ef058593 addi a1,a1,-272 + 800004c0: 00000613 li a2,0 + 800004c4: f20580d3 fmv.d.x ft1,a1 + 800004c8: f2060153 fmv.d.x ft2,a2 + 800004cc: 2220a053 fsgnjx.d ft0,ft1,ft2 + 800004d0: e2000553 fmv.x.d a0,ft0 + 800004d4: ff247eb7 lui t4,0xff247 + 800004d8: 8ade8e9b addiw t4,t4,-1875 + 800004dc: 00ee9e93 slli t4,t4,0xe + 800004e0: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 800004e4: 00ce9e93 slli t4,t4,0xc + 800004e8: 5e7e8e93 addi t4,t4,1511 + 800004ec: 00de9e93 slli t4,t4,0xd + 800004f0: ef0e8e93 addi t4,t4,-272 + 800004f4: 02000193 li gp,32 + 800004f8: 2fd516e3 bne a0,t4,80000fe4 + +00000000800004fc : + 800004fc: ff2475b7 lui a1,0xff247 + 80000500: 8ad5859b addiw a1,a1,-1875 + 80000504: 00e59593 slli a1,a1,0xe + 80000508: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f243c4d> + 8000050c: 00c59593 slli a1,a1,0xc + 80000510: 5e758593 addi a1,a1,1511 + 80000514: 00d59593 slli a1,a1,0xd + 80000518: ef058593 addi a1,a1,-272 + 8000051c: fff00613 li a2,-1 + 80000520: f20580d3 fmv.d.x ft1,a1 + 80000524: f2060153 fmv.d.x ft2,a2 + 80000528: 2220a053 fsgnjx.d ft0,ft1,ft2 + 8000052c: e2000553 fmv.x.d a0,ft0 + 80000530: 00247eb7 lui t4,0x247 + 80000534: 8ade8e9b addiw t4,t4,-1875 + 80000538: 00ee9e93 slli t4,t4,0xe + 8000053c: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80000540: 00ce9e93 slli t4,t4,0xc + 80000544: 5e7e8e93 addi t4,t4,1511 + 80000548: 00de9e93 slli t4,t4,0xd + 8000054c: ef0e8e93 addi t4,t4,-272 + 80000550: 02100193 li gp,33 + 80000554: 29d518e3 bne a0,t4,80000fe4 + +0000000080000558 : + 80000558: 0010059b addiw a1,zero,1 + 8000055c: 02659593 slli a1,a1,0x26 + 80000560: f0958593 addi a1,a1,-247 + 80000564: 00d59593 slli a1,a1,0xd + 80000568: 34558593 addi a1,a1,837 + 8000056c: 00c59593 slli a1,a1,0xc + 80000570: 67858593 addi a1,a1,1656 + 80000574: 00000613 li a2,0 + 80000578: f20580d3 fmv.d.x ft1,a1 + 8000057c: f2060153 fmv.d.x ft2,a2 + 80000580: 20208053 fsgnj.s ft0,ft1,ft2 + 80000584: e0000553 fmv.x.w a0,ft0 + 80000588: 7fc00eb7 lui t4,0x7fc00 + 8000058c: 02800193 li gp,40 + 80000590: 25d51ae3 bne a0,t4,80000fe4 + +0000000080000594 : + 80000594: 0010059b addiw a1,zero,1 + 80000598: 02659593 slli a1,a1,0x26 + 8000059c: f0958593 addi a1,a1,-247 + 800005a0: 00d59593 slli a1,a1,0xd + 800005a4: 34558593 addi a1,a1,837 + 800005a8: 00c59593 slli a1,a1,0xc + 800005ac: 67858593 addi a1,a1,1656 + 800005b0: 00000613 li a2,0 + 800005b4: f20580d3 fmv.d.x ft1,a1 + 800005b8: f2060153 fmv.d.x ft2,a2 + 800005bc: 20208053 fsgnj.s ft0,ft1,ft2 + 800005c0: e2000553 fmv.x.d a0,ft0 + 800005c4: dff00e9b addiw t4,zero,-513 + 800005c8: 016e9e93 slli t4,t4,0x16 + 800005cc: 08c00193 li gp,140 + 800005d0: 21d51ae3 bne a0,t4,80000fe4 + +00000000800005d4 : + 800005d4: ffe125b7 lui a1,0xffe12 + 800005d8: 3455859b addiw a1,a1,837 + 800005dc: 00c59593 slli a1,a1,0xc + 800005e0: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe0f678> + 800005e4: 00000613 li a2,0 + 800005e8: f20580d3 fmv.d.x ft1,a1 + 800005ec: f2060153 fmv.d.x ft2,a2 + 800005f0: 20208053 fsgnj.s ft0,ft1,ft2 + 800005f4: e0000553 fmv.x.w a0,ft0 + 800005f8: 7fc00eb7 lui t4,0x7fc00 + 800005fc: 02900193 li gp,41 + 80000600: 1fd512e3 bne a0,t4,80000fe4 + +0000000080000604 : + 80000604: ffe125b7 lui a1,0xffe12 + 80000608: 3455859b addiw a1,a1,837 + 8000060c: 00c59593 slli a1,a1,0xc + 80000610: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe0f678> + 80000614: 00000613 li a2,0 + 80000618: f20580d3 fmv.d.x ft1,a1 + 8000061c: f2060153 fmv.d.x ft2,a2 + 80000620: 20208053 fsgnj.s ft0,ft1,ft2 + 80000624: e2000553 fmv.x.d a0,ft0 + 80000628: dff00e9b addiw t4,zero,-513 + 8000062c: 016e9e93 slli t4,t4,0x16 + 80000630: 08d00193 li gp,141 + 80000634: 1bd518e3 bne a0,t4,80000fe4 + +0000000080000638 : + 80000638: 0010059b addiw a1,zero,1 + 8000063c: 02659593 slli a1,a1,0x26 + 80000640: f8958593 addi a1,a1,-119 + 80000644: 00d59593 slli a1,a1,0xd + 80000648: 34558593 addi a1,a1,837 + 8000064c: 00c59593 slli a1,a1,0xc + 80000650: 67858593 addi a1,a1,1656 + 80000654: 00000613 li a2,0 + 80000658: f20580d3 fmv.d.x ft1,a1 + 8000065c: f2060153 fmv.d.x ft2,a2 + 80000660: 20208053 fsgnj.s ft0,ft1,ft2 + 80000664: e0000553 fmv.x.w a0,ft0 + 80000668: 7fc00eb7 lui t4,0x7fc00 + 8000066c: 02a00193 li gp,42 + 80000670: 17d51ae3 bne a0,t4,80000fe4 + +0000000080000674 : + 80000674: 0010059b addiw a1,zero,1 + 80000678: 02659593 slli a1,a1,0x26 + 8000067c: f8958593 addi a1,a1,-119 + 80000680: 00d59593 slli a1,a1,0xd + 80000684: 34558593 addi a1,a1,837 + 80000688: 00c59593 slli a1,a1,0xc + 8000068c: 67858593 addi a1,a1,1656 + 80000690: 00000613 li a2,0 + 80000694: f20580d3 fmv.d.x ft1,a1 + 80000698: f2060153 fmv.d.x ft2,a2 + 8000069c: 20208053 fsgnj.s ft0,ft1,ft2 + 800006a0: e2000553 fmv.x.d a0,ft0 + 800006a4: dff00e9b addiw t4,zero,-513 + 800006a8: 016e9e93 slli t4,t4,0x16 + 800006ac: 08e00193 li gp,142 + 800006b0: 13d51ae3 bne a0,t4,80000fe4 + +00000000800006b4 : + 800006b4: fff125b7 lui a1,0xfff12 + 800006b8: 3455859b addiw a1,a1,837 + 800006bc: 00c59593 slli a1,a1,0xc + 800006c0: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 800006c4: 00000613 li a2,0 + 800006c8: f20580d3 fmv.d.x ft1,a1 + 800006cc: f2060153 fmv.d.x ft2,a2 + 800006d0: 20208053 fsgnj.s ft0,ft1,ft2 + 800006d4: e0000553 fmv.x.w a0,ft0 + 800006d8: 12345eb7 lui t4,0x12345 + 800006dc: 678e8e9b addiw t4,t4,1656 + 800006e0: 02b00193 li gp,43 + 800006e4: 11d510e3 bne a0,t4,80000fe4 + +00000000800006e8 : + 800006e8: fff125b7 lui a1,0xfff12 + 800006ec: 3455859b addiw a1,a1,837 + 800006f0: 00c59593 slli a1,a1,0xc + 800006f4: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 800006f8: 00000613 li a2,0 + 800006fc: f20580d3 fmv.d.x ft1,a1 + 80000700: f2060153 fmv.d.x ft2,a2 + 80000704: 20208053 fsgnj.s ft0,ft1,ft2 + 80000708: e2000553 fmv.x.d a0,ft0 + 8000070c: fff12eb7 lui t4,0xfff12 + 80000710: 345e8e9b addiw t4,t4,837 + 80000714: 00ce9e93 slli t4,t4,0xc + 80000718: 678e8e93 addi t4,t4,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 8000071c: 08f00193 li gp,143 + 80000720: 0dd512e3 bne a0,t4,80000fe4 + +0000000080000724 : + 80000724: 0010059b addiw a1,zero,1 + 80000728: 02659593 slli a1,a1,0x26 + 8000072c: f0958593 addi a1,a1,-247 + 80000730: 00d59593 slli a1,a1,0xd + 80000734: 34558593 addi a1,a1,837 + 80000738: 00c59593 slli a1,a1,0xc + 8000073c: 67858593 addi a1,a1,1656 + 80000740: 0010061b addiw a2,zero,1 + 80000744: 01f61613 slli a2,a2,0x1f + 80000748: f20580d3 fmv.d.x ft1,a1 + 8000074c: f2060153 fmv.d.x ft2,a2 + 80000750: 20208053 fsgnj.s ft0,ft1,ft2 + 80000754: e0000553 fmv.x.w a0,ft0 + 80000758: 7fc00eb7 lui t4,0x7fc00 + 8000075c: 03200193 li gp,50 + 80000760: 09d512e3 bne a0,t4,80000fe4 + +0000000080000764 : + 80000764: 0010059b addiw a1,zero,1 + 80000768: 02659593 slli a1,a1,0x26 + 8000076c: f0958593 addi a1,a1,-247 + 80000770: 00d59593 slli a1,a1,0xd + 80000774: 34558593 addi a1,a1,837 + 80000778: 00c59593 slli a1,a1,0xc + 8000077c: 67858593 addi a1,a1,1656 + 80000780: 0010061b addiw a2,zero,1 + 80000784: 01f61613 slli a2,a2,0x1f + 80000788: f20580d3 fmv.d.x ft1,a1 + 8000078c: f2060153 fmv.d.x ft2,a2 + 80000790: 20208053 fsgnj.s ft0,ft1,ft2 + 80000794: e2000553 fmv.x.d a0,ft0 + 80000798: dff00e9b addiw t4,zero,-513 + 8000079c: 016e9e93 slli t4,t4,0x16 + 800007a0: 09600193 li gp,150 + 800007a4: 05d510e3 bne a0,t4,80000fe4 + +00000000800007a8 : + 800007a8: ffe125b7 lui a1,0xffe12 + 800007ac: 3455859b addiw a1,a1,837 + 800007b0: 00c59593 slli a1,a1,0xc + 800007b4: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe0f678> + 800007b8: 0010061b addiw a2,zero,1 + 800007bc: 01f61613 slli a2,a2,0x1f + 800007c0: f20580d3 fmv.d.x ft1,a1 + 800007c4: f2060153 fmv.d.x ft2,a2 + 800007c8: 20208053 fsgnj.s ft0,ft1,ft2 + 800007cc: e0000553 fmv.x.w a0,ft0 + 800007d0: 7fc00eb7 lui t4,0x7fc00 + 800007d4: 03300193 li gp,51 + 800007d8: 01d516e3 bne a0,t4,80000fe4 + +00000000800007dc : + 800007dc: ffe125b7 lui a1,0xffe12 + 800007e0: 3455859b addiw a1,a1,837 + 800007e4: 00c59593 slli a1,a1,0xc + 800007e8: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe0f678> + 800007ec: 0010061b addiw a2,zero,1 + 800007f0: 01f61613 slli a2,a2,0x1f + 800007f4: f20580d3 fmv.d.x ft1,a1 + 800007f8: f2060153 fmv.d.x ft2,a2 + 800007fc: 20208053 fsgnj.s ft0,ft1,ft2 + 80000800: e2000553 fmv.x.d a0,ft0 + 80000804: dff00e9b addiw t4,zero,-513 + 80000808: 016e9e93 slli t4,t4,0x16 + 8000080c: 09700193 li gp,151 + 80000810: 7dd51a63 bne a0,t4,80000fe4 + +0000000080000814 : + 80000814: 0010059b addiw a1,zero,1 + 80000818: 02659593 slli a1,a1,0x26 + 8000081c: f8958593 addi a1,a1,-119 + 80000820: 00d59593 slli a1,a1,0xd + 80000824: 34558593 addi a1,a1,837 + 80000828: 00c59593 slli a1,a1,0xc + 8000082c: 67858593 addi a1,a1,1656 + 80000830: 0010061b addiw a2,zero,1 + 80000834: 01f61613 slli a2,a2,0x1f + 80000838: f20580d3 fmv.d.x ft1,a1 + 8000083c: f2060153 fmv.d.x ft2,a2 + 80000840: 20208053 fsgnj.s ft0,ft1,ft2 + 80000844: e0000553 fmv.x.w a0,ft0 + 80000848: 7fc00eb7 lui t4,0x7fc00 + 8000084c: 03400193 li gp,52 + 80000850: 79d51a63 bne a0,t4,80000fe4 + +0000000080000854 : + 80000854: 0010059b addiw a1,zero,1 + 80000858: 02659593 slli a1,a1,0x26 + 8000085c: f8958593 addi a1,a1,-119 + 80000860: 00d59593 slli a1,a1,0xd + 80000864: 34558593 addi a1,a1,837 + 80000868: 00c59593 slli a1,a1,0xc + 8000086c: 67858593 addi a1,a1,1656 + 80000870: 0010061b addiw a2,zero,1 + 80000874: 01f61613 slli a2,a2,0x1f + 80000878: f20580d3 fmv.d.x ft1,a1 + 8000087c: f2060153 fmv.d.x ft2,a2 + 80000880: 20208053 fsgnj.s ft0,ft1,ft2 + 80000884: e2000553 fmv.x.d a0,ft0 + 80000888: dff00e9b addiw t4,zero,-513 + 8000088c: 016e9e93 slli t4,t4,0x16 + 80000890: 09800193 li gp,152 + 80000894: 75d51863 bne a0,t4,80000fe4 + +0000000080000898 : + 80000898: fff125b7 lui a1,0xfff12 + 8000089c: 3455859b addiw a1,a1,837 + 800008a0: 00c59593 slli a1,a1,0xc + 800008a4: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 800008a8: 0010061b addiw a2,zero,1 + 800008ac: 01f61613 slli a2,a2,0x1f + 800008b0: f20580d3 fmv.d.x ft1,a1 + 800008b4: f2060153 fmv.d.x ft2,a2 + 800008b8: 20208053 fsgnj.s ft0,ft1,ft2 + 800008bc: e0000553 fmv.x.w a0,ft0 + 800008c0: 12345eb7 lui t4,0x12345 + 800008c4: 678e8e9b addiw t4,t4,1656 + 800008c8: 03500193 li gp,53 + 800008cc: 71d51c63 bne a0,t4,80000fe4 + +00000000800008d0 : + 800008d0: fff125b7 lui a1,0xfff12 + 800008d4: 3455859b addiw a1,a1,837 + 800008d8: 00c59593 slli a1,a1,0xc + 800008dc: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 800008e0: 0010061b addiw a2,zero,1 + 800008e4: 01f61613 slli a2,a2,0x1f + 800008e8: f20580d3 fmv.d.x ft1,a1 + 800008ec: f2060153 fmv.d.x ft2,a2 + 800008f0: 20208053 fsgnj.s ft0,ft1,ft2 + 800008f4: e2000553 fmv.x.d a0,ft0 + 800008f8: fff12eb7 lui t4,0xfff12 + 800008fc: 345e8e9b addiw t4,t4,837 + 80000900: 00ce9e93 slli t4,t4,0xc + 80000904: 678e8e93 addi t4,t4,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 80000908: 09900193 li gp,153 + 8000090c: 6dd51c63 bne a0,t4,80000fe4 + +0000000080000910 : + 80000910: 0010059b addiw a1,zero,1 + 80000914: 02659593 slli a1,a1,0x26 + 80000918: f0958593 addi a1,a1,-247 + 8000091c: 00d59593 slli a1,a1,0xd + 80000920: 34558593 addi a1,a1,837 + 80000924: 00c59593 slli a1,a1,0xc + 80000928: 67858593 addi a1,a1,1656 + 8000092c: 80000637 lui a2,0x80000 + 80000930: f20580d3 fmv.d.x ft1,a1 + 80000934: f2060153 fmv.d.x ft2,a2 + 80000938: 20208053 fsgnj.s ft0,ft1,ft2 + 8000093c: e0000553 fmv.x.w a0,ft0 + 80000940: ffc00eb7 lui t4,0xffc00 + 80000944: 03c00193 li gp,60 + 80000948: 69d51e63 bne a0,t4,80000fe4 + +000000008000094c : + 8000094c: 0010059b addiw a1,zero,1 + 80000950: 02659593 slli a1,a1,0x26 + 80000954: f0958593 addi a1,a1,-247 + 80000958: 00d59593 slli a1,a1,0xd + 8000095c: 34558593 addi a1,a1,837 + 80000960: 00c59593 slli a1,a1,0xc + 80000964: 67858593 addi a1,a1,1656 + 80000968: 80000637 lui a2,0x80000 + 8000096c: f20580d3 fmv.d.x ft1,a1 + 80000970: f2060153 fmv.d.x ft2,a2 + 80000974: 20208053 fsgnj.s ft0,ft1,ft2 + 80000978: e2000553 fmv.x.d a0,ft0 + 8000097c: ffc00eb7 lui t4,0xffc00 + 80000980: 0a000193 li gp,160 + 80000984: 67d51063 bne a0,t4,80000fe4 + +0000000080000988 : + 80000988: ffe125b7 lui a1,0xffe12 + 8000098c: 3455859b addiw a1,a1,837 + 80000990: 00c59593 slli a1,a1,0xc + 80000994: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe0f678> + 80000998: 80000637 lui a2,0x80000 + 8000099c: f20580d3 fmv.d.x ft1,a1 + 800009a0: f2060153 fmv.d.x ft2,a2 + 800009a4: 20208053 fsgnj.s ft0,ft1,ft2 + 800009a8: e0000553 fmv.x.w a0,ft0 + 800009ac: ffc00eb7 lui t4,0xffc00 + 800009b0: 03d00193 li gp,61 + 800009b4: 63d51863 bne a0,t4,80000fe4 + +00000000800009b8 : + 800009b8: ffe125b7 lui a1,0xffe12 + 800009bc: 3455859b addiw a1,a1,837 + 800009c0: 00c59593 slli a1,a1,0xc + 800009c4: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe0f678> + 800009c8: 80000637 lui a2,0x80000 + 800009cc: f20580d3 fmv.d.x ft1,a1 + 800009d0: f2060153 fmv.d.x ft2,a2 + 800009d4: 20208053 fsgnj.s ft0,ft1,ft2 + 800009d8: e2000553 fmv.x.d a0,ft0 + 800009dc: ffc00eb7 lui t4,0xffc00 + 800009e0: 0a100193 li gp,161 + 800009e4: 61d51063 bne a0,t4,80000fe4 + +00000000800009e8 : + 800009e8: fff125b7 lui a1,0xfff12 + 800009ec: 3455859b addiw a1,a1,837 + 800009f0: 00c59593 slli a1,a1,0xc + 800009f4: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 800009f8: 80000637 lui a2,0x80000 + 800009fc: f20580d3 fmv.d.x ft1,a1 + 80000a00: f2060153 fmv.d.x ft2,a2 + 80000a04: 20208053 fsgnj.s ft0,ft1,ft2 + 80000a08: e0000553 fmv.x.w a0,ft0 + 80000a0c: 92345eb7 lui t4,0x92345 + 80000a10: 678e8e9b addiw t4,t4,1656 + 80000a14: 03e00193 li gp,62 + 80000a18: 5dd51663 bne a0,t4,80000fe4 + +0000000080000a1c : + 80000a1c: fff125b7 lui a1,0xfff12 + 80000a20: 3455859b addiw a1,a1,837 + 80000a24: 00c59593 slli a1,a1,0xc + 80000a28: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 80000a2c: 80000637 lui a2,0x80000 + 80000a30: f20580d3 fmv.d.x ft1,a1 + 80000a34: f2060153 fmv.d.x ft2,a2 + 80000a38: 20208053 fsgnj.s ft0,ft1,ft2 + 80000a3c: e2000553 fmv.x.d a0,ft0 + 80000a40: 92345eb7 lui t4,0x92345 + 80000a44: 678e8e9b addiw t4,t4,1656 + 80000a48: 0a200193 li gp,162 + 80000a4c: 59d51c63 bne a0,t4,80000fe4 + +0000000080000a50 : + 80000a50: fff125b7 lui a1,0xfff12 + 80000a54: 3455859b addiw a1,a1,837 + 80000a58: 00c59593 slli a1,a1,0xc + 80000a5c: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 80000a60: 0010061b addiw a2,zero,1 + 80000a64: 02061613 slli a2,a2,0x20 + 80000a68: fff60613 addi a2,a2,-1 # ffffffff7fffffff <_end+0xfffffffeffffcfff> + 80000a6c: 01f61613 slli a2,a2,0x1f + 80000a70: f20580d3 fmv.d.x ft1,a1 + 80000a74: f2060153 fmv.d.x ft2,a2 + 80000a78: 20208053 fsgnj.s ft0,ft1,ft2 + 80000a7c: e0000553 fmv.x.w a0,ft0 + 80000a80: 12345eb7 lui t4,0x12345 + 80000a84: 678e8e9b addiw t4,t4,1656 + 80000a88: 03f00193 li gp,63 + 80000a8c: 55d51c63 bne a0,t4,80000fe4 + +0000000080000a90 : + 80000a90: fff125b7 lui a1,0xfff12 + 80000a94: 3455859b addiw a1,a1,837 + 80000a98: 00c59593 slli a1,a1,0xc + 80000a9c: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 80000aa0: 0010061b addiw a2,zero,1 + 80000aa4: 02061613 slli a2,a2,0x20 + 80000aa8: fff60613 addi a2,a2,-1 + 80000aac: 01f61613 slli a2,a2,0x1f + 80000ab0: f20580d3 fmv.d.x ft1,a1 + 80000ab4: f2060153 fmv.d.x ft2,a2 + 80000ab8: 20208053 fsgnj.s ft0,ft1,ft2 + 80000abc: e2000553 fmv.x.d a0,ft0 + 80000ac0: fff12eb7 lui t4,0xfff12 + 80000ac4: 345e8e9b addiw t4,t4,837 + 80000ac8: 00ce9e93 slli t4,t4,0xc + 80000acc: 678e8e93 addi t4,t4,1656 # fffffffffff12678 <_end+0xffffffff7ff0f678> + 80000ad0: 0a300193 li gp,163 + 80000ad4: 51d51863 bne a0,t4,80000fe4 + +0000000080000ad8 : + 80000ad8: fff115b7 lui a1,0xfff11 + 80000adc: 1115859b addiw a1,a1,273 + 80000ae0: 00c59593 slli a1,a1,0xc + 80000ae4: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000ae8: fff11637 lui a2,0xfff11 + 80000aec: 1116061b addiw a2,a2,273 + 80000af0: 00c61613 slli a2,a2,0xc + 80000af4: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000af8: f20580d3 fmv.d.x ft1,a1 + 80000afc: f2060153 fmv.d.x ft2,a2 + 80000b00: 22208053 fsgnj.d ft0,ft1,ft2 + 80000b04: a0002553 feq.s a0,ft0,ft0 + 80000b08: fff50513 addi a0,a0,-1 # 1fff <_start-0x7fffe001> + 80000b0c: 00051463 bnez a0,80000b14 + 80000b10: e0000553 fmv.x.w a0,ft0 + 80000b14: 11111eb7 lui t4,0x11111 + 80000b18: 111e8e9b addiw t4,t4,273 + 80000b1c: 04600193 li gp,70 + 80000b20: 4dd51263 bne a0,t4,80000fe4 + +0000000080000b24 : + 80000b24: fff115b7 lui a1,0xfff11 + 80000b28: 1115859b addiw a1,a1,273 + 80000b2c: 00c59593 slli a1,a1,0xc + 80000b30: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000b34: fff11637 lui a2,0xfff11 + 80000b38: 1116061b addiw a2,a2,273 + 80000b3c: 00c61613 slli a2,a2,0xc + 80000b40: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000b44: f20580d3 fmv.d.x ft1,a1 + 80000b48: f2060153 fmv.d.x ft2,a2 + 80000b4c: 22208053 fsgnj.d ft0,ft1,ft2 + 80000b50: e2000553 fmv.x.d a0,ft0 + 80000b54: fff11eb7 lui t4,0xfff11 + 80000b58: 111e8e9b addiw t4,t4,273 + 80000b5c: 00ce9e93 slli t4,t4,0xc + 80000b60: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000b64: 0aa00193 li gp,170 + 80000b68: 47d51e63 bne a0,t4,80000fe4 + +0000000080000b6c : + 80000b6c: fff115b7 lui a1,0xfff11 + 80000b70: 1115859b addiw a1,a1,273 + 80000b74: 00c59593 slli a1,a1,0xc + 80000b78: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000b7c: 0010061b addiw a2,zero,1 + 80000b80: 02761613 slli a2,a2,0x27 + 80000b84: f1160613 addi a2,a2,-239 + 80000b88: 00c61613 slli a2,a2,0xc + 80000b8c: 11160613 addi a2,a2,273 + 80000b90: 00c61613 slli a2,a2,0xc + 80000b94: 11160613 addi a2,a2,273 + 80000b98: f20580d3 fmv.d.x ft1,a1 + 80000b9c: f2060153 fmv.d.x ft2,a2 + 80000ba0: 22208053 fsgnj.d ft0,ft1,ft2 + 80000ba4: a0002553 feq.s a0,ft0,ft0 + 80000ba8: 00050513 mv a0,a0 + 80000bac: 00051463 bnez a0,80000bb4 + 80000bb0: e0000553 fmv.x.w a0,ft0 + 80000bb4: 11111eb7 lui t4,0x11111 + 80000bb8: 111e8e9b addiw t4,t4,273 + 80000bbc: 04700193 li gp,71 + 80000bc0: 43d51263 bne a0,t4,80000fe4 + +0000000080000bc4 : + 80000bc4: fff115b7 lui a1,0xfff11 + 80000bc8: 1115859b addiw a1,a1,273 + 80000bcc: 00c59593 slli a1,a1,0xc + 80000bd0: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000bd4: 0010061b addiw a2,zero,1 + 80000bd8: 02761613 slli a2,a2,0x27 + 80000bdc: f1160613 addi a2,a2,-239 + 80000be0: 00c61613 slli a2,a2,0xc + 80000be4: 11160613 addi a2,a2,273 + 80000be8: 00c61613 slli a2,a2,0xc + 80000bec: 11160613 addi a2,a2,273 + 80000bf0: f20580d3 fmv.d.x ft1,a1 + 80000bf4: f2060153 fmv.d.x ft2,a2 + 80000bf8: 22208053 fsgnj.d ft0,ft1,ft2 + 80000bfc: e2000553 fmv.x.d a0,ft0 + 80000c00: 00100e9b addiw t4,zero,1 + 80000c04: 027e9e93 slli t4,t4,0x27 + 80000c08: f11e8e93 addi t4,t4,-239 # 11110f11 <_start-0x6eeef0ef> + 80000c0c: 00ce9e93 slli t4,t4,0xc + 80000c10: 111e8e93 addi t4,t4,273 + 80000c14: 00ce9e93 slli t4,t4,0xc + 80000c18: 111e8e93 addi t4,t4,273 + 80000c1c: 0ab00193 li gp,171 + 80000c20: 3dd51263 bne a0,t4,80000fe4 + +0000000080000c24 : + 80000c24: fff115b7 lui a1,0xfff11 + 80000c28: 1115859b addiw a1,a1,273 + 80000c2c: 00c59593 slli a1,a1,0xc + 80000c30: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000c34: 91111637 lui a2,0x91111 + 80000c38: 1116061b addiw a2,a2,273 + 80000c3c: f20580d3 fmv.d.x ft1,a1 + 80000c40: f2060153 fmv.d.x ft2,a2 + 80000c44: 22208053 fsgnj.d ft0,ft1,ft2 + 80000c48: a0002553 feq.s a0,ft0,ft0 + 80000c4c: fff50513 addi a0,a0,-1 + 80000c50: 00051463 bnez a0,80000c58 + 80000c54: e0000553 fmv.x.w a0,ft0 + 80000c58: 11111eb7 lui t4,0x11111 + 80000c5c: 111e8e9b addiw t4,t4,273 + 80000c60: 04800193 li gp,72 + 80000c64: 39d51063 bne a0,t4,80000fe4 + +0000000080000c68 : + 80000c68: fff115b7 lui a1,0xfff11 + 80000c6c: 1115859b addiw a1,a1,273 + 80000c70: 00c59593 slli a1,a1,0xc + 80000c74: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000c78: 91111637 lui a2,0x91111 + 80000c7c: 1116061b addiw a2,a2,273 + 80000c80: f20580d3 fmv.d.x ft1,a1 + 80000c84: f2060153 fmv.d.x ft2,a2 + 80000c88: 22208053 fsgnj.d ft0,ft1,ft2 + 80000c8c: e2000553 fmv.x.d a0,ft0 + 80000c90: fff11eb7 lui t4,0xfff11 + 80000c94: 111e8e9b addiw t4,t4,273 + 80000c98: 00ce9e93 slli t4,t4,0xc + 80000c9c: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000ca0: 0ac00193 li gp,172 + 80000ca4: 35d51063 bne a0,t4,80000fe4 + +0000000080000ca8 : + 80000ca8: fff115b7 lui a1,0xfff11 + 80000cac: 1115859b addiw a1,a1,273 + 80000cb0: 00c59593 slli a1,a1,0xc + 80000cb4: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000cb8: fff0061b addiw a2,zero,-1 + 80000cbc: 03f61613 slli a2,a2,0x3f + 80000cc0: f20580d3 fmv.d.x ft1,a1 + 80000cc4: f2060153 fmv.d.x ft2,a2 + 80000cc8: 22208053 fsgnj.d ft0,ft1,ft2 + 80000ccc: a0002553 feq.s a0,ft0,ft0 + 80000cd0: fff50513 addi a0,a0,-1 + 80000cd4: 00051463 bnez a0,80000cdc + 80000cd8: e0000553 fmv.x.w a0,ft0 + 80000cdc: 11111eb7 lui t4,0x11111 + 80000ce0: 111e8e9b addiw t4,t4,273 + 80000ce4: 04900193 li gp,73 + 80000ce8: 2fd51e63 bne a0,t4,80000fe4 + +0000000080000cec : + 80000cec: fff115b7 lui a1,0xfff11 + 80000cf0: 1115859b addiw a1,a1,273 + 80000cf4: 00c59593 slli a1,a1,0xc + 80000cf8: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000cfc: fff0061b addiw a2,zero,-1 + 80000d00: 03f61613 slli a2,a2,0x3f + 80000d04: f20580d3 fmv.d.x ft1,a1 + 80000d08: f2060153 fmv.d.x ft2,a2 + 80000d0c: 22208053 fsgnj.d ft0,ft1,ft2 + 80000d10: e2000553 fmv.x.d a0,ft0 + 80000d14: fff11eb7 lui t4,0xfff11 + 80000d18: 111e8e9b addiw t4,t4,273 + 80000d1c: 00ce9e93 slli t4,t4,0xc + 80000d20: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000d24: 0ad00193 li gp,173 + 80000d28: 2bd51e63 bne a0,t4,80000fe4 + +0000000080000d2c : + 80000d2c: 0010059b addiw a1,zero,1 + 80000d30: 02759593 slli a1,a1,0x27 + 80000d34: f1158593 addi a1,a1,-239 + 80000d38: 00c59593 slli a1,a1,0xc + 80000d3c: 11158593 addi a1,a1,273 + 80000d40: 00c59593 slli a1,a1,0xc + 80000d44: 11158593 addi a1,a1,273 + 80000d48: fff11637 lui a2,0xfff11 + 80000d4c: 1116061b addiw a2,a2,273 + 80000d50: 00c61613 slli a2,a2,0xc + 80000d54: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000d58: f20580d3 fmv.d.x ft1,a1 + 80000d5c: f2060153 fmv.d.x ft2,a2 + 80000d60: 22208053 fsgnj.d ft0,ft1,ft2 + 80000d64: a0002553 feq.s a0,ft0,ft0 + 80000d68: fff50513 addi a0,a0,-1 + 80000d6c: 00051463 bnez a0,80000d74 + 80000d70: e0000553 fmv.x.w a0,ft0 + 80000d74: 11111eb7 lui t4,0x11111 + 80000d78: 111e8e9b addiw t4,t4,273 + 80000d7c: 04a00193 li gp,74 + 80000d80: 27d51263 bne a0,t4,80000fe4 + +0000000080000d84 : + 80000d84: 0010059b addiw a1,zero,1 + 80000d88: 02759593 slli a1,a1,0x27 + 80000d8c: f1158593 addi a1,a1,-239 + 80000d90: 00c59593 slli a1,a1,0xc + 80000d94: 11158593 addi a1,a1,273 + 80000d98: 00c59593 slli a1,a1,0xc + 80000d9c: 11158593 addi a1,a1,273 + 80000da0: fff11637 lui a2,0xfff11 + 80000da4: 1116061b addiw a2,a2,273 + 80000da8: 00c61613 slli a2,a2,0xc + 80000dac: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000db0: f20580d3 fmv.d.x ft1,a1 + 80000db4: f2060153 fmv.d.x ft2,a2 + 80000db8: 22208053 fsgnj.d ft0,ft1,ft2 + 80000dbc: e2000553 fmv.x.d a0,ft0 + 80000dc0: fff11eb7 lui t4,0xfff11 + 80000dc4: 111e8e9b addiw t4,t4,273 + 80000dc8: 00ce9e93 slli t4,t4,0xc + 80000dcc: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000dd0: 0ae00193 li gp,174 + 80000dd4: 21d51863 bne a0,t4,80000fe4 + +0000000080000dd8 : + 80000dd8: 0010059b addiw a1,zero,1 + 80000ddc: 02759593 slli a1,a1,0x27 + 80000de0: f1158593 addi a1,a1,-239 + 80000de4: 00c59593 slli a1,a1,0xc + 80000de8: 11158593 addi a1,a1,273 + 80000dec: 00c59593 slli a1,a1,0xc + 80000df0: 11158593 addi a1,a1,273 + 80000df4: 0010061b addiw a2,zero,1 + 80000df8: 02761613 slli a2,a2,0x27 + 80000dfc: f1160613 addi a2,a2,-239 + 80000e00: 00c61613 slli a2,a2,0xc + 80000e04: 11160613 addi a2,a2,273 + 80000e08: 00c61613 slli a2,a2,0xc + 80000e0c: 11160613 addi a2,a2,273 + 80000e10: f20580d3 fmv.d.x ft1,a1 + 80000e14: f2060153 fmv.d.x ft2,a2 + 80000e18: 22208053 fsgnj.d ft0,ft1,ft2 + 80000e1c: a0002553 feq.s a0,ft0,ft0 + 80000e20: 00050513 mv a0,a0 + 80000e24: 00051463 bnez a0,80000e2c + 80000e28: e0000553 fmv.x.w a0,ft0 + 80000e2c: 11111eb7 lui t4,0x11111 + 80000e30: 111e8e9b addiw t4,t4,273 + 80000e34: 04b00193 li gp,75 + 80000e38: 1bd51663 bne a0,t4,80000fe4 + +0000000080000e3c : + 80000e3c: 0010059b addiw a1,zero,1 + 80000e40: 02759593 slli a1,a1,0x27 + 80000e44: f1158593 addi a1,a1,-239 + 80000e48: 00c59593 slli a1,a1,0xc + 80000e4c: 11158593 addi a1,a1,273 + 80000e50: 00c59593 slli a1,a1,0xc + 80000e54: 11158593 addi a1,a1,273 + 80000e58: 0010061b addiw a2,zero,1 + 80000e5c: 02761613 slli a2,a2,0x27 + 80000e60: f1160613 addi a2,a2,-239 + 80000e64: 00c61613 slli a2,a2,0xc + 80000e68: 11160613 addi a2,a2,273 + 80000e6c: 00c61613 slli a2,a2,0xc + 80000e70: 11160613 addi a2,a2,273 + 80000e74: f20580d3 fmv.d.x ft1,a1 + 80000e78: f2060153 fmv.d.x ft2,a2 + 80000e7c: 22208053 fsgnj.d ft0,ft1,ft2 + 80000e80: e2000553 fmv.x.d a0,ft0 + 80000e84: 00100e9b addiw t4,zero,1 + 80000e88: 027e9e93 slli t4,t4,0x27 + 80000e8c: f11e8e93 addi t4,t4,-239 # 11110f11 <_start-0x6eeef0ef> + 80000e90: 00ce9e93 slli t4,t4,0xc + 80000e94: 111e8e93 addi t4,t4,273 + 80000e98: 00ce9e93 slli t4,t4,0xc + 80000e9c: 111e8e93 addi t4,t4,273 + 80000ea0: 0af00193 li gp,175 + 80000ea4: 15d51063 bne a0,t4,80000fe4 + +0000000080000ea8 : + 80000ea8: 0010059b addiw a1,zero,1 + 80000eac: 02759593 slli a1,a1,0x27 + 80000eb0: f1158593 addi a1,a1,-239 + 80000eb4: 00c59593 slli a1,a1,0xc + 80000eb8: 11158593 addi a1,a1,273 + 80000ebc: 00c59593 slli a1,a1,0xc + 80000ec0: 11158593 addi a1,a1,273 + 80000ec4: 91111637 lui a2,0x91111 + 80000ec8: 1116061b addiw a2,a2,273 + 80000ecc: f20580d3 fmv.d.x ft1,a1 + 80000ed0: f2060153 fmv.d.x ft2,a2 + 80000ed4: 22208053 fsgnj.d ft0,ft1,ft2 + 80000ed8: a0002553 feq.s a0,ft0,ft0 + 80000edc: fff50513 addi a0,a0,-1 + 80000ee0: 00051463 bnez a0,80000ee8 + 80000ee4: e0000553 fmv.x.w a0,ft0 + 80000ee8: 11111eb7 lui t4,0x11111 + 80000eec: 111e8e9b addiw t4,t4,273 + 80000ef0: 04c00193 li gp,76 + 80000ef4: 0fd51863 bne a0,t4,80000fe4 + +0000000080000ef8 : + 80000ef8: 0010059b addiw a1,zero,1 + 80000efc: 02759593 slli a1,a1,0x27 + 80000f00: f1158593 addi a1,a1,-239 + 80000f04: 00c59593 slli a1,a1,0xc + 80000f08: 11158593 addi a1,a1,273 + 80000f0c: 00c59593 slli a1,a1,0xc + 80000f10: 11158593 addi a1,a1,273 + 80000f14: 91111637 lui a2,0x91111 + 80000f18: 1116061b addiw a2,a2,273 + 80000f1c: f20580d3 fmv.d.x ft1,a1 + 80000f20: f2060153 fmv.d.x ft2,a2 + 80000f24: 22208053 fsgnj.d ft0,ft1,ft2 + 80000f28: e2000553 fmv.x.d a0,ft0 + 80000f2c: fff11eb7 lui t4,0xfff11 + 80000f30: 111e8e9b addiw t4,t4,273 + 80000f34: 00ce9e93 slli t4,t4,0xc + 80000f38: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000f3c: 0b000193 li gp,176 + 80000f40: 0bd51263 bne a0,t4,80000fe4 + +0000000080000f44 : + 80000f44: 0010059b addiw a1,zero,1 + 80000f48: 02759593 slli a1,a1,0x27 + 80000f4c: f1158593 addi a1,a1,-239 + 80000f50: 00c59593 slli a1,a1,0xc + 80000f54: 11158593 addi a1,a1,273 + 80000f58: 00c59593 slli a1,a1,0xc + 80000f5c: 11158593 addi a1,a1,273 + 80000f60: fff0061b addiw a2,zero,-1 + 80000f64: 03f61613 slli a2,a2,0x3f + 80000f68: f20580d3 fmv.d.x ft1,a1 + 80000f6c: f2060153 fmv.d.x ft2,a2 + 80000f70: 22208053 fsgnj.d ft0,ft1,ft2 + 80000f74: a0002553 feq.s a0,ft0,ft0 + 80000f78: fff50513 addi a0,a0,-1 + 80000f7c: 00051463 bnez a0,80000f84 + 80000f80: e0000553 fmv.x.w a0,ft0 + 80000f84: 11111eb7 lui t4,0x11111 + 80000f88: 111e8e9b addiw t4,t4,273 + 80000f8c: 04d00193 li gp,77 + 80000f90: 05d51a63 bne a0,t4,80000fe4 + +0000000080000f94 : + 80000f94: 0010059b addiw a1,zero,1 + 80000f98: 02759593 slli a1,a1,0x27 + 80000f9c: f1158593 addi a1,a1,-239 + 80000fa0: 00c59593 slli a1,a1,0xc + 80000fa4: 11158593 addi a1,a1,273 + 80000fa8: 00c59593 slli a1,a1,0xc + 80000fac: 11158593 addi a1,a1,273 + 80000fb0: fff0061b addiw a2,zero,-1 + 80000fb4: 03f61613 slli a2,a2,0x3f + 80000fb8: f20580d3 fmv.d.x ft1,a1 + 80000fbc: f2060153 fmv.d.x ft2,a2 + 80000fc0: 22208053 fsgnj.d ft0,ft1,ft2 + 80000fc4: e2000553 fmv.x.d a0,ft0 + 80000fc8: fff11eb7 lui t4,0xfff11 + 80000fcc: 111e8e9b addiw t4,t4,273 + 80000fd0: 00ce9e93 slli t4,t4,0xc + 80000fd4: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff0e111> + 80000fd8: 0b100193 li gp,177 + 80000fdc: 01d51463 bne a0,t4,80000fe4 + 80000fe0: 00301c63 bne zero,gp,80000ff8 + +0000000080000fe4 : + 80000fe4: 0ff0000f fence + 80000fe8: 00018063 beqz gp,80000fe8 + 80000fec: 00119193 slli gp,gp,0x1 + 80000ff0: 0011e193 ori gp,gp,1 + 80000ff4: 00000073 ecall + +0000000080000ff8 : + 80000ff8: 0ff0000f fence + 80000ffc: 00100193 li gp,1 + 80001000: 00000073 ecall + 80001004: c0001073 unimp + 80001008: 0000 unimp + 8000100a: 0000 unimp + 8000100c: 0000 unimp + 8000100e: 0000 unimp + 80001010: 0000 unimp + 80001012: 0000 unimp + 80001014: 0000 unimp + 80001016: 0000 unimp + 80001018: 0000 unimp + 8000101a: 0000 unimp + 8000101c: 0000 unimp + 8000101e: 0000 unimp + 80001020: 0000 unimp + 80001022: 0000 unimp + 80001024: 0000 unimp + 80001026: 0000 unimp + 80001028: 0000 unimp + 8000102a: 0000 unimp + 8000102c: 0000 unimp + 8000102e: 0000 unimp + 80001030: 0000 unimp + 80001032: 0000 unimp + 80001034: 0000 unimp + 80001036: 0000 unimp + 80001038: 0000 unimp + 8000103a: 0000 unimp + 8000103c: 0000 unimp + 8000103e: 0000 unimp + 80001040: 0000 unimp + 80001042: 0000 unimp diff --git a/Tests/isa/rv64ud-p-recoding b/Tests/isa/rv64ud-p-recoding new file mode 100644 index 0000000..4933fd7 Binary files /dev/null and b/Tests/isa/rv64ud-p-recoding differ diff --git a/Tests/isa/rv64ud-p-recoding.dump b/Tests/isa/rv64ud-p-recoding.dump new file mode 100644 index 0000000..8c7f379 --- /dev/null +++ b/Tests/isa/rv64ud-p-recoding.dump @@ -0,0 +1,219 @@ + +rv64ud-p-recoding: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00002517 auipc a0,0x2 + 8000010c: ef853007 fld ft0,-264(a0) # 80002000 + 80000110: 00002517 auipc a0,0x2 + 80000114: ef853087 fld ft1,-264(a0) # 80002008 + 80000118: 1200f0d3 fmul.d ft1,ft1,ft0 + +000000008000011c : + 8000011c: a2102553 feq.d a0,ft0,ft1 + 80000120: 00100e93 li t4,1 + 80000124: 00200193 li gp,2 + 80000128: 0dd51663 bne a0,t4,800001f4 + +000000008000012c : + 8000012c: a2100553 fle.d a0,ft0,ft1 + 80000130: 00100e93 li t4,1 + 80000134: 00300193 li gp,3 + 80000138: 0bd51e63 bne a0,t4,800001f4 + +000000008000013c : + 8000013c: a2101553 flt.d a0,ft0,ft1 + 80000140: 00000e93 li t4,0 + 80000144: 00400193 li gp,4 + 80000148: 0bd51663 bne a0,t4,800001f4 + 8000014c: d2000053 fcvt.d.w ft0,zero + 80000150: 00100513 li a0,1 + 80000154: d20500d3 fcvt.d.w ft1,a0 + 80000158: 1200f0d3 fmul.d ft1,ft1,ft0 + +000000008000015c : + 8000015c: a2102553 feq.d a0,ft0,ft1 + 80000160: 00100e93 li t4,1 + 80000164: 00500193 li gp,5 + 80000168: 09d51663 bne a0,t4,800001f4 + +000000008000016c : + 8000016c: a2100553 fle.d a0,ft0,ft1 + 80000170: 00100e93 li t4,1 + 80000174: 00600193 li gp,6 + 80000178: 07d51e63 bne a0,t4,800001f4 + +000000008000017c : + 8000017c: a2101553 flt.d a0,ft0,ft1 + 80000180: 00000e93 li t4,0 + 80000184: 00700193 li gp,7 + 80000188: 07d51663 bne a0,t4,800001f4 + 8000018c: 00002517 auipc a0,0x2 + 80000190: e8452007 flw ft0,-380(a0) # 80002010 + 80000194: 00002517 auipc a0,0x2 + 80000198: e8453087 fld ft1,-380(a0) # 80002018 + 8000019c: 4010f0d3 fcvt.s.d ft1,ft1 + 800001a0: 10107053 fmul.s ft0,ft0,ft1 + 800001a4: e0000553 fmv.x.w a0,ft0 + 800001a8: 00002597 auipc a1,0x2 + 800001ac: e6c5a583 lw a1,-404(a1) # 80002014 + +00000000800001b0 : + 800001b0: 40b50533 sub a0,a0,a1 + 800001b4: 00000e93 li t4,0 + 800001b8: 00a00193 li gp,10 + 800001bc: 03d51c63 bne a0,t4,800001f4 + 800001c0: 00002517 auipc a0,0x2 + 800001c4: e4852007 flw ft0,-440(a0) # 80002008 + 800001c8: 000070d3 fadd.s ft1,ft0,ft0 + 800001cc: 00007053 fadd.s ft0,ft0,ft0 + 800001d0: 00002517 auipc a0,0x2 + 800001d4: e4053427 fsd ft0,-440(a0) # 80002018 + 800001d8: 00002517 auipc a0,0x2 + 800001dc: e4053007 fld ft0,-448(a0) # 80002018 + +00000000800001e0 : + 800001e0: a0102553 feq.s a0,ft0,ft1 + 800001e4: 00100e93 li t4,1 + 800001e8: 01400193 li gp,20 + 800001ec: 01d51463 bne a0,t4,800001f4 + 800001f0: 00301c63 bne zero,gp,80000208 + +00000000800001f4 : + 800001f4: 0ff0000f fence + 800001f8: 00018063 beqz gp,800001f8 + 800001fc: 00119193 slli gp,gp,0x1 + 80000200: 0011e193 ori gp,gp,1 + 80000204: 00000073 ecall + +0000000080000208 : + 80000208: 0ff0000f fence + 8000020c: 00100193 li gp,1 + 80000210: 00000073 ecall + 80000214: c0001073 unimp + 80000218: 0000 unimp + 8000021a: 0000 unimp + 8000021c: 0000 unimp + 8000021e: 0000 unimp + 80000220: 0000 unimp + 80000222: 0000 unimp + 80000224: 0000 unimp + 80000226: 0000 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 0000 unimp + 80002004: 0000 unimp + 80002006: fff0 sd a2,248(a5) + +0000000080002008 : + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 4008 lw a0,0(s0) + +0000000080002010 : + 80002010: a000 fsd fs0,0(s0) + 80002012: 4498 lw a4,8(s1) + +0000000080002014 : + 80002014: 450e lw a0,192(sp) + 80002016: 02c6 slli t0,t0,0x11 + +0000000080002018 : + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: c8f8 sw a4,84(s1) + 8000201e: 37b4 fld fa3,104(a5) diff --git a/Tests/isa/rv64ud-p-structural b/Tests/isa/rv64ud-p-structural new file mode 100644 index 0000000..418bd94 Binary files /dev/null and b/Tests/isa/rv64ud-p-structural differ diff --git a/Tests/isa/rv64ud-p-structural.dump b/Tests/isa/rv64ud-p-structural.dump new file mode 100644 index 0000000..2eda153 --- /dev/null +++ b/Tests/isa/rv64ud-p-structural.dump @@ -0,0 +1,299 @@ + +rv64ud-p-structural: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00100c93 li s9,1 + 8000010c: 3ff0011b addiw sp,zero,1023 + 80000110: 03411113 slli sp,sp,0x34 + 80000114: 3f8000b7 lui ra,0x3f800 + 80000118: f2000253 fmv.d.x ft4,zero + 8000011c: f00001d3 fmv.w.x ft3,zero + 80000120: f2010153 fmv.d.x ft2,sp + 80000124: f00080d3 fmv.w.x ft1,ra + 80000128: 0180006f j 80000140 + 8000012c: 00000013 nop + 80000130: 00000013 nop + 80000134: 00000013 nop + 80000138: 00000013 nop + 8000013c: 00000013 nop + 80000140: 12217253 fmul.d ft4,ft2,ft2 + 80000144: 201081d3 fmv.s ft3,ft1 + 80000148: e2020253 fmv.x.d tp,ft4 + 8000014c: e00182d3 fmv.x.w t0,ft3 + 80000150: 00508c63 beq ra,t0,80000168 + 80000154: 0ff0000f fence + 80000158: 00018063 beqz gp,80000158 + 8000015c: 00119193 slli gp,gp,0x1 + 80000160: 0011e193 ori gp,gp,1 + 80000164: 00000073 ecall + 80000168: 00410c63 beq sp,tp,80000180 + 8000016c: 0ff0000f fence + 80000170: 00018063 beqz gp,80000170 + 80000174: 00119193 slli gp,gp,0x1 + 80000178: 0011e193 ori gp,gp,1 + 8000017c: 00000073 ecall + 80000180: f2000153 fmv.d.x ft2,zero + 80000184: f00000d3 fmv.w.x ft1,zero + 80000188: f2000253 fmv.d.x ft4,zero + 8000018c: f00001d3 fmv.w.x ft3,zero + 80000190: f2010153 fmv.d.x ft2,sp + 80000194: f00080d3 fmv.w.x ft1,ra + 80000198: 0080006f j 800001a0 + 8000019c: 00000013 nop + 800001a0: 12217253 fmul.d ft4,ft2,ft2 + 800001a4: 00000013 nop + 800001a8: 201081d3 fmv.s ft3,ft1 + 800001ac: e2020253 fmv.x.d tp,ft4 + 800001b0: e00182d3 fmv.x.w t0,ft3 + 800001b4: 00508c63 beq ra,t0,800001cc + 800001b8: 0ff0000f fence + 800001bc: 00018063 beqz gp,800001bc + 800001c0: 00119193 slli gp,gp,0x1 + 800001c4: 0011e193 ori gp,gp,1 + 800001c8: 00000073 ecall + 800001cc: 00410c63 beq sp,tp,800001e4 + 800001d0: 0ff0000f fence + 800001d4: 00018063 beqz gp,800001d4 + 800001d8: 00119193 slli gp,gp,0x1 + 800001dc: 0011e193 ori gp,gp,1 + 800001e0: 00000073 ecall + 800001e4: f2000153 fmv.d.x ft2,zero + 800001e8: f00000d3 fmv.w.x ft1,zero + 800001ec: f2000253 fmv.d.x ft4,zero + 800001f0: f00001d3 fmv.w.x ft3,zero + 800001f4: f2010153 fmv.d.x ft2,sp + 800001f8: f00080d3 fmv.w.x ft1,ra + 800001fc: 0040006f j 80000200 + 80000200: 12217253 fmul.d ft4,ft2,ft2 + 80000204: 00000013 nop + 80000208: 00000013 nop + 8000020c: 201081d3 fmv.s ft3,ft1 + 80000210: e2020253 fmv.x.d tp,ft4 + 80000214: e00182d3 fmv.x.w t0,ft3 + 80000218: 00508c63 beq ra,t0,80000230 + 8000021c: 0ff0000f fence + 80000220: 00018063 beqz gp,80000220 + 80000224: 00119193 slli gp,gp,0x1 + 80000228: 0011e193 ori gp,gp,1 + 8000022c: 00000073 ecall + 80000230: 00410c63 beq sp,tp,80000248 + 80000234: 0ff0000f fence + 80000238: 00018063 beqz gp,80000238 + 8000023c: 00119193 slli gp,gp,0x1 + 80000240: 0011e193 ori gp,gp,1 + 80000244: 00000073 ecall + 80000248: f2000153 fmv.d.x ft2,zero + 8000024c: f00000d3 fmv.w.x ft1,zero + 80000250: f2000253 fmv.d.x ft4,zero + 80000254: f00001d3 fmv.w.x ft3,zero + 80000258: f2010153 fmv.d.x ft2,sp + 8000025c: f00080d3 fmv.w.x ft1,ra + 80000260: 0200006f j 80000280 + 80000264: 00000013 nop + 80000268: 00000013 nop + 8000026c: 00000013 nop + 80000270: 00000013 nop + 80000274: 00000013 nop + 80000278: 00000013 nop + 8000027c: 00000013 nop + 80000280: 12217253 fmul.d ft4,ft2,ft2 + 80000284: 00000013 nop + 80000288: 00000013 nop + 8000028c: 00000013 nop + 80000290: 201081d3 fmv.s ft3,ft1 + 80000294: e2020253 fmv.x.d tp,ft4 + 80000298: e00182d3 fmv.x.w t0,ft3 + 8000029c: 00508c63 beq ra,t0,800002b4 + 800002a0: 0ff0000f fence + 800002a4: 00018063 beqz gp,800002a4 + 800002a8: 00119193 slli gp,gp,0x1 + 800002ac: 0011e193 ori gp,gp,1 + 800002b0: 00000073 ecall + 800002b4: 00410c63 beq sp,tp,800002cc + 800002b8: 0ff0000f fence + 800002bc: 00018063 beqz gp,800002bc + 800002c0: 00119193 slli gp,gp,0x1 + 800002c4: 0011e193 ori gp,gp,1 + 800002c8: 00000073 ecall + 800002cc: f2000153 fmv.d.x ft2,zero + 800002d0: f00000d3 fmv.w.x ft1,zero + 800002d4: f2000253 fmv.d.x ft4,zero + 800002d8: f00001d3 fmv.w.x ft3,zero + 800002dc: f2010153 fmv.d.x ft2,sp + 800002e0: f00080d3 fmv.w.x ft1,ra + 800002e4: 01c0006f j 80000300 + 800002e8: 00000013 nop + 800002ec: 00000013 nop + 800002f0: 00000013 nop + 800002f4: 00000013 nop + 800002f8: 00000013 nop + 800002fc: 00000013 nop + 80000300: 12217253 fmul.d ft4,ft2,ft2 + 80000304: 00000013 nop + 80000308: 00000013 nop + 8000030c: 00000013 nop + 80000310: 00000013 nop + 80000314: 201081d3 fmv.s ft3,ft1 + 80000318: e2020253 fmv.x.d tp,ft4 + 8000031c: e00182d3 fmv.x.w t0,ft3 + 80000320: 00508c63 beq ra,t0,80000338 + 80000324: 0ff0000f fence + 80000328: 00018063 beqz gp,80000328 + 8000032c: 00119193 slli gp,gp,0x1 + 80000330: 0011e193 ori gp,gp,1 + 80000334: 00000073 ecall + 80000338: 00410c63 beq sp,tp,80000350 + 8000033c: 0ff0000f fence + 80000340: 00018063 beqz gp,80000340 + 80000344: 00119193 slli gp,gp,0x1 + 80000348: 0011e193 ori gp,gp,1 + 8000034c: 00000073 ecall + 80000350: f2000153 fmv.d.x ft2,zero + 80000354: f00000d3 fmv.w.x ft1,zero + 80000358: f2000253 fmv.d.x ft4,zero + 8000035c: f00001d3 fmv.w.x ft3,zero + 80000360: f2010153 fmv.d.x ft2,sp + 80000364: f00080d3 fmv.w.x ft1,ra + 80000368: 0180006f j 80000380 + 8000036c: 00000013 nop + 80000370: 00000013 nop + 80000374: 00000013 nop + 80000378: 00000013 nop + 8000037c: 00000013 nop + 80000380: 12217253 fmul.d ft4,ft2,ft2 + 80000384: 00000013 nop + 80000388: 00000013 nop + 8000038c: 00000013 nop + 80000390: 00000013 nop + 80000394: 00000013 nop + 80000398: 201081d3 fmv.s ft3,ft1 + 8000039c: e2020253 fmv.x.d tp,ft4 + 800003a0: e00182d3 fmv.x.w t0,ft3 + 800003a4: 00508c63 beq ra,t0,800003bc + 800003a8: 0ff0000f fence + 800003ac: 00018063 beqz gp,800003ac + 800003b0: 00119193 slli gp,gp,0x1 + 800003b4: 0011e193 ori gp,gp,1 + 800003b8: 00000073 ecall + 800003bc: 00410c63 beq sp,tp,800003d4 + 800003c0: 0ff0000f fence + 800003c4: 00018063 beqz gp,800003c4 + 800003c8: 00119193 slli gp,gp,0x1 + 800003cc: 0011e193 ori gp,gp,1 + 800003d0: 00000073 ecall + 800003d4: f2000153 fmv.d.x ft2,zero + 800003d8: f00000d3 fmv.w.x ft1,zero + 800003dc: f2000253 fmv.d.x ft4,zero + 800003e0: f00001d3 fmv.w.x ft3,zero + 800003e4: f2010153 fmv.d.x ft2,sp + 800003e8: f00080d3 fmv.w.x ft1,ra + 800003ec: 0140006f j 80000400 + 800003f0: 00000013 nop + 800003f4: 00000013 nop + 800003f8: 00000013 nop + 800003fc: 00000013 nop + 80000400: 12217253 fmul.d ft4,ft2,ft2 + 80000404: 00000013 nop + 80000408: 00000013 nop + 8000040c: 00000013 nop + 80000410: 00000013 nop + 80000414: 00000013 nop + 80000418: 00000013 nop + 8000041c: 201081d3 fmv.s ft3,ft1 + 80000420: e2020253 fmv.x.d tp,ft4 + 80000424: e00182d3 fmv.x.w t0,ft3 + 80000428: 00508c63 beq ra,t0,80000440 + 8000042c: 0ff0000f fence + 80000430: 00018063 beqz gp,80000430 + 80000434: 00119193 slli gp,gp,0x1 + 80000438: 0011e193 ori gp,gp,1 + 8000043c: 00000073 ecall + 80000440: 00410c63 beq sp,tp,80000458 + 80000444: 0ff0000f fence + 80000448: 00018063 beqz gp,80000448 + 8000044c: 00119193 slli gp,gp,0x1 + 80000450: 0011e193 ori gp,gp,1 + 80000454: 00000073 ecall + 80000458: f2000153 fmv.d.x ft2,zero + 8000045c: f00000d3 fmv.w.x ft1,zero + 80000460: 0ff0000f fence + 80000464: 00100193 li gp,1 + 80000468: 00000073 ecall + 8000046c: c0001073 unimp diff --git a/Tests/isa/rv64ud-v-fadd b/Tests/isa/rv64ud-v-fadd new file mode 100644 index 0000000..2dc00ae Binary files /dev/null and b/Tests/isa/rv64ud-v-fadd differ diff --git a/Tests/isa/rv64ud-v-fadd.dump b/Tests/isa/rv64ud-v-fadd.dump new file mode 100644 index 0000000..918e9c5 --- /dev/null +++ b/Tests/isa/rv64ud-v-fadd.dump @@ -0,0 +1,1163 @@ + +rv64ud-v-fadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 8a068693 addi a3,a3,-1888 # 80002cf8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 8d460613 addi a2,a2,-1836 # 80002d88 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 89c60613 addi a2,a2,-1892 # 80002da0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 7ec68693 addi a3,a3,2028 # 80002d40 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 80868693 addi a3,a3,-2040 # 80002e78 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 78860613 addi a2,a2,1928 # 80002e50 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 6bc68693 addi a3,a3,1724 # 80002ea8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 5dc68693 addi a3,a3,1500 # 80002e18 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 56c68693 addi a3,a3,1388 # 80002de0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02d00793 li a5,45 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0d28d7b7 lui a5,0xd28d + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 47678793 addi a5,a5,1142 # d28d476 <_start-0x72d72b8a> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00053007 fld ft0,0(a0) + 80002adc: 00853087 fld ft1,8(a0) + 80002ae0: 01053107 fld ft2,16(a0) + 80002ae4: 01853683 ld a3,24(a0) + 80002ae8: 021071d3 fadd.d ft3,ft0,ft1 + 80002aec: e2018553 fmv.x.d a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00000613 li a2,0 + 80002af8: 1ed51063 bne a0,a3,80002cd8 + 80002afc: 1cc59e63 bne a1,a2,80002cd8 + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00000517 auipc a0,0x0 + 80002b08: 51c50513 addi a0,a0,1308 # 80003020 + 80002b0c: 00053007 fld ft0,0(a0) + 80002b10: 00853087 fld ft1,8(a0) + 80002b14: 01053107 fld ft2,16(a0) + 80002b18: 01853683 ld a3,24(a0) + 80002b1c: 021071d3 fadd.d ft3,ft0,ft1 + 80002b20: e2018553 fmv.x.d a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00100613 li a2,1 + 80002b2c: 1ad51663 bne a0,a3,80002cd8 + 80002b30: 1ac59463 bne a1,a2,80002cd8 + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00000517 auipc a0,0x0 + 80002b3c: 50850513 addi a0,a0,1288 # 80003040 + 80002b40: 00053007 fld ft0,0(a0) + 80002b44: 00853087 fld ft1,8(a0) + 80002b48: 01053107 fld ft2,16(a0) + 80002b4c: 01853683 ld a3,24(a0) + 80002b50: 021071d3 fadd.d ft3,ft0,ft1 + 80002b54: e2018553 fmv.x.d a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00100613 li a2,1 + 80002b60: 16d51c63 bne a0,a3,80002cd8 + 80002b64: 16c59a63 bne a1,a2,80002cd8 + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00000517 auipc a0,0x0 + 80002b70: 4f450513 addi a0,a0,1268 # 80003060 + 80002b74: 00053007 fld ft0,0(a0) + 80002b78: 00853087 fld ft1,8(a0) + 80002b7c: 01053107 fld ft2,16(a0) + 80002b80: 01853683 ld a3,24(a0) + 80002b84: 0a1071d3 fsub.d ft3,ft0,ft1 + 80002b88: e2018553 fmv.x.d a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00000613 li a2,0 + 80002b94: 14d51263 bne a0,a3,80002cd8 + 80002b98: 14c59063 bne a1,a2,80002cd8 + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00000517 auipc a0,0x0 + 80002ba4: 4e050513 addi a0,a0,1248 # 80003080 + 80002ba8: 00053007 fld ft0,0(a0) + 80002bac: 00853087 fld ft1,8(a0) + 80002bb0: 01053107 fld ft2,16(a0) + 80002bb4: 01853683 ld a3,24(a0) + 80002bb8: 0a1071d3 fsub.d ft3,ft0,ft1 + 80002bbc: e2018553 fmv.x.d a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00100613 li a2,1 + 80002bc8: 10d51863 bne a0,a3,80002cd8 + 80002bcc: 10c59663 bne a1,a2,80002cd8 + +0000000080002bd0 : + 80002bd0: 00700193 li gp,7 + 80002bd4: 00000517 auipc a0,0x0 + 80002bd8: 4cc50513 addi a0,a0,1228 # 800030a0 + 80002bdc: 00053007 fld ft0,0(a0) + 80002be0: 00853087 fld ft1,8(a0) + 80002be4: 01053107 fld ft2,16(a0) + 80002be8: 01853683 ld a3,24(a0) + 80002bec: 0a1071d3 fsub.d ft3,ft0,ft1 + 80002bf0: e2018553 fmv.x.d a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 00100613 li a2,1 + 80002bfc: 0cd51e63 bne a0,a3,80002cd8 + 80002c00: 0cc59c63 bne a1,a2,80002cd8 + +0000000080002c04 : + 80002c04: 00800193 li gp,8 + 80002c08: 00000517 auipc a0,0x0 + 80002c0c: 4b850513 addi a0,a0,1208 # 800030c0 + 80002c10: 00053007 fld ft0,0(a0) + 80002c14: 00853087 fld ft1,8(a0) + 80002c18: 01053107 fld ft2,16(a0) + 80002c1c: 01853683 ld a3,24(a0) + 80002c20: 121071d3 fmul.d ft3,ft0,ft1 + 80002c24: e2018553 fmv.x.d a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00000613 li a2,0 + 80002c30: 0ad51463 bne a0,a3,80002cd8 + 80002c34: 0ac59263 bne a1,a2,80002cd8 + +0000000080002c38 : + 80002c38: 00900193 li gp,9 + 80002c3c: 00000517 auipc a0,0x0 + 80002c40: 4a450513 addi a0,a0,1188 # 800030e0 + 80002c44: 00053007 fld ft0,0(a0) + 80002c48: 00853087 fld ft1,8(a0) + 80002c4c: 01053107 fld ft2,16(a0) + 80002c50: 01853683 ld a3,24(a0) + 80002c54: 121071d3 fmul.d ft3,ft0,ft1 + 80002c58: e2018553 fmv.x.d a0,ft3 + 80002c5c: 001015f3 fsflags a1,zero + 80002c60: 00100613 li a2,1 + 80002c64: 06d51a63 bne a0,a3,80002cd8 + 80002c68: 06c59863 bne a1,a2,80002cd8 + +0000000080002c6c : + 80002c6c: 00a00193 li gp,10 + 80002c70: 00000517 auipc a0,0x0 + 80002c74: 49050513 addi a0,a0,1168 # 80003100 + 80002c78: 00053007 fld ft0,0(a0) + 80002c7c: 00853087 fld ft1,8(a0) + 80002c80: 01053107 fld ft2,16(a0) + 80002c84: 01853683 ld a3,24(a0) + 80002c88: 121071d3 fmul.d ft3,ft0,ft1 + 80002c8c: e2018553 fmv.x.d a0,ft3 + 80002c90: 001015f3 fsflags a1,zero + 80002c94: 00100613 li a2,1 + 80002c98: 04d51063 bne a0,a3,80002cd8 + 80002c9c: 02c59e63 bne a1,a2,80002cd8 + +0000000080002ca0 : + 80002ca0: 00b00193 li gp,11 + 80002ca4: 00000517 auipc a0,0x0 + 80002ca8: 47c50513 addi a0,a0,1148 # 80003120 + 80002cac: 00053007 fld ft0,0(a0) + 80002cb0: 00853087 fld ft1,8(a0) + 80002cb4: 01053107 fld ft2,16(a0) + 80002cb8: 01853683 ld a3,24(a0) + 80002cbc: 0a1071d3 fsub.d ft3,ft0,ft1 + 80002cc0: e2018553 fmv.x.d a0,ft3 + 80002cc4: 001015f3 fsflags a1,zero + 80002cc8: 01000613 li a2,16 + 80002ccc: 00d51663 bne a0,a3,80002cd8 + 80002cd0: 00c59463 bne a1,a2,80002cd8 + 80002cd4: 00301a63 bne zero,gp,80002ce8 + +0000000080002cd8 : + 80002cd8: 00119513 slli a0,gp,0x1 + 80002cdc: 00050063 beqz a0,80002cdc + 80002ce0: 00156513 ori a0,a0,1 + 80002ce4: 00000073 ecall + +0000000080002ce8 : + 80002ce8: 00100513 li a0,1 + 80002cec: 00000073 ecall + 80002cf0: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 0000 unimp + 80003004: 0000 unimp + 80003006: 4004 lw s1,0(s0) + 80003008: 0000 unimp + 8000300a: 0000 unimp + 8000300c: 0000 unimp + 8000300e: 3ff0 fld fa2,248(a5) + 80003010: 0000 unimp + 80003012: 0000 unimp + 80003014: 0000 unimp + 80003016: 0000 unimp + 80003018: 0000 unimp + 8000301a: 0000 unimp + 8000301c: 0000 unimp + 8000301e: 400c lw a1,0(s0) + +0000000080003020 : + 80003020: 6666 ld a2,88(sp) + 80003022: 6666 ld a2,88(sp) + 80003024: 4c66 lw s8,88(sp) + 80003026: 999ac093 xori ra,s5,-1639 + 8000302a: 9999 andi a1,a1,-26 + 8000302c: 9999 andi a1,a1,-26 + 8000302e: 3ff1 addiw t6,t6,-4 + 80003030: 0000 unimp + 80003032: 0000 unimp + 80003034: 0000 unimp + 80003036: 0000 unimp + 80003038: 0000 unimp + 8000303a: 0000 unimp + 8000303c: 4800 lw s0,16(s0) + 8000303e: xori ra,gp,-689 + +0000000080003040 : + 80003040: d4f1 beqz s1,8000300c + 80003042: 53c8 lw a0,36(a5) + 80003044: 400921fb 0x400921fb + 80003048: 8c3a mv s8,a4 + 8000304a: e230 sd a2,64(a2) + 8000304c: 798e ld s3,224(sp) + 8000304e: 3e45 addiw t3,t3,-15 + 80003050: 0000 unimp + 80003052: 0000 unimp + 80003054: 0000 unimp + 80003056: 0000 unimp + 80003058: 6ddf 5520 21fb 0x21fb55206ddf + 8000305e: 4009 c.li zero,2 + +0000000080003060 : + 80003060: 0000 unimp + 80003062: 0000 unimp + 80003064: 0000 unimp + 80003066: 4004 lw s1,0(s0) + 80003068: 0000 unimp + 8000306a: 0000 unimp + 8000306c: 0000 unimp + 8000306e: 3ff0 fld fa2,248(a5) + 80003070: 0000 unimp + 80003072: 0000 unimp + 80003074: 0000 unimp + 80003076: 0000 unimp + 80003078: 0000 unimp + 8000307a: 0000 unimp + 8000307c: 0000 unimp + 8000307e: 3ff8 fld fa4,248(a5) + +0000000080003080 : + 80003080: 6666 ld a2,88(sp) + 80003082: 6666 ld a2,88(sp) + 80003084: 4c66 lw s8,88(sp) + 80003086: 999ac093 xori ra,s5,-1639 + 8000308a: 9999 andi a1,a1,-26 + 8000308c: 9999 andi a1,a1,-26 + 8000308e: bff1 j 8000306a + 80003090: 0000 unimp + 80003092: 0000 unimp + 80003094: 0000 unimp + 80003096: 0000 unimp + 80003098: 0000 unimp + 8000309a: 0000 unimp + 8000309c: 4800 lw s0,16(s0) + 8000309e: xori ra,gp,-689 + +00000000800030a0 : + 800030a0: d4f1 beqz s1,8000306c + 800030a2: 53c8 lw a0,36(a5) + 800030a4: 400921fb 0x400921fb + 800030a8: 8c3a mv s8,a4 + 800030aa: e230 sd a2,64(a2) + 800030ac: 798e ld s3,224(sp) + 800030ae: 3e45 addiw t3,t3,-15 + 800030b0: 0000 unimp + 800030b2: 0000 unimp + 800030b4: 0000 unimp + 800030b6: 0000 unimp + 800030b8: 52713c03 ld s8,1319(sp) + 800030bc: 400921fb 0x400921fb + +00000000800030c0 : + 800030c0: 0000 unimp + 800030c2: 0000 unimp + 800030c4: 0000 unimp + 800030c6: 4004 lw s1,0(s0) + 800030c8: 0000 unimp + 800030ca: 0000 unimp + 800030cc: 0000 unimp + 800030ce: 3ff0 fld fa2,248(a5) + 800030d0: 0000 unimp + 800030d2: 0000 unimp + 800030d4: 0000 unimp + 800030d6: 0000 unimp + 800030d8: 0000 unimp + 800030da: 0000 unimp + 800030dc: 0000 unimp + 800030de: 4004 lw s1,0(s0) + +00000000800030e0 : + 800030e0: 6666 ld a2,88(sp) + 800030e2: 6666 ld a2,88(sp) + 800030e4: 4c66 lw s8,88(sp) + 800030e6: 999ac093 xori ra,s5,-1639 + 800030ea: 9999 andi a1,a1,-26 + 800030ec: 9999 andi a1,a1,-26 + 800030ee: bff1 j 800030ca + 800030f0: 0000 unimp + 800030f2: 0000 unimp + 800030f4: 0000 unimp + 800030f6: 0000 unimp + 800030f8: 0a3d addi s4,s4,15 + 800030fa: 3a70a3d7 0x3a70a3d7 + 800030fe: 4095 li ra,5 + +0000000080003100 : + 80003100: d4f1 beqz s1,800030cc + 80003102: 53c8 lw a0,36(a5) + 80003104: 400921fb 0x400921fb + 80003108: 8c3a mv s8,a4 + 8000310a: e230 sd a2,64(a2) + 8000310c: 798e ld s3,224(sp) + 8000310e: 3e45 addiw t3,t3,-15 + 80003110: 0000 unimp + 80003112: 0000 unimp + 80003114: 0000 unimp + 80003116: 0000 unimp + 80003118: ff09 bnez a4,80003032 + 8000311a: a5c1 j 800037da + 8000311c: ddc5 beqz a1,800030d4 + 8000311e: 3e60 fld fs0,248(a2) + +0000000080003120 : + 80003120: 0000 unimp + 80003122: 0000 unimp + 80003124: 0000 unimp + 80003126: 7ff0 ld a2,248(a5) + 80003128: 0000 unimp + 8000312a: 0000 unimp + 8000312c: 0000 unimp + 8000312e: 7ff0 ld a2,248(a5) + 80003130: 0000 unimp + 80003132: 0000 unimp + 80003134: 0000 unimp + 80003136: 0000 unimp + 80003138: 0000 unimp + 8000313a: 0000 unimp + 8000313c: 0000 unimp + 8000313e: 7ff8 ld a4,248(a5) diff --git a/Tests/isa/rv64ud-v-fclass b/Tests/isa/rv64ud-v-fclass new file mode 100644 index 0000000..2e56536 Binary files /dev/null and b/Tests/isa/rv64ud-v-fclass differ diff --git a/Tests/isa/rv64ud-v-fclass.dump b/Tests/isa/rv64ud-v-fclass.dump new file mode 100644 index 0000000..472ed81 --- /dev/null +++ b/Tests/isa/rv64ud-v-fclass.dump @@ -0,0 +1,935 @@ + +rv64ud-v-fclass: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 7b868693 addi a3,a3,1976 # 80002c10 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7ec60613 addi a2,a2,2028 # 80002ca0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 7b460613 addi a2,a2,1972 # 80002cb8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 70468693 addi a3,a3,1796 # 80002c58 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 72068693 addi a3,a3,1824 # 80002d90 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 6a060613 addi a2,a2,1696 # 80002d68 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 5d468693 addi a3,a3,1492 # 80002dc0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4f468693 addi a3,a3,1268 # 80002d30 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 48468693 addi a3,a3,1156 # 80002cf8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02e00793 li a5,46 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 00cd57b7 lui a5,0xcd5 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: eaa78793 addi a5,a5,-342 # cd4eaa <_start-0x7f32b156> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: fff0051b addiw a0,zero,-1 + 80002ad0: 03451513 slli a0,a0,0x34 + 80002ad4: f2050553 fmv.d.x fa0,a0 + 80002ad8: e2051553 fclass.d a0,fa0 + 80002adc: 00100e93 li t4,1 + 80002ae0: 00200193 li gp,2 + 80002ae4: 11d51863 bne a0,t4,80002bf4 + +0000000080002ae8 : + 80002ae8: bff0051b addiw a0,zero,-1025 + 80002aec: 03451513 slli a0,a0,0x34 + 80002af0: f2050553 fmv.d.x fa0,a0 + 80002af4: e2051553 fclass.d a0,fa0 + 80002af8: 00200e93 li t4,2 + 80002afc: 00300193 li gp,3 + 80002b00: 0fd51a63 bne a0,t4,80002bf4 + +0000000080002b04 : + 80002b04: 8010051b addiw a0,zero,-2047 + 80002b08: 03451513 slli a0,a0,0x34 + 80002b0c: fff50513 addi a0,a0,-1 + 80002b10: f2050553 fmv.d.x fa0,a0 + 80002b14: e2051553 fclass.d a0,fa0 + 80002b18: 00400e93 li t4,4 + 80002b1c: 00400193 li gp,4 + 80002b20: 0dd51a63 bne a0,t4,80002bf4 + +0000000080002b24 : + 80002b24: fff0051b addiw a0,zero,-1 + 80002b28: 03f51513 slli a0,a0,0x3f + 80002b2c: f2050553 fmv.d.x fa0,a0 + 80002b30: e2051553 fclass.d a0,fa0 + 80002b34: 00800e93 li t4,8 + 80002b38: 00500193 li gp,5 + 80002b3c: 0bd51c63 bne a0,t4,80002bf4 + +0000000080002b40 : + 80002b40: 00000513 li a0,0 + 80002b44: f2050553 fmv.d.x fa0,a0 + 80002b48: e2051553 fclass.d a0,fa0 + 80002b4c: 01000e93 li t4,16 + 80002b50: 00600193 li gp,6 + 80002b54: 0bd51063 bne a0,t4,80002bf4 + +0000000080002b58 : + 80002b58: 0010051b addiw a0,zero,1 + 80002b5c: 03451513 slli a0,a0,0x34 + 80002b60: fff50513 addi a0,a0,-1 + 80002b64: f2050553 fmv.d.x fa0,a0 + 80002b68: e2051553 fclass.d a0,fa0 + 80002b6c: 02000e93 li t4,32 + 80002b70: 00700193 li gp,7 + 80002b74: 09d51063 bne a0,t4,80002bf4 + +0000000080002b78 : + 80002b78: 3ff0051b addiw a0,zero,1023 + 80002b7c: 03451513 slli a0,a0,0x34 + 80002b80: f2050553 fmv.d.x fa0,a0 + 80002b84: e2051553 fclass.d a0,fa0 + 80002b88: 04000e93 li t4,64 + 80002b8c: 00800193 li gp,8 + 80002b90: 07d51263 bne a0,t4,80002bf4 + +0000000080002b94 : + 80002b94: 7ff0051b addiw a0,zero,2047 + 80002b98: 03451513 slli a0,a0,0x34 + 80002b9c: f2050553 fmv.d.x fa0,a0 + 80002ba0: e2051553 fclass.d a0,fa0 + 80002ba4: 08000e93 li t4,128 + 80002ba8: 00900193 li gp,9 + 80002bac: 05d51463 bne a0,t4,80002bf4 + +0000000080002bb0 : + 80002bb0: 7ff0051b addiw a0,zero,2047 + 80002bb4: 03451513 slli a0,a0,0x34 + 80002bb8: 00150513 addi a0,a0,1 + 80002bbc: f2050553 fmv.d.x fa0,a0 + 80002bc0: e2051553 fclass.d a0,fa0 + 80002bc4: 10000e93 li t4,256 + 80002bc8: 00a00193 li gp,10 + 80002bcc: 03d51463 bne a0,t4,80002bf4 + +0000000080002bd0 : + 80002bd0: 00001537 lui a0,0x1 + 80002bd4: fff5051b addiw a0,a0,-1 + 80002bd8: 03351513 slli a0,a0,0x33 + 80002bdc: f2050553 fmv.d.x fa0,a0 + 80002be0: e2051553 fclass.d a0,fa0 + 80002be4: 20000e93 li t4,512 + 80002be8: 00b00193 li gp,11 + 80002bec: 01d51463 bne a0,t4,80002bf4 + 80002bf0: 00301a63 bne zero,gp,80002c04 + +0000000080002bf4 : + 80002bf4: 00119513 slli a0,gp,0x1 + 80002bf8: 00050063 beqz a0,80002bf8 + 80002bfc: 00156513 ori a0,a0,1 + 80002c00: 00000073 ecall + +0000000080002c04 : + 80002c04: 00100513 li a0,1 + 80002c08: 00000073 ecall + 80002c0c: c0001073 unimp diff --git a/Tests/isa/rv64ud-v-fcmp b/Tests/isa/rv64ud-v-fcmp new file mode 100644 index 0000000..b6bb129 Binary files /dev/null and b/Tests/isa/rv64ud-v-fcmp differ diff --git a/Tests/isa/rv64ud-v-fcmp.dump b/Tests/isa/rv64ud-v-fcmp.dump new file mode 100644 index 0000000..e62526a --- /dev/null +++ b/Tests/isa/rv64ud-v-fcmp.dump @@ -0,0 +1,1306 @@ + +rv64ud-v-fcmp: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 96868693 addi a3,a3,-1688 # 80002dc0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 99c60613 addi a2,a2,-1636 # 80002e50 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 96460613 addi a2,a2,-1692 # 80002e68 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 8b468693 addi a3,a3,-1868 # 80002e08 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8d068693 addi a3,a3,-1840 # 80002f40 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 85060613 addi a2,a2,-1968 # 80002f18 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 78468693 addi a3,a3,1924 # 80002f70 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 6a468693 addi a3,a3,1700 # 80002ee0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 63468693 addi a3,a3,1588 # 80002ea8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01300793 li a5,19 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0e6157b7 lui a5,0xe615 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 11278793 addi a5,a5,274 # e615112 <_start-0x719eaeee> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00053007 fld ft0,0(a0) + 80002adc: 00853087 fld ft1,8(a0) + 80002ae0: 01053107 fld ft2,16(a0) + 80002ae4: 01853683 ld a3,24(a0) + 80002ae8: a2102553 feq.d a0,ft0,ft1 + 80002aec: 001015f3 fsflags a1,zero + 80002af0: 00000613 li a2,0 + 80002af4: 2ad51663 bne a0,a3,80002da0 + 80002af8: 2ac59463 bne a1,a2,80002da0 + +0000000080002afc : + 80002afc: 00300193 li gp,3 + 80002b00: 00000517 auipc a0,0x0 + 80002b04: 52050513 addi a0,a0,1312 # 80003020 + 80002b08: 00053007 fld ft0,0(a0) + 80002b0c: 00853087 fld ft1,8(a0) + 80002b10: 01053107 fld ft2,16(a0) + 80002b14: 01853683 ld a3,24(a0) + 80002b18: a2100553 fle.d a0,ft0,ft1 + 80002b1c: 001015f3 fsflags a1,zero + 80002b20: 00000613 li a2,0 + 80002b24: 26d51e63 bne a0,a3,80002da0 + 80002b28: 26c59c63 bne a1,a2,80002da0 + +0000000080002b2c : + 80002b2c: 00400193 li gp,4 + 80002b30: 00000517 auipc a0,0x0 + 80002b34: 51050513 addi a0,a0,1296 # 80003040 + 80002b38: 00053007 fld ft0,0(a0) + 80002b3c: 00853087 fld ft1,8(a0) + 80002b40: 01053107 fld ft2,16(a0) + 80002b44: 01853683 ld a3,24(a0) + 80002b48: a2101553 flt.d a0,ft0,ft1 + 80002b4c: 001015f3 fsflags a1,zero + 80002b50: 00000613 li a2,0 + 80002b54: 24d51663 bne a0,a3,80002da0 + 80002b58: 24c59463 bne a1,a2,80002da0 + +0000000080002b5c : + 80002b5c: 00500193 li gp,5 + 80002b60: 00000517 auipc a0,0x0 + 80002b64: 50050513 addi a0,a0,1280 # 80003060 + 80002b68: 00053007 fld ft0,0(a0) + 80002b6c: 00853087 fld ft1,8(a0) + 80002b70: 01053107 fld ft2,16(a0) + 80002b74: 01853683 ld a3,24(a0) + 80002b78: a2102553 feq.d a0,ft0,ft1 + 80002b7c: 001015f3 fsflags a1,zero + 80002b80: 00000613 li a2,0 + 80002b84: 20d51e63 bne a0,a3,80002da0 + 80002b88: 20c59c63 bne a1,a2,80002da0 + +0000000080002b8c : + 80002b8c: 00600193 li gp,6 + 80002b90: 00000517 auipc a0,0x0 + 80002b94: 4f050513 addi a0,a0,1264 # 80003080 + 80002b98: 00053007 fld ft0,0(a0) + 80002b9c: 00853087 fld ft1,8(a0) + 80002ba0: 01053107 fld ft2,16(a0) + 80002ba4: 01853683 ld a3,24(a0) + 80002ba8: a2100553 fle.d a0,ft0,ft1 + 80002bac: 001015f3 fsflags a1,zero + 80002bb0: 00000613 li a2,0 + 80002bb4: 1ed51663 bne a0,a3,80002da0 + 80002bb8: 1ec59463 bne a1,a2,80002da0 + +0000000080002bbc : + 80002bbc: 00700193 li gp,7 + 80002bc0: 00000517 auipc a0,0x0 + 80002bc4: 4e050513 addi a0,a0,1248 # 800030a0 + 80002bc8: 00053007 fld ft0,0(a0) + 80002bcc: 00853087 fld ft1,8(a0) + 80002bd0: 01053107 fld ft2,16(a0) + 80002bd4: 01853683 ld a3,24(a0) + 80002bd8: a2101553 flt.d a0,ft0,ft1 + 80002bdc: 001015f3 fsflags a1,zero + 80002be0: 00000613 li a2,0 + 80002be4: 1ad51e63 bne a0,a3,80002da0 + 80002be8: 1ac59c63 bne a1,a2,80002da0 + +0000000080002bec : + 80002bec: 00800193 li gp,8 + 80002bf0: 00000517 auipc a0,0x0 + 80002bf4: 4d050513 addi a0,a0,1232 # 800030c0 + 80002bf8: 00053007 fld ft0,0(a0) + 80002bfc: 00853087 fld ft1,8(a0) + 80002c00: 01053107 fld ft2,16(a0) + 80002c04: 01853683 ld a3,24(a0) + 80002c08: a2102553 feq.d a0,ft0,ft1 + 80002c0c: 001015f3 fsflags a1,zero + 80002c10: 00000613 li a2,0 + 80002c14: 18d51663 bne a0,a3,80002da0 + 80002c18: 18c59463 bne a1,a2,80002da0 + +0000000080002c1c : + 80002c1c: 00900193 li gp,9 + 80002c20: 00000517 auipc a0,0x0 + 80002c24: 4c050513 addi a0,a0,1216 # 800030e0 + 80002c28: 00053007 fld ft0,0(a0) + 80002c2c: 00853087 fld ft1,8(a0) + 80002c30: 01053107 fld ft2,16(a0) + 80002c34: 01853683 ld a3,24(a0) + 80002c38: a2102553 feq.d a0,ft0,ft1 + 80002c3c: 001015f3 fsflags a1,zero + 80002c40: 00000613 li a2,0 + 80002c44: 14d51e63 bne a0,a3,80002da0 + 80002c48: 14c59c63 bne a1,a2,80002da0 + +0000000080002c4c : + 80002c4c: 00a00193 li gp,10 + 80002c50: 00000517 auipc a0,0x0 + 80002c54: 4b050513 addi a0,a0,1200 # 80003100 + 80002c58: 00053007 fld ft0,0(a0) + 80002c5c: 00853087 fld ft1,8(a0) + 80002c60: 01053107 fld ft2,16(a0) + 80002c64: 01853683 ld a3,24(a0) + 80002c68: a2102553 feq.d a0,ft0,ft1 + 80002c6c: 001015f3 fsflags a1,zero + 80002c70: 01000613 li a2,16 + 80002c74: 12d51663 bne a0,a3,80002da0 + 80002c78: 12c59463 bne a1,a2,80002da0 + +0000000080002c7c : + 80002c7c: 00b00193 li gp,11 + 80002c80: 00000517 auipc a0,0x0 + 80002c84: 4a050513 addi a0,a0,1184 # 80003120 + 80002c88: 00053007 fld ft0,0(a0) + 80002c8c: 00853087 fld ft1,8(a0) + 80002c90: 01053107 fld ft2,16(a0) + 80002c94: 01853683 ld a3,24(a0) + 80002c98: a2101553 flt.d a0,ft0,ft1 + 80002c9c: 001015f3 fsflags a1,zero + 80002ca0: 01000613 li a2,16 + 80002ca4: 0ed51e63 bne a0,a3,80002da0 + 80002ca8: 0ec59c63 bne a1,a2,80002da0 + +0000000080002cac : + 80002cac: 00c00193 li gp,12 + 80002cb0: 00000517 auipc a0,0x0 + 80002cb4: 49050513 addi a0,a0,1168 # 80003140 + 80002cb8: 00053007 fld ft0,0(a0) + 80002cbc: 00853087 fld ft1,8(a0) + 80002cc0: 01053107 fld ft2,16(a0) + 80002cc4: 01853683 ld a3,24(a0) + 80002cc8: a2101553 flt.d a0,ft0,ft1 + 80002ccc: 001015f3 fsflags a1,zero + 80002cd0: 01000613 li a2,16 + 80002cd4: 0cd51663 bne a0,a3,80002da0 + 80002cd8: 0cc59463 bne a1,a2,80002da0 + +0000000080002cdc : + 80002cdc: 00d00193 li gp,13 + 80002ce0: 00000517 auipc a0,0x0 + 80002ce4: 48050513 addi a0,a0,1152 # 80003160 + 80002ce8: 00053007 fld ft0,0(a0) + 80002cec: 00853087 fld ft1,8(a0) + 80002cf0: 01053107 fld ft2,16(a0) + 80002cf4: 01853683 ld a3,24(a0) + 80002cf8: a2101553 flt.d a0,ft0,ft1 + 80002cfc: 001015f3 fsflags a1,zero + 80002d00: 01000613 li a2,16 + 80002d04: 08d51e63 bne a0,a3,80002da0 + 80002d08: 08c59c63 bne a1,a2,80002da0 + +0000000080002d0c : + 80002d0c: 00e00193 li gp,14 + 80002d10: 00000517 auipc a0,0x0 + 80002d14: 47050513 addi a0,a0,1136 # 80003180 + 80002d18: 00053007 fld ft0,0(a0) + 80002d1c: 00853087 fld ft1,8(a0) + 80002d20: 01053107 fld ft2,16(a0) + 80002d24: 01853683 ld a3,24(a0) + 80002d28: a2100553 fle.d a0,ft0,ft1 + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 01000613 li a2,16 + 80002d34: 06d51663 bne a0,a3,80002da0 + 80002d38: 06c59463 bne a1,a2,80002da0 + +0000000080002d3c : + 80002d3c: 00f00193 li gp,15 + 80002d40: 00000517 auipc a0,0x0 + 80002d44: 46050513 addi a0,a0,1120 # 800031a0 + 80002d48: 00053007 fld ft0,0(a0) + 80002d4c: 00853087 fld ft1,8(a0) + 80002d50: 01053107 fld ft2,16(a0) + 80002d54: 01853683 ld a3,24(a0) + 80002d58: a2100553 fle.d a0,ft0,ft1 + 80002d5c: 001015f3 fsflags a1,zero + 80002d60: 01000613 li a2,16 + 80002d64: 02d51e63 bne a0,a3,80002da0 + 80002d68: 02c59c63 bne a1,a2,80002da0 + +0000000080002d6c : + 80002d6c: 01000193 li gp,16 + 80002d70: 00000517 auipc a0,0x0 + 80002d74: 45050513 addi a0,a0,1104 # 800031c0 + 80002d78: 00053007 fld ft0,0(a0) + 80002d7c: 00853087 fld ft1,8(a0) + 80002d80: 01053107 fld ft2,16(a0) + 80002d84: 01853683 ld a3,24(a0) + 80002d88: a2100553 fle.d a0,ft0,ft1 + 80002d8c: 001015f3 fsflags a1,zero + 80002d90: 01000613 li a2,16 + 80002d94: 00d51663 bne a0,a3,80002da0 + 80002d98: 00c59463 bne a1,a2,80002da0 + 80002d9c: 00301a63 bne zero,gp,80002db0 + +0000000080002da0 : + 80002da0: 00119513 slli a0,gp,0x1 + 80002da4: 00050063 beqz a0,80002da4 + 80002da8: 00156513 ori a0,a0,1 + 80002dac: 00000073 ecall + +0000000080002db0 : + 80002db0: 00100513 li a0,1 + 80002db4: 00000073 ecall + 80002db8: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 5c28f5c3 0x5c28f5c3 + 80003004: bff5c28f 0xbff5c28f + 80003008: 5c28f5c3 0x5c28f5c3 + 8000300c: bff5c28f 0xbff5c28f + 80003010: 0000 unimp + 80003012: 0000 unimp + 80003014: 0000 unimp + 80003016: 0000 unimp + 80003018: 0001 nop + 8000301a: 0000 unimp + 8000301c: 0000 unimp + 8000301e: 0000 unimp + +0000000080003020 : + 80003020: 5c28f5c3 0x5c28f5c3 + 80003024: bff5c28f 0xbff5c28f + 80003028: 5c28f5c3 0x5c28f5c3 + 8000302c: bff5c28f 0xbff5c28f + 80003030: 0000 unimp + 80003032: 0000 unimp + 80003034: 0000 unimp + 80003036: 0000 unimp + 80003038: 0001 nop + 8000303a: 0000 unimp + 8000303c: 0000 unimp + 8000303e: 0000 unimp + +0000000080003040 : + 80003040: 5c28f5c3 0x5c28f5c3 + 80003044: bff5c28f 0xbff5c28f + 80003048: 5c28f5c3 0x5c28f5c3 + 8000304c: bff5c28f 0xbff5c28f + 80003050: 0000 unimp + 80003052: 0000 unimp + 80003054: 0000 unimp + 80003056: 0000 unimp + 80003058: 0000 unimp + 8000305a: 0000 unimp + 8000305c: 0000 unimp + 8000305e: 0000 unimp + +0000000080003060 : + 80003060: 51ec lw a1,100(a1) + 80003062: 1eb8 addi a4,sp,888 + 80003064: eb85 bnez a5,80003094 + 80003066: bff5 j 80003062 + 80003068: 5c28f5c3 0x5c28f5c3 + 8000306c: bff5c28f 0xbff5c28f + 80003070: 0000 unimp + 80003072: 0000 unimp + 80003074: 0000 unimp + 80003076: 0000 unimp + 80003078: 0000 unimp + 8000307a: 0000 unimp + 8000307c: 0000 unimp + 8000307e: 0000 unimp + +0000000080003080 : + 80003080: 51ec lw a1,100(a1) + 80003082: 1eb8 addi a4,sp,888 + 80003084: eb85 bnez a5,800030b4 + 80003086: bff5 j 80003082 + 80003088: 5c28f5c3 0x5c28f5c3 + 8000308c: bff5c28f 0xbff5c28f + 80003090: 0000 unimp + 80003092: 0000 unimp + 80003094: 0000 unimp + 80003096: 0000 unimp + 80003098: 0001 nop + 8000309a: 0000 unimp + 8000309c: 0000 unimp + 8000309e: 0000 unimp + +00000000800030a0 : + 800030a0: 51ec lw a1,100(a1) + 800030a2: 1eb8 addi a4,sp,888 + 800030a4: eb85 bnez a5,800030d4 + 800030a6: bff5 j 800030a2 + 800030a8: 5c28f5c3 0x5c28f5c3 + 800030ac: bff5c28f 0xbff5c28f + 800030b0: 0000 unimp + 800030b2: 0000 unimp + 800030b4: 0000 unimp + 800030b6: 0000 unimp + 800030b8: 0001 nop + 800030ba: 0000 unimp + 800030bc: 0000 unimp + 800030be: 0000 unimp + +00000000800030c0 : + 800030c0: ffff 0xffff + 800030c2: ffff 0xffff + 800030c4: ffff 0xffff + 800030c6: 7fff 0x7fff + 800030c8: 0000 unimp + 800030ca: 0000 unimp + 800030cc: 0000 unimp + 800030ce: 0000 unimp + 800030d0: 0000 unimp + 800030d2: 0000 unimp + 800030d4: 0000 unimp + 800030d6: 0000 unimp + 800030d8: 0000 unimp + 800030da: 0000 unimp + 800030dc: 0000 unimp + 800030de: 0000 unimp + +00000000800030e0 : + 800030e0: ffff 0xffff + 800030e2: ffff 0xffff + 800030e4: ffff 0xffff + 800030e6: 7fff 0x7fff + 800030e8: ffff 0xffff + 800030ea: ffff 0xffff + 800030ec: ffff 0xffff + 800030ee: 7fff 0x7fff + 800030f0: 0000 unimp + 800030f2: 0000 unimp + 800030f4: 0000 unimp + 800030f6: 0000 unimp + 800030f8: 0000 unimp + 800030fa: 0000 unimp + 800030fc: 0000 unimp + 800030fe: 0000 unimp + +0000000080003100 : + 80003100: 0001 nop + 80003102: 0000 unimp + 80003104: 0000 unimp + 80003106: 7ff0 ld a2,248(a5) + 80003108: 0000 unimp + 8000310a: 0000 unimp + 8000310c: 0000 unimp + 8000310e: 0000 unimp + 80003110: 0000 unimp + 80003112: 0000 unimp + 80003114: 0000 unimp + 80003116: 0000 unimp + 80003118: 0000 unimp + 8000311a: 0000 unimp + 8000311c: 0000 unimp + 8000311e: 0000 unimp + +0000000080003120 : + 80003120: ffff 0xffff + 80003122: ffff 0xffff + 80003124: ffff 0xffff + 80003126: 7fff 0x7fff + 80003128: 0000 unimp + 8000312a: 0000 unimp + 8000312c: 0000 unimp + 8000312e: 0000 unimp + 80003130: 0000 unimp + 80003132: 0000 unimp + 80003134: 0000 unimp + 80003136: 0000 unimp + 80003138: 0000 unimp + 8000313a: 0000 unimp + 8000313c: 0000 unimp + 8000313e: 0000 unimp + +0000000080003140 : + 80003140: ffff 0xffff + 80003142: ffff 0xffff + 80003144: ffff 0xffff + 80003146: 7fff 0x7fff + 80003148: ffff 0xffff + 8000314a: ffff 0xffff + 8000314c: ffff 0xffff + 8000314e: 7fff 0x7fff + 80003150: 0000 unimp + 80003152: 0000 unimp + 80003154: 0000 unimp + 80003156: 0000 unimp + 80003158: 0000 unimp + 8000315a: 0000 unimp + 8000315c: 0000 unimp + 8000315e: 0000 unimp + +0000000080003160 : + 80003160: 0001 nop + 80003162: 0000 unimp + 80003164: 0000 unimp + 80003166: 7ff0 ld a2,248(a5) + 80003168: 0000 unimp + 8000316a: 0000 unimp + 8000316c: 0000 unimp + 8000316e: 0000 unimp + 80003170: 0000 unimp + 80003172: 0000 unimp + 80003174: 0000 unimp + 80003176: 0000 unimp + 80003178: 0000 unimp + 8000317a: 0000 unimp + 8000317c: 0000 unimp + 8000317e: 0000 unimp + +0000000080003180 : + 80003180: ffff 0xffff + 80003182: ffff 0xffff + 80003184: ffff 0xffff + 80003186: 7fff 0x7fff + 80003188: 0000 unimp + 8000318a: 0000 unimp + 8000318c: 0000 unimp + 8000318e: 0000 unimp + 80003190: 0000 unimp + 80003192: 0000 unimp + 80003194: 0000 unimp + 80003196: 0000 unimp + 80003198: 0000 unimp + 8000319a: 0000 unimp + 8000319c: 0000 unimp + 8000319e: 0000 unimp + +00000000800031a0 : + 800031a0: ffff 0xffff + 800031a2: ffff 0xffff + 800031a4: ffff 0xffff + 800031a6: 7fff 0x7fff + 800031a8: ffff 0xffff + 800031aa: ffff 0xffff + 800031ac: ffff 0xffff + 800031ae: 7fff 0x7fff + 800031b0: 0000 unimp + 800031b2: 0000 unimp + 800031b4: 0000 unimp + 800031b6: 0000 unimp + 800031b8: 0000 unimp + 800031ba: 0000 unimp + 800031bc: 0000 unimp + 800031be: 0000 unimp + +00000000800031c0 : + 800031c0: 0001 nop + 800031c2: 0000 unimp + 800031c4: 0000 unimp + 800031c6: 7ff0 ld a2,248(a5) + 800031c8: 0000 unimp + 800031ca: 0000 unimp + 800031cc: 0000 unimp + 800031ce: 0000 unimp + 800031d0: 0000 unimp + 800031d2: 0000 unimp + 800031d4: 0000 unimp + 800031d6: 0000 unimp + 800031d8: 0000 unimp + 800031da: 0000 unimp + 800031dc: 0000 unimp + 800031de: 0000 unimp diff --git a/Tests/isa/rv64ud-v-fcvt b/Tests/isa/rv64ud-v-fcvt new file mode 100644 index 0000000..f74f59d Binary files /dev/null and b/Tests/isa/rv64ud-v-fcvt differ diff --git a/Tests/isa/rv64ud-v-fcvt.dump b/Tests/isa/rv64ud-v-fcvt.dump new file mode 100644 index 0000000..423e268 --- /dev/null +++ b/Tests/isa/rv64ud-v-fcvt.dump @@ -0,0 +1,1060 @@ + +rv64ud-v-fcvt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 85868693 addi a3,a3,-1960 # 80002cb0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 88c60613 addi a2,a2,-1908 # 80002d40 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 85460613 addi a2,a2,-1964 # 80002d58 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 7a468693 addi a3,a3,1956 # 80002cf8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 7c068693 addi a3,a3,1984 # 80002e30 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 74060613 addi a2,a2,1856 # 80002e08 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 67468693 addi a3,a3,1652 # 80002e60 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 59468693 addi a3,a3,1428 # 80002dd0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 52468693 addi a3,a3,1316 # 80002d98 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02100793 li a5,33 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0d3917b7 lui a5,0xd391 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: b8678793 addi a5,a5,-1146 # d390b86 <_start-0x72c6f47a> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00053683 ld a3,0(a0) + 80002adc: 00200513 li a0,2 + 80002ae0: d2050053 fcvt.d.w ft0,a0 + 80002ae4: 00101073 fsflags zero + 80002ae8: e2000553 fmv.x.d a0,ft0 + 80002aec: 1ad51263 bne a0,a3,80002c90 + +0000000080002af0 : + 80002af0: 00300193 li gp,3 + 80002af4: 00000517 auipc a0,0x0 + 80002af8: 51450513 addi a0,a0,1300 # 80003008 + 80002afc: 00053683 ld a3,0(a0) + 80002b00: ffe00513 li a0,-2 + 80002b04: d2050053 fcvt.d.w ft0,a0 + 80002b08: 00101073 fsflags zero + 80002b0c: e2000553 fmv.x.d a0,ft0 + 80002b10: 18d51063 bne a0,a3,80002c90 + +0000000080002b14 : + 80002b14: 00400193 li gp,4 + 80002b18: 00000517 auipc a0,0x0 + 80002b1c: 4f850513 addi a0,a0,1272 # 80003010 + 80002b20: 00053683 ld a3,0(a0) + 80002b24: 00200513 li a0,2 + 80002b28: d2150053 fcvt.d.wu ft0,a0 + 80002b2c: 00101073 fsflags zero + 80002b30: e2000553 fmv.x.d a0,ft0 + 80002b34: 14d51e63 bne a0,a3,80002c90 + +0000000080002b38 : + 80002b38: 00500193 li gp,5 + 80002b3c: 00000517 auipc a0,0x0 + 80002b40: 4dc50513 addi a0,a0,1244 # 80003018 + 80002b44: 00053683 ld a3,0(a0) + 80002b48: ffe00513 li a0,-2 + 80002b4c: d2150053 fcvt.d.wu ft0,a0 + 80002b50: 00101073 fsflags zero + 80002b54: e2000553 fmv.x.d a0,ft0 + 80002b58: 12d51c63 bne a0,a3,80002c90 + +0000000080002b5c : + 80002b5c: 00600193 li gp,6 + 80002b60: 00000517 auipc a0,0x0 + 80002b64: 4c050513 addi a0,a0,1216 # 80003020 + 80002b68: 00053683 ld a3,0(a0) + 80002b6c: 00200513 li a0,2 + 80002b70: d2257053 fcvt.d.l ft0,a0 + 80002b74: 00101073 fsflags zero + 80002b78: e2000553 fmv.x.d a0,ft0 + 80002b7c: 10d51a63 bne a0,a3,80002c90 + +0000000080002b80 : + 80002b80: 00700193 li gp,7 + 80002b84: 00000517 auipc a0,0x0 + 80002b88: 4a450513 addi a0,a0,1188 # 80003028 + 80002b8c: 00053683 ld a3,0(a0) + 80002b90: ffe00513 li a0,-2 + 80002b94: d2257053 fcvt.d.l ft0,a0 + 80002b98: 00101073 fsflags zero + 80002b9c: e2000553 fmv.x.d a0,ft0 + 80002ba0: 0ed51863 bne a0,a3,80002c90 + +0000000080002ba4 : + 80002ba4: 00800193 li gp,8 + 80002ba8: 00000517 auipc a0,0x0 + 80002bac: 48850513 addi a0,a0,1160 # 80003030 + 80002bb0: 00053683 ld a3,0(a0) + 80002bb4: 00200513 li a0,2 + 80002bb8: d2357053 fcvt.d.lu ft0,a0 + 80002bbc: 00101073 fsflags zero + 80002bc0: e2000553 fmv.x.d a0,ft0 + 80002bc4: 0cd51663 bne a0,a3,80002c90 + +0000000080002bc8 : + 80002bc8: 00900193 li gp,9 + 80002bcc: 00000517 auipc a0,0x0 + 80002bd0: 46c50513 addi a0,a0,1132 # 80003038 + 80002bd4: 00053683 ld a3,0(a0) + 80002bd8: ffe00513 li a0,-2 + 80002bdc: d2357053 fcvt.d.lu ft0,a0 + 80002be0: 00101073 fsflags zero + 80002be4: e2000553 fmv.x.d a0,ft0 + 80002be8: 0ad51463 bne a0,a3,80002c90 + +0000000080002bec : + 80002bec: 00a00193 li gp,10 + 80002bf0: 00000517 auipc a0,0x0 + 80002bf4: 45050513 addi a0,a0,1104 # 80003040 + 80002bf8: 00053007 fld ft0,0(a0) + 80002bfc: 00853087 fld ft1,8(a0) + 80002c00: 01053107 fld ft2,16(a0) + 80002c04: 01853683 ld a3,24(a0) + 80002c08: 401071d3 fcvt.s.d ft3,ft0 + 80002c0c: 420181d3 fcvt.d.s ft3,ft3 + 80002c10: e2018553 fmv.x.d a0,ft3 + 80002c14: 001015f3 fsflags a1,zero + 80002c18: 00000613 li a2,0 + 80002c1c: 06d51a63 bne a0,a3,80002c90 + 80002c20: 06c59863 bne a1,a2,80002c90 + +0000000080002c24 : + 80002c24: 00b00193 li gp,11 + 80002c28: 00000517 auipc a0,0x0 + 80002c2c: 43850513 addi a0,a0,1080 # 80003060 + 80002c30: 00052007 flw ft0,0(a0) + 80002c34: 00452087 flw ft1,4(a0) + 80002c38: 00852107 flw ft2,8(a0) + 80002c3c: 00c52683 lw a3,12(a0) + 80002c40: 420001d3 fcvt.d.s ft3,ft0 + 80002c44: 4011f1d3 fcvt.s.d ft3,ft3 + 80002c48: e0018553 fmv.x.w a0,ft3 + 80002c4c: 001015f3 fsflags a1,zero + 80002c50: 00000613 li a2,0 + 80002c54: 02d51e63 bne a0,a3,80002c90 + 80002c58: 02c59c63 bne a1,a2,80002c90 + +0000000080002c5c : + 80002c5c: 00000597 auipc a1,0x0 + 80002c60: 41458593 addi a1,a1,1044 # 80003070 + 80002c64: 0005b603 ld a2,0(a1) + 80002c68: f2060153 fmv.d.x ft2,a2 + 80002c6c: 40117153 fcvt.s.d ft2,ft2 + 80002c70: 42010153 fcvt.d.s ft2,ft2 + 80002c74: e2010553 fmv.x.d a0,ft2 + 80002c78: 00001eb7 lui t4,0x1 + 80002c7c: fffe8e9b addiw t4,t4,-1 + 80002c80: 033e9e93 slli t4,t4,0x33 + 80002c84: 00c00193 li gp,12 + 80002c88: 01d51463 bne a0,t4,80002c90 + 80002c8c: 00301a63 bne zero,gp,80002ca0 + +0000000080002c90 : + 80002c90: 00119513 slli a0,gp,0x1 + 80002c94: 00050063 beqz a0,80002c94 + 80002c98: 00156513 ori a0,a0,1 + 80002c9c: 00000073 ecall + +0000000080002ca0 : + 80002ca0: 00100513 li a0,1 + 80002ca4: 00000073 ecall + 80002ca8: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 0000 unimp + 80003004: 0000 unimp + 80003006: 4000 lw s0,0(s0) + +0000000080003008 : + 80003008: 0000 unimp + 8000300a: 0000 unimp + 8000300c: 0000 unimp + 8000300e: c000 sw s0,0(s0) + +0000000080003010 : + 80003010: 0000 unimp + 80003012: 0000 unimp + 80003014: 0000 unimp + 80003016: 4000 lw s0,0(s0) + +0000000080003018 : + 80003018: 0000 unimp + 8000301a: ffc0 sd s0,184(a5) + 8000301c: ffff 0xffff + 8000301e: jal gp,8000701e + +0000000080003020 : + 80003020: 0000 unimp + 80003022: 0000 unimp + 80003024: 0000 unimp + 80003026: 4000 lw s0,0(s0) + +0000000080003028 : + 80003028: 0000 unimp + 8000302a: 0000 unimp + 8000302c: 0000 unimp + 8000302e: c000 sw s0,0(s0) + +0000000080003030 : + 80003030: 0000 unimp + 80003032: 0000 unimp + 80003034: 0000 unimp + 80003036: 4000 lw s0,0(s0) + +0000000080003038 : + 80003038: 0000 unimp + 8000303a: 0000 unimp + 8000303c: 0000 unimp + 8000303e: 43f0 lw a2,68(a5) + +0000000080003040 : + 80003040: 0000 unimp + 80003042: 0000 unimp + 80003044: 0000 unimp + 80003046: bff8 fsd fa4,248(a5) + 80003048: 0000 unimp + 8000304a: 0000 unimp + 8000304c: 0000 unimp + 8000304e: 0000 unimp + 80003050: 0000 unimp + 80003052: 0000 unimp + 80003054: 0000 unimp + 80003056: 0000 unimp + 80003058: 0000 unimp + 8000305a: 0000 unimp + 8000305c: 0000 unimp + 8000305e: bff8 fsd fa4,248(a5) + +0000000080003060 : + 80003060: 0000 unimp + 80003062: bfc0 fsd fs0,184(a5) + 80003064: 0000 unimp + 80003066: 0000 unimp + 80003068: 0000 unimp + 8000306a: 0000 unimp + 8000306c: 0000 unimp + 8000306e: bfc0 fsd fs0,184(a5) + +0000000080003070 : + 80003070: 8004 0x8004 + 80003072: ffff 0xffff + 80003074: ffff 0xffff + 80003076: 7ffc ld a5,248(a5) diff --git a/Tests/isa/rv64ud-v-fcvt_w b/Tests/isa/rv64ud-v-fcvt_w new file mode 100644 index 0000000..7db92cf Binary files /dev/null and b/Tests/isa/rv64ud-v-fcvt_w differ diff --git a/Tests/isa/rv64ud-v-fcvt_w.dump b/Tests/isa/rv64ud-v-fcvt_w.dump new file mode 100644 index 0000000..664178d --- /dev/null +++ b/Tests/isa/rv64ud-v-fcvt_w.dump @@ -0,0 +1,2105 @@ + +rv64ud-v-fcvt_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: ee068693 addi a3,a3,-288 # 80003338 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: f1460613 addi a2,a2,-236 # 800033c8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: edc60613 addi a2,a2,-292 # 800033e0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: e2c68693 addi a3,a3,-468 # 80003380 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: e4868693 addi a3,a3,-440 # 800034b8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: dc860613 addi a2,a2,-568 # 80003490 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: cfc68693 addi a3,a3,-772 # 800034e8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: c1c68693 addi a3,a3,-996 # 80003458 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: bac68693 addi a3,a3,-1108 # 80003420 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 00a00793 li a5,10 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0c1627b7 lui a5,0xc162 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 6ba78793 addi a5,a5,1722 # c1626ba <_start-0x73e9d946> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00001517 auipc a0,0x1 + 80002ad4: 53050513 addi a0,a0,1328 # 80004000 + 80002ad8: 00053007 fld ft0,0(a0) + 80002adc: 00853087 fld ft1,8(a0) + 80002ae0: 01053107 fld ft2,16(a0) + 80002ae4: 01853683 ld a3,24(a0) + 80002ae8: c2001553 fcvt.w.d a0,ft0,rtz + 80002aec: 001015f3 fsflags a1,zero + 80002af0: 00100613 li a2,1 + 80002af4: 02d512e3 bne a0,a3,80003318 + 80002af8: 02c590e3 bne a1,a2,80003318 + +0000000080002afc : + 80002afc: 00300193 li gp,3 + 80002b00: 00001517 auipc a0,0x1 + 80002b04: 52050513 addi a0,a0,1312 # 80004020 + 80002b08: 00053007 fld ft0,0(a0) + 80002b0c: 00853087 fld ft1,8(a0) + 80002b10: 01053107 fld ft2,16(a0) + 80002b14: 01853683 ld a3,24(a0) + 80002b18: c2001553 fcvt.w.d a0,ft0,rtz + 80002b1c: 001015f3 fsflags a1,zero + 80002b20: 00000613 li a2,0 + 80002b24: 7ed51a63 bne a0,a3,80003318 + 80002b28: 7ec59863 bne a1,a2,80003318 + +0000000080002b2c : + 80002b2c: 00400193 li gp,4 + 80002b30: 00001517 auipc a0,0x1 + 80002b34: 51050513 addi a0,a0,1296 # 80004040 + 80002b38: 00053007 fld ft0,0(a0) + 80002b3c: 00853087 fld ft1,8(a0) + 80002b40: 01053107 fld ft2,16(a0) + 80002b44: 01853683 ld a3,24(a0) + 80002b48: c2001553 fcvt.w.d a0,ft0,rtz + 80002b4c: 001015f3 fsflags a1,zero + 80002b50: 00100613 li a2,1 + 80002b54: 7cd51263 bne a0,a3,80003318 + 80002b58: 7cc59063 bne a1,a2,80003318 + +0000000080002b5c : + 80002b5c: 00500193 li gp,5 + 80002b60: 00001517 auipc a0,0x1 + 80002b64: 50050513 addi a0,a0,1280 # 80004060 + 80002b68: 00053007 fld ft0,0(a0) + 80002b6c: 00853087 fld ft1,8(a0) + 80002b70: 01053107 fld ft2,16(a0) + 80002b74: 01853683 ld a3,24(a0) + 80002b78: c2001553 fcvt.w.d a0,ft0,rtz + 80002b7c: 001015f3 fsflags a1,zero + 80002b80: 00100613 li a2,1 + 80002b84: 78d51a63 bne a0,a3,80003318 + 80002b88: 78c59863 bne a1,a2,80003318 + +0000000080002b8c : + 80002b8c: 00600193 li gp,6 + 80002b90: 00001517 auipc a0,0x1 + 80002b94: 4f050513 addi a0,a0,1264 # 80004080 + 80002b98: 00053007 fld ft0,0(a0) + 80002b9c: 00853087 fld ft1,8(a0) + 80002ba0: 01053107 fld ft2,16(a0) + 80002ba4: 01853683 ld a3,24(a0) + 80002ba8: c2001553 fcvt.w.d a0,ft0,rtz + 80002bac: 001015f3 fsflags a1,zero + 80002bb0: 00000613 li a2,0 + 80002bb4: 76d51263 bne a0,a3,80003318 + 80002bb8: 76c59063 bne a1,a2,80003318 + +0000000080002bbc : + 80002bbc: 00700193 li gp,7 + 80002bc0: 00001517 auipc a0,0x1 + 80002bc4: 4e050513 addi a0,a0,1248 # 800040a0 + 80002bc8: 00053007 fld ft0,0(a0) + 80002bcc: 00853087 fld ft1,8(a0) + 80002bd0: 01053107 fld ft2,16(a0) + 80002bd4: 01853683 ld a3,24(a0) + 80002bd8: c2001553 fcvt.w.d a0,ft0,rtz + 80002bdc: 001015f3 fsflags a1,zero + 80002be0: 00100613 li a2,1 + 80002be4: 72d51a63 bne a0,a3,80003318 + 80002be8: 72c59863 bne a1,a2,80003318 + +0000000080002bec : + 80002bec: 00800193 li gp,8 + 80002bf0: 00001517 auipc a0,0x1 + 80002bf4: 4d050513 addi a0,a0,1232 # 800040c0 + 80002bf8: 00053007 fld ft0,0(a0) + 80002bfc: 00853087 fld ft1,8(a0) + 80002c00: 01053107 fld ft2,16(a0) + 80002c04: 01853683 ld a3,24(a0) + 80002c08: c2001553 fcvt.w.d a0,ft0,rtz + 80002c0c: 001015f3 fsflags a1,zero + 80002c10: 01000613 li a2,16 + 80002c14: 70d51263 bne a0,a3,80003318 + 80002c18: 70c59063 bne a1,a2,80003318 + +0000000080002c1c : + 80002c1c: 00900193 li gp,9 + 80002c20: 00001517 auipc a0,0x1 + 80002c24: 4c050513 addi a0,a0,1216 # 800040e0 + 80002c28: 00053007 fld ft0,0(a0) + 80002c2c: 00853087 fld ft1,8(a0) + 80002c30: 01053107 fld ft2,16(a0) + 80002c34: 01853683 ld a3,24(a0) + 80002c38: c2001553 fcvt.w.d a0,ft0,rtz + 80002c3c: 001015f3 fsflags a1,zero + 80002c40: 01000613 li a2,16 + 80002c44: 6cd51a63 bne a0,a3,80003318 + 80002c48: 6cc59863 bne a1,a2,80003318 + +0000000080002c4c : + 80002c4c: 00c00193 li gp,12 + 80002c50: 00001517 auipc a0,0x1 + 80002c54: 4b050513 addi a0,a0,1200 # 80004100 + 80002c58: 00053007 fld ft0,0(a0) + 80002c5c: 00853087 fld ft1,8(a0) + 80002c60: 01053107 fld ft2,16(a0) + 80002c64: 01853683 ld a3,24(a0) + 80002c68: c2101553 fcvt.wu.d a0,ft0,rtz + 80002c6c: 001015f3 fsflags a1,zero + 80002c70: 01000613 li a2,16 + 80002c74: 6ad51263 bne a0,a3,80003318 + 80002c78: 6ac59063 bne a1,a2,80003318 + +0000000080002c7c : + 80002c7c: 00d00193 li gp,13 + 80002c80: 00001517 auipc a0,0x1 + 80002c84: 4a050513 addi a0,a0,1184 # 80004120 + 80002c88: 00053007 fld ft0,0(a0) + 80002c8c: 00853087 fld ft1,8(a0) + 80002c90: 01053107 fld ft2,16(a0) + 80002c94: 01853683 ld a3,24(a0) + 80002c98: c2101553 fcvt.wu.d a0,ft0,rtz + 80002c9c: 001015f3 fsflags a1,zero + 80002ca0: 01000613 li a2,16 + 80002ca4: 66d51a63 bne a0,a3,80003318 + 80002ca8: 66c59863 bne a1,a2,80003318 + +0000000080002cac : + 80002cac: 00e00193 li gp,14 + 80002cb0: 00001517 auipc a0,0x1 + 80002cb4: 49050513 addi a0,a0,1168 # 80004140 + 80002cb8: 00053007 fld ft0,0(a0) + 80002cbc: 00853087 fld ft1,8(a0) + 80002cc0: 01053107 fld ft2,16(a0) + 80002cc4: 01853683 ld a3,24(a0) + 80002cc8: c2101553 fcvt.wu.d a0,ft0,rtz + 80002ccc: 001015f3 fsflags a1,zero + 80002cd0: 00100613 li a2,1 + 80002cd4: 64d51263 bne a0,a3,80003318 + 80002cd8: 64c59063 bne a1,a2,80003318 + +0000000080002cdc : + 80002cdc: 00f00193 li gp,15 + 80002ce0: 00001517 auipc a0,0x1 + 80002ce4: 48050513 addi a0,a0,1152 # 80004160 + 80002ce8: 00053007 fld ft0,0(a0) + 80002cec: 00853087 fld ft1,8(a0) + 80002cf0: 01053107 fld ft2,16(a0) + 80002cf4: 01853683 ld a3,24(a0) + 80002cf8: c2101553 fcvt.wu.d a0,ft0,rtz + 80002cfc: 001015f3 fsflags a1,zero + 80002d00: 00100613 li a2,1 + 80002d04: 60d51a63 bne a0,a3,80003318 + 80002d08: 60c59863 bne a1,a2,80003318 + +0000000080002d0c : + 80002d0c: 01000193 li gp,16 + 80002d10: 00001517 auipc a0,0x1 + 80002d14: 47050513 addi a0,a0,1136 # 80004180 + 80002d18: 00053007 fld ft0,0(a0) + 80002d1c: 00853087 fld ft1,8(a0) + 80002d20: 01053107 fld ft2,16(a0) + 80002d24: 01853683 ld a3,24(a0) + 80002d28: c2101553 fcvt.wu.d a0,ft0,rtz + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 00000613 li a2,0 + 80002d34: 5ed51263 bne a0,a3,80003318 + 80002d38: 5ec59063 bne a1,a2,80003318 + +0000000080002d3c : + 80002d3c: 01100193 li gp,17 + 80002d40: 00001517 auipc a0,0x1 + 80002d44: 46050513 addi a0,a0,1120 # 800041a0 + 80002d48: 00053007 fld ft0,0(a0) + 80002d4c: 00853087 fld ft1,8(a0) + 80002d50: 01053107 fld ft2,16(a0) + 80002d54: 01853683 ld a3,24(a0) + 80002d58: c2101553 fcvt.wu.d a0,ft0,rtz + 80002d5c: 001015f3 fsflags a1,zero + 80002d60: 00100613 li a2,1 + 80002d64: 5ad51a63 bne a0,a3,80003318 + 80002d68: 5ac59863 bne a1,a2,80003318 + +0000000080002d6c : + 80002d6c: 01200193 li gp,18 + 80002d70: 00001517 auipc a0,0x1 + 80002d74: 45050513 addi a0,a0,1104 # 800041c0 + 80002d78: 00053007 fld ft0,0(a0) + 80002d7c: 00853087 fld ft1,8(a0) + 80002d80: 01053107 fld ft2,16(a0) + 80002d84: 01853683 ld a3,24(a0) + 80002d88: c2101553 fcvt.wu.d a0,ft0,rtz + 80002d8c: 001015f3 fsflags a1,zero + 80002d90: 01000613 li a2,16 + 80002d94: 58d51263 bne a0,a3,80003318 + 80002d98: 58c59063 bne a1,a2,80003318 + +0000000080002d9c : + 80002d9c: 01300193 li gp,19 + 80002da0: 00001517 auipc a0,0x1 + 80002da4: 44050513 addi a0,a0,1088 # 800041e0 + 80002da8: 00053007 fld ft0,0(a0) + 80002dac: 00853087 fld ft1,8(a0) + 80002db0: 01053107 fld ft2,16(a0) + 80002db4: 01853683 ld a3,24(a0) + 80002db8: c2101553 fcvt.wu.d a0,ft0,rtz + 80002dbc: 001015f3 fsflags a1,zero + 80002dc0: 00000613 li a2,0 + 80002dc4: 54d51a63 bne a0,a3,80003318 + 80002dc8: 54c59863 bne a1,a2,80003318 + +0000000080002dcc : + 80002dcc: 01600193 li gp,22 + 80002dd0: 00001517 auipc a0,0x1 + 80002dd4: 43050513 addi a0,a0,1072 # 80004200 + 80002dd8: 00053007 fld ft0,0(a0) + 80002ddc: 00853087 fld ft1,8(a0) + 80002de0: 01053107 fld ft2,16(a0) + 80002de4: 01853683 ld a3,24(a0) + 80002de8: c2201553 fcvt.l.d a0,ft0,rtz + 80002dec: 001015f3 fsflags a1,zero + 80002df0: 00100613 li a2,1 + 80002df4: 52d51263 bne a0,a3,80003318 + 80002df8: 52c59063 bne a1,a2,80003318 + +0000000080002dfc : + 80002dfc: 01700193 li gp,23 + 80002e00: 00001517 auipc a0,0x1 + 80002e04: 42050513 addi a0,a0,1056 # 80004220 + 80002e08: 00053007 fld ft0,0(a0) + 80002e0c: 00853087 fld ft1,8(a0) + 80002e10: 01053107 fld ft2,16(a0) + 80002e14: 01853683 ld a3,24(a0) + 80002e18: c2201553 fcvt.l.d a0,ft0,rtz + 80002e1c: 001015f3 fsflags a1,zero + 80002e20: 00000613 li a2,0 + 80002e24: 4ed51a63 bne a0,a3,80003318 + 80002e28: 4ec59863 bne a1,a2,80003318 + +0000000080002e2c : + 80002e2c: 01800193 li gp,24 + 80002e30: 00001517 auipc a0,0x1 + 80002e34: 41050513 addi a0,a0,1040 # 80004240 + 80002e38: 00053007 fld ft0,0(a0) + 80002e3c: 00853087 fld ft1,8(a0) + 80002e40: 01053107 fld ft2,16(a0) + 80002e44: 01853683 ld a3,24(a0) + 80002e48: c2201553 fcvt.l.d a0,ft0,rtz + 80002e4c: 001015f3 fsflags a1,zero + 80002e50: 00100613 li a2,1 + 80002e54: 4cd51263 bne a0,a3,80003318 + 80002e58: 4cc59063 bne a1,a2,80003318 + +0000000080002e5c : + 80002e5c: 01900193 li gp,25 + 80002e60: 00001517 auipc a0,0x1 + 80002e64: 40050513 addi a0,a0,1024 # 80004260 + 80002e68: 00053007 fld ft0,0(a0) + 80002e6c: 00853087 fld ft1,8(a0) + 80002e70: 01053107 fld ft2,16(a0) + 80002e74: 01853683 ld a3,24(a0) + 80002e78: c2201553 fcvt.l.d a0,ft0,rtz + 80002e7c: 001015f3 fsflags a1,zero + 80002e80: 00100613 li a2,1 + 80002e84: 48d51a63 bne a0,a3,80003318 + 80002e88: 48c59863 bne a1,a2,80003318 + +0000000080002e8c : + 80002e8c: 01a00193 li gp,26 + 80002e90: 00001517 auipc a0,0x1 + 80002e94: 3f050513 addi a0,a0,1008 # 80004280 + 80002e98: 00053007 fld ft0,0(a0) + 80002e9c: 00853087 fld ft1,8(a0) + 80002ea0: 01053107 fld ft2,16(a0) + 80002ea4: 01853683 ld a3,24(a0) + 80002ea8: c2201553 fcvt.l.d a0,ft0,rtz + 80002eac: 001015f3 fsflags a1,zero + 80002eb0: 00000613 li a2,0 + 80002eb4: 46d51263 bne a0,a3,80003318 + 80002eb8: 46c59063 bne a1,a2,80003318 + +0000000080002ebc : + 80002ebc: 01b00193 li gp,27 + 80002ec0: 00001517 auipc a0,0x1 + 80002ec4: 3e050513 addi a0,a0,992 # 800042a0 + 80002ec8: 00053007 fld ft0,0(a0) + 80002ecc: 00853087 fld ft1,8(a0) + 80002ed0: 01053107 fld ft2,16(a0) + 80002ed4: 01853683 ld a3,24(a0) + 80002ed8: c2201553 fcvt.l.d a0,ft0,rtz + 80002edc: 001015f3 fsflags a1,zero + 80002ee0: 00100613 li a2,1 + 80002ee4: 42d51a63 bne a0,a3,80003318 + 80002ee8: 42c59863 bne a1,a2,80003318 + +0000000080002eec : + 80002eec: 01c00193 li gp,28 + 80002ef0: 00001517 auipc a0,0x1 + 80002ef4: 3d050513 addi a0,a0,976 # 800042c0 + 80002ef8: 00053007 fld ft0,0(a0) + 80002efc: 00853087 fld ft1,8(a0) + 80002f00: 01053107 fld ft2,16(a0) + 80002f04: 01853683 ld a3,24(a0) + 80002f08: c2201553 fcvt.l.d a0,ft0,rtz + 80002f0c: 001015f3 fsflags a1,zero + 80002f10: 00000613 li a2,0 + 80002f14: 40d51263 bne a0,a3,80003318 + 80002f18: 40c59063 bne a1,a2,80003318 + +0000000080002f1c : + 80002f1c: 01d00193 li gp,29 + 80002f20: 00001517 auipc a0,0x1 + 80002f24: 3c050513 addi a0,a0,960 # 800042e0 + 80002f28: 00053007 fld ft0,0(a0) + 80002f2c: 00853087 fld ft1,8(a0) + 80002f30: 01053107 fld ft2,16(a0) + 80002f34: 01853683 ld a3,24(a0) + 80002f38: c2201553 fcvt.l.d a0,ft0,rtz + 80002f3c: 001015f3 fsflags a1,zero + 80002f40: 00000613 li a2,0 + 80002f44: 3cd51a63 bne a0,a3,80003318 + 80002f48: 3cc59863 bne a1,a2,80003318 + +0000000080002f4c : + 80002f4c: 01400193 li gp,20 + 80002f50: 00001517 auipc a0,0x1 + 80002f54: 3b050513 addi a0,a0,944 # 80004300 + 80002f58: 00053007 fld ft0,0(a0) + 80002f5c: 00853087 fld ft1,8(a0) + 80002f60: 01053107 fld ft2,16(a0) + 80002f64: 01853683 ld a3,24(a0) + 80002f68: c2201553 fcvt.l.d a0,ft0,rtz + 80002f6c: 001015f3 fsflags a1,zero + 80002f70: 01000613 li a2,16 + 80002f74: 3ad51263 bne a0,a3,80003318 + 80002f78: 3ac59063 bne a1,a2,80003318 + +0000000080002f7c : + 80002f7c: 01500193 li gp,21 + 80002f80: 00001517 auipc a0,0x1 + 80002f84: 3a050513 addi a0,a0,928 # 80004320 + 80002f88: 00053007 fld ft0,0(a0) + 80002f8c: 00853087 fld ft1,8(a0) + 80002f90: 01053107 fld ft2,16(a0) + 80002f94: 01853683 ld a3,24(a0) + 80002f98: c2201553 fcvt.l.d a0,ft0,rtz + 80002f9c: 001015f3 fsflags a1,zero + 80002fa0: 01000613 li a2,16 + 80002fa4: 36d51a63 bne a0,a3,80003318 + 80002fa8: 36c59863 bne a1,a2,80003318 + +0000000080002fac : + 80002fac: 02000193 li gp,32 + 80002fb0: 00001517 auipc a0,0x1 + 80002fb4: 39050513 addi a0,a0,912 # 80004340 + 80002fb8: 00053007 fld ft0,0(a0) + 80002fbc: 00853087 fld ft1,8(a0) + 80002fc0: 01053107 fld ft2,16(a0) + 80002fc4: 01853683 ld a3,24(a0) + 80002fc8: c2301553 fcvt.lu.d a0,ft0,rtz + 80002fcc: 001015f3 fsflags a1,zero + 80002fd0: 01000613 li a2,16 + 80002fd4: 34d51263 bne a0,a3,80003318 + 80002fd8: 34c59063 bne a1,a2,80003318 + +0000000080002fdc : + 80002fdc: 02100193 li gp,33 + 80002fe0: 00001517 auipc a0,0x1 + 80002fe4: 38050513 addi a0,a0,896 # 80004360 + 80002fe8: 00053007 fld ft0,0(a0) + 80002fec: 00853087 fld ft1,8(a0) + 80002ff0: 01053107 fld ft2,16(a0) + 80002ff4: 01853683 ld a3,24(a0) + 80002ff8: c2301553 fcvt.lu.d a0,ft0,rtz + 80002ffc: 001015f3 fsflags a1,zero + 80003000: 01000613 li a2,16 + 80003004: 30d51a63 bne a0,a3,80003318 + 80003008: 30c59863 bne a1,a2,80003318 + +000000008000300c : + 8000300c: 02200193 li gp,34 + 80003010: 00001517 auipc a0,0x1 + 80003014: 37050513 addi a0,a0,880 # 80004380 + 80003018: 00053007 fld ft0,0(a0) + 8000301c: 00853087 fld ft1,8(a0) + 80003020: 01053107 fld ft2,16(a0) + 80003024: 01853683 ld a3,24(a0) + 80003028: c2301553 fcvt.lu.d a0,ft0,rtz + 8000302c: 001015f3 fsflags a1,zero + 80003030: 00100613 li a2,1 + 80003034: 2ed51263 bne a0,a3,80003318 + 80003038: 2ec59063 bne a1,a2,80003318 + +000000008000303c : + 8000303c: 02300193 li gp,35 + 80003040: 00001517 auipc a0,0x1 + 80003044: 36050513 addi a0,a0,864 # 800043a0 + 80003048: 00053007 fld ft0,0(a0) + 8000304c: 00853087 fld ft1,8(a0) + 80003050: 01053107 fld ft2,16(a0) + 80003054: 01853683 ld a3,24(a0) + 80003058: c2301553 fcvt.lu.d a0,ft0,rtz + 8000305c: 001015f3 fsflags a1,zero + 80003060: 00100613 li a2,1 + 80003064: 2ad51a63 bne a0,a3,80003318 + 80003068: 2ac59863 bne a1,a2,80003318 + +000000008000306c : + 8000306c: 02400193 li gp,36 + 80003070: 00001517 auipc a0,0x1 + 80003074: 35050513 addi a0,a0,848 # 800043c0 + 80003078: 00053007 fld ft0,0(a0) + 8000307c: 00853087 fld ft1,8(a0) + 80003080: 01053107 fld ft2,16(a0) + 80003084: 01853683 ld a3,24(a0) + 80003088: c2301553 fcvt.lu.d a0,ft0,rtz + 8000308c: 001015f3 fsflags a1,zero + 80003090: 00000613 li a2,0 + 80003094: 28d51263 bne a0,a3,80003318 + 80003098: 28c59063 bne a1,a2,80003318 + +000000008000309c : + 8000309c: 02500193 li gp,37 + 800030a0: 00001517 auipc a0,0x1 + 800030a4: 34050513 addi a0,a0,832 # 800043e0 + 800030a8: 00053007 fld ft0,0(a0) + 800030ac: 00853087 fld ft1,8(a0) + 800030b0: 01053107 fld ft2,16(a0) + 800030b4: 01853683 ld a3,24(a0) + 800030b8: c2301553 fcvt.lu.d a0,ft0,rtz + 800030bc: 001015f3 fsflags a1,zero + 800030c0: 00100613 li a2,1 + 800030c4: 24d51a63 bne a0,a3,80003318 + 800030c8: 24c59863 bne a1,a2,80003318 + +00000000800030cc : + 800030cc: 02600193 li gp,38 + 800030d0: 00001517 auipc a0,0x1 + 800030d4: 33050513 addi a0,a0,816 # 80004400 + 800030d8: 00053007 fld ft0,0(a0) + 800030dc: 00853087 fld ft1,8(a0) + 800030e0: 01053107 fld ft2,16(a0) + 800030e4: 01853683 ld a3,24(a0) + 800030e8: c2301553 fcvt.lu.d a0,ft0,rtz + 800030ec: 001015f3 fsflags a1,zero + 800030f0: 01000613 li a2,16 + 800030f4: 22d51263 bne a0,a3,80003318 + 800030f8: 22c59063 bne a1,a2,80003318 + +00000000800030fc : + 800030fc: 02700193 li gp,39 + 80003100: 00001517 auipc a0,0x1 + 80003104: 32050513 addi a0,a0,800 # 80004420 + 80003108: 00053007 fld ft0,0(a0) + 8000310c: 00853087 fld ft1,8(a0) + 80003110: 01053107 fld ft2,16(a0) + 80003114: 01853683 ld a3,24(a0) + 80003118: c2301553 fcvt.lu.d a0,ft0,rtz + 8000311c: 001015f3 fsflags a1,zero + 80003120: 00000613 li a2,0 + 80003124: 1ed51a63 bne a0,a3,80003318 + 80003128: 1ec59863 bne a1,a2,80003318 + +000000008000312c : + 8000312c: 00001097 auipc ra,0x1 + 80003130: 32408093 addi ra,ra,804 # 80004450 + 80003134: 0000b087 fld ft1,0(ra) + 80003138: c200f0d3 fcvt.w.d ra,ft1 + 8000313c: 80000eb7 lui t4,0x80000 + 80003140: fffe8e9b addiw t4,t4,-1 + 80003144: 02a00193 li gp,42 + 80003148: 1dd09863 bne ra,t4,80003318 + +000000008000314c : + 8000314c: 00001097 auipc ra,0x1 + 80003150: 30408093 addi ra,ra,772 # 80004450 + 80003154: 0000b087 fld ft1,0(ra) + 80003158: c220f0d3 fcvt.l.d ra,ft1 + 8000315c: fff00e9b addiw t4,zero,-1 + 80003160: 03fe9e93 slli t4,t4,0x3f + 80003164: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffff680f> + 80003168: 02b00193 li gp,43 + 8000316c: 1bd09663 bne ra,t4,80003318 + +0000000080003170 : + 80003170: 00001097 auipc ra,0x1 + 80003174: 2e008093 addi ra,ra,736 # 80004450 + 80003178: 0100b087 fld ft1,16(ra) + 8000317c: c200f0d3 fcvt.w.d ra,ft1 + 80003180: 80000eb7 lui t4,0x80000 + 80003184: 02c00193 li gp,44 + 80003188: 19d09863 bne ra,t4,80003318 + +000000008000318c : + 8000318c: 00001097 auipc ra,0x1 + 80003190: 2c408093 addi ra,ra,708 # 80004450 + 80003194: 0100b087 fld ft1,16(ra) + 80003198: c220f0d3 fcvt.l.d ra,ft1 + 8000319c: fff00e9b addiw t4,zero,-1 + 800031a0: 03fe9e93 slli t4,t4,0x3f + 800031a4: 02d00193 li gp,45 + 800031a8: 17d09863 bne ra,t4,80003318 + +00000000800031ac : + 800031ac: 00001097 auipc ra,0x1 + 800031b0: 2a408093 addi ra,ra,676 # 80004450 + 800031b4: 0080b087 fld ft1,8(ra) + 800031b8: c200f0d3 fcvt.w.d ra,ft1 + 800031bc: 80000eb7 lui t4,0x80000 + 800031c0: fffe8e9b addiw t4,t4,-1 + 800031c4: 03400193 li gp,52 + 800031c8: 15d09863 bne ra,t4,80003318 + +00000000800031cc : + 800031cc: 00001097 auipc ra,0x1 + 800031d0: 28408093 addi ra,ra,644 # 80004450 + 800031d4: 0080b087 fld ft1,8(ra) + 800031d8: c220f0d3 fcvt.l.d ra,ft1 + 800031dc: fff00e9b addiw t4,zero,-1 + 800031e0: 03fe9e93 slli t4,t4,0x3f + 800031e4: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffff680f> + 800031e8: 03500193 li gp,53 + 800031ec: 13d09663 bne ra,t4,80003318 + +00000000800031f0 : + 800031f0: 00001097 auipc ra,0x1 + 800031f4: 26008093 addi ra,ra,608 # 80004450 + 800031f8: 0180b087 fld ft1,24(ra) + 800031fc: c200f0d3 fcvt.w.d ra,ft1 + 80003200: 80000eb7 lui t4,0x80000 + 80003204: fffe8e9b addiw t4,t4,-1 + 80003208: 03600193 li gp,54 + 8000320c: 11d09663 bne ra,t4,80003318 + +0000000080003210 : + 80003210: 00001097 auipc ra,0x1 + 80003214: 24008093 addi ra,ra,576 # 80004450 + 80003218: 0180b087 fld ft1,24(ra) + 8000321c: c220f0d3 fcvt.l.d ra,ft1 + 80003220: fff00e9b addiw t4,zero,-1 + 80003224: 03fe9e93 slli t4,t4,0x3f + 80003228: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffff680f> + 8000322c: 03700193 li gp,55 + 80003230: 0fd09463 bne ra,t4,80003318 + +0000000080003234 : + 80003234: 00001097 auipc ra,0x1 + 80003238: 21c08093 addi ra,ra,540 # 80004450 + 8000323c: 0000b087 fld ft1,0(ra) + 80003240: c210f0d3 fcvt.wu.d ra,ft1 + 80003244: fff00e93 li t4,-1 + 80003248: 03e00193 li gp,62 + 8000324c: 0dd09663 bne ra,t4,80003318 + +0000000080003250 : + 80003250: 00001097 auipc ra,0x1 + 80003254: 20008093 addi ra,ra,512 # 80004450 + 80003258: 0080b087 fld ft1,8(ra) + 8000325c: c210f0d3 fcvt.wu.d ra,ft1 + 80003260: fff00e93 li t4,-1 + 80003264: 03f00193 li gp,63 + 80003268: 0bd09863 bne ra,t4,80003318 + +000000008000326c : + 8000326c: 00001097 auipc ra,0x1 + 80003270: 1e408093 addi ra,ra,484 # 80004450 + 80003274: 0100b087 fld ft1,16(ra) + 80003278: c210f0d3 fcvt.wu.d ra,ft1 + 8000327c: 00000e93 li t4,0 + 80003280: 04000193 li gp,64 + 80003284: 09d09a63 bne ra,t4,80003318 + +0000000080003288 : + 80003288: 00001097 auipc ra,0x1 + 8000328c: 1c808093 addi ra,ra,456 # 80004450 + 80003290: 0180b087 fld ft1,24(ra) + 80003294: c210f0d3 fcvt.wu.d ra,ft1 + 80003298: fff00e93 li t4,-1 + 8000329c: 04100193 li gp,65 + 800032a0: 07d09c63 bne ra,t4,80003318 + +00000000800032a4 : + 800032a4: 00001097 auipc ra,0x1 + 800032a8: 1ac08093 addi ra,ra,428 # 80004450 + 800032ac: 0000b087 fld ft1,0(ra) + 800032b0: c230f0d3 fcvt.lu.d ra,ft1 + 800032b4: fff00e93 li t4,-1 + 800032b8: 04200193 li gp,66 + 800032bc: 05d09e63 bne ra,t4,80003318 + +00000000800032c0 : + 800032c0: 00001097 auipc ra,0x1 + 800032c4: 19008093 addi ra,ra,400 # 80004450 + 800032c8: 0080b087 fld ft1,8(ra) + 800032cc: c230f0d3 fcvt.lu.d ra,ft1 + 800032d0: fff00e93 li t4,-1 + 800032d4: 04300193 li gp,67 + 800032d8: 05d09063 bne ra,t4,80003318 + +00000000800032dc : + 800032dc: 00001097 auipc ra,0x1 + 800032e0: 17408093 addi ra,ra,372 # 80004450 + 800032e4: 0100b087 fld ft1,16(ra) + 800032e8: c230f0d3 fcvt.lu.d ra,ft1 + 800032ec: 00000e93 li t4,0 + 800032f0: 04400193 li gp,68 + 800032f4: 03d09263 bne ra,t4,80003318 + +00000000800032f8 : + 800032f8: 00001097 auipc ra,0x1 + 800032fc: 15808093 addi ra,ra,344 # 80004450 + 80003300: 0180b087 fld ft1,24(ra) + 80003304: c230f0d3 fcvt.lu.d ra,ft1 + 80003308: fff00e93 li t4,-1 + 8000330c: 04500193 li gp,69 + 80003310: 01d09463 bne ra,t4,80003318 + 80003314: 00301a63 bne zero,gp,80003328 + +0000000080003318 : + 80003318: 00119513 slli a0,gp,0x1 + 8000331c: 00050063 beqz a0,8000331c + 80003320: 00156513 ori a0,a0,1 + 80003324: 00000073 ecall + +0000000080003328 : + 80003328: 00100513 li a0,1 + 8000332c: 00000073 ecall + 80003330: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: 999a add s3,s3,t1 + 80004002: 9999 andi a1,a1,-26 + 80004004: 9999 andi a1,a1,-26 + 80004006: bff1 j 80003fe2 + 80004008: 0000 unimp + 8000400a: 0000 unimp + 8000400c: 0000 unimp + 8000400e: 0000 unimp + 80004010: 0000 unimp + 80004012: 0000 unimp + 80004014: 0000 unimp + 80004016: 0000 unimp + 80004018: ffff 0xffff + 8000401a: ffff 0xffff + 8000401c: ffff 0xffff + 8000401e: ffff 0xffff + +0000000080004020 : + 80004020: 0000 unimp + 80004022: 0000 unimp + 80004024: 0000 unimp + 80004026: bff0 fsd fa2,248(a5) + 80004028: 0000 unimp + 8000402a: 0000 unimp + 8000402c: 0000 unimp + 8000402e: 0000 unimp + 80004030: 0000 unimp + 80004032: 0000 unimp + 80004034: 0000 unimp + 80004036: 0000 unimp + 80004038: ffff 0xffff + 8000403a: ffff 0xffff + 8000403c: ffff 0xffff + 8000403e: ffff 0xffff + +0000000080004040 : + 80004040: cccd beqz s1,800040fa + 80004042: cccc sw a1,28(s1) + 80004044: cccc sw a1,28(s1) + 80004046: bfec fsd fa1,248(a5) + 80004048: 0000 unimp + 8000404a: 0000 unimp + 8000404c: 0000 unimp + 8000404e: 0000 unimp + 80004050: 0000 unimp + 80004052: 0000 unimp + 80004054: 0000 unimp + 80004056: 0000 unimp + 80004058: 0000 unimp + 8000405a: 0000 unimp + 8000405c: 0000 unimp + 8000405e: 0000 unimp + +0000000080004060 : + 80004060: cccd beqz s1,8000411a + 80004062: cccc sw a1,28(s1) + 80004064: cccc sw a1,28(s1) + 80004066: 3fec fld fa1,248(a5) + 80004068: 0000 unimp + 8000406a: 0000 unimp + 8000406c: 0000 unimp + 8000406e: 0000 unimp + 80004070: 0000 unimp + 80004072: 0000 unimp + 80004074: 0000 unimp + 80004076: 0000 unimp + 80004078: 0000 unimp + 8000407a: 0000 unimp + 8000407c: 0000 unimp + 8000407e: 0000 unimp + +0000000080004080 : + 80004080: 0000 unimp + 80004082: 0000 unimp + 80004084: 0000 unimp + 80004086: 3ff0 fld fa2,248(a5) + 80004088: 0000 unimp + 8000408a: 0000 unimp + 8000408c: 0000 unimp + 8000408e: 0000 unimp + 80004090: 0000 unimp + 80004092: 0000 unimp + 80004094: 0000 unimp + 80004096: 0000 unimp + 80004098: 0001 nop + 8000409a: 0000 unimp + 8000409c: 0000 unimp + 8000409e: 0000 unimp + +00000000800040a0 : + 800040a0: 999a add s3,s3,t1 + 800040a2: 9999 andi a1,a1,-26 + 800040a4: 9999 andi a1,a1,-26 + 800040a6: 3ff1 addiw t6,t6,-4 + 800040a8: 0000 unimp + 800040aa: 0000 unimp + 800040ac: 0000 unimp + 800040ae: 0000 unimp + 800040b0: 0000 unimp + 800040b2: 0000 unimp + 800040b4: 0000 unimp + 800040b6: 0000 unimp + 800040b8: 0001 nop + 800040ba: 0000 unimp + 800040bc: 0000 unimp + 800040be: 0000 unimp + +00000000800040c0 : + 800040c0: 0000 unimp + 800040c2: c000 sw s0,0(s0) + 800040c4: c1e65a0b 0xc1e65a0b + 800040c8: 0000 unimp + 800040ca: 0000 unimp + 800040cc: 0000 unimp + 800040ce: 0000 unimp + 800040d0: 0000 unimp + 800040d2: 0000 unimp + 800040d4: 0000 unimp + 800040d6: 0000 unimp + 800040d8: 0000 unimp + 800040da: 8000 0x8000 + 800040dc: ffff 0xffff + 800040de: ffff 0xffff + +00000000800040e0 : + 800040e0: 0000 unimp + 800040e2: c000 sw s0,0(s0) + 800040e4: 41e65a0b 0x41e65a0b + 800040e8: 0000 unimp + 800040ea: 0000 unimp + 800040ec: 0000 unimp + 800040ee: 0000 unimp + 800040f0: 0000 unimp + 800040f2: 0000 unimp + 800040f4: 0000 unimp + 800040f6: 0000 unimp + 800040f8: ffff 0xffff + 800040fa: 7fff 0x7fff + 800040fc: 0000 unimp + 800040fe: 0000 unimp + +0000000080004100 : + 80004100: 0000 unimp + 80004102: 0000 unimp + 80004104: 0000 unimp + 80004106: c008 sw a0,0(s0) + 80004108: 0000 unimp + 8000410a: 0000 unimp + 8000410c: 0000 unimp + 8000410e: 0000 unimp + 80004110: 0000 unimp + 80004112: 0000 unimp + 80004114: 0000 unimp + 80004116: 0000 unimp + 80004118: 0000 unimp + 8000411a: 0000 unimp + 8000411c: 0000 unimp + 8000411e: 0000 unimp + +0000000080004120 : + 80004120: 0000 unimp + 80004122: 0000 unimp + 80004124: 0000 unimp + 80004126: bff0 fsd fa2,248(a5) + 80004128: 0000 unimp + 8000412a: 0000 unimp + 8000412c: 0000 unimp + 8000412e: 0000 unimp + 80004130: 0000 unimp + 80004132: 0000 unimp + 80004134: 0000 unimp + 80004136: 0000 unimp + 80004138: 0000 unimp + 8000413a: 0000 unimp + 8000413c: 0000 unimp + 8000413e: 0000 unimp + +0000000080004140 : + 80004140: cccd beqz s1,800041fa + 80004142: cccc sw a1,28(s1) + 80004144: cccc sw a1,28(s1) + 80004146: bfec fsd fa1,248(a5) + 80004148: 0000 unimp + 8000414a: 0000 unimp + 8000414c: 0000 unimp + 8000414e: 0000 unimp + 80004150: 0000 unimp + 80004152: 0000 unimp + 80004154: 0000 unimp + 80004156: 0000 unimp + 80004158: 0000 unimp + 8000415a: 0000 unimp + 8000415c: 0000 unimp + 8000415e: 0000 unimp + +0000000080004160 : + 80004160: cccd beqz s1,8000421a + 80004162: cccc sw a1,28(s1) + 80004164: cccc sw a1,28(s1) + 80004166: 3fec fld fa1,248(a5) + 80004168: 0000 unimp + 8000416a: 0000 unimp + 8000416c: 0000 unimp + 8000416e: 0000 unimp + 80004170: 0000 unimp + 80004172: 0000 unimp + 80004174: 0000 unimp + 80004176: 0000 unimp + 80004178: 0000 unimp + 8000417a: 0000 unimp + 8000417c: 0000 unimp + 8000417e: 0000 unimp + +0000000080004180 : + 80004180: 0000 unimp + 80004182: 0000 unimp + 80004184: 0000 unimp + 80004186: 3ff0 fld fa2,248(a5) + 80004188: 0000 unimp + 8000418a: 0000 unimp + 8000418c: 0000 unimp + 8000418e: 0000 unimp + 80004190: 0000 unimp + 80004192: 0000 unimp + 80004194: 0000 unimp + 80004196: 0000 unimp + 80004198: 0001 nop + 8000419a: 0000 unimp + 8000419c: 0000 unimp + 8000419e: 0000 unimp + +00000000800041a0 : + 800041a0: 999a add s3,s3,t1 + 800041a2: 9999 andi a1,a1,-26 + 800041a4: 9999 andi a1,a1,-26 + 800041a6: 3ff1 addiw t6,t6,-4 + 800041a8: 0000 unimp + 800041aa: 0000 unimp + 800041ac: 0000 unimp + 800041ae: 0000 unimp + 800041b0: 0000 unimp + 800041b2: 0000 unimp + 800041b4: 0000 unimp + 800041b6: 0000 unimp + 800041b8: 0001 nop + 800041ba: 0000 unimp + 800041bc: 0000 unimp + 800041be: 0000 unimp + +00000000800041c0 : + 800041c0: 0000 unimp + 800041c2: c000 sw s0,0(s0) + 800041c4: c1e65a0b 0xc1e65a0b + 800041c8: 0000 unimp + 800041ca: 0000 unimp + 800041cc: 0000 unimp + 800041ce: 0000 unimp + 800041d0: 0000 unimp + 800041d2: 0000 unimp + 800041d4: 0000 unimp + 800041d6: 0000 unimp + 800041d8: 0000 unimp + 800041da: 0000 unimp + 800041dc: 0000 unimp + 800041de: 0000 unimp + +00000000800041e0 : + 800041e0: 0000 unimp + 800041e2: c000 sw s0,0(s0) + 800041e4: 41e65a0b 0x41e65a0b + 800041e8: 0000 unimp + 800041ea: 0000 unimp + 800041ec: 0000 unimp + 800041ee: 0000 unimp + 800041f0: 0000 unimp + 800041f2: 0000 unimp + 800041f4: 0000 unimp + 800041f6: 0000 unimp + 800041f8: 5e00 lw s0,56(a2) + 800041fa: b2d0 fsd fa2,160(a3) + 800041fc: ffff 0xffff + 800041fe: ffff 0xffff + +0000000080004200 : + 80004200: 999a add s3,s3,t1 + 80004202: 9999 andi a1,a1,-26 + 80004204: 9999 andi a1,a1,-26 + 80004206: bff1 j 800041e2 + 80004208: 0000 unimp + 8000420a: 0000 unimp + 8000420c: 0000 unimp + 8000420e: 0000 unimp + 80004210: 0000 unimp + 80004212: 0000 unimp + 80004214: 0000 unimp + 80004216: 0000 unimp + 80004218: ffff 0xffff + 8000421a: ffff 0xffff + 8000421c: ffff 0xffff + 8000421e: ffff 0xffff + +0000000080004220 : + 80004220: 0000 unimp + 80004222: 0000 unimp + 80004224: 0000 unimp + 80004226: bff0 fsd fa2,248(a5) + 80004228: 0000 unimp + 8000422a: 0000 unimp + 8000422c: 0000 unimp + 8000422e: 0000 unimp + 80004230: 0000 unimp + 80004232: 0000 unimp + 80004234: 0000 unimp + 80004236: 0000 unimp + 80004238: ffff 0xffff + 8000423a: ffff 0xffff + 8000423c: ffff 0xffff + 8000423e: ffff 0xffff + +0000000080004240 : + 80004240: cccd beqz s1,800042fa + 80004242: cccc sw a1,28(s1) + 80004244: cccc sw a1,28(s1) + 80004246: bfec fsd fa1,248(a5) + 80004248: 0000 unimp + 8000424a: 0000 unimp + 8000424c: 0000 unimp + 8000424e: 0000 unimp + 80004250: 0000 unimp + 80004252: 0000 unimp + 80004254: 0000 unimp + 80004256: 0000 unimp + 80004258: 0000 unimp + 8000425a: 0000 unimp + 8000425c: 0000 unimp + 8000425e: 0000 unimp + +0000000080004260 : + 80004260: cccd beqz s1,8000431a + 80004262: cccc sw a1,28(s1) + 80004264: cccc sw a1,28(s1) + 80004266: 3fec fld fa1,248(a5) + 80004268: 0000 unimp + 8000426a: 0000 unimp + 8000426c: 0000 unimp + 8000426e: 0000 unimp + 80004270: 0000 unimp + 80004272: 0000 unimp + 80004274: 0000 unimp + 80004276: 0000 unimp + 80004278: 0000 unimp + 8000427a: 0000 unimp + 8000427c: 0000 unimp + 8000427e: 0000 unimp + +0000000080004280 : + 80004280: 0000 unimp + 80004282: 0000 unimp + 80004284: 0000 unimp + 80004286: 3ff0 fld fa2,248(a5) + 80004288: 0000 unimp + 8000428a: 0000 unimp + 8000428c: 0000 unimp + 8000428e: 0000 unimp + 80004290: 0000 unimp + 80004292: 0000 unimp + 80004294: 0000 unimp + 80004296: 0000 unimp + 80004298: 0001 nop + 8000429a: 0000 unimp + 8000429c: 0000 unimp + 8000429e: 0000 unimp + +00000000800042a0 : + 800042a0: 999a add s3,s3,t1 + 800042a2: 9999 andi a1,a1,-26 + 800042a4: 9999 andi a1,a1,-26 + 800042a6: 3ff1 addiw t6,t6,-4 + 800042a8: 0000 unimp + 800042aa: 0000 unimp + 800042ac: 0000 unimp + 800042ae: 0000 unimp + 800042b0: 0000 unimp + 800042b2: 0000 unimp + 800042b4: 0000 unimp + 800042b6: 0000 unimp + 800042b8: 0001 nop + 800042ba: 0000 unimp + 800042bc: 0000 unimp + 800042be: 0000 unimp + +00000000800042c0 : + 800042c0: 0000 unimp + 800042c2: c000 sw s0,0(s0) + 800042c4: c1e65a0b 0xc1e65a0b + 800042c8: 0000 unimp + 800042ca: 0000 unimp + 800042cc: 0000 unimp + 800042ce: 0000 unimp + 800042d0: 0000 unimp + 800042d2: 0000 unimp + 800042d4: 0000 unimp + 800042d6: 0000 unimp + 800042d8: a200 fsd fs0,0(a2) + 800042da: ffff4d2f 0xffff4d2f + 800042de: ffff 0xffff + +00000000800042e0 : + 800042e0: 0000 unimp + 800042e2: c000 sw s0,0(s0) + 800042e4: 41e65a0b 0x41e65a0b + 800042e8: 0000 unimp + 800042ea: 0000 unimp + 800042ec: 0000 unimp + 800042ee: 0000 unimp + 800042f0: 0000 unimp + 800042f2: 0000 unimp + 800042f4: 0000 unimp + 800042f6: 0000 unimp + 800042f8: 5e00 lw s0,56(a2) + 800042fa: b2d0 fsd fa2,160(a3) + 800042fc: 0000 unimp + 800042fe: 0000 unimp + +0000000080004300 : + 80004300: db80 sw s0,48(a5) + 80004302: 90d9 srli s1,s1,0x36 + 80004304: 0556 slli a0,a0,0x15 + 80004306: c3fa sw t5,196(sp) + 80004308: 0000 unimp + 8000430a: 0000 unimp + 8000430c: 0000 unimp + 8000430e: 0000 unimp + 80004310: 0000 unimp + 80004312: 0000 unimp + 80004314: 0000 unimp + 80004316: 0000 unimp + 80004318: 0000 unimp + 8000431a: 0000 unimp + 8000431c: 0000 unimp + 8000431e: 8000 0x8000 + +0000000080004320 : + 80004320: db80 sw s0,48(a5) + 80004322: 90d9 srli s1,s1,0x36 + 80004324: 0556 slli a0,a0,0x15 + 80004326: 43fa lw t2,156(sp) + 80004328: 0000 unimp + 8000432a: 0000 unimp + 8000432c: 0000 unimp + 8000432e: 0000 unimp + 80004330: 0000 unimp + 80004332: 0000 unimp + 80004334: 0000 unimp + 80004336: 0000 unimp + 80004338: ffff 0xffff + 8000433a: ffff 0xffff + 8000433c: ffff 0xffff + 8000433e: 7fff 0x7fff + +0000000080004340 : + 80004340: 0000 unimp + 80004342: 0000 unimp + 80004344: 0000 unimp + 80004346: c008 sw a0,0(s0) + 80004348: 0000 unimp + 8000434a: 0000 unimp + 8000434c: 0000 unimp + 8000434e: 0000 unimp + 80004350: 0000 unimp + 80004352: 0000 unimp + 80004354: 0000 unimp + 80004356: 0000 unimp + 80004358: 0000 unimp + 8000435a: 0000 unimp + 8000435c: 0000 unimp + 8000435e: 0000 unimp + +0000000080004360 : + 80004360: 0000 unimp + 80004362: 0000 unimp + 80004364: 0000 unimp + 80004366: bff0 fsd fa2,248(a5) + 80004368: 0000 unimp + 8000436a: 0000 unimp + 8000436c: 0000 unimp + 8000436e: 0000 unimp + 80004370: 0000 unimp + 80004372: 0000 unimp + 80004374: 0000 unimp + 80004376: 0000 unimp + 80004378: 0000 unimp + 8000437a: 0000 unimp + 8000437c: 0000 unimp + 8000437e: 0000 unimp + +0000000080004380 : + 80004380: cccd beqz s1,8000443a + 80004382: cccc sw a1,28(s1) + 80004384: cccc sw a1,28(s1) + 80004386: bfec fsd fa1,248(a5) + 80004388: 0000 unimp + 8000438a: 0000 unimp + 8000438c: 0000 unimp + 8000438e: 0000 unimp + 80004390: 0000 unimp + 80004392: 0000 unimp + 80004394: 0000 unimp + 80004396: 0000 unimp + 80004398: 0000 unimp + 8000439a: 0000 unimp + 8000439c: 0000 unimp + 8000439e: 0000 unimp + +00000000800043a0 : + 800043a0: cccd beqz s1,8000445a + 800043a2: cccc sw a1,28(s1) + 800043a4: cccc sw a1,28(s1) + 800043a6: 3fec fld fa1,248(a5) + 800043a8: 0000 unimp + 800043aa: 0000 unimp + 800043ac: 0000 unimp + 800043ae: 0000 unimp + 800043b0: 0000 unimp + 800043b2: 0000 unimp + 800043b4: 0000 unimp + 800043b6: 0000 unimp + 800043b8: 0000 unimp + 800043ba: 0000 unimp + 800043bc: 0000 unimp + 800043be: 0000 unimp + +00000000800043c0 : + 800043c0: 0000 unimp + 800043c2: 0000 unimp + 800043c4: 0000 unimp + 800043c6: 3ff0 fld fa2,248(a5) + 800043c8: 0000 unimp + 800043ca: 0000 unimp + 800043cc: 0000 unimp + 800043ce: 0000 unimp + 800043d0: 0000 unimp + 800043d2: 0000 unimp + 800043d4: 0000 unimp + 800043d6: 0000 unimp + 800043d8: 0001 nop + 800043da: 0000 unimp + 800043dc: 0000 unimp + 800043de: 0000 unimp + +00000000800043e0 : + 800043e0: 999a add s3,s3,t1 + 800043e2: 9999 andi a1,a1,-26 + 800043e4: 9999 andi a1,a1,-26 + 800043e6: 3ff1 addiw t6,t6,-4 + 800043e8: 0000 unimp + 800043ea: 0000 unimp + 800043ec: 0000 unimp + 800043ee: 0000 unimp + 800043f0: 0000 unimp + 800043f2: 0000 unimp + 800043f4: 0000 unimp + 800043f6: 0000 unimp + 800043f8: 0001 nop + 800043fa: 0000 unimp + 800043fc: 0000 unimp + 800043fe: 0000 unimp + +0000000080004400 : + 80004400: 0000 unimp + 80004402: c000 sw s0,0(s0) + 80004404: c1e65a0b 0xc1e65a0b + 80004408: 0000 unimp + 8000440a: 0000 unimp + 8000440c: 0000 unimp + 8000440e: 0000 unimp + 80004410: 0000 unimp + 80004412: 0000 unimp + 80004414: 0000 unimp + 80004416: 0000 unimp + 80004418: 0000 unimp + 8000441a: 0000 unimp + 8000441c: 0000 unimp + 8000441e: 0000 unimp + +0000000080004420 : + 80004420: 0000 unimp + 80004422: c000 sw s0,0(s0) + 80004424: 41e65a0b 0x41e65a0b + 80004428: 0000 unimp + 8000442a: 0000 unimp + 8000442c: 0000 unimp + 8000442e: 0000 unimp + 80004430: 0000 unimp + 80004432: 0000 unimp + 80004434: 0000 unimp + 80004436: 0000 unimp + 80004438: 5e00 lw s0,56(a2) + 8000443a: b2d0 fsd fa2,160(a3) + 8000443c: 0000 unimp + 8000443e: 0000 unimp + +0000000080004440 : + 80004440: ffff 0xffff + 80004442: ffff 0xffff + 80004444: ffff 0xffff + 80004446: 7fff 0x7fff + 80004448: 0000 unimp + 8000444a: ff80 sd s0,56(a5) + 8000444c: 0000 unimp + 8000444e: 7f80 ld s0,56(a5) + +0000000080004450 : + 80004450: ffff 0xffff + 80004452: ffff 0xffff + 80004454: ffff 0xffff + 80004456: ffff 0xffff + 80004458: ffff 0xffff + 8000445a: ffff 0xffff + 8000445c: ffff 0xffff + 8000445e: 7fff 0x7fff + 80004460: 0000 unimp + 80004462: 0000 unimp + 80004464: 0000 unimp + 80004466: fff0 sd a2,248(a5) + 80004468: 0000 unimp + 8000446a: 0000 unimp + 8000446c: 0000 unimp + 8000446e: 7ff0 ld a2,248(a5) diff --git a/Tests/isa/rv64ud-v-fdiv b/Tests/isa/rv64ud-v-fdiv new file mode 100644 index 0000000..0d41914 Binary files /dev/null and b/Tests/isa/rv64ud-v-fdiv differ diff --git a/Tests/isa/rv64ud-v-fdiv.dump b/Tests/isa/rv64ud-v-fdiv.dump new file mode 100644 index 0000000..31d61f3 --- /dev/null +++ b/Tests/isa/rv64ud-v-fdiv.dump @@ -0,0 +1,1096 @@ + +rv64ud-v-fdiv: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 83868693 addi a3,a3,-1992 # 80002c90 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 86c60613 addi a2,a2,-1940 # 80002d20 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 83460613 addi a2,a2,-1996 # 80002d38 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 78468693 addi a3,a3,1924 # 80002cd8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 7a068693 addi a3,a3,1952 # 80002e10 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 72060613 addi a2,a2,1824 # 80002de8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 65468693 addi a3,a3,1620 # 80002e40 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 57468693 addi a3,a3,1396 # 80002db0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 50468693 addi a3,a3,1284 # 80002d78 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03c00793 li a5,60 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0f8327b7 lui a5,0xf832 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: e2178793 addi a5,a5,-479 # f831e21 <_start-0x707ce1df> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00053007 fld ft0,0(a0) + 80002adc: 00853087 fld ft1,8(a0) + 80002ae0: 01053107 fld ft2,16(a0) + 80002ae4: 01853683 ld a3,24(a0) + 80002ae8: 1a1071d3 fdiv.d ft3,ft0,ft1 + 80002aec: e2018553 fmv.x.d a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00100613 li a2,1 + 80002af8: 16d51c63 bne a0,a3,80002c70 + 80002afc: 16c59a63 bne a1,a2,80002c70 + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00000517 auipc a0,0x0 + 80002b08: 51c50513 addi a0,a0,1308 # 80003020 + 80002b0c: 00053007 fld ft0,0(a0) + 80002b10: 00853087 fld ft1,8(a0) + 80002b14: 01053107 fld ft2,16(a0) + 80002b18: 01853683 ld a3,24(a0) + 80002b1c: 1a1071d3 fdiv.d ft3,ft0,ft1 + 80002b20: e2018553 fmv.x.d a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00100613 li a2,1 + 80002b2c: 14d51263 bne a0,a3,80002c70 + 80002b30: 14c59063 bne a1,a2,80002c70 + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00000517 auipc a0,0x0 + 80002b3c: 50850513 addi a0,a0,1288 # 80003040 + 80002b40: 00053007 fld ft0,0(a0) + 80002b44: 00853087 fld ft1,8(a0) + 80002b48: 01053107 fld ft2,16(a0) + 80002b4c: 01853683 ld a3,24(a0) + 80002b50: 1a1071d3 fdiv.d ft3,ft0,ft1 + 80002b54: e2018553 fmv.x.d a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00000613 li a2,0 + 80002b60: 10d51863 bne a0,a3,80002c70 + 80002b64: 10c59663 bne a1,a2,80002c70 + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00000517 auipc a0,0x0 + 80002b70: 4f450513 addi a0,a0,1268 # 80003060 + 80002b74: 00053007 fld ft0,0(a0) + 80002b78: 00853087 fld ft1,8(a0) + 80002b7c: 01053107 fld ft2,16(a0) + 80002b80: 01853683 ld a3,24(a0) + 80002b84: 5a0071d3 fsqrt.d ft3,ft0 + 80002b88: e2018553 fmv.x.d a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00100613 li a2,1 + 80002b94: 0cd51e63 bne a0,a3,80002c70 + 80002b98: 0cc59c63 bne a1,a2,80002c70 + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00000517 auipc a0,0x0 + 80002ba4: 4e050513 addi a0,a0,1248 # 80003080 + 80002ba8: 00053007 fld ft0,0(a0) + 80002bac: 00853087 fld ft1,8(a0) + 80002bb0: 01053107 fld ft2,16(a0) + 80002bb4: 01853683 ld a3,24(a0) + 80002bb8: 5a0071d3 fsqrt.d ft3,ft0 + 80002bbc: e2018553 fmv.x.d a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00000613 li a2,0 + 80002bc8: 0ad51463 bne a0,a3,80002c70 + 80002bcc: 0ac59263 bne a1,a2,80002c70 + +0000000080002bd0 : + 80002bd0: 01000193 li gp,16 + 80002bd4: 00000517 auipc a0,0x0 + 80002bd8: 4cc50513 addi a0,a0,1228 # 800030a0 + 80002bdc: 00053007 fld ft0,0(a0) + 80002be0: 00853087 fld ft1,8(a0) + 80002be4: 01053107 fld ft2,16(a0) + 80002be8: 01853683 ld a3,24(a0) + 80002bec: 5a0071d3 fsqrt.d ft3,ft0 + 80002bf0: e2018553 fmv.x.d a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 01000613 li a2,16 + 80002bfc: 06d51a63 bne a0,a3,80002c70 + 80002c00: 06c59863 bne a1,a2,80002c70 + +0000000080002c04 : + 80002c04: 00700193 li gp,7 + 80002c08: 00000517 auipc a0,0x0 + 80002c0c: 4b850513 addi a0,a0,1208 # 800030c0 + 80002c10: 00053007 fld ft0,0(a0) + 80002c14: 00853087 fld ft1,8(a0) + 80002c18: 01053107 fld ft2,16(a0) + 80002c1c: 01853683 ld a3,24(a0) + 80002c20: 5a0071d3 fsqrt.d ft3,ft0 + 80002c24: e2018553 fmv.x.d a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00100613 li a2,1 + 80002c30: 04d51063 bne a0,a3,80002c70 + 80002c34: 02c59e63 bne a1,a2,80002c70 + +0000000080002c38 : + 80002c38: 00800193 li gp,8 + 80002c3c: 00000517 auipc a0,0x0 + 80002c40: 4a450513 addi a0,a0,1188 # 800030e0 + 80002c44: 00053007 fld ft0,0(a0) + 80002c48: 00853087 fld ft1,8(a0) + 80002c4c: 01053107 fld ft2,16(a0) + 80002c50: 01853683 ld a3,24(a0) + 80002c54: 5a0071d3 fsqrt.d ft3,ft0 + 80002c58: e2018553 fmv.x.d a0,ft3 + 80002c5c: 001015f3 fsflags a1,zero + 80002c60: 00100613 li a2,1 + 80002c64: 00d51663 bne a0,a3,80002c70 + 80002c68: 00c59463 bne a1,a2,80002c70 + 80002c6c: 00301a63 bne zero,gp,80002c80 + +0000000080002c70 : + 80002c70: 00119513 slli a0,gp,0x1 + 80002c74: 00050063 beqz a0,80002c74 + 80002c78: 00156513 ori a0,a0,1 + 80002c7c: 00000073 ecall + +0000000080002c80 : + 80002c80: 00100513 li a0,1 + 80002c84: 00000073 ecall + 80002c88: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: d4f1 beqz s1,80002fcc + 80003002: 53c8 lw a0,36(a5) + 80003004: 400921fb 0x400921fb + 80003008: b0dd j 800028ee + 8000300a: 89f1 andi a1,a1,28 + 8000300c: bf0a fsd ft2,440(sp) + 8000300e: 4005 c.li zero,1 + 80003010: 0000 unimp + 80003012: 0000 unimp + 80003014: 0000 unimp + 80003016: 0000 unimp + 80003018: 83ec 0x83ec + 8000301a: 7ddbf6c3 0x7ddbf6c3 + 8000301e: 3ff2 fld ft11,312(sp) + +0000000080003020 : + 80003020: 0000 unimp + 80003022: 0000 unimp + 80003024: 4800 lw s0,16(s0) + 80003026: 6666c093 xori ra,a3,1638 + 8000302a: 6666 ld a2,88(sp) + 8000302c: 4c66 lw s8,88(sp) + 8000302e: 00004093 xori ra,zero,0 + 80003032: 0000 unimp + 80003034: 0000 unimp + 80003036: 0000 unimp + 80003038: 29a5 addiw s3,s3,9 + 8000303a: 3e19 addiw t3,t3,-26 + 8000303c: f8b4 sd a3,112(s1) + 8000303e: jal t6,7ff1ed8c <_start-0xe1274> + +0000000080003040 : + 80003040: d4f1 beqz s1,8000300c + 80003042: 53c8 lw a0,36(a5) + 80003044: 400921fb 0x400921fb + 80003048: 0000 unimp + 8000304a: 0000 unimp + 8000304c: 0000 unimp + 8000304e: 3ff0 fld fa2,248(a5) + 80003050: 0000 unimp + 80003052: 0000 unimp + 80003054: 0000 unimp + 80003056: 0000 unimp + 80003058: d4f1 beqz s1,80003024 + 8000305a: 53c8 lw a0,36(a5) + 8000305c: 400921fb 0x400921fb + +0000000080003060 : + 80003060: d4f1 beqz s1,8000302c + 80003062: 53c8 lw a0,36(a5) + 80003064: 400921fb 0x400921fb + 80003068: 0000 unimp + 8000306a: 0000 unimp + 8000306c: 0000 unimp + 8000306e: 0000 unimp + 80003070: 0000 unimp + 80003072: 0000 unimp + 80003074: 0000 unimp + 80003076: 0000 unimp + 80003078: 916f587b 0x916f587b + 8000307c: 5bf8 lw a4,116(a5) + 8000307e: 3ffc fld fa5,248(a5) + +0000000080003080 : + 80003080: 0000 unimp + 80003082: 0000 unimp + 80003084: 8800 0x8800 + 80003086: 000040c3 fmadd.s ft1,ft0,ft0,ft0,rmm + 8000308a: 0000 unimp + 8000308c: 0000 unimp + 8000308e: 0000 unimp + 80003090: 0000 unimp + 80003092: 0000 unimp + 80003094: 0000 unimp + 80003096: 0000 unimp + 80003098: 0000 unimp + 8000309a: 0000 unimp + 8000309c: 0000 unimp + 8000309e: 4059 c.li zero,22 + +00000000800030a0 : + 800030a0: 0000 unimp + 800030a2: 0000 unimp + 800030a4: 0000 unimp + 800030a6: bff0 fsd fa2,248(a5) + 800030a8: 0000 unimp + 800030aa: 0000 unimp + 800030ac: 0000 unimp + 800030ae: 0000 unimp + 800030b0: 0000 unimp + 800030b2: 0000 unimp + 800030b4: 0000 unimp + 800030b6: 0000 unimp + 800030b8: 0000 unimp + 800030ba: 0000 unimp + 800030bc: 0000 unimp + 800030be: 7ff8 ld a4,248(a5) + +00000000800030c0 : + 800030c0: 0000 unimp + 800030c2: 0000 unimp + 800030c4: 6000 ld s0,0(s0) + 800030c6: 4065 c.li zero,25 + 800030c8: 0000 unimp + 800030ca: 0000 unimp + 800030cc: 0000 unimp + 800030ce: 0000 unimp + 800030d0: 0000 unimp + 800030d2: 0000 unimp + 800030d4: 0000 unimp + 800030d6: 0000 unimp + 800030d8: 74f5 lui s1,0xffffd + 800030da: ce96 sw t0,92(sp) + 800030dc: 2744 fld fs1,136(a4) + 800030de: 402a 0x402a + +00000000800030e0 : + 800030e0: a105 j 80003500 + 800030e2: c70a sw sp,140(sp) + 800030e4: 94df 3e85 0000 0x3e8594df + 800030ea: 0000 unimp + 800030ec: 0000 unimp + 800030ee: 0000 unimp + 800030f0: 0000 unimp + 800030f2: 0000 unimp + 800030f4: 0000 unimp + 800030f6: 0000 unimp + 800030f8: 7f99 lui t6,0xfffe6 + 800030fa: 4789c0e3 blt s3,s8,80003d5a + 800030fe: 3f3a fld ft10,424(sp) diff --git a/Tests/isa/rv64ud-v-fmadd b/Tests/isa/rv64ud-v-fmadd new file mode 100644 index 0000000..94ec16d Binary files /dev/null and b/Tests/isa/rv64ud-v-fmadd differ diff --git a/Tests/isa/rv64ud-v-fmadd.dump b/Tests/isa/rv64ud-v-fmadd.dump new file mode 100644 index 0000000..01112ef --- /dev/null +++ b/Tests/isa/rv64ud-v-fmadd.dump @@ -0,0 +1,1236 @@ + +rv64ud-v-fmadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 90868693 addi a3,a3,-1784 # 80002d60 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 93c60613 addi a2,a2,-1732 # 80002df0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 90460613 addi a2,a2,-1788 # 80002e08 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 85468693 addi a3,a3,-1964 # 80002da8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 87068693 addi a3,a3,-1936 # 80002ee0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7f060613 addi a2,a2,2032 # 80002eb8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 72468693 addi a3,a3,1828 # 80002f10 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 64468693 addi a3,a3,1604 # 80002e80 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5d468693 addi a3,a3,1492 # 80002e48 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02600793 li a5,38 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 08dc47b7 lui a5,0x8dc4 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 2d678793 addi a5,a5,726 # 8dc42d6 <_start-0x7723bd2a> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00053007 fld ft0,0(a0) + 80002adc: 00853087 fld ft1,8(a0) + 80002ae0: 01053107 fld ft2,16(a0) + 80002ae4: 01853683 ld a3,24(a0) + 80002ae8: 121071c3 fmadd.d ft3,ft0,ft1,ft2 + 80002aec: e2018553 fmv.x.d a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00000613 li a2,0 + 80002af8: 24d51463 bne a0,a3,80002d40 + 80002afc: 24c59263 bne a1,a2,80002d40 + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00000517 auipc a0,0x0 + 80002b08: 51c50513 addi a0,a0,1308 # 80003020 + 80002b0c: 00053007 fld ft0,0(a0) + 80002b10: 00853087 fld ft1,8(a0) + 80002b14: 01053107 fld ft2,16(a0) + 80002b18: 01853683 ld a3,24(a0) + 80002b1c: 121071c3 fmadd.d ft3,ft0,ft1,ft2 + 80002b20: e2018553 fmv.x.d a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00100613 li a2,1 + 80002b2c: 20d51a63 bne a0,a3,80002d40 + 80002b30: 20c59863 bne a1,a2,80002d40 + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00000517 auipc a0,0x0 + 80002b3c: 50850513 addi a0,a0,1288 # 80003040 + 80002b40: 00053007 fld ft0,0(a0) + 80002b44: 00853087 fld ft1,8(a0) + 80002b48: 01053107 fld ft2,16(a0) + 80002b4c: 01853683 ld a3,24(a0) + 80002b50: 121071c3 fmadd.d ft3,ft0,ft1,ft2 + 80002b54: e2018553 fmv.x.d a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00000613 li a2,0 + 80002b60: 1ed51063 bne a0,a3,80002d40 + 80002b64: 1cc59e63 bne a1,a2,80002d40 + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00000517 auipc a0,0x0 + 80002b70: 4f450513 addi a0,a0,1268 # 80003060 + 80002b74: 00053007 fld ft0,0(a0) + 80002b78: 00853087 fld ft1,8(a0) + 80002b7c: 01053107 fld ft2,16(a0) + 80002b80: 01853683 ld a3,24(a0) + 80002b84: 121071cf fnmadd.d ft3,ft0,ft1,ft2 + 80002b88: e2018553 fmv.x.d a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00000613 li a2,0 + 80002b94: 1ad51663 bne a0,a3,80002d40 + 80002b98: 1ac59463 bne a1,a2,80002d40 + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00000517 auipc a0,0x0 + 80002ba4: 4e050513 addi a0,a0,1248 # 80003080 + 80002ba8: 00053007 fld ft0,0(a0) + 80002bac: 00853087 fld ft1,8(a0) + 80002bb0: 01053107 fld ft2,16(a0) + 80002bb4: 01853683 ld a3,24(a0) + 80002bb8: 121071cf fnmadd.d ft3,ft0,ft1,ft2 + 80002bbc: e2018553 fmv.x.d a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00100613 li a2,1 + 80002bc8: 16d51c63 bne a0,a3,80002d40 + 80002bcc: 16c59a63 bne a1,a2,80002d40 + +0000000080002bd0 : + 80002bd0: 00700193 li gp,7 + 80002bd4: 00000517 auipc a0,0x0 + 80002bd8: 4cc50513 addi a0,a0,1228 # 800030a0 + 80002bdc: 00053007 fld ft0,0(a0) + 80002be0: 00853087 fld ft1,8(a0) + 80002be4: 01053107 fld ft2,16(a0) + 80002be8: 01853683 ld a3,24(a0) + 80002bec: 121071cf fnmadd.d ft3,ft0,ft1,ft2 + 80002bf0: e2018553 fmv.x.d a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 00000613 li a2,0 + 80002bfc: 14d51263 bne a0,a3,80002d40 + 80002c00: 14c59063 bne a1,a2,80002d40 + +0000000080002c04 : + 80002c04: 00800193 li gp,8 + 80002c08: 00000517 auipc a0,0x0 + 80002c0c: 4b850513 addi a0,a0,1208 # 800030c0 + 80002c10: 00053007 fld ft0,0(a0) + 80002c14: 00853087 fld ft1,8(a0) + 80002c18: 01053107 fld ft2,16(a0) + 80002c1c: 01853683 ld a3,24(a0) + 80002c20: 121071c7 fmsub.d ft3,ft0,ft1,ft2 + 80002c24: e2018553 fmv.x.d a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00000613 li a2,0 + 80002c30: 10d51863 bne a0,a3,80002d40 + 80002c34: 10c59663 bne a1,a2,80002d40 + +0000000080002c38 : + 80002c38: 00900193 li gp,9 + 80002c3c: 00000517 auipc a0,0x0 + 80002c40: 4a450513 addi a0,a0,1188 # 800030e0 + 80002c44: 00053007 fld ft0,0(a0) + 80002c48: 00853087 fld ft1,8(a0) + 80002c4c: 01053107 fld ft2,16(a0) + 80002c50: 01853683 ld a3,24(a0) + 80002c54: 121071c7 fmsub.d ft3,ft0,ft1,ft2 + 80002c58: e2018553 fmv.x.d a0,ft3 + 80002c5c: 001015f3 fsflags a1,zero + 80002c60: 00100613 li a2,1 + 80002c64: 0cd51e63 bne a0,a3,80002d40 + 80002c68: 0cc59c63 bne a1,a2,80002d40 + +0000000080002c6c : + 80002c6c: 00a00193 li gp,10 + 80002c70: 00000517 auipc a0,0x0 + 80002c74: 49050513 addi a0,a0,1168 # 80003100 + 80002c78: 00053007 fld ft0,0(a0) + 80002c7c: 00853087 fld ft1,8(a0) + 80002c80: 01053107 fld ft2,16(a0) + 80002c84: 01853683 ld a3,24(a0) + 80002c88: 121071c7 fmsub.d ft3,ft0,ft1,ft2 + 80002c8c: e2018553 fmv.x.d a0,ft3 + 80002c90: 001015f3 fsflags a1,zero + 80002c94: 00000613 li a2,0 + 80002c98: 0ad51463 bne a0,a3,80002d40 + 80002c9c: 0ac59263 bne a1,a2,80002d40 + +0000000080002ca0 : + 80002ca0: 00b00193 li gp,11 + 80002ca4: 00000517 auipc a0,0x0 + 80002ca8: 47c50513 addi a0,a0,1148 # 80003120 + 80002cac: 00053007 fld ft0,0(a0) + 80002cb0: 00853087 fld ft1,8(a0) + 80002cb4: 01053107 fld ft2,16(a0) + 80002cb8: 01853683 ld a3,24(a0) + 80002cbc: 121071cb fnmsub.d ft3,ft0,ft1,ft2 + 80002cc0: e2018553 fmv.x.d a0,ft3 + 80002cc4: 001015f3 fsflags a1,zero + 80002cc8: 00000613 li a2,0 + 80002ccc: 06d51a63 bne a0,a3,80002d40 + 80002cd0: 06c59863 bne a1,a2,80002d40 + +0000000080002cd4 : + 80002cd4: 00c00193 li gp,12 + 80002cd8: 00000517 auipc a0,0x0 + 80002cdc: 46850513 addi a0,a0,1128 # 80003140 + 80002ce0: 00053007 fld ft0,0(a0) + 80002ce4: 00853087 fld ft1,8(a0) + 80002ce8: 01053107 fld ft2,16(a0) + 80002cec: 01853683 ld a3,24(a0) + 80002cf0: 121071cb fnmsub.d ft3,ft0,ft1,ft2 + 80002cf4: e2018553 fmv.x.d a0,ft3 + 80002cf8: 001015f3 fsflags a1,zero + 80002cfc: 00100613 li a2,1 + 80002d00: 04d51063 bne a0,a3,80002d40 + 80002d04: 02c59e63 bne a1,a2,80002d40 + +0000000080002d08 : + 80002d08: 00d00193 li gp,13 + 80002d0c: 00000517 auipc a0,0x0 + 80002d10: 45450513 addi a0,a0,1108 # 80003160 + 80002d14: 00053007 fld ft0,0(a0) + 80002d18: 00853087 fld ft1,8(a0) + 80002d1c: 01053107 fld ft2,16(a0) + 80002d20: 01853683 ld a3,24(a0) + 80002d24: 121071cb fnmsub.d ft3,ft0,ft1,ft2 + 80002d28: e2018553 fmv.x.d a0,ft3 + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 00000613 li a2,0 + 80002d34: 00d51663 bne a0,a3,80002d40 + 80002d38: 00c59463 bne a1,a2,80002d40 + 80002d3c: 00301a63 bne zero,gp,80002d50 + +0000000080002d40 : + 80002d40: 00119513 slli a0,gp,0x1 + 80002d44: 00050063 beqz a0,80002d44 + 80002d48: 00156513 ori a0,a0,1 + 80002d4c: 00000073 ecall + +0000000080002d50 : + 80002d50: 00100513 li a0,1 + 80002d54: 00000073 ecall + 80002d58: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 0000 unimp + 80003004: 0000 unimp + 80003006: 3ff0 fld fa2,248(a5) + 80003008: 0000 unimp + 8000300a: 0000 unimp + 8000300c: 0000 unimp + 8000300e: 4004 lw s1,0(s0) + 80003010: 0000 unimp + 80003012: 0000 unimp + 80003014: 0000 unimp + 80003016: 3ff0 fld fa2,248(a5) + 80003018: 0000 unimp + 8000301a: 0000 unimp + 8000301c: 0000 unimp + 8000301e: 400c lw a1,0(s0) + +0000000080003020 : + 80003020: 0000 unimp + 80003022: 0000 unimp + 80003024: 0000 unimp + 80003026: bff0 fsd fa2,248(a5) + 80003028: 6666 ld a2,88(sp) + 8000302a: 6666 ld a2,88(sp) + 8000302c: 4c66 lw s8,88(sp) + 8000302e: 999ac093 xori ra,s5,-1639 + 80003032: 9999 andi a1,a1,-26 + 80003034: 9999 andi a1,a1,-26 + 80003036: 3ff1 addiw t6,t6,-4 + 80003038: cccc sw a1,28(s1) + 8000303a: cccc sw a1,28(s1) + 8000303c: 50cc lw a1,36(s1) + 8000303e: xori ra,zero,0 + +0000000080003040 : + 80003040: 0000 unimp + 80003042: 0000 unimp + 80003044: 0000 unimp + 80003046: 4000 lw s0,0(s0) + 80003048: 0000 unimp + 8000304a: 0000 unimp + 8000304c: 0000 unimp + 8000304e: c014 sw a3,0(s0) + 80003050: 0000 unimp + 80003052: 0000 unimp + 80003054: 0000 unimp + 80003056: c000 sw s0,0(s0) + 80003058: 0000 unimp + 8000305a: 0000 unimp + 8000305c: 0000 unimp + 8000305e: c028 sw a0,64(s0) + +0000000080003060 : + 80003060: 0000 unimp + 80003062: 0000 unimp + 80003064: 0000 unimp + 80003066: 3ff0 fld fa2,248(a5) + 80003068: 0000 unimp + 8000306a: 0000 unimp + 8000306c: 0000 unimp + 8000306e: 4004 lw s1,0(s0) + 80003070: 0000 unimp + 80003072: 0000 unimp + 80003074: 0000 unimp + 80003076: 3ff0 fld fa2,248(a5) + 80003078: 0000 unimp + 8000307a: 0000 unimp + 8000307c: 0000 unimp + 8000307e: c00c sw a1,0(s0) + +0000000080003080 : + 80003080: 0000 unimp + 80003082: 0000 unimp + 80003084: 0000 unimp + 80003086: bff0 fsd fa2,248(a5) + 80003088: 6666 ld a2,88(sp) + 8000308a: 6666 ld a2,88(sp) + 8000308c: 4c66 lw s8,88(sp) + 8000308e: 999ac093 xori ra,s5,-1639 + 80003092: 9999 andi a1,a1,-26 + 80003094: 9999 andi a1,a1,-26 + 80003096: 3ff1 addiw t6,t6,-4 + 80003098: cccc sw a1,28(s1) + 8000309a: cccc sw a1,28(s1) + 8000309c: 50cc lw a1,36(s1) + 8000309e: xori ra,ra,0 + +00000000800030a0 : + 800030a0: 0000 unimp + 800030a2: 0000 unimp + 800030a4: 0000 unimp + 800030a6: 4000 lw s0,0(s0) + 800030a8: 0000 unimp + 800030aa: 0000 unimp + 800030ac: 0000 unimp + 800030ae: c014 sw a3,0(s0) + 800030b0: 0000 unimp + 800030b2: 0000 unimp + 800030b4: 0000 unimp + 800030b6: c000 sw s0,0(s0) + 800030b8: 0000 unimp + 800030ba: 0000 unimp + 800030bc: 0000 unimp + 800030be: 4028 lw a0,64(s0) + +00000000800030c0 : + 800030c0: 0000 unimp + 800030c2: 0000 unimp + 800030c4: 0000 unimp + 800030c6: 3ff0 fld fa2,248(a5) + 800030c8: 0000 unimp + 800030ca: 0000 unimp + 800030cc: 0000 unimp + 800030ce: 4004 lw s1,0(s0) + 800030d0: 0000 unimp + 800030d2: 0000 unimp + 800030d4: 0000 unimp + 800030d6: 3ff0 fld fa2,248(a5) + 800030d8: 0000 unimp + 800030da: 0000 unimp + 800030dc: 0000 unimp + 800030de: 3ff8 fld fa4,248(a5) + +00000000800030e0 : + 800030e0: 0000 unimp + 800030e2: 0000 unimp + 800030e4: 0000 unimp + 800030e6: bff0 fsd fa2,248(a5) + 800030e8: 6666 ld a2,88(sp) + 800030ea: 6666 ld a2,88(sp) + 800030ec: 4c66 lw s8,88(sp) + 800030ee: 999ac093 xori ra,s5,-1639 + 800030f2: 9999 andi a1,a1,-26 + 800030f4: 9999 andi a1,a1,-26 + 800030f6: 3ff1 addiw t6,t6,-4 + 800030f8: 0000 unimp + 800030fa: 0000 unimp + 800030fc: 4800 lw s0,16(s0) + 800030fe: xori ra,zero,0 + +0000000080003100 : + 80003100: 0000 unimp + 80003102: 0000 unimp + 80003104: 0000 unimp + 80003106: 4000 lw s0,0(s0) + 80003108: 0000 unimp + 8000310a: 0000 unimp + 8000310c: 0000 unimp + 8000310e: c014 sw a3,0(s0) + 80003110: 0000 unimp + 80003112: 0000 unimp + 80003114: 0000 unimp + 80003116: c000 sw s0,0(s0) + 80003118: 0000 unimp + 8000311a: 0000 unimp + 8000311c: 0000 unimp + 8000311e: c020 sw s0,64(s0) + +0000000080003120 : + 80003120: 0000 unimp + 80003122: 0000 unimp + 80003124: 0000 unimp + 80003126: 3ff0 fld fa2,248(a5) + 80003128: 0000 unimp + 8000312a: 0000 unimp + 8000312c: 0000 unimp + 8000312e: 4004 lw s1,0(s0) + 80003130: 0000 unimp + 80003132: 0000 unimp + 80003134: 0000 unimp + 80003136: 3ff0 fld fa2,248(a5) + 80003138: 0000 unimp + 8000313a: 0000 unimp + 8000313c: 0000 unimp + 8000313e: bff8 fsd fa4,248(a5) + +0000000080003140 : + 80003140: 0000 unimp + 80003142: 0000 unimp + 80003144: 0000 unimp + 80003146: bff0 fsd fa2,248(a5) + 80003148: 6666 ld a2,88(sp) + 8000314a: 6666 ld a2,88(sp) + 8000314c: 4c66 lw s8,88(sp) + 8000314e: 999ac093 xori ra,s5,-1639 + 80003152: 9999 andi a1,a1,-26 + 80003154: 9999 andi a1,a1,-26 + 80003156: 3ff1 addiw t6,t6,-4 + 80003158: 0000 unimp + 8000315a: 0000 unimp + 8000315c: 4800 lw s0,16(s0) + 8000315e: xori ra,ra,0 + +0000000080003160 : + 80003160: 0000 unimp + 80003162: 0000 unimp + 80003164: 0000 unimp + 80003166: 4000 lw s0,0(s0) + 80003168: 0000 unimp + 8000316a: 0000 unimp + 8000316c: 0000 unimp + 8000316e: c014 sw a3,0(s0) + 80003170: 0000 unimp + 80003172: 0000 unimp + 80003174: 0000 unimp + 80003176: c000 sw s0,0(s0) + 80003178: 0000 unimp + 8000317a: 0000 unimp + 8000317c: 0000 unimp + 8000317e: 4020 lw s0,64(s0) diff --git a/Tests/isa/rv64ud-v-fmin b/Tests/isa/rv64ud-v-fmin new file mode 100644 index 0000000..96cc28d Binary files /dev/null and b/Tests/isa/rv64ud-v-fmin differ diff --git a/Tests/isa/rv64ud-v-fmin.dump b/Tests/isa/rv64ud-v-fmin.dump new file mode 100644 index 0000000..5bc7d5b --- /dev/null +++ b/Tests/isa/rv64ud-v-fmin.dump @@ -0,0 +1,1429 @@ + +rv64ud-v-fmin: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: a4068693 addi a3,a3,-1472 # 80002e98 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: a7460613 addi a2,a2,-1420 # 80002f28 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: a3c60613 addi a2,a2,-1476 # 80002f40 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 98c68693 addi a3,a3,-1652 # 80002ee0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 9a868693 addi a3,a3,-1624 # 80003018 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 92860613 addi a2,a2,-1752 # 80002ff0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 85c68693 addi a3,a3,-1956 # 80003048 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 77c68693 addi a3,a3,1916 # 80002fb8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 70c68693 addi a3,a3,1804 # 80002f80 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 01d00793 li a5,29 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0df727b7 lui a5,0xdf72 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: c6d78793 addi a5,a5,-915 # df71c6d <_start-0x7208e393> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00001517 auipc a0,0x1 + 80002ad4: 53050513 addi a0,a0,1328 # 80004000 + 80002ad8: 00053007 fld ft0,0(a0) + 80002adc: 00853087 fld ft1,8(a0) + 80002ae0: 01053107 fld ft2,16(a0) + 80002ae4: 01853683 ld a3,24(a0) + 80002ae8: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002aec: e2018553 fmv.x.d a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00000613 li a2,0 + 80002af8: 38d51063 bne a0,a3,80002e78 + 80002afc: 36c59e63 bne a1,a2,80002e78 + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00001517 auipc a0,0x1 + 80002b08: 51c50513 addi a0,a0,1308 # 80004020 + 80002b0c: 00053007 fld ft0,0(a0) + 80002b10: 00853087 fld ft1,8(a0) + 80002b14: 01053107 fld ft2,16(a0) + 80002b18: 01853683 ld a3,24(a0) + 80002b1c: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002b20: e2018553 fmv.x.d a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00000613 li a2,0 + 80002b2c: 34d51663 bne a0,a3,80002e78 + 80002b30: 34c59463 bne a1,a2,80002e78 + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00001517 auipc a0,0x1 + 80002b3c: 50850513 addi a0,a0,1288 # 80004040 + 80002b40: 00053007 fld ft0,0(a0) + 80002b44: 00853087 fld ft1,8(a0) + 80002b48: 01053107 fld ft2,16(a0) + 80002b4c: 01853683 ld a3,24(a0) + 80002b50: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002b54: e2018553 fmv.x.d a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00000613 li a2,0 + 80002b60: 30d51c63 bne a0,a3,80002e78 + 80002b64: 30c59a63 bne a1,a2,80002e78 + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00001517 auipc a0,0x1 + 80002b70: 4f450513 addi a0,a0,1268 # 80004060 + 80002b74: 00053007 fld ft0,0(a0) + 80002b78: 00853087 fld ft1,8(a0) + 80002b7c: 01053107 fld ft2,16(a0) + 80002b80: 01853683 ld a3,24(a0) + 80002b84: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002b88: e2018553 fmv.x.d a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00000613 li a2,0 + 80002b94: 2ed51263 bne a0,a3,80002e78 + 80002b98: 2ec59063 bne a1,a2,80002e78 + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00001517 auipc a0,0x1 + 80002ba4: 4e050513 addi a0,a0,1248 # 80004080 + 80002ba8: 00053007 fld ft0,0(a0) + 80002bac: 00853087 fld ft1,8(a0) + 80002bb0: 01053107 fld ft2,16(a0) + 80002bb4: 01853683 ld a3,24(a0) + 80002bb8: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002bbc: e2018553 fmv.x.d a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00000613 li a2,0 + 80002bc8: 2ad51863 bne a0,a3,80002e78 + 80002bcc: 2ac59663 bne a1,a2,80002e78 + +0000000080002bd0 : + 80002bd0: 00700193 li gp,7 + 80002bd4: 00001517 auipc a0,0x1 + 80002bd8: 4cc50513 addi a0,a0,1228 # 800040a0 + 80002bdc: 00053007 fld ft0,0(a0) + 80002be0: 00853087 fld ft1,8(a0) + 80002be4: 01053107 fld ft2,16(a0) + 80002be8: 01853683 ld a3,24(a0) + 80002bec: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002bf0: e2018553 fmv.x.d a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 00000613 li a2,0 + 80002bfc: 26d51e63 bne a0,a3,80002e78 + 80002c00: 26c59c63 bne a1,a2,80002e78 + +0000000080002c04 : + 80002c04: 00c00193 li gp,12 + 80002c08: 00001517 auipc a0,0x1 + 80002c0c: 4b850513 addi a0,a0,1208 # 800040c0 + 80002c10: 00053007 fld ft0,0(a0) + 80002c14: 00853087 fld ft1,8(a0) + 80002c18: 01053107 fld ft2,16(a0) + 80002c1c: 01853683 ld a3,24(a0) + 80002c20: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002c24: e2018553 fmv.x.d a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00000613 li a2,0 + 80002c30: 24d51463 bne a0,a3,80002e78 + 80002c34: 24c59263 bne a1,a2,80002e78 + +0000000080002c38 : + 80002c38: 00d00193 li gp,13 + 80002c3c: 00001517 auipc a0,0x1 + 80002c40: 4a450513 addi a0,a0,1188 # 800040e0 + 80002c44: 00053007 fld ft0,0(a0) + 80002c48: 00853087 fld ft1,8(a0) + 80002c4c: 01053107 fld ft2,16(a0) + 80002c50: 01853683 ld a3,24(a0) + 80002c54: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002c58: e2018553 fmv.x.d a0,ft3 + 80002c5c: 001015f3 fsflags a1,zero + 80002c60: 00000613 li a2,0 + 80002c64: 20d51a63 bne a0,a3,80002e78 + 80002c68: 20c59863 bne a1,a2,80002e78 + +0000000080002c6c : + 80002c6c: 00e00193 li gp,14 + 80002c70: 00001517 auipc a0,0x1 + 80002c74: 49050513 addi a0,a0,1168 # 80004100 + 80002c78: 00053007 fld ft0,0(a0) + 80002c7c: 00853087 fld ft1,8(a0) + 80002c80: 01053107 fld ft2,16(a0) + 80002c84: 01853683 ld a3,24(a0) + 80002c88: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002c8c: e2018553 fmv.x.d a0,ft3 + 80002c90: 001015f3 fsflags a1,zero + 80002c94: 00000613 li a2,0 + 80002c98: 1ed51063 bne a0,a3,80002e78 + 80002c9c: 1cc59e63 bne a1,a2,80002e78 + +0000000080002ca0 : + 80002ca0: 00f00193 li gp,15 + 80002ca4: 00001517 auipc a0,0x1 + 80002ca8: 47c50513 addi a0,a0,1148 # 80004120 + 80002cac: 00053007 fld ft0,0(a0) + 80002cb0: 00853087 fld ft1,8(a0) + 80002cb4: 01053107 fld ft2,16(a0) + 80002cb8: 01853683 ld a3,24(a0) + 80002cbc: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002cc0: e2018553 fmv.x.d a0,ft3 + 80002cc4: 001015f3 fsflags a1,zero + 80002cc8: 00000613 li a2,0 + 80002ccc: 1ad51663 bne a0,a3,80002e78 + 80002cd0: 1ac59463 bne a1,a2,80002e78 + +0000000080002cd4 : + 80002cd4: 01000193 li gp,16 + 80002cd8: 00001517 auipc a0,0x1 + 80002cdc: 46850513 addi a0,a0,1128 # 80004140 + 80002ce0: 00053007 fld ft0,0(a0) + 80002ce4: 00853087 fld ft1,8(a0) + 80002ce8: 01053107 fld ft2,16(a0) + 80002cec: 01853683 ld a3,24(a0) + 80002cf0: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002cf4: e2018553 fmv.x.d a0,ft3 + 80002cf8: 001015f3 fsflags a1,zero + 80002cfc: 00000613 li a2,0 + 80002d00: 16d51c63 bne a0,a3,80002e78 + 80002d04: 16c59a63 bne a1,a2,80002e78 + +0000000080002d08 : + 80002d08: 01100193 li gp,17 + 80002d0c: 00001517 auipc a0,0x1 + 80002d10: 45450513 addi a0,a0,1108 # 80004160 + 80002d14: 00053007 fld ft0,0(a0) + 80002d18: 00853087 fld ft1,8(a0) + 80002d1c: 01053107 fld ft2,16(a0) + 80002d20: 01853683 ld a3,24(a0) + 80002d24: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002d28: e2018553 fmv.x.d a0,ft3 + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 00000613 li a2,0 + 80002d34: 14d51263 bne a0,a3,80002e78 + 80002d38: 14c59063 bne a1,a2,80002e78 + +0000000080002d3c : + 80002d3c: 01400193 li gp,20 + 80002d40: 00001517 auipc a0,0x1 + 80002d44: 44050513 addi a0,a0,1088 # 80004180 + 80002d48: 00053007 fld ft0,0(a0) + 80002d4c: 00853087 fld ft1,8(a0) + 80002d50: 01053107 fld ft2,16(a0) + 80002d54: 01853683 ld a3,24(a0) + 80002d58: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002d5c: e2018553 fmv.x.d a0,ft3 + 80002d60: 001015f3 fsflags a1,zero + 80002d64: 01000613 li a2,16 + 80002d68: 10d51863 bne a0,a3,80002e78 + 80002d6c: 10c59663 bne a1,a2,80002e78 + +0000000080002d70 : + 80002d70: 01500193 li gp,21 + 80002d74: 00001517 auipc a0,0x1 + 80002d78: 42c50513 addi a0,a0,1068 # 800041a0 + 80002d7c: 00053007 fld ft0,0(a0) + 80002d80: 00853087 fld ft1,8(a0) + 80002d84: 01053107 fld ft2,16(a0) + 80002d88: 01853683 ld a3,24(a0) + 80002d8c: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002d90: e2018553 fmv.x.d a0,ft3 + 80002d94: 001015f3 fsflags a1,zero + 80002d98: 00000613 li a2,0 + 80002d9c: 0cd51e63 bne a0,a3,80002e78 + 80002da0: 0cc59c63 bne a1,a2,80002e78 + +0000000080002da4 : + 80002da4: 01e00193 li gp,30 + 80002da8: 00001517 auipc a0,0x1 + 80002dac: 41850513 addi a0,a0,1048 # 800041c0 + 80002db0: 00053007 fld ft0,0(a0) + 80002db4: 00853087 fld ft1,8(a0) + 80002db8: 01053107 fld ft2,16(a0) + 80002dbc: 01853683 ld a3,24(a0) + 80002dc0: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002dc4: e2018553 fmv.x.d a0,ft3 + 80002dc8: 001015f3 fsflags a1,zero + 80002dcc: 00000613 li a2,0 + 80002dd0: 0ad51463 bne a0,a3,80002e78 + 80002dd4: 0ac59263 bne a1,a2,80002e78 + +0000000080002dd8 : + 80002dd8: 01f00193 li gp,31 + 80002ddc: 00001517 auipc a0,0x1 + 80002de0: 40450513 addi a0,a0,1028 # 800041e0 + 80002de4: 00053007 fld ft0,0(a0) + 80002de8: 00853087 fld ft1,8(a0) + 80002dec: 01053107 fld ft2,16(a0) + 80002df0: 01853683 ld a3,24(a0) + 80002df4: 2a1001d3 fmin.d ft3,ft0,ft1 + 80002df8: e2018553 fmv.x.d a0,ft3 + 80002dfc: 001015f3 fsflags a1,zero + 80002e00: 00000613 li a2,0 + 80002e04: 06d51a63 bne a0,a3,80002e78 + 80002e08: 06c59863 bne a1,a2,80002e78 + +0000000080002e0c : + 80002e0c: 02000193 li gp,32 + 80002e10: 00001517 auipc a0,0x1 + 80002e14: 3f050513 addi a0,a0,1008 # 80004200 + 80002e18: 00053007 fld ft0,0(a0) + 80002e1c: 00853087 fld ft1,8(a0) + 80002e20: 01053107 fld ft2,16(a0) + 80002e24: 01853683 ld a3,24(a0) + 80002e28: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002e2c: e2018553 fmv.x.d a0,ft3 + 80002e30: 001015f3 fsflags a1,zero + 80002e34: 00000613 li a2,0 + 80002e38: 04d51063 bne a0,a3,80002e78 + 80002e3c: 02c59e63 bne a1,a2,80002e78 + +0000000080002e40 : + 80002e40: 02100193 li gp,33 + 80002e44: 00001517 auipc a0,0x1 + 80002e48: 3dc50513 addi a0,a0,988 # 80004220 + 80002e4c: 00053007 fld ft0,0(a0) + 80002e50: 00853087 fld ft1,8(a0) + 80002e54: 01053107 fld ft2,16(a0) + 80002e58: 01853683 ld a3,24(a0) + 80002e5c: 2a1011d3 fmax.d ft3,ft0,ft1 + 80002e60: e2018553 fmv.x.d a0,ft3 + 80002e64: 001015f3 fsflags a1,zero + 80002e68: 00000613 li a2,0 + 80002e6c: 00d51663 bne a0,a3,80002e78 + 80002e70: 00c59463 bne a1,a2,80002e78 + 80002e74: 00301a63 bne zero,gp,80002e88 + +0000000080002e78 : + 80002e78: 00119513 slli a0,gp,0x1 + 80002e7c: 00050063 beqz a0,80002e7c + 80002e80: 00156513 ori a0,a0,1 + 80002e84: 00000073 ecall + +0000000080002e88 : + 80002e88: 00100513 li a0,1 + 80002e8c: 00000073 ecall + 80002e90: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: 0000 unimp + 80004002: 0000 unimp + 80004004: 0000 unimp + 80004006: 4004 lw s1,0(s0) + 80004008: 0000 unimp + 8000400a: 0000 unimp + 8000400c: 0000 unimp + 8000400e: 3ff0 fld fa2,248(a5) + 80004010: 0000 unimp + 80004012: 0000 unimp + 80004014: 0000 unimp + 80004016: 0000 unimp + 80004018: 0000 unimp + 8000401a: 0000 unimp + 8000401c: 0000 unimp + 8000401e: 3ff0 fld fa2,248(a5) + +0000000080004020 : + 80004020: 6666 ld a2,88(sp) + 80004022: 6666 ld a2,88(sp) + 80004024: 4c66 lw s8,88(sp) + 80004026: 999ac093 xori ra,s5,-1639 + 8000402a: 9999 andi a1,a1,-26 + 8000402c: 9999 andi a1,a1,-26 + 8000402e: 3ff1 addiw t6,t6,-4 + 80004030: 0000 unimp + 80004032: 0000 unimp + 80004034: 0000 unimp + 80004036: 0000 unimp + 80004038: 6666 ld a2,88(sp) + 8000403a: 6666 ld a2,88(sp) + 8000403c: 4c66 lw s8,88(sp) + 8000403e: xori ra,s5,-1639 + +0000000080004040 : + 80004040: 999a add s3,s3,t1 + 80004042: 9999 andi a1,a1,-26 + 80004044: 9999 andi a1,a1,-26 + 80004046: 3ff1 addiw t6,t6,-4 + 80004048: 6666 ld a2,88(sp) + 8000404a: 6666 ld a2,88(sp) + 8000404c: 4c66 lw s8,88(sp) + 8000404e: 0000c093 xori ra,ra,0 + 80004052: 0000 unimp + 80004054: 0000 unimp + 80004056: 0000 unimp + 80004058: 6666 ld a2,88(sp) + 8000405a: 6666 ld a2,88(sp) + 8000405c: 4c66 lw s8,88(sp) + 8000405e: not ra,t6 + +0000000080004060 : + 80004060: ffff 0xffff + 80004062: ffff 0xffff + 80004064: ffff 0xffff + 80004066: 7fff 0x7fff + 80004068: 6666 ld a2,88(sp) + 8000406a: 6666 ld a2,88(sp) + 8000406c: 4c66 lw s8,88(sp) + 8000406e: 0000c093 xori ra,ra,0 + 80004072: 0000 unimp + 80004074: 0000 unimp + 80004076: 0000 unimp + 80004078: 6666 ld a2,88(sp) + 8000407a: 6666 ld a2,88(sp) + 8000407c: 4c66 lw s8,88(sp) + 8000407e: xori ra,gp,-689 + +0000000080004080 : + 80004080: d4f1 beqz s1,8000404c + 80004082: 53c8 lw a0,36(a5) + 80004084: 400921fb 0x400921fb + 80004088: 8c3a mv s8,a4 + 8000408a: e230 sd a2,64(a2) + 8000408c: 798e ld s3,224(sp) + 8000408e: 3e45 addiw t3,t3,-15 + 80004090: 0000 unimp + 80004092: 0000 unimp + 80004094: 0000 unimp + 80004096: 0000 unimp + 80004098: 8c3a mv s8,a4 + 8000409a: e230 sd a2,64(a2) + 8000409c: 798e ld s3,224(sp) + 8000409e: 3e45 addiw t3,t3,-15 + +00000000800040a0 : + 800040a0: 0000 unimp + 800040a2: 0000 unimp + 800040a4: 0000 unimp + 800040a6: bff0 fsd fa2,248(a5) + 800040a8: 0000 unimp + 800040aa: 0000 unimp + 800040ac: 0000 unimp + 800040ae: c000 sw s0,0(s0) + 800040b0: 0000 unimp + 800040b2: 0000 unimp + 800040b4: 0000 unimp + 800040b6: 0000 unimp + 800040b8: 0000 unimp + 800040ba: 0000 unimp + 800040bc: 0000 unimp + 800040be: c000 sw s0,0(s0) + +00000000800040c0 : + 800040c0: 0000 unimp + 800040c2: 0000 unimp + 800040c4: 0000 unimp + 800040c6: 4004 lw s1,0(s0) + 800040c8: 0000 unimp + 800040ca: 0000 unimp + 800040cc: 0000 unimp + 800040ce: 3ff0 fld fa2,248(a5) + 800040d0: 0000 unimp + 800040d2: 0000 unimp + 800040d4: 0000 unimp + 800040d6: 0000 unimp + 800040d8: 0000 unimp + 800040da: 0000 unimp + 800040dc: 0000 unimp + 800040de: 4004 lw s1,0(s0) + +00000000800040e0 : + 800040e0: 6666 ld a2,88(sp) + 800040e2: 6666 ld a2,88(sp) + 800040e4: 4c66 lw s8,88(sp) + 800040e6: 999ac093 xori ra,s5,-1639 + 800040ea: 9999 andi a1,a1,-26 + 800040ec: 9999 andi a1,a1,-26 + 800040ee: 3ff1 addiw t6,t6,-4 + 800040f0: 0000 unimp + 800040f2: 0000 unimp + 800040f4: 0000 unimp + 800040f6: 0000 unimp + 800040f8: 999a add s3,s3,t1 + 800040fa: 9999 andi a1,a1,-26 + 800040fc: 9999 andi a1,a1,-26 + 800040fe: 3ff1 addiw t6,t6,-4 + +0000000080004100 : + 80004100: 999a add s3,s3,t1 + 80004102: 9999 andi a1,a1,-26 + 80004104: 9999 andi a1,a1,-26 + 80004106: 3ff1 addiw t6,t6,-4 + 80004108: 6666 ld a2,88(sp) + 8000410a: 6666 ld a2,88(sp) + 8000410c: 4c66 lw s8,88(sp) + 8000410e: 0000c093 xori ra,ra,0 + 80004112: 0000 unimp + 80004114: 0000 unimp + 80004116: 0000 unimp + 80004118: 999a add s3,s3,t1 + 8000411a: 9999 andi a1,a1,-26 + 8000411c: 9999 andi a1,a1,-26 + 8000411e: 3ff1 addiw t6,t6,-4 + +0000000080004120 : + 80004120: ffff 0xffff + 80004122: ffff 0xffff + 80004124: ffff 0xffff + 80004126: 7fff 0x7fff + 80004128: 6666 ld a2,88(sp) + 8000412a: 6666 ld a2,88(sp) + 8000412c: 4c66 lw s8,88(sp) + 8000412e: 0000c093 xori ra,ra,0 + 80004132: 0000 unimp + 80004134: 0000 unimp + 80004136: 0000 unimp + 80004138: 6666 ld a2,88(sp) + 8000413a: 6666 ld a2,88(sp) + 8000413c: 4c66 lw s8,88(sp) + 8000413e: xori ra,gp,-689 + +0000000080004140 : + 80004140: d4f1 beqz s1,8000410c + 80004142: 53c8 lw a0,36(a5) + 80004144: 400921fb 0x400921fb + 80004148: 8c3a mv s8,a4 + 8000414a: e230 sd a2,64(a2) + 8000414c: 798e ld s3,224(sp) + 8000414e: 3e45 addiw t3,t3,-15 + 80004150: 0000 unimp + 80004152: 0000 unimp + 80004154: 0000 unimp + 80004156: 0000 unimp + 80004158: d4f1 beqz s1,80004124 + 8000415a: 53c8 lw a0,36(a5) + 8000415c: 400921fb 0x400921fb + +0000000080004160 : + 80004160: 0000 unimp + 80004162: 0000 unimp + 80004164: 0000 unimp + 80004166: bff0 fsd fa2,248(a5) + 80004168: 0000 unimp + 8000416a: 0000 unimp + 8000416c: 0000 unimp + 8000416e: c000 sw s0,0(s0) + 80004170: 0000 unimp + 80004172: 0000 unimp + 80004174: 0000 unimp + 80004176: 0000 unimp + 80004178: 0000 unimp + 8000417a: 0000 unimp + 8000417c: 0000 unimp + 8000417e: bff0 fsd fa2,248(a5) + +0000000080004180 : + 80004180: 0001 nop + 80004182: 0000 unimp + 80004184: 0000 unimp + 80004186: 7ff0 ld a2,248(a5) + 80004188: 0000 unimp + 8000418a: 0000 unimp + 8000418c: 0000 unimp + 8000418e: 3ff0 fld fa2,248(a5) + 80004190: 0000 unimp + 80004192: 0000 unimp + 80004194: 0000 unimp + 80004196: 0000 unimp + 80004198: 0000 unimp + 8000419a: 0000 unimp + 8000419c: 0000 unimp + 8000419e: 3ff0 fld fa2,248(a5) + +00000000800041a0 : + 800041a0: ffff 0xffff + 800041a2: ffff 0xffff + 800041a4: ffff 0xffff + 800041a6: 7fff 0x7fff + 800041a8: ffff 0xffff + 800041aa: ffff 0xffff + 800041ac: ffff 0xffff + 800041ae: 7fff 0x7fff + 800041b0: 0000 unimp + 800041b2: 0000 unimp + 800041b4: 0000 unimp + 800041b6: 0000 unimp + 800041b8: 0000 unimp + 800041ba: 0000 unimp + 800041bc: 0000 unimp + 800041be: 7ff8 ld a4,248(a5) + +00000000800041c0 : + 800041c0: 0000 unimp + 800041c2: 0000 unimp + 800041c4: 0000 unimp + 800041c6: 8000 0x8000 + 800041c8: 0000 unimp + 800041ca: 0000 unimp + 800041cc: 0000 unimp + 800041ce: 0000 unimp + 800041d0: 0000 unimp + 800041d2: 0000 unimp + 800041d4: 0000 unimp + 800041d6: 0000 unimp + 800041d8: 0000 unimp + 800041da: 0000 unimp + 800041dc: 0000 unimp + 800041de: 8000 0x8000 + +00000000800041e0 : + 800041e0: 0000 unimp + 800041e2: 0000 unimp + 800041e4: 0000 unimp + 800041e6: 0000 unimp + 800041e8: 0000 unimp + 800041ea: 0000 unimp + 800041ec: 0000 unimp + 800041ee: 8000 0x8000 + 800041f0: 0000 unimp + 800041f2: 0000 unimp + 800041f4: 0000 unimp + 800041f6: 0000 unimp + 800041f8: 0000 unimp + 800041fa: 0000 unimp + 800041fc: 0000 unimp + 800041fe: 8000 0x8000 + +0000000080004200 : + 80004200: 0000 unimp + 80004202: 0000 unimp + 80004204: 0000 unimp + 80004206: 8000 0x8000 + 80004208: 0000 unimp + 8000420a: 0000 unimp + 8000420c: 0000 unimp + 8000420e: 0000 unimp + 80004210: 0000 unimp + 80004212: 0000 unimp + 80004214: 0000 unimp + 80004216: 0000 unimp + 80004218: 0000 unimp + 8000421a: 0000 unimp + 8000421c: 0000 unimp + 8000421e: 0000 unimp + +0000000080004220 : + 80004220: 0000 unimp + 80004222: 0000 unimp + 80004224: 0000 unimp + 80004226: 0000 unimp + 80004228: 0000 unimp + 8000422a: 0000 unimp + 8000422c: 0000 unimp + 8000422e: 8000 0x8000 + 80004230: 0000 unimp + 80004232: 0000 unimp + 80004234: 0000 unimp + 80004236: 0000 unimp + 80004238: 0000 unimp + 8000423a: 0000 unimp + 8000423c: 0000 unimp + 8000423e: 0000 unimp diff --git a/Tests/isa/rv64ud-v-ldst b/Tests/isa/rv64ud-v-ldst new file mode 100644 index 0000000..b3f6f35 Binary files /dev/null and b/Tests/isa/rv64ud-v-ldst differ diff --git a/Tests/isa/rv64ud-v-ldst.dump b/Tests/isa/rv64ud-v-ldst.dump new file mode 100644 index 0000000..c5bf8f4 --- /dev/null +++ b/Tests/isa/rv64ud-v-ldst.dump @@ -0,0 +1,916 @@ + +rv64ud-v-ldst: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 74868693 addi a3,a3,1864 # 80002ba0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 77c60613 addi a2,a2,1916 # 80002c30 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 74460613 addi a2,a2,1860 # 80002c48 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 69468693 addi a3,a3,1684 # 80002be8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6b068693 addi a3,a3,1712 # 80002d20 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 63060613 addi a2,a2,1584 # 80002cf8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 56468693 addi a3,a3,1380 # 80002d50 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 48468693 addi a3,a3,1156 # 80002cc0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 41468693 addi a3,a3,1044 # 80002c88 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03900793 li a5,57 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 012f37b7 lui a5,0x12f3 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 42878793 addi a5,a5,1064 # 12f3428 <_start-0x7ed0cbd8> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + 80002acc: 00000417 auipc s0,0x0 + 80002ad0: 53440413 addi s0,s0,1332 # 80003000 + +0000000080002ad4 : + 80002ad4: 00043107 fld ft2,0(s0) + 80002ad8: 00243827 fsd ft2,16(s0) + 80002adc: 01043503 ld a0,16(s0) + 80002ae0: 00100e9b addiw t4,zero,1 + 80002ae4: 027e9e93 slli t4,t4,0x27 + 80002ae8: 17fe8e93 addi t4,t4,383 + 80002aec: 017e9e93 slli t4,t4,0x17 + 80002af0: 00200193 li gp,2 + 80002af4: 09d51863 bne a0,t4,80002b84 + +0000000080002af8 : + 80002af8: 00043107 fld ft2,0(s0) + 80002afc: 00242827 fsw ft2,16(s0) + 80002b00: 01043503 ld a0,16(s0) + 80002b04: 00100e9b addiw t4,zero,1 + 80002b08: 027e9e93 slli t4,t4,0x27 + 80002b0c: 17fe8e93 addi t4,t4,383 + 80002b10: 017e9e93 slli t4,t4,0x17 + 80002b14: 00300193 li gp,3 + 80002b18: 07d51663 bne a0,t4,80002b84 + +0000000080002b1c : + 80002b1c: 00042107 flw ft2,0(s0) + 80002b20: 00242827 fsw ft2,16(s0) + 80002b24: 01043503 ld a0,16(s0) + 80002b28: 00100e9b addiw t4,zero,1 + 80002b2c: 027e9e93 slli t4,t4,0x27 + 80002b30: 17fe8e93 addi t4,t4,383 + 80002b34: 017e9e93 slli t4,t4,0x17 + 80002b38: 00400193 li gp,4 + 80002b3c: 05d51463 bne a0,t4,80002b84 + +0000000080002b40 : + 80002b40: 00843107 fld ft2,8(s0) + 80002b44: 00243827 fsd ft2,16(s0) + 80002b48: 01043503 ld a0,16(s0) + 80002b4c: f8100e9b addiw t4,zero,-127 + 80002b50: 021e9e93 slli t4,t4,0x21 + 80002b54: 101e8e93 addi t4,t4,257 + 80002b58: 016e9e93 slli t4,t4,0x16 + 80002b5c: 00500193 li gp,5 + 80002b60: 03d51263 bne a0,t4,80002b84 + +0000000080002b64 : + 80002b64: 00842107 flw ft2,8(s0) + 80002b68: 00243827 fsd ft2,16(s0) + 80002b6c: 01043503 ld a0,16(s0) + 80002b70: d0100e9b addiw t4,zero,-767 + 80002b74: 016e9e93 slli t4,t4,0x16 + 80002b78: 00600193 li gp,6 + 80002b7c: 01d51463 bne a0,t4,80002b84 + 80002b80: 00301a63 bne zero,gp,80002b94 + +0000000080002b84 : + 80002b84: 00119513 slli a0,gp,0x1 + 80002b88: 00050063 beqz a0,80002b88 + 80002b8c: 00156513 ori a0,a0,1 + 80002b90: 00000073 ecall + +0000000080002b94 : + 80002b94: 00100513 li a0,1 + 80002b98: 00000073 ecall + 80002b9c: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: bf80 fsd fs0,56(a5) + 80003004: 0000 unimp + 80003006: 4000 lw s0,0(s0) + 80003008: 0000 unimp + 8000300a: 4040 lw s0,4(s0) + 8000300c: 0000 unimp + 8000300e: c080 sw s0,0(s1) + 80003010: deadbeef jal t4,7ffde5fa <_start-0x21a06> + 80003014: babe fsd fa5,368(sp) + 80003016: cafe sw t6,84(sp) + 80003018: 1dea slli s11,s11,0x3a + 8000301a: abad j 80003594 + 8000301c: d00d beqz s0,80002f3e + 8000301e: lui t1,0x1 diff --git a/Tests/isa/rv64ud-v-move b/Tests/isa/rv64ud-v-move new file mode 100644 index 0000000..19f8a37 Binary files /dev/null and b/Tests/isa/rv64ud-v-move differ diff --git a/Tests/isa/rv64ud-v-move.dump b/Tests/isa/rv64ud-v-move.dump new file mode 100644 index 0000000..32eeb4e --- /dev/null +++ b/Tests/isa/rv64ud-v-move.dump @@ -0,0 +1,1896 @@ + +rv64ud-v-move: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 57068693 addi a3,a3,1392 # 800039c8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 5a460613 addi a2,a2,1444 # 80003a58 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 56c60613 addi a2,a2,1388 # 80003a70 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 4bc68693 addi a3,a3,1212 # 80003a10 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 4d868693 addi a3,a3,1240 # 80003b48 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 45860613 addi a2,a2,1112 # 80003b20 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 38c68693 addi a3,a3,908 # 80003b78 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 2ac68693 addi a3,a3,684 # 80003ae8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 23c68693 addi a3,a3,572 # 80003ab0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00300793 li a5,3 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0163a7b7 lui a5,0x163a + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 84d78793 addi a5,a5,-1971 # 163984d <_start-0x7e9c67b3> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 002475b7 lui a1,0x247 + 80002ad0: 8ad5859b addiw a1,a1,-1875 + 80002ad4: 00e59593 slli a1,a1,0xe + 80002ad8: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80002adc: 00c59593 slli a1,a1,0xc + 80002ae0: 5e758593 addi a1,a1,1511 + 80002ae4: 00d59593 slli a1,a1,0xd + 80002ae8: ef058593 addi a1,a1,-272 + 80002aec: 00000613 li a2,0 + 80002af0: f20580d3 fmv.d.x ft1,a1 + 80002af4: f2060153 fmv.d.x ft2,a2 + 80002af8: 22208053 fsgnj.d ft0,ft1,ft2 + 80002afc: e2000553 fmv.x.d a0,ft0 + 80002b00: 00247eb7 lui t4,0x247 + 80002b04: 8ade8e9b addiw t4,t4,-1875 + 80002b08: 00ee9e93 slli t4,t4,0xe + 80002b0c: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80002b10: 00ce9e93 slli t4,t4,0xc + 80002b14: 5e7e8e93 addi t4,t4,1511 + 80002b18: 00de9e93 slli t4,t4,0xd + 80002b1c: ef0e8e93 addi t4,t4,-272 + 80002b20: 00a00193 li gp,10 + 80002b24: 69d512e3 bne a0,t4,800039a8 + +0000000080002b28 : + 80002b28: 002475b7 lui a1,0x247 + 80002b2c: 8ad5859b addiw a1,a1,-1875 + 80002b30: 00e59593 slli a1,a1,0xe + 80002b34: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80002b38: 00c59593 slli a1,a1,0xc + 80002b3c: 5e758593 addi a1,a1,1511 + 80002b40: 00d59593 slli a1,a1,0xd + 80002b44: ef058593 addi a1,a1,-272 + 80002b48: fff00613 li a2,-1 + 80002b4c: f20580d3 fmv.d.x ft1,a1 + 80002b50: f2060153 fmv.d.x ft2,a2 + 80002b54: 22208053 fsgnj.d ft0,ft1,ft2 + 80002b58: e2000553 fmv.x.d a0,ft0 + 80002b5c: ff247eb7 lui t4,0xff247 + 80002b60: 8ade8e9b addiw t4,t4,-1875 + 80002b64: 00ee9e93 slli t4,t4,0xe + 80002b68: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002b6c: 00ce9e93 slli t4,t4,0xc + 80002b70: 5e7e8e93 addi t4,t4,1511 + 80002b74: 00de9e93 slli t4,t4,0xd + 80002b78: ef0e8e93 addi t4,t4,-272 + 80002b7c: 00b00193 li gp,11 + 80002b80: 63d514e3 bne a0,t4,800039a8 + +0000000080002b84 : + 80002b84: ff2475b7 lui a1,0xff247 + 80002b88: 8ad5859b addiw a1,a1,-1875 + 80002b8c: 00e59593 slli a1,a1,0xe + 80002b90: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002b94: 00c59593 slli a1,a1,0xc + 80002b98: 5e758593 addi a1,a1,1511 + 80002b9c: 00d59593 slli a1,a1,0xd + 80002ba0: ef058593 addi a1,a1,-272 + 80002ba4: 00000613 li a2,0 + 80002ba8: f20580d3 fmv.d.x ft1,a1 + 80002bac: f2060153 fmv.d.x ft2,a2 + 80002bb0: 22208053 fsgnj.d ft0,ft1,ft2 + 80002bb4: e2000553 fmv.x.d a0,ft0 + 80002bb8: 00247eb7 lui t4,0x247 + 80002bbc: 8ade8e9b addiw t4,t4,-1875 + 80002bc0: 00ee9e93 slli t4,t4,0xe + 80002bc4: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80002bc8: 00ce9e93 slli t4,t4,0xc + 80002bcc: 5e7e8e93 addi t4,t4,1511 + 80002bd0: 00de9e93 slli t4,t4,0xd + 80002bd4: ef0e8e93 addi t4,t4,-272 + 80002bd8: 00c00193 li gp,12 + 80002bdc: 5dd516e3 bne a0,t4,800039a8 + +0000000080002be0 : + 80002be0: ff2475b7 lui a1,0xff247 + 80002be4: 8ad5859b addiw a1,a1,-1875 + 80002be8: 00e59593 slli a1,a1,0xe + 80002bec: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002bf0: 00c59593 slli a1,a1,0xc + 80002bf4: 5e758593 addi a1,a1,1511 + 80002bf8: 00d59593 slli a1,a1,0xd + 80002bfc: ef058593 addi a1,a1,-272 + 80002c00: fff00613 li a2,-1 + 80002c04: f20580d3 fmv.d.x ft1,a1 + 80002c08: f2060153 fmv.d.x ft2,a2 + 80002c0c: 22208053 fsgnj.d ft0,ft1,ft2 + 80002c10: e2000553 fmv.x.d a0,ft0 + 80002c14: ff247eb7 lui t4,0xff247 + 80002c18: 8ade8e9b addiw t4,t4,-1875 + 80002c1c: 00ee9e93 slli t4,t4,0xe + 80002c20: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002c24: 00ce9e93 slli t4,t4,0xc + 80002c28: 5e7e8e93 addi t4,t4,1511 + 80002c2c: 00de9e93 slli t4,t4,0xd + 80002c30: ef0e8e93 addi t4,t4,-272 + 80002c34: 00d00193 li gp,13 + 80002c38: 57d518e3 bne a0,t4,800039a8 + +0000000080002c3c : + 80002c3c: 002475b7 lui a1,0x247 + 80002c40: 8ad5859b addiw a1,a1,-1875 + 80002c44: 00e59593 slli a1,a1,0xe + 80002c48: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80002c4c: 00c59593 slli a1,a1,0xc + 80002c50: 5e758593 addi a1,a1,1511 + 80002c54: 00d59593 slli a1,a1,0xd + 80002c58: ef058593 addi a1,a1,-272 + 80002c5c: 00000613 li a2,0 + 80002c60: f20580d3 fmv.d.x ft1,a1 + 80002c64: f2060153 fmv.d.x ft2,a2 + 80002c68: 22209053 fsgnjn.d ft0,ft1,ft2 + 80002c6c: e2000553 fmv.x.d a0,ft0 + 80002c70: ff247eb7 lui t4,0xff247 + 80002c74: 8ade8e9b addiw t4,t4,-1875 + 80002c78: 00ee9e93 slli t4,t4,0xe + 80002c7c: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002c80: 00ce9e93 slli t4,t4,0xc + 80002c84: 5e7e8e93 addi t4,t4,1511 + 80002c88: 00de9e93 slli t4,t4,0xd + 80002c8c: ef0e8e93 addi t4,t4,-272 + 80002c90: 01400193 li gp,20 + 80002c94: 51d51ae3 bne a0,t4,800039a8 + +0000000080002c98 : + 80002c98: 002475b7 lui a1,0x247 + 80002c9c: 8ad5859b addiw a1,a1,-1875 + 80002ca0: 00e59593 slli a1,a1,0xe + 80002ca4: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80002ca8: 00c59593 slli a1,a1,0xc + 80002cac: 5e758593 addi a1,a1,1511 + 80002cb0: 00d59593 slli a1,a1,0xd + 80002cb4: ef058593 addi a1,a1,-272 + 80002cb8: fff00613 li a2,-1 + 80002cbc: f20580d3 fmv.d.x ft1,a1 + 80002cc0: f2060153 fmv.d.x ft2,a2 + 80002cc4: 22209053 fsgnjn.d ft0,ft1,ft2 + 80002cc8: e2000553 fmv.x.d a0,ft0 + 80002ccc: 00247eb7 lui t4,0x247 + 80002cd0: 8ade8e9b addiw t4,t4,-1875 + 80002cd4: 00ee9e93 slli t4,t4,0xe + 80002cd8: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80002cdc: 00ce9e93 slli t4,t4,0xc + 80002ce0: 5e7e8e93 addi t4,t4,1511 + 80002ce4: 00de9e93 slli t4,t4,0xd + 80002ce8: ef0e8e93 addi t4,t4,-272 + 80002cec: 01500193 li gp,21 + 80002cf0: 4bd51ce3 bne a0,t4,800039a8 + +0000000080002cf4 : + 80002cf4: ff2475b7 lui a1,0xff247 + 80002cf8: 8ad5859b addiw a1,a1,-1875 + 80002cfc: 00e59593 slli a1,a1,0xe + 80002d00: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002d04: 00c59593 slli a1,a1,0xc + 80002d08: 5e758593 addi a1,a1,1511 + 80002d0c: 00d59593 slli a1,a1,0xd + 80002d10: ef058593 addi a1,a1,-272 + 80002d14: 00000613 li a2,0 + 80002d18: f20580d3 fmv.d.x ft1,a1 + 80002d1c: f2060153 fmv.d.x ft2,a2 + 80002d20: 22209053 fsgnjn.d ft0,ft1,ft2 + 80002d24: e2000553 fmv.x.d a0,ft0 + 80002d28: ff247eb7 lui t4,0xff247 + 80002d2c: 8ade8e9b addiw t4,t4,-1875 + 80002d30: 00ee9e93 slli t4,t4,0xe + 80002d34: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002d38: 00ce9e93 slli t4,t4,0xc + 80002d3c: 5e7e8e93 addi t4,t4,1511 + 80002d40: 00de9e93 slli t4,t4,0xd + 80002d44: ef0e8e93 addi t4,t4,-272 + 80002d48: 01600193 li gp,22 + 80002d4c: 45d51ee3 bne a0,t4,800039a8 + +0000000080002d50 : + 80002d50: ff2475b7 lui a1,0xff247 + 80002d54: 8ad5859b addiw a1,a1,-1875 + 80002d58: 00e59593 slli a1,a1,0xe + 80002d5c: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002d60: 00c59593 slli a1,a1,0xc + 80002d64: 5e758593 addi a1,a1,1511 + 80002d68: 00d59593 slli a1,a1,0xd + 80002d6c: ef058593 addi a1,a1,-272 + 80002d70: fff00613 li a2,-1 + 80002d74: f20580d3 fmv.d.x ft1,a1 + 80002d78: f2060153 fmv.d.x ft2,a2 + 80002d7c: 22209053 fsgnjn.d ft0,ft1,ft2 + 80002d80: e2000553 fmv.x.d a0,ft0 + 80002d84: 00247eb7 lui t4,0x247 + 80002d88: 8ade8e9b addiw t4,t4,-1875 + 80002d8c: 00ee9e93 slli t4,t4,0xe + 80002d90: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80002d94: 00ce9e93 slli t4,t4,0xc + 80002d98: 5e7e8e93 addi t4,t4,1511 + 80002d9c: 00de9e93 slli t4,t4,0xd + 80002da0: ef0e8e93 addi t4,t4,-272 + 80002da4: 01700193 li gp,23 + 80002da8: 41d510e3 bne a0,t4,800039a8 + +0000000080002dac : + 80002dac: 002475b7 lui a1,0x247 + 80002db0: 8ad5859b addiw a1,a1,-1875 + 80002db4: 00e59593 slli a1,a1,0xe + 80002db8: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80002dbc: 00c59593 slli a1,a1,0xc + 80002dc0: 5e758593 addi a1,a1,1511 + 80002dc4: 00d59593 slli a1,a1,0xd + 80002dc8: ef058593 addi a1,a1,-272 + 80002dcc: 00000613 li a2,0 + 80002dd0: f20580d3 fmv.d.x ft1,a1 + 80002dd4: f2060153 fmv.d.x ft2,a2 + 80002dd8: 2220a053 fsgnjx.d ft0,ft1,ft2 + 80002ddc: e2000553 fmv.x.d a0,ft0 + 80002de0: 00247eb7 lui t4,0x247 + 80002de4: 8ade8e9b addiw t4,t4,-1875 + 80002de8: 00ee9e93 slli t4,t4,0xe + 80002dec: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80002df0: 00ce9e93 slli t4,t4,0xc + 80002df4: 5e7e8e93 addi t4,t4,1511 + 80002df8: 00de9e93 slli t4,t4,0xd + 80002dfc: ef0e8e93 addi t4,t4,-272 + 80002e00: 01e00193 li gp,30 + 80002e04: 3bd512e3 bne a0,t4,800039a8 + +0000000080002e08 : + 80002e08: 002475b7 lui a1,0x247 + 80002e0c: 8ad5859b addiw a1,a1,-1875 + 80002e10: 00e59593 slli a1,a1,0xe + 80002e14: c4d58593 addi a1,a1,-947 # 246c4d <_start-0x7fdb93b3> + 80002e18: 00c59593 slli a1,a1,0xc + 80002e1c: 5e758593 addi a1,a1,1511 + 80002e20: 00d59593 slli a1,a1,0xd + 80002e24: ef058593 addi a1,a1,-272 + 80002e28: fff00613 li a2,-1 + 80002e2c: f20580d3 fmv.d.x ft1,a1 + 80002e30: f2060153 fmv.d.x ft2,a2 + 80002e34: 2220a053 fsgnjx.d ft0,ft1,ft2 + 80002e38: e2000553 fmv.x.d a0,ft0 + 80002e3c: ff247eb7 lui t4,0xff247 + 80002e40: 8ade8e9b addiw t4,t4,-1875 + 80002e44: 00ee9e93 slli t4,t4,0xe + 80002e48: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002e4c: 00ce9e93 slli t4,t4,0xc + 80002e50: 5e7e8e93 addi t4,t4,1511 + 80002e54: 00de9e93 slli t4,t4,0xd + 80002e58: ef0e8e93 addi t4,t4,-272 + 80002e5c: 01f00193 li gp,31 + 80002e60: 35d514e3 bne a0,t4,800039a8 + +0000000080002e64 : + 80002e64: ff2475b7 lui a1,0xff247 + 80002e68: 8ad5859b addiw a1,a1,-1875 + 80002e6c: 00e59593 slli a1,a1,0xe + 80002e70: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002e74: 00c59593 slli a1,a1,0xc + 80002e78: 5e758593 addi a1,a1,1511 + 80002e7c: 00d59593 slli a1,a1,0xd + 80002e80: ef058593 addi a1,a1,-272 + 80002e84: 00000613 li a2,0 + 80002e88: f20580d3 fmv.d.x ft1,a1 + 80002e8c: f2060153 fmv.d.x ft2,a2 + 80002e90: 2220a053 fsgnjx.d ft0,ft1,ft2 + 80002e94: e2000553 fmv.x.d a0,ft0 + 80002e98: ff247eb7 lui t4,0xff247 + 80002e9c: 8ade8e9b addiw t4,t4,-1875 + 80002ea0: 00ee9e93 slli t4,t4,0xe + 80002ea4: c4de8e93 addi t4,t4,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002ea8: 00ce9e93 slli t4,t4,0xc + 80002eac: 5e7e8e93 addi t4,t4,1511 + 80002eb0: 00de9e93 slli t4,t4,0xd + 80002eb4: ef0e8e93 addi t4,t4,-272 + 80002eb8: 02000193 li gp,32 + 80002ebc: 2fd516e3 bne a0,t4,800039a8 + +0000000080002ec0 : + 80002ec0: ff2475b7 lui a1,0xff247 + 80002ec4: 8ad5859b addiw a1,a1,-1875 + 80002ec8: 00e59593 slli a1,a1,0xe + 80002ecc: c4d58593 addi a1,a1,-947 # ffffffffff246c4d <_end+0xffffffff7f23e45d> + 80002ed0: 00c59593 slli a1,a1,0xc + 80002ed4: 5e758593 addi a1,a1,1511 + 80002ed8: 00d59593 slli a1,a1,0xd + 80002edc: ef058593 addi a1,a1,-272 + 80002ee0: fff00613 li a2,-1 + 80002ee4: f20580d3 fmv.d.x ft1,a1 + 80002ee8: f2060153 fmv.d.x ft2,a2 + 80002eec: 2220a053 fsgnjx.d ft0,ft1,ft2 + 80002ef0: e2000553 fmv.x.d a0,ft0 + 80002ef4: 00247eb7 lui t4,0x247 + 80002ef8: 8ade8e9b addiw t4,t4,-1875 + 80002efc: 00ee9e93 slli t4,t4,0xe + 80002f00: c4de8e93 addi t4,t4,-947 # 246c4d <_start-0x7fdb93b3> + 80002f04: 00ce9e93 slli t4,t4,0xc + 80002f08: 5e7e8e93 addi t4,t4,1511 + 80002f0c: 00de9e93 slli t4,t4,0xd + 80002f10: ef0e8e93 addi t4,t4,-272 + 80002f14: 02100193 li gp,33 + 80002f18: 29d518e3 bne a0,t4,800039a8 + +0000000080002f1c : + 80002f1c: 0010059b addiw a1,zero,1 + 80002f20: 02659593 slli a1,a1,0x26 + 80002f24: f0958593 addi a1,a1,-247 + 80002f28: 00d59593 slli a1,a1,0xd + 80002f2c: 34558593 addi a1,a1,837 + 80002f30: 00c59593 slli a1,a1,0xc + 80002f34: 67858593 addi a1,a1,1656 + 80002f38: 00000613 li a2,0 + 80002f3c: f20580d3 fmv.d.x ft1,a1 + 80002f40: f2060153 fmv.d.x ft2,a2 + 80002f44: 20208053 fsgnj.s ft0,ft1,ft2 + 80002f48: e0000553 fmv.x.w a0,ft0 + 80002f4c: 7fc00eb7 lui t4,0x7fc00 + 80002f50: 02800193 li gp,40 + 80002f54: 25d51ae3 bne a0,t4,800039a8 + +0000000080002f58 : + 80002f58: 0010059b addiw a1,zero,1 + 80002f5c: 02659593 slli a1,a1,0x26 + 80002f60: f0958593 addi a1,a1,-247 + 80002f64: 00d59593 slli a1,a1,0xd + 80002f68: 34558593 addi a1,a1,837 + 80002f6c: 00c59593 slli a1,a1,0xc + 80002f70: 67858593 addi a1,a1,1656 + 80002f74: 00000613 li a2,0 + 80002f78: f20580d3 fmv.d.x ft1,a1 + 80002f7c: f2060153 fmv.d.x ft2,a2 + 80002f80: 20208053 fsgnj.s ft0,ft1,ft2 + 80002f84: e2000553 fmv.x.d a0,ft0 + 80002f88: dff00e9b addiw t4,zero,-513 + 80002f8c: 016e9e93 slli t4,t4,0x16 + 80002f90: 08c00193 li gp,140 + 80002f94: 21d51ae3 bne a0,t4,800039a8 + +0000000080002f98 : + 80002f98: ffe125b7 lui a1,0xffe12 + 80002f9c: 3455859b addiw a1,a1,837 + 80002fa0: 00c59593 slli a1,a1,0xc + 80002fa4: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe09e88> + 80002fa8: 00000613 li a2,0 + 80002fac: f20580d3 fmv.d.x ft1,a1 + 80002fb0: f2060153 fmv.d.x ft2,a2 + 80002fb4: 20208053 fsgnj.s ft0,ft1,ft2 + 80002fb8: e0000553 fmv.x.w a0,ft0 + 80002fbc: 7fc00eb7 lui t4,0x7fc00 + 80002fc0: 02900193 li gp,41 + 80002fc4: 1fd512e3 bne a0,t4,800039a8 + +0000000080002fc8 : + 80002fc8: ffe125b7 lui a1,0xffe12 + 80002fcc: 3455859b addiw a1,a1,837 + 80002fd0: 00c59593 slli a1,a1,0xc + 80002fd4: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe09e88> + 80002fd8: 00000613 li a2,0 + 80002fdc: f20580d3 fmv.d.x ft1,a1 + 80002fe0: f2060153 fmv.d.x ft2,a2 + 80002fe4: 20208053 fsgnj.s ft0,ft1,ft2 + 80002fe8: e2000553 fmv.x.d a0,ft0 + 80002fec: dff00e9b addiw t4,zero,-513 + 80002ff0: 016e9e93 slli t4,t4,0x16 + 80002ff4: 08d00193 li gp,141 + 80002ff8: 1bd518e3 bne a0,t4,800039a8 + +0000000080002ffc : + 80002ffc: 0010059b addiw a1,zero,1 + 80003000: 02659593 slli a1,a1,0x26 + 80003004: f8958593 addi a1,a1,-119 + 80003008: 00d59593 slli a1,a1,0xd + 8000300c: 34558593 addi a1,a1,837 + 80003010: 00c59593 slli a1,a1,0xc + 80003014: 67858593 addi a1,a1,1656 + 80003018: 00000613 li a2,0 + 8000301c: f20580d3 fmv.d.x ft1,a1 + 80003020: f2060153 fmv.d.x ft2,a2 + 80003024: 20208053 fsgnj.s ft0,ft1,ft2 + 80003028: e0000553 fmv.x.w a0,ft0 + 8000302c: 7fc00eb7 lui t4,0x7fc00 + 80003030: 02a00193 li gp,42 + 80003034: 17d51ae3 bne a0,t4,800039a8 + +0000000080003038 : + 80003038: 0010059b addiw a1,zero,1 + 8000303c: 02659593 slli a1,a1,0x26 + 80003040: f8958593 addi a1,a1,-119 + 80003044: 00d59593 slli a1,a1,0xd + 80003048: 34558593 addi a1,a1,837 + 8000304c: 00c59593 slli a1,a1,0xc + 80003050: 67858593 addi a1,a1,1656 + 80003054: 00000613 li a2,0 + 80003058: f20580d3 fmv.d.x ft1,a1 + 8000305c: f2060153 fmv.d.x ft2,a2 + 80003060: 20208053 fsgnj.s ft0,ft1,ft2 + 80003064: e2000553 fmv.x.d a0,ft0 + 80003068: dff00e9b addiw t4,zero,-513 + 8000306c: 016e9e93 slli t4,t4,0x16 + 80003070: 08e00193 li gp,142 + 80003074: 13d51ae3 bne a0,t4,800039a8 + +0000000080003078 : + 80003078: fff125b7 lui a1,0xfff12 + 8000307c: 3455859b addiw a1,a1,837 + 80003080: 00c59593 slli a1,a1,0xc + 80003084: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 80003088: 00000613 li a2,0 + 8000308c: f20580d3 fmv.d.x ft1,a1 + 80003090: f2060153 fmv.d.x ft2,a2 + 80003094: 20208053 fsgnj.s ft0,ft1,ft2 + 80003098: e0000553 fmv.x.w a0,ft0 + 8000309c: 12345eb7 lui t4,0x12345 + 800030a0: 678e8e9b addiw t4,t4,1656 + 800030a4: 02b00193 li gp,43 + 800030a8: 11d510e3 bne a0,t4,800039a8 + +00000000800030ac : + 800030ac: fff125b7 lui a1,0xfff12 + 800030b0: 3455859b addiw a1,a1,837 + 800030b4: 00c59593 slli a1,a1,0xc + 800030b8: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 800030bc: 00000613 li a2,0 + 800030c0: f20580d3 fmv.d.x ft1,a1 + 800030c4: f2060153 fmv.d.x ft2,a2 + 800030c8: 20208053 fsgnj.s ft0,ft1,ft2 + 800030cc: e2000553 fmv.x.d a0,ft0 + 800030d0: fff12eb7 lui t4,0xfff12 + 800030d4: 345e8e9b addiw t4,t4,837 + 800030d8: 00ce9e93 slli t4,t4,0xc + 800030dc: 678e8e93 addi t4,t4,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 800030e0: 08f00193 li gp,143 + 800030e4: 0dd512e3 bne a0,t4,800039a8 + +00000000800030e8 : + 800030e8: 0010059b addiw a1,zero,1 + 800030ec: 02659593 slli a1,a1,0x26 + 800030f0: f0958593 addi a1,a1,-247 + 800030f4: 00d59593 slli a1,a1,0xd + 800030f8: 34558593 addi a1,a1,837 + 800030fc: 00c59593 slli a1,a1,0xc + 80003100: 67858593 addi a1,a1,1656 + 80003104: 0010061b addiw a2,zero,1 + 80003108: 01f61613 slli a2,a2,0x1f + 8000310c: f20580d3 fmv.d.x ft1,a1 + 80003110: f2060153 fmv.d.x ft2,a2 + 80003114: 20208053 fsgnj.s ft0,ft1,ft2 + 80003118: e0000553 fmv.x.w a0,ft0 + 8000311c: 7fc00eb7 lui t4,0x7fc00 + 80003120: 03200193 li gp,50 + 80003124: 09d512e3 bne a0,t4,800039a8 + +0000000080003128 : + 80003128: 0010059b addiw a1,zero,1 + 8000312c: 02659593 slli a1,a1,0x26 + 80003130: f0958593 addi a1,a1,-247 + 80003134: 00d59593 slli a1,a1,0xd + 80003138: 34558593 addi a1,a1,837 + 8000313c: 00c59593 slli a1,a1,0xc + 80003140: 67858593 addi a1,a1,1656 + 80003144: 0010061b addiw a2,zero,1 + 80003148: 01f61613 slli a2,a2,0x1f + 8000314c: f20580d3 fmv.d.x ft1,a1 + 80003150: f2060153 fmv.d.x ft2,a2 + 80003154: 20208053 fsgnj.s ft0,ft1,ft2 + 80003158: e2000553 fmv.x.d a0,ft0 + 8000315c: dff00e9b addiw t4,zero,-513 + 80003160: 016e9e93 slli t4,t4,0x16 + 80003164: 09600193 li gp,150 + 80003168: 05d510e3 bne a0,t4,800039a8 + +000000008000316c : + 8000316c: ffe125b7 lui a1,0xffe12 + 80003170: 3455859b addiw a1,a1,837 + 80003174: 00c59593 slli a1,a1,0xc + 80003178: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe09e88> + 8000317c: 0010061b addiw a2,zero,1 + 80003180: 01f61613 slli a2,a2,0x1f + 80003184: f20580d3 fmv.d.x ft1,a1 + 80003188: f2060153 fmv.d.x ft2,a2 + 8000318c: 20208053 fsgnj.s ft0,ft1,ft2 + 80003190: e0000553 fmv.x.w a0,ft0 + 80003194: 7fc00eb7 lui t4,0x7fc00 + 80003198: 03300193 li gp,51 + 8000319c: 01d516e3 bne a0,t4,800039a8 + +00000000800031a0 : + 800031a0: ffe125b7 lui a1,0xffe12 + 800031a4: 3455859b addiw a1,a1,837 + 800031a8: 00c59593 slli a1,a1,0xc + 800031ac: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe09e88> + 800031b0: 0010061b addiw a2,zero,1 + 800031b4: 01f61613 slli a2,a2,0x1f + 800031b8: f20580d3 fmv.d.x ft1,a1 + 800031bc: f2060153 fmv.d.x ft2,a2 + 800031c0: 20208053 fsgnj.s ft0,ft1,ft2 + 800031c4: e2000553 fmv.x.d a0,ft0 + 800031c8: dff00e9b addiw t4,zero,-513 + 800031cc: 016e9e93 slli t4,t4,0x16 + 800031d0: 09700193 li gp,151 + 800031d4: 7dd51a63 bne a0,t4,800039a8 + +00000000800031d8 : + 800031d8: 0010059b addiw a1,zero,1 + 800031dc: 02659593 slli a1,a1,0x26 + 800031e0: f8958593 addi a1,a1,-119 + 800031e4: 00d59593 slli a1,a1,0xd + 800031e8: 34558593 addi a1,a1,837 + 800031ec: 00c59593 slli a1,a1,0xc + 800031f0: 67858593 addi a1,a1,1656 + 800031f4: 0010061b addiw a2,zero,1 + 800031f8: 01f61613 slli a2,a2,0x1f + 800031fc: f20580d3 fmv.d.x ft1,a1 + 80003200: f2060153 fmv.d.x ft2,a2 + 80003204: 20208053 fsgnj.s ft0,ft1,ft2 + 80003208: e0000553 fmv.x.w a0,ft0 + 8000320c: 7fc00eb7 lui t4,0x7fc00 + 80003210: 03400193 li gp,52 + 80003214: 79d51a63 bne a0,t4,800039a8 + +0000000080003218 : + 80003218: 0010059b addiw a1,zero,1 + 8000321c: 02659593 slli a1,a1,0x26 + 80003220: f8958593 addi a1,a1,-119 + 80003224: 00d59593 slli a1,a1,0xd + 80003228: 34558593 addi a1,a1,837 + 8000322c: 00c59593 slli a1,a1,0xc + 80003230: 67858593 addi a1,a1,1656 + 80003234: 0010061b addiw a2,zero,1 + 80003238: 01f61613 slli a2,a2,0x1f + 8000323c: f20580d3 fmv.d.x ft1,a1 + 80003240: f2060153 fmv.d.x ft2,a2 + 80003244: 20208053 fsgnj.s ft0,ft1,ft2 + 80003248: e2000553 fmv.x.d a0,ft0 + 8000324c: dff00e9b addiw t4,zero,-513 + 80003250: 016e9e93 slli t4,t4,0x16 + 80003254: 09800193 li gp,152 + 80003258: 75d51863 bne a0,t4,800039a8 + +000000008000325c : + 8000325c: fff125b7 lui a1,0xfff12 + 80003260: 3455859b addiw a1,a1,837 + 80003264: 00c59593 slli a1,a1,0xc + 80003268: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 8000326c: 0010061b addiw a2,zero,1 + 80003270: 01f61613 slli a2,a2,0x1f + 80003274: f20580d3 fmv.d.x ft1,a1 + 80003278: f2060153 fmv.d.x ft2,a2 + 8000327c: 20208053 fsgnj.s ft0,ft1,ft2 + 80003280: e0000553 fmv.x.w a0,ft0 + 80003284: 12345eb7 lui t4,0x12345 + 80003288: 678e8e9b addiw t4,t4,1656 + 8000328c: 03500193 li gp,53 + 80003290: 71d51c63 bne a0,t4,800039a8 + +0000000080003294 : + 80003294: fff125b7 lui a1,0xfff12 + 80003298: 3455859b addiw a1,a1,837 + 8000329c: 00c59593 slli a1,a1,0xc + 800032a0: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 800032a4: 0010061b addiw a2,zero,1 + 800032a8: 01f61613 slli a2,a2,0x1f + 800032ac: f20580d3 fmv.d.x ft1,a1 + 800032b0: f2060153 fmv.d.x ft2,a2 + 800032b4: 20208053 fsgnj.s ft0,ft1,ft2 + 800032b8: e2000553 fmv.x.d a0,ft0 + 800032bc: fff12eb7 lui t4,0xfff12 + 800032c0: 345e8e9b addiw t4,t4,837 + 800032c4: 00ce9e93 slli t4,t4,0xc + 800032c8: 678e8e93 addi t4,t4,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 800032cc: 09900193 li gp,153 + 800032d0: 6dd51c63 bne a0,t4,800039a8 + +00000000800032d4 : + 800032d4: 0010059b addiw a1,zero,1 + 800032d8: 02659593 slli a1,a1,0x26 + 800032dc: f0958593 addi a1,a1,-247 + 800032e0: 00d59593 slli a1,a1,0xd + 800032e4: 34558593 addi a1,a1,837 + 800032e8: 00c59593 slli a1,a1,0xc + 800032ec: 67858593 addi a1,a1,1656 + 800032f0: 80000637 lui a2,0x80000 + 800032f4: f20580d3 fmv.d.x ft1,a1 + 800032f8: f2060153 fmv.d.x ft2,a2 + 800032fc: 20208053 fsgnj.s ft0,ft1,ft2 + 80003300: e0000553 fmv.x.w a0,ft0 + 80003304: ffc00eb7 lui t4,0xffc00 + 80003308: 03c00193 li gp,60 + 8000330c: 69d51e63 bne a0,t4,800039a8 + +0000000080003310 : + 80003310: 0010059b addiw a1,zero,1 + 80003314: 02659593 slli a1,a1,0x26 + 80003318: f0958593 addi a1,a1,-247 + 8000331c: 00d59593 slli a1,a1,0xd + 80003320: 34558593 addi a1,a1,837 + 80003324: 00c59593 slli a1,a1,0xc + 80003328: 67858593 addi a1,a1,1656 + 8000332c: 80000637 lui a2,0x80000 + 80003330: f20580d3 fmv.d.x ft1,a1 + 80003334: f2060153 fmv.d.x ft2,a2 + 80003338: 20208053 fsgnj.s ft0,ft1,ft2 + 8000333c: e2000553 fmv.x.d a0,ft0 + 80003340: ffc00eb7 lui t4,0xffc00 + 80003344: 0a000193 li gp,160 + 80003348: 67d51063 bne a0,t4,800039a8 + +000000008000334c : + 8000334c: ffe125b7 lui a1,0xffe12 + 80003350: 3455859b addiw a1,a1,837 + 80003354: 00c59593 slli a1,a1,0xc + 80003358: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe09e88> + 8000335c: 80000637 lui a2,0x80000 + 80003360: f20580d3 fmv.d.x ft1,a1 + 80003364: f2060153 fmv.d.x ft2,a2 + 80003368: 20208053 fsgnj.s ft0,ft1,ft2 + 8000336c: e0000553 fmv.x.w a0,ft0 + 80003370: ffc00eb7 lui t4,0xffc00 + 80003374: 03d00193 li gp,61 + 80003378: 63d51863 bne a0,t4,800039a8 + +000000008000337c : + 8000337c: ffe125b7 lui a1,0xffe12 + 80003380: 3455859b addiw a1,a1,837 + 80003384: 00c59593 slli a1,a1,0xc + 80003388: 67858593 addi a1,a1,1656 # ffffffffffe12678 <_end+0xffffffff7fe09e88> + 8000338c: 80000637 lui a2,0x80000 + 80003390: f20580d3 fmv.d.x ft1,a1 + 80003394: f2060153 fmv.d.x ft2,a2 + 80003398: 20208053 fsgnj.s ft0,ft1,ft2 + 8000339c: e2000553 fmv.x.d a0,ft0 + 800033a0: ffc00eb7 lui t4,0xffc00 + 800033a4: 0a100193 li gp,161 + 800033a8: 61d51063 bne a0,t4,800039a8 + +00000000800033ac : + 800033ac: fff125b7 lui a1,0xfff12 + 800033b0: 3455859b addiw a1,a1,837 + 800033b4: 00c59593 slli a1,a1,0xc + 800033b8: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 800033bc: 80000637 lui a2,0x80000 + 800033c0: f20580d3 fmv.d.x ft1,a1 + 800033c4: f2060153 fmv.d.x ft2,a2 + 800033c8: 20208053 fsgnj.s ft0,ft1,ft2 + 800033cc: e0000553 fmv.x.w a0,ft0 + 800033d0: 92345eb7 lui t4,0x92345 + 800033d4: 678e8e9b addiw t4,t4,1656 + 800033d8: 03e00193 li gp,62 + 800033dc: 5dd51663 bne a0,t4,800039a8 + +00000000800033e0 : + 800033e0: fff125b7 lui a1,0xfff12 + 800033e4: 3455859b addiw a1,a1,837 + 800033e8: 00c59593 slli a1,a1,0xc + 800033ec: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 800033f0: 80000637 lui a2,0x80000 + 800033f4: f20580d3 fmv.d.x ft1,a1 + 800033f8: f2060153 fmv.d.x ft2,a2 + 800033fc: 20208053 fsgnj.s ft0,ft1,ft2 + 80003400: e2000553 fmv.x.d a0,ft0 + 80003404: 92345eb7 lui t4,0x92345 + 80003408: 678e8e9b addiw t4,t4,1656 + 8000340c: 0a200193 li gp,162 + 80003410: 59d51c63 bne a0,t4,800039a8 + +0000000080003414 : + 80003414: fff125b7 lui a1,0xfff12 + 80003418: 3455859b addiw a1,a1,837 + 8000341c: 00c59593 slli a1,a1,0xc + 80003420: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 80003424: 0010061b addiw a2,zero,1 + 80003428: 02061613 slli a2,a2,0x20 + 8000342c: fff60613 addi a2,a2,-1 # ffffffff7fffffff <_end+0xfffffffeffff780f> + 80003430: 01f61613 slli a2,a2,0x1f + 80003434: f20580d3 fmv.d.x ft1,a1 + 80003438: f2060153 fmv.d.x ft2,a2 + 8000343c: 20208053 fsgnj.s ft0,ft1,ft2 + 80003440: e0000553 fmv.x.w a0,ft0 + 80003444: 12345eb7 lui t4,0x12345 + 80003448: 678e8e9b addiw t4,t4,1656 + 8000344c: 03f00193 li gp,63 + 80003450: 55d51c63 bne a0,t4,800039a8 + +0000000080003454 : + 80003454: fff125b7 lui a1,0xfff12 + 80003458: 3455859b addiw a1,a1,837 + 8000345c: 00c59593 slli a1,a1,0xc + 80003460: 67858593 addi a1,a1,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 80003464: 0010061b addiw a2,zero,1 + 80003468: 02061613 slli a2,a2,0x20 + 8000346c: fff60613 addi a2,a2,-1 + 80003470: 01f61613 slli a2,a2,0x1f + 80003474: f20580d3 fmv.d.x ft1,a1 + 80003478: f2060153 fmv.d.x ft2,a2 + 8000347c: 20208053 fsgnj.s ft0,ft1,ft2 + 80003480: e2000553 fmv.x.d a0,ft0 + 80003484: fff12eb7 lui t4,0xfff12 + 80003488: 345e8e9b addiw t4,t4,837 + 8000348c: 00ce9e93 slli t4,t4,0xc + 80003490: 678e8e93 addi t4,t4,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88> + 80003494: 0a300193 li gp,163 + 80003498: 51d51863 bne a0,t4,800039a8 + +000000008000349c : + 8000349c: fff115b7 lui a1,0xfff11 + 800034a0: 1115859b addiw a1,a1,273 + 800034a4: 00c59593 slli a1,a1,0xc + 800034a8: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 800034ac: fff11637 lui a2,0xfff11 + 800034b0: 1116061b addiw a2,a2,273 + 800034b4: 00c61613 slli a2,a2,0xc + 800034b8: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 800034bc: f20580d3 fmv.d.x ft1,a1 + 800034c0: f2060153 fmv.d.x ft2,a2 + 800034c4: 22208053 fsgnj.d ft0,ft1,ft2 + 800034c8: a0002553 feq.s a0,ft0,ft0 + 800034cc: fff50513 addi a0,a0,-1 + 800034d0: 00051463 bnez a0,800034d8 + 800034d4: e0000553 fmv.x.w a0,ft0 + 800034d8: 11111eb7 lui t4,0x11111 + 800034dc: 111e8e9b addiw t4,t4,273 + 800034e0: 04600193 li gp,70 + 800034e4: 4dd51263 bne a0,t4,800039a8 + +00000000800034e8 : + 800034e8: fff115b7 lui a1,0xfff11 + 800034ec: 1115859b addiw a1,a1,273 + 800034f0: 00c59593 slli a1,a1,0xc + 800034f4: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 800034f8: fff11637 lui a2,0xfff11 + 800034fc: 1116061b addiw a2,a2,273 + 80003500: 00c61613 slli a2,a2,0xc + 80003504: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003508: f20580d3 fmv.d.x ft1,a1 + 8000350c: f2060153 fmv.d.x ft2,a2 + 80003510: 22208053 fsgnj.d ft0,ft1,ft2 + 80003514: e2000553 fmv.x.d a0,ft0 + 80003518: fff11eb7 lui t4,0xfff11 + 8000351c: 111e8e9b addiw t4,t4,273 + 80003520: 00ce9e93 slli t4,t4,0xc + 80003524: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003528: 0aa00193 li gp,170 + 8000352c: 47d51e63 bne a0,t4,800039a8 + +0000000080003530 : + 80003530: fff115b7 lui a1,0xfff11 + 80003534: 1115859b addiw a1,a1,273 + 80003538: 00c59593 slli a1,a1,0xc + 8000353c: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003540: 0010061b addiw a2,zero,1 + 80003544: 02761613 slli a2,a2,0x27 + 80003548: f1160613 addi a2,a2,-239 + 8000354c: 00c61613 slli a2,a2,0xc + 80003550: 11160613 addi a2,a2,273 + 80003554: 00c61613 slli a2,a2,0xc + 80003558: 11160613 addi a2,a2,273 + 8000355c: f20580d3 fmv.d.x ft1,a1 + 80003560: f2060153 fmv.d.x ft2,a2 + 80003564: 22208053 fsgnj.d ft0,ft1,ft2 + 80003568: a0002553 feq.s a0,ft0,ft0 + 8000356c: 00050513 mv a0,a0 + 80003570: 00051463 bnez a0,80003578 + 80003574: e0000553 fmv.x.w a0,ft0 + 80003578: 11111eb7 lui t4,0x11111 + 8000357c: 111e8e9b addiw t4,t4,273 + 80003580: 04700193 li gp,71 + 80003584: 43d51263 bne a0,t4,800039a8 + +0000000080003588 : + 80003588: fff115b7 lui a1,0xfff11 + 8000358c: 1115859b addiw a1,a1,273 + 80003590: 00c59593 slli a1,a1,0xc + 80003594: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003598: 0010061b addiw a2,zero,1 + 8000359c: 02761613 slli a2,a2,0x27 + 800035a0: f1160613 addi a2,a2,-239 + 800035a4: 00c61613 slli a2,a2,0xc + 800035a8: 11160613 addi a2,a2,273 + 800035ac: 00c61613 slli a2,a2,0xc + 800035b0: 11160613 addi a2,a2,273 + 800035b4: f20580d3 fmv.d.x ft1,a1 + 800035b8: f2060153 fmv.d.x ft2,a2 + 800035bc: 22208053 fsgnj.d ft0,ft1,ft2 + 800035c0: e2000553 fmv.x.d a0,ft0 + 800035c4: 00100e9b addiw t4,zero,1 + 800035c8: 027e9e93 slli t4,t4,0x27 + 800035cc: f11e8e93 addi t4,t4,-239 # 11110f11 <_start-0x6eeef0ef> + 800035d0: 00ce9e93 slli t4,t4,0xc + 800035d4: 111e8e93 addi t4,t4,273 + 800035d8: 00ce9e93 slli t4,t4,0xc + 800035dc: 111e8e93 addi t4,t4,273 + 800035e0: 0ab00193 li gp,171 + 800035e4: 3dd51263 bne a0,t4,800039a8 + +00000000800035e8 : + 800035e8: fff115b7 lui a1,0xfff11 + 800035ec: 1115859b addiw a1,a1,273 + 800035f0: 00c59593 slli a1,a1,0xc + 800035f4: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 800035f8: 91111637 lui a2,0x91111 + 800035fc: 1116061b addiw a2,a2,273 + 80003600: f20580d3 fmv.d.x ft1,a1 + 80003604: f2060153 fmv.d.x ft2,a2 + 80003608: 22208053 fsgnj.d ft0,ft1,ft2 + 8000360c: a0002553 feq.s a0,ft0,ft0 + 80003610: fff50513 addi a0,a0,-1 + 80003614: 00051463 bnez a0,8000361c + 80003618: e0000553 fmv.x.w a0,ft0 + 8000361c: 11111eb7 lui t4,0x11111 + 80003620: 111e8e9b addiw t4,t4,273 + 80003624: 04800193 li gp,72 + 80003628: 39d51063 bne a0,t4,800039a8 + +000000008000362c : + 8000362c: fff115b7 lui a1,0xfff11 + 80003630: 1115859b addiw a1,a1,273 + 80003634: 00c59593 slli a1,a1,0xc + 80003638: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 8000363c: 91111637 lui a2,0x91111 + 80003640: 1116061b addiw a2,a2,273 + 80003644: f20580d3 fmv.d.x ft1,a1 + 80003648: f2060153 fmv.d.x ft2,a2 + 8000364c: 22208053 fsgnj.d ft0,ft1,ft2 + 80003650: e2000553 fmv.x.d a0,ft0 + 80003654: fff11eb7 lui t4,0xfff11 + 80003658: 111e8e9b addiw t4,t4,273 + 8000365c: 00ce9e93 slli t4,t4,0xc + 80003660: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003664: 0ac00193 li gp,172 + 80003668: 35d51063 bne a0,t4,800039a8 + +000000008000366c : + 8000366c: fff115b7 lui a1,0xfff11 + 80003670: 1115859b addiw a1,a1,273 + 80003674: 00c59593 slli a1,a1,0xc + 80003678: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 8000367c: fff0061b addiw a2,zero,-1 + 80003680: 03f61613 slli a2,a2,0x3f + 80003684: f20580d3 fmv.d.x ft1,a1 + 80003688: f2060153 fmv.d.x ft2,a2 + 8000368c: 22208053 fsgnj.d ft0,ft1,ft2 + 80003690: a0002553 feq.s a0,ft0,ft0 + 80003694: fff50513 addi a0,a0,-1 + 80003698: 00051463 bnez a0,800036a0 + 8000369c: e0000553 fmv.x.w a0,ft0 + 800036a0: 11111eb7 lui t4,0x11111 + 800036a4: 111e8e9b addiw t4,t4,273 + 800036a8: 04900193 li gp,73 + 800036ac: 2fd51e63 bne a0,t4,800039a8 + +00000000800036b0 : + 800036b0: fff115b7 lui a1,0xfff11 + 800036b4: 1115859b addiw a1,a1,273 + 800036b8: 00c59593 slli a1,a1,0xc + 800036bc: 11158593 addi a1,a1,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 800036c0: fff0061b addiw a2,zero,-1 + 800036c4: 03f61613 slli a2,a2,0x3f + 800036c8: f20580d3 fmv.d.x ft1,a1 + 800036cc: f2060153 fmv.d.x ft2,a2 + 800036d0: 22208053 fsgnj.d ft0,ft1,ft2 + 800036d4: e2000553 fmv.x.d a0,ft0 + 800036d8: fff11eb7 lui t4,0xfff11 + 800036dc: 111e8e9b addiw t4,t4,273 + 800036e0: 00ce9e93 slli t4,t4,0xc + 800036e4: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 800036e8: 0ad00193 li gp,173 + 800036ec: 2bd51e63 bne a0,t4,800039a8 + +00000000800036f0 : + 800036f0: 0010059b addiw a1,zero,1 + 800036f4: 02759593 slli a1,a1,0x27 + 800036f8: f1158593 addi a1,a1,-239 + 800036fc: 00c59593 slli a1,a1,0xc + 80003700: 11158593 addi a1,a1,273 + 80003704: 00c59593 slli a1,a1,0xc + 80003708: 11158593 addi a1,a1,273 + 8000370c: fff11637 lui a2,0xfff11 + 80003710: 1116061b addiw a2,a2,273 + 80003714: 00c61613 slli a2,a2,0xc + 80003718: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 8000371c: f20580d3 fmv.d.x ft1,a1 + 80003720: f2060153 fmv.d.x ft2,a2 + 80003724: 22208053 fsgnj.d ft0,ft1,ft2 + 80003728: a0002553 feq.s a0,ft0,ft0 + 8000372c: fff50513 addi a0,a0,-1 + 80003730: 00051463 bnez a0,80003738 + 80003734: e0000553 fmv.x.w a0,ft0 + 80003738: 11111eb7 lui t4,0x11111 + 8000373c: 111e8e9b addiw t4,t4,273 + 80003740: 04a00193 li gp,74 + 80003744: 27d51263 bne a0,t4,800039a8 + +0000000080003748 : + 80003748: 0010059b addiw a1,zero,1 + 8000374c: 02759593 slli a1,a1,0x27 + 80003750: f1158593 addi a1,a1,-239 + 80003754: 00c59593 slli a1,a1,0xc + 80003758: 11158593 addi a1,a1,273 + 8000375c: 00c59593 slli a1,a1,0xc + 80003760: 11158593 addi a1,a1,273 + 80003764: fff11637 lui a2,0xfff11 + 80003768: 1116061b addiw a2,a2,273 + 8000376c: 00c61613 slli a2,a2,0xc + 80003770: 11160613 addi a2,a2,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003774: f20580d3 fmv.d.x ft1,a1 + 80003778: f2060153 fmv.d.x ft2,a2 + 8000377c: 22208053 fsgnj.d ft0,ft1,ft2 + 80003780: e2000553 fmv.x.d a0,ft0 + 80003784: fff11eb7 lui t4,0xfff11 + 80003788: 111e8e9b addiw t4,t4,273 + 8000378c: 00ce9e93 slli t4,t4,0xc + 80003790: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003794: 0ae00193 li gp,174 + 80003798: 21d51863 bne a0,t4,800039a8 + +000000008000379c : + 8000379c: 0010059b addiw a1,zero,1 + 800037a0: 02759593 slli a1,a1,0x27 + 800037a4: f1158593 addi a1,a1,-239 + 800037a8: 00c59593 slli a1,a1,0xc + 800037ac: 11158593 addi a1,a1,273 + 800037b0: 00c59593 slli a1,a1,0xc + 800037b4: 11158593 addi a1,a1,273 + 800037b8: 0010061b addiw a2,zero,1 + 800037bc: 02761613 slli a2,a2,0x27 + 800037c0: f1160613 addi a2,a2,-239 + 800037c4: 00c61613 slli a2,a2,0xc + 800037c8: 11160613 addi a2,a2,273 + 800037cc: 00c61613 slli a2,a2,0xc + 800037d0: 11160613 addi a2,a2,273 + 800037d4: f20580d3 fmv.d.x ft1,a1 + 800037d8: f2060153 fmv.d.x ft2,a2 + 800037dc: 22208053 fsgnj.d ft0,ft1,ft2 + 800037e0: a0002553 feq.s a0,ft0,ft0 + 800037e4: 00050513 mv a0,a0 + 800037e8: 00051463 bnez a0,800037f0 + 800037ec: e0000553 fmv.x.w a0,ft0 + 800037f0: 11111eb7 lui t4,0x11111 + 800037f4: 111e8e9b addiw t4,t4,273 + 800037f8: 04b00193 li gp,75 + 800037fc: 1bd51663 bne a0,t4,800039a8 + +0000000080003800 : + 80003800: 0010059b addiw a1,zero,1 + 80003804: 02759593 slli a1,a1,0x27 + 80003808: f1158593 addi a1,a1,-239 + 8000380c: 00c59593 slli a1,a1,0xc + 80003810: 11158593 addi a1,a1,273 + 80003814: 00c59593 slli a1,a1,0xc + 80003818: 11158593 addi a1,a1,273 + 8000381c: 0010061b addiw a2,zero,1 + 80003820: 02761613 slli a2,a2,0x27 + 80003824: f1160613 addi a2,a2,-239 + 80003828: 00c61613 slli a2,a2,0xc + 8000382c: 11160613 addi a2,a2,273 + 80003830: 00c61613 slli a2,a2,0xc + 80003834: 11160613 addi a2,a2,273 + 80003838: f20580d3 fmv.d.x ft1,a1 + 8000383c: f2060153 fmv.d.x ft2,a2 + 80003840: 22208053 fsgnj.d ft0,ft1,ft2 + 80003844: e2000553 fmv.x.d a0,ft0 + 80003848: 00100e9b addiw t4,zero,1 + 8000384c: 027e9e93 slli t4,t4,0x27 + 80003850: f11e8e93 addi t4,t4,-239 # 11110f11 <_start-0x6eeef0ef> + 80003854: 00ce9e93 slli t4,t4,0xc + 80003858: 111e8e93 addi t4,t4,273 + 8000385c: 00ce9e93 slli t4,t4,0xc + 80003860: 111e8e93 addi t4,t4,273 + 80003864: 0af00193 li gp,175 + 80003868: 15d51063 bne a0,t4,800039a8 + +000000008000386c : + 8000386c: 0010059b addiw a1,zero,1 + 80003870: 02759593 slli a1,a1,0x27 + 80003874: f1158593 addi a1,a1,-239 + 80003878: 00c59593 slli a1,a1,0xc + 8000387c: 11158593 addi a1,a1,273 + 80003880: 00c59593 slli a1,a1,0xc + 80003884: 11158593 addi a1,a1,273 + 80003888: 91111637 lui a2,0x91111 + 8000388c: 1116061b addiw a2,a2,273 + 80003890: f20580d3 fmv.d.x ft1,a1 + 80003894: f2060153 fmv.d.x ft2,a2 + 80003898: 22208053 fsgnj.d ft0,ft1,ft2 + 8000389c: a0002553 feq.s a0,ft0,ft0 + 800038a0: fff50513 addi a0,a0,-1 + 800038a4: 00051463 bnez a0,800038ac + 800038a8: e0000553 fmv.x.w a0,ft0 + 800038ac: 11111eb7 lui t4,0x11111 + 800038b0: 111e8e9b addiw t4,t4,273 + 800038b4: 04c00193 li gp,76 + 800038b8: 0fd51863 bne a0,t4,800039a8 + +00000000800038bc : + 800038bc: 0010059b addiw a1,zero,1 + 800038c0: 02759593 slli a1,a1,0x27 + 800038c4: f1158593 addi a1,a1,-239 + 800038c8: 00c59593 slli a1,a1,0xc + 800038cc: 11158593 addi a1,a1,273 + 800038d0: 00c59593 slli a1,a1,0xc + 800038d4: 11158593 addi a1,a1,273 + 800038d8: 91111637 lui a2,0x91111 + 800038dc: 1116061b addiw a2,a2,273 + 800038e0: f20580d3 fmv.d.x ft1,a1 + 800038e4: f2060153 fmv.d.x ft2,a2 + 800038e8: 22208053 fsgnj.d ft0,ft1,ft2 + 800038ec: e2000553 fmv.x.d a0,ft0 + 800038f0: fff11eb7 lui t4,0xfff11 + 800038f4: 111e8e9b addiw t4,t4,273 + 800038f8: 00ce9e93 slli t4,t4,0xc + 800038fc: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 80003900: 0b000193 li gp,176 + 80003904: 0bd51263 bne a0,t4,800039a8 + +0000000080003908 : + 80003908: 0010059b addiw a1,zero,1 + 8000390c: 02759593 slli a1,a1,0x27 + 80003910: f1158593 addi a1,a1,-239 + 80003914: 00c59593 slli a1,a1,0xc + 80003918: 11158593 addi a1,a1,273 + 8000391c: 00c59593 slli a1,a1,0xc + 80003920: 11158593 addi a1,a1,273 + 80003924: fff0061b addiw a2,zero,-1 + 80003928: 03f61613 slli a2,a2,0x3f + 8000392c: f20580d3 fmv.d.x ft1,a1 + 80003930: f2060153 fmv.d.x ft2,a2 + 80003934: 22208053 fsgnj.d ft0,ft1,ft2 + 80003938: a0002553 feq.s a0,ft0,ft0 + 8000393c: fff50513 addi a0,a0,-1 + 80003940: 00051463 bnez a0,80003948 + 80003944: e0000553 fmv.x.w a0,ft0 + 80003948: 11111eb7 lui t4,0x11111 + 8000394c: 111e8e9b addiw t4,t4,273 + 80003950: 04d00193 li gp,77 + 80003954: 05d51a63 bne a0,t4,800039a8 + +0000000080003958 : + 80003958: 0010059b addiw a1,zero,1 + 8000395c: 02759593 slli a1,a1,0x27 + 80003960: f1158593 addi a1,a1,-239 + 80003964: 00c59593 slli a1,a1,0xc + 80003968: 11158593 addi a1,a1,273 + 8000396c: 00c59593 slli a1,a1,0xc + 80003970: 11158593 addi a1,a1,273 + 80003974: fff0061b addiw a2,zero,-1 + 80003978: 03f61613 slli a2,a2,0x3f + 8000397c: f20580d3 fmv.d.x ft1,a1 + 80003980: f2060153 fmv.d.x ft2,a2 + 80003984: 22208053 fsgnj.d ft0,ft1,ft2 + 80003988: e2000553 fmv.x.d a0,ft0 + 8000398c: fff11eb7 lui t4,0xfff11 + 80003990: 111e8e9b addiw t4,t4,273 + 80003994: 00ce9e93 slli t4,t4,0xc + 80003998: 111e8e93 addi t4,t4,273 # fffffffffff11111 <_end+0xffffffff7ff08921> + 8000399c: 0b100193 li gp,177 + 800039a0: 01d51463 bne a0,t4,800039a8 + 800039a4: 00301a63 bne zero,gp,800039b8 + +00000000800039a8 : + 800039a8: 00119513 slli a0,gp,0x1 + 800039ac: 00050063 beqz a0,800039ac + 800039b0: 00156513 ori a0,a0,1 + 800039b4: 00000073 ecall + +00000000800039b8 : + 800039b8: 00100513 li a0,1 + 800039bc: 00000073 ecall + 800039c0: c0001073 unimp diff --git a/Tests/isa/rv64ud-v-recoding b/Tests/isa/rv64ud-v-recoding new file mode 100644 index 0000000..a889e4b Binary files /dev/null and b/Tests/isa/rv64ud-v-recoding differ diff --git a/Tests/isa/rv64ud-v-recoding.dump b/Tests/isa/rv64ud-v-recoding.dump new file mode 100644 index 0000000..7277ddd --- /dev/null +++ b/Tests/isa/rv64ud-v-recoding.dump @@ -0,0 +1,944 @@ + +rv64ud-v-recoding: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 78068693 addi a3,a3,1920 # 80002bd8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7b460613 addi a2,a2,1972 # 80002c68 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 77c60613 addi a2,a2,1916 # 80002c80 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6cc68693 addi a3,a3,1740 # 80002c20 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6e868693 addi a3,a3,1768 # 80002d58 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 66860613 addi a2,a2,1640 # 80002d30 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 59c68693 addi a3,a3,1436 # 80002d88 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4bc68693 addi a3,a3,1212 # 80002cf8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 44c68693 addi a3,a3,1100 # 80002cc0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03a00793 li a5,58 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 074a67b7 lui a5,0x74a6 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: ebf78793 addi a5,a5,-321 # 74a5ebf <_start-0x78b5a141> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + 80002acc: 00000517 auipc a0,0x0 + 80002ad0: 53453007 fld ft0,1332(a0) # 80003000 + 80002ad4: 00000517 auipc a0,0x0 + 80002ad8: 53453087 fld ft1,1332(a0) # 80003008 + 80002adc: 1200f0d3 fmul.d ft1,ft1,ft0 + +0000000080002ae0 : + 80002ae0: a2102553 feq.d a0,ft0,ft1 + 80002ae4: 00100e93 li t4,1 + 80002ae8: 00200193 li gp,2 + 80002aec: 0dd51663 bne a0,t4,80002bb8 + +0000000080002af0 : + 80002af0: a2100553 fle.d a0,ft0,ft1 + 80002af4: 00100e93 li t4,1 + 80002af8: 00300193 li gp,3 + 80002afc: 0bd51e63 bne a0,t4,80002bb8 + +0000000080002b00 : + 80002b00: a2101553 flt.d a0,ft0,ft1 + 80002b04: 00000e93 li t4,0 + 80002b08: 00400193 li gp,4 + 80002b0c: 0bd51663 bne a0,t4,80002bb8 + 80002b10: d2000053 fcvt.d.w ft0,zero + 80002b14: 00100513 li a0,1 + 80002b18: d20500d3 fcvt.d.w ft1,a0 + 80002b1c: 1200f0d3 fmul.d ft1,ft1,ft0 + +0000000080002b20 : + 80002b20: a2102553 feq.d a0,ft0,ft1 + 80002b24: 00100e93 li t4,1 + 80002b28: 00500193 li gp,5 + 80002b2c: 09d51663 bne a0,t4,80002bb8 + +0000000080002b30 : + 80002b30: a2100553 fle.d a0,ft0,ft1 + 80002b34: 00100e93 li t4,1 + 80002b38: 00600193 li gp,6 + 80002b3c: 07d51e63 bne a0,t4,80002bb8 + +0000000080002b40 : + 80002b40: a2101553 flt.d a0,ft0,ft1 + 80002b44: 00000e93 li t4,0 + 80002b48: 00700193 li gp,7 + 80002b4c: 07d51663 bne a0,t4,80002bb8 + 80002b50: 00000517 auipc a0,0x0 + 80002b54: 4c052007 flw ft0,1216(a0) # 80003010 + 80002b58: 00000517 auipc a0,0x0 + 80002b5c: 4c053087 fld ft1,1216(a0) # 80003018 + 80002b60: 4010f0d3 fcvt.s.d ft1,ft1 + 80002b64: 10107053 fmul.s ft0,ft0,ft1 + 80002b68: e0000553 fmv.x.w a0,ft0 + 80002b6c: 00000597 auipc a1,0x0 + 80002b70: 4a85a583 lw a1,1192(a1) # 80003014 + +0000000080002b74 : + 80002b74: 40b50533 sub a0,a0,a1 + 80002b78: 00000e93 li t4,0 + 80002b7c: 00a00193 li gp,10 + 80002b80: 03d51c63 bne a0,t4,80002bb8 + 80002b84: 00000517 auipc a0,0x0 + 80002b88: 48452007 flw ft0,1156(a0) # 80003008 + 80002b8c: 000070d3 fadd.s ft1,ft0,ft0 + 80002b90: 00007053 fadd.s ft0,ft0,ft0 + 80002b94: 00000517 auipc a0,0x0 + 80002b98: 48053227 fsd ft0,1156(a0) # 80003018 + 80002b9c: 00000517 auipc a0,0x0 + 80002ba0: 47c53007 fld ft0,1148(a0) # 80003018 + +0000000080002ba4 : + 80002ba4: a0102553 feq.s a0,ft0,ft1 + 80002ba8: 00100e93 li t4,1 + 80002bac: 01400193 li gp,20 + 80002bb0: 01d51463 bne a0,t4,80002bb8 + 80002bb4: 00301a63 bne zero,gp,80002bc8 + +0000000080002bb8 : + 80002bb8: 00119513 slli a0,gp,0x1 + 80002bbc: 00050063 beqz a0,80002bbc + 80002bc0: 00156513 ori a0,a0,1 + 80002bc4: 00000073 ecall + +0000000080002bc8 : + 80002bc8: 00100513 li a0,1 + 80002bcc: 00000073 ecall + 80002bd0: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 0000 unimp + 80003004: 0000 unimp + 80003006: fff0 sd a2,248(a5) + +0000000080003008 : + 80003008: 0000 unimp + 8000300a: 0000 unimp + 8000300c: 0000 unimp + 8000300e: 4008 lw a0,0(s0) + +0000000080003010 : + 80003010: a000 fsd fs0,0(s0) + 80003012: 4498 lw a4,8(s1) + +0000000080003014 : + 80003014: 450e lw a0,192(sp) + 80003016: 02c6 slli t0,t0,0x11 + +0000000080003018 : + 80003018: 0000 unimp + 8000301a: 0000 unimp + 8000301c: c8f8 sw a4,84(s1) + 8000301e: 37b4 fld fa3,104(a5) diff --git a/Tests/isa/rv64ud-v-structural b/Tests/isa/rv64ud-v-structural new file mode 100644 index 0000000..324ccdb Binary files /dev/null and b/Tests/isa/rv64ud-v-structural differ diff --git a/Tests/isa/rv64ud-v-structural.dump b/Tests/isa/rv64ud-v-structural.dump new file mode 100644 index 0000000..f8551d7 --- /dev/null +++ b/Tests/isa/rv64ud-v-structural.dump @@ -0,0 +1,1056 @@ + +rv64ud-v-structural: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: ab050513 addi a0,a0,-1360 # 80002ae0 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 9c868693 addi a3,a3,-1592 # 80002e20 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 9fc60613 addi a2,a2,-1540 # 80002eb0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 9c460613 addi a2,a2,-1596 # 80002ec8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 91468693 addi a3,a3,-1772 # 80002e68 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 93068693 addi a3,a3,-1744 # 80002fa0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 8b060613 addi a2,a2,-1872 # 80002f78 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 7e468693 addi a3,a3,2020 # 80002fd0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 70468693 addi a3,a3,1796 # 80002f40 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 69468693 addi a3,a3,1684 # 80002f08 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01b00793 li a5,27 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 081657b7 lui a5,0x8165 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: d7278793 addi a5,a5,-654 # 8164d72 <_start-0x77e9b28e> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + 80002ac8: 0000 unimp + 80002aca: 0000 unimp + 80002acc: 0000 unimp + 80002ace: 0000 unimp + 80002ad0: 0000 unimp + 80002ad2: 0000 unimp + 80002ad4: 0000 unimp + 80002ad6: 0000 unimp + 80002ad8: 0000 unimp + 80002ada: 0000 unimp + 80002adc: 0000 unimp + 80002ade: 0000 unimp + +0000000080002ae0 : + 80002ae0: 00301073 fssr zero + 80002ae4: 00100c93 li s9,1 + 80002ae8: 3ff0011b addiw sp,zero,1023 + 80002aec: 03411113 slli sp,sp,0x34 + 80002af0: 3f8000b7 lui ra,0x3f800 + 80002af4: f2000253 fmv.d.x ft4,zero + 80002af8: f00001d3 fmv.w.x ft3,zero + 80002afc: f2010153 fmv.d.x ft2,sp + 80002b00: f00080d3 fmv.w.x ft1,ra + 80002b04: 01c0006f j 80002b20 + 80002b08: 00000013 nop + 80002b0c: 00000013 nop + 80002b10: 00000013 nop + 80002b14: 00000013 nop + 80002b18: 00000013 nop + 80002b1c: 00000013 nop + 80002b20: 12217253 fmul.d ft4,ft2,ft2 + 80002b24: 201081d3 fmv.s ft3,ft1 + 80002b28: e2020253 fmv.x.d tp,ft4 + 80002b2c: e00182d3 fmv.x.w t0,ft3 + 80002b30: 00508a63 beq ra,t0,80002b44 + 80002b34: 00119513 slli a0,gp,0x1 + 80002b38: 00050063 beqz a0,80002b38 + 80002b3c: 00156513 ori a0,a0,1 + 80002b40: 00000073 ecall + 80002b44: 00410a63 beq sp,tp,80002b58 + 80002b48: 00119513 slli a0,gp,0x1 + 80002b4c: 00050063 beqz a0,80002b4c + 80002b50: 00156513 ori a0,a0,1 + 80002b54: 00000073 ecall + 80002b58: f2000153 fmv.d.x ft2,zero + 80002b5c: f00000d3 fmv.w.x ft1,zero + 80002b60: f2000253 fmv.d.x ft4,zero + 80002b64: f00001d3 fmv.w.x ft3,zero + 80002b68: f2010153 fmv.d.x ft2,sp + 80002b6c: f00080d3 fmv.w.x ft1,ra + 80002b70: 0100006f j 80002b80 + 80002b74: 00000013 nop + 80002b78: 00000013 nop + 80002b7c: 00000013 nop + 80002b80: 12217253 fmul.d ft4,ft2,ft2 + 80002b84: 00000013 nop + 80002b88: 201081d3 fmv.s ft3,ft1 + 80002b8c: e2020253 fmv.x.d tp,ft4 + 80002b90: e00182d3 fmv.x.w t0,ft3 + 80002b94: 00508a63 beq ra,t0,80002ba8 + 80002b98: 00119513 slli a0,gp,0x1 + 80002b9c: 00050063 beqz a0,80002b9c + 80002ba0: 00156513 ori a0,a0,1 + 80002ba4: 00000073 ecall + 80002ba8: 00410a63 beq sp,tp,80002bbc + 80002bac: 00119513 slli a0,gp,0x1 + 80002bb0: 00050063 beqz a0,80002bb0 + 80002bb4: 00156513 ori a0,a0,1 + 80002bb8: 00000073 ecall + 80002bbc: f2000153 fmv.d.x ft2,zero + 80002bc0: f00000d3 fmv.w.x ft1,zero + 80002bc4: f2000253 fmv.d.x ft4,zero + 80002bc8: f00001d3 fmv.w.x ft3,zero + 80002bcc: f2010153 fmv.d.x ft2,sp + 80002bd0: f00080d3 fmv.w.x ft1,ra + 80002bd4: 00c0006f j 80002be0 + 80002bd8: 00000013 nop + 80002bdc: 00000013 nop + 80002be0: 12217253 fmul.d ft4,ft2,ft2 + 80002be4: 00000013 nop + 80002be8: 00000013 nop + 80002bec: 201081d3 fmv.s ft3,ft1 + 80002bf0: e2020253 fmv.x.d tp,ft4 + 80002bf4: e00182d3 fmv.x.w t0,ft3 + 80002bf8: 00508a63 beq ra,t0,80002c0c + 80002bfc: 00119513 slli a0,gp,0x1 + 80002c00: 00050063 beqz a0,80002c00 + 80002c04: 00156513 ori a0,a0,1 + 80002c08: 00000073 ecall + 80002c0c: 00410a63 beq sp,tp,80002c20 + 80002c10: 00119513 slli a0,gp,0x1 + 80002c14: 00050063 beqz a0,80002c14 + 80002c18: 00156513 ori a0,a0,1 + 80002c1c: 00000073 ecall + 80002c20: f2000153 fmv.d.x ft2,zero + 80002c24: f00000d3 fmv.w.x ft1,zero + 80002c28: f2000253 fmv.d.x ft4,zero + 80002c2c: f00001d3 fmv.w.x ft3,zero + 80002c30: f2010153 fmv.d.x ft2,sp + 80002c34: f00080d3 fmv.w.x ft1,ra + 80002c38: 0080006f j 80002c40 + 80002c3c: 00000013 nop + 80002c40: 12217253 fmul.d ft4,ft2,ft2 + 80002c44: 00000013 nop + 80002c48: 00000013 nop + 80002c4c: 00000013 nop + 80002c50: 201081d3 fmv.s ft3,ft1 + 80002c54: e2020253 fmv.x.d tp,ft4 + 80002c58: e00182d3 fmv.x.w t0,ft3 + 80002c5c: 00508a63 beq ra,t0,80002c70 + 80002c60: 00119513 slli a0,gp,0x1 + 80002c64: 00050063 beqz a0,80002c64 + 80002c68: 00156513 ori a0,a0,1 + 80002c6c: 00000073 ecall + 80002c70: 00410a63 beq sp,tp,80002c84 + 80002c74: 00119513 slli a0,gp,0x1 + 80002c78: 00050063 beqz a0,80002c78 + 80002c7c: 00156513 ori a0,a0,1 + 80002c80: 00000073 ecall + 80002c84: f2000153 fmv.d.x ft2,zero + 80002c88: f00000d3 fmv.w.x ft1,zero + 80002c8c: f2000253 fmv.d.x ft4,zero + 80002c90: f00001d3 fmv.w.x ft3,zero + 80002c94: f2010153 fmv.d.x ft2,sp + 80002c98: f00080d3 fmv.w.x ft1,ra + 80002c9c: 0040006f j 80002ca0 + 80002ca0: 12217253 fmul.d ft4,ft2,ft2 + 80002ca4: 00000013 nop + 80002ca8: 00000013 nop + 80002cac: 00000013 nop + 80002cb0: 00000013 nop + 80002cb4: 201081d3 fmv.s ft3,ft1 + 80002cb8: e2020253 fmv.x.d tp,ft4 + 80002cbc: e00182d3 fmv.x.w t0,ft3 + 80002cc0: 00508a63 beq ra,t0,80002cd4 + 80002cc4: 00119513 slli a0,gp,0x1 + 80002cc8: 00050063 beqz a0,80002cc8 + 80002ccc: 00156513 ori a0,a0,1 + 80002cd0: 00000073 ecall + 80002cd4: 00410a63 beq sp,tp,80002ce8 + 80002cd8: 00119513 slli a0,gp,0x1 + 80002cdc: 00050063 beqz a0,80002cdc + 80002ce0: 00156513 ori a0,a0,1 + 80002ce4: 00000073 ecall + 80002ce8: f2000153 fmv.d.x ft2,zero + 80002cec: f00000d3 fmv.w.x ft1,zero + 80002cf0: f2000253 fmv.d.x ft4,zero + 80002cf4: f00001d3 fmv.w.x ft3,zero + 80002cf8: f2010153 fmv.d.x ft2,sp + 80002cfc: f00080d3 fmv.w.x ft1,ra + 80002d00: 0200006f j 80002d20 + 80002d04: 00000013 nop + 80002d08: 00000013 nop + 80002d0c: 00000013 nop + 80002d10: 00000013 nop + 80002d14: 00000013 nop + 80002d18: 00000013 nop + 80002d1c: 00000013 nop + 80002d20: 12217253 fmul.d ft4,ft2,ft2 + 80002d24: 00000013 nop + 80002d28: 00000013 nop + 80002d2c: 00000013 nop + 80002d30: 00000013 nop + 80002d34: 00000013 nop + 80002d38: 201081d3 fmv.s ft3,ft1 + 80002d3c: e2020253 fmv.x.d tp,ft4 + 80002d40: e00182d3 fmv.x.w t0,ft3 + 80002d44: 00508a63 beq ra,t0,80002d58 + 80002d48: 00119513 slli a0,gp,0x1 + 80002d4c: 00050063 beqz a0,80002d4c + 80002d50: 00156513 ori a0,a0,1 + 80002d54: 00000073 ecall + 80002d58: 00410a63 beq sp,tp,80002d6c + 80002d5c: 00119513 slli a0,gp,0x1 + 80002d60: 00050063 beqz a0,80002d60 + 80002d64: 00156513 ori a0,a0,1 + 80002d68: 00000073 ecall + 80002d6c: f2000153 fmv.d.x ft2,zero + 80002d70: f00000d3 fmv.w.x ft1,zero + 80002d74: f2000253 fmv.d.x ft4,zero + 80002d78: f00001d3 fmv.w.x ft3,zero + 80002d7c: f2010153 fmv.d.x ft2,sp + 80002d80: f00080d3 fmv.w.x ft1,ra + 80002d84: 01c0006f j 80002da0 + 80002d88: 00000013 nop + 80002d8c: 00000013 nop + 80002d90: 00000013 nop + 80002d94: 00000013 nop + 80002d98: 00000013 nop + 80002d9c: 00000013 nop + 80002da0: 12217253 fmul.d ft4,ft2,ft2 + 80002da4: 00000013 nop + 80002da8: 00000013 nop + 80002dac: 00000013 nop + 80002db0: 00000013 nop + 80002db4: 00000013 nop + 80002db8: 00000013 nop + 80002dbc: 201081d3 fmv.s ft3,ft1 + 80002dc0: e2020253 fmv.x.d tp,ft4 + 80002dc4: e00182d3 fmv.x.w t0,ft3 + 80002dc8: 00508a63 beq ra,t0,80002ddc + 80002dcc: 00119513 slli a0,gp,0x1 + 80002dd0: 00050063 beqz a0,80002dd0 + 80002dd4: 00156513 ori a0,a0,1 + 80002dd8: 00000073 ecall + 80002ddc: 00410a63 beq sp,tp,80002df0 + 80002de0: 00119513 slli a0,gp,0x1 + 80002de4: 00050063 beqz a0,80002de4 + 80002de8: 00156513 ori a0,a0,1 + 80002dec: 00000073 ecall + 80002df0: f2000153 fmv.d.x ft2,zero + 80002df4: f00000d3 fmv.w.x ft1,zero + 80002df8: 00100513 li a0,1 + 80002dfc: 00000073 ecall + 80002e00: c0001073 unimp + 80002e04: 0000 unimp + 80002e06: 0000 unimp + 80002e08: 0000 unimp + 80002e0a: 0000 unimp + 80002e0c: 0000 unimp + 80002e0e: 0000 unimp + 80002e10: 0000 unimp + 80002e12: 0000 unimp + 80002e14: 0000 unimp + 80002e16: 0000 unimp + 80002e18: 0000 unimp + 80002e1a: 0000 unimp + 80002e1c: 0000 unimp + 80002e1e: 0000 unimp diff --git a/Tests/isa/rv64uf-p-fadd b/Tests/isa/rv64uf-p-fadd new file mode 100644 index 0000000..39743c1 Binary files /dev/null and b/Tests/isa/rv64uf-p-fadd differ diff --git a/Tests/isa/rv64uf-p-fadd.dump b/Tests/isa/rv64uf-p-fadd.dump new file mode 100644 index 0000000..e8270cc --- /dev/null +++ b/Tests/isa/rv64uf-p-fadd.dump @@ -0,0 +1,342 @@ + +rv64uf-p-fadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00052007 flw ft0,0(a0) + 80000118: 00452087 flw ft1,4(a0) + 8000011c: 00852107 flw ft2,8(a0) + 80000120: 00c52683 lw a3,12(a0) + 80000124: 001071d3 fadd.s ft3,ft0,ft1 + 80000128: e0018553 fmv.x.w a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00000613 li a2,0 + 80000134: 1ed51063 bne a0,a3,80000314 + 80000138: 1cc59e63 bne a1,a2,80000314 + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ed050513 addi a0,a0,-304 # 80002010 + 80000148: 00052007 flw ft0,0(a0) + 8000014c: 00452087 flw ft1,4(a0) + 80000150: 00852107 flw ft2,8(a0) + 80000154: 00c52683 lw a3,12(a0) + 80000158: 001071d3 fadd.s ft3,ft0,ft1 + 8000015c: e0018553 fmv.x.w a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00100613 li a2,1 + 80000168: 1ad51663 bne a0,a3,80000314 + 8000016c: 1ac59463 bne a1,a2,80000314 + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: eac50513 addi a0,a0,-340 # 80002020 + 8000017c: 00052007 flw ft0,0(a0) + 80000180: 00452087 flw ft1,4(a0) + 80000184: 00852107 flw ft2,8(a0) + 80000188: 00c52683 lw a3,12(a0) + 8000018c: 001071d3 fadd.s ft3,ft0,ft1 + 80000190: e0018553 fmv.x.w a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00100613 li a2,1 + 8000019c: 16d51c63 bne a0,a3,80000314 + 800001a0: 16c59a63 bne a1,a2,80000314 + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: e8850513 addi a0,a0,-376 # 80002030 + 800001b0: 00052007 flw ft0,0(a0) + 800001b4: 00452087 flw ft1,4(a0) + 800001b8: 00852107 flw ft2,8(a0) + 800001bc: 00c52683 lw a3,12(a0) + 800001c0: 081071d3 fsub.s ft3,ft0,ft1 + 800001c4: e0018553 fmv.x.w a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00000613 li a2,0 + 800001d0: 14d51263 bne a0,a3,80000314 + 800001d4: 14c59063 bne a1,a2,80000314 + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: e6450513 addi a0,a0,-412 # 80002040 + 800001e4: 00052007 flw ft0,0(a0) + 800001e8: 00452087 flw ft1,4(a0) + 800001ec: 00852107 flw ft2,8(a0) + 800001f0: 00c52683 lw a3,12(a0) + 800001f4: 081071d3 fsub.s ft3,ft0,ft1 + 800001f8: e0018553 fmv.x.w a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00100613 li a2,1 + 80000204: 10d51863 bne a0,a3,80000314 + 80000208: 10c59663 bne a1,a2,80000314 + +000000008000020c : + 8000020c: 00700193 li gp,7 + 80000210: 00002517 auipc a0,0x2 + 80000214: e4050513 addi a0,a0,-448 # 80002050 + 80000218: 00052007 flw ft0,0(a0) + 8000021c: 00452087 flw ft1,4(a0) + 80000220: 00852107 flw ft2,8(a0) + 80000224: 00c52683 lw a3,12(a0) + 80000228: 081071d3 fsub.s ft3,ft0,ft1 + 8000022c: e0018553 fmv.x.w a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 00100613 li a2,1 + 80000238: 0cd51e63 bne a0,a3,80000314 + 8000023c: 0cc59c63 bne a1,a2,80000314 + +0000000080000240 : + 80000240: 00800193 li gp,8 + 80000244: 00002517 auipc a0,0x2 + 80000248: e1c50513 addi a0,a0,-484 # 80002060 + 8000024c: 00052007 flw ft0,0(a0) + 80000250: 00452087 flw ft1,4(a0) + 80000254: 00852107 flw ft2,8(a0) + 80000258: 00c52683 lw a3,12(a0) + 8000025c: 101071d3 fmul.s ft3,ft0,ft1 + 80000260: e0018553 fmv.x.w a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00000613 li a2,0 + 8000026c: 0ad51463 bne a0,a3,80000314 + 80000270: 0ac59263 bne a1,a2,80000314 + +0000000080000274 : + 80000274: 00900193 li gp,9 + 80000278: 00002517 auipc a0,0x2 + 8000027c: df850513 addi a0,a0,-520 # 80002070 + 80000280: 00052007 flw ft0,0(a0) + 80000284: 00452087 flw ft1,4(a0) + 80000288: 00852107 flw ft2,8(a0) + 8000028c: 00c52683 lw a3,12(a0) + 80000290: 101071d3 fmul.s ft3,ft0,ft1 + 80000294: e0018553 fmv.x.w a0,ft3 + 80000298: 001015f3 fsflags a1,zero + 8000029c: 00100613 li a2,1 + 800002a0: 06d51a63 bne a0,a3,80000314 + 800002a4: 06c59863 bne a1,a2,80000314 + +00000000800002a8 : + 800002a8: 00a00193 li gp,10 + 800002ac: 00002517 auipc a0,0x2 + 800002b0: dd450513 addi a0,a0,-556 # 80002080 + 800002b4: 00052007 flw ft0,0(a0) + 800002b8: 00452087 flw ft1,4(a0) + 800002bc: 00852107 flw ft2,8(a0) + 800002c0: 00c52683 lw a3,12(a0) + 800002c4: 101071d3 fmul.s ft3,ft0,ft1 + 800002c8: e0018553 fmv.x.w a0,ft3 + 800002cc: 001015f3 fsflags a1,zero + 800002d0: 00100613 li a2,1 + 800002d4: 04d51063 bne a0,a3,80000314 + 800002d8: 02c59e63 bne a1,a2,80000314 + +00000000800002dc : + 800002dc: 00b00193 li gp,11 + 800002e0: 00002517 auipc a0,0x2 + 800002e4: db050513 addi a0,a0,-592 # 80002090 + 800002e8: 00052007 flw ft0,0(a0) + 800002ec: 00452087 flw ft1,4(a0) + 800002f0: 00852107 flw ft2,8(a0) + 800002f4: 00c52683 lw a3,12(a0) + 800002f8: 081071d3 fsub.s ft3,ft0,ft1 + 800002fc: e0018553 fmv.x.w a0,ft3 + 80000300: 001015f3 fsflags a1,zero + 80000304: 01000613 li a2,16 + 80000308: 00d51663 bne a0,a3,80000314 + 8000030c: 00c59463 bne a1,a2,80000314 + 80000310: 00301c63 bne zero,gp,80000328 + +0000000080000314 : + 80000314: 0ff0000f fence + 80000318: 00018063 beqz gp,80000318 + 8000031c: 00119193 slli gp,gp,0x1 + 80000320: 0011e193 ori gp,gp,1 + 80000324: 00000073 ecall + +0000000080000328 : + 80000328: 0ff0000f fence + 8000032c: 00100193 li gp,1 + 80000330: 00000073 ecall + 80000334: c0001073 unimp + 80000338: 0000 unimp + 8000033a: 0000 unimp + 8000033c: 0000 unimp + 8000033e: 0000 unimp + 80000340: 0000 unimp + 80000342: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 4020 lw s0,64(s0) + 80002004: 0000 unimp + 80002006: 3f80 fld fs0,56(a5) + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 4060 lw s0,68(s0) + +0000000080002010 : + 80002010: c49a6333 0xc49a6333 + 80002014: cccd beqz s1,800020ce <_end+0x2e> + 80002016: 3f8c fld fa1,56(a5) + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: 4000 lw s0,0(s0) + 8000201e: c49a sw t1,72(sp) + +0000000080002020 : + 80002020: 40490fdb 0x40490fdb + 80002024: 322bcc77 0x322bcc77 + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: 40490fdb 0x40490fdb + +0000000080002030 : + 80002030: 0000 unimp + 80002032: 4020 lw s0,64(s0) + 80002034: 0000 unimp + 80002036: 3f80 fld fs0,56(a5) + 80002038: 0000 unimp + 8000203a: 0000 unimp + 8000203c: 0000 unimp + 8000203e: 3fc0 fld fs0,184(a5) + +0000000080002040 : + 80002040: c49a6333 0xc49a6333 + 80002044: cccd beqz s1,800020fe <_end+0x5e> + 80002046: bf8c fsd fa1,56(a5) + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 4000 lw s0,0(s0) + 8000204e: c49a sw t1,72(sp) + +0000000080002050 : + 80002050: 40490fdb 0x40490fdb + 80002054: 322bcc77 0x322bcc77 + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 40490fdb 0x40490fdb + +0000000080002060 : + 80002060: 0000 unimp + 80002062: 4020 lw s0,64(s0) + 80002064: 0000 unimp + 80002066: 3f80 fld fs0,56(a5) + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 4020 lw s0,64(s0) + +0000000080002070 : + 80002070: c49a6333 0xc49a6333 + 80002074: cccd beqz s1,8000212e <_end+0x8e> + 80002076: bf8c fsd fa1,56(a5) + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: d385 beqz a5,80001f9c + 8000207e: 44a9 li s1,10 + +0000000080002080 : + 80002080: 40490fdb 0x40490fdb + 80002084: 322bcc77 0x322bcc77 + 80002088: 0000 unimp + 8000208a: 0000 unimp + 8000208c: ee2d bnez a2,80002106 <_end+0x66> + 8000208e: 3306 fld ft6,96(sp) + +0000000080002090 : + 80002090: 0000 unimp + 80002092: 7f80 ld s0,56(a5) + 80002094: 0000 unimp + 80002096: 7f80 ld s0,56(a5) + 80002098: 0000 unimp + 8000209a: 0000 unimp + 8000209c: 0000 unimp + 8000209e: 7fc0 ld s0,184(a5) diff --git a/Tests/isa/rv64uf-p-fclass b/Tests/isa/rv64uf-p-fclass new file mode 100644 index 0000000..c6a8071 Binary files /dev/null and b/Tests/isa/rv64uf-p-fclass differ diff --git a/Tests/isa/rv64uf-p-fclass.dump b/Tests/isa/rv64uf-p-fclass.dump new file mode 100644 index 0000000..79c4968 --- /dev/null +++ b/Tests/isa/rv64uf-p-fclass.dump @@ -0,0 +1,186 @@ + +rv64uf-p-fclass: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 1ff0051b addiw a0,zero,511 + 8000010c: 01751513 slli a0,a0,0x17 + 80000110: f0050553 fmv.w.x fa0,a0 + 80000114: e0051553 fclass.s a0,fa0 + 80000118: 00100e93 li t4,1 + 8000011c: 00200193 li gp,2 + 80000120: 0fd51c63 bne a0,t4,80000218 + +0000000080000124 : + 80000124: 17f0051b addiw a0,zero,383 + 80000128: 01751513 slli a0,a0,0x17 + 8000012c: f0050553 fmv.w.x fa0,a0 + 80000130: e0051553 fclass.s a0,fa0 + 80000134: 00200e93 li t4,2 + 80000138: 00300193 li gp,3 + 8000013c: 0dd51e63 bne a0,t4,80000218 + +0000000080000140 : + 80000140: 1010051b addiw a0,zero,257 + 80000144: 01751513 slli a0,a0,0x17 + 80000148: fff50513 addi a0,a0,-1 # 1fff <_start-0x7fffe001> + 8000014c: f0050553 fmv.w.x fa0,a0 + 80000150: e0051553 fclass.s a0,fa0 + 80000154: 00400e93 li t4,4 + 80000158: 00400193 li gp,4 + 8000015c: 0bd51e63 bne a0,t4,80000218 + +0000000080000160 : + 80000160: 0010051b addiw a0,zero,1 + 80000164: 01f51513 slli a0,a0,0x1f + 80000168: f0050553 fmv.w.x fa0,a0 + 8000016c: e0051553 fclass.s a0,fa0 + 80000170: 00800e93 li t4,8 + 80000174: 00500193 li gp,5 + 80000178: 0bd51063 bne a0,t4,80000218 + +000000008000017c : + 8000017c: 00000513 li a0,0 + 80000180: f0050553 fmv.w.x fa0,a0 + 80000184: e0051553 fclass.s a0,fa0 + 80000188: 01000e93 li t4,16 + 8000018c: 00600193 li gp,6 + 80000190: 09d51463 bne a0,t4,80000218 + +0000000080000194 : + 80000194: 00800537 lui a0,0x800 + 80000198: fff5051b addiw a0,a0,-1 + 8000019c: f0050553 fmv.w.x fa0,a0 + 800001a0: e0051553 fclass.s a0,fa0 + 800001a4: 02000e93 li t4,32 + 800001a8: 00700193 li gp,7 + 800001ac: 07d51663 bne a0,t4,80000218 + +00000000800001b0 : + 800001b0: 3f800537 lui a0,0x3f800 + 800001b4: f0050553 fmv.w.x fa0,a0 + 800001b8: e0051553 fclass.s a0,fa0 + 800001bc: 04000e93 li t4,64 + 800001c0: 00800193 li gp,8 + 800001c4: 05d51a63 bne a0,t4,80000218 + +00000000800001c8 : + 800001c8: 7f800537 lui a0,0x7f800 + 800001cc: f0050553 fmv.w.x fa0,a0 + 800001d0: e0051553 fclass.s a0,fa0 + 800001d4: 08000e93 li t4,128 + 800001d8: 00900193 li gp,9 + 800001dc: 03d51e63 bne a0,t4,80000218 + +00000000800001e0 : + 800001e0: 7f800537 lui a0,0x7f800 + 800001e4: 0015051b addiw a0,a0,1 + 800001e8: f0050553 fmv.w.x fa0,a0 + 800001ec: e0051553 fclass.s a0,fa0 + 800001f0: 10000e93 li t4,256 + 800001f4: 00a00193 li gp,10 + 800001f8: 03d51063 bne a0,t4,80000218 + +00000000800001fc : + 800001fc: 7fc00537 lui a0,0x7fc00 + 80000200: f0050553 fmv.w.x fa0,a0 + 80000204: e0051553 fclass.s a0,fa0 + 80000208: 20000e93 li t4,512 + 8000020c: 00b00193 li gp,11 + 80000210: 01d51463 bne a0,t4,80000218 + 80000214: 00301c63 bne zero,gp,8000022c + +0000000080000218 : + 80000218: 0ff0000f fence + 8000021c: 00018063 beqz gp,8000021c + 80000220: 00119193 slli gp,gp,0x1 + 80000224: 0011e193 ori gp,gp,1 + 80000228: 00000073 ecall + +000000008000022c : + 8000022c: 0ff0000f fence + 80000230: 00100193 li gp,1 + 80000234: 00000073 ecall + 80000238: c0001073 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64uf-p-fcmp b/Tests/isa/rv64uf-p-fcmp new file mode 100644 index 0000000..610c700 Binary files /dev/null and b/Tests/isa/rv64uf-p-fcmp differ diff --git a/Tests/isa/rv64uf-p-fcmp.dump b/Tests/isa/rv64uf-p-fcmp.dump new file mode 100644 index 0000000..0fb4cb8 --- /dev/null +++ b/Tests/isa/rv64uf-p-fcmp.dump @@ -0,0 +1,450 @@ + +rv64uf-p-fcmp: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00052007 flw ft0,0(a0) + 80000118: 00452087 flw ft1,4(a0) + 8000011c: 00852107 flw ft2,8(a0) + 80000120: 00c52683 lw a3,12(a0) + 80000124: a0102553 feq.s a0,ft0,ft1 + 80000128: 001015f3 fsflags a1,zero + 8000012c: 00000613 li a2,0 + 80000130: 2ad51663 bne a0,a3,800003dc + 80000134: 2ac59463 bne a1,a2,800003dc + +0000000080000138 : + 80000138: 00300193 li gp,3 + 8000013c: 00002517 auipc a0,0x2 + 80000140: ed450513 addi a0,a0,-300 # 80002010 + 80000144: 00052007 flw ft0,0(a0) + 80000148: 00452087 flw ft1,4(a0) + 8000014c: 00852107 flw ft2,8(a0) + 80000150: 00c52683 lw a3,12(a0) + 80000154: a0100553 fle.s a0,ft0,ft1 + 80000158: 001015f3 fsflags a1,zero + 8000015c: 00000613 li a2,0 + 80000160: 26d51e63 bne a0,a3,800003dc + 80000164: 26c59c63 bne a1,a2,800003dc + +0000000080000168 : + 80000168: 00400193 li gp,4 + 8000016c: 00002517 auipc a0,0x2 + 80000170: eb450513 addi a0,a0,-332 # 80002020 + 80000174: 00052007 flw ft0,0(a0) + 80000178: 00452087 flw ft1,4(a0) + 8000017c: 00852107 flw ft2,8(a0) + 80000180: 00c52683 lw a3,12(a0) + 80000184: a0101553 flt.s a0,ft0,ft1 + 80000188: 001015f3 fsflags a1,zero + 8000018c: 00000613 li a2,0 + 80000190: 24d51663 bne a0,a3,800003dc + 80000194: 24c59463 bne a1,a2,800003dc + +0000000080000198 : + 80000198: 00500193 li gp,5 + 8000019c: 00002517 auipc a0,0x2 + 800001a0: e9450513 addi a0,a0,-364 # 80002030 + 800001a4: 00052007 flw ft0,0(a0) + 800001a8: 00452087 flw ft1,4(a0) + 800001ac: 00852107 flw ft2,8(a0) + 800001b0: 00c52683 lw a3,12(a0) + 800001b4: a0102553 feq.s a0,ft0,ft1 + 800001b8: 001015f3 fsflags a1,zero + 800001bc: 00000613 li a2,0 + 800001c0: 20d51e63 bne a0,a3,800003dc + 800001c4: 20c59c63 bne a1,a2,800003dc + +00000000800001c8 : + 800001c8: 00600193 li gp,6 + 800001cc: 00002517 auipc a0,0x2 + 800001d0: e7450513 addi a0,a0,-396 # 80002040 + 800001d4: 00052007 flw ft0,0(a0) + 800001d8: 00452087 flw ft1,4(a0) + 800001dc: 00852107 flw ft2,8(a0) + 800001e0: 00c52683 lw a3,12(a0) + 800001e4: a0100553 fle.s a0,ft0,ft1 + 800001e8: 001015f3 fsflags a1,zero + 800001ec: 00000613 li a2,0 + 800001f0: 1ed51663 bne a0,a3,800003dc + 800001f4: 1ec59463 bne a1,a2,800003dc + +00000000800001f8 : + 800001f8: 00700193 li gp,7 + 800001fc: 00002517 auipc a0,0x2 + 80000200: e5450513 addi a0,a0,-428 # 80002050 + 80000204: 00052007 flw ft0,0(a0) + 80000208: 00452087 flw ft1,4(a0) + 8000020c: 00852107 flw ft2,8(a0) + 80000210: 00c52683 lw a3,12(a0) + 80000214: a0101553 flt.s a0,ft0,ft1 + 80000218: 001015f3 fsflags a1,zero + 8000021c: 00000613 li a2,0 + 80000220: 1ad51e63 bne a0,a3,800003dc + 80000224: 1ac59c63 bne a1,a2,800003dc + +0000000080000228 : + 80000228: 00800193 li gp,8 + 8000022c: 00002517 auipc a0,0x2 + 80000230: e3450513 addi a0,a0,-460 # 80002060 + 80000234: 00052007 flw ft0,0(a0) + 80000238: 00452087 flw ft1,4(a0) + 8000023c: 00852107 flw ft2,8(a0) + 80000240: 00c52683 lw a3,12(a0) + 80000244: a0102553 feq.s a0,ft0,ft1 + 80000248: 001015f3 fsflags a1,zero + 8000024c: 00000613 li a2,0 + 80000250: 18d51663 bne a0,a3,800003dc + 80000254: 18c59463 bne a1,a2,800003dc + +0000000080000258 : + 80000258: 00900193 li gp,9 + 8000025c: 00002517 auipc a0,0x2 + 80000260: e1450513 addi a0,a0,-492 # 80002070 + 80000264: 00052007 flw ft0,0(a0) + 80000268: 00452087 flw ft1,4(a0) + 8000026c: 00852107 flw ft2,8(a0) + 80000270: 00c52683 lw a3,12(a0) + 80000274: a0102553 feq.s a0,ft0,ft1 + 80000278: 001015f3 fsflags a1,zero + 8000027c: 00000613 li a2,0 + 80000280: 14d51e63 bne a0,a3,800003dc + 80000284: 14c59c63 bne a1,a2,800003dc + +0000000080000288 : + 80000288: 00a00193 li gp,10 + 8000028c: 00002517 auipc a0,0x2 + 80000290: df450513 addi a0,a0,-524 # 80002080 + 80000294: 00052007 flw ft0,0(a0) + 80000298: 00452087 flw ft1,4(a0) + 8000029c: 00852107 flw ft2,8(a0) + 800002a0: 00c52683 lw a3,12(a0) + 800002a4: a0102553 feq.s a0,ft0,ft1 + 800002a8: 001015f3 fsflags a1,zero + 800002ac: 01000613 li a2,16 + 800002b0: 12d51663 bne a0,a3,800003dc + 800002b4: 12c59463 bne a1,a2,800003dc + +00000000800002b8 : + 800002b8: 00b00193 li gp,11 + 800002bc: 00002517 auipc a0,0x2 + 800002c0: dd450513 addi a0,a0,-556 # 80002090 + 800002c4: 00052007 flw ft0,0(a0) + 800002c8: 00452087 flw ft1,4(a0) + 800002cc: 00852107 flw ft2,8(a0) + 800002d0: 00c52683 lw a3,12(a0) + 800002d4: a0101553 flt.s a0,ft0,ft1 + 800002d8: 001015f3 fsflags a1,zero + 800002dc: 01000613 li a2,16 + 800002e0: 0ed51e63 bne a0,a3,800003dc + 800002e4: 0ec59c63 bne a1,a2,800003dc + +00000000800002e8 : + 800002e8: 00c00193 li gp,12 + 800002ec: 00002517 auipc a0,0x2 + 800002f0: db450513 addi a0,a0,-588 # 800020a0 + 800002f4: 00052007 flw ft0,0(a0) + 800002f8: 00452087 flw ft1,4(a0) + 800002fc: 00852107 flw ft2,8(a0) + 80000300: 00c52683 lw a3,12(a0) + 80000304: a0101553 flt.s a0,ft0,ft1 + 80000308: 001015f3 fsflags a1,zero + 8000030c: 01000613 li a2,16 + 80000310: 0cd51663 bne a0,a3,800003dc + 80000314: 0cc59463 bne a1,a2,800003dc + +0000000080000318 : + 80000318: 00d00193 li gp,13 + 8000031c: 00002517 auipc a0,0x2 + 80000320: d9450513 addi a0,a0,-620 # 800020b0 + 80000324: 00052007 flw ft0,0(a0) + 80000328: 00452087 flw ft1,4(a0) + 8000032c: 00852107 flw ft2,8(a0) + 80000330: 00c52683 lw a3,12(a0) + 80000334: a0101553 flt.s a0,ft0,ft1 + 80000338: 001015f3 fsflags a1,zero + 8000033c: 01000613 li a2,16 + 80000340: 08d51e63 bne a0,a3,800003dc + 80000344: 08c59c63 bne a1,a2,800003dc + +0000000080000348 : + 80000348: 00e00193 li gp,14 + 8000034c: 00002517 auipc a0,0x2 + 80000350: d7450513 addi a0,a0,-652 # 800020c0 + 80000354: 00052007 flw ft0,0(a0) + 80000358: 00452087 flw ft1,4(a0) + 8000035c: 00852107 flw ft2,8(a0) + 80000360: 00c52683 lw a3,12(a0) + 80000364: a0100553 fle.s a0,ft0,ft1 + 80000368: 001015f3 fsflags a1,zero + 8000036c: 01000613 li a2,16 + 80000370: 06d51663 bne a0,a3,800003dc + 80000374: 06c59463 bne a1,a2,800003dc + +0000000080000378 : + 80000378: 00f00193 li gp,15 + 8000037c: 00002517 auipc a0,0x2 + 80000380: d5450513 addi a0,a0,-684 # 800020d0 + 80000384: 00052007 flw ft0,0(a0) + 80000388: 00452087 flw ft1,4(a0) + 8000038c: 00852107 flw ft2,8(a0) + 80000390: 00c52683 lw a3,12(a0) + 80000394: a0100553 fle.s a0,ft0,ft1 + 80000398: 001015f3 fsflags a1,zero + 8000039c: 01000613 li a2,16 + 800003a0: 02d51e63 bne a0,a3,800003dc + 800003a4: 02c59c63 bne a1,a2,800003dc + +00000000800003a8 : + 800003a8: 01000193 li gp,16 + 800003ac: 00002517 auipc a0,0x2 + 800003b0: d3450513 addi a0,a0,-716 # 800020e0 + 800003b4: 00052007 flw ft0,0(a0) + 800003b8: 00452087 flw ft1,4(a0) + 800003bc: 00852107 flw ft2,8(a0) + 800003c0: 00c52683 lw a3,12(a0) + 800003c4: a0100553 fle.s a0,ft0,ft1 + 800003c8: 001015f3 fsflags a1,zero + 800003cc: 01000613 li a2,16 + 800003d0: 00d51663 bne a0,a3,800003dc + 800003d4: 00c59463 bne a1,a2,800003dc + 800003d8: 00301c63 bne zero,gp,800003f0 + +00000000800003dc : + 800003dc: 0ff0000f fence + 800003e0: 00018063 beqz gp,800003e0 + 800003e4: 00119193 slli gp,gp,0x1 + 800003e8: 0011e193 ori gp,gp,1 + 800003ec: 00000073 ecall + +00000000800003f0 : + 800003f0: 0ff0000f fence + 800003f4: 00100193 li gp,1 + 800003f8: 00000073 ecall + 800003fc: c0001073 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: bfae147b 0xbfae147b + 80002004: bfae147b 0xbfae147b + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0001 nop + 8000200e: 0000 unimp + +0000000080002010 : + 80002010: bfae147b 0xbfae147b + 80002014: bfae147b 0xbfae147b + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: 0001 nop + 8000201e: 0000 unimp + +0000000080002020 : + 80002020: bfae147b 0xbfae147b + 80002024: bfae147b 0xbfae147b + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: 0000 unimp + 8000202e: 0000 unimp + +0000000080002030 : + 80002030: 5c29 li s8,-22 + 80002032: 147bbfaf 0x147bbfaf + 80002036: bfae fsd fa1,504(sp) + 80002038: 0000 unimp + 8000203a: 0000 unimp + 8000203c: 0000 unimp + 8000203e: 0000 unimp + +0000000080002040 : + 80002040: 5c29 li s8,-22 + 80002042: 147bbfaf 0x147bbfaf + 80002046: bfae fsd fa1,504(sp) + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 0001 nop + 8000204e: 0000 unimp + +0000000080002050 : + 80002050: 5c29 li s8,-22 + 80002052: 147bbfaf 0x147bbfaf + 80002056: bfae fsd fa1,504(sp) + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0001 nop + 8000205e: 0000 unimp + +0000000080002060 : + 80002060: ffff 0xffff + 80002062: 7fff 0x7fff + 80002064: 0000 unimp + 80002066: 0000 unimp + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 0000 unimp + +0000000080002070 : + 80002070: ffff 0xffff + 80002072: 7fff 0x7fff + 80002074: ffff 0xffff + 80002076: 7fff 0x7fff + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: 0000 unimp + 8000207e: 0000 unimp + +0000000080002080 : + 80002080: 0001 nop + 80002082: 7f80 ld s0,56(a5) + 80002084: 0000 unimp + 80002086: 0000 unimp + 80002088: 0000 unimp + 8000208a: 0000 unimp + 8000208c: 0000 unimp + 8000208e: 0000 unimp + +0000000080002090 : + 80002090: ffff 0xffff + 80002092: 7fff 0x7fff + 80002094: 0000 unimp + 80002096: 0000 unimp + 80002098: 0000 unimp + 8000209a: 0000 unimp + 8000209c: 0000 unimp + 8000209e: 0000 unimp + +00000000800020a0 : + 800020a0: ffff 0xffff + 800020a2: 7fff 0x7fff + 800020a4: ffff 0xffff + 800020a6: 7fff 0x7fff + 800020a8: 0000 unimp + 800020aa: 0000 unimp + 800020ac: 0000 unimp + 800020ae: 0000 unimp + +00000000800020b0 : + 800020b0: 0001 nop + 800020b2: 7f80 ld s0,56(a5) + 800020b4: 0000 unimp + 800020b6: 0000 unimp + 800020b8: 0000 unimp + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: 0000 unimp + +00000000800020c0 : + 800020c0: ffff 0xffff + 800020c2: 7fff 0x7fff + 800020c4: 0000 unimp + 800020c6: 0000 unimp + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 0000 unimp + +00000000800020d0 : + 800020d0: ffff 0xffff + 800020d2: 7fff 0x7fff + 800020d4: ffff 0xffff + 800020d6: 7fff 0x7fff + 800020d8: 0000 unimp + 800020da: 0000 unimp + 800020dc: 0000 unimp + 800020de: 0000 unimp + +00000000800020e0 : + 800020e0: 0001 nop + 800020e2: 7f80 ld s0,56(a5) + 800020e4: 0000 unimp + 800020e6: 0000 unimp + 800020e8: 0000 unimp + 800020ea: 0000 unimp + 800020ec: 0000 unimp + 800020ee: 0000 unimp diff --git a/Tests/isa/rv64uf-p-fcvt b/Tests/isa/rv64uf-p-fcvt new file mode 100644 index 0000000..08ead91 Binary files /dev/null and b/Tests/isa/rv64uf-p-fcvt differ diff --git a/Tests/isa/rv64uf-p-fcvt.dump b/Tests/isa/rv64uf-p-fcvt.dump new file mode 100644 index 0000000..f46a881 --- /dev/null +++ b/Tests/isa/rv64uf-p-fcvt.dump @@ -0,0 +1,243 @@ + +rv64uf-p-fcvt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00052683 lw a3,0(a0) + 80000118: 00200513 li a0,2 + 8000011c: d0057053 fcvt.s.w ft0,a0 + 80000120: 00101073 fsflags zero + 80000124: e0000553 fmv.x.w a0,ft0 + 80000128: 10d51263 bne a0,a3,8000022c + +000000008000012c : + 8000012c: 00300193 li gp,3 + 80000130: 00002517 auipc a0,0x2 + 80000134: ed450513 addi a0,a0,-300 # 80002004 + 80000138: 00052683 lw a3,0(a0) + 8000013c: ffe00513 li a0,-2 + 80000140: d0057053 fcvt.s.w ft0,a0 + 80000144: 00101073 fsflags zero + 80000148: e0000553 fmv.x.w a0,ft0 + 8000014c: 0ed51063 bne a0,a3,8000022c + +0000000080000150 : + 80000150: 00400193 li gp,4 + 80000154: 00002517 auipc a0,0x2 + 80000158: eb450513 addi a0,a0,-332 # 80002008 + 8000015c: 00052683 lw a3,0(a0) + 80000160: 00200513 li a0,2 + 80000164: d0157053 fcvt.s.wu ft0,a0 + 80000168: 00101073 fsflags zero + 8000016c: e0000553 fmv.x.w a0,ft0 + 80000170: 0ad51e63 bne a0,a3,8000022c + +0000000080000174 : + 80000174: 00500193 li gp,5 + 80000178: 00002517 auipc a0,0x2 + 8000017c: e9450513 addi a0,a0,-364 # 8000200c + 80000180: 00052683 lw a3,0(a0) + 80000184: ffe00513 li a0,-2 + 80000188: d0157053 fcvt.s.wu ft0,a0 + 8000018c: 00101073 fsflags zero + 80000190: e0000553 fmv.x.w a0,ft0 + 80000194: 08d51c63 bne a0,a3,8000022c + +0000000080000198 : + 80000198: 00600193 li gp,6 + 8000019c: 00002517 auipc a0,0x2 + 800001a0: e7450513 addi a0,a0,-396 # 80002010 + 800001a4: 00052683 lw a3,0(a0) + 800001a8: 00200513 li a0,2 + 800001ac: d0257053 fcvt.s.l ft0,a0 + 800001b0: 00101073 fsflags zero + 800001b4: e0000553 fmv.x.w a0,ft0 + 800001b8: 06d51a63 bne a0,a3,8000022c + +00000000800001bc : + 800001bc: 00700193 li gp,7 + 800001c0: 00002517 auipc a0,0x2 + 800001c4: e5450513 addi a0,a0,-428 # 80002014 + 800001c8: 00052683 lw a3,0(a0) + 800001cc: ffe00513 li a0,-2 + 800001d0: d0257053 fcvt.s.l ft0,a0 + 800001d4: 00101073 fsflags zero + 800001d8: e0000553 fmv.x.w a0,ft0 + 800001dc: 04d51863 bne a0,a3,8000022c + +00000000800001e0 : + 800001e0: 00800193 li gp,8 + 800001e4: 00002517 auipc a0,0x2 + 800001e8: e3450513 addi a0,a0,-460 # 80002018 + 800001ec: 00052683 lw a3,0(a0) + 800001f0: 00200513 li a0,2 + 800001f4: d0357053 fcvt.s.lu ft0,a0 + 800001f8: 00101073 fsflags zero + 800001fc: e0000553 fmv.x.w a0,ft0 + 80000200: 02d51663 bne a0,a3,8000022c + +0000000080000204 : + 80000204: 00900193 li gp,9 + 80000208: 00002517 auipc a0,0x2 + 8000020c: e1450513 addi a0,a0,-492 # 8000201c + 80000210: 00052683 lw a3,0(a0) + 80000214: ffe00513 li a0,-2 + 80000218: d0357053 fcvt.s.lu ft0,a0 + 8000021c: 00101073 fsflags zero + 80000220: e0000553 fmv.x.w a0,ft0 + 80000224: 00d51463 bne a0,a3,8000022c + 80000228: 00301c63 bne zero,gp,80000240 + +000000008000022c : + 8000022c: 0ff0000f fence + 80000230: 00018063 beqz gp,80000230 + 80000234: 00119193 slli gp,gp,0x1 + 80000238: 0011e193 ori gp,gp,1 + 8000023c: 00000073 ecall + +0000000080000240 : + 80000240: 0ff0000f fence + 80000244: 00100193 li gp,1 + 80000248: 00000073 ecall + 8000024c: c0001073 unimp + 80000250: 0000 unimp + 80000252: 0000 unimp + 80000254: 0000 unimp + 80000256: 0000 unimp + 80000258: 0000 unimp + 8000025a: 0000 unimp + 8000025c: 0000 unimp + 8000025e: 0000 unimp + 80000260: 0000 unimp + 80000262: 0000 unimp + 80000264: 0000 unimp + 80000266: 0000 unimp + 80000268: 0000 unimp + 8000026a: 0000 unimp + 8000026c: 0000 unimp + 8000026e: 0000 unimp + 80000270: 0000 unimp + 80000272: 0000 unimp + 80000274: 0000 unimp + 80000276: 0000 unimp + 80000278: 0000 unimp + 8000027a: 0000 unimp + 8000027c: 0000 unimp + 8000027e: 0000 unimp + 80000280: 0000 unimp + 80000282: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 4000 lw s0,0(s0) + +0000000080002004 : + 80002004: 0000 unimp + 80002006: c000 sw s0,0(s0) + +0000000080002008 : + 80002008: 0000 unimp + 8000200a: 4000 lw s0,0(s0) + +000000008000200c : + 8000200c: 0000 unimp + 8000200e: 4f80 lw s0,24(a5) + +0000000080002010 : + 80002010: 0000 unimp + 80002012: 4000 lw s0,0(s0) + +0000000080002014 : + 80002014: 0000 unimp + 80002016: c000 sw s0,0(s0) + +0000000080002018 : + 80002018: 0000 unimp + 8000201a: 4000 lw s0,0(s0) + +000000008000201c : + 8000201c: 0000 unimp + 8000201e: 5f80 lw s0,56(a5) diff --git a/Tests/isa/rv64uf-p-fcvt_w b/Tests/isa/rv64uf-p-fcvt_w new file mode 100644 index 0000000..a370949 Binary files /dev/null and b/Tests/isa/rv64uf-p-fcvt_w differ diff --git a/Tests/isa/rv64uf-p-fcvt_w.dump b/Tests/isa/rv64uf-p-fcvt_w.dump new file mode 100644 index 0000000..26df961 --- /dev/null +++ b/Tests/isa/rv64uf-p-fcvt_w.dump @@ -0,0 +1,1005 @@ + +rv64uf-p-fcvt_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00052007 flw ft0,0(a0) + 80000118: 00452087 flw ft1,4(a0) + 8000011c: 00852107 flw ft2,8(a0) + 80000120: 00c52683 lw a3,12(a0) + 80000124: c0001553 fcvt.w.s a0,ft0,rtz + 80000128: 001015f3 fsflags a1,zero + 8000012c: 00100613 li a2,1 + 80000130: 72d51a63 bne a0,a3,80000864 + 80000134: 72c59863 bne a1,a2,80000864 + +0000000080000138 : + 80000138: 00300193 li gp,3 + 8000013c: 00002517 auipc a0,0x2 + 80000140: ed450513 addi a0,a0,-300 # 80002010 + 80000144: 00052007 flw ft0,0(a0) + 80000148: 00452087 flw ft1,4(a0) + 8000014c: 00852107 flw ft2,8(a0) + 80000150: 00c52683 lw a3,12(a0) + 80000154: c0001553 fcvt.w.s a0,ft0,rtz + 80000158: 001015f3 fsflags a1,zero + 8000015c: 00000613 li a2,0 + 80000160: 70d51263 bne a0,a3,80000864 + 80000164: 70c59063 bne a1,a2,80000864 + +0000000080000168 : + 80000168: 00400193 li gp,4 + 8000016c: 00002517 auipc a0,0x2 + 80000170: eb450513 addi a0,a0,-332 # 80002020 + 80000174: 00052007 flw ft0,0(a0) + 80000178: 00452087 flw ft1,4(a0) + 8000017c: 00852107 flw ft2,8(a0) + 80000180: 00c52683 lw a3,12(a0) + 80000184: c0001553 fcvt.w.s a0,ft0,rtz + 80000188: 001015f3 fsflags a1,zero + 8000018c: 00100613 li a2,1 + 80000190: 6cd51a63 bne a0,a3,80000864 + 80000194: 6cc59863 bne a1,a2,80000864 + +0000000080000198 : + 80000198: 00500193 li gp,5 + 8000019c: 00002517 auipc a0,0x2 + 800001a0: e9450513 addi a0,a0,-364 # 80002030 + 800001a4: 00052007 flw ft0,0(a0) + 800001a8: 00452087 flw ft1,4(a0) + 800001ac: 00852107 flw ft2,8(a0) + 800001b0: 00c52683 lw a3,12(a0) + 800001b4: c0001553 fcvt.w.s a0,ft0,rtz + 800001b8: 001015f3 fsflags a1,zero + 800001bc: 00100613 li a2,1 + 800001c0: 6ad51263 bne a0,a3,80000864 + 800001c4: 6ac59063 bne a1,a2,80000864 + +00000000800001c8 : + 800001c8: 00600193 li gp,6 + 800001cc: 00002517 auipc a0,0x2 + 800001d0: e7450513 addi a0,a0,-396 # 80002040 + 800001d4: 00052007 flw ft0,0(a0) + 800001d8: 00452087 flw ft1,4(a0) + 800001dc: 00852107 flw ft2,8(a0) + 800001e0: 00c52683 lw a3,12(a0) + 800001e4: c0001553 fcvt.w.s a0,ft0,rtz + 800001e8: 001015f3 fsflags a1,zero + 800001ec: 00000613 li a2,0 + 800001f0: 66d51a63 bne a0,a3,80000864 + 800001f4: 66c59863 bne a1,a2,80000864 + +00000000800001f8 : + 800001f8: 00700193 li gp,7 + 800001fc: 00002517 auipc a0,0x2 + 80000200: e5450513 addi a0,a0,-428 # 80002050 + 80000204: 00052007 flw ft0,0(a0) + 80000208: 00452087 flw ft1,4(a0) + 8000020c: 00852107 flw ft2,8(a0) + 80000210: 00c52683 lw a3,12(a0) + 80000214: c0001553 fcvt.w.s a0,ft0,rtz + 80000218: 001015f3 fsflags a1,zero + 8000021c: 00100613 li a2,1 + 80000220: 64d51263 bne a0,a3,80000864 + 80000224: 64c59063 bne a1,a2,80000864 + +0000000080000228 : + 80000228: 00800193 li gp,8 + 8000022c: 00002517 auipc a0,0x2 + 80000230: e3450513 addi a0,a0,-460 # 80002060 + 80000234: 00052007 flw ft0,0(a0) + 80000238: 00452087 flw ft1,4(a0) + 8000023c: 00852107 flw ft2,8(a0) + 80000240: 00c52683 lw a3,12(a0) + 80000244: c0001553 fcvt.w.s a0,ft0,rtz + 80000248: 001015f3 fsflags a1,zero + 8000024c: 01000613 li a2,16 + 80000250: 60d51a63 bne a0,a3,80000864 + 80000254: 60c59863 bne a1,a2,80000864 + +0000000080000258 : + 80000258: 00900193 li gp,9 + 8000025c: 00002517 auipc a0,0x2 + 80000260: e1450513 addi a0,a0,-492 # 80002070 + 80000264: 00052007 flw ft0,0(a0) + 80000268: 00452087 flw ft1,4(a0) + 8000026c: 00852107 flw ft2,8(a0) + 80000270: 00c52683 lw a3,12(a0) + 80000274: c0001553 fcvt.w.s a0,ft0,rtz + 80000278: 001015f3 fsflags a1,zero + 8000027c: 01000613 li a2,16 + 80000280: 5ed51263 bne a0,a3,80000864 + 80000284: 5ec59063 bne a1,a2,80000864 + +0000000080000288 : + 80000288: 00c00193 li gp,12 + 8000028c: 00002517 auipc a0,0x2 + 80000290: df450513 addi a0,a0,-524 # 80002080 + 80000294: 00052007 flw ft0,0(a0) + 80000298: 00452087 flw ft1,4(a0) + 8000029c: 00852107 flw ft2,8(a0) + 800002a0: 00c52683 lw a3,12(a0) + 800002a4: c0101553 fcvt.wu.s a0,ft0,rtz + 800002a8: 001015f3 fsflags a1,zero + 800002ac: 01000613 li a2,16 + 800002b0: 5ad51a63 bne a0,a3,80000864 + 800002b4: 5ac59863 bne a1,a2,80000864 + +00000000800002b8 : + 800002b8: 00d00193 li gp,13 + 800002bc: 00002517 auipc a0,0x2 + 800002c0: dd450513 addi a0,a0,-556 # 80002090 + 800002c4: 00052007 flw ft0,0(a0) + 800002c8: 00452087 flw ft1,4(a0) + 800002cc: 00852107 flw ft2,8(a0) + 800002d0: 00c52683 lw a3,12(a0) + 800002d4: c0101553 fcvt.wu.s a0,ft0,rtz + 800002d8: 001015f3 fsflags a1,zero + 800002dc: 01000613 li a2,16 + 800002e0: 58d51263 bne a0,a3,80000864 + 800002e4: 58c59063 bne a1,a2,80000864 + +00000000800002e8 : + 800002e8: 00e00193 li gp,14 + 800002ec: 00002517 auipc a0,0x2 + 800002f0: db450513 addi a0,a0,-588 # 800020a0 + 800002f4: 00052007 flw ft0,0(a0) + 800002f8: 00452087 flw ft1,4(a0) + 800002fc: 00852107 flw ft2,8(a0) + 80000300: 00c52683 lw a3,12(a0) + 80000304: c0101553 fcvt.wu.s a0,ft0,rtz + 80000308: 001015f3 fsflags a1,zero + 8000030c: 00100613 li a2,1 + 80000310: 54d51a63 bne a0,a3,80000864 + 80000314: 54c59863 bne a1,a2,80000864 + +0000000080000318 : + 80000318: 00f00193 li gp,15 + 8000031c: 00002517 auipc a0,0x2 + 80000320: d9450513 addi a0,a0,-620 # 800020b0 + 80000324: 00052007 flw ft0,0(a0) + 80000328: 00452087 flw ft1,4(a0) + 8000032c: 00852107 flw ft2,8(a0) + 80000330: 00c52683 lw a3,12(a0) + 80000334: c0101553 fcvt.wu.s a0,ft0,rtz + 80000338: 001015f3 fsflags a1,zero + 8000033c: 00100613 li a2,1 + 80000340: 52d51263 bne a0,a3,80000864 + 80000344: 52c59063 bne a1,a2,80000864 + +0000000080000348 : + 80000348: 01000193 li gp,16 + 8000034c: 00002517 auipc a0,0x2 + 80000350: d7450513 addi a0,a0,-652 # 800020c0 + 80000354: 00052007 flw ft0,0(a0) + 80000358: 00452087 flw ft1,4(a0) + 8000035c: 00852107 flw ft2,8(a0) + 80000360: 00c52683 lw a3,12(a0) + 80000364: c0101553 fcvt.wu.s a0,ft0,rtz + 80000368: 001015f3 fsflags a1,zero + 8000036c: 00000613 li a2,0 + 80000370: 4ed51a63 bne a0,a3,80000864 + 80000374: 4ec59863 bne a1,a2,80000864 + +0000000080000378 : + 80000378: 01100193 li gp,17 + 8000037c: 00002517 auipc a0,0x2 + 80000380: d5450513 addi a0,a0,-684 # 800020d0 + 80000384: 00052007 flw ft0,0(a0) + 80000388: 00452087 flw ft1,4(a0) + 8000038c: 00852107 flw ft2,8(a0) + 80000390: 00c52683 lw a3,12(a0) + 80000394: c0101553 fcvt.wu.s a0,ft0,rtz + 80000398: 001015f3 fsflags a1,zero + 8000039c: 00100613 li a2,1 + 800003a0: 4cd51263 bne a0,a3,80000864 + 800003a4: 4cc59063 bne a1,a2,80000864 + +00000000800003a8 : + 800003a8: 01200193 li gp,18 + 800003ac: 00002517 auipc a0,0x2 + 800003b0: d3450513 addi a0,a0,-716 # 800020e0 + 800003b4: 00052007 flw ft0,0(a0) + 800003b8: 00452087 flw ft1,4(a0) + 800003bc: 00852107 flw ft2,8(a0) + 800003c0: 00c52683 lw a3,12(a0) + 800003c4: c0101553 fcvt.wu.s a0,ft0,rtz + 800003c8: 001015f3 fsflags a1,zero + 800003cc: 01000613 li a2,16 + 800003d0: 48d51a63 bne a0,a3,80000864 + 800003d4: 48c59863 bne a1,a2,80000864 + +00000000800003d8 : + 800003d8: 01300193 li gp,19 + 800003dc: 00002517 auipc a0,0x2 + 800003e0: d1450513 addi a0,a0,-748 # 800020f0 + 800003e4: 00052007 flw ft0,0(a0) + 800003e8: 00452087 flw ft1,4(a0) + 800003ec: 00852107 flw ft2,8(a0) + 800003f0: 00c52683 lw a3,12(a0) + 800003f4: c0101553 fcvt.wu.s a0,ft0,rtz + 800003f8: 001015f3 fsflags a1,zero + 800003fc: 00000613 li a2,0 + 80000400: 46d51263 bne a0,a3,80000864 + 80000404: 46c59063 bne a1,a2,80000864 + +0000000080000408 : + 80000408: 01600193 li gp,22 + 8000040c: 00002517 auipc a0,0x2 + 80000410: cf450513 addi a0,a0,-780 # 80002100 + 80000414: 00052007 flw ft0,0(a0) + 80000418: 00452087 flw ft1,4(a0) + 8000041c: 00852107 flw ft2,8(a0) + 80000420: 00c52683 lw a3,12(a0) + 80000424: c0201553 fcvt.l.s a0,ft0,rtz + 80000428: 001015f3 fsflags a1,zero + 8000042c: 00100613 li a2,1 + 80000430: 42d51a63 bne a0,a3,80000864 + 80000434: 42c59863 bne a1,a2,80000864 + +0000000080000438 : + 80000438: 01700193 li gp,23 + 8000043c: 00002517 auipc a0,0x2 + 80000440: cd450513 addi a0,a0,-812 # 80002110 + 80000444: 00052007 flw ft0,0(a0) + 80000448: 00452087 flw ft1,4(a0) + 8000044c: 00852107 flw ft2,8(a0) + 80000450: 00c52683 lw a3,12(a0) + 80000454: c0201553 fcvt.l.s a0,ft0,rtz + 80000458: 001015f3 fsflags a1,zero + 8000045c: 00000613 li a2,0 + 80000460: 40d51263 bne a0,a3,80000864 + 80000464: 40c59063 bne a1,a2,80000864 + +0000000080000468 : + 80000468: 01800193 li gp,24 + 8000046c: 00002517 auipc a0,0x2 + 80000470: cb450513 addi a0,a0,-844 # 80002120 + 80000474: 00052007 flw ft0,0(a0) + 80000478: 00452087 flw ft1,4(a0) + 8000047c: 00852107 flw ft2,8(a0) + 80000480: 00c52683 lw a3,12(a0) + 80000484: c0201553 fcvt.l.s a0,ft0,rtz + 80000488: 001015f3 fsflags a1,zero + 8000048c: 00100613 li a2,1 + 80000490: 3cd51a63 bne a0,a3,80000864 + 80000494: 3cc59863 bne a1,a2,80000864 + +0000000080000498 : + 80000498: 01900193 li gp,25 + 8000049c: 00002517 auipc a0,0x2 + 800004a0: c9450513 addi a0,a0,-876 # 80002130 + 800004a4: 00052007 flw ft0,0(a0) + 800004a8: 00452087 flw ft1,4(a0) + 800004ac: 00852107 flw ft2,8(a0) + 800004b0: 00c52683 lw a3,12(a0) + 800004b4: c0201553 fcvt.l.s a0,ft0,rtz + 800004b8: 001015f3 fsflags a1,zero + 800004bc: 00100613 li a2,1 + 800004c0: 3ad51263 bne a0,a3,80000864 + 800004c4: 3ac59063 bne a1,a2,80000864 + +00000000800004c8 : + 800004c8: 01a00193 li gp,26 + 800004cc: 00002517 auipc a0,0x2 + 800004d0: c7450513 addi a0,a0,-908 # 80002140 + 800004d4: 00052007 flw ft0,0(a0) + 800004d8: 00452087 flw ft1,4(a0) + 800004dc: 00852107 flw ft2,8(a0) + 800004e0: 00c52683 lw a3,12(a0) + 800004e4: c0201553 fcvt.l.s a0,ft0,rtz + 800004e8: 001015f3 fsflags a1,zero + 800004ec: 00000613 li a2,0 + 800004f0: 36d51a63 bne a0,a3,80000864 + 800004f4: 36c59863 bne a1,a2,80000864 + +00000000800004f8 : + 800004f8: 01b00193 li gp,27 + 800004fc: 00002517 auipc a0,0x2 + 80000500: c5450513 addi a0,a0,-940 # 80002150 + 80000504: 00052007 flw ft0,0(a0) + 80000508: 00452087 flw ft1,4(a0) + 8000050c: 00852107 flw ft2,8(a0) + 80000510: 00c52683 lw a3,12(a0) + 80000514: c0201553 fcvt.l.s a0,ft0,rtz + 80000518: 001015f3 fsflags a1,zero + 8000051c: 00100613 li a2,1 + 80000520: 34d51263 bne a0,a3,80000864 + 80000524: 34c59063 bne a1,a2,80000864 + +0000000080000528 : + 80000528: 02000193 li gp,32 + 8000052c: 00002517 auipc a0,0x2 + 80000530: c3450513 addi a0,a0,-972 # 80002160 + 80000534: 00052007 flw ft0,0(a0) + 80000538: 00452087 flw ft1,4(a0) + 8000053c: 00852107 flw ft2,8(a0) + 80000540: 00c52683 lw a3,12(a0) + 80000544: c0301553 fcvt.lu.s a0,ft0,rtz + 80000548: 001015f3 fsflags a1,zero + 8000054c: 01000613 li a2,16 + 80000550: 30d51a63 bne a0,a3,80000864 + 80000554: 30c59863 bne a1,a2,80000864 + +0000000080000558 : + 80000558: 02100193 li gp,33 + 8000055c: 00002517 auipc a0,0x2 + 80000560: c1450513 addi a0,a0,-1004 # 80002170 + 80000564: 00052007 flw ft0,0(a0) + 80000568: 00452087 flw ft1,4(a0) + 8000056c: 00852107 flw ft2,8(a0) + 80000570: 00c52683 lw a3,12(a0) + 80000574: c0301553 fcvt.lu.s a0,ft0,rtz + 80000578: 001015f3 fsflags a1,zero + 8000057c: 01000613 li a2,16 + 80000580: 2ed51263 bne a0,a3,80000864 + 80000584: 2ec59063 bne a1,a2,80000864 + +0000000080000588 : + 80000588: 02200193 li gp,34 + 8000058c: 00002517 auipc a0,0x2 + 80000590: bf450513 addi a0,a0,-1036 # 80002180 + 80000594: 00052007 flw ft0,0(a0) + 80000598: 00452087 flw ft1,4(a0) + 8000059c: 00852107 flw ft2,8(a0) + 800005a0: 00c52683 lw a3,12(a0) + 800005a4: c0301553 fcvt.lu.s a0,ft0,rtz + 800005a8: 001015f3 fsflags a1,zero + 800005ac: 00100613 li a2,1 + 800005b0: 2ad51a63 bne a0,a3,80000864 + 800005b4: 2ac59863 bne a1,a2,80000864 + +00000000800005b8 : + 800005b8: 02300193 li gp,35 + 800005bc: 00002517 auipc a0,0x2 + 800005c0: bd450513 addi a0,a0,-1068 # 80002190 + 800005c4: 00052007 flw ft0,0(a0) + 800005c8: 00452087 flw ft1,4(a0) + 800005cc: 00852107 flw ft2,8(a0) + 800005d0: 00c52683 lw a3,12(a0) + 800005d4: c0301553 fcvt.lu.s a0,ft0,rtz + 800005d8: 001015f3 fsflags a1,zero + 800005dc: 00100613 li a2,1 + 800005e0: 28d51263 bne a0,a3,80000864 + 800005e4: 28c59063 bne a1,a2,80000864 + +00000000800005e8 : + 800005e8: 02400193 li gp,36 + 800005ec: 00002517 auipc a0,0x2 + 800005f0: bb450513 addi a0,a0,-1100 # 800021a0 + 800005f4: 00052007 flw ft0,0(a0) + 800005f8: 00452087 flw ft1,4(a0) + 800005fc: 00852107 flw ft2,8(a0) + 80000600: 00c52683 lw a3,12(a0) + 80000604: c0301553 fcvt.lu.s a0,ft0,rtz + 80000608: 001015f3 fsflags a1,zero + 8000060c: 00000613 li a2,0 + 80000610: 24d51a63 bne a0,a3,80000864 + 80000614: 24c59863 bne a1,a2,80000864 + +0000000080000618 : + 80000618: 02500193 li gp,37 + 8000061c: 00002517 auipc a0,0x2 + 80000620: b9450513 addi a0,a0,-1132 # 800021b0 + 80000624: 00052007 flw ft0,0(a0) + 80000628: 00452087 flw ft1,4(a0) + 8000062c: 00852107 flw ft2,8(a0) + 80000630: 00c52683 lw a3,12(a0) + 80000634: c0301553 fcvt.lu.s a0,ft0,rtz + 80000638: 001015f3 fsflags a1,zero + 8000063c: 00100613 li a2,1 + 80000640: 22d51263 bne a0,a3,80000864 + 80000644: 22c59063 bne a1,a2,80000864 + +0000000080000648 : + 80000648: 02600193 li gp,38 + 8000064c: 00002517 auipc a0,0x2 + 80000650: b7450513 addi a0,a0,-1164 # 800021c0 + 80000654: 00052007 flw ft0,0(a0) + 80000658: 00452087 flw ft1,4(a0) + 8000065c: 00852107 flw ft2,8(a0) + 80000660: 00c52683 lw a3,12(a0) + 80000664: c0301553 fcvt.lu.s a0,ft0,rtz + 80000668: 001015f3 fsflags a1,zero + 8000066c: 01000613 li a2,16 + 80000670: 1ed51a63 bne a0,a3,80000864 + 80000674: 1ec59863 bne a1,a2,80000864 + +0000000080000678 : + 80000678: 00002097 auipc ra,0x2 + 8000067c: b5808093 addi ra,ra,-1192 # 800021d0 + 80000680: 0000a087 flw ft1,0(ra) + 80000684: c000f0d3 fcvt.w.s ra,ft1 + 80000688: 80000eb7 lui t4,0x80000 + 8000068c: fffe8e9b addiw t4,t4,-1 + 80000690: 02a00193 li gp,42 + 80000694: 1dd09863 bne ra,t4,80000864 + +0000000080000698 : + 80000698: 00002097 auipc ra,0x2 + 8000069c: b3808093 addi ra,ra,-1224 # 800021d0 + 800006a0: 0080a087 flw ft1,8(ra) + 800006a4: c000f0d3 fcvt.w.s ra,ft1 + 800006a8: 80000eb7 lui t4,0x80000 + 800006ac: 02c00193 li gp,44 + 800006b0: 1bd09a63 bne ra,t4,80000864 + +00000000800006b4 : + 800006b4: 00002097 auipc ra,0x2 + 800006b8: b1c08093 addi ra,ra,-1252 # 800021d0 + 800006bc: 0000a087 flw ft1,0(ra) + 800006c0: c020f0d3 fcvt.l.s ra,ft1 + 800006c4: fff00e9b addiw t4,zero,-1 + 800006c8: 03fe9e93 slli t4,t4,0x3f + 800006cc: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffffddff> + 800006d0: 02b00193 li gp,43 + 800006d4: 19d09863 bne ra,t4,80000864 + +00000000800006d8 : + 800006d8: 00002097 auipc ra,0x2 + 800006dc: af808093 addi ra,ra,-1288 # 800021d0 + 800006e0: 0080a087 flw ft1,8(ra) + 800006e4: c020f0d3 fcvt.l.s ra,ft1 + 800006e8: fff00e9b addiw t4,zero,-1 + 800006ec: 03fe9e93 slli t4,t4,0x3f + 800006f0: 02d00193 li gp,45 + 800006f4: 17d09863 bne ra,t4,80000864 + +00000000800006f8 : + 800006f8: 00002097 auipc ra,0x2 + 800006fc: ad808093 addi ra,ra,-1320 # 800021d0 + 80000700: 0040a087 flw ft1,4(ra) + 80000704: c000f0d3 fcvt.w.s ra,ft1 + 80000708: 80000eb7 lui t4,0x80000 + 8000070c: fffe8e9b addiw t4,t4,-1 + 80000710: 03400193 li gp,52 + 80000714: 15d09863 bne ra,t4,80000864 + +0000000080000718 : + 80000718: 00002097 auipc ra,0x2 + 8000071c: ab808093 addi ra,ra,-1352 # 800021d0 + 80000720: 00c0a087 flw ft1,12(ra) + 80000724: c000f0d3 fcvt.w.s ra,ft1 + 80000728: 80000eb7 lui t4,0x80000 + 8000072c: fffe8e9b addiw t4,t4,-1 + 80000730: 03600193 li gp,54 + 80000734: 13d09863 bne ra,t4,80000864 + +0000000080000738 : + 80000738: 00002097 auipc ra,0x2 + 8000073c: a9808093 addi ra,ra,-1384 # 800021d0 + 80000740: 0040a087 flw ft1,4(ra) + 80000744: c020f0d3 fcvt.l.s ra,ft1 + 80000748: fff00e9b addiw t4,zero,-1 + 8000074c: 03fe9e93 slli t4,t4,0x3f + 80000750: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffffddff> + 80000754: 03500193 li gp,53 + 80000758: 11d09663 bne ra,t4,80000864 + +000000008000075c : + 8000075c: 00002097 auipc ra,0x2 + 80000760: a7408093 addi ra,ra,-1420 # 800021d0 + 80000764: 00c0a087 flw ft1,12(ra) + 80000768: c020f0d3 fcvt.l.s ra,ft1 + 8000076c: fff00e9b addiw t4,zero,-1 + 80000770: 03fe9e93 slli t4,t4,0x3f + 80000774: fffe8e93 addi t4,t4,-1 + 80000778: 03700193 li gp,55 + 8000077c: 0fd09463 bne ra,t4,80000864 + +0000000080000780 : + 80000780: 00002097 auipc ra,0x2 + 80000784: a5008093 addi ra,ra,-1456 # 800021d0 + 80000788: 0000a087 flw ft1,0(ra) + 8000078c: c010f0d3 fcvt.wu.s ra,ft1 + 80000790: fff00e93 li t4,-1 + 80000794: 03e00193 li gp,62 + 80000798: 0dd09663 bne ra,t4,80000864 + +000000008000079c : + 8000079c: 00002097 auipc ra,0x2 + 800007a0: a3408093 addi ra,ra,-1484 # 800021d0 + 800007a4: 0040a087 flw ft1,4(ra) + 800007a8: c010f0d3 fcvt.wu.s ra,ft1 + 800007ac: fff00e93 li t4,-1 + 800007b0: 03f00193 li gp,63 + 800007b4: 0bd09863 bne ra,t4,80000864 + +00000000800007b8 : + 800007b8: 00002097 auipc ra,0x2 + 800007bc: a1808093 addi ra,ra,-1512 # 800021d0 + 800007c0: 0080a087 flw ft1,8(ra) + 800007c4: c010f0d3 fcvt.wu.s ra,ft1 + 800007c8: 00000e93 li t4,0 + 800007cc: 04000193 li gp,64 + 800007d0: 09d09a63 bne ra,t4,80000864 + +00000000800007d4 : + 800007d4: 00002097 auipc ra,0x2 + 800007d8: 9fc08093 addi ra,ra,-1540 # 800021d0 + 800007dc: 00c0a087 flw ft1,12(ra) + 800007e0: c010f0d3 fcvt.wu.s ra,ft1 + 800007e4: fff00e93 li t4,-1 + 800007e8: 04100193 li gp,65 + 800007ec: 07d09c63 bne ra,t4,80000864 + +00000000800007f0 : + 800007f0: 00002097 auipc ra,0x2 + 800007f4: 9e008093 addi ra,ra,-1568 # 800021d0 + 800007f8: 0000a087 flw ft1,0(ra) + 800007fc: c030f0d3 fcvt.lu.s ra,ft1 + 80000800: fff00e93 li t4,-1 + 80000804: 04200193 li gp,66 + 80000808: 05d09e63 bne ra,t4,80000864 + +000000008000080c : + 8000080c: 00002097 auipc ra,0x2 + 80000810: 9c408093 addi ra,ra,-1596 # 800021d0 + 80000814: 0040a087 flw ft1,4(ra) + 80000818: c030f0d3 fcvt.lu.s ra,ft1 + 8000081c: fff00e93 li t4,-1 + 80000820: 04300193 li gp,67 + 80000824: 05d09063 bne ra,t4,80000864 + +0000000080000828 : + 80000828: 00002097 auipc ra,0x2 + 8000082c: 9a808093 addi ra,ra,-1624 # 800021d0 + 80000830: 0080a087 flw ft1,8(ra) + 80000834: c030f0d3 fcvt.lu.s ra,ft1 + 80000838: 00000e93 li t4,0 + 8000083c: 04400193 li gp,68 + 80000840: 03d09263 bne ra,t4,80000864 + +0000000080000844 : + 80000844: 00002097 auipc ra,0x2 + 80000848: 98c08093 addi ra,ra,-1652 # 800021d0 + 8000084c: 00c0a087 flw ft1,12(ra) + 80000850: c030f0d3 fcvt.lu.s ra,ft1 + 80000854: fff00e93 li t4,-1 + 80000858: 04500193 li gp,69 + 8000085c: 01d09463 bne ra,t4,80000864 + 80000860: 00301c63 bne zero,gp,80000878 + +0000000080000864 : + 80000864: 0ff0000f fence + 80000868: 00018063 beqz gp,80000868 + 8000086c: 00119193 slli gp,gp,0x1 + 80000870: 0011e193 ori gp,gp,1 + 80000874: 00000073 ecall + +0000000080000878 : + 80000878: 0ff0000f fence + 8000087c: 00100193 li gp,1 + 80000880: 00000073 ecall + 80000884: c0001073 unimp + 80000888: 0000 unimp + 8000088a: 0000 unimp + 8000088c: 0000 unimp + 8000088e: 0000 unimp + 80000890: 0000 unimp + 80000892: 0000 unimp + 80000894: 0000 unimp + 80000896: 0000 unimp + 80000898: 0000 unimp + 8000089a: 0000 unimp + 8000089c: 0000 unimp + 8000089e: 0000 unimp + 800008a0: 0000 unimp + 800008a2: 0000 unimp + 800008a4: 0000 unimp + 800008a6: 0000 unimp + 800008a8: 0000 unimp + 800008aa: 0000 unimp + 800008ac: 0000 unimp + 800008ae: 0000 unimp + 800008b0: 0000 unimp + 800008b2: 0000 unimp + 800008b4: 0000 unimp + 800008b6: 0000 unimp + 800008b8: 0000 unimp + 800008ba: 0000 unimp + 800008bc: 0000 unimp + 800008be: 0000 unimp + 800008c0: 0000 unimp + 800008c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: cccd beqz s1,800020ba + 80002002: bf8c fsd fa1,56(a5) + 80002004: 0000 unimp + 80002006: 0000 unimp + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: ffff 0xffff + 8000200e: ffff 0xffff + +0000000080002010 : + 80002010: 0000 unimp + 80002012: bf80 fsd fs0,56(a5) + 80002014: 0000 unimp + 80002016: 0000 unimp + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: ffff 0xffff + 8000201e: ffff 0xffff + +0000000080002020 : + 80002020: 6666 ld a2,88(sp) + 80002022: bf66 fsd fs9,440(sp) + 80002024: 0000 unimp + 80002026: 0000 unimp + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: 0000 unimp + 8000202e: 0000 unimp + +0000000080002030 : + 80002030: 6666 ld a2,88(sp) + 80002032: 3f66 fld ft10,120(sp) + 80002034: 0000 unimp + 80002036: 0000 unimp + 80002038: 0000 unimp + 8000203a: 0000 unimp + 8000203c: 0000 unimp + 8000203e: 0000 unimp + +0000000080002040 : + 80002040: 0000 unimp + 80002042: 3f80 fld fs0,56(a5) + 80002044: 0000 unimp + 80002046: 0000 unimp + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 0001 nop + 8000204e: 0000 unimp + +0000000080002050 : + 80002050: cccd beqz s1,8000210a + 80002052: 3f8c fld fa1,56(a5) + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0001 nop + 8000205e: 0000 unimp + +0000000080002060 : + 80002060: d05e sw s7,32(sp) + 80002062: cf32 sw a2,156(sp) + 80002064: 0000 unimp + 80002066: 0000 unimp + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 8000 0x8000 + +0000000080002070 : + 80002070: d05e sw s7,32(sp) + 80002072: 4f32 lw t5,12(sp) + 80002074: 0000 unimp + 80002076: 0000 unimp + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: ffff 0xffff + 8000207e: 7fff 0x7fff + +0000000080002080 : + 80002080: 0000 unimp + 80002082: c040 sw s0,4(s0) + 80002084: 0000 unimp + 80002086: 0000 unimp + 80002088: 0000 unimp + 8000208a: 0000 unimp + 8000208c: 0000 unimp + 8000208e: 0000 unimp + +0000000080002090 : + 80002090: 0000 unimp + 80002092: bf80 fsd fs0,56(a5) + 80002094: 0000 unimp + 80002096: 0000 unimp + 80002098: 0000 unimp + 8000209a: 0000 unimp + 8000209c: 0000 unimp + 8000209e: 0000 unimp + +00000000800020a0 : + 800020a0: 6666 ld a2,88(sp) + 800020a2: bf66 fsd fs9,440(sp) + 800020a4: 0000 unimp + 800020a6: 0000 unimp + 800020a8: 0000 unimp + 800020aa: 0000 unimp + 800020ac: 0000 unimp + 800020ae: 0000 unimp + +00000000800020b0 : + 800020b0: 6666 ld a2,88(sp) + 800020b2: 3f66 fld ft10,120(sp) + 800020b4: 0000 unimp + 800020b6: 0000 unimp + 800020b8: 0000 unimp + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: 0000 unimp + +00000000800020c0 : + 800020c0: 0000 unimp + 800020c2: 3f80 fld fs0,56(a5) + 800020c4: 0000 unimp + 800020c6: 0000 unimp + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0001 nop + 800020ce: 0000 unimp + +00000000800020d0 : + 800020d0: cccd beqz s1,8000218a + 800020d2: 3f8c fld fa1,56(a5) + 800020d4: 0000 unimp + 800020d6: 0000 unimp + 800020d8: 0000 unimp + 800020da: 0000 unimp + 800020dc: 0001 nop + 800020de: 0000 unimp + +00000000800020e0 : + 800020e0: d05e sw s7,32(sp) + 800020e2: cf32 sw a2,156(sp) + 800020e4: 0000 unimp + 800020e6: 0000 unimp + 800020e8: 0000 unimp + 800020ea: 0000 unimp + 800020ec: 0000 unimp + 800020ee: 0000 unimp + +00000000800020f0 : + 800020f0: d05e sw s7,32(sp) + 800020f2: 4f32 lw t5,12(sp) + 800020f4: 0000 unimp + 800020f6: 0000 unimp + 800020f8: 0000 unimp + 800020fa: 0000 unimp + 800020fc: 5e00 lw s0,56(a2) + 800020fe: b2d0 fsd fa2,160(a3) + +0000000080002100 : + 80002100: cccd beqz s1,800021ba + 80002102: bf8c fsd fa1,56(a5) + 80002104: 0000 unimp + 80002106: 0000 unimp + 80002108: 0000 unimp + 8000210a: 0000 unimp + 8000210c: ffff 0xffff + 8000210e: ffff 0xffff + +0000000080002110 : + 80002110: 0000 unimp + 80002112: bf80 fsd fs0,56(a5) + 80002114: 0000 unimp + 80002116: 0000 unimp + 80002118: 0000 unimp + 8000211a: 0000 unimp + 8000211c: ffff 0xffff + 8000211e: ffff 0xffff + +0000000080002120 : + 80002120: 6666 ld a2,88(sp) + 80002122: bf66 fsd fs9,440(sp) + 80002124: 0000 unimp + 80002126: 0000 unimp + 80002128: 0000 unimp + 8000212a: 0000 unimp + 8000212c: 0000 unimp + 8000212e: 0000 unimp + +0000000080002130 : + 80002130: 6666 ld a2,88(sp) + 80002132: 3f66 fld ft10,120(sp) + 80002134: 0000 unimp + 80002136: 0000 unimp + 80002138: 0000 unimp + 8000213a: 0000 unimp + 8000213c: 0000 unimp + 8000213e: 0000 unimp + +0000000080002140 : + 80002140: 0000 unimp + 80002142: 3f80 fld fs0,56(a5) + 80002144: 0000 unimp + 80002146: 0000 unimp + 80002148: 0000 unimp + 8000214a: 0000 unimp + 8000214c: 0001 nop + 8000214e: 0000 unimp + +0000000080002150 : + 80002150: cccd beqz s1,8000220a <_end+0xa> + 80002152: 3f8c fld fa1,56(a5) + 80002154: 0000 unimp + 80002156: 0000 unimp + 80002158: 0000 unimp + 8000215a: 0000 unimp + 8000215c: 0001 nop + 8000215e: 0000 unimp + +0000000080002160 : + 80002160: 0000 unimp + 80002162: c040 sw s0,4(s0) + 80002164: 0000 unimp + 80002166: 0000 unimp + 80002168: 0000 unimp + 8000216a: 0000 unimp + 8000216c: 0000 unimp + 8000216e: 0000 unimp + +0000000080002170 : + 80002170: 0000 unimp + 80002172: bf80 fsd fs0,56(a5) + 80002174: 0000 unimp + 80002176: 0000 unimp + 80002178: 0000 unimp + 8000217a: 0000 unimp + 8000217c: 0000 unimp + 8000217e: 0000 unimp + +0000000080002180 : + 80002180: 6666 ld a2,88(sp) + 80002182: bf66 fsd fs9,440(sp) + 80002184: 0000 unimp + 80002186: 0000 unimp + 80002188: 0000 unimp + 8000218a: 0000 unimp + 8000218c: 0000 unimp + 8000218e: 0000 unimp + +0000000080002190 : + 80002190: 6666 ld a2,88(sp) + 80002192: 3f66 fld ft10,120(sp) + 80002194: 0000 unimp + 80002196: 0000 unimp + 80002198: 0000 unimp + 8000219a: 0000 unimp + 8000219c: 0000 unimp + 8000219e: 0000 unimp + +00000000800021a0 : + 800021a0: 0000 unimp + 800021a2: 3f80 fld fs0,56(a5) + 800021a4: 0000 unimp + 800021a6: 0000 unimp + 800021a8: 0000 unimp + 800021aa: 0000 unimp + 800021ac: 0001 nop + 800021ae: 0000 unimp + +00000000800021b0 : + 800021b0: cccd beqz s1,8000226a <_end+0x6a> + 800021b2: 3f8c fld fa1,56(a5) + 800021b4: 0000 unimp + 800021b6: 0000 unimp + 800021b8: 0000 unimp + 800021ba: 0000 unimp + 800021bc: 0001 nop + 800021be: 0000 unimp + +00000000800021c0 : + 800021c0: d05e sw s7,32(sp) + 800021c2: cf32 sw a2,156(sp) + 800021c4: 0000 unimp + 800021c6: 0000 unimp + 800021c8: 0000 unimp + 800021ca: 0000 unimp + 800021cc: 0000 unimp + 800021ce: 0000 unimp + +00000000800021d0 : + 800021d0: ffff 0xffff + 800021d2: ffff 0xffff + 800021d4: ffff 0xffff + 800021d6: 7fff 0x7fff + 800021d8: 0000 unimp + 800021da: ff80 sd s0,56(a5) + 800021dc: 0000 unimp + 800021de: 7f80 ld s0,56(a5) + +00000000800021e0 : + 800021e0: ffff 0xffff + 800021e2: ffff 0xffff + 800021e4: ffff 0xffff + 800021e6: ffff 0xffff + 800021e8: ffff 0xffff + 800021ea: ffff 0xffff + 800021ec: ffff 0xffff + 800021ee: 7fff 0x7fff + 800021f0: 0000 unimp + 800021f2: 0000 unimp + 800021f4: 0000 unimp + 800021f6: fff0 sd a2,248(a5) + 800021f8: 0000 unimp + 800021fa: 0000 unimp + 800021fc: 0000 unimp + 800021fe: 7ff0 ld a2,248(a5) diff --git a/Tests/isa/rv64uf-p-fdiv b/Tests/isa/rv64uf-p-fdiv new file mode 100644 index 0000000..6e2d972 Binary files /dev/null and b/Tests/isa/rv64uf-p-fdiv differ diff --git a/Tests/isa/rv64uf-p-fdiv.dump b/Tests/isa/rv64uf-p-fdiv.dump new file mode 100644 index 0000000..def2be6 --- /dev/null +++ b/Tests/isa/rv64uf-p-fdiv.dump @@ -0,0 +1,294 @@ + +rv64uf-p-fdiv: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00052007 flw ft0,0(a0) + 80000118: 00452087 flw ft1,4(a0) + 8000011c: 00852107 flw ft2,8(a0) + 80000120: 00c52683 lw a3,12(a0) + 80000124: 181071d3 fdiv.s ft3,ft0,ft1 + 80000128: e0018553 fmv.x.w a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00100613 li a2,1 + 80000134: 14d51263 bne a0,a3,80000278 + 80000138: 14c59063 bne a1,a2,80000278 + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ed050513 addi a0,a0,-304 # 80002010 + 80000148: 00052007 flw ft0,0(a0) + 8000014c: 00452087 flw ft1,4(a0) + 80000150: 00852107 flw ft2,8(a0) + 80000154: 00c52683 lw a3,12(a0) + 80000158: 181071d3 fdiv.s ft3,ft0,ft1 + 8000015c: e0018553 fmv.x.w a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00100613 li a2,1 + 80000168: 10d51863 bne a0,a3,80000278 + 8000016c: 10c59663 bne a1,a2,80000278 + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: eac50513 addi a0,a0,-340 # 80002020 + 8000017c: 00052007 flw ft0,0(a0) + 80000180: 00452087 flw ft1,4(a0) + 80000184: 00852107 flw ft2,8(a0) + 80000188: 00c52683 lw a3,12(a0) + 8000018c: 181071d3 fdiv.s ft3,ft0,ft1 + 80000190: e0018553 fmv.x.w a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00000613 li a2,0 + 8000019c: 0cd51e63 bne a0,a3,80000278 + 800001a0: 0cc59c63 bne a1,a2,80000278 + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: e8850513 addi a0,a0,-376 # 80002030 + 800001b0: 00052007 flw ft0,0(a0) + 800001b4: 00452087 flw ft1,4(a0) + 800001b8: 00852107 flw ft2,8(a0) + 800001bc: 00c52683 lw a3,12(a0) + 800001c0: 580071d3 fsqrt.s ft3,ft0 + 800001c4: e0018553 fmv.x.w a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00100613 li a2,1 + 800001d0: 0ad51463 bne a0,a3,80000278 + 800001d4: 0ac59263 bne a1,a2,80000278 + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: e6450513 addi a0,a0,-412 # 80002040 + 800001e4: 00052007 flw ft0,0(a0) + 800001e8: 00452087 flw ft1,4(a0) + 800001ec: 00852107 flw ft2,8(a0) + 800001f0: 00c52683 lw a3,12(a0) + 800001f4: 580071d3 fsqrt.s ft3,ft0 + 800001f8: e0018553 fmv.x.w a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00000613 li a2,0 + 80000204: 06d51a63 bne a0,a3,80000278 + 80000208: 06c59863 bne a1,a2,80000278 + +000000008000020c : + 8000020c: 00700193 li gp,7 + 80000210: 00002517 auipc a0,0x2 + 80000214: e4050513 addi a0,a0,-448 # 80002050 + 80000218: 00052007 flw ft0,0(a0) + 8000021c: 00452087 flw ft1,4(a0) + 80000220: 00852107 flw ft2,8(a0) + 80000224: 00c52683 lw a3,12(a0) + 80000228: 580071d3 fsqrt.s ft3,ft0 + 8000022c: e0018553 fmv.x.w a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 01000613 li a2,16 + 80000238: 04d51063 bne a0,a3,80000278 + 8000023c: 02c59e63 bne a1,a2,80000278 + +0000000080000240 : + 80000240: 00800193 li gp,8 + 80000244: 00002517 auipc a0,0x2 + 80000248: e2050513 addi a0,a0,-480 # 80002064 + 8000024c: 00052007 flw ft0,0(a0) + 80000250: 00452087 flw ft1,4(a0) + 80000254: 00852107 flw ft2,8(a0) + 80000258: 00c52683 lw a3,12(a0) + 8000025c: 580071d3 fsqrt.s ft3,ft0 + 80000260: e0018553 fmv.x.w a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00100613 li a2,1 + 8000026c: 00d51663 bne a0,a3,80000278 + 80000270: 00c59463 bne a1,a2,80000278 + 80000274: 00301c63 bne zero,gp,8000028c + +0000000080000278 : + 80000278: 0ff0000f fence + 8000027c: 00018063 beqz gp,8000027c + 80000280: 00119193 slli gp,gp,0x1 + 80000284: 0011e193 ori gp,gp,1 + 80000288: 00000073 ecall + +000000008000028c : + 8000028c: 0ff0000f fence + 80000290: 00100193 li gp,1 + 80000294: 00000073 ecall + 80000298: c0001073 unimp + 8000029c: 0000 unimp + 8000029e: 0000 unimp + 800002a0: 0000 unimp + 800002a2: 0000 unimp + 800002a4: 0000 unimp + 800002a6: 0000 unimp + 800002a8: 0000 unimp + 800002aa: 0000 unimp + 800002ac: 0000 unimp + 800002ae: 0000 unimp + 800002b0: 0000 unimp + 800002b2: 0000 unimp + 800002b4: 0000 unimp + 800002b6: 0000 unimp + 800002b8: 0000 unimp + 800002ba: 0000 unimp + 800002bc: 0000 unimp + 800002be: 0000 unimp + 800002c0: 0000 unimp + 800002c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 40490fdb 0x40490fdb + 80002004: f854 sd a3,176(s0) + 80002006: 402d c.li zero,11 + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: eee0 sd s0,216(a3) + 8000200e: sltiu t6,zero,1024 + +0000000080002010 : + 80002010: 4000 lw s0,0(s0) + 80002012: c49a sw t1,72(sp) + 80002014: 449a6333 0x449a6333 + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: c5a2 sw s0,200(sp) + 8000201e: bf7f 0xbf7f + +0000000080002020 : + 80002020: 40490fdb 0x40490fdb + 80002024: 0000 unimp + 80002026: 3f80 fld fs0,56(a5) + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: 40490fdb 0x40490fdb + +0000000080002030 : + 80002030: 40490fdb 0x40490fdb + 80002034: 0000 unimp + 80002036: 0000 unimp + 80002038: 0000 unimp + 8000203a: 0000 unimp + 8000203c: dfc5 beqz a5,80001ff4 + 8000203e: 3fe2 fld ft11,56(sp) + +0000000080002040 : + 80002040: 4000 lw s0,0(s0) + 80002042: 461c lw a5,8(a2) + 80002044: 0000 unimp + 80002046: 0000 unimp + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 0000 unimp + 8000204e: 42c8 lw a0,4(a3) + +0000000080002050 : + 80002050: 0000 unimp + 80002052: bf80 fsd fs0,56(a5) + 80002054: 0000 unimp + 80002056: 0000 unimp + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0000 unimp + 8000205e: 7fc0 ld s0,184(a5) + 80002060: 0000 unimp + 80002062: 0000 unimp + +0000000080002064 : + 80002064: 0000 unimp + 80002066: 0000432b 0x432b + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 0000 unimp + 80002070: 3a26 fld fs4,104(sp) + 80002072: 4151 li sp,20 + 80002074: 0000 unimp + 80002076: 0000 unimp + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: 0000 unimp + 8000207e: 0000 unimp diff --git a/Tests/isa/rv64uf-p-fmadd b/Tests/isa/rv64uf-p-fmadd new file mode 100644 index 0000000..f53110d Binary files /dev/null and b/Tests/isa/rv64uf-p-fmadd differ diff --git a/Tests/isa/rv64uf-p-fmadd.dump b/Tests/isa/rv64uf-p-fmadd.dump new file mode 100644 index 0000000..6257d91 --- /dev/null +++ b/Tests/isa/rv64uf-p-fmadd.dump @@ -0,0 +1,411 @@ + +rv64uf-p-fmadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00052007 flw ft0,0(a0) + 80000118: 00452087 flw ft1,4(a0) + 8000011c: 00852107 flw ft2,8(a0) + 80000120: 00c52683 lw a3,12(a0) + 80000124: 101071c3 fmadd.s ft3,ft0,ft1,ft2 + 80000128: e0018553 fmv.x.w a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00000613 li a2,0 + 80000134: 24d51463 bne a0,a3,8000037c + 80000138: 24c59263 bne a1,a2,8000037c + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ed050513 addi a0,a0,-304 # 80002010 + 80000148: 00052007 flw ft0,0(a0) + 8000014c: 00452087 flw ft1,4(a0) + 80000150: 00852107 flw ft2,8(a0) + 80000154: 00c52683 lw a3,12(a0) + 80000158: 101071c3 fmadd.s ft3,ft0,ft1,ft2 + 8000015c: e0018553 fmv.x.w a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00100613 li a2,1 + 80000168: 20d51a63 bne a0,a3,8000037c + 8000016c: 20c59863 bne a1,a2,8000037c + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: eac50513 addi a0,a0,-340 # 80002020 + 8000017c: 00052007 flw ft0,0(a0) + 80000180: 00452087 flw ft1,4(a0) + 80000184: 00852107 flw ft2,8(a0) + 80000188: 00c52683 lw a3,12(a0) + 8000018c: 101071c3 fmadd.s ft3,ft0,ft1,ft2 + 80000190: e0018553 fmv.x.w a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00000613 li a2,0 + 8000019c: 1ed51063 bne a0,a3,8000037c + 800001a0: 1cc59e63 bne a1,a2,8000037c + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: e8850513 addi a0,a0,-376 # 80002030 + 800001b0: 00052007 flw ft0,0(a0) + 800001b4: 00452087 flw ft1,4(a0) + 800001b8: 00852107 flw ft2,8(a0) + 800001bc: 00c52683 lw a3,12(a0) + 800001c0: 101071cf fnmadd.s ft3,ft0,ft1,ft2 + 800001c4: e0018553 fmv.x.w a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00000613 li a2,0 + 800001d0: 1ad51663 bne a0,a3,8000037c + 800001d4: 1ac59463 bne a1,a2,8000037c + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: e6450513 addi a0,a0,-412 # 80002040 + 800001e4: 00052007 flw ft0,0(a0) + 800001e8: 00452087 flw ft1,4(a0) + 800001ec: 00852107 flw ft2,8(a0) + 800001f0: 00c52683 lw a3,12(a0) + 800001f4: 101071cf fnmadd.s ft3,ft0,ft1,ft2 + 800001f8: e0018553 fmv.x.w a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00100613 li a2,1 + 80000204: 16d51c63 bne a0,a3,8000037c + 80000208: 16c59a63 bne a1,a2,8000037c + +000000008000020c : + 8000020c: 00700193 li gp,7 + 80000210: 00002517 auipc a0,0x2 + 80000214: e4050513 addi a0,a0,-448 # 80002050 + 80000218: 00052007 flw ft0,0(a0) + 8000021c: 00452087 flw ft1,4(a0) + 80000220: 00852107 flw ft2,8(a0) + 80000224: 00c52683 lw a3,12(a0) + 80000228: 101071cf fnmadd.s ft3,ft0,ft1,ft2 + 8000022c: e0018553 fmv.x.w a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 00000613 li a2,0 + 80000238: 14d51263 bne a0,a3,8000037c + 8000023c: 14c59063 bne a1,a2,8000037c + +0000000080000240 : + 80000240: 00800193 li gp,8 + 80000244: 00002517 auipc a0,0x2 + 80000248: e1c50513 addi a0,a0,-484 # 80002060 + 8000024c: 00052007 flw ft0,0(a0) + 80000250: 00452087 flw ft1,4(a0) + 80000254: 00852107 flw ft2,8(a0) + 80000258: 00c52683 lw a3,12(a0) + 8000025c: 101071c7 fmsub.s ft3,ft0,ft1,ft2 + 80000260: e0018553 fmv.x.w a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00000613 li a2,0 + 8000026c: 10d51863 bne a0,a3,8000037c + 80000270: 10c59663 bne a1,a2,8000037c + +0000000080000274 : + 80000274: 00900193 li gp,9 + 80000278: 00002517 auipc a0,0x2 + 8000027c: df850513 addi a0,a0,-520 # 80002070 + 80000280: 00052007 flw ft0,0(a0) + 80000284: 00452087 flw ft1,4(a0) + 80000288: 00852107 flw ft2,8(a0) + 8000028c: 00c52683 lw a3,12(a0) + 80000290: 101071c7 fmsub.s ft3,ft0,ft1,ft2 + 80000294: e0018553 fmv.x.w a0,ft3 + 80000298: 001015f3 fsflags a1,zero + 8000029c: 00100613 li a2,1 + 800002a0: 0cd51e63 bne a0,a3,8000037c + 800002a4: 0cc59c63 bne a1,a2,8000037c + +00000000800002a8 : + 800002a8: 00a00193 li gp,10 + 800002ac: 00002517 auipc a0,0x2 + 800002b0: dd450513 addi a0,a0,-556 # 80002080 + 800002b4: 00052007 flw ft0,0(a0) + 800002b8: 00452087 flw ft1,4(a0) + 800002bc: 00852107 flw ft2,8(a0) + 800002c0: 00c52683 lw a3,12(a0) + 800002c4: 101071c7 fmsub.s ft3,ft0,ft1,ft2 + 800002c8: e0018553 fmv.x.w a0,ft3 + 800002cc: 001015f3 fsflags a1,zero + 800002d0: 00000613 li a2,0 + 800002d4: 0ad51463 bne a0,a3,8000037c + 800002d8: 0ac59263 bne a1,a2,8000037c + +00000000800002dc : + 800002dc: 00b00193 li gp,11 + 800002e0: 00002517 auipc a0,0x2 + 800002e4: db050513 addi a0,a0,-592 # 80002090 + 800002e8: 00052007 flw ft0,0(a0) + 800002ec: 00452087 flw ft1,4(a0) + 800002f0: 00852107 flw ft2,8(a0) + 800002f4: 00c52683 lw a3,12(a0) + 800002f8: 101071cb fnmsub.s ft3,ft0,ft1,ft2 + 800002fc: e0018553 fmv.x.w a0,ft3 + 80000300: 001015f3 fsflags a1,zero + 80000304: 00000613 li a2,0 + 80000308: 06d51a63 bne a0,a3,8000037c + 8000030c: 06c59863 bne a1,a2,8000037c + +0000000080000310 : + 80000310: 00c00193 li gp,12 + 80000314: 00002517 auipc a0,0x2 + 80000318: d8c50513 addi a0,a0,-628 # 800020a0 + 8000031c: 00052007 flw ft0,0(a0) + 80000320: 00452087 flw ft1,4(a0) + 80000324: 00852107 flw ft2,8(a0) + 80000328: 00c52683 lw a3,12(a0) + 8000032c: 101071cb fnmsub.s ft3,ft0,ft1,ft2 + 80000330: e0018553 fmv.x.w a0,ft3 + 80000334: 001015f3 fsflags a1,zero + 80000338: 00100613 li a2,1 + 8000033c: 04d51063 bne a0,a3,8000037c + 80000340: 02c59e63 bne a1,a2,8000037c + +0000000080000344 : + 80000344: 00d00193 li gp,13 + 80000348: 00002517 auipc a0,0x2 + 8000034c: d6850513 addi a0,a0,-664 # 800020b0 + 80000350: 00052007 flw ft0,0(a0) + 80000354: 00452087 flw ft1,4(a0) + 80000358: 00852107 flw ft2,8(a0) + 8000035c: 00c52683 lw a3,12(a0) + 80000360: 101071cb fnmsub.s ft3,ft0,ft1,ft2 + 80000364: e0018553 fmv.x.w a0,ft3 + 80000368: 001015f3 fsflags a1,zero + 8000036c: 00000613 li a2,0 + 80000370: 00d51663 bne a0,a3,8000037c + 80000374: 00c59463 bne a1,a2,8000037c + 80000378: 00301c63 bne zero,gp,80000390 + +000000008000037c : + 8000037c: 0ff0000f fence + 80000380: 00018063 beqz gp,80000380 + 80000384: 00119193 slli gp,gp,0x1 + 80000388: 0011e193 ori gp,gp,1 + 8000038c: 00000073 ecall + +0000000080000390 : + 80000390: 0ff0000f fence + 80000394: 00100193 li gp,1 + 80000398: 00000073 ecall + 8000039c: c0001073 unimp + 800003a0: 0000 unimp + 800003a2: 0000 unimp + 800003a4: 0000 unimp + 800003a6: 0000 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 3f80 fld fs0,56(a5) + 80002004: 0000 unimp + 80002006: 4020 lw s0,64(s0) + 80002008: 0000 unimp + 8000200a: 3f80 fld fs0,56(a5) + 8000200c: 0000 unimp + 8000200e: 4060 lw s0,68(s0) + +0000000080002010 : + 80002010: 0000 unimp + 80002012: bf80 fsd fs0,56(a5) + 80002014: c49a6333 0xc49a6333 + 80002018: cccd beqz s1,800020d2 <_end+0x12> + 8000201a: 3f8c fld fa1,56(a5) + 8000201c: 8666 mv a2,s9 + 8000201e: 449a lw s1,132(sp) + +0000000080002020 : + 80002020: 0000 unimp + 80002022: 4000 lw s0,0(s0) + 80002024: 0000 unimp + 80002026: c0a0 sw s0,64(s1) + 80002028: 0000 unimp + 8000202a: c000 sw s0,0(s0) + 8000202c: 0000 unimp + 8000202e: c140 sw s0,4(a0) + +0000000080002030 : + 80002030: 0000 unimp + 80002032: 3f80 fld fs0,56(a5) + 80002034: 0000 unimp + 80002036: 4020 lw s0,64(s0) + 80002038: 0000 unimp + 8000203a: 3f80 fld fs0,56(a5) + 8000203c: 0000 unimp + 8000203e: c060 sw s0,68(s0) + +0000000080002040 : + 80002040: 0000 unimp + 80002042: bf80 fsd fs0,56(a5) + 80002044: c49a6333 0xc49a6333 + 80002048: cccd beqz s1,80002102 <_end+0x42> + 8000204a: 3f8c fld fa1,56(a5) + 8000204c: 8666 mv a2,s9 + 8000204e: c49a sw t1,72(sp) + +0000000080002050 : + 80002050: 0000 unimp + 80002052: 4000 lw s0,0(s0) + 80002054: 0000 unimp + 80002056: c0a0 sw s0,64(s1) + 80002058: 0000 unimp + 8000205a: c000 sw s0,0(s0) + 8000205c: 0000 unimp + 8000205e: 4140 lw s0,4(a0) + +0000000080002060 : + 80002060: 0000 unimp + 80002062: 3f80 fld fs0,56(a5) + 80002064: 0000 unimp + 80002066: 4020 lw s0,64(s0) + 80002068: 0000 unimp + 8000206a: 3f80 fld fs0,56(a5) + 8000206c: 0000 unimp + 8000206e: 3fc0 fld fs0,184(a5) + +0000000080002070 : + 80002070: 0000 unimp + 80002072: bf80 fsd fs0,56(a5) + 80002074: c49a6333 0xc49a6333 + 80002078: cccd beqz s1,80002132 <_end+0x72> + 8000207a: 3f8c fld fa1,56(a5) + 8000207c: 4000 lw s0,0(s0) + 8000207e: 449a lw s1,132(sp) + +0000000080002080 : + 80002080: 0000 unimp + 80002082: 4000 lw s0,0(s0) + 80002084: 0000 unimp + 80002086: c0a0 sw s0,64(s1) + 80002088: 0000 unimp + 8000208a: c000 sw s0,0(s0) + 8000208c: 0000 unimp + 8000208e: c100 sw s0,0(a0) + +0000000080002090 : + 80002090: 0000 unimp + 80002092: 3f80 fld fs0,56(a5) + 80002094: 0000 unimp + 80002096: 4020 lw s0,64(s0) + 80002098: 0000 unimp + 8000209a: 3f80 fld fs0,56(a5) + 8000209c: 0000 unimp + 8000209e: bfc0 fsd fs0,184(a5) + +00000000800020a0 : + 800020a0: 0000 unimp + 800020a2: bf80 fsd fs0,56(a5) + 800020a4: c49a6333 0xc49a6333 + 800020a8: cccd beqz s1,80002162 <_end+0xa2> + 800020aa: 3f8c fld fa1,56(a5) + 800020ac: 4000 lw s0,0(s0) + 800020ae: c49a sw t1,72(sp) + +00000000800020b0 : + 800020b0: 0000 unimp + 800020b2: 4000 lw s0,0(s0) + 800020b4: 0000 unimp + 800020b6: c0a0 sw s0,64(s1) + 800020b8: 0000 unimp + 800020ba: c000 sw s0,0(s0) + 800020bc: 0000 unimp + 800020be: 4100 lw s0,0(a0) diff --git a/Tests/isa/rv64uf-p-fmin b/Tests/isa/rv64uf-p-fmin new file mode 100644 index 0000000..7dc190f Binary files /dev/null and b/Tests/isa/rv64uf-p-fmin differ diff --git a/Tests/isa/rv64uf-p-fmin.dump b/Tests/isa/rv64uf-p-fmin.dump new file mode 100644 index 0000000..7c47a6f --- /dev/null +++ b/Tests/isa/rv64uf-p-fmin.dump @@ -0,0 +1,553 @@ + +rv64uf-p-fmin: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00200193 li gp,2 + 8000010c: 00002517 auipc a0,0x2 + 80000110: ef450513 addi a0,a0,-268 # 80002000 + 80000114: 00052007 flw ft0,0(a0) + 80000118: 00452087 flw ft1,4(a0) + 8000011c: 00852107 flw ft2,8(a0) + 80000120: 00c52683 lw a3,12(a0) + 80000124: 281001d3 fmin.s ft3,ft0,ft1 + 80000128: e0018553 fmv.x.w a0,ft3 + 8000012c: 001015f3 fsflags a1,zero + 80000130: 00000613 li a2,0 + 80000134: 38d51063 bne a0,a3,800004b4 + 80000138: 36c59e63 bne a1,a2,800004b4 + +000000008000013c : + 8000013c: 00300193 li gp,3 + 80000140: 00002517 auipc a0,0x2 + 80000144: ed050513 addi a0,a0,-304 # 80002010 + 80000148: 00052007 flw ft0,0(a0) + 8000014c: 00452087 flw ft1,4(a0) + 80000150: 00852107 flw ft2,8(a0) + 80000154: 00c52683 lw a3,12(a0) + 80000158: 281001d3 fmin.s ft3,ft0,ft1 + 8000015c: e0018553 fmv.x.w a0,ft3 + 80000160: 001015f3 fsflags a1,zero + 80000164: 00000613 li a2,0 + 80000168: 34d51663 bne a0,a3,800004b4 + 8000016c: 34c59463 bne a1,a2,800004b4 + +0000000080000170 : + 80000170: 00400193 li gp,4 + 80000174: 00002517 auipc a0,0x2 + 80000178: eac50513 addi a0,a0,-340 # 80002020 + 8000017c: 00052007 flw ft0,0(a0) + 80000180: 00452087 flw ft1,4(a0) + 80000184: 00852107 flw ft2,8(a0) + 80000188: 00c52683 lw a3,12(a0) + 8000018c: 281001d3 fmin.s ft3,ft0,ft1 + 80000190: e0018553 fmv.x.w a0,ft3 + 80000194: 001015f3 fsflags a1,zero + 80000198: 00000613 li a2,0 + 8000019c: 30d51c63 bne a0,a3,800004b4 + 800001a0: 30c59a63 bne a1,a2,800004b4 + +00000000800001a4 : + 800001a4: 00500193 li gp,5 + 800001a8: 00002517 auipc a0,0x2 + 800001ac: e8850513 addi a0,a0,-376 # 80002030 + 800001b0: 00052007 flw ft0,0(a0) + 800001b4: 00452087 flw ft1,4(a0) + 800001b8: 00852107 flw ft2,8(a0) + 800001bc: 00c52683 lw a3,12(a0) + 800001c0: 281001d3 fmin.s ft3,ft0,ft1 + 800001c4: e0018553 fmv.x.w a0,ft3 + 800001c8: 001015f3 fsflags a1,zero + 800001cc: 00000613 li a2,0 + 800001d0: 2ed51263 bne a0,a3,800004b4 + 800001d4: 2ec59063 bne a1,a2,800004b4 + +00000000800001d8 : + 800001d8: 00600193 li gp,6 + 800001dc: 00002517 auipc a0,0x2 + 800001e0: e6450513 addi a0,a0,-412 # 80002040 + 800001e4: 00052007 flw ft0,0(a0) + 800001e8: 00452087 flw ft1,4(a0) + 800001ec: 00852107 flw ft2,8(a0) + 800001f0: 00c52683 lw a3,12(a0) + 800001f4: 281001d3 fmin.s ft3,ft0,ft1 + 800001f8: e0018553 fmv.x.w a0,ft3 + 800001fc: 001015f3 fsflags a1,zero + 80000200: 00000613 li a2,0 + 80000204: 2ad51863 bne a0,a3,800004b4 + 80000208: 2ac59663 bne a1,a2,800004b4 + +000000008000020c : + 8000020c: 00700193 li gp,7 + 80000210: 00002517 auipc a0,0x2 + 80000214: e4050513 addi a0,a0,-448 # 80002050 + 80000218: 00052007 flw ft0,0(a0) + 8000021c: 00452087 flw ft1,4(a0) + 80000220: 00852107 flw ft2,8(a0) + 80000224: 00c52683 lw a3,12(a0) + 80000228: 281001d3 fmin.s ft3,ft0,ft1 + 8000022c: e0018553 fmv.x.w a0,ft3 + 80000230: 001015f3 fsflags a1,zero + 80000234: 00000613 li a2,0 + 80000238: 26d51e63 bne a0,a3,800004b4 + 8000023c: 26c59c63 bne a1,a2,800004b4 + +0000000080000240 : + 80000240: 00c00193 li gp,12 + 80000244: 00002517 auipc a0,0x2 + 80000248: e1c50513 addi a0,a0,-484 # 80002060 + 8000024c: 00052007 flw ft0,0(a0) + 80000250: 00452087 flw ft1,4(a0) + 80000254: 00852107 flw ft2,8(a0) + 80000258: 00c52683 lw a3,12(a0) + 8000025c: 281011d3 fmax.s ft3,ft0,ft1 + 80000260: e0018553 fmv.x.w a0,ft3 + 80000264: 001015f3 fsflags a1,zero + 80000268: 00000613 li a2,0 + 8000026c: 24d51463 bne a0,a3,800004b4 + 80000270: 24c59263 bne a1,a2,800004b4 + +0000000080000274 : + 80000274: 00d00193 li gp,13 + 80000278: 00002517 auipc a0,0x2 + 8000027c: df850513 addi a0,a0,-520 # 80002070 + 80000280: 00052007 flw ft0,0(a0) + 80000284: 00452087 flw ft1,4(a0) + 80000288: 00852107 flw ft2,8(a0) + 8000028c: 00c52683 lw a3,12(a0) + 80000290: 281011d3 fmax.s ft3,ft0,ft1 + 80000294: e0018553 fmv.x.w a0,ft3 + 80000298: 001015f3 fsflags a1,zero + 8000029c: 00000613 li a2,0 + 800002a0: 20d51a63 bne a0,a3,800004b4 + 800002a4: 20c59863 bne a1,a2,800004b4 + +00000000800002a8 : + 800002a8: 00e00193 li gp,14 + 800002ac: 00002517 auipc a0,0x2 + 800002b0: dd450513 addi a0,a0,-556 # 80002080 + 800002b4: 00052007 flw ft0,0(a0) + 800002b8: 00452087 flw ft1,4(a0) + 800002bc: 00852107 flw ft2,8(a0) + 800002c0: 00c52683 lw a3,12(a0) + 800002c4: 281011d3 fmax.s ft3,ft0,ft1 + 800002c8: e0018553 fmv.x.w a0,ft3 + 800002cc: 001015f3 fsflags a1,zero + 800002d0: 00000613 li a2,0 + 800002d4: 1ed51063 bne a0,a3,800004b4 + 800002d8: 1cc59e63 bne a1,a2,800004b4 + +00000000800002dc : + 800002dc: 00f00193 li gp,15 + 800002e0: 00002517 auipc a0,0x2 + 800002e4: db050513 addi a0,a0,-592 # 80002090 + 800002e8: 00052007 flw ft0,0(a0) + 800002ec: 00452087 flw ft1,4(a0) + 800002f0: 00852107 flw ft2,8(a0) + 800002f4: 00c52683 lw a3,12(a0) + 800002f8: 281011d3 fmax.s ft3,ft0,ft1 + 800002fc: e0018553 fmv.x.w a0,ft3 + 80000300: 001015f3 fsflags a1,zero + 80000304: 00000613 li a2,0 + 80000308: 1ad51663 bne a0,a3,800004b4 + 8000030c: 1ac59463 bne a1,a2,800004b4 + +0000000080000310 : + 80000310: 01000193 li gp,16 + 80000314: 00002517 auipc a0,0x2 + 80000318: d8c50513 addi a0,a0,-628 # 800020a0 + 8000031c: 00052007 flw ft0,0(a0) + 80000320: 00452087 flw ft1,4(a0) + 80000324: 00852107 flw ft2,8(a0) + 80000328: 00c52683 lw a3,12(a0) + 8000032c: 281011d3 fmax.s ft3,ft0,ft1 + 80000330: e0018553 fmv.x.w a0,ft3 + 80000334: 001015f3 fsflags a1,zero + 80000338: 00000613 li a2,0 + 8000033c: 16d51c63 bne a0,a3,800004b4 + 80000340: 16c59a63 bne a1,a2,800004b4 + +0000000080000344 : + 80000344: 01100193 li gp,17 + 80000348: 00002517 auipc a0,0x2 + 8000034c: d6850513 addi a0,a0,-664 # 800020b0 + 80000350: 00052007 flw ft0,0(a0) + 80000354: 00452087 flw ft1,4(a0) + 80000358: 00852107 flw ft2,8(a0) + 8000035c: 00c52683 lw a3,12(a0) + 80000360: 281011d3 fmax.s ft3,ft0,ft1 + 80000364: e0018553 fmv.x.w a0,ft3 + 80000368: 001015f3 fsflags a1,zero + 8000036c: 00000613 li a2,0 + 80000370: 14d51263 bne a0,a3,800004b4 + 80000374: 14c59063 bne a1,a2,800004b4 + +0000000080000378 : + 80000378: 01400193 li gp,20 + 8000037c: 00002517 auipc a0,0x2 + 80000380: d4450513 addi a0,a0,-700 # 800020c0 + 80000384: 00052007 flw ft0,0(a0) + 80000388: 00452087 flw ft1,4(a0) + 8000038c: 00852107 flw ft2,8(a0) + 80000390: 00c52683 lw a3,12(a0) + 80000394: 281011d3 fmax.s ft3,ft0,ft1 + 80000398: e0018553 fmv.x.w a0,ft3 + 8000039c: 001015f3 fsflags a1,zero + 800003a0: 01000613 li a2,16 + 800003a4: 10d51863 bne a0,a3,800004b4 + 800003a8: 10c59663 bne a1,a2,800004b4 + +00000000800003ac : + 800003ac: 01500193 li gp,21 + 800003b0: 00002517 auipc a0,0x2 + 800003b4: d2050513 addi a0,a0,-736 # 800020d0 + 800003b8: 00052007 flw ft0,0(a0) + 800003bc: 00452087 flw ft1,4(a0) + 800003c0: 00852107 flw ft2,8(a0) + 800003c4: 00c52683 lw a3,12(a0) + 800003c8: 281011d3 fmax.s ft3,ft0,ft1 + 800003cc: e0018553 fmv.x.w a0,ft3 + 800003d0: 001015f3 fsflags a1,zero + 800003d4: 00000613 li a2,0 + 800003d8: 0cd51e63 bne a0,a3,800004b4 + 800003dc: 0cc59c63 bne a1,a2,800004b4 + +00000000800003e0 : + 800003e0: 01e00193 li gp,30 + 800003e4: 00002517 auipc a0,0x2 + 800003e8: cfc50513 addi a0,a0,-772 # 800020e0 + 800003ec: 00052007 flw ft0,0(a0) + 800003f0: 00452087 flw ft1,4(a0) + 800003f4: 00852107 flw ft2,8(a0) + 800003f8: 00c52683 lw a3,12(a0) + 800003fc: 281001d3 fmin.s ft3,ft0,ft1 + 80000400: e0018553 fmv.x.w a0,ft3 + 80000404: 001015f3 fsflags a1,zero + 80000408: 00000613 li a2,0 + 8000040c: 0ad51463 bne a0,a3,800004b4 + 80000410: 0ac59263 bne a1,a2,800004b4 + +0000000080000414 : + 80000414: 01f00193 li gp,31 + 80000418: 00002517 auipc a0,0x2 + 8000041c: cd850513 addi a0,a0,-808 # 800020f0 + 80000420: 00052007 flw ft0,0(a0) + 80000424: 00452087 flw ft1,4(a0) + 80000428: 00852107 flw ft2,8(a0) + 8000042c: 00c52683 lw a3,12(a0) + 80000430: 281001d3 fmin.s ft3,ft0,ft1 + 80000434: e0018553 fmv.x.w a0,ft3 + 80000438: 001015f3 fsflags a1,zero + 8000043c: 00000613 li a2,0 + 80000440: 06d51a63 bne a0,a3,800004b4 + 80000444: 06c59863 bne a1,a2,800004b4 + +0000000080000448 : + 80000448: 02000193 li gp,32 + 8000044c: 00002517 auipc a0,0x2 + 80000450: cb450513 addi a0,a0,-844 # 80002100 + 80000454: 00052007 flw ft0,0(a0) + 80000458: 00452087 flw ft1,4(a0) + 8000045c: 00852107 flw ft2,8(a0) + 80000460: 00c52683 lw a3,12(a0) + 80000464: 281011d3 fmax.s ft3,ft0,ft1 + 80000468: e0018553 fmv.x.w a0,ft3 + 8000046c: 001015f3 fsflags a1,zero + 80000470: 00000613 li a2,0 + 80000474: 04d51063 bne a0,a3,800004b4 + 80000478: 02c59e63 bne a1,a2,800004b4 + +000000008000047c : + 8000047c: 02100193 li gp,33 + 80000480: 00002517 auipc a0,0x2 + 80000484: c9050513 addi a0,a0,-880 # 80002110 + 80000488: 00052007 flw ft0,0(a0) + 8000048c: 00452087 flw ft1,4(a0) + 80000490: 00852107 flw ft2,8(a0) + 80000494: 00c52683 lw a3,12(a0) + 80000498: 281011d3 fmax.s ft3,ft0,ft1 + 8000049c: e0018553 fmv.x.w a0,ft3 + 800004a0: 001015f3 fsflags a1,zero + 800004a4: 00000613 li a2,0 + 800004a8: 00d51663 bne a0,a3,800004b4 + 800004ac: 00c59463 bne a1,a2,800004b4 + 800004b0: 00301c63 bne zero,gp,800004c8 + +00000000800004b4 : + 800004b4: 0ff0000f fence + 800004b8: 00018063 beqz gp,800004b8 + 800004bc: 00119193 slli gp,gp,0x1 + 800004c0: 0011e193 ori gp,gp,1 + 800004c4: 00000073 ecall + +00000000800004c8 : + 800004c8: 0ff0000f fence + 800004cc: 00100193 li gp,1 + 800004d0: 00000073 ecall + 800004d4: c0001073 unimp + 800004d8: 0000 unimp + 800004da: 0000 unimp + 800004dc: 0000 unimp + 800004de: 0000 unimp + 800004e0: 0000 unimp + 800004e2: 0000 unimp + 800004e4: 0000 unimp + 800004e6: 0000 unimp + 800004e8: 0000 unimp + 800004ea: 0000 unimp + 800004ec: 0000 unimp + 800004ee: 0000 unimp + 800004f0: 0000 unimp + 800004f2: 0000 unimp + 800004f4: 0000 unimp + 800004f6: 0000 unimp + 800004f8: 0000 unimp + 800004fa: 0000 unimp + 800004fc: 0000 unimp + 800004fe: 0000 unimp + 80000500: 0000 unimp + 80000502: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: 4020 lw s0,64(s0) + 80002004: 0000 unimp + 80002006: 3f80 fld fs0,56(a5) + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 3f80 fld fs0,56(a5) + +0000000080002010 : + 80002010: c49a6333 0xc49a6333 + 80002014: cccd beqz s1,800020ce + 80002016: 3f8c fld fa1,56(a5) + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: c49a6333 0xc49a6333 + +0000000080002020 : + 80002020: cccd beqz s1,800020da + 80002022: 3f8c fld fa1,56(a5) + 80002024: c49a6333 0xc49a6333 + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: c49a6333 0xc49a6333 + +0000000080002030 : + 80002030: ffff 0xffff + 80002032: 7fff 0x7fff + 80002034: c49a6333 0xc49a6333 + 80002038: 0000 unimp + 8000203a: 0000 unimp + 8000203c: c49a6333 0xc49a6333 + +0000000080002040 : + 80002040: 40490fdb 0x40490fdb + 80002044: 322bcc77 0x322bcc77 + 80002048: 0000 unimp + 8000204a: 0000 unimp + 8000204c: 322bcc77 0x322bcc77 + +0000000080002050 : + 80002050: 0000 unimp + 80002052: bf80 fsd fs0,56(a5) + 80002054: 0000 unimp + 80002056: c000 sw s0,0(s0) + 80002058: 0000 unimp + 8000205a: 0000 unimp + 8000205c: 0000 unimp + 8000205e: c000 sw s0,0(s0) + +0000000080002060 : + 80002060: 0000 unimp + 80002062: 4020 lw s0,64(s0) + 80002064: 0000 unimp + 80002066: 3f80 fld fs0,56(a5) + 80002068: 0000 unimp + 8000206a: 0000 unimp + 8000206c: 0000 unimp + 8000206e: 4020 lw s0,64(s0) + +0000000080002070 : + 80002070: c49a6333 0xc49a6333 + 80002074: cccd beqz s1,8000212e <_end+0xe> + 80002076: 3f8c fld fa1,56(a5) + 80002078: 0000 unimp + 8000207a: 0000 unimp + 8000207c: cccd beqz s1,80002136 <_end+0x16> + 8000207e: 3f8c fld fa1,56(a5) + +0000000080002080 : + 80002080: cccd beqz s1,8000213a <_end+0x1a> + 80002082: 3f8c fld fa1,56(a5) + 80002084: c49a6333 0xc49a6333 + 80002088: 0000 unimp + 8000208a: 0000 unimp + 8000208c: cccd beqz s1,80002146 <_end+0x26> + 8000208e: 3f8c fld fa1,56(a5) + +0000000080002090 : + 80002090: ffff 0xffff + 80002092: 7fff 0x7fff + 80002094: c49a6333 0xc49a6333 + 80002098: 0000 unimp + 8000209a: 0000 unimp + 8000209c: c49a6333 0xc49a6333 + +00000000800020a0 : + 800020a0: 40490fdb 0x40490fdb + 800020a4: 322bcc77 0x322bcc77 + 800020a8: 0000 unimp + 800020aa: 0000 unimp + 800020ac: 40490fdb 0x40490fdb + +00000000800020b0 : + 800020b0: 0000 unimp + 800020b2: bf80 fsd fs0,56(a5) + 800020b4: 0000 unimp + 800020b6: c000 sw s0,0(s0) + 800020b8: 0000 unimp + 800020ba: 0000 unimp + 800020bc: 0000 unimp + 800020be: bf80 fsd fs0,56(a5) + +00000000800020c0 : + 800020c0: 0001 nop + 800020c2: 7f80 ld s0,56(a5) + 800020c4: 0000 unimp + 800020c6: 3f80 fld fs0,56(a5) + 800020c8: 0000 unimp + 800020ca: 0000 unimp + 800020cc: 0000 unimp + 800020ce: 3f80 fld fs0,56(a5) + +00000000800020d0 : + 800020d0: ffff 0xffff + 800020d2: 7fff 0x7fff + 800020d4: ffff 0xffff + 800020d6: 7fff 0x7fff + 800020d8: 0000 unimp + 800020da: 0000 unimp + 800020dc: 0000 unimp + 800020de: 7fc0 ld s0,184(a5) + +00000000800020e0 : + 800020e0: 0000 unimp + 800020e2: 8000 0x8000 + 800020e4: 0000 unimp + 800020e6: 0000 unimp + 800020e8: 0000 unimp + 800020ea: 0000 unimp + 800020ec: 0000 unimp + 800020ee: 8000 0x8000 + +00000000800020f0 : + 800020f0: 0000 unimp + 800020f2: 0000 unimp + 800020f4: 0000 unimp + 800020f6: 8000 0x8000 + 800020f8: 0000 unimp + 800020fa: 0000 unimp + 800020fc: 0000 unimp + 800020fe: 8000 0x8000 + +0000000080002100 : + 80002100: 0000 unimp + 80002102: 8000 0x8000 + 80002104: 0000 unimp + 80002106: 0000 unimp + 80002108: 0000 unimp + 8000210a: 0000 unimp + 8000210c: 0000 unimp + 8000210e: 0000 unimp + +0000000080002110 : + 80002110: 0000 unimp + 80002112: 0000 unimp + 80002114: 0000 unimp + 80002116: 8000 0x8000 + 80002118: 0000 unimp + 8000211a: 0000 unimp + 8000211c: 0000 unimp + 8000211e: 0000 unimp diff --git a/Tests/isa/rv64uf-p-ldst b/Tests/isa/rv64uf-p-ldst new file mode 100644 index 0000000..10db3cb Binary files /dev/null and b/Tests/isa/rv64uf-p-ldst differ diff --git a/Tests/isa/rv64uf-p-ldst.dump b/Tests/isa/rv64uf-p-ldst.dump new file mode 100644 index 0000000..bb6b0ce --- /dev/null +++ b/Tests/isa/rv64uf-p-ldst.dump @@ -0,0 +1,166 @@ + +rv64uf-p-ldst: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 00002597 auipc a1,0x2 + 8000010c: ef858593 addi a1,a1,-264 # 80002000 + 80000110: 0045a087 flw ft1,4(a1) + 80000114: 0015aa27 fsw ft1,20(a1) + 80000118: 0105b503 ld a0,16(a1) + 8000011c: 00100e9b addiw t4,zero,1 + 80000120: 021e9e93 slli t4,t4,0x21 + 80000124: 007e8e93 addi t4,t4,7 + 80000128: 00fe9e93 slli t4,t4,0xf + 8000012c: ab7e8e93 addi t4,t4,-1353 + 80000130: 00ee9e93 slli t4,t4,0xe + 80000134: eefe8e93 addi t4,t4,-273 + 80000138: 00200193 li gp,2 + 8000013c: 03d51c63 bne a0,t4,80000174 + +0000000080000140 : + 80000140: 00002597 auipc a1,0x2 + 80000144: ec058593 addi a1,a1,-320 # 80002000 + 80000148: 0005a087 flw ft1,0(a1) + 8000014c: 0015ac27 fsw ft1,24(a1) + 80000150: 0185b503 ld a0,24(a1) + 80000154: 01338eb7 lui t4,0x1338 + 80000158: d01e8e9b addiw t4,t4,-767 + 8000015c: 00de9e93 slli t4,t4,0xd + 80000160: b7fe8e93 addi t4,t4,-1153 # 1337b7f <_start-0x7ecc8481> + 80000164: 017e9e93 slli t4,t4,0x17 + 80000168: 00300193 li gp,3 + 8000016c: 01d51463 bne a0,t4,80000174 + 80000170: 00301c63 bne zero,gp,80000188 + +0000000080000174 : + 80000174: 0ff0000f fence + 80000178: 00018063 beqz gp,80000178 + 8000017c: 00119193 slli gp,gp,0x1 + 80000180: 0011e193 ori gp,gp,1 + 80000184: 00000073 ecall + +0000000080000188 : + 80000188: 0ff0000f fence + 8000018c: 00100193 li gp,1 + 80000190: 00000073 ecall + 80000194: c0001073 unimp + 80000198: 0000 unimp + 8000019a: 0000 unimp + 8000019c: 0000 unimp + 8000019e: 0000 unimp + 800001a0: 0000 unimp + 800001a2: 0000 unimp + 800001a4: 0000 unimp + 800001a6: 0000 unimp + 800001a8: 0000 unimp + 800001aa: 0000 unimp + 800001ac: 0000 unimp + 800001ae: 0000 unimp + 800001b0: 0000 unimp + 800001b2: 0000 unimp + 800001b4: 0000 unimp + 800001b6: 0000 unimp + 800001b8: 0000 unimp + 800001ba: 0000 unimp + 800001bc: 0000 unimp + 800001be: 0000 unimp + 800001c0: 0000 unimp + 800001c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: bf80 fsd fs0,56(a5) + 80002004: 0000 unimp + 80002006: 4000 lw s0,0(s0) + 80002008: 0000 unimp + 8000200a: 4040 lw s0,4(s0) + 8000200c: 0000 unimp + 8000200e: c080 sw s0,0(s1) + 80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> + 80002014: babe fsd fa5,368(sp) + 80002016: cafe sw t6,84(sp) + 80002018: 1dea slli s11,s11,0x3a + 8000201a: abad j 80002594 <_end+0x574> + 8000201c: d00d beqz s0,80001f3e + 8000201e: lui t1,0x1 diff --git a/Tests/isa/rv64uf-p-move b/Tests/isa/rv64uf-p-move new file mode 100644 index 0000000..eecae9d Binary files /dev/null and b/Tests/isa/rv64uf-p-move differ diff --git a/Tests/isa/rv64uf-p-move.dump b/Tests/isa/rv64uf-p-move.dump new file mode 100644 index 0000000..ce35d43 --- /dev/null +++ b/Tests/isa/rv64uf-p-move.dump @@ -0,0 +1,320 @@ + +rv64uf-p-move: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + +0000000080000108 : + 80000108: 0030d073 csrwi fcsr,1 + 8000010c: 00001537 lui a0,0x1 + 80000110: 2345051b addiw a0,a0,564 + 80000114: 003515f3 fssr a1,a0 + 80000118: 00100e93 li t4,1 + 8000011c: 00200193 li gp,2 + 80000120: 2bd59463 bne a1,t4,800003c8 + +0000000080000124 : + 80000124: 00302573 frsr a0 + 80000128: 03400e93 li t4,52 + 8000012c: 00300193 li gp,3 + 80000130: 29d51c63 bne a0,t4,800003c8 + +0000000080000134 : + 80000134: 00102573 frflags a0 + 80000138: 01400e93 li t4,20 + 8000013c: 00400193 li gp,4 + 80000140: 29d51463 bne a0,t4,800003c8 + +0000000080000144 : + 80000144: 00215573 fsrmi a0,2 + 80000148: 00100e93 li t4,1 + 8000014c: 00500193 li gp,5 + 80000150: 27d51c63 bne a0,t4,800003c8 + +0000000080000154 : + 80000154: 00302573 frsr a0 + 80000158: 05400e93 li t4,84 + 8000015c: 00600193 li gp,6 + 80000160: 27d51463 bne a0,t4,800003c8 + +0000000080000164 : + 80000164: 00127573 csrrci a0,fflags,4 + 80000168: 01400e93 li t4,20 + 8000016c: 00700193 li gp,7 + 80000170: 25d51c63 bne a0,t4,800003c8 + +0000000080000174 : + 80000174: 00302573 frsr a0 + 80000178: 05000e93 li t4,80 + 8000017c: 00800193 li gp,8 + 80000180: 25d51463 bne a0,t4,800003c8 + +0000000080000184 : + 80000184: 123455b7 lui a1,0x12345 + 80000188: 6785859b addiw a1,a1,1656 + 8000018c: 00000613 li a2,0 + 80000190: f00580d3 fmv.w.x ft1,a1 + 80000194: f0060153 fmv.w.x ft2,a2 + 80000198: 20208053 fsgnj.s ft0,ft1,ft2 + 8000019c: e0000553 fmv.x.w a0,ft0 + 800001a0: 12345eb7 lui t4,0x12345 + 800001a4: 678e8e9b addiw t4,t4,1656 + 800001a8: 00a00193 li gp,10 + 800001ac: 21d51e63 bne a0,t4,800003c8 + +00000000800001b0 : + 800001b0: 123455b7 lui a1,0x12345 + 800001b4: 6785859b addiw a1,a1,1656 + 800001b8: fff00613 li a2,-1 + 800001bc: f00580d3 fmv.w.x ft1,a1 + 800001c0: f0060153 fmv.w.x ft2,a2 + 800001c4: 20208053 fsgnj.s ft0,ft1,ft2 + 800001c8: e0000553 fmv.x.w a0,ft0 + 800001cc: 92345eb7 lui t4,0x92345 + 800001d0: 678e8e9b addiw t4,t4,1656 + 800001d4: 00b00193 li gp,11 + 800001d8: 1fd51863 bne a0,t4,800003c8 + +00000000800001dc : + 800001dc: 000925b7 lui a1,0x92 + 800001e0: 3455859b addiw a1,a1,837 + 800001e4: 00c59593 slli a1,a1,0xc + 800001e8: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 800001ec: 00000613 li a2,0 + 800001f0: f00580d3 fmv.w.x ft1,a1 + 800001f4: f0060153 fmv.w.x ft2,a2 + 800001f8: 20208053 fsgnj.s ft0,ft1,ft2 + 800001fc: e0000553 fmv.x.w a0,ft0 + 80000200: 12345eb7 lui t4,0x12345 + 80000204: 678e8e9b addiw t4,t4,1656 + 80000208: 00c00193 li gp,12 + 8000020c: 1bd51e63 bne a0,t4,800003c8 + +0000000080000210 : + 80000210: 000925b7 lui a1,0x92 + 80000214: 3455859b addiw a1,a1,837 + 80000218: 00c59593 slli a1,a1,0xc + 8000021c: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 80000220: fff00613 li a2,-1 + 80000224: f00580d3 fmv.w.x ft1,a1 + 80000228: f0060153 fmv.w.x ft2,a2 + 8000022c: 20208053 fsgnj.s ft0,ft1,ft2 + 80000230: e0000553 fmv.x.w a0,ft0 + 80000234: 92345eb7 lui t4,0x92345 + 80000238: 678e8e9b addiw t4,t4,1656 + 8000023c: 00d00193 li gp,13 + 80000240: 19d51463 bne a0,t4,800003c8 + +0000000080000244 : + 80000244: 123455b7 lui a1,0x12345 + 80000248: 6785859b addiw a1,a1,1656 + 8000024c: 00000613 li a2,0 + 80000250: f00580d3 fmv.w.x ft1,a1 + 80000254: f0060153 fmv.w.x ft2,a2 + 80000258: 20209053 fsgnjn.s ft0,ft1,ft2 + 8000025c: e0000553 fmv.x.w a0,ft0 + 80000260: 92345eb7 lui t4,0x92345 + 80000264: 678e8e9b addiw t4,t4,1656 + 80000268: 01400193 li gp,20 + 8000026c: 15d51e63 bne a0,t4,800003c8 + +0000000080000270 : + 80000270: 123455b7 lui a1,0x12345 + 80000274: 6785859b addiw a1,a1,1656 + 80000278: fff00613 li a2,-1 + 8000027c: f00580d3 fmv.w.x ft1,a1 + 80000280: f0060153 fmv.w.x ft2,a2 + 80000284: 20209053 fsgnjn.s ft0,ft1,ft2 + 80000288: e0000553 fmv.x.w a0,ft0 + 8000028c: 12345eb7 lui t4,0x12345 + 80000290: 678e8e9b addiw t4,t4,1656 + 80000294: 01500193 li gp,21 + 80000298: 13d51863 bne a0,t4,800003c8 + +000000008000029c : + 8000029c: 000925b7 lui a1,0x92 + 800002a0: 3455859b addiw a1,a1,837 + 800002a4: 00c59593 slli a1,a1,0xc + 800002a8: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 800002ac: 00000613 li a2,0 + 800002b0: f00580d3 fmv.w.x ft1,a1 + 800002b4: f0060153 fmv.w.x ft2,a2 + 800002b8: 20209053 fsgnjn.s ft0,ft1,ft2 + 800002bc: e0000553 fmv.x.w a0,ft0 + 800002c0: 92345eb7 lui t4,0x92345 + 800002c4: 678e8e9b addiw t4,t4,1656 + 800002c8: 01600193 li gp,22 + 800002cc: 0fd51e63 bne a0,t4,800003c8 + +00000000800002d0 : + 800002d0: 000925b7 lui a1,0x92 + 800002d4: 3455859b addiw a1,a1,837 + 800002d8: 00c59593 slli a1,a1,0xc + 800002dc: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 800002e0: fff00613 li a2,-1 + 800002e4: f00580d3 fmv.w.x ft1,a1 + 800002e8: f0060153 fmv.w.x ft2,a2 + 800002ec: 20209053 fsgnjn.s ft0,ft1,ft2 + 800002f0: e0000553 fmv.x.w a0,ft0 + 800002f4: 12345eb7 lui t4,0x12345 + 800002f8: 678e8e9b addiw t4,t4,1656 + 800002fc: 01700193 li gp,23 + 80000300: 0dd51463 bne a0,t4,800003c8 + +0000000080000304 : + 80000304: 123455b7 lui a1,0x12345 + 80000308: 6785859b addiw a1,a1,1656 + 8000030c: 00000613 li a2,0 + 80000310: f00580d3 fmv.w.x ft1,a1 + 80000314: f0060153 fmv.w.x ft2,a2 + 80000318: 2020a053 fsgnjx.s ft0,ft1,ft2 + 8000031c: e0000553 fmv.x.w a0,ft0 + 80000320: 12345eb7 lui t4,0x12345 + 80000324: 678e8e9b addiw t4,t4,1656 + 80000328: 01e00193 li gp,30 + 8000032c: 09d51e63 bne a0,t4,800003c8 + +0000000080000330 : + 80000330: 123455b7 lui a1,0x12345 + 80000334: 6785859b addiw a1,a1,1656 + 80000338: fff00613 li a2,-1 + 8000033c: f00580d3 fmv.w.x ft1,a1 + 80000340: f0060153 fmv.w.x ft2,a2 + 80000344: 2020a053 fsgnjx.s ft0,ft1,ft2 + 80000348: e0000553 fmv.x.w a0,ft0 + 8000034c: 92345eb7 lui t4,0x92345 + 80000350: 678e8e9b addiw t4,t4,1656 + 80000354: 01f00193 li gp,31 + 80000358: 07d51863 bne a0,t4,800003c8 + +000000008000035c : + 8000035c: 000925b7 lui a1,0x92 + 80000360: 3455859b addiw a1,a1,837 + 80000364: 00c59593 slli a1,a1,0xc + 80000368: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 8000036c: 00000613 li a2,0 + 80000370: f00580d3 fmv.w.x ft1,a1 + 80000374: f0060153 fmv.w.x ft2,a2 + 80000378: 2020a053 fsgnjx.s ft0,ft1,ft2 + 8000037c: e0000553 fmv.x.w a0,ft0 + 80000380: 92345eb7 lui t4,0x92345 + 80000384: 678e8e9b addiw t4,t4,1656 + 80000388: 02000193 li gp,32 + 8000038c: 03d51e63 bne a0,t4,800003c8 + +0000000080000390 : + 80000390: 000925b7 lui a1,0x92 + 80000394: 3455859b addiw a1,a1,837 + 80000398: 00c59593 slli a1,a1,0xc + 8000039c: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 800003a0: fff00613 li a2,-1 + 800003a4: f00580d3 fmv.w.x ft1,a1 + 800003a8: f0060153 fmv.w.x ft2,a2 + 800003ac: 2020a053 fsgnjx.s ft0,ft1,ft2 + 800003b0: e0000553 fmv.x.w a0,ft0 + 800003b4: 12345eb7 lui t4,0x12345 + 800003b8: 678e8e9b addiw t4,t4,1656 + 800003bc: 02100193 li gp,33 + 800003c0: 01d51463 bne a0,t4,800003c8 + 800003c4: 00301c63 bne zero,gp,800003dc + +00000000800003c8 : + 800003c8: 0ff0000f fence + 800003cc: 00018063 beqz gp,800003cc + 800003d0: 00119193 slli gp,gp,0x1 + 800003d4: 0011e193 ori gp,gp,1 + 800003d8: 00000073 ecall + +00000000800003dc : + 800003dc: 0ff0000f fence + 800003e0: 00100193 li gp,1 + 800003e4: 00000073 ecall + 800003e8: c0001073 unimp + 800003ec: 0000 unimp + 800003ee: 0000 unimp + 800003f0: 0000 unimp + 800003f2: 0000 unimp + 800003f4: 0000 unimp + 800003f6: 0000 unimp + 800003f8: 0000 unimp + 800003fa: 0000 unimp + 800003fc: 0000 unimp + 800003fe: 0000 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp diff --git a/Tests/isa/rv64uf-p-recoding b/Tests/isa/rv64uf-p-recoding new file mode 100644 index 0000000..e27700c Binary files /dev/null and b/Tests/isa/rv64uf-p-recoding differ diff --git a/Tests/isa/rv64uf-p-recoding.dump b/Tests/isa/rv64uf-p-recoding.dump new file mode 100644 index 0000000..de0af66 --- /dev/null +++ b/Tests/isa/rv64uf-p-recoding.dump @@ -0,0 +1,162 @@ + +rv64uf-p-recoding: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00002537 lui a0,0x2 + 800000ec: 30052073 csrs mstatus,a0 + 800000f0: 00305073 csrwi fcsr,0 + 800000f4: 00000297 auipc t0,0x0 + 800000f8: 01428293 addi t0,t0,20 # 80000108 + 800000fc: 34129073 csrw mepc,t0 + 80000100: f1402573 csrr a0,mhartid + 80000104: 30200073 mret + 80000108: 00002517 auipc a0,0x2 + 8000010c: ef852007 flw ft0,-264(a0) # 80002000 + 80000110: 00002517 auipc a0,0x2 + 80000114: ef452087 flw ft1,-268(a0) # 80002004 + 80000118: 1000f0d3 fmul.s ft1,ft1,ft0 + +000000008000011c : + 8000011c: a0102553 feq.s a0,ft0,ft1 + 80000120: 00100e93 li t4,1 + 80000124: 00200193 li gp,2 + 80000128: 07d51463 bne a0,t4,80000190 + +000000008000012c : + 8000012c: a0100553 fle.s a0,ft0,ft1 + 80000130: 00100e93 li t4,1 + 80000134: 00300193 li gp,3 + 80000138: 05d51c63 bne a0,t4,80000190 + +000000008000013c : + 8000013c: a0101553 flt.s a0,ft0,ft1 + 80000140: 00000e93 li t4,0 + 80000144: 00400193 li gp,4 + 80000148: 05d51463 bne a0,t4,80000190 + 8000014c: d0007053 fcvt.s.w ft0,zero + 80000150: 00100513 li a0,1 + 80000154: d00570d3 fcvt.s.w ft1,a0 + 80000158: 1000f0d3 fmul.s ft1,ft1,ft0 + +000000008000015c : + 8000015c: a0102553 feq.s a0,ft0,ft1 + 80000160: 00100e93 li t4,1 + 80000164: 00500193 li gp,5 + 80000168: 03d51463 bne a0,t4,80000190 + +000000008000016c : + 8000016c: a0100553 fle.s a0,ft0,ft1 + 80000170: 00100e93 li t4,1 + 80000174: 00600193 li gp,6 + 80000178: 01d51c63 bne a0,t4,80000190 + +000000008000017c : + 8000017c: a0101553 flt.s a0,ft0,ft1 + 80000180: 00000e93 li t4,0 + 80000184: 00700193 li gp,7 + 80000188: 01d51463 bne a0,t4,80000190 + 8000018c: 00301c63 bne zero,gp,800001a4 + +0000000080000190 : + 80000190: 0ff0000f fence + 80000194: 00018063 beqz gp,80000194 + 80000198: 00119193 slli gp,gp,0x1 + 8000019c: 0011e193 ori gp,gp,1 + 800001a0: 00000073 ecall + +00000000800001a4 : + 800001a4: 0ff0000f fence + 800001a8: 00100193 li gp,1 + 800001ac: 00000073 ecall + 800001b0: c0001073 unimp + 800001b4: 0000 unimp + 800001b6: 0000 unimp + 800001b8: 0000 unimp + 800001ba: 0000 unimp + 800001bc: 0000 unimp + 800001be: 0000 unimp + 800001c0: 0000 unimp + 800001c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0000 unimp + 80002002: ff80 sd s0,56(a5) + +0000000080002004 : + 80002004: 0000 unimp + 80002006: 4040 lw s0,4(s0) + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64uf-v-fadd b/Tests/isa/rv64uf-v-fadd new file mode 100644 index 0000000..8e3124f Binary files /dev/null and b/Tests/isa/rv64uf-v-fadd differ diff --git a/Tests/isa/rv64uf-v-fadd.dump b/Tests/isa/rv64uf-v-fadd.dump new file mode 100644 index 0000000..e347710 --- /dev/null +++ b/Tests/isa/rv64uf-v-fadd.dump @@ -0,0 +1,1083 @@ + +rv64uf-v-fadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 8a068693 addi a3,a3,-1888 # 80002cf8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 8d460613 addi a2,a2,-1836 # 80002d88 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 89c60613 addi a2,a2,-1892 # 80002da0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 7ec68693 addi a3,a3,2028 # 80002d40 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 80868693 addi a3,a3,-2040 # 80002e78 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 78860613 addi a2,a2,1928 # 80002e50 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 6bc68693 addi a3,a3,1724 # 80002ea8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 5dc68693 addi a3,a3,1500 # 80002e18 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 56c68693 addi a3,a3,1388 # 80002de0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03600793 li a5,54 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 086e87b7 lui a5,0x86e8 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: a8078793 addi a5,a5,-1408 # 86e7a80 <_start-0x77918580> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00052007 flw ft0,0(a0) + 80002adc: 00452087 flw ft1,4(a0) + 80002ae0: 00852107 flw ft2,8(a0) + 80002ae4: 00c52683 lw a3,12(a0) + 80002ae8: 001071d3 fadd.s ft3,ft0,ft1 + 80002aec: e0018553 fmv.x.w a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00000613 li a2,0 + 80002af8: 1ed51063 bne a0,a3,80002cd8 + 80002afc: 1cc59e63 bne a1,a2,80002cd8 + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00000517 auipc a0,0x0 + 80002b08: 50c50513 addi a0,a0,1292 # 80003010 + 80002b0c: 00052007 flw ft0,0(a0) + 80002b10: 00452087 flw ft1,4(a0) + 80002b14: 00852107 flw ft2,8(a0) + 80002b18: 00c52683 lw a3,12(a0) + 80002b1c: 001071d3 fadd.s ft3,ft0,ft1 + 80002b20: e0018553 fmv.x.w a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00100613 li a2,1 + 80002b2c: 1ad51663 bne a0,a3,80002cd8 + 80002b30: 1ac59463 bne a1,a2,80002cd8 + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00000517 auipc a0,0x0 + 80002b3c: 4e850513 addi a0,a0,1256 # 80003020 + 80002b40: 00052007 flw ft0,0(a0) + 80002b44: 00452087 flw ft1,4(a0) + 80002b48: 00852107 flw ft2,8(a0) + 80002b4c: 00c52683 lw a3,12(a0) + 80002b50: 001071d3 fadd.s ft3,ft0,ft1 + 80002b54: e0018553 fmv.x.w a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00100613 li a2,1 + 80002b60: 16d51c63 bne a0,a3,80002cd8 + 80002b64: 16c59a63 bne a1,a2,80002cd8 + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00000517 auipc a0,0x0 + 80002b70: 4c450513 addi a0,a0,1220 # 80003030 + 80002b74: 00052007 flw ft0,0(a0) + 80002b78: 00452087 flw ft1,4(a0) + 80002b7c: 00852107 flw ft2,8(a0) + 80002b80: 00c52683 lw a3,12(a0) + 80002b84: 081071d3 fsub.s ft3,ft0,ft1 + 80002b88: e0018553 fmv.x.w a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00000613 li a2,0 + 80002b94: 14d51263 bne a0,a3,80002cd8 + 80002b98: 14c59063 bne a1,a2,80002cd8 + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00000517 auipc a0,0x0 + 80002ba4: 4a050513 addi a0,a0,1184 # 80003040 + 80002ba8: 00052007 flw ft0,0(a0) + 80002bac: 00452087 flw ft1,4(a0) + 80002bb0: 00852107 flw ft2,8(a0) + 80002bb4: 00c52683 lw a3,12(a0) + 80002bb8: 081071d3 fsub.s ft3,ft0,ft1 + 80002bbc: e0018553 fmv.x.w a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00100613 li a2,1 + 80002bc8: 10d51863 bne a0,a3,80002cd8 + 80002bcc: 10c59663 bne a1,a2,80002cd8 + +0000000080002bd0 : + 80002bd0: 00700193 li gp,7 + 80002bd4: 00000517 auipc a0,0x0 + 80002bd8: 47c50513 addi a0,a0,1148 # 80003050 + 80002bdc: 00052007 flw ft0,0(a0) + 80002be0: 00452087 flw ft1,4(a0) + 80002be4: 00852107 flw ft2,8(a0) + 80002be8: 00c52683 lw a3,12(a0) + 80002bec: 081071d3 fsub.s ft3,ft0,ft1 + 80002bf0: e0018553 fmv.x.w a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 00100613 li a2,1 + 80002bfc: 0cd51e63 bne a0,a3,80002cd8 + 80002c00: 0cc59c63 bne a1,a2,80002cd8 + +0000000080002c04 : + 80002c04: 00800193 li gp,8 + 80002c08: 00000517 auipc a0,0x0 + 80002c0c: 45850513 addi a0,a0,1112 # 80003060 + 80002c10: 00052007 flw ft0,0(a0) + 80002c14: 00452087 flw ft1,4(a0) + 80002c18: 00852107 flw ft2,8(a0) + 80002c1c: 00c52683 lw a3,12(a0) + 80002c20: 101071d3 fmul.s ft3,ft0,ft1 + 80002c24: e0018553 fmv.x.w a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00000613 li a2,0 + 80002c30: 0ad51463 bne a0,a3,80002cd8 + 80002c34: 0ac59263 bne a1,a2,80002cd8 + +0000000080002c38 : + 80002c38: 00900193 li gp,9 + 80002c3c: 00000517 auipc a0,0x0 + 80002c40: 43450513 addi a0,a0,1076 # 80003070 + 80002c44: 00052007 flw ft0,0(a0) + 80002c48: 00452087 flw ft1,4(a0) + 80002c4c: 00852107 flw ft2,8(a0) + 80002c50: 00c52683 lw a3,12(a0) + 80002c54: 101071d3 fmul.s ft3,ft0,ft1 + 80002c58: e0018553 fmv.x.w a0,ft3 + 80002c5c: 001015f3 fsflags a1,zero + 80002c60: 00100613 li a2,1 + 80002c64: 06d51a63 bne a0,a3,80002cd8 + 80002c68: 06c59863 bne a1,a2,80002cd8 + +0000000080002c6c : + 80002c6c: 00a00193 li gp,10 + 80002c70: 00000517 auipc a0,0x0 + 80002c74: 41050513 addi a0,a0,1040 # 80003080 + 80002c78: 00052007 flw ft0,0(a0) + 80002c7c: 00452087 flw ft1,4(a0) + 80002c80: 00852107 flw ft2,8(a0) + 80002c84: 00c52683 lw a3,12(a0) + 80002c88: 101071d3 fmul.s ft3,ft0,ft1 + 80002c8c: e0018553 fmv.x.w a0,ft3 + 80002c90: 001015f3 fsflags a1,zero + 80002c94: 00100613 li a2,1 + 80002c98: 04d51063 bne a0,a3,80002cd8 + 80002c9c: 02c59e63 bne a1,a2,80002cd8 + +0000000080002ca0 : + 80002ca0: 00b00193 li gp,11 + 80002ca4: 00000517 auipc a0,0x0 + 80002ca8: 3ec50513 addi a0,a0,1004 # 80003090 + 80002cac: 00052007 flw ft0,0(a0) + 80002cb0: 00452087 flw ft1,4(a0) + 80002cb4: 00852107 flw ft2,8(a0) + 80002cb8: 00c52683 lw a3,12(a0) + 80002cbc: 081071d3 fsub.s ft3,ft0,ft1 + 80002cc0: e0018553 fmv.x.w a0,ft3 + 80002cc4: 001015f3 fsflags a1,zero + 80002cc8: 01000613 li a2,16 + 80002ccc: 00d51663 bne a0,a3,80002cd8 + 80002cd0: 00c59463 bne a1,a2,80002cd8 + 80002cd4: 00301a63 bne zero,gp,80002ce8 + +0000000080002cd8 : + 80002cd8: 00119513 slli a0,gp,0x1 + 80002cdc: 00050063 beqz a0,80002cdc + 80002ce0: 00156513 ori a0,a0,1 + 80002ce4: 00000073 ecall + +0000000080002ce8 : + 80002ce8: 00100513 li a0,1 + 80002cec: 00000073 ecall + 80002cf0: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 4020 lw s0,64(s0) + 80003004: 0000 unimp + 80003006: 3f80 fld fs0,56(a5) + 80003008: 0000 unimp + 8000300a: 0000 unimp + 8000300c: 0000 unimp + 8000300e: 4060 lw s0,68(s0) + +0000000080003010 : + 80003010: c49a6333 0xc49a6333 + 80003014: cccd beqz s1,800030ce + 80003016: 3f8c fld fa1,56(a5) + 80003018: 0000 unimp + 8000301a: 0000 unimp + 8000301c: 4000 lw s0,0(s0) + 8000301e: c49a sw t1,72(sp) + +0000000080003020 : + 80003020: 40490fdb 0x40490fdb + 80003024: 322bcc77 0x322bcc77 + 80003028: 0000 unimp + 8000302a: 0000 unimp + 8000302c: 40490fdb 0x40490fdb + +0000000080003030 : + 80003030: 0000 unimp + 80003032: 4020 lw s0,64(s0) + 80003034: 0000 unimp + 80003036: 3f80 fld fs0,56(a5) + 80003038: 0000 unimp + 8000303a: 0000 unimp + 8000303c: 0000 unimp + 8000303e: 3fc0 fld fs0,184(a5) + +0000000080003040 : + 80003040: c49a6333 0xc49a6333 + 80003044: cccd beqz s1,800030fe + 80003046: bf8c fsd fa1,56(a5) + 80003048: 0000 unimp + 8000304a: 0000 unimp + 8000304c: 4000 lw s0,0(s0) + 8000304e: c49a sw t1,72(sp) + +0000000080003050 : + 80003050: 40490fdb 0x40490fdb + 80003054: 322bcc77 0x322bcc77 + 80003058: 0000 unimp + 8000305a: 0000 unimp + 8000305c: 40490fdb 0x40490fdb + +0000000080003060 : + 80003060: 0000 unimp + 80003062: 4020 lw s0,64(s0) + 80003064: 0000 unimp + 80003066: 3f80 fld fs0,56(a5) + 80003068: 0000 unimp + 8000306a: 0000 unimp + 8000306c: 0000 unimp + 8000306e: 4020 lw s0,64(s0) + +0000000080003070 : + 80003070: c49a6333 0xc49a6333 + 80003074: cccd beqz s1,8000312e + 80003076: bf8c fsd fa1,56(a5) + 80003078: 0000 unimp + 8000307a: 0000 unimp + 8000307c: d385 beqz a5,80002f9c + 8000307e: 44a9 li s1,10 + +0000000080003080 : + 80003080: 40490fdb 0x40490fdb + 80003084: 322bcc77 0x322bcc77 + 80003088: 0000 unimp + 8000308a: 0000 unimp + 8000308c: ee2d bnez a2,80003106 + 8000308e: 3306 fld ft6,96(sp) + +0000000080003090 : + 80003090: 0000 unimp + 80003092: 7f80 ld s0,56(a5) + 80003094: 0000 unimp + 80003096: 7f80 ld s0,56(a5) + 80003098: 0000 unimp + 8000309a: 0000 unimp + 8000309c: 0000 unimp + 8000309e: 7fc0 ld s0,184(a5) diff --git a/Tests/isa/rv64uf-v-fclass b/Tests/isa/rv64uf-v-fclass new file mode 100644 index 0000000..3fec045 Binary files /dev/null and b/Tests/isa/rv64uf-v-fclass differ diff --git a/Tests/isa/rv64uf-v-fclass.dump b/Tests/isa/rv64uf-v-fclass.dump new file mode 100644 index 0000000..0a4004a --- /dev/null +++ b/Tests/isa/rv64uf-v-fclass.dump @@ -0,0 +1,929 @@ + +rv64uf-v-fclass: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 7a068693 addi a3,a3,1952 # 80002bf8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7d460613 addi a2,a2,2004 # 80002c88 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 79c60613 addi a2,a2,1948 # 80002ca0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6ec68693 addi a3,a3,1772 # 80002c40 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 70868693 addi a3,a3,1800 # 80002d78 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 68860613 addi a2,a2,1672 # 80002d50 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 5bc68693 addi a3,a3,1468 # 80002da8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4dc68693 addi a3,a3,1244 # 80002d18 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 46c68693 addi a3,a3,1132 # 80002ce0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02b00793 li a5,43 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 032207b7 lui a5,0x3220 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 33278793 addi a5,a5,818 # 3220332 <_start-0x7cddfcce> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 1ff0051b addiw a0,zero,511 + 80002ad0: 01751513 slli a0,a0,0x17 + 80002ad4: f0050553 fmv.w.x fa0,a0 + 80002ad8: e0051553 fclass.s a0,fa0 + 80002adc: 00100e93 li t4,1 + 80002ae0: 00200193 li gp,2 + 80002ae4: 0fd51c63 bne a0,t4,80002bdc + +0000000080002ae8 : + 80002ae8: 17f0051b addiw a0,zero,383 + 80002aec: 01751513 slli a0,a0,0x17 + 80002af0: f0050553 fmv.w.x fa0,a0 + 80002af4: e0051553 fclass.s a0,fa0 + 80002af8: 00200e93 li t4,2 + 80002afc: 00300193 li gp,3 + 80002b00: 0dd51e63 bne a0,t4,80002bdc + +0000000080002b04 : + 80002b04: 1010051b addiw a0,zero,257 + 80002b08: 01751513 slli a0,a0,0x17 + 80002b0c: fff50513 addi a0,a0,-1 + 80002b10: f0050553 fmv.w.x fa0,a0 + 80002b14: e0051553 fclass.s a0,fa0 + 80002b18: 00400e93 li t4,4 + 80002b1c: 00400193 li gp,4 + 80002b20: 0bd51e63 bne a0,t4,80002bdc + +0000000080002b24 : + 80002b24: 0010051b addiw a0,zero,1 + 80002b28: 01f51513 slli a0,a0,0x1f + 80002b2c: f0050553 fmv.w.x fa0,a0 + 80002b30: e0051553 fclass.s a0,fa0 + 80002b34: 00800e93 li t4,8 + 80002b38: 00500193 li gp,5 + 80002b3c: 0bd51063 bne a0,t4,80002bdc + +0000000080002b40 : + 80002b40: 00000513 li a0,0 + 80002b44: f0050553 fmv.w.x fa0,a0 + 80002b48: e0051553 fclass.s a0,fa0 + 80002b4c: 01000e93 li t4,16 + 80002b50: 00600193 li gp,6 + 80002b54: 09d51463 bne a0,t4,80002bdc + +0000000080002b58 : + 80002b58: 00800537 lui a0,0x800 + 80002b5c: fff5051b addiw a0,a0,-1 + 80002b60: f0050553 fmv.w.x fa0,a0 + 80002b64: e0051553 fclass.s a0,fa0 + 80002b68: 02000e93 li t4,32 + 80002b6c: 00700193 li gp,7 + 80002b70: 07d51663 bne a0,t4,80002bdc + +0000000080002b74 : + 80002b74: 3f800537 lui a0,0x3f800 + 80002b78: f0050553 fmv.w.x fa0,a0 + 80002b7c: e0051553 fclass.s a0,fa0 + 80002b80: 04000e93 li t4,64 + 80002b84: 00800193 li gp,8 + 80002b88: 05d51a63 bne a0,t4,80002bdc + +0000000080002b8c : + 80002b8c: 7f800537 lui a0,0x7f800 + 80002b90: f0050553 fmv.w.x fa0,a0 + 80002b94: e0051553 fclass.s a0,fa0 + 80002b98: 08000e93 li t4,128 + 80002b9c: 00900193 li gp,9 + 80002ba0: 03d51e63 bne a0,t4,80002bdc + +0000000080002ba4 : + 80002ba4: 7f800537 lui a0,0x7f800 + 80002ba8: 0015051b addiw a0,a0,1 + 80002bac: f0050553 fmv.w.x fa0,a0 + 80002bb0: e0051553 fclass.s a0,fa0 + 80002bb4: 10000e93 li t4,256 + 80002bb8: 00a00193 li gp,10 + 80002bbc: 03d51063 bne a0,t4,80002bdc + +0000000080002bc0 : + 80002bc0: 7fc00537 lui a0,0x7fc00 + 80002bc4: f0050553 fmv.w.x fa0,a0 + 80002bc8: e0051553 fclass.s a0,fa0 + 80002bcc: 20000e93 li t4,512 + 80002bd0: 00b00193 li gp,11 + 80002bd4: 01d51463 bne a0,t4,80002bdc + 80002bd8: 00301a63 bne zero,gp,80002bec + +0000000080002bdc : + 80002bdc: 00119513 slli a0,gp,0x1 + 80002be0: 00050063 beqz a0,80002be0 + 80002be4: 00156513 ori a0,a0,1 + 80002be8: 00000073 ecall + +0000000080002bec : + 80002bec: 00100513 li a0,1 + 80002bf0: 00000073 ecall + 80002bf4: c0001073 unimp diff --git a/Tests/isa/rv64uf-v-fcmp b/Tests/isa/rv64uf-v-fcmp new file mode 100644 index 0000000..73c7512 Binary files /dev/null and b/Tests/isa/rv64uf-v-fcmp differ diff --git a/Tests/isa/rv64uf-v-fcmp.dump b/Tests/isa/rv64uf-v-fcmp.dump new file mode 100644 index 0000000..6fa9c61 --- /dev/null +++ b/Tests/isa/rv64uf-v-fcmp.dump @@ -0,0 +1,1195 @@ + +rv64uf-v-fcmp: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 96868693 addi a3,a3,-1688 # 80002dc0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 99c60613 addi a2,a2,-1636 # 80002e50 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 96460613 addi a2,a2,-1692 # 80002e68 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 8b468693 addi a3,a3,-1868 # 80002e08 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8d068693 addi a3,a3,-1840 # 80002f40 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 85060613 addi a2,a2,-1968 # 80002f18 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 78468693 addi a3,a3,1924 # 80002f70 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 6a468693 addi a3,a3,1700 # 80002ee0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 63468693 addi a3,a3,1588 # 80002ea8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01d00793 li a5,29 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 029377b7 lui a5,0x2937 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 46c78793 addi a5,a5,1132 # 293746c <_start-0x7d6c8b94> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00052007 flw ft0,0(a0) + 80002adc: 00452087 flw ft1,4(a0) + 80002ae0: 00852107 flw ft2,8(a0) + 80002ae4: 00c52683 lw a3,12(a0) + 80002ae8: a0102553 feq.s a0,ft0,ft1 + 80002aec: 001015f3 fsflags a1,zero + 80002af0: 00000613 li a2,0 + 80002af4: 2ad51663 bne a0,a3,80002da0 + 80002af8: 2ac59463 bne a1,a2,80002da0 + +0000000080002afc : + 80002afc: 00300193 li gp,3 + 80002b00: 00000517 auipc a0,0x0 + 80002b04: 51050513 addi a0,a0,1296 # 80003010 + 80002b08: 00052007 flw ft0,0(a0) + 80002b0c: 00452087 flw ft1,4(a0) + 80002b10: 00852107 flw ft2,8(a0) + 80002b14: 00c52683 lw a3,12(a0) + 80002b18: a0100553 fle.s a0,ft0,ft1 + 80002b1c: 001015f3 fsflags a1,zero + 80002b20: 00000613 li a2,0 + 80002b24: 26d51e63 bne a0,a3,80002da0 + 80002b28: 26c59c63 bne a1,a2,80002da0 + +0000000080002b2c : + 80002b2c: 00400193 li gp,4 + 80002b30: 00000517 auipc a0,0x0 + 80002b34: 4f050513 addi a0,a0,1264 # 80003020 + 80002b38: 00052007 flw ft0,0(a0) + 80002b3c: 00452087 flw ft1,4(a0) + 80002b40: 00852107 flw ft2,8(a0) + 80002b44: 00c52683 lw a3,12(a0) + 80002b48: a0101553 flt.s a0,ft0,ft1 + 80002b4c: 001015f3 fsflags a1,zero + 80002b50: 00000613 li a2,0 + 80002b54: 24d51663 bne a0,a3,80002da0 + 80002b58: 24c59463 bne a1,a2,80002da0 + +0000000080002b5c : + 80002b5c: 00500193 li gp,5 + 80002b60: 00000517 auipc a0,0x0 + 80002b64: 4d050513 addi a0,a0,1232 # 80003030 + 80002b68: 00052007 flw ft0,0(a0) + 80002b6c: 00452087 flw ft1,4(a0) + 80002b70: 00852107 flw ft2,8(a0) + 80002b74: 00c52683 lw a3,12(a0) + 80002b78: a0102553 feq.s a0,ft0,ft1 + 80002b7c: 001015f3 fsflags a1,zero + 80002b80: 00000613 li a2,0 + 80002b84: 20d51e63 bne a0,a3,80002da0 + 80002b88: 20c59c63 bne a1,a2,80002da0 + +0000000080002b8c : + 80002b8c: 00600193 li gp,6 + 80002b90: 00000517 auipc a0,0x0 + 80002b94: 4b050513 addi a0,a0,1200 # 80003040 + 80002b98: 00052007 flw ft0,0(a0) + 80002b9c: 00452087 flw ft1,4(a0) + 80002ba0: 00852107 flw ft2,8(a0) + 80002ba4: 00c52683 lw a3,12(a0) + 80002ba8: a0100553 fle.s a0,ft0,ft1 + 80002bac: 001015f3 fsflags a1,zero + 80002bb0: 00000613 li a2,0 + 80002bb4: 1ed51663 bne a0,a3,80002da0 + 80002bb8: 1ec59463 bne a1,a2,80002da0 + +0000000080002bbc : + 80002bbc: 00700193 li gp,7 + 80002bc0: 00000517 auipc a0,0x0 + 80002bc4: 49050513 addi a0,a0,1168 # 80003050 + 80002bc8: 00052007 flw ft0,0(a0) + 80002bcc: 00452087 flw ft1,4(a0) + 80002bd0: 00852107 flw ft2,8(a0) + 80002bd4: 00c52683 lw a3,12(a0) + 80002bd8: a0101553 flt.s a0,ft0,ft1 + 80002bdc: 001015f3 fsflags a1,zero + 80002be0: 00000613 li a2,0 + 80002be4: 1ad51e63 bne a0,a3,80002da0 + 80002be8: 1ac59c63 bne a1,a2,80002da0 + +0000000080002bec : + 80002bec: 00800193 li gp,8 + 80002bf0: 00000517 auipc a0,0x0 + 80002bf4: 47050513 addi a0,a0,1136 # 80003060 + 80002bf8: 00052007 flw ft0,0(a0) + 80002bfc: 00452087 flw ft1,4(a0) + 80002c00: 00852107 flw ft2,8(a0) + 80002c04: 00c52683 lw a3,12(a0) + 80002c08: a0102553 feq.s a0,ft0,ft1 + 80002c0c: 001015f3 fsflags a1,zero + 80002c10: 00000613 li a2,0 + 80002c14: 18d51663 bne a0,a3,80002da0 + 80002c18: 18c59463 bne a1,a2,80002da0 + +0000000080002c1c : + 80002c1c: 00900193 li gp,9 + 80002c20: 00000517 auipc a0,0x0 + 80002c24: 45050513 addi a0,a0,1104 # 80003070 + 80002c28: 00052007 flw ft0,0(a0) + 80002c2c: 00452087 flw ft1,4(a0) + 80002c30: 00852107 flw ft2,8(a0) + 80002c34: 00c52683 lw a3,12(a0) + 80002c38: a0102553 feq.s a0,ft0,ft1 + 80002c3c: 001015f3 fsflags a1,zero + 80002c40: 00000613 li a2,0 + 80002c44: 14d51e63 bne a0,a3,80002da0 + 80002c48: 14c59c63 bne a1,a2,80002da0 + +0000000080002c4c : + 80002c4c: 00a00193 li gp,10 + 80002c50: 00000517 auipc a0,0x0 + 80002c54: 43050513 addi a0,a0,1072 # 80003080 + 80002c58: 00052007 flw ft0,0(a0) + 80002c5c: 00452087 flw ft1,4(a0) + 80002c60: 00852107 flw ft2,8(a0) + 80002c64: 00c52683 lw a3,12(a0) + 80002c68: a0102553 feq.s a0,ft0,ft1 + 80002c6c: 001015f3 fsflags a1,zero + 80002c70: 01000613 li a2,16 + 80002c74: 12d51663 bne a0,a3,80002da0 + 80002c78: 12c59463 bne a1,a2,80002da0 + +0000000080002c7c : + 80002c7c: 00b00193 li gp,11 + 80002c80: 00000517 auipc a0,0x0 + 80002c84: 41050513 addi a0,a0,1040 # 80003090 + 80002c88: 00052007 flw ft0,0(a0) + 80002c8c: 00452087 flw ft1,4(a0) + 80002c90: 00852107 flw ft2,8(a0) + 80002c94: 00c52683 lw a3,12(a0) + 80002c98: a0101553 flt.s a0,ft0,ft1 + 80002c9c: 001015f3 fsflags a1,zero + 80002ca0: 01000613 li a2,16 + 80002ca4: 0ed51e63 bne a0,a3,80002da0 + 80002ca8: 0ec59c63 bne a1,a2,80002da0 + +0000000080002cac : + 80002cac: 00c00193 li gp,12 + 80002cb0: 00000517 auipc a0,0x0 + 80002cb4: 3f050513 addi a0,a0,1008 # 800030a0 + 80002cb8: 00052007 flw ft0,0(a0) + 80002cbc: 00452087 flw ft1,4(a0) + 80002cc0: 00852107 flw ft2,8(a0) + 80002cc4: 00c52683 lw a3,12(a0) + 80002cc8: a0101553 flt.s a0,ft0,ft1 + 80002ccc: 001015f3 fsflags a1,zero + 80002cd0: 01000613 li a2,16 + 80002cd4: 0cd51663 bne a0,a3,80002da0 + 80002cd8: 0cc59463 bne a1,a2,80002da0 + +0000000080002cdc : + 80002cdc: 00d00193 li gp,13 + 80002ce0: 00000517 auipc a0,0x0 + 80002ce4: 3d050513 addi a0,a0,976 # 800030b0 + 80002ce8: 00052007 flw ft0,0(a0) + 80002cec: 00452087 flw ft1,4(a0) + 80002cf0: 00852107 flw ft2,8(a0) + 80002cf4: 00c52683 lw a3,12(a0) + 80002cf8: a0101553 flt.s a0,ft0,ft1 + 80002cfc: 001015f3 fsflags a1,zero + 80002d00: 01000613 li a2,16 + 80002d04: 08d51e63 bne a0,a3,80002da0 + 80002d08: 08c59c63 bne a1,a2,80002da0 + +0000000080002d0c : + 80002d0c: 00e00193 li gp,14 + 80002d10: 00000517 auipc a0,0x0 + 80002d14: 3b050513 addi a0,a0,944 # 800030c0 + 80002d18: 00052007 flw ft0,0(a0) + 80002d1c: 00452087 flw ft1,4(a0) + 80002d20: 00852107 flw ft2,8(a0) + 80002d24: 00c52683 lw a3,12(a0) + 80002d28: a0100553 fle.s a0,ft0,ft1 + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 01000613 li a2,16 + 80002d34: 06d51663 bne a0,a3,80002da0 + 80002d38: 06c59463 bne a1,a2,80002da0 + +0000000080002d3c : + 80002d3c: 00f00193 li gp,15 + 80002d40: 00000517 auipc a0,0x0 + 80002d44: 39050513 addi a0,a0,912 # 800030d0 + 80002d48: 00052007 flw ft0,0(a0) + 80002d4c: 00452087 flw ft1,4(a0) + 80002d50: 00852107 flw ft2,8(a0) + 80002d54: 00c52683 lw a3,12(a0) + 80002d58: a0100553 fle.s a0,ft0,ft1 + 80002d5c: 001015f3 fsflags a1,zero + 80002d60: 01000613 li a2,16 + 80002d64: 02d51e63 bne a0,a3,80002da0 + 80002d68: 02c59c63 bne a1,a2,80002da0 + +0000000080002d6c : + 80002d6c: 01000193 li gp,16 + 80002d70: 00000517 auipc a0,0x0 + 80002d74: 37050513 addi a0,a0,880 # 800030e0 + 80002d78: 00052007 flw ft0,0(a0) + 80002d7c: 00452087 flw ft1,4(a0) + 80002d80: 00852107 flw ft2,8(a0) + 80002d84: 00c52683 lw a3,12(a0) + 80002d88: a0100553 fle.s a0,ft0,ft1 + 80002d8c: 001015f3 fsflags a1,zero + 80002d90: 01000613 li a2,16 + 80002d94: 00d51663 bne a0,a3,80002da0 + 80002d98: 00c59463 bne a1,a2,80002da0 + 80002d9c: 00301a63 bne zero,gp,80002db0 + +0000000080002da0 : + 80002da0: 00119513 slli a0,gp,0x1 + 80002da4: 00050063 beqz a0,80002da4 + 80002da8: 00156513 ori a0,a0,1 + 80002dac: 00000073 ecall + +0000000080002db0 : + 80002db0: 00100513 li a0,1 + 80002db4: 00000073 ecall + 80002db8: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: bfae147b 0xbfae147b + 80003004: bfae147b 0xbfae147b + 80003008: 0000 unimp + 8000300a: 0000 unimp + 8000300c: 0001 nop + 8000300e: 0000 unimp + +0000000080003010 : + 80003010: bfae147b 0xbfae147b + 80003014: bfae147b 0xbfae147b + 80003018: 0000 unimp + 8000301a: 0000 unimp + 8000301c: 0001 nop + 8000301e: 0000 unimp + +0000000080003020 : + 80003020: bfae147b 0xbfae147b + 80003024: bfae147b 0xbfae147b + 80003028: 0000 unimp + 8000302a: 0000 unimp + 8000302c: 0000 unimp + 8000302e: 0000 unimp + +0000000080003030 : + 80003030: 5c29 li s8,-22 + 80003032: 147bbfaf 0x147bbfaf + 80003036: bfae fsd fa1,504(sp) + 80003038: 0000 unimp + 8000303a: 0000 unimp + 8000303c: 0000 unimp + 8000303e: 0000 unimp + +0000000080003040 : + 80003040: 5c29 li s8,-22 + 80003042: 147bbfaf 0x147bbfaf + 80003046: bfae fsd fa1,504(sp) + 80003048: 0000 unimp + 8000304a: 0000 unimp + 8000304c: 0001 nop + 8000304e: 0000 unimp + +0000000080003050 : + 80003050: 5c29 li s8,-22 + 80003052: 147bbfaf 0x147bbfaf + 80003056: bfae fsd fa1,504(sp) + 80003058: 0000 unimp + 8000305a: 0000 unimp + 8000305c: 0001 nop + 8000305e: 0000 unimp + +0000000080003060 : + 80003060: ffff 0xffff + 80003062: 7fff 0x7fff + 80003064: 0000 unimp + 80003066: 0000 unimp + 80003068: 0000 unimp + 8000306a: 0000 unimp + 8000306c: 0000 unimp + 8000306e: 0000 unimp + +0000000080003070 : + 80003070: ffff 0xffff + 80003072: 7fff 0x7fff + 80003074: ffff 0xffff + 80003076: 7fff 0x7fff + 80003078: 0000 unimp + 8000307a: 0000 unimp + 8000307c: 0000 unimp + 8000307e: 0000 unimp + +0000000080003080 : + 80003080: 0001 nop + 80003082: 7f80 ld s0,56(a5) + 80003084: 0000 unimp + 80003086: 0000 unimp + 80003088: 0000 unimp + 8000308a: 0000 unimp + 8000308c: 0000 unimp + 8000308e: 0000 unimp + +0000000080003090 : + 80003090: ffff 0xffff + 80003092: 7fff 0x7fff + 80003094: 0000 unimp + 80003096: 0000 unimp + 80003098: 0000 unimp + 8000309a: 0000 unimp + 8000309c: 0000 unimp + 8000309e: 0000 unimp + +00000000800030a0 : + 800030a0: ffff 0xffff + 800030a2: 7fff 0x7fff + 800030a4: ffff 0xffff + 800030a6: 7fff 0x7fff + 800030a8: 0000 unimp + 800030aa: 0000 unimp + 800030ac: 0000 unimp + 800030ae: 0000 unimp + +00000000800030b0 : + 800030b0: 0001 nop + 800030b2: 7f80 ld s0,56(a5) + 800030b4: 0000 unimp + 800030b6: 0000 unimp + 800030b8: 0000 unimp + 800030ba: 0000 unimp + 800030bc: 0000 unimp + 800030be: 0000 unimp + +00000000800030c0 : + 800030c0: ffff 0xffff + 800030c2: 7fff 0x7fff + 800030c4: 0000 unimp + 800030c6: 0000 unimp + 800030c8: 0000 unimp + 800030ca: 0000 unimp + 800030cc: 0000 unimp + 800030ce: 0000 unimp + +00000000800030d0 : + 800030d0: ffff 0xffff + 800030d2: 7fff 0x7fff + 800030d4: ffff 0xffff + 800030d6: 7fff 0x7fff + 800030d8: 0000 unimp + 800030da: 0000 unimp + 800030dc: 0000 unimp + 800030de: 0000 unimp + +00000000800030e0 : + 800030e0: 0001 nop + 800030e2: 7f80 ld s0,56(a5) + 800030e4: 0000 unimp + 800030e6: 0000 unimp + 800030e8: 0000 unimp + 800030ea: 0000 unimp + 800030ec: 0000 unimp + 800030ee: 0000 unimp diff --git a/Tests/isa/rv64uf-v-fcvt b/Tests/isa/rv64uf-v-fcvt new file mode 100644 index 0000000..9f0aadb Binary files /dev/null and b/Tests/isa/rv64uf-v-fcvt differ diff --git a/Tests/isa/rv64uf-v-fcvt.dump b/Tests/isa/rv64uf-v-fcvt.dump new file mode 100644 index 0000000..c5f1ed7 --- /dev/null +++ b/Tests/isa/rv64uf-v-fcvt.dump @@ -0,0 +1,964 @@ + +rv64uf-v-fcvt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 7b868693 addi a3,a3,1976 # 80002c10 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7ec60613 addi a2,a2,2028 # 80002ca0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 7b460613 addi a2,a2,1972 # 80002cb8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 70468693 addi a3,a3,1796 # 80002c58 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 72068693 addi a3,a3,1824 # 80002d90 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 6a060613 addi a2,a2,1696 # 80002d68 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 5d468693 addi a3,a3,1492 # 80002dc0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4f468693 addi a3,a3,1268 # 80002d30 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 48468693 addi a3,a3,1156 # 80002cf8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02c00793 li a5,44 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 046787b7 lui a5,0x4678 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 34878793 addi a5,a5,840 # 4678348 <_start-0x7b987cb8> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00052683 lw a3,0(a0) + 80002adc: 00200513 li a0,2 + 80002ae0: d0057053 fcvt.s.w ft0,a0 + 80002ae4: 00101073 fsflags zero + 80002ae8: e0000553 fmv.x.w a0,ft0 + 80002aec: 10d51263 bne a0,a3,80002bf0 + +0000000080002af0 : + 80002af0: 00300193 li gp,3 + 80002af4: 00000517 auipc a0,0x0 + 80002af8: 51050513 addi a0,a0,1296 # 80003004 + 80002afc: 00052683 lw a3,0(a0) + 80002b00: ffe00513 li a0,-2 + 80002b04: d0057053 fcvt.s.w ft0,a0 + 80002b08: 00101073 fsflags zero + 80002b0c: e0000553 fmv.x.w a0,ft0 + 80002b10: 0ed51063 bne a0,a3,80002bf0 + +0000000080002b14 : + 80002b14: 00400193 li gp,4 + 80002b18: 00000517 auipc a0,0x0 + 80002b1c: 4f050513 addi a0,a0,1264 # 80003008 + 80002b20: 00052683 lw a3,0(a0) + 80002b24: 00200513 li a0,2 + 80002b28: d0157053 fcvt.s.wu ft0,a0 + 80002b2c: 00101073 fsflags zero + 80002b30: e0000553 fmv.x.w a0,ft0 + 80002b34: 0ad51e63 bne a0,a3,80002bf0 + +0000000080002b38 : + 80002b38: 00500193 li gp,5 + 80002b3c: 00000517 auipc a0,0x0 + 80002b40: 4d050513 addi a0,a0,1232 # 8000300c + 80002b44: 00052683 lw a3,0(a0) + 80002b48: ffe00513 li a0,-2 + 80002b4c: d0157053 fcvt.s.wu ft0,a0 + 80002b50: 00101073 fsflags zero + 80002b54: e0000553 fmv.x.w a0,ft0 + 80002b58: 08d51c63 bne a0,a3,80002bf0 + +0000000080002b5c : + 80002b5c: 00600193 li gp,6 + 80002b60: 00000517 auipc a0,0x0 + 80002b64: 4b050513 addi a0,a0,1200 # 80003010 + 80002b68: 00052683 lw a3,0(a0) + 80002b6c: 00200513 li a0,2 + 80002b70: d0257053 fcvt.s.l ft0,a0 + 80002b74: 00101073 fsflags zero + 80002b78: e0000553 fmv.x.w a0,ft0 + 80002b7c: 06d51a63 bne a0,a3,80002bf0 + +0000000080002b80 : + 80002b80: 00700193 li gp,7 + 80002b84: 00000517 auipc a0,0x0 + 80002b88: 49050513 addi a0,a0,1168 # 80003014 + 80002b8c: 00052683 lw a3,0(a0) + 80002b90: ffe00513 li a0,-2 + 80002b94: d0257053 fcvt.s.l ft0,a0 + 80002b98: 00101073 fsflags zero + 80002b9c: e0000553 fmv.x.w a0,ft0 + 80002ba0: 04d51863 bne a0,a3,80002bf0 + +0000000080002ba4 : + 80002ba4: 00800193 li gp,8 + 80002ba8: 00000517 auipc a0,0x0 + 80002bac: 47050513 addi a0,a0,1136 # 80003018 + 80002bb0: 00052683 lw a3,0(a0) + 80002bb4: 00200513 li a0,2 + 80002bb8: d0357053 fcvt.s.lu ft0,a0 + 80002bbc: 00101073 fsflags zero + 80002bc0: e0000553 fmv.x.w a0,ft0 + 80002bc4: 02d51663 bne a0,a3,80002bf0 + +0000000080002bc8 : + 80002bc8: 00900193 li gp,9 + 80002bcc: 00000517 auipc a0,0x0 + 80002bd0: 45050513 addi a0,a0,1104 # 8000301c + 80002bd4: 00052683 lw a3,0(a0) + 80002bd8: ffe00513 li a0,-2 + 80002bdc: d0357053 fcvt.s.lu ft0,a0 + 80002be0: 00101073 fsflags zero + 80002be4: e0000553 fmv.x.w a0,ft0 + 80002be8: 00d51463 bne a0,a3,80002bf0 + 80002bec: 00301a63 bne zero,gp,80002c00 + +0000000080002bf0 : + 80002bf0: 00119513 slli a0,gp,0x1 + 80002bf4: 00050063 beqz a0,80002bf4 + 80002bf8: 00156513 ori a0,a0,1 + 80002bfc: 00000073 ecall + +0000000080002c00 : + 80002c00: 00100513 li a0,1 + 80002c04: 00000073 ecall + 80002c08: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 4000 lw s0,0(s0) + +0000000080003004 : + 80003004: 0000 unimp + 80003006: c000 sw s0,0(s0) + +0000000080003008 : + 80003008: 0000 unimp + 8000300a: 4000 lw s0,0(s0) + +000000008000300c : + 8000300c: 0000 unimp + 8000300e: 4f80 lw s0,24(a5) + +0000000080003010 : + 80003010: 0000 unimp + 80003012: 4000 lw s0,0(s0) + +0000000080003014 : + 80003014: 0000 unimp + 80003016: c000 sw s0,0(s0) + +0000000080003018 : + 80003018: 0000 unimp + 8000301a: 4000 lw s0,0(s0) + +000000008000301c : + 8000301c: 0000 unimp + 8000301e: 5f80 lw s0,56(a5) diff --git a/Tests/isa/rv64uf-v-fcvt_w b/Tests/isa/rv64uf-v-fcvt_w new file mode 100644 index 0000000..34bdf4b Binary files /dev/null and b/Tests/isa/rv64uf-v-fcvt_w differ diff --git a/Tests/isa/rv64uf-v-fcvt_w.dump b/Tests/isa/rv64uf-v-fcvt_w.dump new file mode 100644 index 0000000..3e7decf --- /dev/null +++ b/Tests/isa/rv64uf-v-fcvt_w.dump @@ -0,0 +1,1722 @@ + +rv64uf-v-fcvt_w: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: df068693 addi a3,a3,-528 # 80003248 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: e2460613 addi a2,a2,-476 # 800032d8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: dec60613 addi a2,a2,-532 # 800032f0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: d3c68693 addi a3,a3,-708 # 80003290 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: d5868693 addi a3,a3,-680 # 800033c8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: cd860613 addi a2,a2,-808 # 800033a0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: c0c68693 addi a3,a3,-1012 # 800033f8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: b2c68693 addi a3,a3,-1236 # 80003368 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: abc68693 addi a3,a3,-1348 # 80003330 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 03e00793 li a5,62 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 048057b7 lui a5,0x4805 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: f9678793 addi a5,a5,-106 # 4804f96 <_start-0x7b7fb06a> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00001517 auipc a0,0x1 + 80002ad4: 53050513 addi a0,a0,1328 # 80004000 + 80002ad8: 00052007 flw ft0,0(a0) + 80002adc: 00452087 flw ft1,4(a0) + 80002ae0: 00852107 flw ft2,8(a0) + 80002ae4: 00c52683 lw a3,12(a0) + 80002ae8: c0001553 fcvt.w.s a0,ft0,rtz + 80002aec: 001015f3 fsflags a1,zero + 80002af0: 00100613 li a2,1 + 80002af4: 72d51a63 bne a0,a3,80003228 + 80002af8: 72c59863 bne a1,a2,80003228 + +0000000080002afc : + 80002afc: 00300193 li gp,3 + 80002b00: 00001517 auipc a0,0x1 + 80002b04: 51050513 addi a0,a0,1296 # 80004010 + 80002b08: 00052007 flw ft0,0(a0) + 80002b0c: 00452087 flw ft1,4(a0) + 80002b10: 00852107 flw ft2,8(a0) + 80002b14: 00c52683 lw a3,12(a0) + 80002b18: c0001553 fcvt.w.s a0,ft0,rtz + 80002b1c: 001015f3 fsflags a1,zero + 80002b20: 00000613 li a2,0 + 80002b24: 70d51263 bne a0,a3,80003228 + 80002b28: 70c59063 bne a1,a2,80003228 + +0000000080002b2c : + 80002b2c: 00400193 li gp,4 + 80002b30: 00001517 auipc a0,0x1 + 80002b34: 4f050513 addi a0,a0,1264 # 80004020 + 80002b38: 00052007 flw ft0,0(a0) + 80002b3c: 00452087 flw ft1,4(a0) + 80002b40: 00852107 flw ft2,8(a0) + 80002b44: 00c52683 lw a3,12(a0) + 80002b48: c0001553 fcvt.w.s a0,ft0,rtz + 80002b4c: 001015f3 fsflags a1,zero + 80002b50: 00100613 li a2,1 + 80002b54: 6cd51a63 bne a0,a3,80003228 + 80002b58: 6cc59863 bne a1,a2,80003228 + +0000000080002b5c : + 80002b5c: 00500193 li gp,5 + 80002b60: 00001517 auipc a0,0x1 + 80002b64: 4d050513 addi a0,a0,1232 # 80004030 + 80002b68: 00052007 flw ft0,0(a0) + 80002b6c: 00452087 flw ft1,4(a0) + 80002b70: 00852107 flw ft2,8(a0) + 80002b74: 00c52683 lw a3,12(a0) + 80002b78: c0001553 fcvt.w.s a0,ft0,rtz + 80002b7c: 001015f3 fsflags a1,zero + 80002b80: 00100613 li a2,1 + 80002b84: 6ad51263 bne a0,a3,80003228 + 80002b88: 6ac59063 bne a1,a2,80003228 + +0000000080002b8c : + 80002b8c: 00600193 li gp,6 + 80002b90: 00001517 auipc a0,0x1 + 80002b94: 4b050513 addi a0,a0,1200 # 80004040 + 80002b98: 00052007 flw ft0,0(a0) + 80002b9c: 00452087 flw ft1,4(a0) + 80002ba0: 00852107 flw ft2,8(a0) + 80002ba4: 00c52683 lw a3,12(a0) + 80002ba8: c0001553 fcvt.w.s a0,ft0,rtz + 80002bac: 001015f3 fsflags a1,zero + 80002bb0: 00000613 li a2,0 + 80002bb4: 66d51a63 bne a0,a3,80003228 + 80002bb8: 66c59863 bne a1,a2,80003228 + +0000000080002bbc : + 80002bbc: 00700193 li gp,7 + 80002bc0: 00001517 auipc a0,0x1 + 80002bc4: 49050513 addi a0,a0,1168 # 80004050 + 80002bc8: 00052007 flw ft0,0(a0) + 80002bcc: 00452087 flw ft1,4(a0) + 80002bd0: 00852107 flw ft2,8(a0) + 80002bd4: 00c52683 lw a3,12(a0) + 80002bd8: c0001553 fcvt.w.s a0,ft0,rtz + 80002bdc: 001015f3 fsflags a1,zero + 80002be0: 00100613 li a2,1 + 80002be4: 64d51263 bne a0,a3,80003228 + 80002be8: 64c59063 bne a1,a2,80003228 + +0000000080002bec : + 80002bec: 00800193 li gp,8 + 80002bf0: 00001517 auipc a0,0x1 + 80002bf4: 47050513 addi a0,a0,1136 # 80004060 + 80002bf8: 00052007 flw ft0,0(a0) + 80002bfc: 00452087 flw ft1,4(a0) + 80002c00: 00852107 flw ft2,8(a0) + 80002c04: 00c52683 lw a3,12(a0) + 80002c08: c0001553 fcvt.w.s a0,ft0,rtz + 80002c0c: 001015f3 fsflags a1,zero + 80002c10: 01000613 li a2,16 + 80002c14: 60d51a63 bne a0,a3,80003228 + 80002c18: 60c59863 bne a1,a2,80003228 + +0000000080002c1c : + 80002c1c: 00900193 li gp,9 + 80002c20: 00001517 auipc a0,0x1 + 80002c24: 45050513 addi a0,a0,1104 # 80004070 + 80002c28: 00052007 flw ft0,0(a0) + 80002c2c: 00452087 flw ft1,4(a0) + 80002c30: 00852107 flw ft2,8(a0) + 80002c34: 00c52683 lw a3,12(a0) + 80002c38: c0001553 fcvt.w.s a0,ft0,rtz + 80002c3c: 001015f3 fsflags a1,zero + 80002c40: 01000613 li a2,16 + 80002c44: 5ed51263 bne a0,a3,80003228 + 80002c48: 5ec59063 bne a1,a2,80003228 + +0000000080002c4c : + 80002c4c: 00c00193 li gp,12 + 80002c50: 00001517 auipc a0,0x1 + 80002c54: 43050513 addi a0,a0,1072 # 80004080 + 80002c58: 00052007 flw ft0,0(a0) + 80002c5c: 00452087 flw ft1,4(a0) + 80002c60: 00852107 flw ft2,8(a0) + 80002c64: 00c52683 lw a3,12(a0) + 80002c68: c0101553 fcvt.wu.s a0,ft0,rtz + 80002c6c: 001015f3 fsflags a1,zero + 80002c70: 01000613 li a2,16 + 80002c74: 5ad51a63 bne a0,a3,80003228 + 80002c78: 5ac59863 bne a1,a2,80003228 + +0000000080002c7c : + 80002c7c: 00d00193 li gp,13 + 80002c80: 00001517 auipc a0,0x1 + 80002c84: 41050513 addi a0,a0,1040 # 80004090 + 80002c88: 00052007 flw ft0,0(a0) + 80002c8c: 00452087 flw ft1,4(a0) + 80002c90: 00852107 flw ft2,8(a0) + 80002c94: 00c52683 lw a3,12(a0) + 80002c98: c0101553 fcvt.wu.s a0,ft0,rtz + 80002c9c: 001015f3 fsflags a1,zero + 80002ca0: 01000613 li a2,16 + 80002ca4: 58d51263 bne a0,a3,80003228 + 80002ca8: 58c59063 bne a1,a2,80003228 + +0000000080002cac : + 80002cac: 00e00193 li gp,14 + 80002cb0: 00001517 auipc a0,0x1 + 80002cb4: 3f050513 addi a0,a0,1008 # 800040a0 + 80002cb8: 00052007 flw ft0,0(a0) + 80002cbc: 00452087 flw ft1,4(a0) + 80002cc0: 00852107 flw ft2,8(a0) + 80002cc4: 00c52683 lw a3,12(a0) + 80002cc8: c0101553 fcvt.wu.s a0,ft0,rtz + 80002ccc: 001015f3 fsflags a1,zero + 80002cd0: 00100613 li a2,1 + 80002cd4: 54d51a63 bne a0,a3,80003228 + 80002cd8: 54c59863 bne a1,a2,80003228 + +0000000080002cdc : + 80002cdc: 00f00193 li gp,15 + 80002ce0: 00001517 auipc a0,0x1 + 80002ce4: 3d050513 addi a0,a0,976 # 800040b0 + 80002ce8: 00052007 flw ft0,0(a0) + 80002cec: 00452087 flw ft1,4(a0) + 80002cf0: 00852107 flw ft2,8(a0) + 80002cf4: 00c52683 lw a3,12(a0) + 80002cf8: c0101553 fcvt.wu.s a0,ft0,rtz + 80002cfc: 001015f3 fsflags a1,zero + 80002d00: 00100613 li a2,1 + 80002d04: 52d51263 bne a0,a3,80003228 + 80002d08: 52c59063 bne a1,a2,80003228 + +0000000080002d0c : + 80002d0c: 01000193 li gp,16 + 80002d10: 00001517 auipc a0,0x1 + 80002d14: 3b050513 addi a0,a0,944 # 800040c0 + 80002d18: 00052007 flw ft0,0(a0) + 80002d1c: 00452087 flw ft1,4(a0) + 80002d20: 00852107 flw ft2,8(a0) + 80002d24: 00c52683 lw a3,12(a0) + 80002d28: c0101553 fcvt.wu.s a0,ft0,rtz + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 00000613 li a2,0 + 80002d34: 4ed51a63 bne a0,a3,80003228 + 80002d38: 4ec59863 bne a1,a2,80003228 + +0000000080002d3c : + 80002d3c: 01100193 li gp,17 + 80002d40: 00001517 auipc a0,0x1 + 80002d44: 39050513 addi a0,a0,912 # 800040d0 + 80002d48: 00052007 flw ft0,0(a0) + 80002d4c: 00452087 flw ft1,4(a0) + 80002d50: 00852107 flw ft2,8(a0) + 80002d54: 00c52683 lw a3,12(a0) + 80002d58: c0101553 fcvt.wu.s a0,ft0,rtz + 80002d5c: 001015f3 fsflags a1,zero + 80002d60: 00100613 li a2,1 + 80002d64: 4cd51263 bne a0,a3,80003228 + 80002d68: 4cc59063 bne a1,a2,80003228 + +0000000080002d6c : + 80002d6c: 01200193 li gp,18 + 80002d70: 00001517 auipc a0,0x1 + 80002d74: 37050513 addi a0,a0,880 # 800040e0 + 80002d78: 00052007 flw ft0,0(a0) + 80002d7c: 00452087 flw ft1,4(a0) + 80002d80: 00852107 flw ft2,8(a0) + 80002d84: 00c52683 lw a3,12(a0) + 80002d88: c0101553 fcvt.wu.s a0,ft0,rtz + 80002d8c: 001015f3 fsflags a1,zero + 80002d90: 01000613 li a2,16 + 80002d94: 48d51a63 bne a0,a3,80003228 + 80002d98: 48c59863 bne a1,a2,80003228 + +0000000080002d9c : + 80002d9c: 01300193 li gp,19 + 80002da0: 00001517 auipc a0,0x1 + 80002da4: 35050513 addi a0,a0,848 # 800040f0 + 80002da8: 00052007 flw ft0,0(a0) + 80002dac: 00452087 flw ft1,4(a0) + 80002db0: 00852107 flw ft2,8(a0) + 80002db4: 00c52683 lw a3,12(a0) + 80002db8: c0101553 fcvt.wu.s a0,ft0,rtz + 80002dbc: 001015f3 fsflags a1,zero + 80002dc0: 00000613 li a2,0 + 80002dc4: 46d51263 bne a0,a3,80003228 + 80002dc8: 46c59063 bne a1,a2,80003228 + +0000000080002dcc : + 80002dcc: 01600193 li gp,22 + 80002dd0: 00001517 auipc a0,0x1 + 80002dd4: 33050513 addi a0,a0,816 # 80004100 + 80002dd8: 00052007 flw ft0,0(a0) + 80002ddc: 00452087 flw ft1,4(a0) + 80002de0: 00852107 flw ft2,8(a0) + 80002de4: 00c52683 lw a3,12(a0) + 80002de8: c0201553 fcvt.l.s a0,ft0,rtz + 80002dec: 001015f3 fsflags a1,zero + 80002df0: 00100613 li a2,1 + 80002df4: 42d51a63 bne a0,a3,80003228 + 80002df8: 42c59863 bne a1,a2,80003228 + +0000000080002dfc : + 80002dfc: 01700193 li gp,23 + 80002e00: 00001517 auipc a0,0x1 + 80002e04: 31050513 addi a0,a0,784 # 80004110 + 80002e08: 00052007 flw ft0,0(a0) + 80002e0c: 00452087 flw ft1,4(a0) + 80002e10: 00852107 flw ft2,8(a0) + 80002e14: 00c52683 lw a3,12(a0) + 80002e18: c0201553 fcvt.l.s a0,ft0,rtz + 80002e1c: 001015f3 fsflags a1,zero + 80002e20: 00000613 li a2,0 + 80002e24: 40d51263 bne a0,a3,80003228 + 80002e28: 40c59063 bne a1,a2,80003228 + +0000000080002e2c : + 80002e2c: 01800193 li gp,24 + 80002e30: 00001517 auipc a0,0x1 + 80002e34: 2f050513 addi a0,a0,752 # 80004120 + 80002e38: 00052007 flw ft0,0(a0) + 80002e3c: 00452087 flw ft1,4(a0) + 80002e40: 00852107 flw ft2,8(a0) + 80002e44: 00c52683 lw a3,12(a0) + 80002e48: c0201553 fcvt.l.s a0,ft0,rtz + 80002e4c: 001015f3 fsflags a1,zero + 80002e50: 00100613 li a2,1 + 80002e54: 3cd51a63 bne a0,a3,80003228 + 80002e58: 3cc59863 bne a1,a2,80003228 + +0000000080002e5c : + 80002e5c: 01900193 li gp,25 + 80002e60: 00001517 auipc a0,0x1 + 80002e64: 2d050513 addi a0,a0,720 # 80004130 + 80002e68: 00052007 flw ft0,0(a0) + 80002e6c: 00452087 flw ft1,4(a0) + 80002e70: 00852107 flw ft2,8(a0) + 80002e74: 00c52683 lw a3,12(a0) + 80002e78: c0201553 fcvt.l.s a0,ft0,rtz + 80002e7c: 001015f3 fsflags a1,zero + 80002e80: 00100613 li a2,1 + 80002e84: 3ad51263 bne a0,a3,80003228 + 80002e88: 3ac59063 bne a1,a2,80003228 + +0000000080002e8c : + 80002e8c: 01a00193 li gp,26 + 80002e90: 00001517 auipc a0,0x1 + 80002e94: 2b050513 addi a0,a0,688 # 80004140 + 80002e98: 00052007 flw ft0,0(a0) + 80002e9c: 00452087 flw ft1,4(a0) + 80002ea0: 00852107 flw ft2,8(a0) + 80002ea4: 00c52683 lw a3,12(a0) + 80002ea8: c0201553 fcvt.l.s a0,ft0,rtz + 80002eac: 001015f3 fsflags a1,zero + 80002eb0: 00000613 li a2,0 + 80002eb4: 36d51a63 bne a0,a3,80003228 + 80002eb8: 36c59863 bne a1,a2,80003228 + +0000000080002ebc : + 80002ebc: 01b00193 li gp,27 + 80002ec0: 00001517 auipc a0,0x1 + 80002ec4: 29050513 addi a0,a0,656 # 80004150 + 80002ec8: 00052007 flw ft0,0(a0) + 80002ecc: 00452087 flw ft1,4(a0) + 80002ed0: 00852107 flw ft2,8(a0) + 80002ed4: 00c52683 lw a3,12(a0) + 80002ed8: c0201553 fcvt.l.s a0,ft0,rtz + 80002edc: 001015f3 fsflags a1,zero + 80002ee0: 00100613 li a2,1 + 80002ee4: 34d51263 bne a0,a3,80003228 + 80002ee8: 34c59063 bne a1,a2,80003228 + +0000000080002eec : + 80002eec: 02000193 li gp,32 + 80002ef0: 00001517 auipc a0,0x1 + 80002ef4: 27050513 addi a0,a0,624 # 80004160 + 80002ef8: 00052007 flw ft0,0(a0) + 80002efc: 00452087 flw ft1,4(a0) + 80002f00: 00852107 flw ft2,8(a0) + 80002f04: 00c52683 lw a3,12(a0) + 80002f08: c0301553 fcvt.lu.s a0,ft0,rtz + 80002f0c: 001015f3 fsflags a1,zero + 80002f10: 01000613 li a2,16 + 80002f14: 30d51a63 bne a0,a3,80003228 + 80002f18: 30c59863 bne a1,a2,80003228 + +0000000080002f1c : + 80002f1c: 02100193 li gp,33 + 80002f20: 00001517 auipc a0,0x1 + 80002f24: 25050513 addi a0,a0,592 # 80004170 + 80002f28: 00052007 flw ft0,0(a0) + 80002f2c: 00452087 flw ft1,4(a0) + 80002f30: 00852107 flw ft2,8(a0) + 80002f34: 00c52683 lw a3,12(a0) + 80002f38: c0301553 fcvt.lu.s a0,ft0,rtz + 80002f3c: 001015f3 fsflags a1,zero + 80002f40: 01000613 li a2,16 + 80002f44: 2ed51263 bne a0,a3,80003228 + 80002f48: 2ec59063 bne a1,a2,80003228 + +0000000080002f4c : + 80002f4c: 02200193 li gp,34 + 80002f50: 00001517 auipc a0,0x1 + 80002f54: 23050513 addi a0,a0,560 # 80004180 + 80002f58: 00052007 flw ft0,0(a0) + 80002f5c: 00452087 flw ft1,4(a0) + 80002f60: 00852107 flw ft2,8(a0) + 80002f64: 00c52683 lw a3,12(a0) + 80002f68: c0301553 fcvt.lu.s a0,ft0,rtz + 80002f6c: 001015f3 fsflags a1,zero + 80002f70: 00100613 li a2,1 + 80002f74: 2ad51a63 bne a0,a3,80003228 + 80002f78: 2ac59863 bne a1,a2,80003228 + +0000000080002f7c : + 80002f7c: 02300193 li gp,35 + 80002f80: 00001517 auipc a0,0x1 + 80002f84: 21050513 addi a0,a0,528 # 80004190 + 80002f88: 00052007 flw ft0,0(a0) + 80002f8c: 00452087 flw ft1,4(a0) + 80002f90: 00852107 flw ft2,8(a0) + 80002f94: 00c52683 lw a3,12(a0) + 80002f98: c0301553 fcvt.lu.s a0,ft0,rtz + 80002f9c: 001015f3 fsflags a1,zero + 80002fa0: 00100613 li a2,1 + 80002fa4: 28d51263 bne a0,a3,80003228 + 80002fa8: 28c59063 bne a1,a2,80003228 + +0000000080002fac : + 80002fac: 02400193 li gp,36 + 80002fb0: 00001517 auipc a0,0x1 + 80002fb4: 1f050513 addi a0,a0,496 # 800041a0 + 80002fb8: 00052007 flw ft0,0(a0) + 80002fbc: 00452087 flw ft1,4(a0) + 80002fc0: 00852107 flw ft2,8(a0) + 80002fc4: 00c52683 lw a3,12(a0) + 80002fc8: c0301553 fcvt.lu.s a0,ft0,rtz + 80002fcc: 001015f3 fsflags a1,zero + 80002fd0: 00000613 li a2,0 + 80002fd4: 24d51a63 bne a0,a3,80003228 + 80002fd8: 24c59863 bne a1,a2,80003228 + +0000000080002fdc : + 80002fdc: 02500193 li gp,37 + 80002fe0: 00001517 auipc a0,0x1 + 80002fe4: 1d050513 addi a0,a0,464 # 800041b0 + 80002fe8: 00052007 flw ft0,0(a0) + 80002fec: 00452087 flw ft1,4(a0) + 80002ff0: 00852107 flw ft2,8(a0) + 80002ff4: 00c52683 lw a3,12(a0) + 80002ff8: c0301553 fcvt.lu.s a0,ft0,rtz + 80002ffc: 001015f3 fsflags a1,zero + 80003000: 00100613 li a2,1 + 80003004: 22d51263 bne a0,a3,80003228 + 80003008: 22c59063 bne a1,a2,80003228 + +000000008000300c : + 8000300c: 02600193 li gp,38 + 80003010: 00001517 auipc a0,0x1 + 80003014: 1b050513 addi a0,a0,432 # 800041c0 + 80003018: 00052007 flw ft0,0(a0) + 8000301c: 00452087 flw ft1,4(a0) + 80003020: 00852107 flw ft2,8(a0) + 80003024: 00c52683 lw a3,12(a0) + 80003028: c0301553 fcvt.lu.s a0,ft0,rtz + 8000302c: 001015f3 fsflags a1,zero + 80003030: 01000613 li a2,16 + 80003034: 1ed51a63 bne a0,a3,80003228 + 80003038: 1ec59863 bne a1,a2,80003228 + +000000008000303c : + 8000303c: 00001097 auipc ra,0x1 + 80003040: 19408093 addi ra,ra,404 # 800041d0 + 80003044: 0000a087 flw ft1,0(ra) + 80003048: c000f0d3 fcvt.w.s ra,ft1 + 8000304c: 80000eb7 lui t4,0x80000 + 80003050: fffe8e9b addiw t4,t4,-1 + 80003054: 02a00193 li gp,42 + 80003058: 1dd09863 bne ra,t4,80003228 + +000000008000305c : + 8000305c: 00001097 auipc ra,0x1 + 80003060: 17408093 addi ra,ra,372 # 800041d0 + 80003064: 0080a087 flw ft1,8(ra) + 80003068: c000f0d3 fcvt.w.s ra,ft1 + 8000306c: 80000eb7 lui t4,0x80000 + 80003070: 02c00193 li gp,44 + 80003074: 1bd09a63 bne ra,t4,80003228 + +0000000080003078 : + 80003078: 00001097 auipc ra,0x1 + 8000307c: 15808093 addi ra,ra,344 # 800041d0 + 80003080: 0000a087 flw ft1,0(ra) + 80003084: c020f0d3 fcvt.l.s ra,ft1 + 80003088: fff00e9b addiw t4,zero,-1 + 8000308c: 03fe9e93 slli t4,t4,0x3f + 80003090: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffff680f> + 80003094: 02b00193 li gp,43 + 80003098: 19d09863 bne ra,t4,80003228 + +000000008000309c : + 8000309c: 00001097 auipc ra,0x1 + 800030a0: 13408093 addi ra,ra,308 # 800041d0 + 800030a4: 0080a087 flw ft1,8(ra) + 800030a8: c020f0d3 fcvt.l.s ra,ft1 + 800030ac: fff00e9b addiw t4,zero,-1 + 800030b0: 03fe9e93 slli t4,t4,0x3f + 800030b4: 02d00193 li gp,45 + 800030b8: 17d09863 bne ra,t4,80003228 + +00000000800030bc : + 800030bc: 00001097 auipc ra,0x1 + 800030c0: 11408093 addi ra,ra,276 # 800041d0 + 800030c4: 0040a087 flw ft1,4(ra) + 800030c8: c000f0d3 fcvt.w.s ra,ft1 + 800030cc: 80000eb7 lui t4,0x80000 + 800030d0: fffe8e9b addiw t4,t4,-1 + 800030d4: 03400193 li gp,52 + 800030d8: 15d09863 bne ra,t4,80003228 + +00000000800030dc : + 800030dc: 00001097 auipc ra,0x1 + 800030e0: 0f408093 addi ra,ra,244 # 800041d0 + 800030e4: 00c0a087 flw ft1,12(ra) + 800030e8: c000f0d3 fcvt.w.s ra,ft1 + 800030ec: 80000eb7 lui t4,0x80000 + 800030f0: fffe8e9b addiw t4,t4,-1 + 800030f4: 03600193 li gp,54 + 800030f8: 13d09863 bne ra,t4,80003228 + +00000000800030fc : + 800030fc: 00001097 auipc ra,0x1 + 80003100: 0d408093 addi ra,ra,212 # 800041d0 + 80003104: 0040a087 flw ft1,4(ra) + 80003108: c020f0d3 fcvt.l.s ra,ft1 + 8000310c: fff00e9b addiw t4,zero,-1 + 80003110: 03fe9e93 slli t4,t4,0x3f + 80003114: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffff680f> + 80003118: 03500193 li gp,53 + 8000311c: 11d09663 bne ra,t4,80003228 + +0000000080003120 : + 80003120: 00001097 auipc ra,0x1 + 80003124: 0b008093 addi ra,ra,176 # 800041d0 + 80003128: 00c0a087 flw ft1,12(ra) + 8000312c: c020f0d3 fcvt.l.s ra,ft1 + 80003130: fff00e9b addiw t4,zero,-1 + 80003134: 03fe9e93 slli t4,t4,0x3f + 80003138: fffe8e93 addi t4,t4,-1 + 8000313c: 03700193 li gp,55 + 80003140: 0fd09463 bne ra,t4,80003228 + +0000000080003144 : + 80003144: 00001097 auipc ra,0x1 + 80003148: 08c08093 addi ra,ra,140 # 800041d0 + 8000314c: 0000a087 flw ft1,0(ra) + 80003150: c010f0d3 fcvt.wu.s ra,ft1 + 80003154: fff00e93 li t4,-1 + 80003158: 03e00193 li gp,62 + 8000315c: 0dd09663 bne ra,t4,80003228 + +0000000080003160 : + 80003160: 00001097 auipc ra,0x1 + 80003164: 07008093 addi ra,ra,112 # 800041d0 + 80003168: 0040a087 flw ft1,4(ra) + 8000316c: c010f0d3 fcvt.wu.s ra,ft1 + 80003170: fff00e93 li t4,-1 + 80003174: 03f00193 li gp,63 + 80003178: 0bd09863 bne ra,t4,80003228 + +000000008000317c : + 8000317c: 00001097 auipc ra,0x1 + 80003180: 05408093 addi ra,ra,84 # 800041d0 + 80003184: 0080a087 flw ft1,8(ra) + 80003188: c010f0d3 fcvt.wu.s ra,ft1 + 8000318c: 00000e93 li t4,0 + 80003190: 04000193 li gp,64 + 80003194: 09d09a63 bne ra,t4,80003228 + +0000000080003198 : + 80003198: 00001097 auipc ra,0x1 + 8000319c: 03808093 addi ra,ra,56 # 800041d0 + 800031a0: 00c0a087 flw ft1,12(ra) + 800031a4: c010f0d3 fcvt.wu.s ra,ft1 + 800031a8: fff00e93 li t4,-1 + 800031ac: 04100193 li gp,65 + 800031b0: 07d09c63 bne ra,t4,80003228 + +00000000800031b4 : + 800031b4: 00001097 auipc ra,0x1 + 800031b8: 01c08093 addi ra,ra,28 # 800041d0 + 800031bc: 0000a087 flw ft1,0(ra) + 800031c0: c030f0d3 fcvt.lu.s ra,ft1 + 800031c4: fff00e93 li t4,-1 + 800031c8: 04200193 li gp,66 + 800031cc: 05d09e63 bne ra,t4,80003228 + +00000000800031d0 : + 800031d0: 00001097 auipc ra,0x1 + 800031d4: 00008093 mv ra,ra + 800031d8: 0040a087 flw ft1,4(ra) # 800041d4 + 800031dc: c030f0d3 fcvt.lu.s ra,ft1 + 800031e0: fff00e93 li t4,-1 + 800031e4: 04300193 li gp,67 + 800031e8: 05d09063 bne ra,t4,80003228 + +00000000800031ec : + 800031ec: 00001097 auipc ra,0x1 + 800031f0: fe408093 addi ra,ra,-28 # 800041d0 + 800031f4: 0080a087 flw ft1,8(ra) + 800031f8: c030f0d3 fcvt.lu.s ra,ft1 + 800031fc: 00000e93 li t4,0 + 80003200: 04400193 li gp,68 + 80003204: 03d09263 bne ra,t4,80003228 + +0000000080003208 : + 80003208: 00001097 auipc ra,0x1 + 8000320c: fc808093 addi ra,ra,-56 # 800041d0 + 80003210: 00c0a087 flw ft1,12(ra) + 80003214: c030f0d3 fcvt.lu.s ra,ft1 + 80003218: fff00e93 li t4,-1 + 8000321c: 04500193 li gp,69 + 80003220: 01d09463 bne ra,t4,80003228 + 80003224: 00301a63 bne zero,gp,80003238 + +0000000080003228 : + 80003228: 00119513 slli a0,gp,0x1 + 8000322c: 00050063 beqz a0,8000322c + 80003230: 00156513 ori a0,a0,1 + 80003234: 00000073 ecall + +0000000080003238 : + 80003238: 00100513 li a0,1 + 8000323c: 00000073 ecall + 80003240: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: cccd beqz s1,800040ba + 80004002: bf8c fsd fa1,56(a5) + 80004004: 0000 unimp + 80004006: 0000 unimp + 80004008: 0000 unimp + 8000400a: 0000 unimp + 8000400c: ffff 0xffff + 8000400e: ffff 0xffff + +0000000080004010 : + 80004010: 0000 unimp + 80004012: bf80 fsd fs0,56(a5) + 80004014: 0000 unimp + 80004016: 0000 unimp + 80004018: 0000 unimp + 8000401a: 0000 unimp + 8000401c: ffff 0xffff + 8000401e: ffff 0xffff + +0000000080004020 : + 80004020: 6666 ld a2,88(sp) + 80004022: bf66 fsd fs9,440(sp) + 80004024: 0000 unimp + 80004026: 0000 unimp + 80004028: 0000 unimp + 8000402a: 0000 unimp + 8000402c: 0000 unimp + 8000402e: 0000 unimp + +0000000080004030 : + 80004030: 6666 ld a2,88(sp) + 80004032: 3f66 fld ft10,120(sp) + 80004034: 0000 unimp + 80004036: 0000 unimp + 80004038: 0000 unimp + 8000403a: 0000 unimp + 8000403c: 0000 unimp + 8000403e: 0000 unimp + +0000000080004040 : + 80004040: 0000 unimp + 80004042: 3f80 fld fs0,56(a5) + 80004044: 0000 unimp + 80004046: 0000 unimp + 80004048: 0000 unimp + 8000404a: 0000 unimp + 8000404c: 0001 nop + 8000404e: 0000 unimp + +0000000080004050 : + 80004050: cccd beqz s1,8000410a + 80004052: 3f8c fld fa1,56(a5) + 80004054: 0000 unimp + 80004056: 0000 unimp + 80004058: 0000 unimp + 8000405a: 0000 unimp + 8000405c: 0001 nop + 8000405e: 0000 unimp + +0000000080004060 : + 80004060: d05e sw s7,32(sp) + 80004062: cf32 sw a2,156(sp) + 80004064: 0000 unimp + 80004066: 0000 unimp + 80004068: 0000 unimp + 8000406a: 0000 unimp + 8000406c: 0000 unimp + 8000406e: 8000 0x8000 + +0000000080004070 : + 80004070: d05e sw s7,32(sp) + 80004072: 4f32 lw t5,12(sp) + 80004074: 0000 unimp + 80004076: 0000 unimp + 80004078: 0000 unimp + 8000407a: 0000 unimp + 8000407c: ffff 0xffff + 8000407e: 7fff 0x7fff + +0000000080004080 : + 80004080: 0000 unimp + 80004082: c040 sw s0,4(s0) + 80004084: 0000 unimp + 80004086: 0000 unimp + 80004088: 0000 unimp + 8000408a: 0000 unimp + 8000408c: 0000 unimp + 8000408e: 0000 unimp + +0000000080004090 : + 80004090: 0000 unimp + 80004092: bf80 fsd fs0,56(a5) + 80004094: 0000 unimp + 80004096: 0000 unimp + 80004098: 0000 unimp + 8000409a: 0000 unimp + 8000409c: 0000 unimp + 8000409e: 0000 unimp + +00000000800040a0 : + 800040a0: 6666 ld a2,88(sp) + 800040a2: bf66 fsd fs9,440(sp) + 800040a4: 0000 unimp + 800040a6: 0000 unimp + 800040a8: 0000 unimp + 800040aa: 0000 unimp + 800040ac: 0000 unimp + 800040ae: 0000 unimp + +00000000800040b0 : + 800040b0: 6666 ld a2,88(sp) + 800040b2: 3f66 fld ft10,120(sp) + 800040b4: 0000 unimp + 800040b6: 0000 unimp + 800040b8: 0000 unimp + 800040ba: 0000 unimp + 800040bc: 0000 unimp + 800040be: 0000 unimp + +00000000800040c0 : + 800040c0: 0000 unimp + 800040c2: 3f80 fld fs0,56(a5) + 800040c4: 0000 unimp + 800040c6: 0000 unimp + 800040c8: 0000 unimp + 800040ca: 0000 unimp + 800040cc: 0001 nop + 800040ce: 0000 unimp + +00000000800040d0 : + 800040d0: cccd beqz s1,8000418a + 800040d2: 3f8c fld fa1,56(a5) + 800040d4: 0000 unimp + 800040d6: 0000 unimp + 800040d8: 0000 unimp + 800040da: 0000 unimp + 800040dc: 0001 nop + 800040de: 0000 unimp + +00000000800040e0 : + 800040e0: d05e sw s7,32(sp) + 800040e2: cf32 sw a2,156(sp) + 800040e4: 0000 unimp + 800040e6: 0000 unimp + 800040e8: 0000 unimp + 800040ea: 0000 unimp + 800040ec: 0000 unimp + 800040ee: 0000 unimp + +00000000800040f0 : + 800040f0: d05e sw s7,32(sp) + 800040f2: 4f32 lw t5,12(sp) + 800040f4: 0000 unimp + 800040f6: 0000 unimp + 800040f8: 0000 unimp + 800040fa: 0000 unimp + 800040fc: 5e00 lw s0,56(a2) + 800040fe: b2d0 fsd fa2,160(a3) + +0000000080004100 : + 80004100: cccd beqz s1,800041ba + 80004102: bf8c fsd fa1,56(a5) + 80004104: 0000 unimp + 80004106: 0000 unimp + 80004108: 0000 unimp + 8000410a: 0000 unimp + 8000410c: ffff 0xffff + 8000410e: ffff 0xffff + +0000000080004110 : + 80004110: 0000 unimp + 80004112: bf80 fsd fs0,56(a5) + 80004114: 0000 unimp + 80004116: 0000 unimp + 80004118: 0000 unimp + 8000411a: 0000 unimp + 8000411c: ffff 0xffff + 8000411e: ffff 0xffff + +0000000080004120 : + 80004120: 6666 ld a2,88(sp) + 80004122: bf66 fsd fs9,440(sp) + 80004124: 0000 unimp + 80004126: 0000 unimp + 80004128: 0000 unimp + 8000412a: 0000 unimp + 8000412c: 0000 unimp + 8000412e: 0000 unimp + +0000000080004130 : + 80004130: 6666 ld a2,88(sp) + 80004132: 3f66 fld ft10,120(sp) + 80004134: 0000 unimp + 80004136: 0000 unimp + 80004138: 0000 unimp + 8000413a: 0000 unimp + 8000413c: 0000 unimp + 8000413e: 0000 unimp + +0000000080004140 : + 80004140: 0000 unimp + 80004142: 3f80 fld fs0,56(a5) + 80004144: 0000 unimp + 80004146: 0000 unimp + 80004148: 0000 unimp + 8000414a: 0000 unimp + 8000414c: 0001 nop + 8000414e: 0000 unimp + +0000000080004150 : + 80004150: cccd beqz s1,8000420a + 80004152: 3f8c fld fa1,56(a5) + 80004154: 0000 unimp + 80004156: 0000 unimp + 80004158: 0000 unimp + 8000415a: 0000 unimp + 8000415c: 0001 nop + 8000415e: 0000 unimp + +0000000080004160 : + 80004160: 0000 unimp + 80004162: c040 sw s0,4(s0) + 80004164: 0000 unimp + 80004166: 0000 unimp + 80004168: 0000 unimp + 8000416a: 0000 unimp + 8000416c: 0000 unimp + 8000416e: 0000 unimp + +0000000080004170 : + 80004170: 0000 unimp + 80004172: bf80 fsd fs0,56(a5) + 80004174: 0000 unimp + 80004176: 0000 unimp + 80004178: 0000 unimp + 8000417a: 0000 unimp + 8000417c: 0000 unimp + 8000417e: 0000 unimp + +0000000080004180 : + 80004180: 6666 ld a2,88(sp) + 80004182: bf66 fsd fs9,440(sp) + 80004184: 0000 unimp + 80004186: 0000 unimp + 80004188: 0000 unimp + 8000418a: 0000 unimp + 8000418c: 0000 unimp + 8000418e: 0000 unimp + +0000000080004190 : + 80004190: 6666 ld a2,88(sp) + 80004192: 3f66 fld ft10,120(sp) + 80004194: 0000 unimp + 80004196: 0000 unimp + 80004198: 0000 unimp + 8000419a: 0000 unimp + 8000419c: 0000 unimp + 8000419e: 0000 unimp + +00000000800041a0 : + 800041a0: 0000 unimp + 800041a2: 3f80 fld fs0,56(a5) + 800041a4: 0000 unimp + 800041a6: 0000 unimp + 800041a8: 0000 unimp + 800041aa: 0000 unimp + 800041ac: 0001 nop + 800041ae: 0000 unimp + +00000000800041b0 : + 800041b0: cccd beqz s1,8000426a + 800041b2: 3f8c fld fa1,56(a5) + 800041b4: 0000 unimp + 800041b6: 0000 unimp + 800041b8: 0000 unimp + 800041ba: 0000 unimp + 800041bc: 0001 nop + 800041be: 0000 unimp + +00000000800041c0 : + 800041c0: d05e sw s7,32(sp) + 800041c2: cf32 sw a2,156(sp) + 800041c4: 0000 unimp + 800041c6: 0000 unimp + 800041c8: 0000 unimp + 800041ca: 0000 unimp + 800041cc: 0000 unimp + 800041ce: 0000 unimp + +00000000800041d0 : + 800041d0: ffff 0xffff + 800041d2: ffff 0xffff + 800041d4: ffff 0xffff + 800041d6: 7fff 0x7fff + 800041d8: 0000 unimp + 800041da: ff80 sd s0,56(a5) + 800041dc: 0000 unimp + 800041de: 7f80 ld s0,56(a5) + +00000000800041e0 : + 800041e0: ffff 0xffff + 800041e2: ffff 0xffff + 800041e4: ffff 0xffff + 800041e6: ffff 0xffff + 800041e8: ffff 0xffff + 800041ea: ffff 0xffff + 800041ec: ffff 0xffff + 800041ee: 7fff 0x7fff + 800041f0: 0000 unimp + 800041f2: 0000 unimp + 800041f4: 0000 unimp + 800041f6: fff0 sd a2,248(a5) + 800041f8: 0000 unimp + 800041fa: 0000 unimp + 800041fc: 0000 unimp + 800041fe: 7ff0 ld a2,248(a5) diff --git a/Tests/isa/rv64uf-v-fdiv b/Tests/isa/rv64uf-v-fdiv new file mode 100644 index 0000000..4e5440e Binary files /dev/null and b/Tests/isa/rv64uf-v-fdiv differ diff --git a/Tests/isa/rv64uf-v-fdiv.dump b/Tests/isa/rv64uf-v-fdiv.dump new file mode 100644 index 0000000..4c2973b --- /dev/null +++ b/Tests/isa/rv64uf-v-fdiv.dump @@ -0,0 +1,1021 @@ + +rv64uf-v-fdiv: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 80068693 addi a3,a3,-2048 # 80002c58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 83460613 addi a2,a2,-1996 # 80002ce8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 7fc60613 addi a2,a2,2044 # 80002d00 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 74c68693 addi a3,a3,1868 # 80002ca0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 76868693 addi a3,a3,1896 # 80002dd8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 6e860613 addi a2,a2,1768 # 80002db0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 61c68693 addi a3,a3,1564 # 80002e08 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 53c68693 addi a3,a3,1340 # 80002d78 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 4cc68693 addi a3,a3,1228 # 80002d40 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03100793 li a5,49 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0fd527b7 lui a5,0xfd52 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 05878793 addi a5,a5,88 # fd52058 <_start-0x702adfa8> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00052007 flw ft0,0(a0) + 80002adc: 00452087 flw ft1,4(a0) + 80002ae0: 00852107 flw ft2,8(a0) + 80002ae4: 00c52683 lw a3,12(a0) + 80002ae8: 181071d3 fdiv.s ft3,ft0,ft1 + 80002aec: e0018553 fmv.x.w a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00100613 li a2,1 + 80002af8: 14d51263 bne a0,a3,80002c3c + 80002afc: 14c59063 bne a1,a2,80002c3c + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00000517 auipc a0,0x0 + 80002b08: 50c50513 addi a0,a0,1292 # 80003010 + 80002b0c: 00052007 flw ft0,0(a0) + 80002b10: 00452087 flw ft1,4(a0) + 80002b14: 00852107 flw ft2,8(a0) + 80002b18: 00c52683 lw a3,12(a0) + 80002b1c: 181071d3 fdiv.s ft3,ft0,ft1 + 80002b20: e0018553 fmv.x.w a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00100613 li a2,1 + 80002b2c: 10d51863 bne a0,a3,80002c3c + 80002b30: 10c59663 bne a1,a2,80002c3c + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00000517 auipc a0,0x0 + 80002b3c: 4e850513 addi a0,a0,1256 # 80003020 + 80002b40: 00052007 flw ft0,0(a0) + 80002b44: 00452087 flw ft1,4(a0) + 80002b48: 00852107 flw ft2,8(a0) + 80002b4c: 00c52683 lw a3,12(a0) + 80002b50: 181071d3 fdiv.s ft3,ft0,ft1 + 80002b54: e0018553 fmv.x.w a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00000613 li a2,0 + 80002b60: 0cd51e63 bne a0,a3,80002c3c + 80002b64: 0cc59c63 bne a1,a2,80002c3c + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00000517 auipc a0,0x0 + 80002b70: 4c450513 addi a0,a0,1220 # 80003030 + 80002b74: 00052007 flw ft0,0(a0) + 80002b78: 00452087 flw ft1,4(a0) + 80002b7c: 00852107 flw ft2,8(a0) + 80002b80: 00c52683 lw a3,12(a0) + 80002b84: 580071d3 fsqrt.s ft3,ft0 + 80002b88: e0018553 fmv.x.w a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00100613 li a2,1 + 80002b94: 0ad51463 bne a0,a3,80002c3c + 80002b98: 0ac59263 bne a1,a2,80002c3c + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00000517 auipc a0,0x0 + 80002ba4: 4a050513 addi a0,a0,1184 # 80003040 + 80002ba8: 00052007 flw ft0,0(a0) + 80002bac: 00452087 flw ft1,4(a0) + 80002bb0: 00852107 flw ft2,8(a0) + 80002bb4: 00c52683 lw a3,12(a0) + 80002bb8: 580071d3 fsqrt.s ft3,ft0 + 80002bbc: e0018553 fmv.x.w a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00000613 li a2,0 + 80002bc8: 06d51a63 bne a0,a3,80002c3c + 80002bcc: 06c59863 bne a1,a2,80002c3c + +0000000080002bd0 : + 80002bd0: 00700193 li gp,7 + 80002bd4: 00000517 auipc a0,0x0 + 80002bd8: 47c50513 addi a0,a0,1148 # 80003050 + 80002bdc: 00052007 flw ft0,0(a0) + 80002be0: 00452087 flw ft1,4(a0) + 80002be4: 00852107 flw ft2,8(a0) + 80002be8: 00c52683 lw a3,12(a0) + 80002bec: 580071d3 fsqrt.s ft3,ft0 + 80002bf0: e0018553 fmv.x.w a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 01000613 li a2,16 + 80002bfc: 04d51063 bne a0,a3,80002c3c + 80002c00: 02c59e63 bne a1,a2,80002c3c + +0000000080002c04 : + 80002c04: 00800193 li gp,8 + 80002c08: 00000517 auipc a0,0x0 + 80002c0c: 45c50513 addi a0,a0,1116 # 80003064 + 80002c10: 00052007 flw ft0,0(a0) + 80002c14: 00452087 flw ft1,4(a0) + 80002c18: 00852107 flw ft2,8(a0) + 80002c1c: 00c52683 lw a3,12(a0) + 80002c20: 580071d3 fsqrt.s ft3,ft0 + 80002c24: e0018553 fmv.x.w a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00100613 li a2,1 + 80002c30: 00d51663 bne a0,a3,80002c3c + 80002c34: 00c59463 bne a1,a2,80002c3c + 80002c38: 00301a63 bne zero,gp,80002c4c + +0000000080002c3c : + 80002c3c: 00119513 slli a0,gp,0x1 + 80002c40: 00050063 beqz a0,80002c40 + 80002c44: 00156513 ori a0,a0,1 + 80002c48: 00000073 ecall + +0000000080002c4c : + 80002c4c: 00100513 li a0,1 + 80002c50: 00000073 ecall + 80002c54: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 40490fdb 0x40490fdb + 80003004: f854 sd a3,176(s0) + 80003006: 402d c.li zero,11 + 80003008: 0000 unimp + 8000300a: 0000 unimp + 8000300c: eee0 sd s0,216(a3) + 8000300e: sltiu t6,zero,1024 + +0000000080003010 : + 80003010: 4000 lw s0,0(s0) + 80003012: c49a sw t1,72(sp) + 80003014: 449a6333 0x449a6333 + 80003018: 0000 unimp + 8000301a: 0000 unimp + 8000301c: c5a2 sw s0,200(sp) + 8000301e: bf7f 0xbf7f + +0000000080003020 : + 80003020: 40490fdb 0x40490fdb + 80003024: 0000 unimp + 80003026: 3f80 fld fs0,56(a5) + 80003028: 0000 unimp + 8000302a: 0000 unimp + 8000302c: 40490fdb 0x40490fdb + +0000000080003030 : + 80003030: 40490fdb 0x40490fdb + 80003034: 0000 unimp + 80003036: 0000 unimp + 80003038: 0000 unimp + 8000303a: 0000 unimp + 8000303c: dfc5 beqz a5,80002ff4 + 8000303e: 3fe2 fld ft11,56(sp) + +0000000080003040 : + 80003040: 4000 lw s0,0(s0) + 80003042: 461c lw a5,8(a2) + 80003044: 0000 unimp + 80003046: 0000 unimp + 80003048: 0000 unimp + 8000304a: 0000 unimp + 8000304c: 0000 unimp + 8000304e: 42c8 lw a0,4(a3) + +0000000080003050 : + 80003050: 0000 unimp + 80003052: bf80 fsd fs0,56(a5) + 80003054: 0000 unimp + 80003056: 0000 unimp + 80003058: 0000 unimp + 8000305a: 0000 unimp + 8000305c: 0000 unimp + 8000305e: 7fc0 ld s0,184(a5) + 80003060: 0000 unimp + 80003062: 0000 unimp + +0000000080003064 : + 80003064: 0000 unimp + 80003066: 0000432b 0x432b + 8000306a: 0000 unimp + 8000306c: 0000 unimp + 8000306e: 0000 unimp + 80003070: 3a26 fld fs4,104(sp) + 80003072: 4151 li sp,20 + 80003074: 0000 unimp + 80003076: 0000 unimp + 80003078: 0000 unimp + 8000307a: 0000 unimp + 8000307c: 0000 unimp + 8000307e: 0000 unimp diff --git a/Tests/isa/rv64uf-v-fmadd b/Tests/isa/rv64uf-v-fmadd new file mode 100644 index 0000000..d6f02f8 Binary files /dev/null and b/Tests/isa/rv64uf-v-fmadd differ diff --git a/Tests/isa/rv64uf-v-fmadd.dump b/Tests/isa/rv64uf-v-fmadd.dump new file mode 100644 index 0000000..11989b2 --- /dev/null +++ b/Tests/isa/rv64uf-v-fmadd.dump @@ -0,0 +1,1140 @@ + +rv64uf-v-fmadd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 90868693 addi a3,a3,-1784 # 80002d60 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 93c60613 addi a2,a2,-1732 # 80002df0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 90460613 addi a2,a2,-1788 # 80002e08 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 85468693 addi a3,a3,-1964 # 80002da8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 87068693 addi a3,a3,-1936 # 80002ee0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7f060613 addi a2,a2,2032 # 80002eb8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 72468693 addi a3,a3,1828 # 80002f10 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 64468693 addi a3,a3,1604 # 80002e80 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5d468693 addi a3,a3,1492 # 80002e48 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01a00793 li a5,26 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 094647b7 lui a5,0x9464 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: ca878793 addi a5,a5,-856 # 9463ca8 <_start-0x76b9c358> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00000517 auipc a0,0x0 + 80002ad4: 53050513 addi a0,a0,1328 # 80003000 + 80002ad8: 00052007 flw ft0,0(a0) + 80002adc: 00452087 flw ft1,4(a0) + 80002ae0: 00852107 flw ft2,8(a0) + 80002ae4: 00c52683 lw a3,12(a0) + 80002ae8: 101071c3 fmadd.s ft3,ft0,ft1,ft2 + 80002aec: e0018553 fmv.x.w a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00000613 li a2,0 + 80002af8: 24d51463 bne a0,a3,80002d40 + 80002afc: 24c59263 bne a1,a2,80002d40 + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00000517 auipc a0,0x0 + 80002b08: 50c50513 addi a0,a0,1292 # 80003010 + 80002b0c: 00052007 flw ft0,0(a0) + 80002b10: 00452087 flw ft1,4(a0) + 80002b14: 00852107 flw ft2,8(a0) + 80002b18: 00c52683 lw a3,12(a0) + 80002b1c: 101071c3 fmadd.s ft3,ft0,ft1,ft2 + 80002b20: e0018553 fmv.x.w a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00100613 li a2,1 + 80002b2c: 20d51a63 bne a0,a3,80002d40 + 80002b30: 20c59863 bne a1,a2,80002d40 + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00000517 auipc a0,0x0 + 80002b3c: 4e850513 addi a0,a0,1256 # 80003020 + 80002b40: 00052007 flw ft0,0(a0) + 80002b44: 00452087 flw ft1,4(a0) + 80002b48: 00852107 flw ft2,8(a0) + 80002b4c: 00c52683 lw a3,12(a0) + 80002b50: 101071c3 fmadd.s ft3,ft0,ft1,ft2 + 80002b54: e0018553 fmv.x.w a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00000613 li a2,0 + 80002b60: 1ed51063 bne a0,a3,80002d40 + 80002b64: 1cc59e63 bne a1,a2,80002d40 + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00000517 auipc a0,0x0 + 80002b70: 4c450513 addi a0,a0,1220 # 80003030 + 80002b74: 00052007 flw ft0,0(a0) + 80002b78: 00452087 flw ft1,4(a0) + 80002b7c: 00852107 flw ft2,8(a0) + 80002b80: 00c52683 lw a3,12(a0) + 80002b84: 101071cf fnmadd.s ft3,ft0,ft1,ft2 + 80002b88: e0018553 fmv.x.w a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00000613 li a2,0 + 80002b94: 1ad51663 bne a0,a3,80002d40 + 80002b98: 1ac59463 bne a1,a2,80002d40 + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00000517 auipc a0,0x0 + 80002ba4: 4a050513 addi a0,a0,1184 # 80003040 + 80002ba8: 00052007 flw ft0,0(a0) + 80002bac: 00452087 flw ft1,4(a0) + 80002bb0: 00852107 flw ft2,8(a0) + 80002bb4: 00c52683 lw a3,12(a0) + 80002bb8: 101071cf fnmadd.s ft3,ft0,ft1,ft2 + 80002bbc: e0018553 fmv.x.w a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00100613 li a2,1 + 80002bc8: 16d51c63 bne a0,a3,80002d40 + 80002bcc: 16c59a63 bne a1,a2,80002d40 + +0000000080002bd0 : + 80002bd0: 00700193 li gp,7 + 80002bd4: 00000517 auipc a0,0x0 + 80002bd8: 47c50513 addi a0,a0,1148 # 80003050 + 80002bdc: 00052007 flw ft0,0(a0) + 80002be0: 00452087 flw ft1,4(a0) + 80002be4: 00852107 flw ft2,8(a0) + 80002be8: 00c52683 lw a3,12(a0) + 80002bec: 101071cf fnmadd.s ft3,ft0,ft1,ft2 + 80002bf0: e0018553 fmv.x.w a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 00000613 li a2,0 + 80002bfc: 14d51263 bne a0,a3,80002d40 + 80002c00: 14c59063 bne a1,a2,80002d40 + +0000000080002c04 : + 80002c04: 00800193 li gp,8 + 80002c08: 00000517 auipc a0,0x0 + 80002c0c: 45850513 addi a0,a0,1112 # 80003060 + 80002c10: 00052007 flw ft0,0(a0) + 80002c14: 00452087 flw ft1,4(a0) + 80002c18: 00852107 flw ft2,8(a0) + 80002c1c: 00c52683 lw a3,12(a0) + 80002c20: 101071c7 fmsub.s ft3,ft0,ft1,ft2 + 80002c24: e0018553 fmv.x.w a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00000613 li a2,0 + 80002c30: 10d51863 bne a0,a3,80002d40 + 80002c34: 10c59663 bne a1,a2,80002d40 + +0000000080002c38 : + 80002c38: 00900193 li gp,9 + 80002c3c: 00000517 auipc a0,0x0 + 80002c40: 43450513 addi a0,a0,1076 # 80003070 + 80002c44: 00052007 flw ft0,0(a0) + 80002c48: 00452087 flw ft1,4(a0) + 80002c4c: 00852107 flw ft2,8(a0) + 80002c50: 00c52683 lw a3,12(a0) + 80002c54: 101071c7 fmsub.s ft3,ft0,ft1,ft2 + 80002c58: e0018553 fmv.x.w a0,ft3 + 80002c5c: 001015f3 fsflags a1,zero + 80002c60: 00100613 li a2,1 + 80002c64: 0cd51e63 bne a0,a3,80002d40 + 80002c68: 0cc59c63 bne a1,a2,80002d40 + +0000000080002c6c : + 80002c6c: 00a00193 li gp,10 + 80002c70: 00000517 auipc a0,0x0 + 80002c74: 41050513 addi a0,a0,1040 # 80003080 + 80002c78: 00052007 flw ft0,0(a0) + 80002c7c: 00452087 flw ft1,4(a0) + 80002c80: 00852107 flw ft2,8(a0) + 80002c84: 00c52683 lw a3,12(a0) + 80002c88: 101071c7 fmsub.s ft3,ft0,ft1,ft2 + 80002c8c: e0018553 fmv.x.w a0,ft3 + 80002c90: 001015f3 fsflags a1,zero + 80002c94: 00000613 li a2,0 + 80002c98: 0ad51463 bne a0,a3,80002d40 + 80002c9c: 0ac59263 bne a1,a2,80002d40 + +0000000080002ca0 : + 80002ca0: 00b00193 li gp,11 + 80002ca4: 00000517 auipc a0,0x0 + 80002ca8: 3ec50513 addi a0,a0,1004 # 80003090 + 80002cac: 00052007 flw ft0,0(a0) + 80002cb0: 00452087 flw ft1,4(a0) + 80002cb4: 00852107 flw ft2,8(a0) + 80002cb8: 00c52683 lw a3,12(a0) + 80002cbc: 101071cb fnmsub.s ft3,ft0,ft1,ft2 + 80002cc0: e0018553 fmv.x.w a0,ft3 + 80002cc4: 001015f3 fsflags a1,zero + 80002cc8: 00000613 li a2,0 + 80002ccc: 06d51a63 bne a0,a3,80002d40 + 80002cd0: 06c59863 bne a1,a2,80002d40 + +0000000080002cd4 : + 80002cd4: 00c00193 li gp,12 + 80002cd8: 00000517 auipc a0,0x0 + 80002cdc: 3c850513 addi a0,a0,968 # 800030a0 + 80002ce0: 00052007 flw ft0,0(a0) + 80002ce4: 00452087 flw ft1,4(a0) + 80002ce8: 00852107 flw ft2,8(a0) + 80002cec: 00c52683 lw a3,12(a0) + 80002cf0: 101071cb fnmsub.s ft3,ft0,ft1,ft2 + 80002cf4: e0018553 fmv.x.w a0,ft3 + 80002cf8: 001015f3 fsflags a1,zero + 80002cfc: 00100613 li a2,1 + 80002d00: 04d51063 bne a0,a3,80002d40 + 80002d04: 02c59e63 bne a1,a2,80002d40 + +0000000080002d08 : + 80002d08: 00d00193 li gp,13 + 80002d0c: 00000517 auipc a0,0x0 + 80002d10: 3a450513 addi a0,a0,932 # 800030b0 + 80002d14: 00052007 flw ft0,0(a0) + 80002d18: 00452087 flw ft1,4(a0) + 80002d1c: 00852107 flw ft2,8(a0) + 80002d20: 00c52683 lw a3,12(a0) + 80002d24: 101071cb fnmsub.s ft3,ft0,ft1,ft2 + 80002d28: e0018553 fmv.x.w a0,ft3 + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 00000613 li a2,0 + 80002d34: 00d51663 bne a0,a3,80002d40 + 80002d38: 00c59463 bne a1,a2,80002d40 + 80002d3c: 00301a63 bne zero,gp,80002d50 + +0000000080002d40 : + 80002d40: 00119513 slli a0,gp,0x1 + 80002d44: 00050063 beqz a0,80002d44 + 80002d48: 00156513 ori a0,a0,1 + 80002d4c: 00000073 ecall + +0000000080002d50 : + 80002d50: 00100513 li a0,1 + 80002d54: 00000073 ecall + 80002d58: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: 3f80 fld fs0,56(a5) + 80003004: 0000 unimp + 80003006: 4020 lw s0,64(s0) + 80003008: 0000 unimp + 8000300a: 3f80 fld fs0,56(a5) + 8000300c: 0000 unimp + 8000300e: 4060 lw s0,68(s0) + +0000000080003010 : + 80003010: 0000 unimp + 80003012: bf80 fsd fs0,56(a5) + 80003014: c49a6333 0xc49a6333 + 80003018: cccd beqz s1,800030d2 + 8000301a: 3f8c fld fa1,56(a5) + 8000301c: 8666 mv a2,s9 + 8000301e: 449a lw s1,132(sp) + +0000000080003020 : + 80003020: 0000 unimp + 80003022: 4000 lw s0,0(s0) + 80003024: 0000 unimp + 80003026: c0a0 sw s0,64(s1) + 80003028: 0000 unimp + 8000302a: c000 sw s0,0(s0) + 8000302c: 0000 unimp + 8000302e: c140 sw s0,4(a0) + +0000000080003030 : + 80003030: 0000 unimp + 80003032: 3f80 fld fs0,56(a5) + 80003034: 0000 unimp + 80003036: 4020 lw s0,64(s0) + 80003038: 0000 unimp + 8000303a: 3f80 fld fs0,56(a5) + 8000303c: 0000 unimp + 8000303e: c060 sw s0,68(s0) + +0000000080003040 : + 80003040: 0000 unimp + 80003042: bf80 fsd fs0,56(a5) + 80003044: c49a6333 0xc49a6333 + 80003048: cccd beqz s1,80003102 + 8000304a: 3f8c fld fa1,56(a5) + 8000304c: 8666 mv a2,s9 + 8000304e: c49a sw t1,72(sp) + +0000000080003050 : + 80003050: 0000 unimp + 80003052: 4000 lw s0,0(s0) + 80003054: 0000 unimp + 80003056: c0a0 sw s0,64(s1) + 80003058: 0000 unimp + 8000305a: c000 sw s0,0(s0) + 8000305c: 0000 unimp + 8000305e: 4140 lw s0,4(a0) + +0000000080003060 : + 80003060: 0000 unimp + 80003062: 3f80 fld fs0,56(a5) + 80003064: 0000 unimp + 80003066: 4020 lw s0,64(s0) + 80003068: 0000 unimp + 8000306a: 3f80 fld fs0,56(a5) + 8000306c: 0000 unimp + 8000306e: 3fc0 fld fs0,184(a5) + +0000000080003070 : + 80003070: 0000 unimp + 80003072: bf80 fsd fs0,56(a5) + 80003074: c49a6333 0xc49a6333 + 80003078: cccd beqz s1,80003132 + 8000307a: 3f8c fld fa1,56(a5) + 8000307c: 4000 lw s0,0(s0) + 8000307e: 449a lw s1,132(sp) + +0000000080003080 : + 80003080: 0000 unimp + 80003082: 4000 lw s0,0(s0) + 80003084: 0000 unimp + 80003086: c0a0 sw s0,64(s1) + 80003088: 0000 unimp + 8000308a: c000 sw s0,0(s0) + 8000308c: 0000 unimp + 8000308e: c100 sw s0,0(a0) + +0000000080003090 : + 80003090: 0000 unimp + 80003092: 3f80 fld fs0,56(a5) + 80003094: 0000 unimp + 80003096: 4020 lw s0,64(s0) + 80003098: 0000 unimp + 8000309a: 3f80 fld fs0,56(a5) + 8000309c: 0000 unimp + 8000309e: bfc0 fsd fs0,184(a5) + +00000000800030a0 : + 800030a0: 0000 unimp + 800030a2: bf80 fsd fs0,56(a5) + 800030a4: c49a6333 0xc49a6333 + 800030a8: cccd beqz s1,80003162 + 800030aa: 3f8c fld fa1,56(a5) + 800030ac: 4000 lw s0,0(s0) + 800030ae: c49a sw t1,72(sp) + +00000000800030b0 : + 800030b0: 0000 unimp + 800030b2: 4000 lw s0,0(s0) + 800030b4: 0000 unimp + 800030b6: c0a0 sw s0,64(s1) + 800030b8: 0000 unimp + 800030ba: c000 sw s0,0(s0) + 800030bc: 0000 unimp + 800030be: 4100 lw s0,0(a0) diff --git a/Tests/isa/rv64uf-v-fmin b/Tests/isa/rv64uf-v-fmin new file mode 100644 index 0000000..31863fe Binary files /dev/null and b/Tests/isa/rv64uf-v-fmin differ diff --git a/Tests/isa/rv64uf-v-fmin.dump b/Tests/isa/rv64uf-v-fmin.dump new file mode 100644 index 0000000..d94cd82 --- /dev/null +++ b/Tests/isa/rv64uf-v-fmin.dump @@ -0,0 +1,1278 @@ + +rv64uf-v-fmin: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: a4068693 addi a3,a3,-1472 # 80002e98 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: a7460613 addi a2,a2,-1420 # 80002f28 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: a3c60613 addi a2,a2,-1476 # 80002f40 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 98c68693 addi a3,a3,-1652 # 80002ee0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 9a868693 addi a3,a3,-1624 # 80003018 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 92860613 addi a2,a2,-1752 # 80002ff0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 85c68693 addi a3,a3,-1956 # 80003048 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 77c68693 addi a3,a3,1916 # 80002fb8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 70c68693 addi a3,a3,1804 # 80002f80 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 01100793 li a5,17 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a65b7b7 lui a5,0xa65b + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 96c78793 addi a5,a5,-1684 # a65a96c <_start-0x759a5694> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00200193 li gp,2 + 80002ad0: 00001517 auipc a0,0x1 + 80002ad4: 53050513 addi a0,a0,1328 # 80004000 + 80002ad8: 00052007 flw ft0,0(a0) + 80002adc: 00452087 flw ft1,4(a0) + 80002ae0: 00852107 flw ft2,8(a0) + 80002ae4: 00c52683 lw a3,12(a0) + 80002ae8: 281001d3 fmin.s ft3,ft0,ft1 + 80002aec: e0018553 fmv.x.w a0,ft3 + 80002af0: 001015f3 fsflags a1,zero + 80002af4: 00000613 li a2,0 + 80002af8: 38d51063 bne a0,a3,80002e78 + 80002afc: 36c59e63 bne a1,a2,80002e78 + +0000000080002b00 : + 80002b00: 00300193 li gp,3 + 80002b04: 00001517 auipc a0,0x1 + 80002b08: 50c50513 addi a0,a0,1292 # 80004010 + 80002b0c: 00052007 flw ft0,0(a0) + 80002b10: 00452087 flw ft1,4(a0) + 80002b14: 00852107 flw ft2,8(a0) + 80002b18: 00c52683 lw a3,12(a0) + 80002b1c: 281001d3 fmin.s ft3,ft0,ft1 + 80002b20: e0018553 fmv.x.w a0,ft3 + 80002b24: 001015f3 fsflags a1,zero + 80002b28: 00000613 li a2,0 + 80002b2c: 34d51663 bne a0,a3,80002e78 + 80002b30: 34c59463 bne a1,a2,80002e78 + +0000000080002b34 : + 80002b34: 00400193 li gp,4 + 80002b38: 00001517 auipc a0,0x1 + 80002b3c: 4e850513 addi a0,a0,1256 # 80004020 + 80002b40: 00052007 flw ft0,0(a0) + 80002b44: 00452087 flw ft1,4(a0) + 80002b48: 00852107 flw ft2,8(a0) + 80002b4c: 00c52683 lw a3,12(a0) + 80002b50: 281001d3 fmin.s ft3,ft0,ft1 + 80002b54: e0018553 fmv.x.w a0,ft3 + 80002b58: 001015f3 fsflags a1,zero + 80002b5c: 00000613 li a2,0 + 80002b60: 30d51c63 bne a0,a3,80002e78 + 80002b64: 30c59a63 bne a1,a2,80002e78 + +0000000080002b68 : + 80002b68: 00500193 li gp,5 + 80002b6c: 00001517 auipc a0,0x1 + 80002b70: 4c450513 addi a0,a0,1220 # 80004030 + 80002b74: 00052007 flw ft0,0(a0) + 80002b78: 00452087 flw ft1,4(a0) + 80002b7c: 00852107 flw ft2,8(a0) + 80002b80: 00c52683 lw a3,12(a0) + 80002b84: 281001d3 fmin.s ft3,ft0,ft1 + 80002b88: e0018553 fmv.x.w a0,ft3 + 80002b8c: 001015f3 fsflags a1,zero + 80002b90: 00000613 li a2,0 + 80002b94: 2ed51263 bne a0,a3,80002e78 + 80002b98: 2ec59063 bne a1,a2,80002e78 + +0000000080002b9c : + 80002b9c: 00600193 li gp,6 + 80002ba0: 00001517 auipc a0,0x1 + 80002ba4: 4a050513 addi a0,a0,1184 # 80004040 + 80002ba8: 00052007 flw ft0,0(a0) + 80002bac: 00452087 flw ft1,4(a0) + 80002bb0: 00852107 flw ft2,8(a0) + 80002bb4: 00c52683 lw a3,12(a0) + 80002bb8: 281001d3 fmin.s ft3,ft0,ft1 + 80002bbc: e0018553 fmv.x.w a0,ft3 + 80002bc0: 001015f3 fsflags a1,zero + 80002bc4: 00000613 li a2,0 + 80002bc8: 2ad51863 bne a0,a3,80002e78 + 80002bcc: 2ac59663 bne a1,a2,80002e78 + +0000000080002bd0 : + 80002bd0: 00700193 li gp,7 + 80002bd4: 00001517 auipc a0,0x1 + 80002bd8: 47c50513 addi a0,a0,1148 # 80004050 + 80002bdc: 00052007 flw ft0,0(a0) + 80002be0: 00452087 flw ft1,4(a0) + 80002be4: 00852107 flw ft2,8(a0) + 80002be8: 00c52683 lw a3,12(a0) + 80002bec: 281001d3 fmin.s ft3,ft0,ft1 + 80002bf0: e0018553 fmv.x.w a0,ft3 + 80002bf4: 001015f3 fsflags a1,zero + 80002bf8: 00000613 li a2,0 + 80002bfc: 26d51e63 bne a0,a3,80002e78 + 80002c00: 26c59c63 bne a1,a2,80002e78 + +0000000080002c04 : + 80002c04: 00c00193 li gp,12 + 80002c08: 00001517 auipc a0,0x1 + 80002c0c: 45850513 addi a0,a0,1112 # 80004060 + 80002c10: 00052007 flw ft0,0(a0) + 80002c14: 00452087 flw ft1,4(a0) + 80002c18: 00852107 flw ft2,8(a0) + 80002c1c: 00c52683 lw a3,12(a0) + 80002c20: 281011d3 fmax.s ft3,ft0,ft1 + 80002c24: e0018553 fmv.x.w a0,ft3 + 80002c28: 001015f3 fsflags a1,zero + 80002c2c: 00000613 li a2,0 + 80002c30: 24d51463 bne a0,a3,80002e78 + 80002c34: 24c59263 bne a1,a2,80002e78 + +0000000080002c38 : + 80002c38: 00d00193 li gp,13 + 80002c3c: 00001517 auipc a0,0x1 + 80002c40: 43450513 addi a0,a0,1076 # 80004070 + 80002c44: 00052007 flw ft0,0(a0) + 80002c48: 00452087 flw ft1,4(a0) + 80002c4c: 00852107 flw ft2,8(a0) + 80002c50: 00c52683 lw a3,12(a0) + 80002c54: 281011d3 fmax.s ft3,ft0,ft1 + 80002c58: e0018553 fmv.x.w a0,ft3 + 80002c5c: 001015f3 fsflags a1,zero + 80002c60: 00000613 li a2,0 + 80002c64: 20d51a63 bne a0,a3,80002e78 + 80002c68: 20c59863 bne a1,a2,80002e78 + +0000000080002c6c : + 80002c6c: 00e00193 li gp,14 + 80002c70: 00001517 auipc a0,0x1 + 80002c74: 41050513 addi a0,a0,1040 # 80004080 + 80002c78: 00052007 flw ft0,0(a0) + 80002c7c: 00452087 flw ft1,4(a0) + 80002c80: 00852107 flw ft2,8(a0) + 80002c84: 00c52683 lw a3,12(a0) + 80002c88: 281011d3 fmax.s ft3,ft0,ft1 + 80002c8c: e0018553 fmv.x.w a0,ft3 + 80002c90: 001015f3 fsflags a1,zero + 80002c94: 00000613 li a2,0 + 80002c98: 1ed51063 bne a0,a3,80002e78 + 80002c9c: 1cc59e63 bne a1,a2,80002e78 + +0000000080002ca0 : + 80002ca0: 00f00193 li gp,15 + 80002ca4: 00001517 auipc a0,0x1 + 80002ca8: 3ec50513 addi a0,a0,1004 # 80004090 + 80002cac: 00052007 flw ft0,0(a0) + 80002cb0: 00452087 flw ft1,4(a0) + 80002cb4: 00852107 flw ft2,8(a0) + 80002cb8: 00c52683 lw a3,12(a0) + 80002cbc: 281011d3 fmax.s ft3,ft0,ft1 + 80002cc0: e0018553 fmv.x.w a0,ft3 + 80002cc4: 001015f3 fsflags a1,zero + 80002cc8: 00000613 li a2,0 + 80002ccc: 1ad51663 bne a0,a3,80002e78 + 80002cd0: 1ac59463 bne a1,a2,80002e78 + +0000000080002cd4 : + 80002cd4: 01000193 li gp,16 + 80002cd8: 00001517 auipc a0,0x1 + 80002cdc: 3c850513 addi a0,a0,968 # 800040a0 + 80002ce0: 00052007 flw ft0,0(a0) + 80002ce4: 00452087 flw ft1,4(a0) + 80002ce8: 00852107 flw ft2,8(a0) + 80002cec: 00c52683 lw a3,12(a0) + 80002cf0: 281011d3 fmax.s ft3,ft0,ft1 + 80002cf4: e0018553 fmv.x.w a0,ft3 + 80002cf8: 001015f3 fsflags a1,zero + 80002cfc: 00000613 li a2,0 + 80002d00: 16d51c63 bne a0,a3,80002e78 + 80002d04: 16c59a63 bne a1,a2,80002e78 + +0000000080002d08 : + 80002d08: 01100193 li gp,17 + 80002d0c: 00001517 auipc a0,0x1 + 80002d10: 3a450513 addi a0,a0,932 # 800040b0 + 80002d14: 00052007 flw ft0,0(a0) + 80002d18: 00452087 flw ft1,4(a0) + 80002d1c: 00852107 flw ft2,8(a0) + 80002d20: 00c52683 lw a3,12(a0) + 80002d24: 281011d3 fmax.s ft3,ft0,ft1 + 80002d28: e0018553 fmv.x.w a0,ft3 + 80002d2c: 001015f3 fsflags a1,zero + 80002d30: 00000613 li a2,0 + 80002d34: 14d51263 bne a0,a3,80002e78 + 80002d38: 14c59063 bne a1,a2,80002e78 + +0000000080002d3c : + 80002d3c: 01400193 li gp,20 + 80002d40: 00001517 auipc a0,0x1 + 80002d44: 38050513 addi a0,a0,896 # 800040c0 + 80002d48: 00052007 flw ft0,0(a0) + 80002d4c: 00452087 flw ft1,4(a0) + 80002d50: 00852107 flw ft2,8(a0) + 80002d54: 00c52683 lw a3,12(a0) + 80002d58: 281011d3 fmax.s ft3,ft0,ft1 + 80002d5c: e0018553 fmv.x.w a0,ft3 + 80002d60: 001015f3 fsflags a1,zero + 80002d64: 01000613 li a2,16 + 80002d68: 10d51863 bne a0,a3,80002e78 + 80002d6c: 10c59663 bne a1,a2,80002e78 + +0000000080002d70 : + 80002d70: 01500193 li gp,21 + 80002d74: 00001517 auipc a0,0x1 + 80002d78: 35c50513 addi a0,a0,860 # 800040d0 + 80002d7c: 00052007 flw ft0,0(a0) + 80002d80: 00452087 flw ft1,4(a0) + 80002d84: 00852107 flw ft2,8(a0) + 80002d88: 00c52683 lw a3,12(a0) + 80002d8c: 281011d3 fmax.s ft3,ft0,ft1 + 80002d90: e0018553 fmv.x.w a0,ft3 + 80002d94: 001015f3 fsflags a1,zero + 80002d98: 00000613 li a2,0 + 80002d9c: 0cd51e63 bne a0,a3,80002e78 + 80002da0: 0cc59c63 bne a1,a2,80002e78 + +0000000080002da4 : + 80002da4: 01e00193 li gp,30 + 80002da8: 00001517 auipc a0,0x1 + 80002dac: 33850513 addi a0,a0,824 # 800040e0 + 80002db0: 00052007 flw ft0,0(a0) + 80002db4: 00452087 flw ft1,4(a0) + 80002db8: 00852107 flw ft2,8(a0) + 80002dbc: 00c52683 lw a3,12(a0) + 80002dc0: 281001d3 fmin.s ft3,ft0,ft1 + 80002dc4: e0018553 fmv.x.w a0,ft3 + 80002dc8: 001015f3 fsflags a1,zero + 80002dcc: 00000613 li a2,0 + 80002dd0: 0ad51463 bne a0,a3,80002e78 + 80002dd4: 0ac59263 bne a1,a2,80002e78 + +0000000080002dd8 : + 80002dd8: 01f00193 li gp,31 + 80002ddc: 00001517 auipc a0,0x1 + 80002de0: 31450513 addi a0,a0,788 # 800040f0 + 80002de4: 00052007 flw ft0,0(a0) + 80002de8: 00452087 flw ft1,4(a0) + 80002dec: 00852107 flw ft2,8(a0) + 80002df0: 00c52683 lw a3,12(a0) + 80002df4: 281001d3 fmin.s ft3,ft0,ft1 + 80002df8: e0018553 fmv.x.w a0,ft3 + 80002dfc: 001015f3 fsflags a1,zero + 80002e00: 00000613 li a2,0 + 80002e04: 06d51a63 bne a0,a3,80002e78 + 80002e08: 06c59863 bne a1,a2,80002e78 + +0000000080002e0c : + 80002e0c: 02000193 li gp,32 + 80002e10: 00001517 auipc a0,0x1 + 80002e14: 2f050513 addi a0,a0,752 # 80004100 + 80002e18: 00052007 flw ft0,0(a0) + 80002e1c: 00452087 flw ft1,4(a0) + 80002e20: 00852107 flw ft2,8(a0) + 80002e24: 00c52683 lw a3,12(a0) + 80002e28: 281011d3 fmax.s ft3,ft0,ft1 + 80002e2c: e0018553 fmv.x.w a0,ft3 + 80002e30: 001015f3 fsflags a1,zero + 80002e34: 00000613 li a2,0 + 80002e38: 04d51063 bne a0,a3,80002e78 + 80002e3c: 02c59e63 bne a1,a2,80002e78 + +0000000080002e40 : + 80002e40: 02100193 li gp,33 + 80002e44: 00001517 auipc a0,0x1 + 80002e48: 2cc50513 addi a0,a0,716 # 80004110 + 80002e4c: 00052007 flw ft0,0(a0) + 80002e50: 00452087 flw ft1,4(a0) + 80002e54: 00852107 flw ft2,8(a0) + 80002e58: 00c52683 lw a3,12(a0) + 80002e5c: 281011d3 fmax.s ft3,ft0,ft1 + 80002e60: e0018553 fmv.x.w a0,ft3 + 80002e64: 001015f3 fsflags a1,zero + 80002e68: 00000613 li a2,0 + 80002e6c: 00d51663 bne a0,a3,80002e78 + 80002e70: 00c59463 bne a1,a2,80002e78 + 80002e74: 00301a63 bne zero,gp,80002e88 + +0000000080002e78 : + 80002e78: 00119513 slli a0,gp,0x1 + 80002e7c: 00050063 beqz a0,80002e7c + 80002e80: 00156513 ori a0,a0,1 + 80002e84: 00000073 ecall + +0000000080002e88 : + 80002e88: 00100513 li a0,1 + 80002e8c: 00000073 ecall + 80002e90: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: 0000 unimp + 80004002: 4020 lw s0,64(s0) + 80004004: 0000 unimp + 80004006: 3f80 fld fs0,56(a5) + 80004008: 0000 unimp + 8000400a: 0000 unimp + 8000400c: 0000 unimp + 8000400e: 3f80 fld fs0,56(a5) + +0000000080004010 : + 80004010: c49a6333 0xc49a6333 + 80004014: cccd beqz s1,800040ce + 80004016: 3f8c fld fa1,56(a5) + 80004018: 0000 unimp + 8000401a: 0000 unimp + 8000401c: c49a6333 0xc49a6333 + +0000000080004020 : + 80004020: cccd beqz s1,800040da + 80004022: 3f8c fld fa1,56(a5) + 80004024: c49a6333 0xc49a6333 + 80004028: 0000 unimp + 8000402a: 0000 unimp + 8000402c: c49a6333 0xc49a6333 + +0000000080004030 : + 80004030: ffff 0xffff + 80004032: 7fff 0x7fff + 80004034: c49a6333 0xc49a6333 + 80004038: 0000 unimp + 8000403a: 0000 unimp + 8000403c: c49a6333 0xc49a6333 + +0000000080004040 : + 80004040: 40490fdb 0x40490fdb + 80004044: 322bcc77 0x322bcc77 + 80004048: 0000 unimp + 8000404a: 0000 unimp + 8000404c: 322bcc77 0x322bcc77 + +0000000080004050 : + 80004050: 0000 unimp + 80004052: bf80 fsd fs0,56(a5) + 80004054: 0000 unimp + 80004056: c000 sw s0,0(s0) + 80004058: 0000 unimp + 8000405a: 0000 unimp + 8000405c: 0000 unimp + 8000405e: c000 sw s0,0(s0) + +0000000080004060 : + 80004060: 0000 unimp + 80004062: 4020 lw s0,64(s0) + 80004064: 0000 unimp + 80004066: 3f80 fld fs0,56(a5) + 80004068: 0000 unimp + 8000406a: 0000 unimp + 8000406c: 0000 unimp + 8000406e: 4020 lw s0,64(s0) + +0000000080004070 : + 80004070: c49a6333 0xc49a6333 + 80004074: cccd beqz s1,8000412e + 80004076: 3f8c fld fa1,56(a5) + 80004078: 0000 unimp + 8000407a: 0000 unimp + 8000407c: cccd beqz s1,80004136 + 8000407e: 3f8c fld fa1,56(a5) + +0000000080004080 : + 80004080: cccd beqz s1,8000413a + 80004082: 3f8c fld fa1,56(a5) + 80004084: c49a6333 0xc49a6333 + 80004088: 0000 unimp + 8000408a: 0000 unimp + 8000408c: cccd beqz s1,80004146 + 8000408e: 3f8c fld fa1,56(a5) + +0000000080004090 : + 80004090: ffff 0xffff + 80004092: 7fff 0x7fff + 80004094: c49a6333 0xc49a6333 + 80004098: 0000 unimp + 8000409a: 0000 unimp + 8000409c: c49a6333 0xc49a6333 + +00000000800040a0 : + 800040a0: 40490fdb 0x40490fdb + 800040a4: 322bcc77 0x322bcc77 + 800040a8: 0000 unimp + 800040aa: 0000 unimp + 800040ac: 40490fdb 0x40490fdb + +00000000800040b0 : + 800040b0: 0000 unimp + 800040b2: bf80 fsd fs0,56(a5) + 800040b4: 0000 unimp + 800040b6: c000 sw s0,0(s0) + 800040b8: 0000 unimp + 800040ba: 0000 unimp + 800040bc: 0000 unimp + 800040be: bf80 fsd fs0,56(a5) + +00000000800040c0 : + 800040c0: 0001 nop + 800040c2: 7f80 ld s0,56(a5) + 800040c4: 0000 unimp + 800040c6: 3f80 fld fs0,56(a5) + 800040c8: 0000 unimp + 800040ca: 0000 unimp + 800040cc: 0000 unimp + 800040ce: 3f80 fld fs0,56(a5) + +00000000800040d0 : + 800040d0: ffff 0xffff + 800040d2: 7fff 0x7fff + 800040d4: ffff 0xffff + 800040d6: 7fff 0x7fff + 800040d8: 0000 unimp + 800040da: 0000 unimp + 800040dc: 0000 unimp + 800040de: 7fc0 ld s0,184(a5) + +00000000800040e0 : + 800040e0: 0000 unimp + 800040e2: 8000 0x8000 + 800040e4: 0000 unimp + 800040e6: 0000 unimp + 800040e8: 0000 unimp + 800040ea: 0000 unimp + 800040ec: 0000 unimp + 800040ee: 8000 0x8000 + +00000000800040f0 : + 800040f0: 0000 unimp + 800040f2: 0000 unimp + 800040f4: 0000 unimp + 800040f6: 8000 0x8000 + 800040f8: 0000 unimp + 800040fa: 0000 unimp + 800040fc: 0000 unimp + 800040fe: 8000 0x8000 + +0000000080004100 : + 80004100: 0000 unimp + 80004102: 8000 0x8000 + 80004104: 0000 unimp + 80004106: 0000 unimp + 80004108: 0000 unimp + 8000410a: 0000 unimp + 8000410c: 0000 unimp + 8000410e: 0000 unimp + +0000000080004110 : + 80004110: 0000 unimp + 80004112: 0000 unimp + 80004114: 0000 unimp + 80004116: 8000 0x8000 + 80004118: 0000 unimp + 8000411a: 0000 unimp + 8000411c: 0000 unimp + 8000411e: 0000 unimp diff --git a/Tests/isa/rv64uf-v-ldst b/Tests/isa/rv64uf-v-ldst new file mode 100644 index 0000000..ef33cbd Binary files /dev/null and b/Tests/isa/rv64uf-v-ldst differ diff --git a/Tests/isa/rv64uf-v-ldst.dump b/Tests/isa/rv64uf-v-ldst.dump new file mode 100644 index 0000000..0fbb321 --- /dev/null +++ b/Tests/isa/rv64uf-v-ldst.dump @@ -0,0 +1,891 @@ + +rv64uf-v-ldst: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 70068693 addi a3,a3,1792 # 80002b58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 73460613 addi a2,a2,1844 # 80002be8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6fc60613 addi a2,a2,1788 # 80002c00 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 64c68693 addi a3,a3,1612 # 80002ba0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 66868693 addi a3,a3,1640 # 80002cd8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5e860613 addi a2,a2,1512 # 80002cb0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 51c68693 addi a3,a3,1308 # 80002d08 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 43c68693 addi a3,a3,1084 # 80002c78 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3cc68693 addi a3,a3,972 # 80002c40 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02700793 li a5,39 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a65b7b7 lui a5,0xa65b + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 12378793 addi a5,a5,291 # a65b123 <_start-0x759a4edd> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 00000597 auipc a1,0x0 + 80002ad0: 53458593 addi a1,a1,1332 # 80003000 + 80002ad4: 0045a087 flw ft1,4(a1) + 80002ad8: 0015aa27 fsw ft1,20(a1) + 80002adc: 0105b503 ld a0,16(a1) + 80002ae0: 00100e9b addiw t4,zero,1 + 80002ae4: 021e9e93 slli t4,t4,0x21 + 80002ae8: 007e8e93 addi t4,t4,7 + 80002aec: 00fe9e93 slli t4,t4,0xf + 80002af0: ab7e8e93 addi t4,t4,-1353 + 80002af4: 00ee9e93 slli t4,t4,0xe + 80002af8: eefe8e93 addi t4,t4,-273 + 80002afc: 00200193 li gp,2 + 80002b00: 03d51c63 bne a0,t4,80002b38 + +0000000080002b04 : + 80002b04: 00000597 auipc a1,0x0 + 80002b08: 4fc58593 addi a1,a1,1276 # 80003000 + 80002b0c: 0005a087 flw ft1,0(a1) + 80002b10: 0015ac27 fsw ft1,24(a1) + 80002b14: 0185b503 ld a0,24(a1) + 80002b18: 01338eb7 lui t4,0x1338 + 80002b1c: d01e8e9b addiw t4,t4,-767 + 80002b20: 00de9e93 slli t4,t4,0xd + 80002b24: b7fe8e93 addi t4,t4,-1153 # 1337b7f <_start-0x7ecc8481> + 80002b28: 017e9e93 slli t4,t4,0x17 + 80002b2c: 00300193 li gp,3 + 80002b30: 01d51463 bne a0,t4,80002b38 + 80002b34: 00301a63 bne zero,gp,80002b48 + +0000000080002b38 : + 80002b38: 00119513 slli a0,gp,0x1 + 80002b3c: 00050063 beqz a0,80002b3c + 80002b40: 00156513 ori a0,a0,1 + 80002b44: 00000073 ecall + +0000000080002b48 : + 80002b48: 00100513 li a0,1 + 80002b4c: 00000073 ecall + 80002b50: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: bf80 fsd fs0,56(a5) + 80003004: 0000 unimp + 80003006: 4000 lw s0,0(s0) + 80003008: 0000 unimp + 8000300a: 4040 lw s0,4(s0) + 8000300c: 0000 unimp + 8000300e: c080 sw s0,0(s1) + 80003010: deadbeef jal t4,7ffde5fa <_start-0x21a06> + 80003014: babe fsd fa5,368(sp) + 80003016: cafe sw t6,84(sp) + 80003018: 1dea slli s11,s11,0x3a + 8000301a: abad j 80003594 + 8000301c: d00d beqz s0,80002f3e + 8000301e: lui t1,0x1 diff --git a/Tests/isa/rv64uf-v-move b/Tests/isa/rv64uf-v-move new file mode 100644 index 0000000..22044c3 Binary files /dev/null and b/Tests/isa/rv64uf-v-move differ diff --git a/Tests/isa/rv64uf-v-move.dump b/Tests/isa/rv64uf-v-move.dump new file mode 100644 index 0000000..785be9e --- /dev/null +++ b/Tests/isa/rv64uf-v-move.dump @@ -0,0 +1,1055 @@ + +rv64uf-v-move: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 95068693 addi a3,a3,-1712 # 80002da8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 98460613 addi a2,a2,-1660 # 80002e38 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 94c60613 addi a2,a2,-1716 # 80002e50 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 89c68693 addi a3,a3,-1892 # 80002df0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8b868693 addi a3,a3,-1864 # 80002f28 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 83860613 addi a2,a2,-1992 # 80002f00 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 76c68693 addi a3,a3,1900 # 80002f58 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 68c68693 addi a3,a3,1676 # 80002ec8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 61c68693 addi a3,a3,1564 # 80002e90 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 03200793 li a5,50 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0e7eb7b7 lui a5,0xe7eb + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 05778793 addi a5,a5,87 # e7eb057 <_start-0x71814fa9> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + +0000000080002acc : + 80002acc: 0030d073 csrwi fcsr,1 + 80002ad0: 00001537 lui a0,0x1 + 80002ad4: 2345051b addiw a0,a0,564 + 80002ad8: 003515f3 fssr a1,a0 + 80002adc: 00100e93 li t4,1 + 80002ae0: 00200193 li gp,2 + 80002ae4: 2bd59463 bne a1,t4,80002d8c + +0000000080002ae8 : + 80002ae8: 00302573 frsr a0 + 80002aec: 03400e93 li t4,52 + 80002af0: 00300193 li gp,3 + 80002af4: 29d51c63 bne a0,t4,80002d8c + +0000000080002af8 : + 80002af8: 00102573 frflags a0 + 80002afc: 01400e93 li t4,20 + 80002b00: 00400193 li gp,4 + 80002b04: 29d51463 bne a0,t4,80002d8c + +0000000080002b08 : + 80002b08: 00215573 fsrmi a0,2 + 80002b0c: 00100e93 li t4,1 + 80002b10: 00500193 li gp,5 + 80002b14: 27d51c63 bne a0,t4,80002d8c + +0000000080002b18 : + 80002b18: 00302573 frsr a0 + 80002b1c: 05400e93 li t4,84 + 80002b20: 00600193 li gp,6 + 80002b24: 27d51463 bne a0,t4,80002d8c + +0000000080002b28 : + 80002b28: 00127573 csrrci a0,fflags,4 + 80002b2c: 01400e93 li t4,20 + 80002b30: 00700193 li gp,7 + 80002b34: 25d51c63 bne a0,t4,80002d8c + +0000000080002b38 : + 80002b38: 00302573 frsr a0 + 80002b3c: 05000e93 li t4,80 + 80002b40: 00800193 li gp,8 + 80002b44: 25d51463 bne a0,t4,80002d8c + +0000000080002b48 : + 80002b48: 123455b7 lui a1,0x12345 + 80002b4c: 6785859b addiw a1,a1,1656 + 80002b50: 00000613 li a2,0 + 80002b54: f00580d3 fmv.w.x ft1,a1 + 80002b58: f0060153 fmv.w.x ft2,a2 + 80002b5c: 20208053 fsgnj.s ft0,ft1,ft2 + 80002b60: e0000553 fmv.x.w a0,ft0 + 80002b64: 12345eb7 lui t4,0x12345 + 80002b68: 678e8e9b addiw t4,t4,1656 + 80002b6c: 00a00193 li gp,10 + 80002b70: 21d51e63 bne a0,t4,80002d8c + +0000000080002b74 : + 80002b74: 123455b7 lui a1,0x12345 + 80002b78: 6785859b addiw a1,a1,1656 + 80002b7c: fff00613 li a2,-1 + 80002b80: f00580d3 fmv.w.x ft1,a1 + 80002b84: f0060153 fmv.w.x ft2,a2 + 80002b88: 20208053 fsgnj.s ft0,ft1,ft2 + 80002b8c: e0000553 fmv.x.w a0,ft0 + 80002b90: 92345eb7 lui t4,0x92345 + 80002b94: 678e8e9b addiw t4,t4,1656 + 80002b98: 00b00193 li gp,11 + 80002b9c: 1fd51863 bne a0,t4,80002d8c + +0000000080002ba0 : + 80002ba0: 000925b7 lui a1,0x92 + 80002ba4: 3455859b addiw a1,a1,837 + 80002ba8: 00c59593 slli a1,a1,0xc + 80002bac: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 80002bb0: 00000613 li a2,0 + 80002bb4: f00580d3 fmv.w.x ft1,a1 + 80002bb8: f0060153 fmv.w.x ft2,a2 + 80002bbc: 20208053 fsgnj.s ft0,ft1,ft2 + 80002bc0: e0000553 fmv.x.w a0,ft0 + 80002bc4: 12345eb7 lui t4,0x12345 + 80002bc8: 678e8e9b addiw t4,t4,1656 + 80002bcc: 00c00193 li gp,12 + 80002bd0: 1bd51e63 bne a0,t4,80002d8c + +0000000080002bd4 : + 80002bd4: 000925b7 lui a1,0x92 + 80002bd8: 3455859b addiw a1,a1,837 + 80002bdc: 00c59593 slli a1,a1,0xc + 80002be0: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 80002be4: fff00613 li a2,-1 + 80002be8: f00580d3 fmv.w.x ft1,a1 + 80002bec: f0060153 fmv.w.x ft2,a2 + 80002bf0: 20208053 fsgnj.s ft0,ft1,ft2 + 80002bf4: e0000553 fmv.x.w a0,ft0 + 80002bf8: 92345eb7 lui t4,0x92345 + 80002bfc: 678e8e9b addiw t4,t4,1656 + 80002c00: 00d00193 li gp,13 + 80002c04: 19d51463 bne a0,t4,80002d8c + +0000000080002c08 : + 80002c08: 123455b7 lui a1,0x12345 + 80002c0c: 6785859b addiw a1,a1,1656 + 80002c10: 00000613 li a2,0 + 80002c14: f00580d3 fmv.w.x ft1,a1 + 80002c18: f0060153 fmv.w.x ft2,a2 + 80002c1c: 20209053 fsgnjn.s ft0,ft1,ft2 + 80002c20: e0000553 fmv.x.w a0,ft0 + 80002c24: 92345eb7 lui t4,0x92345 + 80002c28: 678e8e9b addiw t4,t4,1656 + 80002c2c: 01400193 li gp,20 + 80002c30: 15d51e63 bne a0,t4,80002d8c + +0000000080002c34 : + 80002c34: 123455b7 lui a1,0x12345 + 80002c38: 6785859b addiw a1,a1,1656 + 80002c3c: fff00613 li a2,-1 + 80002c40: f00580d3 fmv.w.x ft1,a1 + 80002c44: f0060153 fmv.w.x ft2,a2 + 80002c48: 20209053 fsgnjn.s ft0,ft1,ft2 + 80002c4c: e0000553 fmv.x.w a0,ft0 + 80002c50: 12345eb7 lui t4,0x12345 + 80002c54: 678e8e9b addiw t4,t4,1656 + 80002c58: 01500193 li gp,21 + 80002c5c: 13d51863 bne a0,t4,80002d8c + +0000000080002c60 : + 80002c60: 000925b7 lui a1,0x92 + 80002c64: 3455859b addiw a1,a1,837 + 80002c68: 00c59593 slli a1,a1,0xc + 80002c6c: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 80002c70: 00000613 li a2,0 + 80002c74: f00580d3 fmv.w.x ft1,a1 + 80002c78: f0060153 fmv.w.x ft2,a2 + 80002c7c: 20209053 fsgnjn.s ft0,ft1,ft2 + 80002c80: e0000553 fmv.x.w a0,ft0 + 80002c84: 92345eb7 lui t4,0x92345 + 80002c88: 678e8e9b addiw t4,t4,1656 + 80002c8c: 01600193 li gp,22 + 80002c90: 0fd51e63 bne a0,t4,80002d8c + +0000000080002c94 : + 80002c94: 000925b7 lui a1,0x92 + 80002c98: 3455859b addiw a1,a1,837 + 80002c9c: 00c59593 slli a1,a1,0xc + 80002ca0: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 80002ca4: fff00613 li a2,-1 + 80002ca8: f00580d3 fmv.w.x ft1,a1 + 80002cac: f0060153 fmv.w.x ft2,a2 + 80002cb0: 20209053 fsgnjn.s ft0,ft1,ft2 + 80002cb4: e0000553 fmv.x.w a0,ft0 + 80002cb8: 12345eb7 lui t4,0x12345 + 80002cbc: 678e8e9b addiw t4,t4,1656 + 80002cc0: 01700193 li gp,23 + 80002cc4: 0dd51463 bne a0,t4,80002d8c + +0000000080002cc8 : + 80002cc8: 123455b7 lui a1,0x12345 + 80002ccc: 6785859b addiw a1,a1,1656 + 80002cd0: 00000613 li a2,0 + 80002cd4: f00580d3 fmv.w.x ft1,a1 + 80002cd8: f0060153 fmv.w.x ft2,a2 + 80002cdc: 2020a053 fsgnjx.s ft0,ft1,ft2 + 80002ce0: e0000553 fmv.x.w a0,ft0 + 80002ce4: 12345eb7 lui t4,0x12345 + 80002ce8: 678e8e9b addiw t4,t4,1656 + 80002cec: 01e00193 li gp,30 + 80002cf0: 09d51e63 bne a0,t4,80002d8c + +0000000080002cf4 : + 80002cf4: 123455b7 lui a1,0x12345 + 80002cf8: 6785859b addiw a1,a1,1656 + 80002cfc: fff00613 li a2,-1 + 80002d00: f00580d3 fmv.w.x ft1,a1 + 80002d04: f0060153 fmv.w.x ft2,a2 + 80002d08: 2020a053 fsgnjx.s ft0,ft1,ft2 + 80002d0c: e0000553 fmv.x.w a0,ft0 + 80002d10: 92345eb7 lui t4,0x92345 + 80002d14: 678e8e9b addiw t4,t4,1656 + 80002d18: 01f00193 li gp,31 + 80002d1c: 07d51863 bne a0,t4,80002d8c + +0000000080002d20 : + 80002d20: 000925b7 lui a1,0x92 + 80002d24: 3455859b addiw a1,a1,837 + 80002d28: 00c59593 slli a1,a1,0xc + 80002d2c: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 80002d30: 00000613 li a2,0 + 80002d34: f00580d3 fmv.w.x ft1,a1 + 80002d38: f0060153 fmv.w.x ft2,a2 + 80002d3c: 2020a053 fsgnjx.s ft0,ft1,ft2 + 80002d40: e0000553 fmv.x.w a0,ft0 + 80002d44: 92345eb7 lui t4,0x92345 + 80002d48: 678e8e9b addiw t4,t4,1656 + 80002d4c: 02000193 li gp,32 + 80002d50: 03d51e63 bne a0,t4,80002d8c + +0000000080002d54 : + 80002d54: 000925b7 lui a1,0x92 + 80002d58: 3455859b addiw a1,a1,837 + 80002d5c: 00c59593 slli a1,a1,0xc + 80002d60: 67858593 addi a1,a1,1656 # 92678 <_start-0x7ff6d988> + 80002d64: fff00613 li a2,-1 + 80002d68: f00580d3 fmv.w.x ft1,a1 + 80002d6c: f0060153 fmv.w.x ft2,a2 + 80002d70: 2020a053 fsgnjx.s ft0,ft1,ft2 + 80002d74: e0000553 fmv.x.w a0,ft0 + 80002d78: 12345eb7 lui t4,0x12345 + 80002d7c: 678e8e9b addiw t4,t4,1656 + 80002d80: 02100193 li gp,33 + 80002d84: 01d51463 bne a0,t4,80002d8c + 80002d88: 00301a63 bne zero,gp,80002d9c + +0000000080002d8c : + 80002d8c: 00119513 slli a0,gp,0x1 + 80002d90: 00050063 beqz a0,80002d90 + 80002d94: 00156513 ori a0,a0,1 + 80002d98: 00000073 ecall + +0000000080002d9c : + 80002d9c: 00100513 li a0,1 + 80002da0: 00000073 ecall + 80002da4: c0001073 unimp diff --git a/Tests/isa/rv64uf-v-recoding b/Tests/isa/rv64uf-v-recoding new file mode 100644 index 0000000..996a493 Binary files /dev/null and b/Tests/isa/rv64uf-v-recoding differ diff --git a/Tests/isa/rv64uf-v-recoding.dump b/Tests/isa/rv64uf-v-recoding.dump new file mode 100644 index 0000000..ed57df8 --- /dev/null +++ b/Tests/isa/rv64uf-v-recoding.dump @@ -0,0 +1,897 @@ + +rv64uf-v-recoding: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 71868693 addi a3,a3,1816 # 80002b70 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 74c60613 addi a2,a2,1868 # 80002c00 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 71460613 addi a2,a2,1812 # 80002c18 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 66468693 addi a3,a3,1636 # 80002bb8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 68068693 addi a3,a3,1664 # 80002cf0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 60060613 addi a2,a2,1536 # 80002cc8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 53468693 addi a3,a3,1332 # 80002d20 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 45468693 addi a3,a3,1108 # 80002c90 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3e468693 addi a3,a3,996 # 80002c58 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00d00793 li a5,13 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a1d57b7 lui a5,0xa1d5 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 90278793 addi a5,a5,-1790 # a1d4902 <_start-0x75e2b6fe> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00301073 fssr zero + 80002acc: 00000517 auipc a0,0x0 + 80002ad0: 53452007 flw ft0,1332(a0) # 80003000 + 80002ad4: 00000517 auipc a0,0x0 + 80002ad8: 53052087 flw ft1,1328(a0) # 80003004 + 80002adc: 1000f0d3 fmul.s ft1,ft1,ft0 + +0000000080002ae0 : + 80002ae0: a0102553 feq.s a0,ft0,ft1 + 80002ae4: 00100e93 li t4,1 + 80002ae8: 00200193 li gp,2 + 80002aec: 07d51463 bne a0,t4,80002b54 + +0000000080002af0 : + 80002af0: a0100553 fle.s a0,ft0,ft1 + 80002af4: 00100e93 li t4,1 + 80002af8: 00300193 li gp,3 + 80002afc: 05d51c63 bne a0,t4,80002b54 + +0000000080002b00 : + 80002b00: a0101553 flt.s a0,ft0,ft1 + 80002b04: 00000e93 li t4,0 + 80002b08: 00400193 li gp,4 + 80002b0c: 05d51463 bne a0,t4,80002b54 + 80002b10: d0007053 fcvt.s.w ft0,zero + 80002b14: 00100513 li a0,1 + 80002b18: d00570d3 fcvt.s.w ft1,a0 + 80002b1c: 1000f0d3 fmul.s ft1,ft1,ft0 + +0000000080002b20 : + 80002b20: a0102553 feq.s a0,ft0,ft1 + 80002b24: 00100e93 li t4,1 + 80002b28: 00500193 li gp,5 + 80002b2c: 03d51463 bne a0,t4,80002b54 + +0000000080002b30 : + 80002b30: a0100553 fle.s a0,ft0,ft1 + 80002b34: 00100e93 li t4,1 + 80002b38: 00600193 li gp,6 + 80002b3c: 01d51c63 bne a0,t4,80002b54 + +0000000080002b40 : + 80002b40: a0101553 flt.s a0,ft0,ft1 + 80002b44: 00000e93 li t4,0 + 80002b48: 00700193 li gp,7 + 80002b4c: 01d51463 bne a0,t4,80002b54 + 80002b50: 00301a63 bne zero,gp,80002b64 + +0000000080002b54 : + 80002b54: 00119513 slli a0,gp,0x1 + 80002b58: 00050063 beqz a0,80002b58 + 80002b5c: 00156513 ori a0,a0,1 + 80002b60: 00000073 ecall + +0000000080002b64 : + 80002b64: 00100513 li a0,1 + 80002b68: 00000073 ecall + 80002b6c: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0000 unimp + 80003002: ff80 sd s0,56(a5) + +0000000080003004 : + 80003004: 0000 unimp + 80003006: 4040 lw s0,4(s0) diff --git a/Tests/isa/rv64ui-p-add b/Tests/isa/rv64ui-p-add new file mode 100644 index 0000000..8f13bdc Binary files /dev/null and b/Tests/isa/rv64ui-p-add differ diff --git a/Tests/isa/rv64ui-p-add.dump b/Tests/isa/rv64ui-p-add.dump new file mode 100644 index 0000000..83e5ced --- /dev/null +++ b/Tests/isa/rv64ui-p-add.dump @@ -0,0 +1,506 @@ + +rv64ui-p-add: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 00208f33 add t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 4fdf1063 bne t5,t4,800005f0 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 00208f33 add t5,ra,sp + 80000120: 00200e93 li t4,2 + 80000124: 00300193 li gp,3 + 80000128: 4ddf1463 bne t5,t4,800005f0 + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 00208f33 add t5,ra,sp + 80000138: 00a00e93 li t4,10 + 8000013c: 00400193 li gp,4 + 80000140: 4bdf1863 bne t5,t4,800005f0 + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 00208f33 add t5,ra,sp + 80000150: ffff8eb7 lui t4,0xffff8 + 80000154: 00500193 li gp,5 + 80000158: 49df1c63 bne t5,t4,800005f0 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 00208f33 add t5,ra,sp + 80000168: 80000eb7 lui t4,0x80000 + 8000016c: 00600193 li gp,6 + 80000170: 49df1063 bne t5,t4,800005f0 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 00208f33 add t5,ra,sp + 80000180: ffff0eb7 lui t4,0xffff0 + 80000184: fffe8e9b addiw t4,t4,-1 + 80000188: 00fe9e93 slli t4,t4,0xf + 8000018c: 00700193 li gp,7 + 80000190: 47df1063 bne t5,t4,800005f0 + +0000000080000194 : + 80000194: 00000093 li ra,0 + 80000198: 00008137 lui sp,0x8 + 8000019c: fff1011b addiw sp,sp,-1 + 800001a0: 00208f33 add t5,ra,sp + 800001a4: 00008eb7 lui t4,0x8 + 800001a8: fffe8e9b addiw t4,t4,-1 + 800001ac: 00800193 li gp,8 + 800001b0: 45df1063 bne t5,t4,800005f0 + +00000000800001b4 : + 800001b4: 800000b7 lui ra,0x80000 + 800001b8: fff0809b addiw ra,ra,-1 + 800001bc: 00000113 li sp,0 + 800001c0: 00208f33 add t5,ra,sp + 800001c4: 80000eb7 lui t4,0x80000 + 800001c8: fffe8e9b addiw t4,t4,-1 + 800001cc: 00900193 li gp,9 + 800001d0: 43df1063 bne t5,t4,800005f0 + +00000000800001d4 : + 800001d4: 800000b7 lui ra,0x80000 + 800001d8: fff0809b addiw ra,ra,-1 + 800001dc: 00008137 lui sp,0x8 + 800001e0: fff1011b addiw sp,sp,-1 + 800001e4: 00208f33 add t5,ra,sp + 800001e8: 00010eb7 lui t4,0x10 + 800001ec: 001e8e9b addiw t4,t4,1 + 800001f0: 00fe9e93 slli t4,t4,0xf + 800001f4: ffee8e93 addi t4,t4,-2 # fffe <_start-0x7fff0002> + 800001f8: 00a00193 li gp,10 + 800001fc: 3fdf1a63 bne t5,t4,800005f0 + +0000000080000200 : + 80000200: 800000b7 lui ra,0x80000 + 80000204: 00008137 lui sp,0x8 + 80000208: fff1011b addiw sp,sp,-1 + 8000020c: 00208f33 add t5,ra,sp + 80000210: 80008eb7 lui t4,0x80008 + 80000214: fffe8e9b addiw t4,t4,-1 + 80000218: 00b00193 li gp,11 + 8000021c: 3ddf1a63 bne t5,t4,800005f0 + +0000000080000220 : + 80000220: 800000b7 lui ra,0x80000 + 80000224: fff0809b addiw ra,ra,-1 + 80000228: ffff8137 lui sp,0xffff8 + 8000022c: 00208f33 add t5,ra,sp + 80000230: 7fff8eb7 lui t4,0x7fff8 + 80000234: fffe8e9b addiw t4,t4,-1 + 80000238: 00c00193 li gp,12 + 8000023c: 3bdf1a63 bne t5,t4,800005f0 + +0000000080000240 : + 80000240: 00000093 li ra,0 + 80000244: fff00113 li sp,-1 + 80000248: 00208f33 add t5,ra,sp + 8000024c: fff00e93 li t4,-1 + 80000250: 00d00193 li gp,13 + 80000254: 39df1e63 bne t5,t4,800005f0 + +0000000080000258 : + 80000258: fff00093 li ra,-1 + 8000025c: 00100113 li sp,1 + 80000260: 00208f33 add t5,ra,sp + 80000264: 00000e93 li t4,0 + 80000268: 00e00193 li gp,14 + 8000026c: 39df1263 bne t5,t4,800005f0 + +0000000080000270 : + 80000270: fff00093 li ra,-1 + 80000274: fff00113 li sp,-1 + 80000278: 00208f33 add t5,ra,sp + 8000027c: ffe00e93 li t4,-2 + 80000280: 00f00193 li gp,15 + 80000284: 37df1663 bne t5,t4,800005f0 + +0000000080000288 : + 80000288: 00100093 li ra,1 + 8000028c: 80000137 lui sp,0x80000 + 80000290: fff1011b addiw sp,sp,-1 + 80000294: 00208f33 add t5,ra,sp + 80000298: 00100e9b addiw t4,zero,1 + 8000029c: 01fe9e93 slli t4,t4,0x1f + 800002a0: 01000193 li gp,16 + 800002a4: 35df1663 bne t5,t4,800005f0 + +00000000800002a8 : + 800002a8: 00d00093 li ra,13 + 800002ac: 00b00113 li sp,11 + 800002b0: 002080b3 add ra,ra,sp + 800002b4: 01800e93 li t4,24 + 800002b8: 01100193 li gp,17 + 800002bc: 33d09a63 bne ra,t4,800005f0 + +00000000800002c0 : + 800002c0: 00e00093 li ra,14 + 800002c4: 00b00113 li sp,11 + 800002c8: 00208133 add sp,ra,sp + 800002cc: 01900e93 li t4,25 + 800002d0: 01200193 li gp,18 + 800002d4: 31d11e63 bne sp,t4,800005f0 + +00000000800002d8 : + 800002d8: 00d00093 li ra,13 + 800002dc: 001080b3 add ra,ra,ra + 800002e0: 01a00e93 li t4,26 + 800002e4: 01300193 li gp,19 + 800002e8: 31d09463 bne ra,t4,800005f0 + +00000000800002ec : + 800002ec: 00000213 li tp,0 + 800002f0: 00d00093 li ra,13 + 800002f4: 00b00113 li sp,11 + 800002f8: 00208f33 add t5,ra,sp + 800002fc: 000f0313 mv t1,t5 + 80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000304: 00200293 li t0,2 + 80000308: fe5214e3 bne tp,t0,800002f0 + 8000030c: 01800e93 li t4,24 + 80000310: 01400193 li gp,20 + 80000314: 2dd31e63 bne t1,t4,800005f0 + +0000000080000318 : + 80000318: 00000213 li tp,0 + 8000031c: 00e00093 li ra,14 + 80000320: 00b00113 li sp,11 + 80000324: 00208f33 add t5,ra,sp + 80000328: 00000013 nop + 8000032c: 000f0313 mv t1,t5 + 80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000334: 00200293 li t0,2 + 80000338: fe5212e3 bne tp,t0,8000031c + 8000033c: 01900e93 li t4,25 + 80000340: 01500193 li gp,21 + 80000344: 2bd31663 bne t1,t4,800005f0 + +0000000080000348 : + 80000348: 00000213 li tp,0 + 8000034c: 00f00093 li ra,15 + 80000350: 00b00113 li sp,11 + 80000354: 00208f33 add t5,ra,sp + 80000358: 00000013 nop + 8000035c: 00000013 nop + 80000360: 000f0313 mv t1,t5 + 80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000368: 00200293 li t0,2 + 8000036c: fe5210e3 bne tp,t0,8000034c + 80000370: 01a00e93 li t4,26 + 80000374: 01600193 li gp,22 + 80000378: 27d31c63 bne t1,t4,800005f0 + +000000008000037c : + 8000037c: 00000213 li tp,0 + 80000380: 00d00093 li ra,13 + 80000384: 00b00113 li sp,11 + 80000388: 00208f33 add t5,ra,sp + 8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000390: 00200293 li t0,2 + 80000394: fe5216e3 bne tp,t0,80000380 + 80000398: 01800e93 li t4,24 + 8000039c: 01700193 li gp,23 + 800003a0: 25df1863 bne t5,t4,800005f0 + +00000000800003a4 : + 800003a4: 00000213 li tp,0 + 800003a8: 00e00093 li ra,14 + 800003ac: 00b00113 li sp,11 + 800003b0: 00000013 nop + 800003b4: 00208f33 add t5,ra,sp + 800003b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003bc: 00200293 li t0,2 + 800003c0: fe5214e3 bne tp,t0,800003a8 + 800003c4: 01900e93 li t4,25 + 800003c8: 01800193 li gp,24 + 800003cc: 23df1263 bne t5,t4,800005f0 + +00000000800003d0 : + 800003d0: 00000213 li tp,0 + 800003d4: 00f00093 li ra,15 + 800003d8: 00b00113 li sp,11 + 800003dc: 00000013 nop + 800003e0: 00000013 nop + 800003e4: 00208f33 add t5,ra,sp + 800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003ec: 00200293 li t0,2 + 800003f0: fe5212e3 bne tp,t0,800003d4 + 800003f4: 01a00e93 li t4,26 + 800003f8: 01900193 li gp,25 + 800003fc: 1fdf1a63 bne t5,t4,800005f0 + +0000000080000400 : + 80000400: 00000213 li tp,0 + 80000404: 00d00093 li ra,13 + 80000408: 00000013 nop + 8000040c: 00b00113 li sp,11 + 80000410: 00208f33 add t5,ra,sp + 80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000418: 00200293 li t0,2 + 8000041c: fe5214e3 bne tp,t0,80000404 + 80000420: 01800e93 li t4,24 + 80000424: 01a00193 li gp,26 + 80000428: 1ddf1463 bne t5,t4,800005f0 + +000000008000042c : + 8000042c: 00000213 li tp,0 + 80000430: 00e00093 li ra,14 + 80000434: 00000013 nop + 80000438: 00b00113 li sp,11 + 8000043c: 00000013 nop + 80000440: 00208f33 add t5,ra,sp + 80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000448: 00200293 li t0,2 + 8000044c: fe5212e3 bne tp,t0,80000430 + 80000450: 01900e93 li t4,25 + 80000454: 01b00193 li gp,27 + 80000458: 19df1c63 bne t5,t4,800005f0 + +000000008000045c : + 8000045c: 00000213 li tp,0 + 80000460: 00f00093 li ra,15 + 80000464: 00000013 nop + 80000468: 00000013 nop + 8000046c: 00b00113 li sp,11 + 80000470: 00208f33 add t5,ra,sp + 80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000478: 00200293 li t0,2 + 8000047c: fe5212e3 bne tp,t0,80000460 + 80000480: 01a00e93 li t4,26 + 80000484: 01c00193 li gp,28 + 80000488: 17df1463 bne t5,t4,800005f0 + +000000008000048c : + 8000048c: 00000213 li tp,0 + 80000490: 00b00113 li sp,11 + 80000494: 00d00093 li ra,13 + 80000498: 00208f33 add t5,ra,sp + 8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004a0: 00200293 li t0,2 + 800004a4: fe5216e3 bne tp,t0,80000490 + 800004a8: 01800e93 li t4,24 + 800004ac: 01d00193 li gp,29 + 800004b0: 15df1063 bne t5,t4,800005f0 + +00000000800004b4 : + 800004b4: 00000213 li tp,0 + 800004b8: 00b00113 li sp,11 + 800004bc: 00e00093 li ra,14 + 800004c0: 00000013 nop + 800004c4: 00208f33 add t5,ra,sp + 800004c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004cc: 00200293 li t0,2 + 800004d0: fe5214e3 bne tp,t0,800004b8 + 800004d4: 01900e93 li t4,25 + 800004d8: 01e00193 li gp,30 + 800004dc: 11df1a63 bne t5,t4,800005f0 + +00000000800004e0 : + 800004e0: 00000213 li tp,0 + 800004e4: 00b00113 li sp,11 + 800004e8: 00f00093 li ra,15 + 800004ec: 00000013 nop + 800004f0: 00000013 nop + 800004f4: 00208f33 add t5,ra,sp + 800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004fc: 00200293 li t0,2 + 80000500: fe5212e3 bne tp,t0,800004e4 + 80000504: 01a00e93 li t4,26 + 80000508: 01f00193 li gp,31 + 8000050c: 0fdf1263 bne t5,t4,800005f0 + +0000000080000510 : + 80000510: 00000213 li tp,0 + 80000514: 00b00113 li sp,11 + 80000518: 00000013 nop + 8000051c: 00d00093 li ra,13 + 80000520: 00208f33 add t5,ra,sp + 80000524: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000528: 00200293 li t0,2 + 8000052c: fe5214e3 bne tp,t0,80000514 + 80000530: 01800e93 li t4,24 + 80000534: 02000193 li gp,32 + 80000538: 0bdf1c63 bne t5,t4,800005f0 + +000000008000053c : + 8000053c: 00000213 li tp,0 + 80000540: 00b00113 li sp,11 + 80000544: 00000013 nop + 80000548: 00e00093 li ra,14 + 8000054c: 00000013 nop + 80000550: 00208f33 add t5,ra,sp + 80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000558: 00200293 li t0,2 + 8000055c: fe5212e3 bne tp,t0,80000540 + 80000560: 01900e93 li t4,25 + 80000564: 02100193 li gp,33 + 80000568: 09df1463 bne t5,t4,800005f0 + +000000008000056c : + 8000056c: 00000213 li tp,0 + 80000570: 00b00113 li sp,11 + 80000574: 00000013 nop + 80000578: 00000013 nop + 8000057c: 00f00093 li ra,15 + 80000580: 00208f33 add t5,ra,sp + 80000584: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000588: 00200293 li t0,2 + 8000058c: fe5212e3 bne tp,t0,80000570 + 80000590: 01a00e93 li t4,26 + 80000594: 02200193 li gp,34 + 80000598: 05df1c63 bne t5,t4,800005f0 + +000000008000059c : + 8000059c: 00f00093 li ra,15 + 800005a0: 00100133 add sp,zero,ra + 800005a4: 00f00e93 li t4,15 + 800005a8: 02300193 li gp,35 + 800005ac: 05d11263 bne sp,t4,800005f0 + +00000000800005b0 : + 800005b0: 02000093 li ra,32 + 800005b4: 00008133 add sp,ra,zero + 800005b8: 02000e93 li t4,32 + 800005bc: 02400193 li gp,36 + 800005c0: 03d11863 bne sp,t4,800005f0 + +00000000800005c4 : + 800005c4: 000000b3 add ra,zero,zero + 800005c8: 00000e93 li t4,0 + 800005cc: 02500193 li gp,37 + 800005d0: 03d09063 bne ra,t4,800005f0 + +00000000800005d4 : + 800005d4: 01000093 li ra,16 + 800005d8: 01e00113 li sp,30 + 800005dc: 00208033 add zero,ra,sp + 800005e0: 00000e93 li t4,0 + 800005e4: 02600193 li gp,38 + 800005e8: 01d01463 bne zero,t4,800005f0 + 800005ec: 00301c63 bne zero,gp,80000604 + +00000000800005f0 : + 800005f0: 0ff0000f fence + 800005f4: 00018063 beqz gp,800005f4 + 800005f8: 00119193 slli gp,gp,0x1 + 800005fc: 0011e193 ori gp,gp,1 + 80000600: 00000073 ecall + +0000000080000604 : + 80000604: 0ff0000f fence + 80000608: 00100193 li gp,1 + 8000060c: 00000073 ecall + 80000610: c0001073 unimp + 80000614: 0000 unimp + 80000616: 0000 unimp + 80000618: 0000 unimp + 8000061a: 0000 unimp + 8000061c: 0000 unimp + 8000061e: 0000 unimp + 80000620: 0000 unimp + 80000622: 0000 unimp + 80000624: 0000 unimp + 80000626: 0000 unimp + 80000628: 0000 unimp + 8000062a: 0000 unimp + 8000062c: 0000 unimp + 8000062e: 0000 unimp + 80000630: 0000 unimp + 80000632: 0000 unimp + 80000634: 0000 unimp + 80000636: 0000 unimp + 80000638: 0000 unimp + 8000063a: 0000 unimp + 8000063c: 0000 unimp + 8000063e: 0000 unimp + 80000640: 0000 unimp + 80000642: 0000 unimp diff --git a/Tests/isa/rv64ui-p-addi b/Tests/isa/rv64ui-p-addi new file mode 100644 index 0000000..0bf4cbe Binary files /dev/null and b/Tests/isa/rv64ui-p-addi differ diff --git a/Tests/isa/rv64ui-p-addi.dump b/Tests/isa/rv64ui-p-addi.dump new file mode 100644 index 0000000..dc5acc0 --- /dev/null +++ b/Tests/isa/rv64ui-p-addi.dump @@ -0,0 +1,312 @@ + +rv64ui-p-addi: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00008f13 mv t5,ra + 80000104: 00000e93 li t4,0 + 80000108: 00200193 li gp,2 + 8000010c: 29df1263 bne t5,t4,80000390 + +0000000080000110 : + 80000110: 00100093 li ra,1 + 80000114: 00108f13 addi t5,ra,1 + 80000118: 00200e93 li t4,2 + 8000011c: 00300193 li gp,3 + 80000120: 27df1863 bne t5,t4,80000390 + +0000000080000124 : + 80000124: 00300093 li ra,3 + 80000128: 00708f13 addi t5,ra,7 + 8000012c: 00a00e93 li t4,10 + 80000130: 00400193 li gp,4 + 80000134: 25df1e63 bne t5,t4,80000390 + +0000000080000138 : + 80000138: 00000093 li ra,0 + 8000013c: 80008f13 addi t5,ra,-2048 + 80000140: 80000e93 li t4,-2048 + 80000144: 00500193 li gp,5 + 80000148: 25df1463 bne t5,t4,80000390 + +000000008000014c : + 8000014c: 800000b7 lui ra,0x80000 + 80000150: 00008f13 mv t5,ra + 80000154: 80000eb7 lui t4,0x80000 + 80000158: 00600193 li gp,6 + 8000015c: 23df1a63 bne t5,t4,80000390 + +0000000080000160 : + 80000160: 800000b7 lui ra,0x80000 + 80000164: 80008f13 addi t5,ra,-2048 # ffffffff7ffff800 <_end+0xfffffffeffffd800> + 80000168: fff00e9b addiw t4,zero,-1 + 8000016c: 01fe9e93 slli t4,t4,0x1f + 80000170: 800e8e93 addi t4,t4,-2048 # ffffffff7ffff800 <_end+0xfffffffeffffd800> + 80000174: 00700193 li gp,7 + 80000178: 21df1c63 bne t5,t4,80000390 + +000000008000017c : + 8000017c: 00000093 li ra,0 + 80000180: 7ff08f13 addi t5,ra,2047 + 80000184: 7ff00e93 li t4,2047 + 80000188: 00800193 li gp,8 + 8000018c: 21df1263 bne t5,t4,80000390 + +0000000080000190 : + 80000190: 800000b7 lui ra,0x80000 + 80000194: fff0809b addiw ra,ra,-1 + 80000198: 00008f13 mv t5,ra + 8000019c: 80000eb7 lui t4,0x80000 + 800001a0: fffe8e9b addiw t4,t4,-1 + 800001a4: 00900193 li gp,9 + 800001a8: 1fdf1463 bne t5,t4,80000390 + +00000000800001ac : + 800001ac: 800000b7 lui ra,0x80000 + 800001b0: fff0809b addiw ra,ra,-1 + 800001b4: 7ff08f13 addi t5,ra,2047 # ffffffff800007ff <_end+0xfffffffeffffe7ff> + 800001b8: 00100e9b addiw t4,zero,1 + 800001bc: 01fe9e93 slli t4,t4,0x1f + 800001c0: 7fee8e93 addi t4,t4,2046 # ffffffff800007fe <_end+0xfffffffeffffe7fe> + 800001c4: 00a00193 li gp,10 + 800001c8: 1ddf1463 bne t5,t4,80000390 + +00000000800001cc : + 800001cc: 800000b7 lui ra,0x80000 + 800001d0: 7ff08f13 addi t5,ra,2047 # ffffffff800007ff <_end+0xfffffffeffffe7ff> + 800001d4: 80000eb7 lui t4,0x80000 + 800001d8: 7ffe8e9b addiw t4,t4,2047 + 800001dc: 00b00193 li gp,11 + 800001e0: 1bdf1863 bne t5,t4,80000390 + +00000000800001e4 : + 800001e4: 800000b7 lui ra,0x80000 + 800001e8: fff0809b addiw ra,ra,-1 + 800001ec: 80008f13 addi t5,ra,-2048 # ffffffff7ffff800 <_end+0xfffffffeffffd800> + 800001f0: 7ffffeb7 lui t4,0x7ffff + 800001f4: 7ffe8e9b addiw t4,t4,2047 + 800001f8: 00c00193 li gp,12 + 800001fc: 19df1a63 bne t5,t4,80000390 + +0000000080000200 : + 80000200: 00000093 li ra,0 + 80000204: fff08f13 addi t5,ra,-1 + 80000208: fff00e93 li t4,-1 + 8000020c: 00d00193 li gp,13 + 80000210: 19df1063 bne t5,t4,80000390 + +0000000080000214 : + 80000214: fff00093 li ra,-1 + 80000218: 00108f13 addi t5,ra,1 + 8000021c: 00000e93 li t4,0 + 80000220: 00e00193 li gp,14 + 80000224: 17df1663 bne t5,t4,80000390 + +0000000080000228 : + 80000228: fff00093 li ra,-1 + 8000022c: fff08f13 addi t5,ra,-1 + 80000230: ffe00e93 li t4,-2 + 80000234: 00f00193 li gp,15 + 80000238: 15df1c63 bne t5,t4,80000390 + +000000008000023c : + 8000023c: 800000b7 lui ra,0x80000 + 80000240: fff0809b addiw ra,ra,-1 + 80000244: 00108f13 addi t5,ra,1 # ffffffff80000001 <_end+0xfffffffeffffe001> + 80000248: 00100e9b addiw t4,zero,1 + 8000024c: 01fe9e93 slli t4,t4,0x1f + 80000250: 01000193 li gp,16 + 80000254: 13df1e63 bne t5,t4,80000390 + +0000000080000258 : + 80000258: 00d00093 li ra,13 + 8000025c: 00b08093 addi ra,ra,11 + 80000260: 01800e93 li t4,24 + 80000264: 01100193 li gp,17 + 80000268: 13d09463 bne ra,t4,80000390 + +000000008000026c : + 8000026c: 00000213 li tp,0 + 80000270: 00d00093 li ra,13 + 80000274: 00b08f13 addi t5,ra,11 + 80000278: 000f0313 mv t1,t5 + 8000027c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000280: 00200293 li t0,2 + 80000284: fe5216e3 bne tp,t0,80000270 + 80000288: 01800e93 li t4,24 + 8000028c: 01200193 li gp,18 + 80000290: 11d31063 bne t1,t4,80000390 + +0000000080000294 : + 80000294: 00000213 li tp,0 + 80000298: 00d00093 li ra,13 + 8000029c: 00a08f13 addi t5,ra,10 + 800002a0: 00000013 nop + 800002a4: 000f0313 mv t1,t5 + 800002a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002ac: 00200293 li t0,2 + 800002b0: fe5214e3 bne tp,t0,80000298 + 800002b4: 01700e93 li t4,23 + 800002b8: 01300193 li gp,19 + 800002bc: 0dd31a63 bne t1,t4,80000390 + +00000000800002c0 : + 800002c0: 00000213 li tp,0 + 800002c4: 00d00093 li ra,13 + 800002c8: 00908f13 addi t5,ra,9 + 800002cc: 00000013 nop + 800002d0: 00000013 nop + 800002d4: 000f0313 mv t1,t5 + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5212e3 bne tp,t0,800002c4 + 800002e4: 01600e93 li t4,22 + 800002e8: 01400193 li gp,20 + 800002ec: 0bd31263 bne t1,t4,80000390 + +00000000800002f0 : + 800002f0: 00000213 li tp,0 + 800002f4: 00d00093 li ra,13 + 800002f8: 00b08f13 addi t5,ra,11 + 800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000300: 00200293 li t0,2 + 80000304: fe5218e3 bne tp,t0,800002f4 + 80000308: 01800e93 li t4,24 + 8000030c: 01500193 li gp,21 + 80000310: 09df1063 bne t5,t4,80000390 + +0000000080000314 : + 80000314: 00000213 li tp,0 + 80000318: 00d00093 li ra,13 + 8000031c: 00000013 nop + 80000320: 00a08f13 addi t5,ra,10 + 80000324: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000328: 00200293 li t0,2 + 8000032c: fe5216e3 bne tp,t0,80000318 + 80000330: 01700e93 li t4,23 + 80000334: 01600193 li gp,22 + 80000338: 05df1c63 bne t5,t4,80000390 + +000000008000033c : + 8000033c: 00000213 li tp,0 + 80000340: 00d00093 li ra,13 + 80000344: 00000013 nop + 80000348: 00000013 nop + 8000034c: 00908f13 addi t5,ra,9 + 80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000354: 00200293 li t0,2 + 80000358: fe5214e3 bne tp,t0,80000340 + 8000035c: 01600e93 li t4,22 + 80000360: 01700193 li gp,23 + 80000364: 03df1663 bne t5,t4,80000390 + +0000000080000368 : + 80000368: 02000093 li ra,32 + 8000036c: 02000e93 li t4,32 + 80000370: 01800193 li gp,24 + 80000374: 01d09e63 bne ra,t4,80000390 + +0000000080000378 : + 80000378: 02100093 li ra,33 + 8000037c: 03208013 addi zero,ra,50 + 80000380: 00000e93 li t4,0 + 80000384: 01900193 li gp,25 + 80000388: 01d01463 bne zero,t4,80000390 + 8000038c: 00301c63 bne zero,gp,800003a4 + +0000000080000390 : + 80000390: 0ff0000f fence + 80000394: 00018063 beqz gp,80000394 + 80000398: 00119193 slli gp,gp,0x1 + 8000039c: 0011e193 ori gp,gp,1 + 800003a0: 00000073 ecall + +00000000800003a4 : + 800003a4: 0ff0000f fence + 800003a8: 00100193 li gp,1 + 800003ac: 00000073 ecall + 800003b0: c0001073 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-addiw b/Tests/isa/rv64ui-p-addiw new file mode 100644 index 0000000..8dad6f2 Binary files /dev/null and b/Tests/isa/rv64ui-p-addiw differ diff --git a/Tests/isa/rv64ui-p-addiw.dump b/Tests/isa/rv64ui-p-addiw.dump new file mode 100644 index 0000000..a84bd35 --- /dev/null +++ b/Tests/isa/rv64ui-p-addiw.dump @@ -0,0 +1,315 @@ + +rv64ui-p-addiw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00008f1b sext.w t5,ra + 80000104: 00000e93 li t4,0 + 80000108: 00200193 li gp,2 + 8000010c: 27df1c63 bne t5,t4,80000384 + +0000000080000110 : + 80000110: 00100093 li ra,1 + 80000114: 00108f1b addiw t5,ra,1 + 80000118: 00200e93 li t4,2 + 8000011c: 00300193 li gp,3 + 80000120: 27df1263 bne t5,t4,80000384 + +0000000080000124 : + 80000124: 00300093 li ra,3 + 80000128: 00708f1b addiw t5,ra,7 + 8000012c: 00a00e93 li t4,10 + 80000130: 00400193 li gp,4 + 80000134: 25df1863 bne t5,t4,80000384 + +0000000080000138 : + 80000138: 00000093 li ra,0 + 8000013c: 80008f1b addiw t5,ra,-2048 + 80000140: 80000e93 li t4,-2048 + 80000144: 00500193 li gp,5 + 80000148: 23df1e63 bne t5,t4,80000384 + +000000008000014c : + 8000014c: 800000b7 lui ra,0x80000 + 80000150: 00008f1b sext.w t5,ra + 80000154: 80000eb7 lui t4,0x80000 + 80000158: 00600193 li gp,6 + 8000015c: 23df1463 bne t5,t4,80000384 + +0000000080000160 : + 80000160: 800000b7 lui ra,0x80000 + 80000164: 80008f1b addiw t5,ra,-2048 + 80000168: 80000eb7 lui t4,0x80000 + 8000016c: 800e8e9b addiw t4,t4,-2048 + 80000170: 00700193 li gp,7 + 80000174: 21df1863 bne t5,t4,80000384 + +0000000080000178 : + 80000178: 00000093 li ra,0 + 8000017c: 7ff08f1b addiw t5,ra,2047 + 80000180: 7ff00e93 li t4,2047 + 80000184: 00800193 li gp,8 + 80000188: 1fdf1e63 bne t5,t4,80000384 + +000000008000018c : + 8000018c: 800000b7 lui ra,0x80000 + 80000190: fff0809b addiw ra,ra,-1 + 80000194: 00008f1b sext.w t5,ra + 80000198: 80000eb7 lui t4,0x80000 + 8000019c: fffe8e9b addiw t4,t4,-1 + 800001a0: 00900193 li gp,9 + 800001a4: 1fdf1063 bne t5,t4,80000384 + +00000000800001a8 : + 800001a8: 800000b7 lui ra,0x80000 + 800001ac: fff0809b addiw ra,ra,-1 + 800001b0: 7ff08f1b addiw t5,ra,2047 + 800001b4: 80000eb7 lui t4,0x80000 + 800001b8: 7fee8e9b addiw t4,t4,2046 + 800001bc: 00a00193 li gp,10 + 800001c0: 1ddf1263 bne t5,t4,80000384 + +00000000800001c4 : + 800001c4: 800000b7 lui ra,0x80000 + 800001c8: 7ff08f1b addiw t5,ra,2047 + 800001cc: 80000eb7 lui t4,0x80000 + 800001d0: 7ffe8e9b addiw t4,t4,2047 + 800001d4: 00b00193 li gp,11 + 800001d8: 1bdf1663 bne t5,t4,80000384 + +00000000800001dc : + 800001dc: 800000b7 lui ra,0x80000 + 800001e0: fff0809b addiw ra,ra,-1 + 800001e4: 80008f1b addiw t5,ra,-2048 + 800001e8: 7ffffeb7 lui t4,0x7ffff + 800001ec: 7ffe8e9b addiw t4,t4,2047 + 800001f0: 00c00193 li gp,12 + 800001f4: 19df1863 bne t5,t4,80000384 + +00000000800001f8 : + 800001f8: 00000093 li ra,0 + 800001fc: fff08f1b addiw t5,ra,-1 + 80000200: fff00e93 li t4,-1 + 80000204: 00d00193 li gp,13 + 80000208: 17df1e63 bne t5,t4,80000384 + +000000008000020c : + 8000020c: fff00093 li ra,-1 + 80000210: 00108f1b addiw t5,ra,1 + 80000214: 00000e93 li t4,0 + 80000218: 00e00193 li gp,14 + 8000021c: 17df1463 bne t5,t4,80000384 + +0000000080000220 : + 80000220: fff00093 li ra,-1 + 80000224: fff08f1b addiw t5,ra,-1 + 80000228: ffe00e93 li t4,-2 + 8000022c: 00f00193 li gp,15 + 80000230: 15df1a63 bne t5,t4,80000384 + +0000000080000234 : + 80000234: 800000b7 lui ra,0x80000 + 80000238: fff0809b addiw ra,ra,-1 + 8000023c: 00108f1b addiw t5,ra,1 + 80000240: 80000eb7 lui t4,0x80000 + 80000244: 01000193 li gp,16 + 80000248: 13df1e63 bne t5,t4,80000384 + +000000008000024c : + 8000024c: 00d00093 li ra,13 + 80000250: 00b0809b addiw ra,ra,11 + 80000254: 01800e93 li t4,24 + 80000258: 01100193 li gp,17 + 8000025c: 13d09463 bne ra,t4,80000384 + +0000000080000260 : + 80000260: 00000213 li tp,0 + 80000264: 00d00093 li ra,13 + 80000268: 00b08f1b addiw t5,ra,11 + 8000026c: 000f0313 mv t1,t5 + 80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000274: 00200293 li t0,2 + 80000278: fe5216e3 bne tp,t0,80000264 + 8000027c: 01800e93 li t4,24 + 80000280: 01200193 li gp,18 + 80000284: 11d31063 bne t1,t4,80000384 + +0000000080000288 : + 80000288: 00000213 li tp,0 + 8000028c: 00d00093 li ra,13 + 80000290: 00a08f1b addiw t5,ra,10 + 80000294: 00000013 nop + 80000298: 000f0313 mv t1,t5 + 8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a0: 00200293 li t0,2 + 800002a4: fe5214e3 bne tp,t0,8000028c + 800002a8: 01700e93 li t4,23 + 800002ac: 01300193 li gp,19 + 800002b0: 0dd31a63 bne t1,t4,80000384 + +00000000800002b4 : + 800002b4: 00000213 li tp,0 + 800002b8: 00d00093 li ra,13 + 800002bc: 00908f1b addiw t5,ra,9 + 800002c0: 00000013 nop + 800002c4: 00000013 nop + 800002c8: 000f0313 mv t1,t5 + 800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d0: 00200293 li t0,2 + 800002d4: fe5212e3 bne tp,t0,800002b8 + 800002d8: 01600e93 li t4,22 + 800002dc: 01400193 li gp,20 + 800002e0: 0bd31263 bne t1,t4,80000384 + +00000000800002e4 : + 800002e4: 00000213 li tp,0 + 800002e8: 00d00093 li ra,13 + 800002ec: 00b08f1b addiw t5,ra,11 + 800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f4: 00200293 li t0,2 + 800002f8: fe5218e3 bne tp,t0,800002e8 + 800002fc: 01800e93 li t4,24 + 80000300: 01500193 li gp,21 + 80000304: 09df1063 bne t5,t4,80000384 + +0000000080000308 : + 80000308: 00000213 li tp,0 + 8000030c: 00d00093 li ra,13 + 80000310: 00000013 nop + 80000314: 00a08f1b addiw t5,ra,10 + 80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000031c: 00200293 li t0,2 + 80000320: fe5216e3 bne tp,t0,8000030c + 80000324: 01700e93 li t4,23 + 80000328: 01600193 li gp,22 + 8000032c: 05df1c63 bne t5,t4,80000384 + +0000000080000330 : + 80000330: 00000213 li tp,0 + 80000334: 00d00093 li ra,13 + 80000338: 00000013 nop + 8000033c: 00000013 nop + 80000340: 00908f1b addiw t5,ra,9 + 80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000348: 00200293 li t0,2 + 8000034c: fe5214e3 bne tp,t0,80000334 + 80000350: 01600e93 li t4,22 + 80000354: 01700193 li gp,23 + 80000358: 03df1663 bne t5,t4,80000384 + +000000008000035c : + 8000035c: 0200009b addiw ra,zero,32 + 80000360: 02000e93 li t4,32 + 80000364: 01800193 li gp,24 + 80000368: 01d09e63 bne ra,t4,80000384 + +000000008000036c : + 8000036c: 02100093 li ra,33 + 80000370: 0320801b addiw zero,ra,50 + 80000374: 00000e93 li t4,0 + 80000378: 01900193 li gp,25 + 8000037c: 01d01463 bne zero,t4,80000384 + 80000380: 00301c63 bne zero,gp,80000398 + +0000000080000384 : + 80000384: 0ff0000f fence + 80000388: 00018063 beqz gp,80000388 + 8000038c: 00119193 slli gp,gp,0x1 + 80000390: 0011e193 ori gp,gp,1 + 80000394: 00000073 ecall + +0000000080000398 : + 80000398: 0ff0000f fence + 8000039c: 00100193 li gp,1 + 800003a0: 00000073 ecall + 800003a4: c0001073 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-addw b/Tests/isa/rv64ui-p-addw new file mode 100644 index 0000000..2d683bd Binary files /dev/null and b/Tests/isa/rv64ui-p-addw differ diff --git a/Tests/isa/rv64ui-p-addw.dump b/Tests/isa/rv64ui-p-addw.dump new file mode 100644 index 0000000..626af6d --- /dev/null +++ b/Tests/isa/rv64ui-p-addw.dump @@ -0,0 +1,479 @@ + +rv64ui-p-addw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 00208f3b addw t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 4ddf1663 bne t5,t4,800005dc + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 00208f3b addw t5,ra,sp + 80000120: 00200e93 li t4,2 + 80000124: 00300193 li gp,3 + 80000128: 4bdf1a63 bne t5,t4,800005dc + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 00208f3b addw t5,ra,sp + 80000138: 00a00e93 li t4,10 + 8000013c: 00400193 li gp,4 + 80000140: 49df1e63 bne t5,t4,800005dc + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 00208f3b addw t5,ra,sp + 80000150: ffff8eb7 lui t4,0xffff8 + 80000154: 00500193 li gp,5 + 80000158: 49df1263 bne t5,t4,800005dc + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 00208f3b addw t5,ra,sp + 80000168: 80000eb7 lui t4,0x80000 + 8000016c: 00600193 li gp,6 + 80000170: 47df1663 bne t5,t4,800005dc + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 00208f3b addw t5,ra,sp + 80000180: 7fff8eb7 lui t4,0x7fff8 + 80000184: 00700193 li gp,7 + 80000188: 45df1a63 bne t5,t4,800005dc + +000000008000018c : + 8000018c: 00000093 li ra,0 + 80000190: 00008137 lui sp,0x8 + 80000194: fff1011b addiw sp,sp,-1 + 80000198: 00208f3b addw t5,ra,sp + 8000019c: 00008eb7 lui t4,0x8 + 800001a0: fffe8e9b addiw t4,t4,-1 + 800001a4: 00800193 li gp,8 + 800001a8: 43df1a63 bne t5,t4,800005dc + +00000000800001ac : + 800001ac: 800000b7 lui ra,0x80000 + 800001b0: fff0809b addiw ra,ra,-1 + 800001b4: 00000113 li sp,0 + 800001b8: 00208f3b addw t5,ra,sp + 800001bc: 80000eb7 lui t4,0x80000 + 800001c0: fffe8e9b addiw t4,t4,-1 + 800001c4: 00900193 li gp,9 + 800001c8: 41df1a63 bne t5,t4,800005dc + +00000000800001cc : + 800001cc: 800000b7 lui ra,0x80000 + 800001d0: fff0809b addiw ra,ra,-1 + 800001d4: 00008137 lui sp,0x8 + 800001d8: fff1011b addiw sp,sp,-1 + 800001dc: 00208f3b addw t5,ra,sp + 800001e0: 80008eb7 lui t4,0x80008 + 800001e4: ffee8e9b addiw t4,t4,-2 + 800001e8: 00a00193 li gp,10 + 800001ec: 3fdf1863 bne t5,t4,800005dc + +00000000800001f0 : + 800001f0: 800000b7 lui ra,0x80000 + 800001f4: 00008137 lui sp,0x8 + 800001f8: fff1011b addiw sp,sp,-1 + 800001fc: 00208f3b addw t5,ra,sp + 80000200: 80008eb7 lui t4,0x80008 + 80000204: fffe8e9b addiw t4,t4,-1 + 80000208: 00b00193 li gp,11 + 8000020c: 3ddf1863 bne t5,t4,800005dc + +0000000080000210 : + 80000210: 800000b7 lui ra,0x80000 + 80000214: fff0809b addiw ra,ra,-1 + 80000218: ffff8137 lui sp,0xffff8 + 8000021c: 00208f3b addw t5,ra,sp + 80000220: 7fff8eb7 lui t4,0x7fff8 + 80000224: fffe8e9b addiw t4,t4,-1 + 80000228: 00c00193 li gp,12 + 8000022c: 3bdf1863 bne t5,t4,800005dc + +0000000080000230 : + 80000230: 00000093 li ra,0 + 80000234: fff00113 li sp,-1 + 80000238: 00208f3b addw t5,ra,sp + 8000023c: fff00e93 li t4,-1 + 80000240: 00d00193 li gp,13 + 80000244: 39df1c63 bne t5,t4,800005dc + +0000000080000248 : + 80000248: fff00093 li ra,-1 + 8000024c: 00100113 li sp,1 + 80000250: 00208f3b addw t5,ra,sp + 80000254: 00000e93 li t4,0 + 80000258: 00e00193 li gp,14 + 8000025c: 39df1063 bne t5,t4,800005dc + +0000000080000260 : + 80000260: fff00093 li ra,-1 + 80000264: fff00113 li sp,-1 + 80000268: 00208f3b addw t5,ra,sp + 8000026c: ffe00e93 li t4,-2 + 80000270: 00f00193 li gp,15 + 80000274: 37df1463 bne t5,t4,800005dc + +0000000080000278 : + 80000278: 00100093 li ra,1 + 8000027c: 80000137 lui sp,0x80000 + 80000280: fff1011b addiw sp,sp,-1 + 80000284: 00208f3b addw t5,ra,sp + 80000288: 80000eb7 lui t4,0x80000 + 8000028c: 01000193 li gp,16 + 80000290: 35df1663 bne t5,t4,800005dc + +0000000080000294 : + 80000294: 00d00093 li ra,13 + 80000298: 00b00113 li sp,11 + 8000029c: 002080bb addw ra,ra,sp + 800002a0: 01800e93 li t4,24 + 800002a4: 01100193 li gp,17 + 800002a8: 33d09a63 bne ra,t4,800005dc + +00000000800002ac : + 800002ac: 00e00093 li ra,14 + 800002b0: 00b00113 li sp,11 + 800002b4: 0020813b addw sp,ra,sp + 800002b8: 01900e93 li t4,25 + 800002bc: 01200193 li gp,18 + 800002c0: 31d11e63 bne sp,t4,800005dc + +00000000800002c4 : + 800002c4: 00d00093 li ra,13 + 800002c8: 001080bb addw ra,ra,ra + 800002cc: 01a00e93 li t4,26 + 800002d0: 01300193 li gp,19 + 800002d4: 31d09463 bne ra,t4,800005dc + +00000000800002d8 : + 800002d8: 00000213 li tp,0 + 800002dc: 00d00093 li ra,13 + 800002e0: 00b00113 li sp,11 + 800002e4: 00208f3b addw t5,ra,sp + 800002e8: 000f0313 mv t1,t5 + 800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f0: 00200293 li t0,2 + 800002f4: fe5214e3 bne tp,t0,800002dc + 800002f8: 01800e93 li t4,24 + 800002fc: 01400193 li gp,20 + 80000300: 2dd31e63 bne t1,t4,800005dc + +0000000080000304 : + 80000304: 00000213 li tp,0 + 80000308: 00e00093 li ra,14 + 8000030c: 00b00113 li sp,11 + 80000310: 00208f3b addw t5,ra,sp + 80000314: 00000013 nop + 80000318: 000f0313 mv t1,t5 + 8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000320: 00200293 li t0,2 + 80000324: fe5212e3 bne tp,t0,80000308 + 80000328: 01900e93 li t4,25 + 8000032c: 01500193 li gp,21 + 80000330: 2bd31663 bne t1,t4,800005dc + +0000000080000334 : + 80000334: 00000213 li tp,0 + 80000338: 00f00093 li ra,15 + 8000033c: 00b00113 li sp,11 + 80000340: 00208f3b addw t5,ra,sp + 80000344: 00000013 nop + 80000348: 00000013 nop + 8000034c: 000f0313 mv t1,t5 + 80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000354: 00200293 li t0,2 + 80000358: fe5210e3 bne tp,t0,80000338 + 8000035c: 01a00e93 li t4,26 + 80000360: 01600193 li gp,22 + 80000364: 27d31c63 bne t1,t4,800005dc + +0000000080000368 : + 80000368: 00000213 li tp,0 + 8000036c: 00d00093 li ra,13 + 80000370: 00b00113 li sp,11 + 80000374: 00208f3b addw t5,ra,sp + 80000378: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000037c: 00200293 li t0,2 + 80000380: fe5216e3 bne tp,t0,8000036c + 80000384: 01800e93 li t4,24 + 80000388: 01700193 li gp,23 + 8000038c: 25df1863 bne t5,t4,800005dc + +0000000080000390 : + 80000390: 00000213 li tp,0 + 80000394: 00e00093 li ra,14 + 80000398: 00b00113 li sp,11 + 8000039c: 00000013 nop + 800003a0: 00208f3b addw t5,ra,sp + 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003a8: 00200293 li t0,2 + 800003ac: fe5214e3 bne tp,t0,80000394 + 800003b0: 01900e93 li t4,25 + 800003b4: 01800193 li gp,24 + 800003b8: 23df1263 bne t5,t4,800005dc + +00000000800003bc : + 800003bc: 00000213 li tp,0 + 800003c0: 00f00093 li ra,15 + 800003c4: 00b00113 li sp,11 + 800003c8: 00000013 nop + 800003cc: 00000013 nop + 800003d0: 00208f3b addw t5,ra,sp + 800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003d8: 00200293 li t0,2 + 800003dc: fe5212e3 bne tp,t0,800003c0 + 800003e0: 01a00e93 li t4,26 + 800003e4: 01900193 li gp,25 + 800003e8: 1fdf1a63 bne t5,t4,800005dc + +00000000800003ec : + 800003ec: 00000213 li tp,0 + 800003f0: 00d00093 li ra,13 + 800003f4: 00000013 nop + 800003f8: 00b00113 li sp,11 + 800003fc: 00208f3b addw t5,ra,sp + 80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000404: 00200293 li t0,2 + 80000408: fe5214e3 bne tp,t0,800003f0 + 8000040c: 01800e93 li t4,24 + 80000410: 01a00193 li gp,26 + 80000414: 1ddf1463 bne t5,t4,800005dc + +0000000080000418 : + 80000418: 00000213 li tp,0 + 8000041c: 00e00093 li ra,14 + 80000420: 00000013 nop + 80000424: 00b00113 li sp,11 + 80000428: 00000013 nop + 8000042c: 00208f3b addw t5,ra,sp + 80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000434: 00200293 li t0,2 + 80000438: fe5212e3 bne tp,t0,8000041c + 8000043c: 01900e93 li t4,25 + 80000440: 01b00193 li gp,27 + 80000444: 19df1c63 bne t5,t4,800005dc + +0000000080000448 : + 80000448: 00000213 li tp,0 + 8000044c: 00f00093 li ra,15 + 80000450: 00000013 nop + 80000454: 00000013 nop + 80000458: 00b00113 li sp,11 + 8000045c: 00208f3b addw t5,ra,sp + 80000460: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000464: 00200293 li t0,2 + 80000468: fe5212e3 bne tp,t0,8000044c + 8000046c: 01a00e93 li t4,26 + 80000470: 01c00193 li gp,28 + 80000474: 17df1463 bne t5,t4,800005dc + +0000000080000478 : + 80000478: 00000213 li tp,0 + 8000047c: 00b00113 li sp,11 + 80000480: 00d00093 li ra,13 + 80000484: 00208f3b addw t5,ra,sp + 80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000048c: 00200293 li t0,2 + 80000490: fe5216e3 bne tp,t0,8000047c + 80000494: 01800e93 li t4,24 + 80000498: 01d00193 li gp,29 + 8000049c: 15df1063 bne t5,t4,800005dc + +00000000800004a0 : + 800004a0: 00000213 li tp,0 + 800004a4: 00b00113 li sp,11 + 800004a8: 00e00093 li ra,14 + 800004ac: 00000013 nop + 800004b0: 00208f3b addw t5,ra,sp + 800004b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004b8: 00200293 li t0,2 + 800004bc: fe5214e3 bne tp,t0,800004a4 + 800004c0: 01900e93 li t4,25 + 800004c4: 01e00193 li gp,30 + 800004c8: 11df1a63 bne t5,t4,800005dc + +00000000800004cc : + 800004cc: 00000213 li tp,0 + 800004d0: 00b00113 li sp,11 + 800004d4: 00f00093 li ra,15 + 800004d8: 00000013 nop + 800004dc: 00000013 nop + 800004e0: 00208f3b addw t5,ra,sp + 800004e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004e8: 00200293 li t0,2 + 800004ec: fe5212e3 bne tp,t0,800004d0 + 800004f0: 01a00e93 li t4,26 + 800004f4: 01f00193 li gp,31 + 800004f8: 0fdf1263 bne t5,t4,800005dc + +00000000800004fc : + 800004fc: 00000213 li tp,0 + 80000500: 00b00113 li sp,11 + 80000504: 00000013 nop + 80000508: 00d00093 li ra,13 + 8000050c: 00208f3b addw t5,ra,sp + 80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000514: 00200293 li t0,2 + 80000518: fe5214e3 bne tp,t0,80000500 + 8000051c: 01800e93 li t4,24 + 80000520: 02000193 li gp,32 + 80000524: 0bdf1c63 bne t5,t4,800005dc + +0000000080000528 : + 80000528: 00000213 li tp,0 + 8000052c: 00b00113 li sp,11 + 80000530: 00000013 nop + 80000534: 00e00093 li ra,14 + 80000538: 00000013 nop + 8000053c: 00208f3b addw t5,ra,sp + 80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000544: 00200293 li t0,2 + 80000548: fe5212e3 bne tp,t0,8000052c + 8000054c: 01900e93 li t4,25 + 80000550: 02100193 li gp,33 + 80000554: 09df1463 bne t5,t4,800005dc + +0000000080000558 : + 80000558: 00000213 li tp,0 + 8000055c: 00b00113 li sp,11 + 80000560: 00000013 nop + 80000564: 00000013 nop + 80000568: 00f00093 li ra,15 + 8000056c: 00208f3b addw t5,ra,sp + 80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000574: 00200293 li t0,2 + 80000578: fe5212e3 bne tp,t0,8000055c + 8000057c: 01a00e93 li t4,26 + 80000580: 02200193 li gp,34 + 80000584: 05df1c63 bne t5,t4,800005dc + +0000000080000588 : + 80000588: 00f00093 li ra,15 + 8000058c: 0010013b addw sp,zero,ra + 80000590: 00f00e93 li t4,15 + 80000594: 02300193 li gp,35 + 80000598: 05d11263 bne sp,t4,800005dc + +000000008000059c : + 8000059c: 02000093 li ra,32 + 800005a0: 0000813b addw sp,ra,zero + 800005a4: 02000e93 li t4,32 + 800005a8: 02400193 li gp,36 + 800005ac: 03d11863 bne sp,t4,800005dc + +00000000800005b0 : + 800005b0: 000000bb addw ra,zero,zero + 800005b4: 00000e93 li t4,0 + 800005b8: 02500193 li gp,37 + 800005bc: 03d09063 bne ra,t4,800005dc + +00000000800005c0 : + 800005c0: 01000093 li ra,16 + 800005c4: 01e00113 li sp,30 + 800005c8: 0020803b addw zero,ra,sp + 800005cc: 00000e93 li t4,0 + 800005d0: 02600193 li gp,38 + 800005d4: 01d01463 bne zero,t4,800005dc + 800005d8: 00301c63 bne zero,gp,800005f0 + +00000000800005dc : + 800005dc: 0ff0000f fence + 800005e0: 00018063 beqz gp,800005e0 + 800005e4: 00119193 slli gp,gp,0x1 + 800005e8: 0011e193 ori gp,gp,1 + 800005ec: 00000073 ecall + +00000000800005f0 : + 800005f0: 0ff0000f fence + 800005f4: 00100193 li gp,1 + 800005f8: 00000073 ecall + 800005fc: c0001073 unimp + 80000600: 0000 unimp + 80000602: 0000 unimp diff --git a/Tests/isa/rv64ui-p-and b/Tests/isa/rv64ui-p-and new file mode 100644 index 0000000..582053e Binary files /dev/null and b/Tests/isa/rv64ui-p-and differ diff --git a/Tests/isa/rv64ui-p-and.dump b/Tests/isa/rv64ui-p-and.dump new file mode 100644 index 0000000..5851df8 --- /dev/null +++ b/Tests/isa/rv64ui-p-and.dump @@ -0,0 +1,491 @@ + +rv64ui-p-and: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 000100b7 lui ra,0x10 + 80000100: f010809b addiw ra,ra,-255 + 80000104: 01009093 slli ra,ra,0x10 + 80000108: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000010c: 0f0f1137 lui sp,0xf0f1 + 80000110: f0f1011b addiw sp,sp,-241 + 80000114: 0020ff33 and t5,ra,sp + 80000118: 0f001eb7 lui t4,0xf001 + 8000011c: f00e8e9b addiw t4,t4,-256 + 80000120: 00200193 li gp,2 + 80000124: 53df1863 bne t5,t4,80000654 + +0000000080000128 : + 80000128: 0ff010b7 lui ra,0xff01 + 8000012c: ff00809b addiw ra,ra,-16 + 80000130: 000f1137 lui sp,0xf1 + 80000134: f0f1011b addiw sp,sp,-241 + 80000138: 00c11113 slli sp,sp,0xc + 8000013c: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000140: 0020ff33 and t5,ra,sp + 80000144: 00f00eb7 lui t4,0xf00 + 80000148: 0f0e8e9b addiw t4,t4,240 + 8000014c: 00300193 li gp,3 + 80000150: 51df1263 bne t5,t4,80000654 + +0000000080000154 : + 80000154: 00ff00b7 lui ra,0xff0 + 80000158: 0ff0809b addiw ra,ra,255 + 8000015c: 0f0f1137 lui sp,0xf0f1 + 80000160: f0f1011b addiw sp,sp,-241 + 80000164: 0020ff33 and t5,ra,sp + 80000168: 000f0eb7 lui t4,0xf0 + 8000016c: 00fe8e9b addiw t4,t4,15 + 80000170: 00400193 li gp,4 + 80000174: 4fdf1063 bne t5,t4,80000654 + +0000000080000178 : + 80000178: 000f00b7 lui ra,0xf0 + 8000017c: 0ff0809b addiw ra,ra,255 + 80000180: 00c09093 slli ra,ra,0xc + 80000184: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80000188: 000f1137 lui sp,0xf1 + 8000018c: f0f1011b addiw sp,sp,-241 + 80000190: 00c11113 slli sp,sp,0xc + 80000194: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000198: 0020ff33 and t5,ra,sp + 8000019c: 000f0eb7 lui t4,0xf0 + 800001a0: 00fe8e9b addiw t4,t4,15 + 800001a4: 00ce9e93 slli t4,t4,0xc + 800001a8: 00500193 li gp,5 + 800001ac: 4bdf1463 bne t5,t4,80000654 + +00000000800001b0 : + 800001b0: 000100b7 lui ra,0x10 + 800001b4: f010809b addiw ra,ra,-255 + 800001b8: 01009093 slli ra,ra,0x10 + 800001bc: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800001c0: 0f0f1137 lui sp,0xf0f1 + 800001c4: f0f1011b addiw sp,sp,-241 + 800001c8: 0020f0b3 and ra,ra,sp + 800001cc: 0f001eb7 lui t4,0xf001 + 800001d0: f00e8e9b addiw t4,t4,-256 + 800001d4: 00600193 li gp,6 + 800001d8: 47d09e63 bne ra,t4,80000654 + +00000000800001dc : + 800001dc: 0ff010b7 lui ra,0xff01 + 800001e0: ff00809b addiw ra,ra,-16 + 800001e4: 000f1137 lui sp,0xf1 + 800001e8: f0f1011b addiw sp,sp,-241 + 800001ec: 00c11113 slli sp,sp,0xc + 800001f0: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800001f4: 0020f133 and sp,ra,sp + 800001f8: 00f00eb7 lui t4,0xf00 + 800001fc: 0f0e8e9b addiw t4,t4,240 + 80000200: 00700193 li gp,7 + 80000204: 45d11863 bne sp,t4,80000654 + +0000000080000208 : + 80000208: 000100b7 lui ra,0x10 + 8000020c: f010809b addiw ra,ra,-255 + 80000210: 01009093 slli ra,ra,0x10 + 80000214: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000218: 0010f0b3 and ra,ra,ra + 8000021c: 00010eb7 lui t4,0x10 + 80000220: f01e8e9b addiw t4,t4,-255 + 80000224: 010e9e93 slli t4,t4,0x10 + 80000228: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 8000022c: 00800193 li gp,8 + 80000230: 43d09263 bne ra,t4,80000654 + +0000000080000234 : + 80000234: 00000213 li tp,0 + 80000238: 000100b7 lui ra,0x10 + 8000023c: f010809b addiw ra,ra,-255 + 80000240: 01009093 slli ra,ra,0x10 + 80000244: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000248: 0f0f1137 lui sp,0xf0f1 + 8000024c: f0f1011b addiw sp,sp,-241 + 80000250: 0020ff33 and t5,ra,sp + 80000254: 000f0313 mv t1,t5 + 80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000025c: 00200293 li t0,2 + 80000260: fc521ce3 bne tp,t0,80000238 + 80000264: 0f001eb7 lui t4,0xf001 + 80000268: f00e8e9b addiw t4,t4,-256 + 8000026c: 00900193 li gp,9 + 80000270: 3fd31263 bne t1,t4,80000654 + +0000000080000274 : + 80000274: 00000213 li tp,0 + 80000278: 0ff010b7 lui ra,0xff01 + 8000027c: ff00809b addiw ra,ra,-16 + 80000280: 000f1137 lui sp,0xf1 + 80000284: f0f1011b addiw sp,sp,-241 + 80000288: 00c11113 slli sp,sp,0xc + 8000028c: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000290: 0020ff33 and t5,ra,sp + 80000294: 00000013 nop + 80000298: 000f0313 mv t1,t5 + 8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a0: 00200293 li t0,2 + 800002a4: fc521ae3 bne tp,t0,80000278 + 800002a8: 00f00eb7 lui t4,0xf00 + 800002ac: 0f0e8e9b addiw t4,t4,240 + 800002b0: 00a00193 li gp,10 + 800002b4: 3bd31063 bne t1,t4,80000654 + +00000000800002b8 : + 800002b8: 00000213 li tp,0 + 800002bc: 00ff00b7 lui ra,0xff0 + 800002c0: 0ff0809b addiw ra,ra,255 + 800002c4: 0f0f1137 lui sp,0xf0f1 + 800002c8: f0f1011b addiw sp,sp,-241 + 800002cc: 0020ff33 and t5,ra,sp + 800002d0: 00000013 nop + 800002d4: 00000013 nop + 800002d8: 000f0313 mv t1,t5 + 800002dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002e0: 00200293 li t0,2 + 800002e4: fc521ce3 bne tp,t0,800002bc + 800002e8: 000f0eb7 lui t4,0xf0 + 800002ec: 00fe8e9b addiw t4,t4,15 + 800002f0: 00b00193 li gp,11 + 800002f4: 37d31063 bne t1,t4,80000654 + +00000000800002f8 : + 800002f8: 00000213 li tp,0 + 800002fc: 000100b7 lui ra,0x10 + 80000300: f010809b addiw ra,ra,-255 + 80000304: 01009093 slli ra,ra,0x10 + 80000308: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000030c: 0f0f1137 lui sp,0xf0f1 + 80000310: f0f1011b addiw sp,sp,-241 + 80000314: 0020ff33 and t5,ra,sp + 80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000031c: 00200293 li t0,2 + 80000320: fc521ee3 bne tp,t0,800002fc + 80000324: 0f001eb7 lui t4,0xf001 + 80000328: f00e8e9b addiw t4,t4,-256 + 8000032c: 00c00193 li gp,12 + 80000330: 33df1263 bne t5,t4,80000654 + +0000000080000334 : + 80000334: 00000213 li tp,0 + 80000338: 0ff010b7 lui ra,0xff01 + 8000033c: ff00809b addiw ra,ra,-16 + 80000340: 000f1137 lui sp,0xf1 + 80000344: f0f1011b addiw sp,sp,-241 + 80000348: 00c11113 slli sp,sp,0xc + 8000034c: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000350: 00000013 nop + 80000354: 0020ff33 and t5,ra,sp + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fc521ce3 bne tp,t0,80000338 + 80000364: 00f00eb7 lui t4,0xf00 + 80000368: 0f0e8e9b addiw t4,t4,240 + 8000036c: 00d00193 li gp,13 + 80000370: 2fdf1263 bne t5,t4,80000654 + +0000000080000374 : + 80000374: 00000213 li tp,0 + 80000378: 00ff00b7 lui ra,0xff0 + 8000037c: 0ff0809b addiw ra,ra,255 + 80000380: 0f0f1137 lui sp,0xf0f1 + 80000384: f0f1011b addiw sp,sp,-241 + 80000388: 00000013 nop + 8000038c: 00000013 nop + 80000390: 0020ff33 and t5,ra,sp + 80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000398: 00200293 li t0,2 + 8000039c: fc521ee3 bne tp,t0,80000378 + 800003a0: 000f0eb7 lui t4,0xf0 + 800003a4: 00fe8e9b addiw t4,t4,15 + 800003a8: 00e00193 li gp,14 + 800003ac: 2bdf1463 bne t5,t4,80000654 + +00000000800003b0 : + 800003b0: 00000213 li tp,0 + 800003b4: 000100b7 lui ra,0x10 + 800003b8: f010809b addiw ra,ra,-255 + 800003bc: 01009093 slli ra,ra,0x10 + 800003c0: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800003c4: 00000013 nop + 800003c8: 0f0f1137 lui sp,0xf0f1 + 800003cc: f0f1011b addiw sp,sp,-241 + 800003d0: 0020ff33 and t5,ra,sp + 800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003d8: 00200293 li t0,2 + 800003dc: fc521ce3 bne tp,t0,800003b4 + 800003e0: 0f001eb7 lui t4,0xf001 + 800003e4: f00e8e9b addiw t4,t4,-256 + 800003e8: 00f00193 li gp,15 + 800003ec: 27df1463 bne t5,t4,80000654 + +00000000800003f0 : + 800003f0: 00000213 li tp,0 + 800003f4: 0ff010b7 lui ra,0xff01 + 800003f8: ff00809b addiw ra,ra,-16 + 800003fc: 00000013 nop + 80000400: 000f1137 lui sp,0xf1 + 80000404: f0f1011b addiw sp,sp,-241 + 80000408: 00c11113 slli sp,sp,0xc + 8000040c: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000410: 00000013 nop + 80000414: 0020ff33 and t5,ra,sp + 80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000041c: 00200293 li t0,2 + 80000420: fc521ae3 bne tp,t0,800003f4 + 80000424: 00f00eb7 lui t4,0xf00 + 80000428: 0f0e8e9b addiw t4,t4,240 + 8000042c: 01000193 li gp,16 + 80000430: 23df1263 bne t5,t4,80000654 + +0000000080000434 : + 80000434: 00000213 li tp,0 + 80000438: 00ff00b7 lui ra,0xff0 + 8000043c: 0ff0809b addiw ra,ra,255 + 80000440: 00000013 nop + 80000444: 00000013 nop + 80000448: 0f0f1137 lui sp,0xf0f1 + 8000044c: f0f1011b addiw sp,sp,-241 + 80000450: 0020ff33 and t5,ra,sp + 80000454: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000458: 00200293 li t0,2 + 8000045c: fc521ee3 bne tp,t0,80000438 + 80000460: 000f0eb7 lui t4,0xf0 + 80000464: 00fe8e9b addiw t4,t4,15 + 80000468: 01100193 li gp,17 + 8000046c: 1fdf1463 bne t5,t4,80000654 + +0000000080000470 : + 80000470: 00000213 li tp,0 + 80000474: 0f0f1137 lui sp,0xf0f1 + 80000478: f0f1011b addiw sp,sp,-241 + 8000047c: 000100b7 lui ra,0x10 + 80000480: f010809b addiw ra,ra,-255 + 80000484: 01009093 slli ra,ra,0x10 + 80000488: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000048c: 0020ff33 and t5,ra,sp + 80000490: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000494: 00200293 li t0,2 + 80000498: fc521ee3 bne tp,t0,80000474 + 8000049c: 0f001eb7 lui t4,0xf001 + 800004a0: f00e8e9b addiw t4,t4,-256 + 800004a4: 01200193 li gp,18 + 800004a8: 1bdf1663 bne t5,t4,80000654 + +00000000800004ac : + 800004ac: 00000213 li tp,0 + 800004b0: 000f1137 lui sp,0xf1 + 800004b4: f0f1011b addiw sp,sp,-241 + 800004b8: 00c11113 slli sp,sp,0xc + 800004bc: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800004c0: 0ff010b7 lui ra,0xff01 + 800004c4: ff00809b addiw ra,ra,-16 + 800004c8: 00000013 nop + 800004cc: 0020ff33 and t5,ra,sp + 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d4: 00200293 li t0,2 + 800004d8: fc521ce3 bne tp,t0,800004b0 + 800004dc: 00f00eb7 lui t4,0xf00 + 800004e0: 0f0e8e9b addiw t4,t4,240 + 800004e4: 01300193 li gp,19 + 800004e8: 17df1663 bne t5,t4,80000654 + +00000000800004ec : + 800004ec: 00000213 li tp,0 + 800004f0: 0f0f1137 lui sp,0xf0f1 + 800004f4: f0f1011b addiw sp,sp,-241 + 800004f8: 00ff00b7 lui ra,0xff0 + 800004fc: 0ff0809b addiw ra,ra,255 + 80000500: 00000013 nop + 80000504: 00000013 nop + 80000508: 0020ff33 and t5,ra,sp + 8000050c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000510: 00200293 li t0,2 + 80000514: fc521ee3 bne tp,t0,800004f0 + 80000518: 000f0eb7 lui t4,0xf0 + 8000051c: 00fe8e9b addiw t4,t4,15 + 80000520: 01400193 li gp,20 + 80000524: 13df1863 bne t5,t4,80000654 + +0000000080000528 : + 80000528: 00000213 li tp,0 + 8000052c: 0f0f1137 lui sp,0xf0f1 + 80000530: f0f1011b addiw sp,sp,-241 + 80000534: 00000013 nop + 80000538: 000100b7 lui ra,0x10 + 8000053c: f010809b addiw ra,ra,-255 + 80000540: 01009093 slli ra,ra,0x10 + 80000544: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000548: 0020ff33 and t5,ra,sp + 8000054c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000550: 00200293 li t0,2 + 80000554: fc521ce3 bne tp,t0,8000052c + 80000558: 0f001eb7 lui t4,0xf001 + 8000055c: f00e8e9b addiw t4,t4,-256 + 80000560: 01500193 li gp,21 + 80000564: 0fdf1863 bne t5,t4,80000654 + +0000000080000568 : + 80000568: 00000213 li tp,0 + 8000056c: 000f1137 lui sp,0xf1 + 80000570: f0f1011b addiw sp,sp,-241 + 80000574: 00c11113 slli sp,sp,0xc + 80000578: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 8000057c: 00000013 nop + 80000580: 0ff010b7 lui ra,0xff01 + 80000584: ff00809b addiw ra,ra,-16 + 80000588: 00000013 nop + 8000058c: 0020ff33 and t5,ra,sp + 80000590: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000594: 00200293 li t0,2 + 80000598: fc521ae3 bne tp,t0,8000056c + 8000059c: 00f00eb7 lui t4,0xf00 + 800005a0: 0f0e8e9b addiw t4,t4,240 + 800005a4: 01600193 li gp,22 + 800005a8: 0bdf1663 bne t5,t4,80000654 + +00000000800005ac : + 800005ac: 00000213 li tp,0 + 800005b0: 0f0f1137 lui sp,0xf0f1 + 800005b4: f0f1011b addiw sp,sp,-241 + 800005b8: 00000013 nop + 800005bc: 00000013 nop + 800005c0: 00ff00b7 lui ra,0xff0 + 800005c4: 0ff0809b addiw ra,ra,255 + 800005c8: 0020ff33 and t5,ra,sp + 800005cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005d0: 00200293 li t0,2 + 800005d4: fc521ee3 bne tp,t0,800005b0 + 800005d8: 000f0eb7 lui t4,0xf0 + 800005dc: 00fe8e9b addiw t4,t4,15 + 800005e0: 01700193 li gp,23 + 800005e4: 07df1863 bne t5,t4,80000654 + +00000000800005e8 : + 800005e8: 000100b7 lui ra,0x10 + 800005ec: f010809b addiw ra,ra,-255 + 800005f0: 01009093 slli ra,ra,0x10 + 800005f4: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800005f8: 00107133 and sp,zero,ra + 800005fc: 00000e93 li t4,0 + 80000600: 01800193 li gp,24 + 80000604: 05d11863 bne sp,t4,80000654 + +0000000080000608 : + 80000608: 00ff00b7 lui ra,0xff0 + 8000060c: 0ff0809b addiw ra,ra,255 + 80000610: 0000f133 and sp,ra,zero + 80000614: 00000e93 li t4,0 + 80000618: 01900193 li gp,25 + 8000061c: 03d11c63 bne sp,t4,80000654 + +0000000080000620 : + 80000620: 000070b3 and ra,zero,zero + 80000624: 00000e93 li t4,0 + 80000628: 01a00193 li gp,26 + 8000062c: 03d09463 bne ra,t4,80000654 + +0000000080000630 : + 80000630: 111110b7 lui ra,0x11111 + 80000634: 1110809b addiw ra,ra,273 + 80000638: 22222137 lui sp,0x22222 + 8000063c: 2221011b addiw sp,sp,546 + 80000640: 0020f033 and zero,ra,sp + 80000644: 00000e93 li t4,0 + 80000648: 01b00193 li gp,27 + 8000064c: 01d01463 bne zero,t4,80000654 + 80000650: 00301c63 bne zero,gp,80000668 + +0000000080000654 : + 80000654: 0ff0000f fence + 80000658: 00018063 beqz gp,80000658 + 8000065c: 00119193 slli gp,gp,0x1 + 80000660: 0011e193 ori gp,gp,1 + 80000664: 00000073 ecall + +0000000080000668 : + 80000668: 0ff0000f fence + 8000066c: 00100193 li gp,1 + 80000670: 00000073 ecall + 80000674: c0001073 unimp + 80000678: 0000 unimp + 8000067a: 0000 unimp + 8000067c: 0000 unimp + 8000067e: 0000 unimp + 80000680: 0000 unimp + 80000682: 0000 unimp diff --git a/Tests/isa/rv64ui-p-andi b/Tests/isa/rv64ui-p-andi new file mode 100644 index 0000000..92d44a6 Binary files /dev/null and b/Tests/isa/rv64ui-p-andi differ diff --git a/Tests/isa/rv64ui-p-andi.dump b/Tests/isa/rv64ui-p-andi.dump new file mode 100644 index 0000000..2349dd1 --- /dev/null +++ b/Tests/isa/rv64ui-p-andi.dump @@ -0,0 +1,265 @@ + +rv64ui-p-andi: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 000100b7 lui ra,0x10 + 80000100: f010809b addiw ra,ra,-255 + 80000104: 01009093 slli ra,ra,0x10 + 80000108: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000010c: f0f0ff13 andi t5,ra,-241 + 80000110: 00010eb7 lui t4,0x10 + 80000114: f01e8e9b addiw t4,t4,-255 + 80000118: 010e9e93 slli t4,t4,0x10 + 8000011c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80000120: 00200193 li gp,2 + 80000124: 1ddf1863 bne t5,t4,800002f4 + +0000000080000128 : + 80000128: 0ff010b7 lui ra,0xff01 + 8000012c: ff00809b addiw ra,ra,-16 + 80000130: 0f00ff13 andi t5,ra,240 + 80000134: 0f000e93 li t4,240 + 80000138: 00300193 li gp,3 + 8000013c: 1bdf1c63 bne t5,t4,800002f4 + +0000000080000140 : + 80000140: 00ff00b7 lui ra,0xff0 + 80000144: 0ff0809b addiw ra,ra,255 + 80000148: 70f0ff13 andi t5,ra,1807 + 8000014c: 00f00e93 li t4,15 + 80000150: 00400193 li gp,4 + 80000154: 1bdf1063 bne t5,t4,800002f4 + +0000000080000158 : + 80000158: 000f00b7 lui ra,0xf0 + 8000015c: 0ff0809b addiw ra,ra,255 + 80000160: 00c09093 slli ra,ra,0xc + 80000164: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80000168: 0f00ff13 andi t5,ra,240 + 8000016c: 00000e93 li t4,0 + 80000170: 00500193 li gp,5 + 80000174: 19df1063 bne t5,t4,800002f4 + +0000000080000178 : + 80000178: 000100b7 lui ra,0x10 + 8000017c: f010809b addiw ra,ra,-255 + 80000180: 01009093 slli ra,ra,0x10 + 80000184: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000188: 0f00f093 andi ra,ra,240 + 8000018c: 00000e93 li t4,0 + 80000190: 00600193 li gp,6 + 80000194: 17d09063 bne ra,t4,800002f4 + +0000000080000198 : + 80000198: 00000213 li tp,0 + 8000019c: 0ff010b7 lui ra,0xff01 + 800001a0: ff00809b addiw ra,ra,-16 + 800001a4: 70f0ff13 andi t5,ra,1807 + 800001a8: 000f0313 mv t1,t5 + 800001ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001b0: 00200293 li t0,2 + 800001b4: fe5214e3 bne tp,t0,8000019c + 800001b8: 70000e93 li t4,1792 + 800001bc: 00700193 li gp,7 + 800001c0: 13d31a63 bne t1,t4,800002f4 + +00000000800001c4 : + 800001c4: 00000213 li tp,0 + 800001c8: 00ff00b7 lui ra,0xff0 + 800001cc: 0ff0809b addiw ra,ra,255 + 800001d0: 0f00ff13 andi t5,ra,240 + 800001d4: 00000013 nop + 800001d8: 000f0313 mv t1,t5 + 800001dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001e0: 00200293 li t0,2 + 800001e4: fe5212e3 bne tp,t0,800001c8 + 800001e8: 0f000e93 li t4,240 + 800001ec: 00800193 li gp,8 + 800001f0: 11d31263 bne t1,t4,800002f4 + +00000000800001f4 : + 800001f4: 00000213 li tp,0 + 800001f8: 000f00b7 lui ra,0xf0 + 800001fc: 0ff0809b addiw ra,ra,255 + 80000200: 00c09093 slli ra,ra,0xc + 80000204: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80000208: f0f0ff13 andi t5,ra,-241 + 8000020c: 00000013 nop + 80000210: 00000013 nop + 80000214: 000f0313 mv t1,t5 + 80000218: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000021c: 00200293 li t0,2 + 80000220: fc521ce3 bne tp,t0,800001f8 + 80000224: 000f0eb7 lui t4,0xf0 + 80000228: 0ffe8e9b addiw t4,t4,255 + 8000022c: 00ce9e93 slli t4,t4,0xc + 80000230: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80000234: 00900193 li gp,9 + 80000238: 0bd31e63 bne t1,t4,800002f4 + +000000008000023c : + 8000023c: 00000213 li tp,0 + 80000240: 0ff010b7 lui ra,0xff01 + 80000244: ff00809b addiw ra,ra,-16 + 80000248: 70f0ff13 andi t5,ra,1807 + 8000024c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000250: 00200293 li t0,2 + 80000254: fe5216e3 bne tp,t0,80000240 + 80000258: 70000e93 li t4,1792 + 8000025c: 00a00193 li gp,10 + 80000260: 09df1a63 bne t5,t4,800002f4 + +0000000080000264 : + 80000264: 00000213 li tp,0 + 80000268: 00ff00b7 lui ra,0xff0 + 8000026c: 0ff0809b addiw ra,ra,255 + 80000270: 00000013 nop + 80000274: 0f00ff13 andi t5,ra,240 + 80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000027c: 00200293 li t0,2 + 80000280: fe5214e3 bne tp,t0,80000268 + 80000284: 0f000e93 li t4,240 + 80000288: 00b00193 li gp,11 + 8000028c: 07df1463 bne t5,t4,800002f4 + +0000000080000290 : + 80000290: 00000213 li tp,0 + 80000294: 000f00b7 lui ra,0xf0 + 80000298: 0ff0809b addiw ra,ra,255 + 8000029c: 00c09093 slli ra,ra,0xc + 800002a0: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 800002a4: 00000013 nop + 800002a8: 00000013 nop + 800002ac: 70f0ff13 andi t5,ra,1807 + 800002b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b4: 00200293 li t0,2 + 800002b8: fc521ee3 bne tp,t0,80000294 + 800002bc: 00f00e93 li t4,15 + 800002c0: 00c00193 li gp,12 + 800002c4: 03df1863 bne t5,t4,800002f4 + +00000000800002c8 : + 800002c8: 0f007093 andi ra,zero,240 + 800002cc: 00000e93 li t4,0 + 800002d0: 00d00193 li gp,13 + 800002d4: 03d09063 bne ra,t4,800002f4 + +00000000800002d8 : + 800002d8: 00ff00b7 lui ra,0xff0 + 800002dc: 0ff0809b addiw ra,ra,255 + 800002e0: 70f0f013 andi zero,ra,1807 + 800002e4: 00000e93 li t4,0 + 800002e8: 00e00193 li gp,14 + 800002ec: 01d01463 bne zero,t4,800002f4 + 800002f0: 00301c63 bne zero,gp,80000308 + +00000000800002f4 : + 800002f4: 0ff0000f fence + 800002f8: 00018063 beqz gp,800002f8 + 800002fc: 00119193 slli gp,gp,0x1 + 80000300: 0011e193 ori gp,gp,1 + 80000304: 00000073 ecall + +0000000080000308 : + 80000308: 0ff0000f fence + 8000030c: 00100193 li gp,1 + 80000310: 00000073 ecall + 80000314: c0001073 unimp + 80000318: 0000 unimp + 8000031a: 0000 unimp + 8000031c: 0000 unimp + 8000031e: 0000 unimp + 80000320: 0000 unimp + 80000322: 0000 unimp + 80000324: 0000 unimp + 80000326: 0000 unimp + 80000328: 0000 unimp + 8000032a: 0000 unimp + 8000032c: 0000 unimp + 8000032e: 0000 unimp + 80000330: 0000 unimp + 80000332: 0000 unimp + 80000334: 0000 unimp + 80000336: 0000 unimp + 80000338: 0000 unimp + 8000033a: 0000 unimp + 8000033c: 0000 unimp + 8000033e: 0000 unimp + 80000340: 0000 unimp + 80000342: 0000 unimp diff --git a/Tests/isa/rv64ui-p-auipc b/Tests/isa/rv64ui-p-auipc new file mode 100644 index 0000000..745913a Binary files /dev/null and b/Tests/isa/rv64ui-p-auipc differ diff --git a/Tests/isa/rv64ui-p-auipc.dump b/Tests/isa/rv64ui-p-auipc.dump new file mode 100644 index 0000000..0302a06 --- /dev/null +++ b/Tests/isa/rv64ui-p-auipc.dump @@ -0,0 +1,125 @@ + +rv64ui-p-auipc: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000013 nop + 80000100: 00002517 auipc a0,0x2 + 80000104: 71c50513 addi a0,a0,1820 # 8000281c <_end+0x81c> + 80000108: 004005ef jal a1,8000010c + 8000010c: 40b50533 sub a0,a0,a1 + 80000110: 00002eb7 lui t4,0x2 + 80000114: 710e8e9b addiw t4,t4,1808 + 80000118: 00200193 li gp,2 + 8000011c: 03d51463 bne a0,t4,80000144 + +0000000080000120 : + 80000120: ffffe517 auipc a0,0xffffe + 80000124: 8fc50513 addi a0,a0,-1796 # 7fffda1c <_start-0x25e4> + 80000128: 004005ef jal a1,8000012c + 8000012c: 40b50533 sub a0,a0,a1 + 80000130: ffffeeb7 lui t4,0xffffe + 80000134: 8f0e8e9b addiw t4,t4,-1808 + 80000138: 00300193 li gp,3 + 8000013c: 01d51463 bne a0,t4,80000144 + 80000140: 00301c63 bne zero,gp,80000158 + +0000000080000144 : + 80000144: 0ff0000f fence + 80000148: 00018063 beqz gp,80000148 + 8000014c: 00119193 slli gp,gp,0x1 + 80000150: 0011e193 ori gp,gp,1 + 80000154: 00000073 ecall + +0000000080000158 : + 80000158: 0ff0000f fence + 8000015c: 00100193 li gp,1 + 80000160: 00000073 ecall + 80000164: c0001073 unimp + 80000168: 0000 unimp + 8000016a: 0000 unimp + 8000016c: 0000 unimp + 8000016e: 0000 unimp + 80000170: 0000 unimp + 80000172: 0000 unimp + 80000174: 0000 unimp + 80000176: 0000 unimp + 80000178: 0000 unimp + 8000017a: 0000 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp diff --git a/Tests/isa/rv64ui-p-beq b/Tests/isa/rv64ui-p-beq new file mode 100644 index 0000000..8cd9d32 Binary files /dev/null and b/Tests/isa/rv64ui-p-beq differ diff --git a/Tests/isa/rv64ui-p-beq.dump b/Tests/isa/rv64ui-p-beq.dump new file mode 100644 index 0000000..d09e175 --- /dev/null +++ b/Tests/isa/rv64ui-p-beq.dump @@ -0,0 +1,325 @@ + +rv64ui-p-beq: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000093 li ra,0 + 80000104: 00000113 li sp,0 + 80000108: 00208663 beq ra,sp,80000114 + 8000010c: 2a301863 bne zero,gp,800003bc + 80000110: 00301663 bne zero,gp,8000011c + 80000114: fe208ee3 beq ra,sp,80000110 + 80000118: 2a301263 bne zero,gp,800003bc + +000000008000011c : + 8000011c: 00300193 li gp,3 + 80000120: 00100093 li ra,1 + 80000124: 00100113 li sp,1 + 80000128: 00208663 beq ra,sp,80000134 + 8000012c: 28301863 bne zero,gp,800003bc + 80000130: 00301663 bne zero,gp,8000013c + 80000134: fe208ee3 beq ra,sp,80000130 + 80000138: 28301263 bne zero,gp,800003bc + +000000008000013c : + 8000013c: 00400193 li gp,4 + 80000140: fff00093 li ra,-1 + 80000144: fff00113 li sp,-1 + 80000148: 00208663 beq ra,sp,80000154 + 8000014c: 26301863 bne zero,gp,800003bc + 80000150: 00301663 bne zero,gp,8000015c + 80000154: fe208ee3 beq ra,sp,80000150 + 80000158: 26301263 bne zero,gp,800003bc + +000000008000015c : + 8000015c: 00500193 li gp,5 + 80000160: 00000093 li ra,0 + 80000164: 00100113 li sp,1 + 80000168: 00208463 beq ra,sp,80000170 + 8000016c: 00301463 bne zero,gp,80000174 + 80000170: 24301663 bne zero,gp,800003bc + 80000174: fe208ee3 beq ra,sp,80000170 + +0000000080000178 : + 80000178: 00600193 li gp,6 + 8000017c: 00100093 li ra,1 + 80000180: 00000113 li sp,0 + 80000184: 00208463 beq ra,sp,8000018c + 80000188: 00301463 bne zero,gp,80000190 + 8000018c: 22301863 bne zero,gp,800003bc + 80000190: fe208ee3 beq ra,sp,8000018c + +0000000080000194 : + 80000194: 00700193 li gp,7 + 80000198: fff00093 li ra,-1 + 8000019c: 00100113 li sp,1 + 800001a0: 00208463 beq ra,sp,800001a8 + 800001a4: 00301463 bne zero,gp,800001ac + 800001a8: 20301a63 bne zero,gp,800003bc + 800001ac: fe208ee3 beq ra,sp,800001a8 + +00000000800001b0 : + 800001b0: 00800193 li gp,8 + 800001b4: 00100093 li ra,1 + 800001b8: fff00113 li sp,-1 + 800001bc: 00208463 beq ra,sp,800001c4 + 800001c0: 00301463 bne zero,gp,800001c8 + 800001c4: 1e301c63 bne zero,gp,800003bc + 800001c8: fe208ee3 beq ra,sp,800001c4 + +00000000800001cc : + 800001cc: 00900193 li gp,9 + 800001d0: 00000213 li tp,0 + 800001d4: 00000093 li ra,0 + 800001d8: fff00113 li sp,-1 + 800001dc: 1e208063 beq ra,sp,800003bc + 800001e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001e4: 00200293 li t0,2 + 800001e8: fe5216e3 bne tp,t0,800001d4 + +00000000800001ec : + 800001ec: 00a00193 li gp,10 + 800001f0: 00000213 li tp,0 + 800001f4: 00000093 li ra,0 + 800001f8: fff00113 li sp,-1 + 800001fc: 00000013 nop + 80000200: 1a208e63 beq ra,sp,800003bc + 80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000208: 00200293 li t0,2 + 8000020c: fe5214e3 bne tp,t0,800001f4 + +0000000080000210 : + 80000210: 00b00193 li gp,11 + 80000214: 00000213 li tp,0 + 80000218: 00000093 li ra,0 + 8000021c: fff00113 li sp,-1 + 80000220: 00000013 nop + 80000224: 00000013 nop + 80000228: 18208a63 beq ra,sp,800003bc + 8000022c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000230: 00200293 li t0,2 + 80000234: fe5212e3 bne tp,t0,80000218 + +0000000080000238 : + 80000238: 00c00193 li gp,12 + 8000023c: 00000213 li tp,0 + 80000240: 00000093 li ra,0 + 80000244: 00000013 nop + 80000248: fff00113 li sp,-1 + 8000024c: 16208863 beq ra,sp,800003bc + 80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000254: 00200293 li t0,2 + 80000258: fe5214e3 bne tp,t0,80000240 + +000000008000025c : + 8000025c: 00d00193 li gp,13 + 80000260: 00000213 li tp,0 + 80000264: 00000093 li ra,0 + 80000268: 00000013 nop + 8000026c: fff00113 li sp,-1 + 80000270: 00000013 nop + 80000274: 14208463 beq ra,sp,800003bc + 80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000027c: 00200293 li t0,2 + 80000280: fe5212e3 bne tp,t0,80000264 + +0000000080000284 : + 80000284: 00e00193 li gp,14 + 80000288: 00000213 li tp,0 + 8000028c: 00000093 li ra,0 + 80000290: 00000013 nop + 80000294: 00000013 nop + 80000298: fff00113 li sp,-1 + 8000029c: 12208063 beq ra,sp,800003bc + 800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a4: 00200293 li t0,2 + 800002a8: fe5212e3 bne tp,t0,8000028c + +00000000800002ac : + 800002ac: 00f00193 li gp,15 + 800002b0: 00000213 li tp,0 + 800002b4: 00000093 li ra,0 + 800002b8: fff00113 li sp,-1 + 800002bc: 10208063 beq ra,sp,800003bc + 800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002c4: 00200293 li t0,2 + 800002c8: fe5216e3 bne tp,t0,800002b4 + +00000000800002cc : + 800002cc: 01000193 li gp,16 + 800002d0: 00000213 li tp,0 + 800002d4: 00000093 li ra,0 + 800002d8: fff00113 li sp,-1 + 800002dc: 00000013 nop + 800002e0: 0c208e63 beq ra,sp,800003bc + 800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002e8: 00200293 li t0,2 + 800002ec: fe5214e3 bne tp,t0,800002d4 + +00000000800002f0 : + 800002f0: 01100193 li gp,17 + 800002f4: 00000213 li tp,0 + 800002f8: 00000093 li ra,0 + 800002fc: fff00113 li sp,-1 + 80000300: 00000013 nop + 80000304: 00000013 nop + 80000308: 0a208a63 beq ra,sp,800003bc + 8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000310: 00200293 li t0,2 + 80000314: fe5212e3 bne tp,t0,800002f8 + +0000000080000318 : + 80000318: 01200193 li gp,18 + 8000031c: 00000213 li tp,0 + 80000320: 00000093 li ra,0 + 80000324: 00000013 nop + 80000328: fff00113 li sp,-1 + 8000032c: 08208863 beq ra,sp,800003bc + 80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000334: 00200293 li t0,2 + 80000338: fe5214e3 bne tp,t0,80000320 + +000000008000033c : + 8000033c: 01300193 li gp,19 + 80000340: 00000213 li tp,0 + 80000344: 00000093 li ra,0 + 80000348: 00000013 nop + 8000034c: fff00113 li sp,-1 + 80000350: 00000013 nop + 80000354: 06208463 beq ra,sp,800003bc + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fe5212e3 bne tp,t0,80000344 + +0000000080000364 : + 80000364: 01400193 li gp,20 + 80000368: 00000213 li tp,0 + 8000036c: 00000093 li ra,0 + 80000370: 00000013 nop + 80000374: 00000013 nop + 80000378: fff00113 li sp,-1 + 8000037c: 04208063 beq ra,sp,800003bc + 80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000384: 00200293 li t0,2 + 80000388: fe5212e3 bne tp,t0,8000036c + +000000008000038c : + 8000038c: 00100093 li ra,1 + 80000390: 00000a63 beqz zero,800003a4 + 80000394: 00108093 addi ra,ra,1 + 80000398: 00108093 addi ra,ra,1 + 8000039c: 00108093 addi ra,ra,1 + 800003a0: 00108093 addi ra,ra,1 + 800003a4: 00108093 addi ra,ra,1 + 800003a8: 00108093 addi ra,ra,1 + 800003ac: 00300e93 li t4,3 + 800003b0: 01500193 li gp,21 + 800003b4: 01d09463 bne ra,t4,800003bc + 800003b8: 00301c63 bne zero,gp,800003d0 + +00000000800003bc : + 800003bc: 0ff0000f fence + 800003c0: 00018063 beqz gp,800003c0 + 800003c4: 00119193 slli gp,gp,0x1 + 800003c8: 0011e193 ori gp,gp,1 + 800003cc: 00000073 ecall + +00000000800003d0 : + 800003d0: 0ff0000f fence + 800003d4: 00100193 li gp,1 + 800003d8: 00000073 ecall + 800003dc: c0001073 unimp + 800003e0: 0000 unimp + 800003e2: 0000 unimp + 800003e4: 0000 unimp + 800003e6: 0000 unimp + 800003e8: 0000 unimp + 800003ea: 0000 unimp + 800003ec: 0000 unimp + 800003ee: 0000 unimp + 800003f0: 0000 unimp + 800003f2: 0000 unimp + 800003f4: 0000 unimp + 800003f6: 0000 unimp + 800003f8: 0000 unimp + 800003fa: 0000 unimp + 800003fc: 0000 unimp + 800003fe: 0000 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp diff --git a/Tests/isa/rv64ui-p-bge b/Tests/isa/rv64ui-p-bge new file mode 100644 index 0000000..b8c17e4 Binary files /dev/null and b/Tests/isa/rv64ui-p-bge differ diff --git a/Tests/isa/rv64ui-p-bge.dump b/Tests/isa/rv64ui-p-bge.dump new file mode 100644 index 0000000..bd863ee --- /dev/null +++ b/Tests/isa/rv64ui-p-bge.dump @@ -0,0 +1,339 @@ + +rv64ui-p-bge: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000093 li ra,0 + 80000104: 00000113 li sp,0 + 80000108: 0020d663 ble sp,ra,80000114 + 8000010c: 30301863 bne zero,gp,8000041c + 80000110: 00301663 bne zero,gp,8000011c + 80000114: fe20dee3 ble sp,ra,80000110 + 80000118: 30301263 bne zero,gp,8000041c + +000000008000011c : + 8000011c: 00300193 li gp,3 + 80000120: 00100093 li ra,1 + 80000124: 00100113 li sp,1 + 80000128: 0020d663 ble sp,ra,80000134 + 8000012c: 2e301863 bne zero,gp,8000041c + 80000130: 00301663 bne zero,gp,8000013c + 80000134: fe20dee3 ble sp,ra,80000130 + 80000138: 2e301263 bne zero,gp,8000041c + +000000008000013c : + 8000013c: 00400193 li gp,4 + 80000140: fff00093 li ra,-1 + 80000144: fff00113 li sp,-1 + 80000148: 0020d663 ble sp,ra,80000154 + 8000014c: 2c301863 bne zero,gp,8000041c + 80000150: 00301663 bne zero,gp,8000015c + 80000154: fe20dee3 ble sp,ra,80000150 + 80000158: 2c301263 bne zero,gp,8000041c + +000000008000015c : + 8000015c: 00500193 li gp,5 + 80000160: 00100093 li ra,1 + 80000164: 00000113 li sp,0 + 80000168: 0020d663 ble sp,ra,80000174 + 8000016c: 2a301863 bne zero,gp,8000041c + 80000170: 00301663 bne zero,gp,8000017c + 80000174: fe20dee3 ble sp,ra,80000170 + 80000178: 2a301263 bne zero,gp,8000041c + +000000008000017c : + 8000017c: 00600193 li gp,6 + 80000180: 00100093 li ra,1 + 80000184: fff00113 li sp,-1 + 80000188: 0020d663 ble sp,ra,80000194 + 8000018c: 28301863 bne zero,gp,8000041c + 80000190: 00301663 bne zero,gp,8000019c + 80000194: fe20dee3 ble sp,ra,80000190 + 80000198: 28301263 bne zero,gp,8000041c + +000000008000019c : + 8000019c: 00700193 li gp,7 + 800001a0: fff00093 li ra,-1 + 800001a4: ffe00113 li sp,-2 + 800001a8: 0020d663 ble sp,ra,800001b4 + 800001ac: 26301863 bne zero,gp,8000041c + 800001b0: 00301663 bne zero,gp,800001bc + 800001b4: fe20dee3 ble sp,ra,800001b0 + 800001b8: 26301263 bne zero,gp,8000041c + +00000000800001bc : + 800001bc: 00800193 li gp,8 + 800001c0: 00000093 li ra,0 + 800001c4: 00100113 li sp,1 + 800001c8: 0020d463 ble sp,ra,800001d0 + 800001cc: 00301463 bne zero,gp,800001d4 + 800001d0: 24301663 bne zero,gp,8000041c + 800001d4: fe20dee3 ble sp,ra,800001d0 + +00000000800001d8 : + 800001d8: 00900193 li gp,9 + 800001dc: fff00093 li ra,-1 + 800001e0: 00100113 li sp,1 + 800001e4: 0020d463 ble sp,ra,800001ec + 800001e8: 00301463 bne zero,gp,800001f0 + 800001ec: 22301863 bne zero,gp,8000041c + 800001f0: fe20dee3 ble sp,ra,800001ec + +00000000800001f4 : + 800001f4: 00a00193 li gp,10 + 800001f8: ffe00093 li ra,-2 + 800001fc: fff00113 li sp,-1 + 80000200: 0020d463 ble sp,ra,80000208 + 80000204: 00301463 bne zero,gp,8000020c + 80000208: 20301a63 bne zero,gp,8000041c + 8000020c: fe20dee3 ble sp,ra,80000208 + +0000000080000210 : + 80000210: 00b00193 li gp,11 + 80000214: ffe00093 li ra,-2 + 80000218: 00100113 li sp,1 + 8000021c: 0020d463 ble sp,ra,80000224 + 80000220: 00301463 bne zero,gp,80000228 + 80000224: 1e301c63 bne zero,gp,8000041c + 80000228: fe20dee3 ble sp,ra,80000224 + +000000008000022c : + 8000022c: 00c00193 li gp,12 + 80000230: 00000213 li tp,0 + 80000234: fff00093 li ra,-1 + 80000238: 00000113 li sp,0 + 8000023c: 1e20d063 ble sp,ra,8000041c + 80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000244: 00200293 li t0,2 + 80000248: fe5216e3 bne tp,t0,80000234 + +000000008000024c : + 8000024c: 00d00193 li gp,13 + 80000250: 00000213 li tp,0 + 80000254: fff00093 li ra,-1 + 80000258: 00000113 li sp,0 + 8000025c: 00000013 nop + 80000260: 1a20de63 ble sp,ra,8000041c + 80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000268: 00200293 li t0,2 + 8000026c: fe5214e3 bne tp,t0,80000254 + +0000000080000270 : + 80000270: 00e00193 li gp,14 + 80000274: 00000213 li tp,0 + 80000278: fff00093 li ra,-1 + 8000027c: 00000113 li sp,0 + 80000280: 00000013 nop + 80000284: 00000013 nop + 80000288: 1820da63 ble sp,ra,8000041c + 8000028c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000290: 00200293 li t0,2 + 80000294: fe5212e3 bne tp,t0,80000278 + +0000000080000298 : + 80000298: 00f00193 li gp,15 + 8000029c: 00000213 li tp,0 + 800002a0: fff00093 li ra,-1 + 800002a4: 00000013 nop + 800002a8: 00000113 li sp,0 + 800002ac: 1620d863 ble sp,ra,8000041c + 800002b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b4: 00200293 li t0,2 + 800002b8: fe5214e3 bne tp,t0,800002a0 + +00000000800002bc : + 800002bc: 01000193 li gp,16 + 800002c0: 00000213 li tp,0 + 800002c4: fff00093 li ra,-1 + 800002c8: 00000013 nop + 800002cc: 00000113 li sp,0 + 800002d0: 00000013 nop + 800002d4: 1420d463 ble sp,ra,8000041c + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5212e3 bne tp,t0,800002c4 + +00000000800002e4 : + 800002e4: 01100193 li gp,17 + 800002e8: 00000213 li tp,0 + 800002ec: fff00093 li ra,-1 + 800002f0: 00000013 nop + 800002f4: 00000013 nop + 800002f8: 00000113 li sp,0 + 800002fc: 1220d063 ble sp,ra,8000041c + 80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000304: 00200293 li t0,2 + 80000308: fe5212e3 bne tp,t0,800002ec + +000000008000030c : + 8000030c: 01200193 li gp,18 + 80000310: 00000213 li tp,0 + 80000314: fff00093 li ra,-1 + 80000318: 00000113 li sp,0 + 8000031c: 1020d063 ble sp,ra,8000041c + 80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000324: 00200293 li t0,2 + 80000328: fe5216e3 bne tp,t0,80000314 + +000000008000032c : + 8000032c: 01300193 li gp,19 + 80000330: 00000213 li tp,0 + 80000334: fff00093 li ra,-1 + 80000338: 00000113 li sp,0 + 8000033c: 00000013 nop + 80000340: 0c20de63 ble sp,ra,8000041c + 80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000348: 00200293 li t0,2 + 8000034c: fe5214e3 bne tp,t0,80000334 + +0000000080000350 : + 80000350: 01400193 li gp,20 + 80000354: 00000213 li tp,0 + 80000358: fff00093 li ra,-1 + 8000035c: 00000113 li sp,0 + 80000360: 00000013 nop + 80000364: 00000013 nop + 80000368: 0a20da63 ble sp,ra,8000041c + 8000036c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000370: 00200293 li t0,2 + 80000374: fe5212e3 bne tp,t0,80000358 + +0000000080000378 : + 80000378: 01500193 li gp,21 + 8000037c: 00000213 li tp,0 + 80000380: fff00093 li ra,-1 + 80000384: 00000013 nop + 80000388: 00000113 li sp,0 + 8000038c: 0820d863 ble sp,ra,8000041c + 80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000394: 00200293 li t0,2 + 80000398: fe5214e3 bne tp,t0,80000380 + +000000008000039c : + 8000039c: 01600193 li gp,22 + 800003a0: 00000213 li tp,0 + 800003a4: fff00093 li ra,-1 + 800003a8: 00000013 nop + 800003ac: 00000113 li sp,0 + 800003b0: 00000013 nop + 800003b4: 0620d463 ble sp,ra,8000041c + 800003b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003bc: 00200293 li t0,2 + 800003c0: fe5212e3 bne tp,t0,800003a4 + +00000000800003c4 : + 800003c4: 01700193 li gp,23 + 800003c8: 00000213 li tp,0 + 800003cc: fff00093 li ra,-1 + 800003d0: 00000013 nop + 800003d4: 00000013 nop + 800003d8: 00000113 li sp,0 + 800003dc: 0420d063 ble sp,ra,8000041c + 800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003e4: 00200293 li t0,2 + 800003e8: fe5212e3 bne tp,t0,800003cc + +00000000800003ec : + 800003ec: 00100093 li ra,1 + 800003f0: 0000da63 bgez ra,80000404 + 800003f4: 00108093 addi ra,ra,1 + 800003f8: 00108093 addi ra,ra,1 + 800003fc: 00108093 addi ra,ra,1 + 80000400: 00108093 addi ra,ra,1 + 80000404: 00108093 addi ra,ra,1 + 80000408: 00108093 addi ra,ra,1 + 8000040c: 00300e93 li t4,3 + 80000410: 01800193 li gp,24 + 80000414: 01d09463 bne ra,t4,8000041c + 80000418: 00301c63 bne zero,gp,80000430 + +000000008000041c : + 8000041c: 0ff0000f fence + 80000420: 00018063 beqz gp,80000420 + 80000424: 00119193 slli gp,gp,0x1 + 80000428: 0011e193 ori gp,gp,1 + 8000042c: 00000073 ecall + +0000000080000430 : + 80000430: 0ff0000f fence + 80000434: 00100193 li gp,1 + 80000438: 00000073 ecall + 8000043c: c0001073 unimp + 80000440: 0000 unimp + 80000442: 0000 unimp diff --git a/Tests/isa/rv64ui-p-bgeu b/Tests/isa/rv64ui-p-bgeu new file mode 100644 index 0000000..029d02d Binary files /dev/null and b/Tests/isa/rv64ui-p-bgeu differ diff --git a/Tests/isa/rv64ui-p-bgeu.dump b/Tests/isa/rv64ui-p-bgeu.dump new file mode 100644 index 0000000..c773c7d --- /dev/null +++ b/Tests/isa/rv64ui-p-bgeu.dump @@ -0,0 +1,413 @@ + +rv64ui-p-bgeu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000093 li ra,0 + 80000104: 00000113 li sp,0 + 80000108: 0020f663 bleu sp,ra,80000114 + 8000010c: 3e301463 bne zero,gp,800004f4 + 80000110: 00301663 bne zero,gp,8000011c + 80000114: fe20fee3 bleu sp,ra,80000110 + 80000118: 3c301e63 bne zero,gp,800004f4 + +000000008000011c : + 8000011c: 00300193 li gp,3 + 80000120: 00100093 li ra,1 + 80000124: 00100113 li sp,1 + 80000128: 0020f663 bleu sp,ra,80000134 + 8000012c: 3c301463 bne zero,gp,800004f4 + 80000130: 00301663 bne zero,gp,8000013c + 80000134: fe20fee3 bleu sp,ra,80000130 + 80000138: 3a301e63 bne zero,gp,800004f4 + +000000008000013c : + 8000013c: 00400193 li gp,4 + 80000140: 0010009b addiw ra,zero,1 + 80000144: 02009093 slli ra,ra,0x20 + 80000148: fff08093 addi ra,ra,-1 + 8000014c: 0010011b addiw sp,zero,1 + 80000150: 02011113 slli sp,sp,0x20 + 80000154: fff10113 addi sp,sp,-1 + 80000158: 0020f663 bleu sp,ra,80000164 + 8000015c: 38301c63 bne zero,gp,800004f4 + 80000160: 00301663 bne zero,gp,8000016c + 80000164: fe20fee3 bleu sp,ra,80000160 + 80000168: 38301663 bne zero,gp,800004f4 + +000000008000016c : + 8000016c: 00500193 li gp,5 + 80000170: 00100093 li ra,1 + 80000174: 00000113 li sp,0 + 80000178: 0020f663 bleu sp,ra,80000184 + 8000017c: 36301c63 bne zero,gp,800004f4 + 80000180: 00301663 bne zero,gp,8000018c + 80000184: fe20fee3 bleu sp,ra,80000180 + 80000188: 36301663 bne zero,gp,800004f4 + +000000008000018c : + 8000018c: 00600193 li gp,6 + 80000190: 0010009b addiw ra,zero,1 + 80000194: 02009093 slli ra,ra,0x20 + 80000198: fff08093 addi ra,ra,-1 + 8000019c: 0010011b addiw sp,zero,1 + 800001a0: 02011113 slli sp,sp,0x20 + 800001a4: ffe10113 addi sp,sp,-2 + 800001a8: 0020f663 bleu sp,ra,800001b4 + 800001ac: 34301463 bne zero,gp,800004f4 + 800001b0: 00301663 bne zero,gp,800001bc + 800001b4: fe20fee3 bleu sp,ra,800001b0 + 800001b8: 32301e63 bne zero,gp,800004f4 + +00000000800001bc : + 800001bc: 00700193 li gp,7 + 800001c0: 0010009b addiw ra,zero,1 + 800001c4: 02009093 slli ra,ra,0x20 + 800001c8: fff08093 addi ra,ra,-1 + 800001cc: 00000113 li sp,0 + 800001d0: 0020f663 bleu sp,ra,800001dc + 800001d4: 32301063 bne zero,gp,800004f4 + 800001d8: 00301663 bne zero,gp,800001e4 + 800001dc: fe20fee3 bleu sp,ra,800001d8 + 800001e0: 30301a63 bne zero,gp,800004f4 + +00000000800001e4 : + 800001e4: 00800193 li gp,8 + 800001e8: 00000093 li ra,0 + 800001ec: 00100113 li sp,1 + 800001f0: 0020f463 bleu sp,ra,800001f8 + 800001f4: 00301463 bne zero,gp,800001fc + 800001f8: 2e301e63 bne zero,gp,800004f4 + 800001fc: fe20fee3 bleu sp,ra,800001f8 + +0000000080000200 : + 80000200: 00900193 li gp,9 + 80000204: 0010009b addiw ra,zero,1 + 80000208: 02009093 slli ra,ra,0x20 + 8000020c: ffe08093 addi ra,ra,-2 + 80000210: 0010011b addiw sp,zero,1 + 80000214: 02011113 slli sp,sp,0x20 + 80000218: fff10113 addi sp,sp,-1 + 8000021c: 0020f463 bleu sp,ra,80000224 + 80000220: 00301463 bne zero,gp,80000228 + 80000224: 2c301863 bne zero,gp,800004f4 + 80000228: fe20fee3 bleu sp,ra,80000224 + +000000008000022c : + 8000022c: 00a00193 li gp,10 + 80000230: 00000093 li ra,0 + 80000234: 0010011b addiw sp,zero,1 + 80000238: 02011113 slli sp,sp,0x20 + 8000023c: fff10113 addi sp,sp,-1 + 80000240: 0020f463 bleu sp,ra,80000248 + 80000244: 00301463 bne zero,gp,8000024c + 80000248: 2a301663 bne zero,gp,800004f4 + 8000024c: fe20fee3 bleu sp,ra,80000248 + +0000000080000250 : + 80000250: 00b00193 li gp,11 + 80000254: 800000b7 lui ra,0x80000 + 80000258: fff0809b addiw ra,ra,-1 + 8000025c: 0010011b addiw sp,zero,1 + 80000260: 01f11113 slli sp,sp,0x1f + 80000264: 0020f463 bleu sp,ra,8000026c + 80000268: 00301463 bne zero,gp,80000270 + 8000026c: 28301463 bne zero,gp,800004f4 + 80000270: fe20fee3 bleu sp,ra,8000026c + +0000000080000274 : + 80000274: 00c00193 li gp,12 + 80000278: 00000213 li tp,0 + 8000027c: 00f0009b addiw ra,zero,15 + 80000280: 01c09093 slli ra,ra,0x1c + 80000284: fff08093 addi ra,ra,-1 # ffffffff7fffffff <_end+0xfffffffeffffdfff> + 80000288: 00f0011b addiw sp,zero,15 + 8000028c: 01c11113 slli sp,sp,0x1c + 80000290: 2620f263 bleu sp,ra,800004f4 + 80000294: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000298: 00200293 li t0,2 + 8000029c: fe5210e3 bne tp,t0,8000027c + +00000000800002a0 : + 800002a0: 00d00193 li gp,13 + 800002a4: 00000213 li tp,0 + 800002a8: 00f0009b addiw ra,zero,15 + 800002ac: 01c09093 slli ra,ra,0x1c + 800002b0: fff08093 addi ra,ra,-1 + 800002b4: 00f0011b addiw sp,zero,15 + 800002b8: 01c11113 slli sp,sp,0x1c + 800002bc: 00000013 nop + 800002c0: 2220fa63 bleu sp,ra,800004f4 + 800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002c8: 00200293 li t0,2 + 800002cc: fc521ee3 bne tp,t0,800002a8 + +00000000800002d0 : + 800002d0: 00e00193 li gp,14 + 800002d4: 00000213 li tp,0 + 800002d8: 00f0009b addiw ra,zero,15 + 800002dc: 01c09093 slli ra,ra,0x1c + 800002e0: fff08093 addi ra,ra,-1 + 800002e4: 00f0011b addiw sp,zero,15 + 800002e8: 01c11113 slli sp,sp,0x1c + 800002ec: 00000013 nop + 800002f0: 00000013 nop + 800002f4: 2020f063 bleu sp,ra,800004f4 + 800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002fc: 00200293 li t0,2 + 80000300: fc521ce3 bne tp,t0,800002d8 + +0000000080000304 : + 80000304: 00f00193 li gp,15 + 80000308: 00000213 li tp,0 + 8000030c: 00f0009b addiw ra,zero,15 + 80000310: 01c09093 slli ra,ra,0x1c + 80000314: fff08093 addi ra,ra,-1 + 80000318: 00000013 nop + 8000031c: 00f0011b addiw sp,zero,15 + 80000320: 01c11113 slli sp,sp,0x1c + 80000324: 1c20f863 bleu sp,ra,800004f4 + 80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000032c: 00200293 li t0,2 + 80000330: fc521ee3 bne tp,t0,8000030c + +0000000080000334 : + 80000334: 01000193 li gp,16 + 80000338: 00000213 li tp,0 + 8000033c: 00f0009b addiw ra,zero,15 + 80000340: 01c09093 slli ra,ra,0x1c + 80000344: fff08093 addi ra,ra,-1 + 80000348: 00000013 nop + 8000034c: 00f0011b addiw sp,zero,15 + 80000350: 01c11113 slli sp,sp,0x1c + 80000354: 00000013 nop + 80000358: 1820fe63 bleu sp,ra,800004f4 + 8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000360: 00200293 li t0,2 + 80000364: fc521ce3 bne tp,t0,8000033c + +0000000080000368 : + 80000368: 01100193 li gp,17 + 8000036c: 00000213 li tp,0 + 80000370: 00f0009b addiw ra,zero,15 + 80000374: 01c09093 slli ra,ra,0x1c + 80000378: fff08093 addi ra,ra,-1 + 8000037c: 00000013 nop + 80000380: 00000013 nop + 80000384: 00f0011b addiw sp,zero,15 + 80000388: 01c11113 slli sp,sp,0x1c + 8000038c: 1620f463 bleu sp,ra,800004f4 + 80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000394: 00200293 li t0,2 + 80000398: fc521ce3 bne tp,t0,80000370 + +000000008000039c : + 8000039c: 01200193 li gp,18 + 800003a0: 00000213 li tp,0 + 800003a4: 00f0009b addiw ra,zero,15 + 800003a8: 01c09093 slli ra,ra,0x1c + 800003ac: fff08093 addi ra,ra,-1 + 800003b0: 00f0011b addiw sp,zero,15 + 800003b4: 01c11113 slli sp,sp,0x1c + 800003b8: 1220fe63 bleu sp,ra,800004f4 + 800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c0: 00200293 li t0,2 + 800003c4: fe5210e3 bne tp,t0,800003a4 + +00000000800003c8 : + 800003c8: 01300193 li gp,19 + 800003cc: 00000213 li tp,0 + 800003d0: 00f0009b addiw ra,zero,15 + 800003d4: 01c09093 slli ra,ra,0x1c + 800003d8: fff08093 addi ra,ra,-1 + 800003dc: 00f0011b addiw sp,zero,15 + 800003e0: 01c11113 slli sp,sp,0x1c + 800003e4: 00000013 nop + 800003e8: 1020f663 bleu sp,ra,800004f4 + 800003ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003f0: 00200293 li t0,2 + 800003f4: fc521ee3 bne tp,t0,800003d0 + +00000000800003f8 : + 800003f8: 01400193 li gp,20 + 800003fc: 00000213 li tp,0 + 80000400: 00f0009b addiw ra,zero,15 + 80000404: 01c09093 slli ra,ra,0x1c + 80000408: fff08093 addi ra,ra,-1 + 8000040c: 00f0011b addiw sp,zero,15 + 80000410: 01c11113 slli sp,sp,0x1c + 80000414: 00000013 nop + 80000418: 00000013 nop + 8000041c: 0c20fc63 bleu sp,ra,800004f4 + 80000420: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000424: 00200293 li t0,2 + 80000428: fc521ce3 bne tp,t0,80000400 + +000000008000042c : + 8000042c: 01500193 li gp,21 + 80000430: 00000213 li tp,0 + 80000434: 00f0009b addiw ra,zero,15 + 80000438: 01c09093 slli ra,ra,0x1c + 8000043c: fff08093 addi ra,ra,-1 + 80000440: 00000013 nop + 80000444: 00f0011b addiw sp,zero,15 + 80000448: 01c11113 slli sp,sp,0x1c + 8000044c: 0a20f463 bleu sp,ra,800004f4 + 80000450: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000454: 00200293 li t0,2 + 80000458: fc521ee3 bne tp,t0,80000434 + +000000008000045c : + 8000045c: 01600193 li gp,22 + 80000460: 00000213 li tp,0 + 80000464: 00f0009b addiw ra,zero,15 + 80000468: 01c09093 slli ra,ra,0x1c + 8000046c: fff08093 addi ra,ra,-1 + 80000470: 00000013 nop + 80000474: 00f0011b addiw sp,zero,15 + 80000478: 01c11113 slli sp,sp,0x1c + 8000047c: 00000013 nop + 80000480: 0620fa63 bleu sp,ra,800004f4 + 80000484: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000488: 00200293 li t0,2 + 8000048c: fc521ce3 bne tp,t0,80000464 + +0000000080000490 : + 80000490: 01700193 li gp,23 + 80000494: 00000213 li tp,0 + 80000498: 00f0009b addiw ra,zero,15 + 8000049c: 01c09093 slli ra,ra,0x1c + 800004a0: fff08093 addi ra,ra,-1 + 800004a4: 00000013 nop + 800004a8: 00000013 nop + 800004ac: 00f0011b addiw sp,zero,15 + 800004b0: 01c11113 slli sp,sp,0x1c + 800004b4: 0420f063 bleu sp,ra,800004f4 + 800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004bc: 00200293 li t0,2 + 800004c0: fc521ce3 bne tp,t0,80000498 + +00000000800004c4 : + 800004c4: 00100093 li ra,1 + 800004c8: 0000fa63 bleu zero,ra,800004dc + 800004cc: 00108093 addi ra,ra,1 + 800004d0: 00108093 addi ra,ra,1 + 800004d4: 00108093 addi ra,ra,1 + 800004d8: 00108093 addi ra,ra,1 + 800004dc: 00108093 addi ra,ra,1 + 800004e0: 00108093 addi ra,ra,1 + 800004e4: 00300e93 li t4,3 + 800004e8: 01800193 li gp,24 + 800004ec: 01d09463 bne ra,t4,800004f4 + 800004f0: 00301c63 bne zero,gp,80000508 + +00000000800004f4 : + 800004f4: 0ff0000f fence + 800004f8: 00018063 beqz gp,800004f8 + 800004fc: 00119193 slli gp,gp,0x1 + 80000500: 0011e193 ori gp,gp,1 + 80000504: 00000073 ecall + +0000000080000508 : + 80000508: 0ff0000f fence + 8000050c: 00100193 li gp,1 + 80000510: 00000073 ecall + 80000514: c0001073 unimp + 80000518: 0000 unimp + 8000051a: 0000 unimp + 8000051c: 0000 unimp + 8000051e: 0000 unimp + 80000520: 0000 unimp + 80000522: 0000 unimp + 80000524: 0000 unimp + 80000526: 0000 unimp + 80000528: 0000 unimp + 8000052a: 0000 unimp + 8000052c: 0000 unimp + 8000052e: 0000 unimp + 80000530: 0000 unimp + 80000532: 0000 unimp + 80000534: 0000 unimp + 80000536: 0000 unimp + 80000538: 0000 unimp + 8000053a: 0000 unimp + 8000053c: 0000 unimp + 8000053e: 0000 unimp + 80000540: 0000 unimp + 80000542: 0000 unimp diff --git a/Tests/isa/rv64ui-p-blt b/Tests/isa/rv64ui-p-blt new file mode 100644 index 0000000..99de559 Binary files /dev/null and b/Tests/isa/rv64ui-p-blt differ diff --git a/Tests/isa/rv64ui-p-blt.dump b/Tests/isa/rv64ui-p-blt.dump new file mode 100644 index 0000000..3e6b518 --- /dev/null +++ b/Tests/isa/rv64ui-p-blt.dump @@ -0,0 +1,325 @@ + +rv64ui-p-blt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000093 li ra,0 + 80000104: 00100113 li sp,1 + 80000108: 0020c663 blt ra,sp,80000114 + 8000010c: 2a301863 bne zero,gp,800003bc + 80000110: 00301663 bne zero,gp,8000011c + 80000114: fe20cee3 blt ra,sp,80000110 + 80000118: 2a301263 bne zero,gp,800003bc + +000000008000011c : + 8000011c: 00300193 li gp,3 + 80000120: fff00093 li ra,-1 + 80000124: 00100113 li sp,1 + 80000128: 0020c663 blt ra,sp,80000134 + 8000012c: 28301863 bne zero,gp,800003bc + 80000130: 00301663 bne zero,gp,8000013c + 80000134: fe20cee3 blt ra,sp,80000130 + 80000138: 28301263 bne zero,gp,800003bc + +000000008000013c : + 8000013c: 00400193 li gp,4 + 80000140: ffe00093 li ra,-2 + 80000144: fff00113 li sp,-1 + 80000148: 0020c663 blt ra,sp,80000154 + 8000014c: 26301863 bne zero,gp,800003bc + 80000150: 00301663 bne zero,gp,8000015c + 80000154: fe20cee3 blt ra,sp,80000150 + 80000158: 26301263 bne zero,gp,800003bc + +000000008000015c : + 8000015c: 00500193 li gp,5 + 80000160: 00100093 li ra,1 + 80000164: 00000113 li sp,0 + 80000168: 0020c463 blt ra,sp,80000170 + 8000016c: 00301463 bne zero,gp,80000174 + 80000170: 24301663 bne zero,gp,800003bc + 80000174: fe20cee3 blt ra,sp,80000170 + +0000000080000178 : + 80000178: 00600193 li gp,6 + 8000017c: 00100093 li ra,1 + 80000180: fff00113 li sp,-1 + 80000184: 0020c463 blt ra,sp,8000018c + 80000188: 00301463 bne zero,gp,80000190 + 8000018c: 22301863 bne zero,gp,800003bc + 80000190: fe20cee3 blt ra,sp,8000018c + +0000000080000194 : + 80000194: 00700193 li gp,7 + 80000198: fff00093 li ra,-1 + 8000019c: ffe00113 li sp,-2 + 800001a0: 0020c463 blt ra,sp,800001a8 + 800001a4: 00301463 bne zero,gp,800001ac + 800001a8: 20301a63 bne zero,gp,800003bc + 800001ac: fe20cee3 blt ra,sp,800001a8 + +00000000800001b0 : + 800001b0: 00800193 li gp,8 + 800001b4: 00100093 li ra,1 + 800001b8: ffe00113 li sp,-2 + 800001bc: 0020c463 blt ra,sp,800001c4 + 800001c0: 00301463 bne zero,gp,800001c8 + 800001c4: 1e301c63 bne zero,gp,800003bc + 800001c8: fe20cee3 blt ra,sp,800001c4 + +00000000800001cc : + 800001cc: 00900193 li gp,9 + 800001d0: 00000213 li tp,0 + 800001d4: 00000093 li ra,0 + 800001d8: fff00113 li sp,-1 + 800001dc: 1e20c063 blt ra,sp,800003bc + 800001e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001e4: 00200293 li t0,2 + 800001e8: fe5216e3 bne tp,t0,800001d4 + +00000000800001ec : + 800001ec: 00a00193 li gp,10 + 800001f0: 00000213 li tp,0 + 800001f4: 00000093 li ra,0 + 800001f8: fff00113 li sp,-1 + 800001fc: 00000013 nop + 80000200: 1a20ce63 blt ra,sp,800003bc + 80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000208: 00200293 li t0,2 + 8000020c: fe5214e3 bne tp,t0,800001f4 + +0000000080000210 : + 80000210: 00b00193 li gp,11 + 80000214: 00000213 li tp,0 + 80000218: 00000093 li ra,0 + 8000021c: fff00113 li sp,-1 + 80000220: 00000013 nop + 80000224: 00000013 nop + 80000228: 1820ca63 blt ra,sp,800003bc + 8000022c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000230: 00200293 li t0,2 + 80000234: fe5212e3 bne tp,t0,80000218 + +0000000080000238 : + 80000238: 00c00193 li gp,12 + 8000023c: 00000213 li tp,0 + 80000240: 00000093 li ra,0 + 80000244: 00000013 nop + 80000248: fff00113 li sp,-1 + 8000024c: 1620c863 blt ra,sp,800003bc + 80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000254: 00200293 li t0,2 + 80000258: fe5214e3 bne tp,t0,80000240 + +000000008000025c : + 8000025c: 00d00193 li gp,13 + 80000260: 00000213 li tp,0 + 80000264: 00000093 li ra,0 + 80000268: 00000013 nop + 8000026c: fff00113 li sp,-1 + 80000270: 00000013 nop + 80000274: 1420c463 blt ra,sp,800003bc + 80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000027c: 00200293 li t0,2 + 80000280: fe5212e3 bne tp,t0,80000264 + +0000000080000284 : + 80000284: 00e00193 li gp,14 + 80000288: 00000213 li tp,0 + 8000028c: 00000093 li ra,0 + 80000290: 00000013 nop + 80000294: 00000013 nop + 80000298: fff00113 li sp,-1 + 8000029c: 1220c063 blt ra,sp,800003bc + 800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a4: 00200293 li t0,2 + 800002a8: fe5212e3 bne tp,t0,8000028c + +00000000800002ac : + 800002ac: 00f00193 li gp,15 + 800002b0: 00000213 li tp,0 + 800002b4: 00000093 li ra,0 + 800002b8: fff00113 li sp,-1 + 800002bc: 1020c063 blt ra,sp,800003bc + 800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002c4: 00200293 li t0,2 + 800002c8: fe5216e3 bne tp,t0,800002b4 + +00000000800002cc : + 800002cc: 01000193 li gp,16 + 800002d0: 00000213 li tp,0 + 800002d4: 00000093 li ra,0 + 800002d8: fff00113 li sp,-1 + 800002dc: 00000013 nop + 800002e0: 0c20ce63 blt ra,sp,800003bc + 800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002e8: 00200293 li t0,2 + 800002ec: fe5214e3 bne tp,t0,800002d4 + +00000000800002f0 : + 800002f0: 01100193 li gp,17 + 800002f4: 00000213 li tp,0 + 800002f8: 00000093 li ra,0 + 800002fc: fff00113 li sp,-1 + 80000300: 00000013 nop + 80000304: 00000013 nop + 80000308: 0a20ca63 blt ra,sp,800003bc + 8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000310: 00200293 li t0,2 + 80000314: fe5212e3 bne tp,t0,800002f8 + +0000000080000318 : + 80000318: 01200193 li gp,18 + 8000031c: 00000213 li tp,0 + 80000320: 00000093 li ra,0 + 80000324: 00000013 nop + 80000328: fff00113 li sp,-1 + 8000032c: 0820c863 blt ra,sp,800003bc + 80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000334: 00200293 li t0,2 + 80000338: fe5214e3 bne tp,t0,80000320 + +000000008000033c : + 8000033c: 01300193 li gp,19 + 80000340: 00000213 li tp,0 + 80000344: 00000093 li ra,0 + 80000348: 00000013 nop + 8000034c: fff00113 li sp,-1 + 80000350: 00000013 nop + 80000354: 0620c463 blt ra,sp,800003bc + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fe5212e3 bne tp,t0,80000344 + +0000000080000364 : + 80000364: 01400193 li gp,20 + 80000368: 00000213 li tp,0 + 8000036c: 00000093 li ra,0 + 80000370: 00000013 nop + 80000374: 00000013 nop + 80000378: fff00113 li sp,-1 + 8000037c: 0420c063 blt ra,sp,800003bc + 80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000384: 00200293 li t0,2 + 80000388: fe5212e3 bne tp,t0,8000036c + +000000008000038c : + 8000038c: 00100093 li ra,1 + 80000390: 00104a63 bgtz ra,800003a4 + 80000394: 00108093 addi ra,ra,1 + 80000398: 00108093 addi ra,ra,1 + 8000039c: 00108093 addi ra,ra,1 + 800003a0: 00108093 addi ra,ra,1 + 800003a4: 00108093 addi ra,ra,1 + 800003a8: 00108093 addi ra,ra,1 + 800003ac: 00300e93 li t4,3 + 800003b0: 01500193 li gp,21 + 800003b4: 01d09463 bne ra,t4,800003bc + 800003b8: 00301c63 bne zero,gp,800003d0 + +00000000800003bc : + 800003bc: 0ff0000f fence + 800003c0: 00018063 beqz gp,800003c0 + 800003c4: 00119193 slli gp,gp,0x1 + 800003c8: 0011e193 ori gp,gp,1 + 800003cc: 00000073 ecall + +00000000800003d0 : + 800003d0: 0ff0000f fence + 800003d4: 00100193 li gp,1 + 800003d8: 00000073 ecall + 800003dc: c0001073 unimp + 800003e0: 0000 unimp + 800003e2: 0000 unimp + 800003e4: 0000 unimp + 800003e6: 0000 unimp + 800003e8: 0000 unimp + 800003ea: 0000 unimp + 800003ec: 0000 unimp + 800003ee: 0000 unimp + 800003f0: 0000 unimp + 800003f2: 0000 unimp + 800003f4: 0000 unimp + 800003f6: 0000 unimp + 800003f8: 0000 unimp + 800003fa: 0000 unimp + 800003fc: 0000 unimp + 800003fe: 0000 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp diff --git a/Tests/isa/rv64ui-p-bltu b/Tests/isa/rv64ui-p-bltu new file mode 100644 index 0000000..37627e4 Binary files /dev/null and b/Tests/isa/rv64ui-p-bltu differ diff --git a/Tests/isa/rv64ui-p-bltu.dump b/Tests/isa/rv64ui-p-bltu.dump new file mode 100644 index 0000000..ec34421 --- /dev/null +++ b/Tests/isa/rv64ui-p-bltu.dump @@ -0,0 +1,371 @@ + +rv64ui-p-bltu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000093 li ra,0 + 80000104: 00100113 li sp,1 + 80000108: 0020e663 bltu ra,sp,80000114 + 8000010c: 36301c63 bne zero,gp,80000484 + 80000110: 00301663 bne zero,gp,8000011c + 80000114: fe20eee3 bltu ra,sp,80000110 + 80000118: 36301663 bne zero,gp,80000484 + +000000008000011c : + 8000011c: 00300193 li gp,3 + 80000120: 0010009b addiw ra,zero,1 + 80000124: 02009093 slli ra,ra,0x20 + 80000128: ffe08093 addi ra,ra,-2 + 8000012c: 0010011b addiw sp,zero,1 + 80000130: 02011113 slli sp,sp,0x20 + 80000134: fff10113 addi sp,sp,-1 + 80000138: 0020e663 bltu ra,sp,80000144 + 8000013c: 34301463 bne zero,gp,80000484 + 80000140: 00301663 bne zero,gp,8000014c + 80000144: fe20eee3 bltu ra,sp,80000140 + 80000148: 32301e63 bne zero,gp,80000484 + +000000008000014c : + 8000014c: 00400193 li gp,4 + 80000150: 00000093 li ra,0 + 80000154: 0010011b addiw sp,zero,1 + 80000158: 02011113 slli sp,sp,0x20 + 8000015c: fff10113 addi sp,sp,-1 + 80000160: 0020e663 bltu ra,sp,8000016c + 80000164: 32301063 bne zero,gp,80000484 + 80000168: 00301663 bne zero,gp,80000174 + 8000016c: fe20eee3 bltu ra,sp,80000168 + 80000170: 30301a63 bne zero,gp,80000484 + +0000000080000174 : + 80000174: 00500193 li gp,5 + 80000178: 00100093 li ra,1 + 8000017c: 00000113 li sp,0 + 80000180: 0020e463 bltu ra,sp,80000188 + 80000184: 00301463 bne zero,gp,8000018c + 80000188: 2e301e63 bne zero,gp,80000484 + 8000018c: fe20eee3 bltu ra,sp,80000188 + +0000000080000190 : + 80000190: 00600193 li gp,6 + 80000194: 0010009b addiw ra,zero,1 + 80000198: 02009093 slli ra,ra,0x20 + 8000019c: fff08093 addi ra,ra,-1 + 800001a0: 0010011b addiw sp,zero,1 + 800001a4: 02011113 slli sp,sp,0x20 + 800001a8: ffe10113 addi sp,sp,-2 + 800001ac: 0020e463 bltu ra,sp,800001b4 + 800001b0: 00301463 bne zero,gp,800001b8 + 800001b4: 2c301863 bne zero,gp,80000484 + 800001b8: fe20eee3 bltu ra,sp,800001b4 + +00000000800001bc : + 800001bc: 00700193 li gp,7 + 800001c0: 0010009b addiw ra,zero,1 + 800001c4: 02009093 slli ra,ra,0x20 + 800001c8: fff08093 addi ra,ra,-1 + 800001cc: 00000113 li sp,0 + 800001d0: 0020e463 bltu ra,sp,800001d8 + 800001d4: 00301463 bne zero,gp,800001dc + 800001d8: 2a301663 bne zero,gp,80000484 + 800001dc: fe20eee3 bltu ra,sp,800001d8 + +00000000800001e0 : + 800001e0: 00800193 li gp,8 + 800001e4: 0010009b addiw ra,zero,1 + 800001e8: 01f09093 slli ra,ra,0x1f + 800001ec: 80000137 lui sp,0x80000 + 800001f0: fff1011b addiw sp,sp,-1 + 800001f4: 0020e463 bltu ra,sp,800001fc + 800001f8: 00301463 bne zero,gp,80000200 + 800001fc: 28301463 bne zero,gp,80000484 + 80000200: fe20eee3 bltu ra,sp,800001fc + +0000000080000204 : + 80000204: 00900193 li gp,9 + 80000208: 00000213 li tp,0 + 8000020c: 00f0009b addiw ra,zero,15 + 80000210: 01c09093 slli ra,ra,0x1c + 80000214: 00f0011b addiw sp,zero,15 + 80000218: 01c11113 slli sp,sp,0x1c + 8000021c: fff10113 addi sp,sp,-1 # ffffffff7fffffff <_end+0xfffffffeffffdfff> + 80000220: 2620e263 bltu ra,sp,80000484 + 80000224: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000228: 00200293 li t0,2 + 8000022c: fe5210e3 bne tp,t0,8000020c + +0000000080000230 : + 80000230: 00a00193 li gp,10 + 80000234: 00000213 li tp,0 + 80000238: 00f0009b addiw ra,zero,15 + 8000023c: 01c09093 slli ra,ra,0x1c + 80000240: 00f0011b addiw sp,zero,15 + 80000244: 01c11113 slli sp,sp,0x1c + 80000248: fff10113 addi sp,sp,-1 + 8000024c: 00000013 nop + 80000250: 2220ea63 bltu ra,sp,80000484 + 80000254: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000258: 00200293 li t0,2 + 8000025c: fc521ee3 bne tp,t0,80000238 + +0000000080000260 : + 80000260: 00b00193 li gp,11 + 80000264: 00000213 li tp,0 + 80000268: 00f0009b addiw ra,zero,15 + 8000026c: 01c09093 slli ra,ra,0x1c + 80000270: 00f0011b addiw sp,zero,15 + 80000274: 01c11113 slli sp,sp,0x1c + 80000278: fff10113 addi sp,sp,-1 + 8000027c: 00000013 nop + 80000280: 00000013 nop + 80000284: 2020e063 bltu ra,sp,80000484 + 80000288: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000028c: 00200293 li t0,2 + 80000290: fc521ce3 bne tp,t0,80000268 + +0000000080000294 : + 80000294: 00c00193 li gp,12 + 80000298: 00000213 li tp,0 + 8000029c: 00f0009b addiw ra,zero,15 + 800002a0: 01c09093 slli ra,ra,0x1c + 800002a4: 00000013 nop + 800002a8: 00f0011b addiw sp,zero,15 + 800002ac: 01c11113 slli sp,sp,0x1c + 800002b0: fff10113 addi sp,sp,-1 + 800002b4: 1c20e863 bltu ra,sp,80000484 + 800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002bc: 00200293 li t0,2 + 800002c0: fc521ee3 bne tp,t0,8000029c + +00000000800002c4 : + 800002c4: 00d00193 li gp,13 + 800002c8: 00000213 li tp,0 + 800002cc: 00f0009b addiw ra,zero,15 + 800002d0: 01c09093 slli ra,ra,0x1c + 800002d4: 00000013 nop + 800002d8: 00f0011b addiw sp,zero,15 + 800002dc: 01c11113 slli sp,sp,0x1c + 800002e0: fff10113 addi sp,sp,-1 + 800002e4: 00000013 nop + 800002e8: 1820ee63 bltu ra,sp,80000484 + 800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f0: 00200293 li t0,2 + 800002f4: fc521ce3 bne tp,t0,800002cc + +00000000800002f8 : + 800002f8: 00e00193 li gp,14 + 800002fc: 00000213 li tp,0 + 80000300: 00f0009b addiw ra,zero,15 + 80000304: 01c09093 slli ra,ra,0x1c + 80000308: 00000013 nop + 8000030c: 00000013 nop + 80000310: 00f0011b addiw sp,zero,15 + 80000314: 01c11113 slli sp,sp,0x1c + 80000318: fff10113 addi sp,sp,-1 + 8000031c: 1620e463 bltu ra,sp,80000484 + 80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000324: 00200293 li t0,2 + 80000328: fc521ce3 bne tp,t0,80000300 + +000000008000032c : + 8000032c: 00f00193 li gp,15 + 80000330: 00000213 li tp,0 + 80000334: 00f0009b addiw ra,zero,15 + 80000338: 01c09093 slli ra,ra,0x1c + 8000033c: 00f0011b addiw sp,zero,15 + 80000340: 01c11113 slli sp,sp,0x1c + 80000344: fff10113 addi sp,sp,-1 + 80000348: 1220ee63 bltu ra,sp,80000484 + 8000034c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000350: 00200293 li t0,2 + 80000354: fe5210e3 bne tp,t0,80000334 + +0000000080000358 : + 80000358: 01000193 li gp,16 + 8000035c: 00000213 li tp,0 + 80000360: 00f0009b addiw ra,zero,15 + 80000364: 01c09093 slli ra,ra,0x1c + 80000368: 00f0011b addiw sp,zero,15 + 8000036c: 01c11113 slli sp,sp,0x1c + 80000370: fff10113 addi sp,sp,-1 + 80000374: 00000013 nop + 80000378: 1020e663 bltu ra,sp,80000484 + 8000037c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000380: 00200293 li t0,2 + 80000384: fc521ee3 bne tp,t0,80000360 + +0000000080000388 : + 80000388: 01100193 li gp,17 + 8000038c: 00000213 li tp,0 + 80000390: 00f0009b addiw ra,zero,15 + 80000394: 01c09093 slli ra,ra,0x1c + 80000398: 00f0011b addiw sp,zero,15 + 8000039c: 01c11113 slli sp,sp,0x1c + 800003a0: fff10113 addi sp,sp,-1 + 800003a4: 00000013 nop + 800003a8: 00000013 nop + 800003ac: 0c20ec63 bltu ra,sp,80000484 + 800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b4: 00200293 li t0,2 + 800003b8: fc521ce3 bne tp,t0,80000390 + +00000000800003bc : + 800003bc: 01200193 li gp,18 + 800003c0: 00000213 li tp,0 + 800003c4: 00f0009b addiw ra,zero,15 + 800003c8: 01c09093 slli ra,ra,0x1c + 800003cc: 00000013 nop + 800003d0: 00f0011b addiw sp,zero,15 + 800003d4: 01c11113 slli sp,sp,0x1c + 800003d8: fff10113 addi sp,sp,-1 + 800003dc: 0a20e463 bltu ra,sp,80000484 + 800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003e4: 00200293 li t0,2 + 800003e8: fc521ee3 bne tp,t0,800003c4 + +00000000800003ec : + 800003ec: 01300193 li gp,19 + 800003f0: 00000213 li tp,0 + 800003f4: 00f0009b addiw ra,zero,15 + 800003f8: 01c09093 slli ra,ra,0x1c + 800003fc: 00000013 nop + 80000400: 00f0011b addiw sp,zero,15 + 80000404: 01c11113 slli sp,sp,0x1c + 80000408: fff10113 addi sp,sp,-1 + 8000040c: 00000013 nop + 80000410: 0620ea63 bltu ra,sp,80000484 + 80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000418: 00200293 li t0,2 + 8000041c: fc521ce3 bne tp,t0,800003f4 + +0000000080000420 : + 80000420: 01400193 li gp,20 + 80000424: 00000213 li tp,0 + 80000428: 00f0009b addiw ra,zero,15 + 8000042c: 01c09093 slli ra,ra,0x1c + 80000430: 00000013 nop + 80000434: 00000013 nop + 80000438: 00f0011b addiw sp,zero,15 + 8000043c: 01c11113 slli sp,sp,0x1c + 80000440: fff10113 addi sp,sp,-1 + 80000444: 0420e063 bltu ra,sp,80000484 + 80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000044c: 00200293 li t0,2 + 80000450: fc521ce3 bne tp,t0,80000428 + +0000000080000454 : + 80000454: 00100093 li ra,1 + 80000458: 00106a63 bltu zero,ra,8000046c + 8000045c: 00108093 addi ra,ra,1 + 80000460: 00108093 addi ra,ra,1 + 80000464: 00108093 addi ra,ra,1 + 80000468: 00108093 addi ra,ra,1 + 8000046c: 00108093 addi ra,ra,1 + 80000470: 00108093 addi ra,ra,1 + 80000474: 00300e93 li t4,3 + 80000478: 01500193 li gp,21 + 8000047c: 01d09463 bne ra,t4,80000484 + 80000480: 00301c63 bne zero,gp,80000498 + +0000000080000484 : + 80000484: 0ff0000f fence + 80000488: 00018063 beqz gp,80000488 + 8000048c: 00119193 slli gp,gp,0x1 + 80000490: 0011e193 ori gp,gp,1 + 80000494: 00000073 ecall + +0000000080000498 : + 80000498: 0ff0000f fence + 8000049c: 00100193 li gp,1 + 800004a0: 00000073 ecall + 800004a4: c0001073 unimp + 800004a8: 0000 unimp + 800004aa: 0000 unimp + 800004ac: 0000 unimp + 800004ae: 0000 unimp + 800004b0: 0000 unimp + 800004b2: 0000 unimp + 800004b4: 0000 unimp + 800004b6: 0000 unimp + 800004b8: 0000 unimp + 800004ba: 0000 unimp + 800004bc: 0000 unimp + 800004be: 0000 unimp + 800004c0: 0000 unimp + 800004c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-bne b/Tests/isa/rv64ui-p-bne new file mode 100644 index 0000000..127a058 Binary files /dev/null and b/Tests/isa/rv64ui-p-bne differ diff --git a/Tests/isa/rv64ui-p-bne.dump b/Tests/isa/rv64ui-p-bne.dump new file mode 100644 index 0000000..42f4613 --- /dev/null +++ b/Tests/isa/rv64ui-p-bne.dump @@ -0,0 +1,324 @@ + +rv64ui-p-bne: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000093 li ra,0 + 80000104: 00100113 li sp,1 + 80000108: 00209663 bne ra,sp,80000114 + 8000010c: 2a301a63 bne zero,gp,800003c0 + 80000110: 00301663 bne zero,gp,8000011c + 80000114: fe209ee3 bne ra,sp,80000110 + 80000118: 2a301463 bne zero,gp,800003c0 + +000000008000011c : + 8000011c: 00300193 li gp,3 + 80000120: 00100093 li ra,1 + 80000124: 00000113 li sp,0 + 80000128: 00209663 bne ra,sp,80000134 + 8000012c: 28301a63 bne zero,gp,800003c0 + 80000130: 00301663 bne zero,gp,8000013c + 80000134: fe209ee3 bne ra,sp,80000130 + 80000138: 28301463 bne zero,gp,800003c0 + +000000008000013c : + 8000013c: 00400193 li gp,4 + 80000140: fff00093 li ra,-1 + 80000144: 00100113 li sp,1 + 80000148: 00209663 bne ra,sp,80000154 + 8000014c: 26301a63 bne zero,gp,800003c0 + 80000150: 00301663 bne zero,gp,8000015c + 80000154: fe209ee3 bne ra,sp,80000150 + 80000158: 26301463 bne zero,gp,800003c0 + +000000008000015c : + 8000015c: 00500193 li gp,5 + 80000160: 00100093 li ra,1 + 80000164: fff00113 li sp,-1 + 80000168: 00209663 bne ra,sp,80000174 + 8000016c: 24301a63 bne zero,gp,800003c0 + 80000170: 00301663 bne zero,gp,8000017c + 80000174: fe209ee3 bne ra,sp,80000170 + 80000178: 24301463 bne zero,gp,800003c0 + +000000008000017c : + 8000017c: 00600193 li gp,6 + 80000180: 00000093 li ra,0 + 80000184: 00000113 li sp,0 + 80000188: 00209463 bne ra,sp,80000190 + 8000018c: 00301463 bne zero,gp,80000194 + 80000190: 22301863 bne zero,gp,800003c0 + 80000194: fe209ee3 bne ra,sp,80000190 + +0000000080000198 : + 80000198: 00700193 li gp,7 + 8000019c: 00100093 li ra,1 + 800001a0: 00100113 li sp,1 + 800001a4: 00209463 bne ra,sp,800001ac + 800001a8: 00301463 bne zero,gp,800001b0 + 800001ac: 20301a63 bne zero,gp,800003c0 + 800001b0: fe209ee3 bne ra,sp,800001ac + +00000000800001b4 : + 800001b4: 00800193 li gp,8 + 800001b8: fff00093 li ra,-1 + 800001bc: fff00113 li sp,-1 + 800001c0: 00209463 bne ra,sp,800001c8 + 800001c4: 00301463 bne zero,gp,800001cc + 800001c8: 1e301c63 bne zero,gp,800003c0 + 800001cc: fe209ee3 bne ra,sp,800001c8 + +00000000800001d0 : + 800001d0: 00900193 li gp,9 + 800001d4: 00000213 li tp,0 + 800001d8: 00000093 li ra,0 + 800001dc: 00000113 li sp,0 + 800001e0: 1e209063 bne ra,sp,800003c0 + 800001e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001e8: 00200293 li t0,2 + 800001ec: fe5216e3 bne tp,t0,800001d8 + +00000000800001f0 : + 800001f0: 00a00193 li gp,10 + 800001f4: 00000213 li tp,0 + 800001f8: 00000093 li ra,0 + 800001fc: 00000113 li sp,0 + 80000200: 00000013 nop + 80000204: 1a209e63 bne ra,sp,800003c0 + 80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000020c: 00200293 li t0,2 + 80000210: fe5214e3 bne tp,t0,800001f8 + +0000000080000214 : + 80000214: 00b00193 li gp,11 + 80000218: 00000213 li tp,0 + 8000021c: 00000093 li ra,0 + 80000220: 00000113 li sp,0 + 80000224: 00000013 nop + 80000228: 00000013 nop + 8000022c: 18209a63 bne ra,sp,800003c0 + 80000230: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000234: 00200293 li t0,2 + 80000238: fe5212e3 bne tp,t0,8000021c + +000000008000023c : + 8000023c: 00c00193 li gp,12 + 80000240: 00000213 li tp,0 + 80000244: 00000093 li ra,0 + 80000248: 00000013 nop + 8000024c: 00000113 li sp,0 + 80000250: 16209863 bne ra,sp,800003c0 + 80000254: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000258: 00200293 li t0,2 + 8000025c: fe5214e3 bne tp,t0,80000244 + +0000000080000260 : + 80000260: 00d00193 li gp,13 + 80000264: 00000213 li tp,0 + 80000268: 00000093 li ra,0 + 8000026c: 00000013 nop + 80000270: 00000113 li sp,0 + 80000274: 00000013 nop + 80000278: 14209463 bne ra,sp,800003c0 + 8000027c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000280: 00200293 li t0,2 + 80000284: fe5212e3 bne tp,t0,80000268 + +0000000080000288 : + 80000288: 00e00193 li gp,14 + 8000028c: 00000213 li tp,0 + 80000290: 00000093 li ra,0 + 80000294: 00000013 nop + 80000298: 00000013 nop + 8000029c: 00000113 li sp,0 + 800002a0: 12209063 bne ra,sp,800003c0 + 800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a8: 00200293 li t0,2 + 800002ac: fe5212e3 bne tp,t0,80000290 + +00000000800002b0 : + 800002b0: 00f00193 li gp,15 + 800002b4: 00000213 li tp,0 + 800002b8: 00000093 li ra,0 + 800002bc: 00000113 li sp,0 + 800002c0: 10209063 bne ra,sp,800003c0 + 800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002c8: 00200293 li t0,2 + 800002cc: fe5216e3 bne tp,t0,800002b8 + +00000000800002d0 : + 800002d0: 01000193 li gp,16 + 800002d4: 00000213 li tp,0 + 800002d8: 00000093 li ra,0 + 800002dc: 00000113 li sp,0 + 800002e0: 00000013 nop + 800002e4: 0c209e63 bne ra,sp,800003c0 + 800002e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002ec: 00200293 li t0,2 + 800002f0: fe5214e3 bne tp,t0,800002d8 + +00000000800002f4 : + 800002f4: 01100193 li gp,17 + 800002f8: 00000213 li tp,0 + 800002fc: 00000093 li ra,0 + 80000300: 00000113 li sp,0 + 80000304: 00000013 nop + 80000308: 00000013 nop + 8000030c: 0a209a63 bne ra,sp,800003c0 + 80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000314: 00200293 li t0,2 + 80000318: fe5212e3 bne tp,t0,800002fc + +000000008000031c : + 8000031c: 01200193 li gp,18 + 80000320: 00000213 li tp,0 + 80000324: 00000093 li ra,0 + 80000328: 00000013 nop + 8000032c: 00000113 li sp,0 + 80000330: 08209863 bne ra,sp,800003c0 + 80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000338: 00200293 li t0,2 + 8000033c: fe5214e3 bne tp,t0,80000324 + +0000000080000340 : + 80000340: 01300193 li gp,19 + 80000344: 00000213 li tp,0 + 80000348: 00000093 li ra,0 + 8000034c: 00000013 nop + 80000350: 00000113 li sp,0 + 80000354: 00000013 nop + 80000358: 06209463 bne ra,sp,800003c0 + 8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000360: 00200293 li t0,2 + 80000364: fe5212e3 bne tp,t0,80000348 + +0000000080000368 : + 80000368: 01400193 li gp,20 + 8000036c: 00000213 li tp,0 + 80000370: 00000093 li ra,0 + 80000374: 00000013 nop + 80000378: 00000013 nop + 8000037c: 00000113 li sp,0 + 80000380: 04209063 bne ra,sp,800003c0 + 80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000388: 00200293 li t0,2 + 8000038c: fe5212e3 bne tp,t0,80000370 + +0000000080000390 : + 80000390: 00100093 li ra,1 + 80000394: 00009a63 bnez ra,800003a8 + 80000398: 00108093 addi ra,ra,1 + 8000039c: 00108093 addi ra,ra,1 + 800003a0: 00108093 addi ra,ra,1 + 800003a4: 00108093 addi ra,ra,1 + 800003a8: 00108093 addi ra,ra,1 + 800003ac: 00108093 addi ra,ra,1 + 800003b0: 00300e93 li t4,3 + 800003b4: 01500193 li gp,21 + 800003b8: 01d09463 bne ra,t4,800003c0 + 800003bc: 00301c63 bne zero,gp,800003d4 + +00000000800003c0 : + 800003c0: 0ff0000f fence + 800003c4: 00018063 beqz gp,800003c4 + 800003c8: 00119193 slli gp,gp,0x1 + 800003cc: 0011e193 ori gp,gp,1 + 800003d0: 00000073 ecall + +00000000800003d4 : + 800003d4: 0ff0000f fence + 800003d8: 00100193 li gp,1 + 800003dc: 00000073 ecall + 800003e0: c0001073 unimp + 800003e4: 0000 unimp + 800003e6: 0000 unimp + 800003e8: 0000 unimp + 800003ea: 0000 unimp + 800003ec: 0000 unimp + 800003ee: 0000 unimp + 800003f0: 0000 unimp + 800003f2: 0000 unimp + 800003f4: 0000 unimp + 800003f6: 0000 unimp + 800003f8: 0000 unimp + 800003fa: 0000 unimp + 800003fc: 0000 unimp + 800003fe: 0000 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp diff --git a/Tests/isa/rv64ui-p-fence_i b/Tests/isa/rv64ui-p-fence_i new file mode 100644 index 0000000..4b7f278 Binary files /dev/null and b/Tests/isa/rv64ui-p-fence_i differ diff --git a/Tests/isa/rv64ui-p-fence_i.dump b/Tests/isa/rv64ui-p-fence_i.dump new file mode 100644 index 0000000..8bbfcfd --- /dev/null +++ b/Tests/isa/rv64ui-p-fence_i.dump @@ -0,0 +1,189 @@ + +rv64ui-p-fence_i: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + 800000fc: 06f00693 li a3,111 + 80000100: 00002517 auipc a0,0x2 + 80000104: f0051503 lh a0,-256(a0) # 80002000 + 80000108: 00002597 auipc a1,0x2 + 8000010c: efa59583 lh a1,-262(a1) # 80002002 + 80000110: 00000013 nop + 80000114: 00000013 nop + 80000118: 00000013 nop + 8000011c: 00000013 nop + 80000120: 00000013 nop + 80000124: 00000013 nop + 80000128: 00000013 nop + 8000012c: 00000013 nop + 80000130: 00000013 nop + 80000134: 00000013 nop + 80000138: 00000013 nop + 8000013c: 00000013 nop + 80000140: 00000297 auipc t0,0x0 + 80000144: 00a29a23 sh a0,20(t0) # 80000154 + 80000148: 00000297 auipc t0,0x0 + 8000014c: 00b29723 sh a1,14(t0) # 80000156 + 80000150: 0000100f fence.i + 80000154: 0de68693 addi a3,a3,222 + +0000000080000158 : + 80000158: 00000013 nop + 8000015c: 1bc00e93 li t4,444 + 80000160: 00200193 li gp,2 + 80000164: 07d69a63 bne a3,t4,800001d8 + 80000168: 06400713 li a4,100 + 8000016c: fff70713 addi a4,a4,-1 + 80000170: fe071ee3 bnez a4,8000016c + 80000174: 00000297 auipc t0,0x0 + 80000178: 04a29623 sh a0,76(t0) # 800001c0 + 8000017c: 00000297 auipc t0,0x0 + 80000180: 04b29323 sh a1,70(t0) # 800001c2 + 80000184: 0000100f fence.i + 80000188: 00000013 nop + 8000018c: 00000013 nop + 80000190: 00000013 nop + 80000194: 00000013 nop + 80000198: 00000013 nop + 8000019c: 00000013 nop + 800001a0: 00000013 nop + 800001a4: 00000013 nop + 800001a8: 00000013 nop + 800001ac: 00000013 nop + 800001b0: 00000013 nop + 800001b4: 00000013 nop + 800001b8: 00000013 nop + 800001bc: 00000013 nop + 800001c0: 22b68693 addi a3,a3,555 + +00000000800001c4 : + 800001c4: 00000013 nop + 800001c8: 30900e93 li t4,777 + 800001cc: 00300193 li gp,3 + 800001d0: 01d69463 bne a3,t4,800001d8 + 800001d4: 00301c63 bne zero,gp,800001ec + +00000000800001d8 : + 800001d8: 0ff0000f fence + 800001dc: 00018063 beqz gp,800001dc + 800001e0: 00119193 slli gp,gp,0x1 + 800001e4: 0011e193 ori gp,gp,1 + 800001e8: 00000073 ecall + +00000000800001ec : + 800001ec: 0ff0000f fence + 800001f0: 00100193 li gp,1 + 800001f4: 00000073 ecall + 800001f8: c0001073 unimp + 800001fc: 0000 unimp + 800001fe: 0000 unimp + 80000200: 0000 unimp + 80000202: 0000 unimp + 80000204: 0000 unimp + 80000206: 0000 unimp + 80000208: 0000 unimp + 8000020a: 0000 unimp + 8000020c: 0000 unimp + 8000020e: 0000 unimp + 80000210: 0000 unimp + 80000212: 0000 unimp + 80000214: 0000 unimp + 80000216: 0000 unimp + 80000218: 0000 unimp + 8000021a: 0000 unimp + 8000021c: 0000 unimp + 8000021e: 0000 unimp + 80000220: 0000 unimp + 80000222: 0000 unimp + 80000224: 0000 unimp + 80000226: 0000 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 14d68693 addi a3,a3,333 + 80002004: 0000 unimp + 80002006: 0000 unimp + 80002008: 0000 unimp + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64ui-p-jal b/Tests/isa/rv64ui-p-jal new file mode 100644 index 0000000..f35e85e Binary files /dev/null and b/Tests/isa/rv64ui-p-jal differ diff --git a/Tests/isa/rv64ui-p-jal.dump b/Tests/isa/rv64ui-p-jal.dump new file mode 100644 index 0000000..2a86bb8 --- /dev/null +++ b/Tests/isa/rv64ui-p-jal.dump @@ -0,0 +1,128 @@ + +rv64ui-p-jal: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000093 li ra,0 + 80000104: 0100026f jal tp,80000114 + +0000000080000108 : + 80000108: 00000013 nop + 8000010c: 00000013 nop + 80000110: 0400006f j 80000150 + +0000000080000114 : + 80000114: 00000117 auipc sp,0x0 + 80000118: ff410113 addi sp,sp,-12 # 80000108 + 8000011c: 02411a63 bne sp,tp,80000150 + +0000000080000120 : + 80000120: 00100093 li ra,1 + 80000124: 0140006f j 80000138 + 80000128: 00108093 addi ra,ra,1 + 8000012c: 00108093 addi ra,ra,1 + 80000130: 00108093 addi ra,ra,1 + 80000134: 00108093 addi ra,ra,1 + 80000138: 00108093 addi ra,ra,1 + 8000013c: 00108093 addi ra,ra,1 + 80000140: 00300e93 li t4,3 + 80000144: 00300193 li gp,3 + 80000148: 01d09463 bne ra,t4,80000150 + 8000014c: 00301c63 bne zero,gp,80000164 + +0000000080000150 : + 80000150: 0ff0000f fence + 80000154: 00018063 beqz gp,80000154 + 80000158: 00119193 slli gp,gp,0x1 + 8000015c: 0011e193 ori gp,gp,1 + 80000160: 00000073 ecall + +0000000080000164 : + 80000164: 0ff0000f fence + 80000168: 00100193 li gp,1 + 8000016c: 00000073 ecall + 80000170: c0001073 unimp + 80000174: 0000 unimp + 80000176: 0000 unimp + 80000178: 0000 unimp + 8000017a: 0000 unimp + 8000017c: 0000 unimp + 8000017e: 0000 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ui-p-jalr b/Tests/isa/rv64ui-p-jalr new file mode 100644 index 0000000..740bf41 Binary files /dev/null and b/Tests/isa/rv64ui-p-jalr differ diff --git a/Tests/isa/rv64ui-p-jalr.dump b/Tests/isa/rv64ui-p-jalr.dump new file mode 100644 index 0000000..029a692 --- /dev/null +++ b/Tests/isa/rv64ui-p-jalr.dump @@ -0,0 +1,166 @@ + +rv64ui-p-jalr: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00200193 li gp,2 + 80000100: 00000293 li t0,0 + 80000104: 00000317 auipc t1,0x0 + 80000108: 01030313 addi t1,t1,16 # 80000114 + 8000010c: 000302e7 jalr t0,t1 + +0000000080000110 : + 80000110: 0c00006f j 800001d0 + +0000000080000114 : + 80000114: 00000317 auipc t1,0x0 + 80000118: ffc30313 addi t1,t1,-4 # 80000110 + 8000011c: 0a629a63 bne t0,t1,800001d0 + +0000000080000120 : + 80000120: 00400193 li gp,4 + 80000124: 00000213 li tp,0 + 80000128: 00000317 auipc t1,0x0 + 8000012c: 01030313 addi t1,t1,16 # 80000138 + 80000130: 000309e7 jalr s3,t1 + 80000134: 08301e63 bne zero,gp,800001d0 + 80000138: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000013c: 00200293 li t0,2 + 80000140: fe5214e3 bne tp,t0,80000128 + +0000000080000144 : + 80000144: 00500193 li gp,5 + 80000148: 00000213 li tp,0 + 8000014c: 00000317 auipc t1,0x0 + 80000150: 01430313 addi t1,t1,20 # 80000160 + 80000154: 00000013 nop + 80000158: 000309e7 jalr s3,t1 + 8000015c: 06301a63 bne zero,gp,800001d0 + 80000160: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000164: 00200293 li t0,2 + 80000168: fe5212e3 bne tp,t0,8000014c + +000000008000016c : + 8000016c: 00600193 li gp,6 + 80000170: 00000213 li tp,0 + 80000174: 00000317 auipc t1,0x0 + 80000178: 01830313 addi t1,t1,24 # 8000018c + 8000017c: 00000013 nop + 80000180: 00000013 nop + 80000184: 000309e7 jalr s3,t1 + 80000188: 04301463 bne zero,gp,800001d0 + 8000018c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000190: 00200293 li t0,2 + 80000194: fe5210e3 bne tp,t0,80000174 + +0000000080000198 : + 80000198: 00100293 li t0,1 + 8000019c: 00000317 auipc t1,0x0 + 800001a0: 01c30313 addi t1,t1,28 # 800001b8 + 800001a4: ffc30067 jr -4(t1) + 800001a8: 00128293 addi t0,t0,1 + 800001ac: 00128293 addi t0,t0,1 + 800001b0: 00128293 addi t0,t0,1 + 800001b4: 00128293 addi t0,t0,1 + 800001b8: 00128293 addi t0,t0,1 + 800001bc: 00128293 addi t0,t0,1 + 800001c0: 00400e93 li t4,4 + 800001c4: 00700193 li gp,7 + 800001c8: 01d29463 bne t0,t4,800001d0 + 800001cc: 00301c63 bne zero,gp,800001e4 + +00000000800001d0 : + 800001d0: 0ff0000f fence + 800001d4: 00018063 beqz gp,800001d4 + 800001d8: 00119193 slli gp,gp,0x1 + 800001dc: 0011e193 ori gp,gp,1 + 800001e0: 00000073 ecall + +00000000800001e4 : + 800001e4: 0ff0000f fence + 800001e8: 00100193 li gp,1 + 800001ec: 00000073 ecall + 800001f0: c0001073 unimp + 800001f4: 0000 unimp + 800001f6: 0000 unimp + 800001f8: 0000 unimp + 800001fa: 0000 unimp + 800001fc: 0000 unimp + 800001fe: 0000 unimp + 80000200: 0000 unimp + 80000202: 0000 unimp diff --git a/Tests/isa/rv64ui-p-lb b/Tests/isa/rv64ui-p-lb new file mode 100644 index 0000000..e42ba32 Binary files /dev/null and b/Tests/isa/rv64ui-p-lb differ diff --git a/Tests/isa/rv64ui-p-lb.dump b/Tests/isa/rv64ui-p-lb.dump new file mode 100644 index 0000000..dbf78e7d --- /dev/null +++ b/Tests/isa/rv64ui-p-lb.dump @@ -0,0 +1,306 @@ + +rv64ui-p-lb: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 00008f03 lb t5,0(ra) + 80000108: fff00e93 li t4,-1 + 8000010c: 00200193 li gp,2 + 80000110: 23df1c63 bne t5,t4,80000348 + +0000000080000114 : + 80000114: 00002097 auipc ra,0x2 + 80000118: eec08093 addi ra,ra,-276 # 80002000 + 8000011c: 00108f03 lb t5,1(ra) + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 23df1063 bne t5,t4,80000348 + +000000008000012c : + 8000012c: 00002097 auipc ra,0x2 + 80000130: ed408093 addi ra,ra,-300 # 80002000 + 80000134: 00208f03 lb t5,2(ra) + 80000138: ff000e93 li t4,-16 + 8000013c: 00400193 li gp,4 + 80000140: 21df1463 bne t5,t4,80000348 + +0000000080000144 : + 80000144: 00002097 auipc ra,0x2 + 80000148: ebc08093 addi ra,ra,-324 # 80002000 + 8000014c: 00308f03 lb t5,3(ra) + 80000150: 00f00e93 li t4,15 + 80000154: 00500193 li gp,5 + 80000158: 1fdf1863 bne t5,t4,80000348 + +000000008000015c : + 8000015c: 00002097 auipc ra,0x2 + 80000160: ea708093 addi ra,ra,-345 # 80002003 + 80000164: ffd08f03 lb t5,-3(ra) + 80000168: fff00e93 li t4,-1 + 8000016c: 00600193 li gp,6 + 80000170: 1ddf1c63 bne t5,t4,80000348 + +0000000080000174 : + 80000174: 00002097 auipc ra,0x2 + 80000178: e8f08093 addi ra,ra,-369 # 80002003 + 8000017c: ffe08f03 lb t5,-2(ra) + 80000180: 00000e93 li t4,0 + 80000184: 00700193 li gp,7 + 80000188: 1ddf1063 bne t5,t4,80000348 + +000000008000018c : + 8000018c: 00002097 auipc ra,0x2 + 80000190: e7708093 addi ra,ra,-393 # 80002003 + 80000194: fff08f03 lb t5,-1(ra) + 80000198: ff000e93 li t4,-16 + 8000019c: 00800193 li gp,8 + 800001a0: 1bdf1463 bne t5,t4,80000348 + +00000000800001a4 : + 800001a4: 00002097 auipc ra,0x2 + 800001a8: e5f08093 addi ra,ra,-417 # 80002003 + 800001ac: 00008f03 lb t5,0(ra) + 800001b0: 00f00e93 li t4,15 + 800001b4: 00900193 li gp,9 + 800001b8: 19df1863 bne t5,t4,80000348 + +00000000800001bc : + 800001bc: 00002097 auipc ra,0x2 + 800001c0: e4408093 addi ra,ra,-444 # 80002000 + 800001c4: fe008093 addi ra,ra,-32 + 800001c8: 02008283 lb t0,32(ra) + 800001cc: fff00e93 li t4,-1 + 800001d0: 00a00193 li gp,10 + 800001d4: 17d29a63 bne t0,t4,80000348 + +00000000800001d8 : + 800001d8: 00002097 auipc ra,0x2 + 800001dc: e2808093 addi ra,ra,-472 # 80002000 + 800001e0: ffa08093 addi ra,ra,-6 + 800001e4: 00708283 lb t0,7(ra) + 800001e8: 00000e93 li t4,0 + 800001ec: 00b00193 li gp,11 + 800001f0: 15d29c63 bne t0,t4,80000348 + +00000000800001f4 : + 800001f4: 00c00193 li gp,12 + 800001f8: 00000213 li tp,0 + 800001fc: 00002097 auipc ra,0x2 + 80000200: e0508093 addi ra,ra,-507 # 80002001 + 80000204: 00108f03 lb t5,1(ra) + 80000208: 000f0313 mv t1,t5 + 8000020c: ff000e93 li t4,-16 + 80000210: 13d31c63 bne t1,t4,80000348 + 80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000218: 00200293 li t0,2 + 8000021c: fe5210e3 bne tp,t0,800001fc + +0000000080000220 : + 80000220: 00d00193 li gp,13 + 80000224: 00000213 li tp,0 + 80000228: 00002097 auipc ra,0x2 + 8000022c: dda08093 addi ra,ra,-550 # 80002002 + 80000230: 00108f03 lb t5,1(ra) + 80000234: 00000013 nop + 80000238: 000f0313 mv t1,t5 + 8000023c: 00f00e93 li t4,15 + 80000240: 11d31463 bne t1,t4,80000348 + 80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000248: 00200293 li t0,2 + 8000024c: fc521ee3 bne tp,t0,80000228 + +0000000080000250 : + 80000250: 00e00193 li gp,14 + 80000254: 00000213 li tp,0 + 80000258: 00002097 auipc ra,0x2 + 8000025c: da808093 addi ra,ra,-600 # 80002000 + 80000260: 00108f03 lb t5,1(ra) + 80000264: 00000013 nop + 80000268: 00000013 nop + 8000026c: 000f0313 mv t1,t5 + 80000270: 00000e93 li t4,0 + 80000274: 0dd31a63 bne t1,t4,80000348 + 80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000027c: 00200293 li t0,2 + 80000280: fc521ce3 bne tp,t0,80000258 + +0000000080000284 : + 80000284: 00f00193 li gp,15 + 80000288: 00000213 li tp,0 + 8000028c: 00002097 auipc ra,0x2 + 80000290: d7508093 addi ra,ra,-651 # 80002001 + 80000294: 00108f03 lb t5,1(ra) + 80000298: ff000e93 li t4,-16 + 8000029c: 0bdf1663 bne t5,t4,80000348 + 800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a4: 00200293 li t0,2 + 800002a8: fe5212e3 bne tp,t0,8000028c + +00000000800002ac : + 800002ac: 01000193 li gp,16 + 800002b0: 00000213 li tp,0 + 800002b4: 00002097 auipc ra,0x2 + 800002b8: d4e08093 addi ra,ra,-690 # 80002002 + 800002bc: 00000013 nop + 800002c0: 00108f03 lb t5,1(ra) + 800002c4: 00f00e93 li t4,15 + 800002c8: 09df1063 bne t5,t4,80000348 + 800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d0: 00200293 li t0,2 + 800002d4: fe5210e3 bne tp,t0,800002b4 + +00000000800002d8 : + 800002d8: 01100193 li gp,17 + 800002dc: 00000213 li tp,0 + 800002e0: 00002097 auipc ra,0x2 + 800002e4: d2008093 addi ra,ra,-736 # 80002000 + 800002e8: 00000013 nop + 800002ec: 00000013 nop + 800002f0: 00108f03 lb t5,1(ra) + 800002f4: 00000e93 li t4,0 + 800002f8: 05df1863 bne t5,t4,80000348 + 800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000300: 00200293 li t0,2 + 80000304: fc521ee3 bne tp,t0,800002e0 + +0000000080000308 : + 80000308: 00002297 auipc t0,0x2 + 8000030c: cf828293 addi t0,t0,-776 # 80002000 + 80000310: 00028103 lb sp,0(t0) + 80000314: 00200113 li sp,2 + 80000318: 00200e93 li t4,2 + 8000031c: 01200193 li gp,18 + 80000320: 03d11463 bne sp,t4,80000348 + +0000000080000324 : + 80000324: 00002297 auipc t0,0x2 + 80000328: cdc28293 addi t0,t0,-804 # 80002000 + 8000032c: 00028103 lb sp,0(t0) + 80000330: 00000013 nop + 80000334: 00200113 li sp,2 + 80000338: 00200e93 li t4,2 + 8000033c: 01300193 li gp,19 + 80000340: 01d11463 bne sp,t4,80000348 + 80000344: 00301c63 bne zero,gp,8000035c + +0000000080000348 : + 80000348: 0ff0000f fence + 8000034c: 00018063 beqz gp,8000034c + 80000350: 00119193 slli gp,gp,0x1 + 80000354: 0011e193 ori gp,gp,1 + 80000358: 00000073 ecall + +000000008000035c : + 8000035c: 0ff0000f fence + 80000360: 00100193 li gp,1 + 80000364: 00000073 ecall + 80000368: c0001073 unimp + 8000036c: 0000 unimp + 8000036e: 0000 unimp + 80000370: 0000 unimp + 80000372: 0000 unimp + 80000374: 0000 unimp + 80000376: 0000 unimp + 80000378: 0000 unimp + 8000037a: 0000 unimp + 8000037c: 0000 unimp + 8000037e: 0000 unimp + 80000380: 0000 unimp + 80000382: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0xff + +0000000080002001 : + 80002001: sd s0,32(s0) + +0000000080002002 : + 80002002: addi a2,sp,988 + +0000000080002003 : + 80002003: 0000000f fence unknown,unknown + 80002007: 0000 unimp + 80002009: 0000 unimp + 8000200b: 0000 unimp + 8000200d: 0000 unimp + 8000200f: 00 Address 0x000000008000200f is out of bounds. + diff --git a/Tests/isa/rv64ui-p-lbu b/Tests/isa/rv64ui-p-lbu new file mode 100644 index 0000000..d84b9b5 Binary files /dev/null and b/Tests/isa/rv64ui-p-lbu differ diff --git a/Tests/isa/rv64ui-p-lbu.dump b/Tests/isa/rv64ui-p-lbu.dump new file mode 100644 index 0000000..4365b07 --- /dev/null +++ b/Tests/isa/rv64ui-p-lbu.dump @@ -0,0 +1,306 @@ + +rv64ui-p-lbu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 0000cf03 lbu t5,0(ra) + 80000108: 0ff00e93 li t4,255 + 8000010c: 00200193 li gp,2 + 80000110: 23df1c63 bne t5,t4,80000348 + +0000000080000114 : + 80000114: 00002097 auipc ra,0x2 + 80000118: eec08093 addi ra,ra,-276 # 80002000 + 8000011c: 0010cf03 lbu t5,1(ra) + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 23df1063 bne t5,t4,80000348 + +000000008000012c : + 8000012c: 00002097 auipc ra,0x2 + 80000130: ed408093 addi ra,ra,-300 # 80002000 + 80000134: 0020cf03 lbu t5,2(ra) + 80000138: 0f000e93 li t4,240 + 8000013c: 00400193 li gp,4 + 80000140: 21df1463 bne t5,t4,80000348 + +0000000080000144 : + 80000144: 00002097 auipc ra,0x2 + 80000148: ebc08093 addi ra,ra,-324 # 80002000 + 8000014c: 0030cf03 lbu t5,3(ra) + 80000150: 00f00e93 li t4,15 + 80000154: 00500193 li gp,5 + 80000158: 1fdf1863 bne t5,t4,80000348 + +000000008000015c : + 8000015c: 00002097 auipc ra,0x2 + 80000160: ea708093 addi ra,ra,-345 # 80002003 + 80000164: ffd0cf03 lbu t5,-3(ra) + 80000168: 0ff00e93 li t4,255 + 8000016c: 00600193 li gp,6 + 80000170: 1ddf1c63 bne t5,t4,80000348 + +0000000080000174 : + 80000174: 00002097 auipc ra,0x2 + 80000178: e8f08093 addi ra,ra,-369 # 80002003 + 8000017c: ffe0cf03 lbu t5,-2(ra) + 80000180: 00000e93 li t4,0 + 80000184: 00700193 li gp,7 + 80000188: 1ddf1063 bne t5,t4,80000348 + +000000008000018c : + 8000018c: 00002097 auipc ra,0x2 + 80000190: e7708093 addi ra,ra,-393 # 80002003 + 80000194: fff0cf03 lbu t5,-1(ra) + 80000198: 0f000e93 li t4,240 + 8000019c: 00800193 li gp,8 + 800001a0: 1bdf1463 bne t5,t4,80000348 + +00000000800001a4 : + 800001a4: 00002097 auipc ra,0x2 + 800001a8: e5f08093 addi ra,ra,-417 # 80002003 + 800001ac: 0000cf03 lbu t5,0(ra) + 800001b0: 00f00e93 li t4,15 + 800001b4: 00900193 li gp,9 + 800001b8: 19df1863 bne t5,t4,80000348 + +00000000800001bc : + 800001bc: 00002097 auipc ra,0x2 + 800001c0: e4408093 addi ra,ra,-444 # 80002000 + 800001c4: fe008093 addi ra,ra,-32 + 800001c8: 0200c283 lbu t0,32(ra) + 800001cc: 0ff00e93 li t4,255 + 800001d0: 00a00193 li gp,10 + 800001d4: 17d29a63 bne t0,t4,80000348 + +00000000800001d8 : + 800001d8: 00002097 auipc ra,0x2 + 800001dc: e2808093 addi ra,ra,-472 # 80002000 + 800001e0: ffa08093 addi ra,ra,-6 + 800001e4: 0070c283 lbu t0,7(ra) + 800001e8: 00000e93 li t4,0 + 800001ec: 00b00193 li gp,11 + 800001f0: 15d29c63 bne t0,t4,80000348 + +00000000800001f4 : + 800001f4: 00c00193 li gp,12 + 800001f8: 00000213 li tp,0 + 800001fc: 00002097 auipc ra,0x2 + 80000200: e0508093 addi ra,ra,-507 # 80002001 + 80000204: 0010cf03 lbu t5,1(ra) + 80000208: 000f0313 mv t1,t5 + 8000020c: 0f000e93 li t4,240 + 80000210: 13d31c63 bne t1,t4,80000348 + 80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000218: 00200293 li t0,2 + 8000021c: fe5210e3 bne tp,t0,800001fc + +0000000080000220 : + 80000220: 00d00193 li gp,13 + 80000224: 00000213 li tp,0 + 80000228: 00002097 auipc ra,0x2 + 8000022c: dda08093 addi ra,ra,-550 # 80002002 + 80000230: 0010cf03 lbu t5,1(ra) + 80000234: 00000013 nop + 80000238: 000f0313 mv t1,t5 + 8000023c: 00f00e93 li t4,15 + 80000240: 11d31463 bne t1,t4,80000348 + 80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000248: 00200293 li t0,2 + 8000024c: fc521ee3 bne tp,t0,80000228 + +0000000080000250 : + 80000250: 00e00193 li gp,14 + 80000254: 00000213 li tp,0 + 80000258: 00002097 auipc ra,0x2 + 8000025c: da808093 addi ra,ra,-600 # 80002000 + 80000260: 0010cf03 lbu t5,1(ra) + 80000264: 00000013 nop + 80000268: 00000013 nop + 8000026c: 000f0313 mv t1,t5 + 80000270: 00000e93 li t4,0 + 80000274: 0dd31a63 bne t1,t4,80000348 + 80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000027c: 00200293 li t0,2 + 80000280: fc521ce3 bne tp,t0,80000258 + +0000000080000284 : + 80000284: 00f00193 li gp,15 + 80000288: 00000213 li tp,0 + 8000028c: 00002097 auipc ra,0x2 + 80000290: d7508093 addi ra,ra,-651 # 80002001 + 80000294: 0010cf03 lbu t5,1(ra) + 80000298: 0f000e93 li t4,240 + 8000029c: 0bdf1663 bne t5,t4,80000348 + 800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a4: 00200293 li t0,2 + 800002a8: fe5212e3 bne tp,t0,8000028c + +00000000800002ac : + 800002ac: 01000193 li gp,16 + 800002b0: 00000213 li tp,0 + 800002b4: 00002097 auipc ra,0x2 + 800002b8: d4e08093 addi ra,ra,-690 # 80002002 + 800002bc: 00000013 nop + 800002c0: 0010cf03 lbu t5,1(ra) + 800002c4: 00f00e93 li t4,15 + 800002c8: 09df1063 bne t5,t4,80000348 + 800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d0: 00200293 li t0,2 + 800002d4: fe5210e3 bne tp,t0,800002b4 + +00000000800002d8 : + 800002d8: 01100193 li gp,17 + 800002dc: 00000213 li tp,0 + 800002e0: 00002097 auipc ra,0x2 + 800002e4: d2008093 addi ra,ra,-736 # 80002000 + 800002e8: 00000013 nop + 800002ec: 00000013 nop + 800002f0: 0010cf03 lbu t5,1(ra) + 800002f4: 00000e93 li t4,0 + 800002f8: 05df1863 bne t5,t4,80000348 + 800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000300: 00200293 li t0,2 + 80000304: fc521ee3 bne tp,t0,800002e0 + +0000000080000308 : + 80000308: 00002297 auipc t0,0x2 + 8000030c: cf828293 addi t0,t0,-776 # 80002000 + 80000310: 0002c103 lbu sp,0(t0) + 80000314: 00200113 li sp,2 + 80000318: 00200e93 li t4,2 + 8000031c: 01200193 li gp,18 + 80000320: 03d11463 bne sp,t4,80000348 + +0000000080000324 : + 80000324: 00002297 auipc t0,0x2 + 80000328: cdc28293 addi t0,t0,-804 # 80002000 + 8000032c: 0002c103 lbu sp,0(t0) + 80000330: 00000013 nop + 80000334: 00200113 li sp,2 + 80000338: 00200e93 li t4,2 + 8000033c: 01300193 li gp,19 + 80000340: 01d11463 bne sp,t4,80000348 + 80000344: 00301c63 bne zero,gp,8000035c + +0000000080000348 : + 80000348: 0ff0000f fence + 8000034c: 00018063 beqz gp,8000034c + 80000350: 00119193 slli gp,gp,0x1 + 80000354: 0011e193 ori gp,gp,1 + 80000358: 00000073 ecall + +000000008000035c : + 8000035c: 0ff0000f fence + 80000360: 00100193 li gp,1 + 80000364: 00000073 ecall + 80000368: c0001073 unimp + 8000036c: 0000 unimp + 8000036e: 0000 unimp + 80000370: 0000 unimp + 80000372: 0000 unimp + 80000374: 0000 unimp + 80000376: 0000 unimp + 80000378: 0000 unimp + 8000037a: 0000 unimp + 8000037c: 0000 unimp + 8000037e: 0000 unimp + 80000380: 0000 unimp + 80000382: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 0xff + +0000000080002001 : + 80002001: sd s0,32(s0) + +0000000080002002 : + 80002002: addi a2,sp,988 + +0000000080002003 : + 80002003: 0000000f fence unknown,unknown + 80002007: 0000 unimp + 80002009: 0000 unimp + 8000200b: 0000 unimp + 8000200d: 0000 unimp + 8000200f: 00 Address 0x000000008000200f is out of bounds. + diff --git a/Tests/isa/rv64ui-p-ld b/Tests/isa/rv64ui-p-ld new file mode 100644 index 0000000..785949b Binary files /dev/null and b/Tests/isa/rv64ui-p-ld differ diff --git a/Tests/isa/rv64ui-p-ld.dump b/Tests/isa/rv64ui-p-ld.dump new file mode 100644 index 0000000..dcebe2d --- /dev/null +++ b/Tests/isa/rv64ui-p-ld.dump @@ -0,0 +1,406 @@ + +rv64ui-p-ld: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 0000bf03 ld t5,0(ra) + 80000108: 00ff0eb7 lui t4,0xff0 + 8000010c: 0ffe8e9b addiw t4,t4,255 + 80000110: 010e9e93 slli t4,t4,0x10 + 80000114: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> + 80000118: 010e9e93 slli t4,t4,0x10 + 8000011c: 0ffe8e93 addi t4,t4,255 + 80000120: 00200193 li gp,2 + 80000124: 3bdf1263 bne t5,t4,800004c8 + +0000000080000128 : + 80000128: 00002097 auipc ra,0x2 + 8000012c: ed808093 addi ra,ra,-296 # 80002000 + 80000130: 0080bf03 ld t5,8(ra) + 80000134: ff010eb7 lui t4,0xff010 + 80000138: f01e8e9b addiw t4,t4,-255 + 8000013c: 010e9e93 slli t4,t4,0x10 + 80000140: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f00dee1> + 80000144: 010e9e93 slli t4,t4,0x10 + 80000148: f00e8e93 addi t4,t4,-256 + 8000014c: 00300193 li gp,3 + 80000150: 37df1c63 bne t5,t4,800004c8 + +0000000080000154 : + 80000154: 00002097 auipc ra,0x2 + 80000158: eac08093 addi ra,ra,-340 # 80002000 + 8000015c: 0100bf03 ld t5,16(ra) + 80000160: 00010eb7 lui t4,0x10 + 80000164: f01e8e9b addiw t4,t4,-255 + 80000168: 010e9e93 slli t4,t4,0x10 + 8000016c: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 80000170: 010e9e93 slli t4,t4,0x10 + 80000174: f01e8e93 addi t4,t4,-255 + 80000178: 00ce9e93 slli t4,t4,0xc + 8000017c: ff0e8e93 addi t4,t4,-16 + 80000180: 00400193 li gp,4 + 80000184: 35df1263 bne t5,t4,800004c8 + +0000000080000188 : + 80000188: 00002097 auipc ra,0x2 + 8000018c: e7808093 addi ra,ra,-392 # 80002000 + 80000190: 0180bf03 ld t5,24(ra) + 80000194: ffff0eb7 lui t4,0xffff0 + 80000198: 0ffe8e9b addiw t4,t4,255 + 8000019c: 010e9e93 slli t4,t4,0x10 + 800001a0: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffee0df> + 800001a4: 010e9e93 slli t4,t4,0x10 + 800001a8: 0ffe8e93 addi t4,t4,255 + 800001ac: 00ce9e93 slli t4,t4,0xc + 800001b0: 00fe8e93 addi t4,t4,15 + 800001b4: 00500193 li gp,5 + 800001b8: 31df1863 bne t5,t4,800004c8 + +00000000800001bc : + 800001bc: 00002097 auipc ra,0x2 + 800001c0: e5c08093 addi ra,ra,-420 # 80002018 + 800001c4: fe80bf03 ld t5,-24(ra) + 800001c8: 00ff0eb7 lui t4,0xff0 + 800001cc: 0ffe8e9b addiw t4,t4,255 + 800001d0: 010e9e93 slli t4,t4,0x10 + 800001d4: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> + 800001d8: 010e9e93 slli t4,t4,0x10 + 800001dc: 0ffe8e93 addi t4,t4,255 + 800001e0: 00600193 li gp,6 + 800001e4: 2fdf1263 bne t5,t4,800004c8 + +00000000800001e8 : + 800001e8: 00002097 auipc ra,0x2 + 800001ec: e3008093 addi ra,ra,-464 # 80002018 + 800001f0: ff00bf03 ld t5,-16(ra) + 800001f4: ff010eb7 lui t4,0xff010 + 800001f8: f01e8e9b addiw t4,t4,-255 + 800001fc: 010e9e93 slli t4,t4,0x10 + 80000200: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f00dee1> + 80000204: 010e9e93 slli t4,t4,0x10 + 80000208: f00e8e93 addi t4,t4,-256 + 8000020c: 00700193 li gp,7 + 80000210: 2bdf1c63 bne t5,t4,800004c8 + +0000000080000214 : + 80000214: 00002097 auipc ra,0x2 + 80000218: e0408093 addi ra,ra,-508 # 80002018 + 8000021c: ff80bf03 ld t5,-8(ra) + 80000220: 00010eb7 lui t4,0x10 + 80000224: f01e8e9b addiw t4,t4,-255 + 80000228: 010e9e93 slli t4,t4,0x10 + 8000022c: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 80000230: 010e9e93 slli t4,t4,0x10 + 80000234: f01e8e93 addi t4,t4,-255 + 80000238: 00ce9e93 slli t4,t4,0xc + 8000023c: ff0e8e93 addi t4,t4,-16 + 80000240: 00800193 li gp,8 + 80000244: 29df1263 bne t5,t4,800004c8 + +0000000080000248 : + 80000248: 00002097 auipc ra,0x2 + 8000024c: dd008093 addi ra,ra,-560 # 80002018 + 80000250: 0000bf03 ld t5,0(ra) + 80000254: ffff0eb7 lui t4,0xffff0 + 80000258: 0ffe8e9b addiw t4,t4,255 + 8000025c: 010e9e93 slli t4,t4,0x10 + 80000260: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffee0df> + 80000264: 010e9e93 slli t4,t4,0x10 + 80000268: 0ffe8e93 addi t4,t4,255 + 8000026c: 00ce9e93 slli t4,t4,0xc + 80000270: 00fe8e93 addi t4,t4,15 + 80000274: 00900193 li gp,9 + 80000278: 25df1863 bne t5,t4,800004c8 + +000000008000027c : + 8000027c: 00002097 auipc ra,0x2 + 80000280: d8408093 addi ra,ra,-636 # 80002000 + 80000284: fe008093 addi ra,ra,-32 + 80000288: 0200b283 ld t0,32(ra) + 8000028c: 00ff0eb7 lui t4,0xff0 + 80000290: 0ffe8e9b addiw t4,t4,255 + 80000294: 010e9e93 slli t4,t4,0x10 + 80000298: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> + 8000029c: 010e9e93 slli t4,t4,0x10 + 800002a0: 0ffe8e93 addi t4,t4,255 + 800002a4: 00a00193 li gp,10 + 800002a8: 23d29063 bne t0,t4,800004c8 + +00000000800002ac : + 800002ac: 00002097 auipc ra,0x2 + 800002b0: d5408093 addi ra,ra,-684 # 80002000 + 800002b4: ffd08093 addi ra,ra,-3 + 800002b8: 00b0b283 ld t0,11(ra) + 800002bc: ff010eb7 lui t4,0xff010 + 800002c0: f01e8e9b addiw t4,t4,-255 + 800002c4: 010e9e93 slli t4,t4,0x10 + 800002c8: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f00dee1> + 800002cc: 010e9e93 slli t4,t4,0x10 + 800002d0: f00e8e93 addi t4,t4,-256 + 800002d4: 00b00193 li gp,11 + 800002d8: 1fd29863 bne t0,t4,800004c8 + +00000000800002dc : + 800002dc: 00c00193 li gp,12 + 800002e0: 00000213 li tp,0 + 800002e4: 00002097 auipc ra,0x2 + 800002e8: d2408093 addi ra,ra,-732 # 80002008 + 800002ec: 0080bf03 ld t5,8(ra) + 800002f0: 000f0313 mv t1,t5 + 800002f4: 00010eb7 lui t4,0x10 + 800002f8: f01e8e9b addiw t4,t4,-255 + 800002fc: 010e9e93 slli t4,t4,0x10 + 80000300: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 80000304: 010e9e93 slli t4,t4,0x10 + 80000308: f01e8e93 addi t4,t4,-255 + 8000030c: 00ce9e93 slli t4,t4,0xc + 80000310: ff0e8e93 addi t4,t4,-16 + 80000314: 1bd31a63 bne t1,t4,800004c8 + 80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000031c: 00200293 li t0,2 + 80000320: fc5212e3 bne tp,t0,800002e4 + +0000000080000324 : + 80000324: 00d00193 li gp,13 + 80000328: 00000213 li tp,0 + 8000032c: 00002097 auipc ra,0x2 + 80000330: ce408093 addi ra,ra,-796 # 80002010 + 80000334: 0080bf03 ld t5,8(ra) + 80000338: 00000013 nop + 8000033c: 000f0313 mv t1,t5 + 80000340: ffff0eb7 lui t4,0xffff0 + 80000344: 0ffe8e9b addiw t4,t4,255 + 80000348: 010e9e93 slli t4,t4,0x10 + 8000034c: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffee0df> + 80000350: 010e9e93 slli t4,t4,0x10 + 80000354: 0ffe8e93 addi t4,t4,255 + 80000358: 00ce9e93 slli t4,t4,0xc + 8000035c: 00fe8e93 addi t4,t4,15 + 80000360: 17d31463 bne t1,t4,800004c8 + 80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000368: 00200293 li t0,2 + 8000036c: fc5210e3 bne tp,t0,8000032c + +0000000080000370 : + 80000370: 00e00193 li gp,14 + 80000374: 00000213 li tp,0 + 80000378: 00002097 auipc ra,0x2 + 8000037c: c8808093 addi ra,ra,-888 # 80002000 + 80000380: 0080bf03 ld t5,8(ra) + 80000384: 00000013 nop + 80000388: 00000013 nop + 8000038c: 000f0313 mv t1,t5 + 80000390: ff010eb7 lui t4,0xff010 + 80000394: f01e8e9b addiw t4,t4,-255 + 80000398: 010e9e93 slli t4,t4,0x10 + 8000039c: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f00dee1> + 800003a0: 010e9e93 slli t4,t4,0x10 + 800003a4: f00e8e93 addi t4,t4,-256 + 800003a8: 13d31063 bne t1,t4,800004c8 + 800003ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b0: 00200293 li t0,2 + 800003b4: fc5212e3 bne tp,t0,80000378 + +00000000800003b8 : + 800003b8: 00f00193 li gp,15 + 800003bc: 00000213 li tp,0 + 800003c0: 00002097 auipc ra,0x2 + 800003c4: c4808093 addi ra,ra,-952 # 80002008 + 800003c8: 0080bf03 ld t5,8(ra) + 800003cc: 00010eb7 lui t4,0x10 + 800003d0: f01e8e9b addiw t4,t4,-255 + 800003d4: 010e9e93 slli t4,t4,0x10 + 800003d8: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 800003dc: 010e9e93 slli t4,t4,0x10 + 800003e0: f01e8e93 addi t4,t4,-255 + 800003e4: 00ce9e93 slli t4,t4,0xc + 800003e8: ff0e8e93 addi t4,t4,-16 + 800003ec: 0ddf1e63 bne t5,t4,800004c8 + 800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003f4: 00200293 li t0,2 + 800003f8: fc5214e3 bne tp,t0,800003c0 + +00000000800003fc : + 800003fc: 01000193 li gp,16 + 80000400: 00000213 li tp,0 + 80000404: 00002097 auipc ra,0x2 + 80000408: c0c08093 addi ra,ra,-1012 # 80002010 + 8000040c: 00000013 nop + 80000410: 0080bf03 ld t5,8(ra) + 80000414: ffff0eb7 lui t4,0xffff0 + 80000418: 0ffe8e9b addiw t4,t4,255 + 8000041c: 010e9e93 slli t4,t4,0x10 + 80000420: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffee0df> + 80000424: 010e9e93 slli t4,t4,0x10 + 80000428: 0ffe8e93 addi t4,t4,255 + 8000042c: 00ce9e93 slli t4,t4,0xc + 80000430: 00fe8e93 addi t4,t4,15 + 80000434: 09df1a63 bne t5,t4,800004c8 + 80000438: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000043c: 00200293 li t0,2 + 80000440: fc5212e3 bne tp,t0,80000404 + +0000000080000444 : + 80000444: 01100193 li gp,17 + 80000448: 00000213 li tp,0 + 8000044c: 00002097 auipc ra,0x2 + 80000450: bb408093 addi ra,ra,-1100 # 80002000 + 80000454: 00000013 nop + 80000458: 00000013 nop + 8000045c: 0080bf03 ld t5,8(ra) + 80000460: ff010eb7 lui t4,0xff010 + 80000464: f01e8e9b addiw t4,t4,-255 + 80000468: 010e9e93 slli t4,t4,0x10 + 8000046c: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f00dee1> + 80000470: 010e9e93 slli t4,t4,0x10 + 80000474: f00e8e93 addi t4,t4,-256 + 80000478: 05df1863 bne t5,t4,800004c8 + 8000047c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000480: 00200293 li t0,2 + 80000484: fc5214e3 bne tp,t0,8000044c + +0000000080000488 : + 80000488: 00002297 auipc t0,0x2 + 8000048c: b7828293 addi t0,t0,-1160 # 80002000 + 80000490: 0002b103 ld sp,0(t0) + 80000494: 00200113 li sp,2 + 80000498: 00200e93 li t4,2 + 8000049c: 01200193 li gp,18 + 800004a0: 03d11463 bne sp,t4,800004c8 + +00000000800004a4 : + 800004a4: 00002297 auipc t0,0x2 + 800004a8: b5c28293 addi t0,t0,-1188 # 80002000 + 800004ac: 0002b103 ld sp,0(t0) + 800004b0: 00000013 nop + 800004b4: 00200113 li sp,2 + 800004b8: 00200e93 li t4,2 + 800004bc: 01300193 li gp,19 + 800004c0: 01d11463 bne sp,t4,800004c8 + 800004c4: 00301c63 bne zero,gp,800004dc + +00000000800004c8 : + 800004c8: 0ff0000f fence + 800004cc: 00018063 beqz gp,800004cc + 800004d0: 00119193 slli gp,gp,0x1 + 800004d4: 0011e193 ori gp,gp,1 + 800004d8: 00000073 ecall + +00000000800004dc : + 800004dc: 0ff0000f fence + 800004e0: 00100193 li gp,1 + 800004e4: 00000073 ecall + 800004e8: c0001073 unimp + 800004ec: 0000 unimp + 800004ee: 0000 unimp + 800004f0: 0000 unimp + 800004f2: 0000 unimp + 800004f4: 0000 unimp + 800004f6: 0000 unimp + 800004f8: 0000 unimp + 800004fa: 0000 unimp + 800004fc: 0000 unimp + 800004fe: 0000 unimp + 80000500: 0000 unimp + 80000502: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 00ff 0xff + 80002002: 00ff 0xff + 80002004: 00ff 0xff + 80002006: 00ff 0xff + +0000000080002008 : + 80002008: ff00 sd s0,56(a4) + 8000200a: ff00 sd s0,56(a4) + 8000200c: ff00 sd s0,56(a4) + 8000200e: ff00 sd s0,56(a4) + +0000000080002010 : + 80002010: 0ff0 addi a2,sp,988 + 80002012: 0ff0 addi a2,sp,988 + 80002014: 0ff0 addi a2,sp,988 + 80002016: 0ff0 addi a2,sp,988 + +0000000080002018 : + 80002018: f00ff00f 0xf00ff00f + 8000201c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv64ui-p-lh b/Tests/isa/rv64ui-p-lh new file mode 100644 index 0000000..3740c44 Binary files /dev/null and b/Tests/isa/rv64ui-p-lh differ diff --git a/Tests/isa/rv64ui-p-lh.dump b/Tests/isa/rv64ui-p-lh.dump new file mode 100644 index 0000000..214e5b0 --- /dev/null +++ b/Tests/isa/rv64ui-p-lh.dump @@ -0,0 +1,327 @@ + +rv64ui-p-lh: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 00009f03 lh t5,0(ra) + 80000108: 0ff00e93 li t4,255 + 8000010c: 00200193 li gp,2 + 80000110: 25df1c63 bne t5,t4,80000368 + +0000000080000114 : + 80000114: 00002097 auipc ra,0x2 + 80000118: eec08093 addi ra,ra,-276 # 80002000 + 8000011c: 00209f03 lh t5,2(ra) + 80000120: f0000e93 li t4,-256 + 80000124: 00300193 li gp,3 + 80000128: 25df1063 bne t5,t4,80000368 + +000000008000012c : + 8000012c: 00002097 auipc ra,0x2 + 80000130: ed408093 addi ra,ra,-300 # 80002000 + 80000134: 00409f03 lh t5,4(ra) + 80000138: 00001eb7 lui t4,0x1 + 8000013c: ff0e8e9b addiw t4,t4,-16 + 80000140: 00400193 li gp,4 + 80000144: 23df1263 bne t5,t4,80000368 + +0000000080000148 : + 80000148: 00002097 auipc ra,0x2 + 8000014c: eb808093 addi ra,ra,-328 # 80002000 + 80000150: 00609f03 lh t5,6(ra) + 80000154: fffffeb7 lui t4,0xfffff + 80000158: 00fe8e9b addiw t4,t4,15 + 8000015c: 00500193 li gp,5 + 80000160: 21df1463 bne t5,t4,80000368 + +0000000080000164 : + 80000164: 00002097 auipc ra,0x2 + 80000168: ea208093 addi ra,ra,-350 # 80002006 + 8000016c: ffa09f03 lh t5,-6(ra) + 80000170: 0ff00e93 li t4,255 + 80000174: 00600193 li gp,6 + 80000178: 1fdf1863 bne t5,t4,80000368 + +000000008000017c : + 8000017c: 00002097 auipc ra,0x2 + 80000180: e8a08093 addi ra,ra,-374 # 80002006 + 80000184: ffc09f03 lh t5,-4(ra) + 80000188: f0000e93 li t4,-256 + 8000018c: 00700193 li gp,7 + 80000190: 1ddf1c63 bne t5,t4,80000368 + +0000000080000194 : + 80000194: 00002097 auipc ra,0x2 + 80000198: e7208093 addi ra,ra,-398 # 80002006 + 8000019c: ffe09f03 lh t5,-2(ra) + 800001a0: 00001eb7 lui t4,0x1 + 800001a4: ff0e8e9b addiw t4,t4,-16 + 800001a8: 00800193 li gp,8 + 800001ac: 1bdf1e63 bne t5,t4,80000368 + +00000000800001b0 : + 800001b0: 00002097 auipc ra,0x2 + 800001b4: e5608093 addi ra,ra,-426 # 80002006 + 800001b8: 00009f03 lh t5,0(ra) + 800001bc: fffffeb7 lui t4,0xfffff + 800001c0: 00fe8e9b addiw t4,t4,15 + 800001c4: 00900193 li gp,9 + 800001c8: 1bdf1063 bne t5,t4,80000368 + +00000000800001cc : + 800001cc: 00002097 auipc ra,0x2 + 800001d0: e3408093 addi ra,ra,-460 # 80002000 + 800001d4: fe008093 addi ra,ra,-32 + 800001d8: 02009283 lh t0,32(ra) + 800001dc: 0ff00e93 li t4,255 + 800001e0: 00a00193 li gp,10 + 800001e4: 19d29263 bne t0,t4,80000368 + +00000000800001e8 : + 800001e8: 00002097 auipc ra,0x2 + 800001ec: e1808093 addi ra,ra,-488 # 80002000 + 800001f0: ffb08093 addi ra,ra,-5 + 800001f4: 00709283 lh t0,7(ra) + 800001f8: f0000e93 li t4,-256 + 800001fc: 00b00193 li gp,11 + 80000200: 17d29463 bne t0,t4,80000368 + +0000000080000204 : + 80000204: 00c00193 li gp,12 + 80000208: 00000213 li tp,0 + 8000020c: 00002097 auipc ra,0x2 + 80000210: df608093 addi ra,ra,-522 # 80002002 + 80000214: 00209f03 lh t5,2(ra) + 80000218: 000f0313 mv t1,t5 + 8000021c: 00001eb7 lui t4,0x1 + 80000220: ff0e8e9b addiw t4,t4,-16 + 80000224: 15d31263 bne t1,t4,80000368 + 80000228: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000022c: 00200293 li t0,2 + 80000230: fc521ee3 bne tp,t0,8000020c + +0000000080000234 : + 80000234: 00d00193 li gp,13 + 80000238: 00000213 li tp,0 + 8000023c: 00002097 auipc ra,0x2 + 80000240: dc808093 addi ra,ra,-568 # 80002004 + 80000244: 00209f03 lh t5,2(ra) + 80000248: 00000013 nop + 8000024c: 000f0313 mv t1,t5 + 80000250: fffffeb7 lui t4,0xfffff + 80000254: 00fe8e9b addiw t4,t4,15 + 80000258: 11d31863 bne t1,t4,80000368 + 8000025c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000260: 00200293 li t0,2 + 80000264: fc521ce3 bne tp,t0,8000023c + +0000000080000268 : + 80000268: 00e00193 li gp,14 + 8000026c: 00000213 li tp,0 + 80000270: 00002097 auipc ra,0x2 + 80000274: d9008093 addi ra,ra,-624 # 80002000 + 80000278: 00209f03 lh t5,2(ra) + 8000027c: 00000013 nop + 80000280: 00000013 nop + 80000284: 000f0313 mv t1,t5 + 80000288: f0000e93 li t4,-256 + 8000028c: 0dd31e63 bne t1,t4,80000368 + 80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000294: 00200293 li t0,2 + 80000298: fc521ce3 bne tp,t0,80000270 + +000000008000029c : + 8000029c: 00f00193 li gp,15 + 800002a0: 00000213 li tp,0 + 800002a4: 00002097 auipc ra,0x2 + 800002a8: d5e08093 addi ra,ra,-674 # 80002002 + 800002ac: 00209f03 lh t5,2(ra) + 800002b0: 00001eb7 lui t4,0x1 + 800002b4: ff0e8e9b addiw t4,t4,-16 + 800002b8: 0bdf1863 bne t5,t4,80000368 + 800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002c0: 00200293 li t0,2 + 800002c4: fe5210e3 bne tp,t0,800002a4 + +00000000800002c8 : + 800002c8: 01000193 li gp,16 + 800002cc: 00000213 li tp,0 + 800002d0: 00002097 auipc ra,0x2 + 800002d4: d3408093 addi ra,ra,-716 # 80002004 + 800002d8: 00000013 nop + 800002dc: 00209f03 lh t5,2(ra) + 800002e0: fffffeb7 lui t4,0xfffff + 800002e4: 00fe8e9b addiw t4,t4,15 + 800002e8: 09df1063 bne t5,t4,80000368 + 800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f0: 00200293 li t0,2 + 800002f4: fc521ee3 bne tp,t0,800002d0 + +00000000800002f8 : + 800002f8: 01100193 li gp,17 + 800002fc: 00000213 li tp,0 + 80000300: 00002097 auipc ra,0x2 + 80000304: d0008093 addi ra,ra,-768 # 80002000 + 80000308: 00000013 nop + 8000030c: 00000013 nop + 80000310: 00209f03 lh t5,2(ra) + 80000314: f0000e93 li t4,-256 + 80000318: 05df1863 bne t5,t4,80000368 + 8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000320: 00200293 li t0,2 + 80000324: fc521ee3 bne tp,t0,80000300 + +0000000080000328 : + 80000328: 00002297 auipc t0,0x2 + 8000032c: cd828293 addi t0,t0,-808 # 80002000 + 80000330: 00029103 lh sp,0(t0) + 80000334: 00200113 li sp,2 + 80000338: 00200e93 li t4,2 + 8000033c: 01200193 li gp,18 + 80000340: 03d11463 bne sp,t4,80000368 + +0000000080000344 : + 80000344: 00002297 auipc t0,0x2 + 80000348: cbc28293 addi t0,t0,-836 # 80002000 + 8000034c: 00029103 lh sp,0(t0) + 80000350: 00000013 nop + 80000354: 00200113 li sp,2 + 80000358: 00200e93 li t4,2 + 8000035c: 01300193 li gp,19 + 80000360: 01d11463 bne sp,t4,80000368 + 80000364: 00301c63 bne zero,gp,8000037c + +0000000080000368 : + 80000368: 0ff0000f fence + 8000036c: 00018063 beqz gp,8000036c + 80000370: 00119193 slli gp,gp,0x1 + 80000374: 0011e193 ori gp,gp,1 + 80000378: 00000073 ecall + +000000008000037c : + 8000037c: 0ff0000f fence + 80000380: 00100193 li gp,1 + 80000384: 00000073 ecall + 80000388: c0001073 unimp + 8000038c: 0000 unimp + 8000038e: 0000 unimp + 80000390: 0000 unimp + 80000392: 0000 unimp + 80000394: 0000 unimp + 80000396: 0000 unimp + 80000398: 0000 unimp + 8000039a: 0000 unimp + 8000039c: 0000 unimp + 8000039e: 0000 unimp + 800003a0: 0000 unimp + 800003a2: 0000 unimp + 800003a4: 0000 unimp + 800003a6: 0000 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 00ff 0xff + +0000000080002002 : + 80002002: ff00 sd s0,56(a4) + +0000000080002004 : + 80002004: 0ff0 addi a2,sp,988 + +0000000080002006 : + 80002006: 0000f00f 0xf00f + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64ui-p-lhu b/Tests/isa/rv64ui-p-lhu new file mode 100644 index 0000000..f9aec24 Binary files /dev/null and b/Tests/isa/rv64ui-p-lhu differ diff --git a/Tests/isa/rv64ui-p-lhu.dump b/Tests/isa/rv64ui-p-lhu.dump new file mode 100644 index 0000000..6cc3def --- /dev/null +++ b/Tests/isa/rv64ui-p-lhu.dump @@ -0,0 +1,322 @@ + +rv64ui-p-lhu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 0000df03 lhu t5,0(ra) + 80000108: 0ff00e93 li t4,255 + 8000010c: 00200193 li gp,2 + 80000110: 27df1663 bne t5,t4,8000037c + +0000000080000114 : + 80000114: 00002097 auipc ra,0x2 + 80000118: eec08093 addi ra,ra,-276 # 80002000 + 8000011c: 0020df03 lhu t5,2(ra) + 80000120: 00010eb7 lui t4,0x10 + 80000124: f00e8e9b addiw t4,t4,-256 + 80000128: 00300193 li gp,3 + 8000012c: 25df1863 bne t5,t4,8000037c + +0000000080000130 : + 80000130: 00002097 auipc ra,0x2 + 80000134: ed008093 addi ra,ra,-304 # 80002000 + 80000138: 0040df03 lhu t5,4(ra) + 8000013c: 00001eb7 lui t4,0x1 + 80000140: ff0e8e9b addiw t4,t4,-16 + 80000144: 00400193 li gp,4 + 80000148: 23df1a63 bne t5,t4,8000037c + +000000008000014c : + 8000014c: 00002097 auipc ra,0x2 + 80000150: eb408093 addi ra,ra,-332 # 80002000 + 80000154: 0060df03 lhu t5,6(ra) + 80000158: 0000feb7 lui t4,0xf + 8000015c: 00fe8e9b addiw t4,t4,15 + 80000160: 00500193 li gp,5 + 80000164: 21df1c63 bne t5,t4,8000037c + +0000000080000168 : + 80000168: 00002097 auipc ra,0x2 + 8000016c: e9e08093 addi ra,ra,-354 # 80002006 + 80000170: ffa0df03 lhu t5,-6(ra) + 80000174: 0ff00e93 li t4,255 + 80000178: 00600193 li gp,6 + 8000017c: 21df1063 bne t5,t4,8000037c + +0000000080000180 : + 80000180: 00002097 auipc ra,0x2 + 80000184: e8608093 addi ra,ra,-378 # 80002006 + 80000188: ffc0df03 lhu t5,-4(ra) + 8000018c: 00010eb7 lui t4,0x10 + 80000190: f00e8e9b addiw t4,t4,-256 + 80000194: 00700193 li gp,7 + 80000198: 1fdf1263 bne t5,t4,8000037c + +000000008000019c : + 8000019c: 00002097 auipc ra,0x2 + 800001a0: e6a08093 addi ra,ra,-406 # 80002006 + 800001a4: ffe0df03 lhu t5,-2(ra) + 800001a8: 00001eb7 lui t4,0x1 + 800001ac: ff0e8e9b addiw t4,t4,-16 + 800001b0: 00800193 li gp,8 + 800001b4: 1ddf1463 bne t5,t4,8000037c + +00000000800001b8 : + 800001b8: 00002097 auipc ra,0x2 + 800001bc: e4e08093 addi ra,ra,-434 # 80002006 + 800001c0: 0000df03 lhu t5,0(ra) + 800001c4: 0000feb7 lui t4,0xf + 800001c8: 00fe8e9b addiw t4,t4,15 + 800001cc: 00900193 li gp,9 + 800001d0: 1bdf1663 bne t5,t4,8000037c + +00000000800001d4 : + 800001d4: 00002097 auipc ra,0x2 + 800001d8: e2c08093 addi ra,ra,-468 # 80002000 + 800001dc: fe008093 addi ra,ra,-32 + 800001e0: 0200d283 lhu t0,32(ra) + 800001e4: 0ff00e93 li t4,255 + 800001e8: 00a00193 li gp,10 + 800001ec: 19d29863 bne t0,t4,8000037c + +00000000800001f0 : + 800001f0: 00002097 auipc ra,0x2 + 800001f4: e1008093 addi ra,ra,-496 # 80002000 + 800001f8: ffb08093 addi ra,ra,-5 + 800001fc: 0070d283 lhu t0,7(ra) + 80000200: 00010eb7 lui t4,0x10 + 80000204: f00e8e9b addiw t4,t4,-256 + 80000208: 00b00193 li gp,11 + 8000020c: 17d29863 bne t0,t4,8000037c + +0000000080000210 : + 80000210: 00c00193 li gp,12 + 80000214: 00000213 li tp,0 + 80000218: 00002097 auipc ra,0x2 + 8000021c: dea08093 addi ra,ra,-534 # 80002002 + 80000220: 0020df03 lhu t5,2(ra) + 80000224: 000f0313 mv t1,t5 + 80000228: 00001eb7 lui t4,0x1 + 8000022c: ff0e8e9b addiw t4,t4,-16 + 80000230: 15d31663 bne t1,t4,8000037c + 80000234: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000238: 00200293 li t0,2 + 8000023c: fc521ee3 bne tp,t0,80000218 + +0000000080000240 : + 80000240: 00d00193 li gp,13 + 80000244: 00000213 li tp,0 + 80000248: 00002097 auipc ra,0x2 + 8000024c: dbc08093 addi ra,ra,-580 # 80002004 + 80000250: 0020df03 lhu t5,2(ra) + 80000254: 00000013 nop + 80000258: 000f0313 mv t1,t5 + 8000025c: 0000feb7 lui t4,0xf + 80000260: 00fe8e9b addiw t4,t4,15 + 80000264: 11d31c63 bne t1,t4,8000037c + 80000268: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000026c: 00200293 li t0,2 + 80000270: fc521ce3 bne tp,t0,80000248 + +0000000080000274 : + 80000274: 00e00193 li gp,14 + 80000278: 00000213 li tp,0 + 8000027c: 00002097 auipc ra,0x2 + 80000280: d8408093 addi ra,ra,-636 # 80002000 + 80000284: 0020df03 lhu t5,2(ra) + 80000288: 00000013 nop + 8000028c: 00000013 nop + 80000290: 000f0313 mv t1,t5 + 80000294: 00010eb7 lui t4,0x10 + 80000298: f00e8e9b addiw t4,t4,-256 + 8000029c: 0fd31063 bne t1,t4,8000037c + 800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a4: 00200293 li t0,2 + 800002a8: fc521ae3 bne tp,t0,8000027c + +00000000800002ac : + 800002ac: 00f00193 li gp,15 + 800002b0: 00000213 li tp,0 + 800002b4: 00002097 auipc ra,0x2 + 800002b8: d4e08093 addi ra,ra,-690 # 80002002 + 800002bc: 0020df03 lhu t5,2(ra) + 800002c0: 00001eb7 lui t4,0x1 + 800002c4: ff0e8e9b addiw t4,t4,-16 + 800002c8: 0bdf1a63 bne t5,t4,8000037c + 800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d0: 00200293 li t0,2 + 800002d4: fe5210e3 bne tp,t0,800002b4 + +00000000800002d8 : + 800002d8: 01000193 li gp,16 + 800002dc: 00000213 li tp,0 + 800002e0: 00002097 auipc ra,0x2 + 800002e4: d2408093 addi ra,ra,-732 # 80002004 + 800002e8: 00000013 nop + 800002ec: 0020df03 lhu t5,2(ra) + 800002f0: 0000feb7 lui t4,0xf + 800002f4: 00fe8e9b addiw t4,t4,15 + 800002f8: 09df1263 bne t5,t4,8000037c + 800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000300: 00200293 li t0,2 + 80000304: fc521ee3 bne tp,t0,800002e0 + +0000000080000308 : + 80000308: 01100193 li gp,17 + 8000030c: 00000213 li tp,0 + 80000310: 00002097 auipc ra,0x2 + 80000314: cf008093 addi ra,ra,-784 # 80002000 + 80000318: 00000013 nop + 8000031c: 00000013 nop + 80000320: 0020df03 lhu t5,2(ra) + 80000324: 00010eb7 lui t4,0x10 + 80000328: f00e8e9b addiw t4,t4,-256 + 8000032c: 05df1863 bne t5,t4,8000037c + 80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000334: 00200293 li t0,2 + 80000338: fc521ce3 bne tp,t0,80000310 + +000000008000033c : + 8000033c: 00002297 auipc t0,0x2 + 80000340: cc428293 addi t0,t0,-828 # 80002000 + 80000344: 0002d103 lhu sp,0(t0) + 80000348: 00200113 li sp,2 + 8000034c: 00200e93 li t4,2 + 80000350: 01200193 li gp,18 + 80000354: 03d11463 bne sp,t4,8000037c + +0000000080000358 : + 80000358: 00002297 auipc t0,0x2 + 8000035c: ca828293 addi t0,t0,-856 # 80002000 + 80000360: 0002d103 lhu sp,0(t0) + 80000364: 00000013 nop + 80000368: 00200113 li sp,2 + 8000036c: 00200e93 li t4,2 + 80000370: 01300193 li gp,19 + 80000374: 01d11463 bne sp,t4,8000037c + 80000378: 00301c63 bne zero,gp,80000390 + +000000008000037c : + 8000037c: 0ff0000f fence + 80000380: 00018063 beqz gp,80000380 + 80000384: 00119193 slli gp,gp,0x1 + 80000388: 0011e193 ori gp,gp,1 + 8000038c: 00000073 ecall + +0000000080000390 : + 80000390: 0ff0000f fence + 80000394: 00100193 li gp,1 + 80000398: 00000073 ecall + 8000039c: c0001073 unimp + 800003a0: 0000 unimp + 800003a2: 0000 unimp + 800003a4: 0000 unimp + 800003a6: 0000 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 00ff 0xff + +0000000080002002 : + 80002002: ff00 sd s0,56(a4) + +0000000080002004 : + 80002004: 0ff0 addi a2,sp,988 + +0000000080002006 : + 80002006: 0000f00f 0xf00f + 8000200a: 0000 unimp + 8000200c: 0000 unimp + 8000200e: 0000 unimp diff --git a/Tests/isa/rv64ui-p-lui b/Tests/isa/rv64ui-p-lui new file mode 100644 index 0000000..b6ea0db Binary files /dev/null and b/Tests/isa/rv64ui-p-lui differ diff --git a/Tests/isa/rv64ui-p-lui.dump b/Tests/isa/rv64ui-p-lui.dump new file mode 100644 index 0000000..329a3c5 --- /dev/null +++ b/Tests/isa/rv64ui-p-lui.dump @@ -0,0 +1,127 @@ + +rv64ui-p-lui: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 000000b7 lui ra,0x0 + 80000100: 00000e93 li t4,0 + 80000104: 00200193 li gp,2 + 80000108: 05d09a63 bne ra,t4,8000015c + +000000008000010c : + 8000010c: fffff0b7 lui ra,0xfffff + 80000110: 4010d093 srai ra,ra,0x1 + 80000114: 80000e93 li t4,-2048 + 80000118: 00300193 li gp,3 + 8000011c: 05d09063 bne ra,t4,8000015c + +0000000080000120 : + 80000120: 7ffff0b7 lui ra,0x7ffff + 80000124: 4140d093 srai ra,ra,0x14 + 80000128: 7ff00e93 li t4,2047 + 8000012c: 00400193 li gp,4 + 80000130: 03d09663 bne ra,t4,8000015c + +0000000080000134 : + 80000134: 800000b7 lui ra,0x80000 + 80000138: 4140d093 srai ra,ra,0x14 + 8000013c: 80000e93 li t4,-2048 + 80000140: 00500193 li gp,5 + 80000144: 01d09c63 bne ra,t4,8000015c + +0000000080000148 : + 80000148: 80000037 lui zero,0x80000 + 8000014c: 00000e93 li t4,0 + 80000150: 00600193 li gp,6 + 80000154: 01d01463 bne zero,t4,8000015c + 80000158: 00301c63 bne zero,gp,80000170 + +000000008000015c : + 8000015c: 0ff0000f fence + 80000160: 00018063 beqz gp,80000160 + 80000164: 00119193 slli gp,gp,0x1 + 80000168: 0011e193 ori gp,gp,1 + 8000016c: 00000073 ecall + +0000000080000170 : + 80000170: 0ff0000f fence + 80000174: 00100193 li gp,1 + 80000178: 00000073 ecall + 8000017c: c0001073 unimp + 80000180: 0000 unimp + 80000182: 0000 unimp diff --git a/Tests/isa/rv64ui-p-lw b/Tests/isa/rv64ui-p-lw new file mode 100644 index 0000000..8b732b4 Binary files /dev/null and b/Tests/isa/rv64ui-p-lw differ diff --git a/Tests/isa/rv64ui-p-lw.dump b/Tests/isa/rv64ui-p-lw.dump new file mode 100644 index 0000000..889c452 --- /dev/null +++ b/Tests/isa/rv64ui-p-lw.dump @@ -0,0 +1,319 @@ + +rv64ui-p-lw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 0000af03 lw t5,0(ra) + 80000108: 00ff0eb7 lui t4,0xff0 + 8000010c: 0ffe8e9b addiw t4,t4,255 + 80000110: 00200193 li gp,2 + 80000114: 27df1a63 bne t5,t4,80000388 + +0000000080000118 : + 80000118: 00002097 auipc ra,0x2 + 8000011c: ee808093 addi ra,ra,-280 # 80002000 + 80000120: 0040af03 lw t5,4(ra) + 80000124: ff010eb7 lui t4,0xff010 + 80000128: f00e8e9b addiw t4,t4,-256 + 8000012c: 00300193 li gp,3 + 80000130: 25df1c63 bne t5,t4,80000388 + +0000000080000134 : + 80000134: 00002097 auipc ra,0x2 + 80000138: ecc08093 addi ra,ra,-308 # 80002000 + 8000013c: 0080af03 lw t5,8(ra) + 80000140: 0ff01eb7 lui t4,0xff01 + 80000144: ff0e8e9b addiw t4,t4,-16 + 80000148: 00400193 li gp,4 + 8000014c: 23df1e63 bne t5,t4,80000388 + +0000000080000150 : + 80000150: 00002097 auipc ra,0x2 + 80000154: eb008093 addi ra,ra,-336 # 80002000 + 80000158: 00c0af03 lw t5,12(ra) + 8000015c: f00ffeb7 lui t4,0xf00ff + 80000160: 00fe8e9b addiw t4,t4,15 + 80000164: 00500193 li gp,5 + 80000168: 23df1063 bne t5,t4,80000388 + +000000008000016c : + 8000016c: 00002097 auipc ra,0x2 + 80000170: ea008093 addi ra,ra,-352 # 8000200c + 80000174: ff40af03 lw t5,-12(ra) + 80000178: 00ff0eb7 lui t4,0xff0 + 8000017c: 0ffe8e9b addiw t4,t4,255 + 80000180: 00600193 li gp,6 + 80000184: 21df1263 bne t5,t4,80000388 + +0000000080000188 : + 80000188: 00002097 auipc ra,0x2 + 8000018c: e8408093 addi ra,ra,-380 # 8000200c + 80000190: ff80af03 lw t5,-8(ra) + 80000194: ff010eb7 lui t4,0xff010 + 80000198: f00e8e9b addiw t4,t4,-256 + 8000019c: 00700193 li gp,7 + 800001a0: 1fdf1463 bne t5,t4,80000388 + +00000000800001a4 : + 800001a4: 00002097 auipc ra,0x2 + 800001a8: e6808093 addi ra,ra,-408 # 8000200c + 800001ac: ffc0af03 lw t5,-4(ra) + 800001b0: 0ff01eb7 lui t4,0xff01 + 800001b4: ff0e8e9b addiw t4,t4,-16 + 800001b8: 00800193 li gp,8 + 800001bc: 1ddf1663 bne t5,t4,80000388 + +00000000800001c0 : + 800001c0: 00002097 auipc ra,0x2 + 800001c4: e4c08093 addi ra,ra,-436 # 8000200c + 800001c8: 0000af03 lw t5,0(ra) + 800001cc: f00ffeb7 lui t4,0xf00ff + 800001d0: 00fe8e9b addiw t4,t4,15 + 800001d4: 00900193 li gp,9 + 800001d8: 1bdf1863 bne t5,t4,80000388 + +00000000800001dc : + 800001dc: 00002097 auipc ra,0x2 + 800001e0: e2408093 addi ra,ra,-476 # 80002000 + 800001e4: fe008093 addi ra,ra,-32 + 800001e8: 0200a283 lw t0,32(ra) + 800001ec: 00ff0eb7 lui t4,0xff0 + 800001f0: 0ffe8e9b addiw t4,t4,255 + 800001f4: 00a00193 li gp,10 + 800001f8: 19d29863 bne t0,t4,80000388 + +00000000800001fc : + 800001fc: 00002097 auipc ra,0x2 + 80000200: e0408093 addi ra,ra,-508 # 80002000 + 80000204: ffd08093 addi ra,ra,-3 + 80000208: 0070a283 lw t0,7(ra) + 8000020c: ff010eb7 lui t4,0xff010 + 80000210: f00e8e9b addiw t4,t4,-256 + 80000214: 00b00193 li gp,11 + 80000218: 17d29863 bne t0,t4,80000388 + +000000008000021c : + 8000021c: 00c00193 li gp,12 + 80000220: 00000213 li tp,0 + 80000224: 00002097 auipc ra,0x2 + 80000228: de008093 addi ra,ra,-544 # 80002004 + 8000022c: 0040af03 lw t5,4(ra) + 80000230: 000f0313 mv t1,t5 + 80000234: 0ff01eb7 lui t4,0xff01 + 80000238: ff0e8e9b addiw t4,t4,-16 + 8000023c: 15d31663 bne t1,t4,80000388 + 80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000244: 00200293 li t0,2 + 80000248: fc521ee3 bne tp,t0,80000224 + +000000008000024c : + 8000024c: 00d00193 li gp,13 + 80000250: 00000213 li tp,0 + 80000254: 00002097 auipc ra,0x2 + 80000258: db408093 addi ra,ra,-588 # 80002008 + 8000025c: 0040af03 lw t5,4(ra) + 80000260: 00000013 nop + 80000264: 000f0313 mv t1,t5 + 80000268: f00ffeb7 lui t4,0xf00ff + 8000026c: 00fe8e9b addiw t4,t4,15 + 80000270: 11d31c63 bne t1,t4,80000388 + 80000274: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000278: 00200293 li t0,2 + 8000027c: fc521ce3 bne tp,t0,80000254 + +0000000080000280 : + 80000280: 00e00193 li gp,14 + 80000284: 00000213 li tp,0 + 80000288: 00002097 auipc ra,0x2 + 8000028c: d7808093 addi ra,ra,-648 # 80002000 + 80000290: 0040af03 lw t5,4(ra) + 80000294: 00000013 nop + 80000298: 00000013 nop + 8000029c: 000f0313 mv t1,t5 + 800002a0: ff010eb7 lui t4,0xff010 + 800002a4: f00e8e9b addiw t4,t4,-256 + 800002a8: 0fd31063 bne t1,t4,80000388 + 800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b0: 00200293 li t0,2 + 800002b4: fc521ae3 bne tp,t0,80000288 + +00000000800002b8 : + 800002b8: 00f00193 li gp,15 + 800002bc: 00000213 li tp,0 + 800002c0: 00002097 auipc ra,0x2 + 800002c4: d4408093 addi ra,ra,-700 # 80002004 + 800002c8: 0040af03 lw t5,4(ra) + 800002cc: 0ff01eb7 lui t4,0xff01 + 800002d0: ff0e8e9b addiw t4,t4,-16 + 800002d4: 0bdf1a63 bne t5,t4,80000388 + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5210e3 bne tp,t0,800002c0 + +00000000800002e4 : + 800002e4: 01000193 li gp,16 + 800002e8: 00000213 li tp,0 + 800002ec: 00002097 auipc ra,0x2 + 800002f0: d1c08093 addi ra,ra,-740 # 80002008 + 800002f4: 00000013 nop + 800002f8: 0040af03 lw t5,4(ra) + 800002fc: f00ffeb7 lui t4,0xf00ff + 80000300: 00fe8e9b addiw t4,t4,15 + 80000304: 09df1263 bne t5,t4,80000388 + 80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000030c: 00200293 li t0,2 + 80000310: fc521ee3 bne tp,t0,800002ec + +0000000080000314 : + 80000314: 01100193 li gp,17 + 80000318: 00000213 li tp,0 + 8000031c: 00002097 auipc ra,0x2 + 80000320: ce408093 addi ra,ra,-796 # 80002000 + 80000324: 00000013 nop + 80000328: 00000013 nop + 8000032c: 0040af03 lw t5,4(ra) + 80000330: ff010eb7 lui t4,0xff010 + 80000334: f00e8e9b addiw t4,t4,-256 + 80000338: 05df1863 bne t5,t4,80000388 + 8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000340: 00200293 li t0,2 + 80000344: fc521ce3 bne tp,t0,8000031c + +0000000080000348 : + 80000348: 00002297 auipc t0,0x2 + 8000034c: cb828293 addi t0,t0,-840 # 80002000 + 80000350: 0002a103 lw sp,0(t0) + 80000354: 00200113 li sp,2 + 80000358: 00200e93 li t4,2 + 8000035c: 01200193 li gp,18 + 80000360: 03d11463 bne sp,t4,80000388 + +0000000080000364 : + 80000364: 00002297 auipc t0,0x2 + 80000368: c9c28293 addi t0,t0,-868 # 80002000 + 8000036c: 0002a103 lw sp,0(t0) + 80000370: 00000013 nop + 80000374: 00200113 li sp,2 + 80000378: 00200e93 li t4,2 + 8000037c: 01300193 li gp,19 + 80000380: 01d11463 bne sp,t4,80000388 + 80000384: 00301c63 bne zero,gp,8000039c + +0000000080000388 : + 80000388: 0ff0000f fence + 8000038c: 00018063 beqz gp,8000038c + 80000390: 00119193 slli gp,gp,0x1 + 80000394: 0011e193 ori gp,gp,1 + 80000398: 00000073 ecall + +000000008000039c : + 8000039c: 0ff0000f fence + 800003a0: 00100193 li gp,1 + 800003a4: 00000073 ecall + 800003a8: c0001073 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 00ff 0xff + 80002002: 00ff 0xff + +0000000080002004 : + 80002004: ff00 sd s0,56(a4) + 80002006: ff00 sd s0,56(a4) + +0000000080002008 : + 80002008: 0ff0 addi a2,sp,988 + 8000200a: 0ff0 addi a2,sp,988 + +000000008000200c : + 8000200c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv64ui-p-lwu b/Tests/isa/rv64ui-p-lwu new file mode 100644 index 0000000..4a1ad9d Binary files /dev/null and b/Tests/isa/rv64ui-p-lwu differ diff --git a/Tests/isa/rv64ui-p-lwu.dump b/Tests/isa/rv64ui-p-lwu.dump new file mode 100644 index 0000000..21f50ee --- /dev/null +++ b/Tests/isa/rv64ui-p-lwu.dump @@ -0,0 +1,333 @@ + +rv64ui-p-lwu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 0000ef03 lwu t5,0(ra) + 80000108: 00ff0eb7 lui t4,0xff0 + 8000010c: 0ffe8e9b addiw t4,t4,255 + 80000110: 00200193 li gp,2 + 80000114: 2bdf1e63 bne t5,t4,800003d0 + +0000000080000118 : + 80000118: 00002097 auipc ra,0x2 + 8000011c: ee808093 addi ra,ra,-280 # 80002000 + 80000120: 0040ef03 lwu t5,4(ra) + 80000124: 00010eb7 lui t4,0x10 + 80000128: f01e8e9b addiw t4,t4,-255 + 8000012c: 010e9e93 slli t4,t4,0x10 + 80000130: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80000134: 00300193 li gp,3 + 80000138: 29df1c63 bne t5,t4,800003d0 + +000000008000013c : + 8000013c: 00002097 auipc ra,0x2 + 80000140: ec408093 addi ra,ra,-316 # 80002000 + 80000144: 0080ef03 lwu t5,8(ra) + 80000148: 0ff01eb7 lui t4,0xff01 + 8000014c: ff0e8e9b addiw t4,t4,-16 + 80000150: 00400193 li gp,4 + 80000154: 27df1e63 bne t5,t4,800003d0 + +0000000080000158 : + 80000158: 00002097 auipc ra,0x2 + 8000015c: ea808093 addi ra,ra,-344 # 80002000 + 80000160: 00c0ef03 lwu t5,12(ra) + 80000164: 000f0eb7 lui t4,0xf0 + 80000168: 0ffe8e9b addiw t4,t4,255 + 8000016c: 00ce9e93 slli t4,t4,0xc + 80000170: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80000174: 00500193 li gp,5 + 80000178: 25df1c63 bne t5,t4,800003d0 + +000000008000017c : + 8000017c: 00002097 auipc ra,0x2 + 80000180: e9008093 addi ra,ra,-368 # 8000200c + 80000184: ff40ef03 lwu t5,-12(ra) + 80000188: 00ff0eb7 lui t4,0xff0 + 8000018c: 0ffe8e9b addiw t4,t4,255 + 80000190: 00600193 li gp,6 + 80000194: 23df1e63 bne t5,t4,800003d0 + +0000000080000198 : + 80000198: 00002097 auipc ra,0x2 + 8000019c: e7408093 addi ra,ra,-396 # 8000200c + 800001a0: ff80ef03 lwu t5,-8(ra) + 800001a4: 00010eb7 lui t4,0x10 + 800001a8: f01e8e9b addiw t4,t4,-255 + 800001ac: 010e9e93 slli t4,t4,0x10 + 800001b0: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 800001b4: 00700193 li gp,7 + 800001b8: 21df1c63 bne t5,t4,800003d0 + +00000000800001bc : + 800001bc: 00002097 auipc ra,0x2 + 800001c0: e5008093 addi ra,ra,-432 # 8000200c + 800001c4: ffc0ef03 lwu t5,-4(ra) + 800001c8: 0ff01eb7 lui t4,0xff01 + 800001cc: ff0e8e9b addiw t4,t4,-16 + 800001d0: 00800193 li gp,8 + 800001d4: 1fdf1e63 bne t5,t4,800003d0 + +00000000800001d8 : + 800001d8: 00002097 auipc ra,0x2 + 800001dc: e3408093 addi ra,ra,-460 # 8000200c + 800001e0: 0000ef03 lwu t5,0(ra) + 800001e4: 000f0eb7 lui t4,0xf0 + 800001e8: 0ffe8e9b addiw t4,t4,255 + 800001ec: 00ce9e93 slli t4,t4,0xc + 800001f0: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 800001f4: 00900193 li gp,9 + 800001f8: 1ddf1c63 bne t5,t4,800003d0 + +00000000800001fc : + 800001fc: 00002097 auipc ra,0x2 + 80000200: e0408093 addi ra,ra,-508 # 80002000 + 80000204: fe008093 addi ra,ra,-32 + 80000208: 0200e283 lwu t0,32(ra) + 8000020c: 00ff0eb7 lui t4,0xff0 + 80000210: 0ffe8e9b addiw t4,t4,255 + 80000214: 00a00193 li gp,10 + 80000218: 1bd29c63 bne t0,t4,800003d0 + +000000008000021c : + 8000021c: 00002097 auipc ra,0x2 + 80000220: de408093 addi ra,ra,-540 # 80002000 + 80000224: ffd08093 addi ra,ra,-3 + 80000228: 0070e283 lwu t0,7(ra) + 8000022c: 00010eb7 lui t4,0x10 + 80000230: f01e8e9b addiw t4,t4,-255 + 80000234: 010e9e93 slli t4,t4,0x10 + 80000238: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 8000023c: 00b00193 li gp,11 + 80000240: 19d29863 bne t0,t4,800003d0 + +0000000080000244 : + 80000244: 00c00193 li gp,12 + 80000248: 00000213 li tp,0 + 8000024c: 00002097 auipc ra,0x2 + 80000250: db808093 addi ra,ra,-584 # 80002004 + 80000254: 0040ef03 lwu t5,4(ra) + 80000258: 000f0313 mv t1,t5 + 8000025c: 0ff01eb7 lui t4,0xff01 + 80000260: ff0e8e9b addiw t4,t4,-16 + 80000264: 17d31663 bne t1,t4,800003d0 + 80000268: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000026c: 00200293 li t0,2 + 80000270: fc521ee3 bne tp,t0,8000024c + +0000000080000274 : + 80000274: 00d00193 li gp,13 + 80000278: 00000213 li tp,0 + 8000027c: 00002097 auipc ra,0x2 + 80000280: d8c08093 addi ra,ra,-628 # 80002008 + 80000284: 0040ef03 lwu t5,4(ra) + 80000288: 00000013 nop + 8000028c: 000f0313 mv t1,t5 + 80000290: 000f0eb7 lui t4,0xf0 + 80000294: 0ffe8e9b addiw t4,t4,255 + 80000298: 00ce9e93 slli t4,t4,0xc + 8000029c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 800002a0: 13d31863 bne t1,t4,800003d0 + 800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a8: 00200293 li t0,2 + 800002ac: fc5218e3 bne tp,t0,8000027c + +00000000800002b0 : + 800002b0: 00e00193 li gp,14 + 800002b4: 00000213 li tp,0 + 800002b8: 00002097 auipc ra,0x2 + 800002bc: d4808093 addi ra,ra,-696 # 80002000 + 800002c0: 0040ef03 lwu t5,4(ra) + 800002c4: 00000013 nop + 800002c8: 00000013 nop + 800002cc: 000f0313 mv t1,t5 + 800002d0: 00010eb7 lui t4,0x10 + 800002d4: f01e8e9b addiw t4,t4,-255 + 800002d8: 010e9e93 slli t4,t4,0x10 + 800002dc: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 800002e0: 0fd31863 bne t1,t4,800003d0 + 800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002e8: 00200293 li t0,2 + 800002ec: fc5216e3 bne tp,t0,800002b8 + +00000000800002f0 : + 800002f0: 00f00193 li gp,15 + 800002f4: 00000213 li tp,0 + 800002f8: 00002097 auipc ra,0x2 + 800002fc: d0c08093 addi ra,ra,-756 # 80002004 + 80000300: 0040ef03 lwu t5,4(ra) + 80000304: 0ff01eb7 lui t4,0xff01 + 80000308: ff0e8e9b addiw t4,t4,-16 + 8000030c: 0ddf1263 bne t5,t4,800003d0 + 80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000314: 00200293 li t0,2 + 80000318: fe5210e3 bne tp,t0,800002f8 + +000000008000031c : + 8000031c: 01000193 li gp,16 + 80000320: 00000213 li tp,0 + 80000324: 00002097 auipc ra,0x2 + 80000328: ce408093 addi ra,ra,-796 # 80002008 + 8000032c: 00000013 nop + 80000330: 0040ef03 lwu t5,4(ra) + 80000334: 000f0eb7 lui t4,0xf0 + 80000338: 0ffe8e9b addiw t4,t4,255 + 8000033c: 00ce9e93 slli t4,t4,0xc + 80000340: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80000344: 09df1663 bne t5,t4,800003d0 + 80000348: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000034c: 00200293 li t0,2 + 80000350: fc521ae3 bne tp,t0,80000324 + +0000000080000354 : + 80000354: 01100193 li gp,17 + 80000358: 00000213 li tp,0 + 8000035c: 00002097 auipc ra,0x2 + 80000360: ca408093 addi ra,ra,-860 # 80002000 + 80000364: 00000013 nop + 80000368: 00000013 nop + 8000036c: 0040ef03 lwu t5,4(ra) + 80000370: 00010eb7 lui t4,0x10 + 80000374: f01e8e9b addiw t4,t4,-255 + 80000378: 010e9e93 slli t4,t4,0x10 + 8000037c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80000380: 05df1863 bne t5,t4,800003d0 + 80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000388: 00200293 li t0,2 + 8000038c: fc5218e3 bne tp,t0,8000035c + +0000000080000390 : + 80000390: 00002297 auipc t0,0x2 + 80000394: c7028293 addi t0,t0,-912 # 80002000 + 80000398: 0002e103 lwu sp,0(t0) + 8000039c: 00200113 li sp,2 + 800003a0: 00200e93 li t4,2 + 800003a4: 01200193 li gp,18 + 800003a8: 03d11463 bne sp,t4,800003d0 + +00000000800003ac : + 800003ac: 00002297 auipc t0,0x2 + 800003b0: c5428293 addi t0,t0,-940 # 80002000 + 800003b4: 0002e103 lwu sp,0(t0) + 800003b8: 00000013 nop + 800003bc: 00200113 li sp,2 + 800003c0: 00200e93 li t4,2 + 800003c4: 01300193 li gp,19 + 800003c8: 01d11463 bne sp,t4,800003d0 + 800003cc: 00301c63 bne zero,gp,800003e4 + +00000000800003d0 : + 800003d0: 0ff0000f fence + 800003d4: 00018063 beqz gp,800003d4 + 800003d8: 00119193 slli gp,gp,0x1 + 800003dc: 0011e193 ori gp,gp,1 + 800003e0: 00000073 ecall + +00000000800003e4 : + 800003e4: 0ff0000f fence + 800003e8: 00100193 li gp,1 + 800003ec: 00000073 ecall + 800003f0: c0001073 unimp + 800003f4: 0000 unimp + 800003f6: 0000 unimp + 800003f8: 0000 unimp + 800003fa: 0000 unimp + 800003fc: 0000 unimp + 800003fe: 0000 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: 00ff 0xff + 80002002: 00ff 0xff + +0000000080002004 : + 80002004: ff00 sd s0,56(a4) + 80002006: ff00 sd s0,56(a4) + +0000000080002008 : + 80002008: 0ff0 addi a2,sp,988 + 8000200a: 0ff0 addi a2,sp,988 + +000000008000200c : + 8000200c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv64ui-p-or b/Tests/isa/rv64ui-p-or new file mode 100644 index 0000000..a08261b Binary files /dev/null and b/Tests/isa/rv64ui-p-or differ diff --git a/Tests/isa/rv64ui-p-or.dump b/Tests/isa/rv64ui-p-or.dump new file mode 100644 index 0000000..4ca0b79 --- /dev/null +++ b/Tests/isa/rv64ui-p-or.dump @@ -0,0 +1,522 @@ + +rv64ui-p-or: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 000100b7 lui ra,0x10 + 80000100: f010809b addiw ra,ra,-255 + 80000104: 01009093 slli ra,ra,0x10 + 80000108: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000010c: 0f0f1137 lui sp,0xf0f1 + 80000110: f0f1011b addiw sp,sp,-241 + 80000114: 0020ef33 or t5,ra,sp + 80000118: 00001eb7 lui t4,0x1 + 8000011c: ff1e8e9b addiw t4,t4,-15 + 80000120: 014e9e93 slli t4,t4,0x14 + 80000124: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80000128: 00200193 li gp,2 + 8000012c: 5bdf1663 bne t5,t4,800006d8 + +0000000080000130 : + 80000130: 0ff010b7 lui ra,0xff01 + 80000134: ff00809b addiw ra,ra,-16 + 80000138: 000f1137 lui sp,0xf1 + 8000013c: f0f1011b addiw sp,sp,-241 + 80000140: 00c11113 slli sp,sp,0xc + 80000144: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000148: 0020ef33 or t5,ra,sp + 8000014c: 00010eb7 lui t4,0x10 + 80000150: ff1e8e9b addiw t4,t4,-15 + 80000154: 010e9e93 slli t4,t4,0x10 + 80000158: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 8000015c: 00300193 li gp,3 + 80000160: 57df1c63 bne t5,t4,800006d8 + +0000000080000164 : + 80000164: 00ff00b7 lui ra,0xff0 + 80000168: 0ff0809b addiw ra,ra,255 + 8000016c: 0f0f1137 lui sp,0xf0f1 + 80000170: f0f1011b addiw sp,sp,-241 + 80000174: 0020ef33 or t5,ra,sp + 80000178: 0fff1eb7 lui t4,0xfff1 + 8000017c: fffe8e9b addiw t4,t4,-1 + 80000180: 00400193 li gp,4 + 80000184: 55df1a63 bne t5,t4,800006d8 + +0000000080000188 : + 80000188: 000f00b7 lui ra,0xf0 + 8000018c: 0ff0809b addiw ra,ra,255 + 80000190: 00c09093 slli ra,ra,0xc + 80000194: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80000198: 000f1137 lui sp,0xf1 + 8000019c: f0f1011b addiw sp,sp,-241 + 800001a0: 00c11113 slli sp,sp,0xc + 800001a4: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800001a8: 0020ef33 or t5,ra,sp + 800001ac: 000f1eb7 lui t4,0xf1 + 800001b0: fffe8e9b addiw t4,t4,-1 + 800001b4: 00ce9e93 slli t4,t4,0xc + 800001b8: 0ffe8e93 addi t4,t4,255 # f10ff <_start-0x7ff0ef01> + 800001bc: 00500193 li gp,5 + 800001c0: 51df1c63 bne t5,t4,800006d8 + +00000000800001c4 : + 800001c4: 000100b7 lui ra,0x10 + 800001c8: f010809b addiw ra,ra,-255 + 800001cc: 01009093 slli ra,ra,0x10 + 800001d0: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800001d4: 0f0f1137 lui sp,0xf0f1 + 800001d8: f0f1011b addiw sp,sp,-241 + 800001dc: 0020e0b3 or ra,ra,sp + 800001e0: 00001eb7 lui t4,0x1 + 800001e4: ff1e8e9b addiw t4,t4,-15 + 800001e8: 014e9e93 slli t4,t4,0x14 + 800001ec: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 800001f0: 00600193 li gp,6 + 800001f4: 4fd09263 bne ra,t4,800006d8 + +00000000800001f8 : + 800001f8: 000100b7 lui ra,0x10 + 800001fc: f010809b addiw ra,ra,-255 + 80000200: 01009093 slli ra,ra,0x10 + 80000204: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000208: 0f0f1137 lui sp,0xf0f1 + 8000020c: f0f1011b addiw sp,sp,-241 + 80000210: 0020e133 or sp,ra,sp + 80000214: 00001eb7 lui t4,0x1 + 80000218: ff1e8e9b addiw t4,t4,-15 + 8000021c: 014e9e93 slli t4,t4,0x14 + 80000220: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80000224: 00700193 li gp,7 + 80000228: 4bd11863 bne sp,t4,800006d8 + +000000008000022c : + 8000022c: 000100b7 lui ra,0x10 + 80000230: f010809b addiw ra,ra,-255 + 80000234: 01009093 slli ra,ra,0x10 + 80000238: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000023c: 0010e0b3 or ra,ra,ra + 80000240: 00010eb7 lui t4,0x10 + 80000244: f01e8e9b addiw t4,t4,-255 + 80000248: 010e9e93 slli t4,t4,0x10 + 8000024c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80000250: 00800193 li gp,8 + 80000254: 49d09263 bne ra,t4,800006d8 + +0000000080000258 : + 80000258: 00000213 li tp,0 + 8000025c: 000100b7 lui ra,0x10 + 80000260: f010809b addiw ra,ra,-255 + 80000264: 01009093 slli ra,ra,0x10 + 80000268: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000026c: 0f0f1137 lui sp,0xf0f1 + 80000270: f0f1011b addiw sp,sp,-241 + 80000274: 0020ef33 or t5,ra,sp + 80000278: 000f0313 mv t1,t5 + 8000027c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000280: 00200293 li t0,2 + 80000284: fc521ce3 bne tp,t0,8000025c + 80000288: 00001eb7 lui t4,0x1 + 8000028c: ff1e8e9b addiw t4,t4,-15 + 80000290: 014e9e93 slli t4,t4,0x14 + 80000294: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80000298: 00900193 li gp,9 + 8000029c: 43d31e63 bne t1,t4,800006d8 + +00000000800002a0 : + 800002a0: 00000213 li tp,0 + 800002a4: 0ff010b7 lui ra,0xff01 + 800002a8: ff00809b addiw ra,ra,-16 + 800002ac: 000f1137 lui sp,0xf1 + 800002b0: f0f1011b addiw sp,sp,-241 + 800002b4: 00c11113 slli sp,sp,0xc + 800002b8: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800002bc: 0020ef33 or t5,ra,sp + 800002c0: 00000013 nop + 800002c4: 000f0313 mv t1,t5 + 800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002cc: 00200293 li t0,2 + 800002d0: fc521ae3 bne tp,t0,800002a4 + 800002d4: 00010eb7 lui t4,0x10 + 800002d8: ff1e8e9b addiw t4,t4,-15 + 800002dc: 010e9e93 slli t4,t4,0x10 + 800002e0: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 800002e4: 00a00193 li gp,10 + 800002e8: 3fd31863 bne t1,t4,800006d8 + +00000000800002ec : + 800002ec: 00000213 li tp,0 + 800002f0: 00ff00b7 lui ra,0xff0 + 800002f4: 0ff0809b addiw ra,ra,255 + 800002f8: 0f0f1137 lui sp,0xf0f1 + 800002fc: f0f1011b addiw sp,sp,-241 + 80000300: 0020ef33 or t5,ra,sp + 80000304: 00000013 nop + 80000308: 00000013 nop + 8000030c: 000f0313 mv t1,t5 + 80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000314: 00200293 li t0,2 + 80000318: fc521ce3 bne tp,t0,800002f0 + 8000031c: 0fff1eb7 lui t4,0xfff1 + 80000320: fffe8e9b addiw t4,t4,-1 + 80000324: 00b00193 li gp,11 + 80000328: 3bd31863 bne t1,t4,800006d8 + +000000008000032c : + 8000032c: 00000213 li tp,0 + 80000330: 000100b7 lui ra,0x10 + 80000334: f010809b addiw ra,ra,-255 + 80000338: 01009093 slli ra,ra,0x10 + 8000033c: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000340: 0f0f1137 lui sp,0xf0f1 + 80000344: f0f1011b addiw sp,sp,-241 + 80000348: 0020ef33 or t5,ra,sp + 8000034c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000350: 00200293 li t0,2 + 80000354: fc521ee3 bne tp,t0,80000330 + 80000358: 00001eb7 lui t4,0x1 + 8000035c: ff1e8e9b addiw t4,t4,-15 + 80000360: 014e9e93 slli t4,t4,0x14 + 80000364: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80000368: 00c00193 li gp,12 + 8000036c: 37df1663 bne t5,t4,800006d8 + +0000000080000370 : + 80000370: 00000213 li tp,0 + 80000374: 0ff010b7 lui ra,0xff01 + 80000378: ff00809b addiw ra,ra,-16 + 8000037c: 000f1137 lui sp,0xf1 + 80000380: f0f1011b addiw sp,sp,-241 + 80000384: 00c11113 slli sp,sp,0xc + 80000388: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 8000038c: 00000013 nop + 80000390: 0020ef33 or t5,ra,sp + 80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000398: 00200293 li t0,2 + 8000039c: fc521ce3 bne tp,t0,80000374 + 800003a0: 00010eb7 lui t4,0x10 + 800003a4: ff1e8e9b addiw t4,t4,-15 + 800003a8: 010e9e93 slli t4,t4,0x10 + 800003ac: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 800003b0: 00d00193 li gp,13 + 800003b4: 33df1263 bne t5,t4,800006d8 + +00000000800003b8 : + 800003b8: 00000213 li tp,0 + 800003bc: 00ff00b7 lui ra,0xff0 + 800003c0: 0ff0809b addiw ra,ra,255 + 800003c4: 0f0f1137 lui sp,0xf0f1 + 800003c8: f0f1011b addiw sp,sp,-241 + 800003cc: 00000013 nop + 800003d0: 00000013 nop + 800003d4: 0020ef33 or t5,ra,sp + 800003d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003dc: 00200293 li t0,2 + 800003e0: fc521ee3 bne tp,t0,800003bc + 800003e4: 0fff1eb7 lui t4,0xfff1 + 800003e8: fffe8e9b addiw t4,t4,-1 + 800003ec: 00e00193 li gp,14 + 800003f0: 2fdf1463 bne t5,t4,800006d8 + +00000000800003f4 : + 800003f4: 00000213 li tp,0 + 800003f8: 000100b7 lui ra,0x10 + 800003fc: f010809b addiw ra,ra,-255 + 80000400: 01009093 slli ra,ra,0x10 + 80000404: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000408: 00000013 nop + 8000040c: 0f0f1137 lui sp,0xf0f1 + 80000410: f0f1011b addiw sp,sp,-241 + 80000414: 0020ef33 or t5,ra,sp + 80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000041c: 00200293 li t0,2 + 80000420: fc521ce3 bne tp,t0,800003f8 + 80000424: 00001eb7 lui t4,0x1 + 80000428: ff1e8e9b addiw t4,t4,-15 + 8000042c: 014e9e93 slli t4,t4,0x14 + 80000430: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80000434: 00f00193 li gp,15 + 80000438: 2bdf1063 bne t5,t4,800006d8 + +000000008000043c : + 8000043c: 00000213 li tp,0 + 80000440: 0ff010b7 lui ra,0xff01 + 80000444: ff00809b addiw ra,ra,-16 + 80000448: 00000013 nop + 8000044c: 000f1137 lui sp,0xf1 + 80000450: f0f1011b addiw sp,sp,-241 + 80000454: 00c11113 slli sp,sp,0xc + 80000458: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 8000045c: 00000013 nop + 80000460: 0020ef33 or t5,ra,sp + 80000464: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000468: 00200293 li t0,2 + 8000046c: fc521ae3 bne tp,t0,80000440 + 80000470: 00010eb7 lui t4,0x10 + 80000474: ff1e8e9b addiw t4,t4,-15 + 80000478: 010e9e93 slli t4,t4,0x10 + 8000047c: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80000480: 01000193 li gp,16 + 80000484: 25df1a63 bne t5,t4,800006d8 + +0000000080000488 : + 80000488: 00000213 li tp,0 + 8000048c: 00ff00b7 lui ra,0xff0 + 80000490: 0ff0809b addiw ra,ra,255 + 80000494: 00000013 nop + 80000498: 00000013 nop + 8000049c: 0f0f1137 lui sp,0xf0f1 + 800004a0: f0f1011b addiw sp,sp,-241 + 800004a4: 0020ef33 or t5,ra,sp + 800004a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004ac: 00200293 li t0,2 + 800004b0: fc521ee3 bne tp,t0,8000048c + 800004b4: 0fff1eb7 lui t4,0xfff1 + 800004b8: fffe8e9b addiw t4,t4,-1 + 800004bc: 01100193 li gp,17 + 800004c0: 21df1c63 bne t5,t4,800006d8 + +00000000800004c4 : + 800004c4: 00000213 li tp,0 + 800004c8: 0f0f1137 lui sp,0xf0f1 + 800004cc: f0f1011b addiw sp,sp,-241 + 800004d0: 000100b7 lui ra,0x10 + 800004d4: f010809b addiw ra,ra,-255 + 800004d8: 01009093 slli ra,ra,0x10 + 800004dc: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800004e0: 0020ef33 or t5,ra,sp + 800004e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004e8: 00200293 li t0,2 + 800004ec: fc521ee3 bne tp,t0,800004c8 + 800004f0: 00001eb7 lui t4,0x1 + 800004f4: ff1e8e9b addiw t4,t4,-15 + 800004f8: 014e9e93 slli t4,t4,0x14 + 800004fc: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80000500: 01200193 li gp,18 + 80000504: 1ddf1a63 bne t5,t4,800006d8 + +0000000080000508 : + 80000508: 00000213 li tp,0 + 8000050c: 000f1137 lui sp,0xf1 + 80000510: f0f1011b addiw sp,sp,-241 + 80000514: 00c11113 slli sp,sp,0xc + 80000518: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 8000051c: 0ff010b7 lui ra,0xff01 + 80000520: ff00809b addiw ra,ra,-16 + 80000524: 00000013 nop + 80000528: 0020ef33 or t5,ra,sp + 8000052c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000530: 00200293 li t0,2 + 80000534: fc521ce3 bne tp,t0,8000050c + 80000538: 00010eb7 lui t4,0x10 + 8000053c: ff1e8e9b addiw t4,t4,-15 + 80000540: 010e9e93 slli t4,t4,0x10 + 80000544: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80000548: 01300193 li gp,19 + 8000054c: 19df1663 bne t5,t4,800006d8 + +0000000080000550 : + 80000550: 00000213 li tp,0 + 80000554: 0f0f1137 lui sp,0xf0f1 + 80000558: f0f1011b addiw sp,sp,-241 + 8000055c: 00ff00b7 lui ra,0xff0 + 80000560: 0ff0809b addiw ra,ra,255 + 80000564: 00000013 nop + 80000568: 00000013 nop + 8000056c: 0020ef33 or t5,ra,sp + 80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000574: 00200293 li t0,2 + 80000578: fc521ee3 bne tp,t0,80000554 + 8000057c: 0fff1eb7 lui t4,0xfff1 + 80000580: fffe8e9b addiw t4,t4,-1 + 80000584: 01400193 li gp,20 + 80000588: 15df1863 bne t5,t4,800006d8 + +000000008000058c : + 8000058c: 00000213 li tp,0 + 80000590: 0f0f1137 lui sp,0xf0f1 + 80000594: f0f1011b addiw sp,sp,-241 + 80000598: 00000013 nop + 8000059c: 000100b7 lui ra,0x10 + 800005a0: f010809b addiw ra,ra,-255 + 800005a4: 01009093 slli ra,ra,0x10 + 800005a8: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800005ac: 0020ef33 or t5,ra,sp + 800005b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005b4: 00200293 li t0,2 + 800005b8: fc521ce3 bne tp,t0,80000590 + 800005bc: 00001eb7 lui t4,0x1 + 800005c0: ff1e8e9b addiw t4,t4,-15 + 800005c4: 014e9e93 slli t4,t4,0x14 + 800005c8: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 800005cc: 01500193 li gp,21 + 800005d0: 11df1463 bne t5,t4,800006d8 + +00000000800005d4 : + 800005d4: 00000213 li tp,0 + 800005d8: 000f1137 lui sp,0xf1 + 800005dc: f0f1011b addiw sp,sp,-241 + 800005e0: 00c11113 slli sp,sp,0xc + 800005e4: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800005e8: 00000013 nop + 800005ec: 0ff010b7 lui ra,0xff01 + 800005f0: ff00809b addiw ra,ra,-16 + 800005f4: 00000013 nop + 800005f8: 0020ef33 or t5,ra,sp + 800005fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000600: 00200293 li t0,2 + 80000604: fc521ae3 bne tp,t0,800005d8 + 80000608: 00010eb7 lui t4,0x10 + 8000060c: ff1e8e9b addiw t4,t4,-15 + 80000610: 010e9e93 slli t4,t4,0x10 + 80000614: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80000618: 01600193 li gp,22 + 8000061c: 0bdf1e63 bne t5,t4,800006d8 + +0000000080000620 : + 80000620: 00000213 li tp,0 + 80000624: 0f0f1137 lui sp,0xf0f1 + 80000628: f0f1011b addiw sp,sp,-241 + 8000062c: 00000013 nop + 80000630: 00000013 nop + 80000634: 00ff00b7 lui ra,0xff0 + 80000638: 0ff0809b addiw ra,ra,255 + 8000063c: 0020ef33 or t5,ra,sp + 80000640: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000644: 00200293 li t0,2 + 80000648: fc521ee3 bne tp,t0,80000624 + 8000064c: 0fff1eb7 lui t4,0xfff1 + 80000650: fffe8e9b addiw t4,t4,-1 + 80000654: 01700193 li gp,23 + 80000658: 09df1063 bne t5,t4,800006d8 + +000000008000065c : + 8000065c: 000100b7 lui ra,0x10 + 80000660: f010809b addiw ra,ra,-255 + 80000664: 01009093 slli ra,ra,0x10 + 80000668: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000066c: 00106133 or sp,zero,ra + 80000670: 00010eb7 lui t4,0x10 + 80000674: f01e8e9b addiw t4,t4,-255 + 80000678: 010e9e93 slli t4,t4,0x10 + 8000067c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80000680: 01800193 li gp,24 + 80000684: 05d11a63 bne sp,t4,800006d8 + +0000000080000688 : + 80000688: 00ff00b7 lui ra,0xff0 + 8000068c: 0ff0809b addiw ra,ra,255 + 80000690: 0000e133 or sp,ra,zero + 80000694: 00ff0eb7 lui t4,0xff0 + 80000698: 0ffe8e9b addiw t4,t4,255 + 8000069c: 01900193 li gp,25 + 800006a0: 03d11c63 bne sp,t4,800006d8 + +00000000800006a4 : + 800006a4: 000060b3 or ra,zero,zero + 800006a8: 00000e93 li t4,0 + 800006ac: 01a00193 li gp,26 + 800006b0: 03d09463 bne ra,t4,800006d8 + +00000000800006b4 : + 800006b4: 111110b7 lui ra,0x11111 + 800006b8: 1110809b addiw ra,ra,273 + 800006bc: 22222137 lui sp,0x22222 + 800006c0: 2221011b addiw sp,sp,546 + 800006c4: 0020e033 or zero,ra,sp + 800006c8: 00000e93 li t4,0 + 800006cc: 01b00193 li gp,27 + 800006d0: 01d01463 bne zero,t4,800006d8 + 800006d4: 00301c63 bne zero,gp,800006ec + +00000000800006d8 : + 800006d8: 0ff0000f fence + 800006dc: 00018063 beqz gp,800006dc + 800006e0: 00119193 slli gp,gp,0x1 + 800006e4: 0011e193 ori gp,gp,1 + 800006e8: 00000073 ecall + +00000000800006ec : + 800006ec: 0ff0000f fence + 800006f0: 00100193 li gp,1 + 800006f4: 00000073 ecall + 800006f8: c0001073 unimp + 800006fc: 0000 unimp + 800006fe: 0000 unimp + 80000700: 0000 unimp + 80000702: 0000 unimp diff --git a/Tests/isa/rv64ui-p-ori b/Tests/isa/rv64ui-p-ori new file mode 100644 index 0000000..ebce4f6 Binary files /dev/null and b/Tests/isa/rv64ui-p-ori differ diff --git a/Tests/isa/rv64ui-p-ori.dump b/Tests/isa/rv64ui-p-ori.dump new file mode 100644 index 0000000..c49630b --- /dev/null +++ b/Tests/isa/rv64ui-p-ori.dump @@ -0,0 +1,268 @@ + +rv64ui-p-ori: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: ff0100b7 lui ra,0xff010 + 80000100: f000809b addiw ra,ra,-256 + 80000104: f0f0ef13 ori t5,ra,-241 + 80000108: f0f00e93 li t4,-241 + 8000010c: 00200193 li gp,2 + 80000110: 1ddf1c63 bne t5,t4,800002e8 + +0000000080000114 : + 80000114: 0ff010b7 lui ra,0xff01 + 80000118: ff00809b addiw ra,ra,-16 + 8000011c: 0f00ef13 ori t5,ra,240 + 80000120: 0ff01eb7 lui t4,0xff01 + 80000124: ff0e8e9b addiw t4,t4,-16 + 80000128: 00300193 li gp,3 + 8000012c: 1bdf1e63 bne t5,t4,800002e8 + +0000000080000130 : + 80000130: 00ff00b7 lui ra,0xff0 + 80000134: 0ff0809b addiw ra,ra,255 + 80000138: 70f0ef13 ori t5,ra,1807 + 8000013c: 00ff0eb7 lui t4,0xff0 + 80000140: 7ffe8e9b addiw t4,t4,2047 + 80000144: 00400193 li gp,4 + 80000148: 1bdf1063 bne t5,t4,800002e8 + +000000008000014c : + 8000014c: f00ff0b7 lui ra,0xf00ff + 80000150: 00f0809b addiw ra,ra,15 + 80000154: 0f00ef13 ori t5,ra,240 + 80000158: f00ffeb7 lui t4,0xf00ff + 8000015c: 0ffe8e9b addiw t4,t4,255 + 80000160: 00500193 li gp,5 + 80000164: 19df1263 bne t5,t4,800002e8 + +0000000080000168 : + 80000168: 000100b7 lui ra,0x10 + 8000016c: f010809b addiw ra,ra,-255 + 80000170: 01009093 slli ra,ra,0x10 + 80000174: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000178: 0f00e093 ori ra,ra,240 + 8000017c: 00010eb7 lui t4,0x10 + 80000180: f01e8e9b addiw t4,t4,-255 + 80000184: 010e9e93 slli t4,t4,0x10 + 80000188: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 8000018c: 00600193 li gp,6 + 80000190: 15d09c63 bne ra,t4,800002e8 + +0000000080000194 : + 80000194: 00000213 li tp,0 + 80000198: 0ff010b7 lui ra,0xff01 + 8000019c: ff00809b addiw ra,ra,-16 + 800001a0: 0f00ef13 ori t5,ra,240 + 800001a4: 000f0313 mv t1,t5 + 800001a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001ac: 00200293 li t0,2 + 800001b0: fe5214e3 bne tp,t0,80000198 + 800001b4: 0ff01eb7 lui t4,0xff01 + 800001b8: ff0e8e9b addiw t4,t4,-16 + 800001bc: 00700193 li gp,7 + 800001c0: 13d31463 bne t1,t4,800002e8 + +00000000800001c4 : + 800001c4: 00000213 li tp,0 + 800001c8: 00ff00b7 lui ra,0xff0 + 800001cc: 0ff0809b addiw ra,ra,255 + 800001d0: 70f0ef13 ori t5,ra,1807 + 800001d4: 00000013 nop + 800001d8: 000f0313 mv t1,t5 + 800001dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001e0: 00200293 li t0,2 + 800001e4: fe5212e3 bne tp,t0,800001c8 + 800001e8: 00ff0eb7 lui t4,0xff0 + 800001ec: 7ffe8e9b addiw t4,t4,2047 + 800001f0: 00800193 li gp,8 + 800001f4: 0fd31a63 bne t1,t4,800002e8 + +00000000800001f8 : + 800001f8: 00000213 li tp,0 + 800001fc: f00ff0b7 lui ra,0xf00ff + 80000200: 00f0809b addiw ra,ra,15 + 80000204: 0f00ef13 ori t5,ra,240 + 80000208: 00000013 nop + 8000020c: 00000013 nop + 80000210: 000f0313 mv t1,t5 + 80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000218: 00200293 li t0,2 + 8000021c: fe5210e3 bne tp,t0,800001fc + 80000220: f00ffeb7 lui t4,0xf00ff + 80000224: 0ffe8e9b addiw t4,t4,255 + 80000228: 00900193 li gp,9 + 8000022c: 0bd31e63 bne t1,t4,800002e8 + +0000000080000230 : + 80000230: 00000213 li tp,0 + 80000234: 0ff010b7 lui ra,0xff01 + 80000238: ff00809b addiw ra,ra,-16 + 8000023c: 0f00ef13 ori t5,ra,240 + 80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000244: 00200293 li t0,2 + 80000248: fe5216e3 bne tp,t0,80000234 + 8000024c: 0ff01eb7 lui t4,0xff01 + 80000250: ff0e8e9b addiw t4,t4,-16 + 80000254: 00a00193 li gp,10 + 80000258: 09df1863 bne t5,t4,800002e8 + +000000008000025c : + 8000025c: 00000213 li tp,0 + 80000260: 00ff00b7 lui ra,0xff0 + 80000264: 0ff0809b addiw ra,ra,255 + 80000268: 00000013 nop + 8000026c: f0f0ef13 ori t5,ra,-241 + 80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000274: 00200293 li t0,2 + 80000278: fe5214e3 bne tp,t0,80000260 + 8000027c: fff00e93 li t4,-1 + 80000280: 00b00193 li gp,11 + 80000284: 07df1263 bne t5,t4,800002e8 + +0000000080000288 : + 80000288: 00000213 li tp,0 + 8000028c: f00ff0b7 lui ra,0xf00ff + 80000290: 00f0809b addiw ra,ra,15 + 80000294: 00000013 nop + 80000298: 00000013 nop + 8000029c: 0f00ef13 ori t5,ra,240 + 800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a4: 00200293 li t0,2 + 800002a8: fe5212e3 bne tp,t0,8000028c + 800002ac: f00ffeb7 lui t4,0xf00ff + 800002b0: 0ffe8e9b addiw t4,t4,255 + 800002b4: 00c00193 li gp,12 + 800002b8: 03df1863 bne t5,t4,800002e8 + +00000000800002bc : + 800002bc: 0f006093 ori ra,zero,240 + 800002c0: 0f000e93 li t4,240 + 800002c4: 00d00193 li gp,13 + 800002c8: 03d09063 bne ra,t4,800002e8 + +00000000800002cc : + 800002cc: 00ff00b7 lui ra,0xff0 + 800002d0: 0ff0809b addiw ra,ra,255 + 800002d4: 70f0e013 ori zero,ra,1807 + 800002d8: 00000e93 li t4,0 + 800002dc: 00e00193 li gp,14 + 800002e0: 01d01463 bne zero,t4,800002e8 + 800002e4: 00301c63 bne zero,gp,800002fc + +00000000800002e8 : + 800002e8: 0ff0000f fence + 800002ec: 00018063 beqz gp,800002ec + 800002f0: 00119193 slli gp,gp,0x1 + 800002f4: 0011e193 ori gp,gp,1 + 800002f8: 00000073 ecall + +00000000800002fc : + 800002fc: 0ff0000f fence + 80000300: 00100193 li gp,1 + 80000304: 00000073 ecall + 80000308: c0001073 unimp + 8000030c: 0000 unimp + 8000030e: 0000 unimp + 80000310: 0000 unimp + 80000312: 0000 unimp + 80000314: 0000 unimp + 80000316: 0000 unimp + 80000318: 0000 unimp + 8000031a: 0000 unimp + 8000031c: 0000 unimp + 8000031e: 0000 unimp + 80000320: 0000 unimp + 80000322: 0000 unimp + 80000324: 0000 unimp + 80000326: 0000 unimp + 80000328: 0000 unimp + 8000032a: 0000 unimp + 8000032c: 0000 unimp + 8000032e: 0000 unimp + 80000330: 0000 unimp + 80000332: 0000 unimp + 80000334: 0000 unimp + 80000336: 0000 unimp + 80000338: 0000 unimp + 8000033a: 0000 unimp + 8000033c: 0000 unimp + 8000033e: 0000 unimp + 80000340: 0000 unimp + 80000342: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sb b/Tests/isa/rv64ui-p-sb new file mode 100644 index 0000000..ef5fb58 Binary files /dev/null and b/Tests/isa/rv64ui-p-sb differ diff --git a/Tests/isa/rv64ui-p-sb.dump b/Tests/isa/rv64ui-p-sb.dump new file mode 100644 index 0000000..5bf111f --- /dev/null +++ b/Tests/isa/rv64ui-p-sb.dump @@ -0,0 +1,447 @@ + +rv64ui-p-sb: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: faa00113 li sp,-86 + 80000108: 00208023 sb sp,0(ra) + 8000010c: 00008f03 lb t5,0(ra) + 80000110: faa00e93 li t4,-86 + 80000114: 00200193 li gp,2 + 80000118: 3ddf1c63 bne t5,t4,800004f0 + +000000008000011c : + 8000011c: 00002097 auipc ra,0x2 + 80000120: ee408093 addi ra,ra,-284 # 80002000 + 80000124: 00000113 li sp,0 + 80000128: 002080a3 sb sp,1(ra) + 8000012c: 00108f03 lb t5,1(ra) + 80000130: 00000e93 li t4,0 + 80000134: 00300193 li gp,3 + 80000138: 3bdf1c63 bne t5,t4,800004f0 + +000000008000013c : + 8000013c: 00002097 auipc ra,0x2 + 80000140: ec408093 addi ra,ra,-316 # 80002000 + 80000144: fffff137 lui sp,0xfffff + 80000148: fa01011b addiw sp,sp,-96 + 8000014c: 00208123 sb sp,2(ra) + 80000150: 00209f03 lh t5,2(ra) + 80000154: fffffeb7 lui t4,0xfffff + 80000158: fa0e8e9b addiw t4,t4,-96 + 8000015c: 00400193 li gp,4 + 80000160: 39df1863 bne t5,t4,800004f0 + +0000000080000164 : + 80000164: 00002097 auipc ra,0x2 + 80000168: e9c08093 addi ra,ra,-356 # 80002000 + 8000016c: 00a00113 li sp,10 + 80000170: 002081a3 sb sp,3(ra) + 80000174: 00308f03 lb t5,3(ra) + 80000178: 00a00e93 li t4,10 + 8000017c: 00500193 li gp,5 + 80000180: 37df1863 bne t5,t4,800004f0 + +0000000080000184 : + 80000184: 00002097 auipc ra,0x2 + 80000188: e8308093 addi ra,ra,-381 # 80002007 + 8000018c: faa00113 li sp,-86 + 80000190: fe208ea3 sb sp,-3(ra) + 80000194: ffd08f03 lb t5,-3(ra) + 80000198: faa00e93 li t4,-86 + 8000019c: 00600193 li gp,6 + 800001a0: 35df1863 bne t5,t4,800004f0 + +00000000800001a4 : + 800001a4: 00002097 auipc ra,0x2 + 800001a8: e6308093 addi ra,ra,-413 # 80002007 + 800001ac: 00000113 li sp,0 + 800001b0: fe208f23 sb sp,-2(ra) + 800001b4: ffe08f03 lb t5,-2(ra) + 800001b8: 00000e93 li t4,0 + 800001bc: 00700193 li gp,7 + 800001c0: 33df1863 bne t5,t4,800004f0 + +00000000800001c4 : + 800001c4: 00002097 auipc ra,0x2 + 800001c8: e4308093 addi ra,ra,-445 # 80002007 + 800001cc: fa000113 li sp,-96 + 800001d0: fe208fa3 sb sp,-1(ra) + 800001d4: fff08f03 lb t5,-1(ra) + 800001d8: fa000e93 li t4,-96 + 800001dc: 00800193 li gp,8 + 800001e0: 31df1863 bne t5,t4,800004f0 + +00000000800001e4 : + 800001e4: 00002097 auipc ra,0x2 + 800001e8: e2308093 addi ra,ra,-477 # 80002007 + 800001ec: 00a00113 li sp,10 + 800001f0: 00208023 sb sp,0(ra) + 800001f4: 00008f03 lb t5,0(ra) + 800001f8: 00a00e93 li t4,10 + 800001fc: 00900193 li gp,9 + 80000200: 2fdf1863 bne t5,t4,800004f0 + +0000000080000204 : + 80000204: 00002097 auipc ra,0x2 + 80000208: e0408093 addi ra,ra,-508 # 80002008 + 8000020c: 12345137 lui sp,0x12345 + 80000210: 6781011b addiw sp,sp,1656 + 80000214: fe008213 addi tp,ra,-32 + 80000218: 02220023 sb sp,32(tp) # 20 <_start-0x7fffffe0> + 8000021c: 00008283 lb t0,0(ra) + 80000220: 07800e93 li t4,120 + 80000224: 00a00193 li gp,10 + 80000228: 2dd29463 bne t0,t4,800004f0 + +000000008000022c : + 8000022c: 00002097 auipc ra,0x2 + 80000230: ddc08093 addi ra,ra,-548 # 80002008 + 80000234: 00003137 lui sp,0x3 + 80000238: 0981011b addiw sp,sp,152 + 8000023c: ffa08093 addi ra,ra,-6 + 80000240: 002083a3 sb sp,7(ra) + 80000244: 00002217 auipc tp,0x2 + 80000248: dc520213 addi tp,tp,-571 # 80002009 + 8000024c: 00020283 lb t0,0(tp) # 0 <_start-0x80000000> + 80000250: f9800e93 li t4,-104 + 80000254: 00b00193 li gp,11 + 80000258: 29d29c63 bne t0,t4,800004f0 + +000000008000025c : + 8000025c: 00c00193 li gp,12 + 80000260: 00000213 li tp,0 + 80000264: fdd00093 li ra,-35 + 80000268: 00002117 auipc sp,0x2 + 8000026c: d9810113 addi sp,sp,-616 # 80002000 + 80000270: 00110023 sb ra,0(sp) + 80000274: 00010f03 lb t5,0(sp) + 80000278: fdd00e93 li t4,-35 + 8000027c: 27df1a63 bne t5,t4,800004f0 + 80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000284: 00200293 li t0,2 + 80000288: fc521ee3 bne tp,t0,80000264 + +000000008000028c : + 8000028c: 00d00193 li gp,13 + 80000290: 00000213 li tp,0 + 80000294: fcd00093 li ra,-51 + 80000298: 00002117 auipc sp,0x2 + 8000029c: d6810113 addi sp,sp,-664 # 80002000 + 800002a0: 00000013 nop + 800002a4: 001100a3 sb ra,1(sp) + 800002a8: 00110f03 lb t5,1(sp) + 800002ac: fcd00e93 li t4,-51 + 800002b0: 25df1063 bne t5,t4,800004f0 + 800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b8: 00200293 li t0,2 + 800002bc: fc521ce3 bne tp,t0,80000294 + +00000000800002c0 : + 800002c0: 00e00193 li gp,14 + 800002c4: 00000213 li tp,0 + 800002c8: fcc00093 li ra,-52 + 800002cc: 00002117 auipc sp,0x2 + 800002d0: d3410113 addi sp,sp,-716 # 80002000 + 800002d4: 00000013 nop + 800002d8: 00000013 nop + 800002dc: 00110123 sb ra,2(sp) + 800002e0: 00210f03 lb t5,2(sp) + 800002e4: fcc00e93 li t4,-52 + 800002e8: 21df1463 bne t5,t4,800004f0 + 800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f0: 00200293 li t0,2 + 800002f4: fc521ae3 bne tp,t0,800002c8 + +00000000800002f8 : + 800002f8: 00f00193 li gp,15 + 800002fc: 00000213 li tp,0 + 80000300: fbc00093 li ra,-68 + 80000304: 00000013 nop + 80000308: 00002117 auipc sp,0x2 + 8000030c: cf810113 addi sp,sp,-776 # 80002000 + 80000310: 001101a3 sb ra,3(sp) + 80000314: 00310f03 lb t5,3(sp) + 80000318: fbc00e93 li t4,-68 + 8000031c: 1ddf1a63 bne t5,t4,800004f0 + 80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000324: 00200293 li t0,2 + 80000328: fc521ce3 bne tp,t0,80000300 + +000000008000032c : + 8000032c: 01000193 li gp,16 + 80000330: 00000213 li tp,0 + 80000334: fbb00093 li ra,-69 + 80000338: 00000013 nop + 8000033c: 00002117 auipc sp,0x2 + 80000340: cc410113 addi sp,sp,-828 # 80002000 + 80000344: 00000013 nop + 80000348: 00110223 sb ra,4(sp) + 8000034c: 00410f03 lb t5,4(sp) + 80000350: fbb00e93 li t4,-69 + 80000354: 19df1e63 bne t5,t4,800004f0 + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fc521ae3 bne tp,t0,80000334 + +0000000080000364 : + 80000364: 01100193 li gp,17 + 80000368: 00000213 li tp,0 + 8000036c: fab00093 li ra,-85 + 80000370: 00000013 nop + 80000374: 00000013 nop + 80000378: 00002117 auipc sp,0x2 + 8000037c: c8810113 addi sp,sp,-888 # 80002000 + 80000380: 001102a3 sb ra,5(sp) + 80000384: 00510f03 lb t5,5(sp) + 80000388: fab00e93 li t4,-85 + 8000038c: 17df1263 bne t5,t4,800004f0 + 80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000394: 00200293 li t0,2 + 80000398: fc521ae3 bne tp,t0,8000036c + +000000008000039c : + 8000039c: 01200193 li gp,18 + 800003a0: 00000213 li tp,0 + 800003a4: 00002117 auipc sp,0x2 + 800003a8: c5c10113 addi sp,sp,-932 # 80002000 + 800003ac: 03300093 li ra,51 + 800003b0: 00110023 sb ra,0(sp) + 800003b4: 00010f03 lb t5,0(sp) + 800003b8: 03300e93 li t4,51 + 800003bc: 13df1a63 bne t5,t4,800004f0 + 800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c4: 00200293 li t0,2 + 800003c8: fc521ee3 bne tp,t0,800003a4 + +00000000800003cc : + 800003cc: 01300193 li gp,19 + 800003d0: 00000213 li tp,0 + 800003d4: 00002117 auipc sp,0x2 + 800003d8: c2c10113 addi sp,sp,-980 # 80002000 + 800003dc: 02300093 li ra,35 + 800003e0: 00000013 nop + 800003e4: 001100a3 sb ra,1(sp) + 800003e8: 00110f03 lb t5,1(sp) + 800003ec: 02300e93 li t4,35 + 800003f0: 11df1063 bne t5,t4,800004f0 + 800003f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003f8: 00200293 li t0,2 + 800003fc: fc521ce3 bne tp,t0,800003d4 + +0000000080000400 : + 80000400: 01400193 li gp,20 + 80000404: 00000213 li tp,0 + 80000408: 00002117 auipc sp,0x2 + 8000040c: bf810113 addi sp,sp,-1032 # 80002000 + 80000410: 02200093 li ra,34 + 80000414: 00000013 nop + 80000418: 00000013 nop + 8000041c: 00110123 sb ra,2(sp) + 80000420: 00210f03 lb t5,2(sp) + 80000424: 02200e93 li t4,34 + 80000428: 0ddf1463 bne t5,t4,800004f0 + 8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000430: 00200293 li t0,2 + 80000434: fc521ae3 bne tp,t0,80000408 + +0000000080000438 : + 80000438: 01500193 li gp,21 + 8000043c: 00000213 li tp,0 + 80000440: 00002117 auipc sp,0x2 + 80000444: bc010113 addi sp,sp,-1088 # 80002000 + 80000448: 00000013 nop + 8000044c: 01200093 li ra,18 + 80000450: 001101a3 sb ra,3(sp) + 80000454: 00310f03 lb t5,3(sp) + 80000458: 01200e93 li t4,18 + 8000045c: 09df1a63 bne t5,t4,800004f0 + 80000460: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000464: 00200293 li t0,2 + 80000468: fc521ce3 bne tp,t0,80000440 + +000000008000046c : + 8000046c: 01600193 li gp,22 + 80000470: 00000213 li tp,0 + 80000474: 00002117 auipc sp,0x2 + 80000478: b8c10113 addi sp,sp,-1140 # 80002000 + 8000047c: 00000013 nop + 80000480: 01100093 li ra,17 + 80000484: 00000013 nop + 80000488: 00110223 sb ra,4(sp) + 8000048c: 00410f03 lb t5,4(sp) + 80000490: 01100e93 li t4,17 + 80000494: 05df1e63 bne t5,t4,800004f0 + 80000498: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000049c: 00200293 li t0,2 + 800004a0: fc521ae3 bne tp,t0,80000474 + +00000000800004a4 : + 800004a4: 01700193 li gp,23 + 800004a8: 00000213 li tp,0 + 800004ac: 00002117 auipc sp,0x2 + 800004b0: b5410113 addi sp,sp,-1196 # 80002000 + 800004b4: 00000013 nop + 800004b8: 00000013 nop + 800004bc: 00100093 li ra,1 + 800004c0: 001102a3 sb ra,5(sp) + 800004c4: 00510f03 lb t5,5(sp) + 800004c8: 00100e93 li t4,1 + 800004cc: 03df1263 bne t5,t4,800004f0 + 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d4: 00200293 li t0,2 + 800004d8: fc521ae3 bne tp,t0,800004ac + 800004dc: 0ef00513 li a0,239 + 800004e0: 00002597 auipc a1,0x2 + 800004e4: b2058593 addi a1,a1,-1248 # 80002000 + 800004e8: 00a581a3 sb a0,3(a1) + 800004ec: 00301c63 bne zero,gp,80000504 + +00000000800004f0 : + 800004f0: 0ff0000f fence + 800004f4: 00018063 beqz gp,800004f4 + 800004f8: 00119193 slli gp,gp,0x1 + 800004fc: 0011e193 ori gp,gp,1 + 80000500: 00000073 ecall + +0000000080000504 : + 80000504: 0ff0000f fence + 80000508: 00100193 li gp,1 + 8000050c: 00000073 ecall + 80000510: c0001073 unimp + 80000514: 0000 unimp + 80000516: 0000 unimp + 80000518: 0000 unimp + 8000051a: 0000 unimp + 8000051c: 0000 unimp + 8000051e: 0000 unimp + 80000520: 0000 unimp + 80000522: 0000 unimp + 80000524: 0000 unimp + 80000526: 0000 unimp + 80000528: 0000 unimp + 8000052a: 0000 unimp + 8000052c: 0000 unimp + 8000052e: 0000 unimp + 80000530: 0000 unimp + 80000532: 0000 unimp + 80000534: 0000 unimp + 80000536: 0000 unimp + 80000538: 0000 unimp + 8000053a: 0000 unimp + 8000053c: 0000 unimp + 8000053e: 0000 unimp + 80000540: 0000 unimp + 80000542: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: jal t6,800006fe + +0000000080002001 : + 80002001: jal t6,800006ff + +0000000080002002 : + 80002002: jal t6,80000700 + +0000000080002003 : + 80002003: jal t6,80000701 + +0000000080002004 : + 80002004: jal t6,80000702 + +0000000080002005 : + 80002005: jal t6,80000703 + +0000000080002006 : + 80002006: jal t6,80000704 + +0000000080002007 : + 80002007: jal t6,80100015 <_end+0xfe005> + +0000000080002008 : + 80002008: jal t6,80010008 <_end+0xdff8> + +0000000080002009 : + 80002009: 000000ef jal ra,80002009 + 8000200d: 0000 unimp + 8000200f: 00 Address 0x000000008000200f is out of bounds. + diff --git a/Tests/isa/rv64ui-p-sd b/Tests/isa/rv64ui-p-sd new file mode 100644 index 0000000..ea6fc9a Binary files /dev/null and b/Tests/isa/rv64ui-p-sd differ diff --git a/Tests/isa/rv64ui-p-sd.dump b/Tests/isa/rv64ui-p-sd.dump new file mode 100644 index 0000000..56249fa --- /dev/null +++ b/Tests/isa/rv64ui-p-sd.dump @@ -0,0 +1,594 @@ + +rv64ui-p-sd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 00550137 lui sp,0x550 + 80000108: 0551011b addiw sp,sp,85 + 8000010c: 01011113 slli sp,sp,0x10 + 80000110: 05510113 addi sp,sp,85 # 550055 <_start-0x7faaffab> + 80000114: 01111113 slli sp,sp,0x11 + 80000118: 0aa10113 addi sp,sp,170 + 8000011c: 0020b023 sd sp,0(ra) + 80000120: 0000bf03 ld t5,0(ra) + 80000124: 00550eb7 lui t4,0x550 + 80000128: 055e8e9b addiw t4,t4,85 + 8000012c: 010e9e93 slli t4,t4,0x10 + 80000130: 055e8e93 addi t4,t4,85 # 550055 <_start-0x7faaffab> + 80000134: 011e9e93 slli t4,t4,0x11 + 80000138: 0aae8e93 addi t4,t4,170 + 8000013c: 00200193 li gp,2 + 80000140: 61df1063 bne t5,t4,80000740 + +0000000080000144 : + 80000144: 00002097 auipc ra,0x2 + 80000148: ebc08093 addi ra,ra,-324 # 80002000 + 8000014c: ffd50137 lui sp,0xffd50 + 80000150: 0551011b addiw sp,sp,85 + 80000154: 01011113 slli sp,sp,0x10 + 80000158: 05510113 addi sp,sp,85 # ffffffffffd50055 <_end+0xffffffff7fd4e005> + 8000015c: 00d11113 slli sp,sp,0xd + 80000160: 00b10113 addi sp,sp,11 + 80000164: 00c11113 slli sp,sp,0xc + 80000168: a0010113 addi sp,sp,-1536 + 8000016c: 0020b423 sd sp,8(ra) + 80000170: 0080bf03 ld t5,8(ra) + 80000174: ffd50eb7 lui t4,0xffd50 + 80000178: 055e8e9b addiw t4,t4,85 + 8000017c: 010e9e93 slli t4,t4,0x10 + 80000180: 055e8e93 addi t4,t4,85 # ffffffffffd50055 <_end+0xffffffff7fd4e005> + 80000184: 00de9e93 slli t4,t4,0xd + 80000188: 00be8e93 addi t4,t4,11 + 8000018c: 00ce9e93 slli t4,t4,0xc + 80000190: a00e8e93 addi t4,t4,-1536 + 80000194: 00300193 li gp,3 + 80000198: 5bdf1463 bne t5,t4,80000740 + +000000008000019c : + 8000019c: 00002097 auipc ra,0x2 + 800001a0: e6408093 addi ra,ra,-412 # 80002000 + 800001a4: 00550137 lui sp,0x550 + 800001a8: 0551011b addiw sp,sp,85 + 800001ac: 00d11113 slli sp,sp,0xd + 800001b0: 00b10113 addi sp,sp,11 # 55000b <_start-0x7faafff5> + 800001b4: 00c11113 slli sp,sp,0xc + 800001b8: a0110113 addi sp,sp,-1535 + 800001bc: 00c11113 slli sp,sp,0xc + 800001c0: aa010113 addi sp,sp,-1376 + 800001c4: 0020b823 sd sp,16(ra) + 800001c8: 0100bf03 ld t5,16(ra) + 800001cc: 00550eb7 lui t4,0x550 + 800001d0: 055e8e9b addiw t4,t4,85 + 800001d4: 00de9e93 slli t4,t4,0xd + 800001d8: 00be8e93 addi t4,t4,11 # 55000b <_start-0x7faafff5> + 800001dc: 00ce9e93 slli t4,t4,0xc + 800001e0: a01e8e93 addi t4,t4,-1535 + 800001e4: 00ce9e93 slli t4,t4,0xc + 800001e8: aa0e8e93 addi t4,t4,-1376 + 800001ec: 00400193 li gp,4 + 800001f0: 55df1863 bne t5,t4,80000740 + +00000000800001f4 : + 800001f4: 00002097 auipc ra,0x2 + 800001f8: e0c08093 addi ra,ra,-500 # 80002000 + 800001fc: fffd0137 lui sp,0xfffd0 + 80000200: 0551011b addiw sp,sp,85 + 80000204: 01011113 slli sp,sp,0x10 + 80000208: 05510113 addi sp,sp,85 # fffffffffffd0055 <_end+0xffffffff7ffce005> + 8000020c: 01011113 slli sp,sp,0x10 + 80000210: 05510113 addi sp,sp,85 + 80000214: 00d11113 slli sp,sp,0xd + 80000218: 00a10113 addi sp,sp,10 + 8000021c: 0020bc23 sd sp,24(ra) + 80000220: 0180bf03 ld t5,24(ra) + 80000224: fffd0eb7 lui t4,0xfffd0 + 80000228: 055e8e9b addiw t4,t4,85 + 8000022c: 010e9e93 slli t4,t4,0x10 + 80000230: 055e8e93 addi t4,t4,85 # fffffffffffd0055 <_end+0xffffffff7ffce005> + 80000234: 010e9e93 slli t4,t4,0x10 + 80000238: 055e8e93 addi t4,t4,85 + 8000023c: 00de9e93 slli t4,t4,0xd + 80000240: 00ae8e93 addi t4,t4,10 + 80000244: 00500193 li gp,5 + 80000248: 4fdf1c63 bne t5,t4,80000740 + +000000008000024c : + 8000024c: 00002097 auipc ra,0x2 + 80000250: dec08093 addi ra,ra,-532 # 80002038 + 80000254: 00550137 lui sp,0x550 + 80000258: 0551011b addiw sp,sp,85 + 8000025c: 01011113 slli sp,sp,0x10 + 80000260: 05510113 addi sp,sp,85 # 550055 <_start-0x7faaffab> + 80000264: 01111113 slli sp,sp,0x11 + 80000268: 0aa10113 addi sp,sp,170 + 8000026c: fe20b423 sd sp,-24(ra) + 80000270: fe80bf03 ld t5,-24(ra) + 80000274: 00550eb7 lui t4,0x550 + 80000278: 055e8e9b addiw t4,t4,85 + 8000027c: 010e9e93 slli t4,t4,0x10 + 80000280: 055e8e93 addi t4,t4,85 # 550055 <_start-0x7faaffab> + 80000284: 011e9e93 slli t4,t4,0x11 + 80000288: 0aae8e93 addi t4,t4,170 + 8000028c: 00600193 li gp,6 + 80000290: 4bdf1863 bne t5,t4,80000740 + +0000000080000294 : + 80000294: 00002097 auipc ra,0x2 + 80000298: da408093 addi ra,ra,-604 # 80002038 + 8000029c: ffd50137 lui sp,0xffd50 + 800002a0: 0551011b addiw sp,sp,85 + 800002a4: 01011113 slli sp,sp,0x10 + 800002a8: 05510113 addi sp,sp,85 # ffffffffffd50055 <_end+0xffffffff7fd4e005> + 800002ac: 00d11113 slli sp,sp,0xd + 800002b0: 00b10113 addi sp,sp,11 + 800002b4: 00c11113 slli sp,sp,0xc + 800002b8: a0010113 addi sp,sp,-1536 + 800002bc: fe20b823 sd sp,-16(ra) + 800002c0: ff00bf03 ld t5,-16(ra) + 800002c4: ffd50eb7 lui t4,0xffd50 + 800002c8: 055e8e9b addiw t4,t4,85 + 800002cc: 010e9e93 slli t4,t4,0x10 + 800002d0: 055e8e93 addi t4,t4,85 # ffffffffffd50055 <_end+0xffffffff7fd4e005> + 800002d4: 00de9e93 slli t4,t4,0xd + 800002d8: 00be8e93 addi t4,t4,11 + 800002dc: 00ce9e93 slli t4,t4,0xc + 800002e0: a00e8e93 addi t4,t4,-1536 + 800002e4: 00700193 li gp,7 + 800002e8: 45df1c63 bne t5,t4,80000740 + +00000000800002ec : + 800002ec: 00002097 auipc ra,0x2 + 800002f0: d4c08093 addi ra,ra,-692 # 80002038 + 800002f4: 00550137 lui sp,0x550 + 800002f8: 0551011b addiw sp,sp,85 + 800002fc: 00d11113 slli sp,sp,0xd + 80000300: 00b10113 addi sp,sp,11 # 55000b <_start-0x7faafff5> + 80000304: 00c11113 slli sp,sp,0xc + 80000308: a0110113 addi sp,sp,-1535 + 8000030c: 00c11113 slli sp,sp,0xc + 80000310: aa010113 addi sp,sp,-1376 + 80000314: fe20bc23 sd sp,-8(ra) + 80000318: ff80bf03 ld t5,-8(ra) + 8000031c: 00550eb7 lui t4,0x550 + 80000320: 055e8e9b addiw t4,t4,85 + 80000324: 00de9e93 slli t4,t4,0xd + 80000328: 00be8e93 addi t4,t4,11 # 55000b <_start-0x7faafff5> + 8000032c: 00ce9e93 slli t4,t4,0xc + 80000330: a01e8e93 addi t4,t4,-1535 + 80000334: 00ce9e93 slli t4,t4,0xc + 80000338: aa0e8e93 addi t4,t4,-1376 + 8000033c: 00800193 li gp,8 + 80000340: 41df1063 bne t5,t4,80000740 + +0000000080000344 : + 80000344: 00002097 auipc ra,0x2 + 80000348: cf408093 addi ra,ra,-780 # 80002038 + 8000034c: fffd0137 lui sp,0xfffd0 + 80000350: 0551011b addiw sp,sp,85 + 80000354: 01011113 slli sp,sp,0x10 + 80000358: 05510113 addi sp,sp,85 # fffffffffffd0055 <_end+0xffffffff7ffce005> + 8000035c: 01011113 slli sp,sp,0x10 + 80000360: 05510113 addi sp,sp,85 + 80000364: 00d11113 slli sp,sp,0xd + 80000368: 00a10113 addi sp,sp,10 + 8000036c: 0020b023 sd sp,0(ra) + 80000370: 0000bf03 ld t5,0(ra) + 80000374: fffd0eb7 lui t4,0xfffd0 + 80000378: 055e8e9b addiw t4,t4,85 + 8000037c: 010e9e93 slli t4,t4,0x10 + 80000380: 055e8e93 addi t4,t4,85 # fffffffffffd0055 <_end+0xffffffff7ffce005> + 80000384: 010e9e93 slli t4,t4,0x10 + 80000388: 055e8e93 addi t4,t4,85 + 8000038c: 00de9e93 slli t4,t4,0xd + 80000390: 00ae8e93 addi t4,t4,10 + 80000394: 00900193 li gp,9 + 80000398: 3bdf1463 bne t5,t4,80000740 + +000000008000039c : + 8000039c: 00002097 auipc ra,0x2 + 800003a0: ca408093 addi ra,ra,-860 # 80002040 + 800003a4: 00247137 lui sp,0x247 + 800003a8: 8ad1011b addiw sp,sp,-1875 + 800003ac: 00e11113 slli sp,sp,0xe + 800003b0: c0910113 addi sp,sp,-1015 # 246c09 <_start-0x7fdb93f7> + 800003b4: 00d11113 slli sp,sp,0xd + 800003b8: 34510113 addi sp,sp,837 + 800003bc: 00c11113 slli sp,sp,0xc + 800003c0: 67810113 addi sp,sp,1656 + 800003c4: fe008213 addi tp,ra,-32 + 800003c8: 02223023 sd sp,32(tp) # 20 <_start-0x7fffffe0> + 800003cc: 0000b283 ld t0,0(ra) + 800003d0: 00247eb7 lui t4,0x247 + 800003d4: 8ade8e9b addiw t4,t4,-1875 + 800003d8: 00ee9e93 slli t4,t4,0xe + 800003dc: c09e8e93 addi t4,t4,-1015 # 246c09 <_start-0x7fdb93f7> + 800003e0: 00de9e93 slli t4,t4,0xd + 800003e4: 345e8e93 addi t4,t4,837 + 800003e8: 00ce9e93 slli t4,t4,0xc + 800003ec: 678e8e93 addi t4,t4,1656 + 800003f0: 00a00193 li gp,10 + 800003f4: 35d29663 bne t0,t4,80000740 + +00000000800003f8 : + 800003f8: 00002097 auipc ra,0x2 + 800003fc: c4808093 addi ra,ra,-952 # 80002040 + 80000400: 00b04137 lui sp,0xb04 + 80000404: 2611011b addiw sp,sp,609 + 80000408: 00c11113 slli sp,sp,0xc + 8000040c: 30b10113 addi sp,sp,779 # b0430b <_start-0x7f4fbcf5> + 80000410: 00f11113 slli sp,sp,0xf + 80000414: 21310113 addi sp,sp,531 + 80000418: 00c11113 slli sp,sp,0xc + 8000041c: 09810113 addi sp,sp,152 + 80000420: ffd08093 addi ra,ra,-3 + 80000424: 0020b5a3 sd sp,11(ra) + 80000428: 00002217 auipc tp,0x2 + 8000042c: c2020213 addi tp,tp,-992 # 80002048 + 80000430: 00023283 ld t0,0(tp) # 0 <_start-0x80000000> + 80000434: 00b04eb7 lui t4,0xb04 + 80000438: 261e8e9b addiw t4,t4,609 + 8000043c: 00ce9e93 slli t4,t4,0xc + 80000440: 30be8e93 addi t4,t4,779 # b0430b <_start-0x7f4fbcf5> + 80000444: 00fe9e93 slli t4,t4,0xf + 80000448: 213e8e93 addi t4,t4,531 + 8000044c: 00ce9e93 slli t4,t4,0xc + 80000450: 098e8e93 addi t4,t4,152 + 80000454: 00b00193 li gp,11 + 80000458: 2fd29463 bne t0,t4,80000740 + +000000008000045c : + 8000045c: 00c00193 li gp,12 + 80000460: 00000213 li tp,0 + 80000464: 0abbd0b7 lui ra,0xabbd + 80000468: cdd0809b addiw ra,ra,-803 + 8000046c: 00002117 auipc sp,0x2 + 80000470: b9410113 addi sp,sp,-1132 # 80002000 + 80000474: 00113023 sd ra,0(sp) + 80000478: 00013f03 ld t5,0(sp) + 8000047c: 0abbdeb7 lui t4,0xabbd + 80000480: cdde8e9b addiw t4,t4,-803 + 80000484: 2bdf1e63 bne t5,t4,80000740 + 80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000048c: 00200293 li t0,2 + 80000490: fc521ae3 bne tp,t0,80000464 + +0000000080000494 : + 80000494: 00d00193 li gp,13 + 80000498: 00000213 li tp,0 + 8000049c: 0aabc0b7 lui ra,0xaabc + 800004a0: ccd0809b addiw ra,ra,-819 + 800004a4: 00002117 auipc sp,0x2 + 800004a8: b5c10113 addi sp,sp,-1188 # 80002000 + 800004ac: 00000013 nop + 800004b0: 00113423 sd ra,8(sp) + 800004b4: 00813f03 ld t5,8(sp) + 800004b8: 0aabceb7 lui t4,0xaabc + 800004bc: ccde8e9b addiw t4,t4,-819 + 800004c0: 29df1063 bne t5,t4,80000740 + 800004c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004c8: 00200293 li t0,2 + 800004cc: fc5218e3 bne tp,t0,8000049c + +00000000800004d0 : + 800004d0: 00e00193 li gp,14 + 800004d4: 00000213 li tp,0 + 800004d8: 0daac0b7 lui ra,0xdaac + 800004dc: bcc0809b addiw ra,ra,-1076 + 800004e0: 00002117 auipc sp,0x2 + 800004e4: b2010113 addi sp,sp,-1248 # 80002000 + 800004e8: 00000013 nop + 800004ec: 00000013 nop + 800004f0: 00113823 sd ra,16(sp) + 800004f4: 01013f03 ld t5,16(sp) + 800004f8: 0daaceb7 lui t4,0xdaac + 800004fc: bcce8e9b addiw t4,t4,-1076 + 80000500: 25df1063 bne t5,t4,80000740 + 80000504: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000508: 00200293 li t0,2 + 8000050c: fc5216e3 bne tp,t0,800004d8 + +0000000080000510 : + 80000510: 00f00193 li gp,15 + 80000514: 00000213 li tp,0 + 80000518: 0ddab0b7 lui ra,0xddab + 8000051c: bbc0809b addiw ra,ra,-1092 + 80000520: 00000013 nop + 80000524: 00002117 auipc sp,0x2 + 80000528: adc10113 addi sp,sp,-1316 # 80002000 + 8000052c: 00113c23 sd ra,24(sp) + 80000530: 01813f03 ld t5,24(sp) + 80000534: 0ddabeb7 lui t4,0xddab + 80000538: bbce8e9b addiw t4,t4,-1092 + 8000053c: 21df1263 bne t5,t4,80000740 + 80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000544: 00200293 li t0,2 + 80000548: fc5218e3 bne tp,t0,80000518 + +000000008000054c : + 8000054c: 01000193 li gp,16 + 80000550: 00000213 li tp,0 + 80000554: 0cddb0b7 lui ra,0xcddb + 80000558: abb0809b addiw ra,ra,-1349 + 8000055c: 00000013 nop + 80000560: 00002117 auipc sp,0x2 + 80000564: aa010113 addi sp,sp,-1376 # 80002000 + 80000568: 00000013 nop + 8000056c: 02113023 sd ra,32(sp) + 80000570: 02013f03 ld t5,32(sp) + 80000574: 0cddbeb7 lui t4,0xcddb + 80000578: abbe8e9b addiw t4,t4,-1349 + 8000057c: 1ddf1263 bne t5,t4,80000740 + 80000580: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000584: 00200293 li t0,2 + 80000588: fc5216e3 bne tp,t0,80000554 + +000000008000058c : + 8000058c: 01100193 li gp,17 + 80000590: 00000213 li tp,0 + 80000594: 0ccde0b7 lui ra,0xccde + 80000598: aab0809b addiw ra,ra,-1365 + 8000059c: 00000013 nop + 800005a0: 00000013 nop + 800005a4: 00002117 auipc sp,0x2 + 800005a8: a5c10113 addi sp,sp,-1444 # 80002000 + 800005ac: 02113423 sd ra,40(sp) + 800005b0: 02813f03 ld t5,40(sp) + 800005b4: 0ccdeeb7 lui t4,0xccde + 800005b8: aabe8e9b addiw t4,t4,-1365 + 800005bc: 19df1263 bne t5,t4,80000740 + 800005c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005c4: 00200293 li t0,2 + 800005c8: fc5216e3 bne tp,t0,80000594 + +00000000800005cc : + 800005cc: 01200193 li gp,18 + 800005d0: 00000213 li tp,0 + 800005d4: 00002117 auipc sp,0x2 + 800005d8: a2c10113 addi sp,sp,-1492 # 80002000 + 800005dc: 001120b7 lui ra,0x112 + 800005e0: 2330809b addiw ra,ra,563 + 800005e4: 00113023 sd ra,0(sp) + 800005e8: 00013f03 ld t5,0(sp) + 800005ec: 00112eb7 lui t4,0x112 + 800005f0: 233e8e9b addiw t4,t4,563 + 800005f4: 15df1663 bne t5,t4,80000740 + 800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005fc: 00200293 li t0,2 + 80000600: fc521ae3 bne tp,t0,800005d4 + +0000000080000604 : + 80000604: 01300193 li gp,19 + 80000608: 00000213 li tp,0 + 8000060c: 00002117 auipc sp,0x2 + 80000610: 9f410113 addi sp,sp,-1548 # 80002000 + 80000614: 300110b7 lui ra,0x30011 + 80000618: 2230809b addiw ra,ra,547 + 8000061c: 00000013 nop + 80000620: 00113423 sd ra,8(sp) + 80000624: 00813f03 ld t5,8(sp) + 80000628: 30011eb7 lui t4,0x30011 + 8000062c: 223e8e9b addiw t4,t4,547 + 80000630: 11df1863 bne t5,t4,80000740 + 80000634: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000638: 00200293 li t0,2 + 8000063c: fc5218e3 bne tp,t0,8000060c + +0000000080000640 : + 80000640: 01400193 li gp,20 + 80000644: 00000213 li tp,0 + 80000648: 00002117 auipc sp,0x2 + 8000064c: 9b810113 addi sp,sp,-1608 # 80002000 + 80000650: 330010b7 lui ra,0x33001 + 80000654: 1220809b addiw ra,ra,290 + 80000658: 00000013 nop + 8000065c: 00000013 nop + 80000660: 00113823 sd ra,16(sp) + 80000664: 01013f03 ld t5,16(sp) + 80000668: 33001eb7 lui t4,0x33001 + 8000066c: 122e8e9b addiw t4,t4,290 + 80000670: 0ddf1863 bne t5,t4,80000740 + 80000674: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000678: 00200293 li t0,2 + 8000067c: fc5216e3 bne tp,t0,80000648 + +0000000080000680 : + 80000680: 01500193 li gp,21 + 80000684: 00000213 li tp,0 + 80000688: 00002117 auipc sp,0x2 + 8000068c: 97810113 addi sp,sp,-1672 # 80002000 + 80000690: 00000013 nop + 80000694: 233000b7 lui ra,0x23300 + 80000698: 1120809b addiw ra,ra,274 + 8000069c: 00113c23 sd ra,24(sp) + 800006a0: 01813f03 ld t5,24(sp) + 800006a4: 23300eb7 lui t4,0x23300 + 800006a8: 112e8e9b addiw t4,t4,274 + 800006ac: 09df1a63 bne t5,t4,80000740 + 800006b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800006b4: 00200293 li t0,2 + 800006b8: fc5218e3 bne tp,t0,80000688 + +00000000800006bc : + 800006bc: 01600193 li gp,22 + 800006c0: 00000213 li tp,0 + 800006c4: 00002117 auipc sp,0x2 + 800006c8: 93c10113 addi sp,sp,-1732 # 80002000 + 800006cc: 00000013 nop + 800006d0: 223300b7 lui ra,0x22330 + 800006d4: 0110809b addiw ra,ra,17 + 800006d8: 00000013 nop + 800006dc: 02113023 sd ra,32(sp) + 800006e0: 02013f03 ld t5,32(sp) + 800006e4: 22330eb7 lui t4,0x22330 + 800006e8: 011e8e9b addiw t4,t4,17 + 800006ec: 05df1a63 bne t5,t4,80000740 + 800006f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800006f4: 00200293 li t0,2 + 800006f8: fc5216e3 bne tp,t0,800006c4 + +00000000800006fc : + 800006fc: 01700193 li gp,23 + 80000700: 00000213 li tp,0 + 80000704: 00002117 auipc sp,0x2 + 80000708: 8fc10113 addi sp,sp,-1796 # 80002000 + 8000070c: 00000013 nop + 80000710: 00000013 nop + 80000714: 122330b7 lui ra,0x12233 + 80000718: 0010809b addiw ra,ra,1 + 8000071c: 02113423 sd ra,40(sp) + 80000720: 02813f03 ld t5,40(sp) + 80000724: 12233eb7 lui t4,0x12233 + 80000728: 001e8e9b addiw t4,t4,1 + 8000072c: 01df1a63 bne t5,t4,80000740 + 80000730: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000734: 00200293 li t0,2 + 80000738: fc5216e3 bne tp,t0,80000704 + 8000073c: 00301c63 bne zero,gp,80000754 + +0000000080000740 : + 80000740: 0ff0000f fence + 80000744: 00018063 beqz gp,80000744 + 80000748: 00119193 slli gp,gp,0x1 + 8000074c: 0011e193 ori gp,gp,1 + 80000750: 00000073 ecall + +0000000080000754 : + 80000754: 0ff0000f fence + 80000758: 00100193 li gp,1 + 8000075c: 00000073 ecall + 80000760: c0001073 unimp + 80000764: 0000 unimp + 80000766: 0000 unimp + 80000768: 0000 unimp + 8000076a: 0000 unimp + 8000076c: 0000 unimp + 8000076e: 0000 unimp + 80000770: 0000 unimp + 80000772: 0000 unimp + 80000774: 0000 unimp + 80000776: 0000 unimp + 80000778: 0000 unimp + 8000077a: 0000 unimp + 8000077c: 0000 unimp + 8000077e: 0000 unimp + 80000780: 0000 unimp + 80000782: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: deadbeef jal t4,7ffdd5ea <_start-0x22a16> + 80002004: deadbeef jal t4,7ffdd5ee <_start-0x22a12> + +0000000080002008 : + 80002008: deadbeef jal t4,7ffdd5f2 <_start-0x22a0e> + 8000200c: deadbeef jal t4,7ffdd5f6 <_start-0x22a0a> + +0000000080002010 : + 80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> + 80002014: deadbeef jal t4,7ffdd5fe <_start-0x22a02> + +0000000080002018 : + 80002018: deadbeef jal t4,7ffdd602 <_start-0x229fe> + 8000201c: deadbeef jal t4,7ffdd606 <_start-0x229fa> + +0000000080002020 : + 80002020: deadbeef jal t4,7ffdd60a <_start-0x229f6> + 80002024: deadbeef jal t4,7ffdd60e <_start-0x229f2> + +0000000080002028 : + 80002028: deadbeef jal t4,7ffdd612 <_start-0x229ee> + 8000202c: deadbeef jal t4,7ffdd616 <_start-0x229ea> + +0000000080002030 : + 80002030: deadbeef jal t4,7ffdd61a <_start-0x229e6> + 80002034: deadbeef jal t4,7ffdd61e <_start-0x229e2> + +0000000080002038 : + 80002038: deadbeef jal t4,7ffdd622 <_start-0x229de> + 8000203c: deadbeef jal t4,7ffdd626 <_start-0x229da> + +0000000080002040 : + 80002040: deadbeef jal t4,7ffdd62a <_start-0x229d6> + 80002044: deadbeef jal t4,7ffdd62e <_start-0x229d2> + +0000000080002048 : + 80002048: deadbeef jal t4,7ffdd632 <_start-0x229ce> + 8000204c: deadbeef jal t4,7ffdd636 <_start-0x229ca> diff --git a/Tests/isa/rv64ui-p-sh b/Tests/isa/rv64ui-p-sh new file mode 100644 index 0000000..a76c280 Binary files /dev/null and b/Tests/isa/rv64ui-p-sh differ diff --git a/Tests/isa/rv64ui-p-sh.dump b/Tests/isa/rv64ui-p-sh.dump new file mode 100644 index 0000000..dc11b44 --- /dev/null +++ b/Tests/isa/rv64ui-p-sh.dump @@ -0,0 +1,480 @@ + +rv64ui-p-sh: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 0aa00113 li sp,170 + 80000108: 00209023 sh sp,0(ra) + 8000010c: 00009f03 lh t5,0(ra) + 80000110: 0aa00e93 li t4,170 + 80000114: 00200193 li gp,2 + 80000118: 45df1e63 bne t5,t4,80000574 + +000000008000011c : + 8000011c: 00002097 auipc ra,0x2 + 80000120: ee408093 addi ra,ra,-284 # 80002000 + 80000124: ffffb137 lui sp,0xffffb + 80000128: a001011b addiw sp,sp,-1536 + 8000012c: 00209123 sh sp,2(ra) + 80000130: 00209f03 lh t5,2(ra) + 80000134: ffffbeb7 lui t4,0xffffb + 80000138: a00e8e9b addiw t4,t4,-1536 + 8000013c: 00300193 li gp,3 + 80000140: 43df1a63 bne t5,t4,80000574 + +0000000080000144 : + 80000144: 00002097 auipc ra,0x2 + 80000148: ebc08093 addi ra,ra,-324 # 80002000 + 8000014c: beef1137 lui sp,0xbeef1 + 80000150: aa01011b addiw sp,sp,-1376 + 80000154: 00209223 sh sp,4(ra) + 80000158: 0040af03 lw t5,4(ra) + 8000015c: beef1eb7 lui t4,0xbeef1 + 80000160: aa0e8e9b addiw t4,t4,-1376 + 80000164: 00400193 li gp,4 + 80000168: 41df1663 bne t5,t4,80000574 + +000000008000016c : + 8000016c: 00002097 auipc ra,0x2 + 80000170: e9408093 addi ra,ra,-364 # 80002000 + 80000174: ffffa137 lui sp,0xffffa + 80000178: 00a1011b addiw sp,sp,10 + 8000017c: 00209323 sh sp,6(ra) + 80000180: 00609f03 lh t5,6(ra) + 80000184: ffffaeb7 lui t4,0xffffa + 80000188: 00ae8e9b addiw t4,t4,10 + 8000018c: 00500193 li gp,5 + 80000190: 3fdf1263 bne t5,t4,80000574 + +0000000080000194 : + 80000194: 00002097 auipc ra,0x2 + 80000198: e7a08093 addi ra,ra,-390 # 8000200e + 8000019c: 0aa00113 li sp,170 + 800001a0: fe209d23 sh sp,-6(ra) + 800001a4: ffa09f03 lh t5,-6(ra) + 800001a8: 0aa00e93 li t4,170 + 800001ac: 00600193 li gp,6 + 800001b0: 3ddf1263 bne t5,t4,80000574 + +00000000800001b4 : + 800001b4: 00002097 auipc ra,0x2 + 800001b8: e5a08093 addi ra,ra,-422 # 8000200e + 800001bc: ffffb137 lui sp,0xffffb + 800001c0: a001011b addiw sp,sp,-1536 + 800001c4: fe209e23 sh sp,-4(ra) + 800001c8: ffc09f03 lh t5,-4(ra) + 800001cc: ffffbeb7 lui t4,0xffffb + 800001d0: a00e8e9b addiw t4,t4,-1536 + 800001d4: 00700193 li gp,7 + 800001d8: 39df1e63 bne t5,t4,80000574 + +00000000800001dc : + 800001dc: 00002097 auipc ra,0x2 + 800001e0: e3208093 addi ra,ra,-462 # 8000200e + 800001e4: 00001137 lui sp,0x1 + 800001e8: aa01011b addiw sp,sp,-1376 + 800001ec: fe209f23 sh sp,-2(ra) + 800001f0: ffe09f03 lh t5,-2(ra) + 800001f4: 00001eb7 lui t4,0x1 + 800001f8: aa0e8e9b addiw t4,t4,-1376 + 800001fc: 00800193 li gp,8 + 80000200: 37df1a63 bne t5,t4,80000574 + +0000000080000204 : + 80000204: 00002097 auipc ra,0x2 + 80000208: e0a08093 addi ra,ra,-502 # 8000200e + 8000020c: ffffa137 lui sp,0xffffa + 80000210: 00a1011b addiw sp,sp,10 + 80000214: 00209023 sh sp,0(ra) + 80000218: 00009f03 lh t5,0(ra) + 8000021c: ffffaeb7 lui t4,0xffffa + 80000220: 00ae8e9b addiw t4,t4,10 + 80000224: 00900193 li gp,9 + 80000228: 35df1663 bne t5,t4,80000574 + +000000008000022c : + 8000022c: 00002097 auipc ra,0x2 + 80000230: de408093 addi ra,ra,-540 # 80002010 + 80000234: 12345137 lui sp,0x12345 + 80000238: 6781011b addiw sp,sp,1656 + 8000023c: fe008213 addi tp,ra,-32 + 80000240: 02221023 sh sp,32(tp) # 20 <_start-0x7fffffe0> + 80000244: 00009283 lh t0,0(ra) + 80000248: 00005eb7 lui t4,0x5 + 8000024c: 678e8e9b addiw t4,t4,1656 + 80000250: 00a00193 li gp,10 + 80000254: 33d29063 bne t0,t4,80000574 + +0000000080000258 : + 80000258: 00002097 auipc ra,0x2 + 8000025c: db808093 addi ra,ra,-584 # 80002010 + 80000260: 00003137 lui sp,0x3 + 80000264: 0981011b addiw sp,sp,152 + 80000268: ffb08093 addi ra,ra,-5 + 8000026c: 002093a3 sh sp,7(ra) + 80000270: 00002217 auipc tp,0x2 + 80000274: da220213 addi tp,tp,-606 # 80002012 + 80000278: 00021283 lh t0,0(tp) # 0 <_start-0x80000000> + 8000027c: 00003eb7 lui t4,0x3 + 80000280: 098e8e9b addiw t4,t4,152 + 80000284: 00b00193 li gp,11 + 80000288: 2fd29663 bne t0,t4,80000574 + +000000008000028c : + 8000028c: 00c00193 li gp,12 + 80000290: 00000213 li tp,0 + 80000294: ffffd0b7 lui ra,0xffffd + 80000298: cdd0809b addiw ra,ra,-803 + 8000029c: 00002117 auipc sp,0x2 + 800002a0: d6410113 addi sp,sp,-668 # 80002000 + 800002a4: 00111023 sh ra,0(sp) + 800002a8: 00011f03 lh t5,0(sp) + 800002ac: ffffdeb7 lui t4,0xffffd + 800002b0: cdde8e9b addiw t4,t4,-803 + 800002b4: 2ddf1063 bne t5,t4,80000574 + 800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002bc: 00200293 li t0,2 + 800002c0: fc521ae3 bne tp,t0,80000294 + +00000000800002c4 : + 800002c4: 00d00193 li gp,13 + 800002c8: 00000213 li tp,0 + 800002cc: ffffc0b7 lui ra,0xffffc + 800002d0: ccd0809b addiw ra,ra,-819 + 800002d4: 00002117 auipc sp,0x2 + 800002d8: d2c10113 addi sp,sp,-724 # 80002000 + 800002dc: 00000013 nop + 800002e0: 00111123 sh ra,2(sp) + 800002e4: 00211f03 lh t5,2(sp) + 800002e8: ffffceb7 lui t4,0xffffc + 800002ec: ccde8e9b addiw t4,t4,-819 + 800002f0: 29df1263 bne t5,t4,80000574 + 800002f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f8: 00200293 li t0,2 + 800002fc: fc5218e3 bne tp,t0,800002cc + +0000000080000300 : + 80000300: 00e00193 li gp,14 + 80000304: 00000213 li tp,0 + 80000308: ffffc0b7 lui ra,0xffffc + 8000030c: bcc0809b addiw ra,ra,-1076 + 80000310: 00002117 auipc sp,0x2 + 80000314: cf010113 addi sp,sp,-784 # 80002000 + 80000318: 00000013 nop + 8000031c: 00000013 nop + 80000320: 00111223 sh ra,4(sp) + 80000324: 00411f03 lh t5,4(sp) + 80000328: ffffceb7 lui t4,0xffffc + 8000032c: bcce8e9b addiw t4,t4,-1076 + 80000330: 25df1263 bne t5,t4,80000574 + 80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000338: 00200293 li t0,2 + 8000033c: fc5216e3 bne tp,t0,80000308 + +0000000080000340 : + 80000340: 00f00193 li gp,15 + 80000344: 00000213 li tp,0 + 80000348: ffffb0b7 lui ra,0xffffb + 8000034c: bbc0809b addiw ra,ra,-1092 + 80000350: 00000013 nop + 80000354: 00002117 auipc sp,0x2 + 80000358: cac10113 addi sp,sp,-852 # 80002000 + 8000035c: 00111323 sh ra,6(sp) + 80000360: 00611f03 lh t5,6(sp) + 80000364: ffffbeb7 lui t4,0xffffb + 80000368: bbce8e9b addiw t4,t4,-1092 + 8000036c: 21df1463 bne t5,t4,80000574 + 80000370: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000374: 00200293 li t0,2 + 80000378: fc5218e3 bne tp,t0,80000348 + +000000008000037c : + 8000037c: 01000193 li gp,16 + 80000380: 00000213 li tp,0 + 80000384: ffffb0b7 lui ra,0xffffb + 80000388: abb0809b addiw ra,ra,-1349 + 8000038c: 00000013 nop + 80000390: 00002117 auipc sp,0x2 + 80000394: c7010113 addi sp,sp,-912 # 80002000 + 80000398: 00000013 nop + 8000039c: 00111423 sh ra,8(sp) + 800003a0: 00811f03 lh t5,8(sp) + 800003a4: ffffbeb7 lui t4,0xffffb + 800003a8: abbe8e9b addiw t4,t4,-1349 + 800003ac: 1ddf1463 bne t5,t4,80000574 + 800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b4: 00200293 li t0,2 + 800003b8: fc5216e3 bne tp,t0,80000384 + +00000000800003bc : + 800003bc: 01100193 li gp,17 + 800003c0: 00000213 li tp,0 + 800003c4: ffffe0b7 lui ra,0xffffe + 800003c8: aab0809b addiw ra,ra,-1365 + 800003cc: 00000013 nop + 800003d0: 00000013 nop + 800003d4: 00002117 auipc sp,0x2 + 800003d8: c2c10113 addi sp,sp,-980 # 80002000 + 800003dc: 00111523 sh ra,10(sp) + 800003e0: 00a11f03 lh t5,10(sp) + 800003e4: ffffeeb7 lui t4,0xffffe + 800003e8: aabe8e9b addiw t4,t4,-1365 + 800003ec: 19df1463 bne t5,t4,80000574 + 800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003f4: 00200293 li t0,2 + 800003f8: fc5216e3 bne tp,t0,800003c4 + +00000000800003fc : + 800003fc: 01200193 li gp,18 + 80000400: 00000213 li tp,0 + 80000404: 00002117 auipc sp,0x2 + 80000408: bfc10113 addi sp,sp,-1028 # 80002000 + 8000040c: 000020b7 lui ra,0x2 + 80000410: 2330809b addiw ra,ra,563 + 80000414: 00111023 sh ra,0(sp) + 80000418: 00011f03 lh t5,0(sp) + 8000041c: 00002eb7 lui t4,0x2 + 80000420: 233e8e9b addiw t4,t4,563 + 80000424: 15df1863 bne t5,t4,80000574 + 80000428: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000042c: 00200293 li t0,2 + 80000430: fc521ae3 bne tp,t0,80000404 + +0000000080000434 : + 80000434: 01300193 li gp,19 + 80000438: 00000213 li tp,0 + 8000043c: 00002117 auipc sp,0x2 + 80000440: bc410113 addi sp,sp,-1084 # 80002000 + 80000444: 000010b7 lui ra,0x1 + 80000448: 2230809b addiw ra,ra,547 + 8000044c: 00000013 nop + 80000450: 00111123 sh ra,2(sp) + 80000454: 00211f03 lh t5,2(sp) + 80000458: 00001eb7 lui t4,0x1 + 8000045c: 223e8e9b addiw t4,t4,547 + 80000460: 11df1a63 bne t5,t4,80000574 + 80000464: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000468: 00200293 li t0,2 + 8000046c: fc5218e3 bne tp,t0,8000043c + +0000000080000470 : + 80000470: 01400193 li gp,20 + 80000474: 00000213 li tp,0 + 80000478: 00002117 auipc sp,0x2 + 8000047c: b8810113 addi sp,sp,-1144 # 80002000 + 80000480: 000010b7 lui ra,0x1 + 80000484: 1220809b addiw ra,ra,290 + 80000488: 00000013 nop + 8000048c: 00000013 nop + 80000490: 00111223 sh ra,4(sp) + 80000494: 00411f03 lh t5,4(sp) + 80000498: 00001eb7 lui t4,0x1 + 8000049c: 122e8e9b addiw t4,t4,290 + 800004a0: 0ddf1a63 bne t5,t4,80000574 + 800004a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004a8: 00200293 li t0,2 + 800004ac: fc5216e3 bne tp,t0,80000478 + +00000000800004b0 : + 800004b0: 01500193 li gp,21 + 800004b4: 00000213 li tp,0 + 800004b8: 00002117 auipc sp,0x2 + 800004bc: b4810113 addi sp,sp,-1208 # 80002000 + 800004c0: 00000013 nop + 800004c4: 11200093 li ra,274 + 800004c8: 00111323 sh ra,6(sp) + 800004cc: 00611f03 lh t5,6(sp) + 800004d0: 11200e93 li t4,274 + 800004d4: 0bdf1063 bne t5,t4,80000574 + 800004d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004dc: 00200293 li t0,2 + 800004e0: fc521ce3 bne tp,t0,800004b8 + +00000000800004e4 : + 800004e4: 01600193 li gp,22 + 800004e8: 00000213 li tp,0 + 800004ec: 00002117 auipc sp,0x2 + 800004f0: b1410113 addi sp,sp,-1260 # 80002000 + 800004f4: 00000013 nop + 800004f8: 01100093 li ra,17 + 800004fc: 00000013 nop + 80000500: 00111423 sh ra,8(sp) + 80000504: 00811f03 lh t5,8(sp) + 80000508: 01100e93 li t4,17 + 8000050c: 07df1463 bne t5,t4,80000574 + 80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000514: 00200293 li t0,2 + 80000518: fc521ae3 bne tp,t0,800004ec + +000000008000051c : + 8000051c: 01700193 li gp,23 + 80000520: 00000213 li tp,0 + 80000524: 00002117 auipc sp,0x2 + 80000528: adc10113 addi sp,sp,-1316 # 80002000 + 8000052c: 00000013 nop + 80000530: 00000013 nop + 80000534: 000030b7 lui ra,0x3 + 80000538: 0010809b addiw ra,ra,1 + 8000053c: 00111523 sh ra,10(sp) + 80000540: 00a11f03 lh t5,10(sp) + 80000544: 00003eb7 lui t4,0x3 + 80000548: 001e8e9b addiw t4,t4,1 + 8000054c: 03df1463 bne t5,t4,80000574 + 80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000554: 00200293 li t0,2 + 80000558: fc5216e3 bne tp,t0,80000524 + 8000055c: 0000c537 lui a0,0xc + 80000560: eef5051b addiw a0,a0,-273 + 80000564: 00002597 auipc a1,0x2 + 80000568: a9c58593 addi a1,a1,-1380 # 80002000 + 8000056c: 00a59323 sh a0,6(a1) + 80000570: 00301c63 bne zero,gp,80000588 + +0000000080000574 : + 80000574: 0ff0000f fence + 80000578: 00018063 beqz gp,80000578 + 8000057c: 00119193 slli gp,gp,0x1 + 80000580: 0011e193 ori gp,gp,1 + 80000584: 00000073 ecall + +0000000080000588 : + 80000588: 0ff0000f fence + 8000058c: 00100193 li gp,1 + 80000590: 00000073 ecall + 80000594: c0001073 unimp + 80000598: 0000 unimp + 8000059a: 0000 unimp + 8000059c: 0000 unimp + 8000059e: 0000 unimp + 800005a0: 0000 unimp + 800005a2: 0000 unimp + 800005a4: 0000 unimp + 800005a6: 0000 unimp + 800005a8: 0000 unimp + 800005aa: 0000 unimp + 800005ac: 0000 unimp + 800005ae: 0000 unimp + 800005b0: 0000 unimp + 800005b2: 0000 unimp + 800005b4: 0000 unimp + 800005b6: 0000 unimp + 800005b8: 0000 unimp + 800005ba: 0000 unimp + 800005bc: 0000 unimp + 800005be: 0000 unimp + 800005c0: 0000 unimp + 800005c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: jal t4,7fffd3ee <_start-0x2c12> + +0000000080002002 : + 80002002: jal t4,7fffd3f0 <_start-0x2c10> + +0000000080002004 : + 80002004: jal t4,7fffd3f2 <_start-0x2c0e> + +0000000080002006 : + 80002006: jal t4,7fffd3f4 <_start-0x2c0c> + +0000000080002008 : + 80002008: jal t4,7fffd3f6 <_start-0x2c0a> + +000000008000200a : + 8000200a: jal t4,7fffd3f8 <_start-0x2c08> + +000000008000200c : + 8000200c: jal t4,7fffd3fa <_start-0x2c06> + +000000008000200e : + 8000200e: jal t4,7fffd3fc <_start-0x2c04> + +0000000080002010 : + 80002010: jal t4,7fffd3fe <_start-0x2c02> + +0000000080002012 : + 80002012: 0000beef jal t4,8000d012 <_end+0xaff2> + 80002016: 0000 unimp + 80002018: 0000 unimp + 8000201a: 0000 unimp + 8000201c: 0000 unimp + 8000201e: 0000 unimp diff --git a/Tests/isa/rv64ui-p-simple b/Tests/isa/rv64ui-p-simple new file mode 100644 index 0000000..10c105f Binary files /dev/null and b/Tests/isa/rv64ui-p-simple differ diff --git a/Tests/isa/rv64ui-p-simple.dump b/Tests/isa/rv64ui-p-simple.dump new file mode 100644 index 0000000..7a05fb7 --- /dev/null +++ b/Tests/isa/rv64ui-p-simple.dump @@ -0,0 +1,110 @@ + +rv64ui-p-simple: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + 800000fc: 0ff0000f fence + 80000100: 00100193 li gp,1 + 80000104: 00000073 ecall + 80000108: c0001073 unimp + 8000010c: 0000 unimp + 8000010e: 0000 unimp + 80000110: 0000 unimp + 80000112: 0000 unimp + 80000114: 0000 unimp + 80000116: 0000 unimp + 80000118: 0000 unimp + 8000011a: 0000 unimp + 8000011c: 0000 unimp + 8000011e: 0000 unimp + 80000120: 0000 unimp + 80000122: 0000 unimp + 80000124: 0000 unimp + 80000126: 0000 unimp + 80000128: 0000 unimp + 8000012a: 0000 unimp + 8000012c: 0000 unimp + 8000012e: 0000 unimp + 80000130: 0000 unimp + 80000132: 0000 unimp + 80000134: 0000 unimp + 80000136: 0000 unimp + 80000138: 0000 unimp + 8000013a: 0000 unimp + 8000013c: 0000 unimp + 8000013e: 0000 unimp + 80000140: 0000 unimp + 80000142: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sll b/Tests/isa/rv64ui-p-sll new file mode 100644 index 0000000..ecfad18 Binary files /dev/null and b/Tests/isa/rv64ui-p-sll differ diff --git a/Tests/isa/rv64ui-p-sll.dump b/Tests/isa/rv64ui-p-sll.dump new file mode 100644 index 0000000..c2ac48f --- /dev/null +++ b/Tests/isa/rv64ui-p-sll.dump @@ -0,0 +1,580 @@ + +rv64ui-p-sll: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00100093 li ra,1 + 80000100: 00000113 li sp,0 + 80000104: 00209f33 sll t5,ra,sp + 80000108: 00100e93 li t4,1 + 8000010c: 00200193 li gp,2 + 80000110: 5fdf1c63 bne t5,t4,80000708 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 00209f33 sll t5,ra,sp + 80000120: 00200e93 li t4,2 + 80000124: 00300193 li gp,3 + 80000128: 5fdf1063 bne t5,t4,80000708 + +000000008000012c : + 8000012c: 00100093 li ra,1 + 80000130: 00700113 li sp,7 + 80000134: 00209f33 sll t5,ra,sp + 80000138: 08000e93 li t4,128 + 8000013c: 00400193 li gp,4 + 80000140: 5ddf1463 bne t5,t4,80000708 + +0000000080000144 : + 80000144: 00100093 li ra,1 + 80000148: 00e00113 li sp,14 + 8000014c: 00209f33 sll t5,ra,sp + 80000150: 00004eb7 lui t4,0x4 + 80000154: 00500193 li gp,5 + 80000158: 5bdf1863 bne t5,t4,80000708 + +000000008000015c : + 8000015c: 00100093 li ra,1 + 80000160: 01f00113 li sp,31 + 80000164: 00209f33 sll t5,ra,sp + 80000168: 00100e9b addiw t4,zero,1 + 8000016c: 01fe9e93 slli t4,t4,0x1f + 80000170: 00600193 li gp,6 + 80000174: 59df1a63 bne t5,t4,80000708 + +0000000080000178 : + 80000178: fff00093 li ra,-1 + 8000017c: 00000113 li sp,0 + 80000180: 00209f33 sll t5,ra,sp + 80000184: fff00e93 li t4,-1 + 80000188: 00700193 li gp,7 + 8000018c: 57df1e63 bne t5,t4,80000708 + +0000000080000190 : + 80000190: fff00093 li ra,-1 + 80000194: 00100113 li sp,1 + 80000198: 00209f33 sll t5,ra,sp + 8000019c: ffe00e93 li t4,-2 + 800001a0: 00800193 li gp,8 + 800001a4: 57df1263 bne t5,t4,80000708 + +00000000800001a8 : + 800001a8: fff00093 li ra,-1 + 800001ac: 00700113 li sp,7 + 800001b0: 00209f33 sll t5,ra,sp + 800001b4: f8000e93 li t4,-128 + 800001b8: 00900193 li gp,9 + 800001bc: 55df1663 bne t5,t4,80000708 + +00000000800001c0 : + 800001c0: fff00093 li ra,-1 + 800001c4: 00e00113 li sp,14 + 800001c8: 00209f33 sll t5,ra,sp + 800001cc: ffffceb7 lui t4,0xffffc + 800001d0: 00a00193 li gp,10 + 800001d4: 53df1a63 bne t5,t4,80000708 + +00000000800001d8 : + 800001d8: fff00093 li ra,-1 + 800001dc: 01f00113 li sp,31 + 800001e0: 00209f33 sll t5,ra,sp + 800001e4: 80000eb7 lui t4,0x80000 + 800001e8: 00b00193 li gp,11 + 800001ec: 51df1e63 bne t5,t4,80000708 + +00000000800001f0 : + 800001f0: 212120b7 lui ra,0x21212 + 800001f4: 1210809b addiw ra,ra,289 + 800001f8: 00000113 li sp,0 + 800001fc: 00209f33 sll t5,ra,sp + 80000200: 21212eb7 lui t4,0x21212 + 80000204: 121e8e9b addiw t4,t4,289 + 80000208: 00c00193 li gp,12 + 8000020c: 4fdf1e63 bne t5,t4,80000708 + +0000000080000210 : + 80000210: 212120b7 lui ra,0x21212 + 80000214: 1210809b addiw ra,ra,289 + 80000218: 00100113 li sp,1 + 8000021c: 00209f33 sll t5,ra,sp + 80000220: 42424eb7 lui t4,0x42424 + 80000224: 242e8e9b addiw t4,t4,578 + 80000228: 00d00193 li gp,13 + 8000022c: 4ddf1e63 bne t5,t4,80000708 + +0000000080000230 : + 80000230: 212120b7 lui ra,0x21212 + 80000234: 1210809b addiw ra,ra,289 + 80000238: 00700113 li sp,7 + 8000023c: 00209f33 sll t5,ra,sp + 80000240: 01091eb7 lui t4,0x1091 + 80000244: 909e8e9b addiw t4,t4,-1783 + 80000248: 00ce9e93 slli t4,t4,0xc + 8000024c: 080e8e93 addi t4,t4,128 # 1091080 <_start-0x7ef6ef80> + 80000250: 00e00193 li gp,14 + 80000254: 4bdf1a63 bne t5,t4,80000708 + +0000000080000258 : + 80000258: 212120b7 lui ra,0x21212 + 8000025c: 1210809b addiw ra,ra,289 + 80000260: 00e00113 li sp,14 + 80000264: 00209f33 sll t5,ra,sp + 80000268: 21212eb7 lui t4,0x21212 + 8000026c: 121e8e9b addiw t4,t4,289 + 80000270: 00ee9e93 slli t4,t4,0xe + 80000274: 00f00193 li gp,15 + 80000278: 49df1863 bne t5,t4,80000708 + +000000008000027c : + 8000027c: 212120b7 lui ra,0x21212 + 80000280: 1210809b addiw ra,ra,289 + 80000284: 01f00113 li sp,31 + 80000288: 00209f33 sll t5,ra,sp + 8000028c: 21212eb7 lui t4,0x21212 + 80000290: 121e8e9b addiw t4,t4,289 + 80000294: 01fe9e93 slli t4,t4,0x1f + 80000298: 01000193 li gp,16 + 8000029c: 47df1663 bne t5,t4,80000708 + +00000000800002a0 : + 800002a0: 212120b7 lui ra,0x21212 + 800002a4: 1210809b addiw ra,ra,289 + 800002a8: fc000113 li sp,-64 + 800002ac: 00209f33 sll t5,ra,sp + 800002b0: 21212eb7 lui t4,0x21212 + 800002b4: 121e8e9b addiw t4,t4,289 + 800002b8: 01100193 li gp,17 + 800002bc: 45df1663 bne t5,t4,80000708 + +00000000800002c0 : + 800002c0: 212120b7 lui ra,0x21212 + 800002c4: 1210809b addiw ra,ra,289 + 800002c8: fc100113 li sp,-63 + 800002cc: 00209f33 sll t5,ra,sp + 800002d0: 42424eb7 lui t4,0x42424 + 800002d4: 242e8e9b addiw t4,t4,578 + 800002d8: 01200193 li gp,18 + 800002dc: 43df1663 bne t5,t4,80000708 + +00000000800002e0 : + 800002e0: 212120b7 lui ra,0x21212 + 800002e4: 1210809b addiw ra,ra,289 + 800002e8: fc700113 li sp,-57 + 800002ec: 00209f33 sll t5,ra,sp + 800002f0: 01091eb7 lui t4,0x1091 + 800002f4: 909e8e9b addiw t4,t4,-1783 + 800002f8: 00ce9e93 slli t4,t4,0xc + 800002fc: 080e8e93 addi t4,t4,128 # 1091080 <_start-0x7ef6ef80> + 80000300: 01300193 li gp,19 + 80000304: 41df1263 bne t5,t4,80000708 + +0000000080000308 : + 80000308: 212120b7 lui ra,0x21212 + 8000030c: 1210809b addiw ra,ra,289 + 80000310: fce00113 li sp,-50 + 80000314: 00209f33 sll t5,ra,sp + 80000318: 21212eb7 lui t4,0x21212 + 8000031c: 121e8e9b addiw t4,t4,289 + 80000320: 00ee9e93 slli t4,t4,0xe + 80000324: 01400193 li gp,20 + 80000328: 3fdf1063 bne t5,t4,80000708 + +000000008000032c : + 8000032c: 212120b7 lui ra,0x21212 + 80000330: 1210809b addiw ra,ra,289 + 80000334: fff00113 li sp,-1 + 80000338: 00209f33 sll t5,ra,sp + 8000033c: fff00e9b addiw t4,zero,-1 + 80000340: 03fe9e93 slli t4,t4,0x3f + 80000344: 01500193 li gp,21 + 80000348: 3ddf1063 bne t5,t4,80000708 + +000000008000034c : + 8000034c: 00100093 li ra,1 + 80000350: 03f00113 li sp,63 + 80000354: 00209f33 sll t5,ra,sp + 80000358: fff00e9b addiw t4,zero,-1 + 8000035c: 03fe9e93 slli t4,t4,0x3f + 80000360: 03200193 li gp,50 + 80000364: 3bdf1263 bne t5,t4,80000708 + +0000000080000368 : + 80000368: fff00093 li ra,-1 + 8000036c: 02700113 li sp,39 + 80000370: 00209f33 sll t5,ra,sp + 80000374: fff00e9b addiw t4,zero,-1 + 80000378: 027e9e93 slli t4,t4,0x27 + 8000037c: 03300193 li gp,51 + 80000380: 39df1463 bne t5,t4,80000708 + +0000000080000384 : + 80000384: 212120b7 lui ra,0x21212 + 80000388: 1210809b addiw ra,ra,289 + 8000038c: 02b00113 li sp,43 + 80000390: 00209f33 sll t5,ra,sp + 80000394: 00012eb7 lui t4,0x12 + 80000398: 121e8e9b addiw t4,t4,289 + 8000039c: 02be9e93 slli t4,t4,0x2b + 800003a0: 03400193 li gp,52 + 800003a4: 37df1263 bne t5,t4,80000708 + +00000000800003a8 : + 800003a8: 00100093 li ra,1 + 800003ac: 00700113 li sp,7 + 800003b0: 002090b3 sll ra,ra,sp + 800003b4: 08000e93 li t4,128 + 800003b8: 01600193 li gp,22 + 800003bc: 35d09663 bne ra,t4,80000708 + +00000000800003c0 : + 800003c0: 00100093 li ra,1 + 800003c4: 00e00113 li sp,14 + 800003c8: 00209133 sll sp,ra,sp + 800003cc: 00004eb7 lui t4,0x4 + 800003d0: 01700193 li gp,23 + 800003d4: 33d11a63 bne sp,t4,80000708 + +00000000800003d8 : + 800003d8: 00300093 li ra,3 + 800003dc: 001090b3 sll ra,ra,ra + 800003e0: 01800e93 li t4,24 + 800003e4: 01800193 li gp,24 + 800003e8: 33d09063 bne ra,t4,80000708 + +00000000800003ec : + 800003ec: 00000213 li tp,0 + 800003f0: 00100093 li ra,1 + 800003f4: 00700113 li sp,7 + 800003f8: 00209f33 sll t5,ra,sp + 800003fc: 000f0313 mv t1,t5 + 80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000404: 00200293 li t0,2 + 80000408: fe5214e3 bne tp,t0,800003f0 + 8000040c: 08000e93 li t4,128 + 80000410: 01900193 li gp,25 + 80000414: 2fd31a63 bne t1,t4,80000708 + +0000000080000418 : + 80000418: 00000213 li tp,0 + 8000041c: 00100093 li ra,1 + 80000420: 00e00113 li sp,14 + 80000424: 00209f33 sll t5,ra,sp + 80000428: 00000013 nop + 8000042c: 000f0313 mv t1,t5 + 80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000434: 00200293 li t0,2 + 80000438: fe5212e3 bne tp,t0,8000041c + 8000043c: 00004eb7 lui t4,0x4 + 80000440: 01a00193 li gp,26 + 80000444: 2dd31263 bne t1,t4,80000708 + +0000000080000448 : + 80000448: 00000213 li tp,0 + 8000044c: 00100093 li ra,1 + 80000450: 01f00113 li sp,31 + 80000454: 00209f33 sll t5,ra,sp + 80000458: 00000013 nop + 8000045c: 00000013 nop + 80000460: 000f0313 mv t1,t5 + 80000464: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000468: 00200293 li t0,2 + 8000046c: fe5210e3 bne tp,t0,8000044c + 80000470: 00100e9b addiw t4,zero,1 + 80000474: 01fe9e93 slli t4,t4,0x1f + 80000478: 01b00193 li gp,27 + 8000047c: 29d31663 bne t1,t4,80000708 + +0000000080000480 : + 80000480: 00000213 li tp,0 + 80000484: 00100093 li ra,1 + 80000488: 00700113 li sp,7 + 8000048c: 00209f33 sll t5,ra,sp + 80000490: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000494: 00200293 li t0,2 + 80000498: fe5216e3 bne tp,t0,80000484 + 8000049c: 08000e93 li t4,128 + 800004a0: 01c00193 li gp,28 + 800004a4: 27df1263 bne t5,t4,80000708 + +00000000800004a8 : + 800004a8: 00000213 li tp,0 + 800004ac: 00100093 li ra,1 + 800004b0: 00e00113 li sp,14 + 800004b4: 00000013 nop + 800004b8: 00209f33 sll t5,ra,sp + 800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004c0: 00200293 li t0,2 + 800004c4: fe5214e3 bne tp,t0,800004ac + 800004c8: 00004eb7 lui t4,0x4 + 800004cc: 01d00193 li gp,29 + 800004d0: 23df1c63 bne t5,t4,80000708 + +00000000800004d4 : + 800004d4: 00000213 li tp,0 + 800004d8: 00100093 li ra,1 + 800004dc: 01f00113 li sp,31 + 800004e0: 00000013 nop + 800004e4: 00000013 nop + 800004e8: 00209f33 sll t5,ra,sp + 800004ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004f0: 00200293 li t0,2 + 800004f4: fe5212e3 bne tp,t0,800004d8 + 800004f8: 00100e9b addiw t4,zero,1 + 800004fc: 01fe9e93 slli t4,t4,0x1f + 80000500: 01e00193 li gp,30 + 80000504: 21df1263 bne t5,t4,80000708 + +0000000080000508 : + 80000508: 00000213 li tp,0 + 8000050c: 00100093 li ra,1 + 80000510: 00000013 nop + 80000514: 00700113 li sp,7 + 80000518: 00209f33 sll t5,ra,sp + 8000051c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000520: 00200293 li t0,2 + 80000524: fe5214e3 bne tp,t0,8000050c + 80000528: 08000e93 li t4,128 + 8000052c: 01f00193 li gp,31 + 80000530: 1ddf1c63 bne t5,t4,80000708 + +0000000080000534 : + 80000534: 00000213 li tp,0 + 80000538: 00100093 li ra,1 + 8000053c: 00000013 nop + 80000540: 00e00113 li sp,14 + 80000544: 00000013 nop + 80000548: 00209f33 sll t5,ra,sp + 8000054c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000550: 00200293 li t0,2 + 80000554: fe5212e3 bne tp,t0,80000538 + 80000558: 00004eb7 lui t4,0x4 + 8000055c: 02000193 li gp,32 + 80000560: 1bdf1463 bne t5,t4,80000708 + +0000000080000564 : + 80000564: 00000213 li tp,0 + 80000568: 00100093 li ra,1 + 8000056c: 00000013 nop + 80000570: 00000013 nop + 80000574: 01f00113 li sp,31 + 80000578: 00209f33 sll t5,ra,sp + 8000057c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000580: 00200293 li t0,2 + 80000584: fe5212e3 bne tp,t0,80000568 + 80000588: 00100e9b addiw t4,zero,1 + 8000058c: 01fe9e93 slli t4,t4,0x1f + 80000590: 02100193 li gp,33 + 80000594: 17df1a63 bne t5,t4,80000708 + +0000000080000598 : + 80000598: 00000213 li tp,0 + 8000059c: 00700113 li sp,7 + 800005a0: 00100093 li ra,1 + 800005a4: 00209f33 sll t5,ra,sp + 800005a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005ac: 00200293 li t0,2 + 800005b0: fe5216e3 bne tp,t0,8000059c + 800005b4: 08000e93 li t4,128 + 800005b8: 02200193 li gp,34 + 800005bc: 15df1663 bne t5,t4,80000708 + +00000000800005c0 : + 800005c0: 00000213 li tp,0 + 800005c4: 00e00113 li sp,14 + 800005c8: 00100093 li ra,1 + 800005cc: 00000013 nop + 800005d0: 00209f33 sll t5,ra,sp + 800005d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005d8: 00200293 li t0,2 + 800005dc: fe5214e3 bne tp,t0,800005c4 + 800005e0: 00004eb7 lui t4,0x4 + 800005e4: 02300193 li gp,35 + 800005e8: 13df1063 bne t5,t4,80000708 + +00000000800005ec : + 800005ec: 00000213 li tp,0 + 800005f0: 01f00113 li sp,31 + 800005f4: 00100093 li ra,1 + 800005f8: 00000013 nop + 800005fc: 00000013 nop + 80000600: 00209f33 sll t5,ra,sp + 80000604: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000608: 00200293 li t0,2 + 8000060c: fe5212e3 bne tp,t0,800005f0 + 80000610: 00100e9b addiw t4,zero,1 + 80000614: 01fe9e93 slli t4,t4,0x1f + 80000618: 02400193 li gp,36 + 8000061c: 0fdf1663 bne t5,t4,80000708 + +0000000080000620 : + 80000620: 00000213 li tp,0 + 80000624: 00700113 li sp,7 + 80000628: 00000013 nop + 8000062c: 00100093 li ra,1 + 80000630: 00209f33 sll t5,ra,sp + 80000634: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000638: 00200293 li t0,2 + 8000063c: fe5214e3 bne tp,t0,80000624 + 80000640: 08000e93 li t4,128 + 80000644: 02500193 li gp,37 + 80000648: 0ddf1063 bne t5,t4,80000708 + +000000008000064c : + 8000064c: 00000213 li tp,0 + 80000650: 00e00113 li sp,14 + 80000654: 00000013 nop + 80000658: 00100093 li ra,1 + 8000065c: 00000013 nop + 80000660: 00209f33 sll t5,ra,sp + 80000664: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000668: 00200293 li t0,2 + 8000066c: fe5212e3 bne tp,t0,80000650 + 80000670: 00004eb7 lui t4,0x4 + 80000674: 02600193 li gp,38 + 80000678: 09df1863 bne t5,t4,80000708 + +000000008000067c : + 8000067c: 00000213 li tp,0 + 80000680: 01f00113 li sp,31 + 80000684: 00000013 nop + 80000688: 00000013 nop + 8000068c: 00100093 li ra,1 + 80000690: 00209f33 sll t5,ra,sp + 80000694: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000698: 00200293 li t0,2 + 8000069c: fe5212e3 bne tp,t0,80000680 + 800006a0: 00100e9b addiw t4,zero,1 + 800006a4: 01fe9e93 slli t4,t4,0x1f + 800006a8: 02700193 li gp,39 + 800006ac: 05df1e63 bne t5,t4,80000708 + +00000000800006b0 : + 800006b0: 00f00093 li ra,15 + 800006b4: 00101133 sll sp,zero,ra + 800006b8: 00000e93 li t4,0 + 800006bc: 02800193 li gp,40 + 800006c0: 05d11463 bne sp,t4,80000708 + +00000000800006c4 : + 800006c4: 02000093 li ra,32 + 800006c8: 00009133 sll sp,ra,zero + 800006cc: 02000e93 li t4,32 + 800006d0: 02900193 li gp,41 + 800006d4: 03d11a63 bne sp,t4,80000708 + +00000000800006d8 : + 800006d8: 000010b3 sll ra,zero,zero + 800006dc: 00000e93 li t4,0 + 800006e0: 02a00193 li gp,42 + 800006e4: 03d09263 bne ra,t4,80000708 + +00000000800006e8 : + 800006e8: 40000093 li ra,1024 + 800006ec: 00001137 lui sp,0x1 + 800006f0: 8001011b addiw sp,sp,-2048 + 800006f4: 00209033 sll zero,ra,sp + 800006f8: 00000e93 li t4,0 + 800006fc: 02b00193 li gp,43 + 80000700: 01d01463 bne zero,t4,80000708 + 80000704: 00301c63 bne zero,gp,8000071c + +0000000080000708 : + 80000708: 0ff0000f fence + 8000070c: 00018063 beqz gp,8000070c + 80000710: 00119193 slli gp,gp,0x1 + 80000714: 0011e193 ori gp,gp,1 + 80000718: 00000073 ecall + +000000008000071c : + 8000071c: 0ff0000f fence + 80000720: 00100193 li gp,1 + 80000724: 00000073 ecall + 80000728: c0001073 unimp + 8000072c: 0000 unimp + 8000072e: 0000 unimp + 80000730: 0000 unimp + 80000732: 0000 unimp + 80000734: 0000 unimp + 80000736: 0000 unimp + 80000738: 0000 unimp + 8000073a: 0000 unimp + 8000073c: 0000 unimp + 8000073e: 0000 unimp + 80000740: 0000 unimp + 80000742: 0000 unimp diff --git a/Tests/isa/rv64ui-p-slli b/Tests/isa/rv64ui-p-slli new file mode 100644 index 0000000..37ccd29 Binary files /dev/null and b/Tests/isa/rv64ui-p-slli differ diff --git a/Tests/isa/rv64ui-p-slli.dump b/Tests/isa/rv64ui-p-slli.dump new file mode 100644 index 0000000..f04acaa --- /dev/null +++ b/Tests/isa/rv64ui-p-slli.dump @@ -0,0 +1,357 @@ + +rv64ui-p-slli: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00100093 li ra,1 + 80000100: 00009f13 slli t5,ra,0x0 + 80000104: 00100e93 li t4,1 + 80000108: 00200193 li gp,2 + 8000010c: 2fdf1463 bne t5,t4,800003f4 + +0000000080000110 : + 80000110: 00100093 li ra,1 + 80000114: 00109f13 slli t5,ra,0x1 + 80000118: 00200e93 li t4,2 + 8000011c: 00300193 li gp,3 + 80000120: 2ddf1a63 bne t5,t4,800003f4 + +0000000080000124 : + 80000124: 00100093 li ra,1 + 80000128: 00709f13 slli t5,ra,0x7 + 8000012c: 08000e93 li t4,128 + 80000130: 00400193 li gp,4 + 80000134: 2ddf1063 bne t5,t4,800003f4 + +0000000080000138 : + 80000138: 00100093 li ra,1 + 8000013c: 00e09f13 slli t5,ra,0xe + 80000140: 00004eb7 lui t4,0x4 + 80000144: 00500193 li gp,5 + 80000148: 2bdf1663 bne t5,t4,800003f4 + +000000008000014c : + 8000014c: 00100093 li ra,1 + 80000150: 01f09f13 slli t5,ra,0x1f + 80000154: 00100e9b addiw t4,zero,1 + 80000158: 01fe9e93 slli t4,t4,0x1f + 8000015c: 00600193 li gp,6 + 80000160: 29df1a63 bne t5,t4,800003f4 + +0000000080000164 : + 80000164: fff00093 li ra,-1 + 80000168: 00009f13 slli t5,ra,0x0 + 8000016c: fff00e93 li t4,-1 + 80000170: 00700193 li gp,7 + 80000174: 29df1063 bne t5,t4,800003f4 + +0000000080000178 : + 80000178: fff00093 li ra,-1 + 8000017c: 00109f13 slli t5,ra,0x1 + 80000180: ffe00e93 li t4,-2 + 80000184: 00800193 li gp,8 + 80000188: 27df1663 bne t5,t4,800003f4 + +000000008000018c : + 8000018c: fff00093 li ra,-1 + 80000190: 00709f13 slli t5,ra,0x7 + 80000194: f8000e93 li t4,-128 + 80000198: 00900193 li gp,9 + 8000019c: 25df1c63 bne t5,t4,800003f4 + +00000000800001a0 : + 800001a0: fff00093 li ra,-1 + 800001a4: 00e09f13 slli t5,ra,0xe + 800001a8: ffffceb7 lui t4,0xffffc + 800001ac: 00a00193 li gp,10 + 800001b0: 25df1263 bne t5,t4,800003f4 + +00000000800001b4 : + 800001b4: fff00093 li ra,-1 + 800001b8: 01f09f13 slli t5,ra,0x1f + 800001bc: 80000eb7 lui t4,0x80000 + 800001c0: 00b00193 li gp,11 + 800001c4: 23df1863 bne t5,t4,800003f4 + +00000000800001c8 : + 800001c8: 212120b7 lui ra,0x21212 + 800001cc: 1210809b addiw ra,ra,289 + 800001d0: 00009f13 slli t5,ra,0x0 + 800001d4: 21212eb7 lui t4,0x21212 + 800001d8: 121e8e9b addiw t4,t4,289 + 800001dc: 00c00193 li gp,12 + 800001e0: 21df1a63 bne t5,t4,800003f4 + +00000000800001e4 : + 800001e4: 212120b7 lui ra,0x21212 + 800001e8: 1210809b addiw ra,ra,289 + 800001ec: 00109f13 slli t5,ra,0x1 + 800001f0: 42424eb7 lui t4,0x42424 + 800001f4: 242e8e9b addiw t4,t4,578 + 800001f8: 00d00193 li gp,13 + 800001fc: 1fdf1c63 bne t5,t4,800003f4 + +0000000080000200 : + 80000200: 212120b7 lui ra,0x21212 + 80000204: 1210809b addiw ra,ra,289 + 80000208: 00709f13 slli t5,ra,0x7 + 8000020c: 01091eb7 lui t4,0x1091 + 80000210: 909e8e9b addiw t4,t4,-1783 + 80000214: 00ce9e93 slli t4,t4,0xc + 80000218: 080e8e93 addi t4,t4,128 # 1091080 <_start-0x7ef6ef80> + 8000021c: 00e00193 li gp,14 + 80000220: 1ddf1a63 bne t5,t4,800003f4 + +0000000080000224 : + 80000224: 212120b7 lui ra,0x21212 + 80000228: 1210809b addiw ra,ra,289 + 8000022c: 00e09f13 slli t5,ra,0xe + 80000230: 21212eb7 lui t4,0x21212 + 80000234: 121e8e9b addiw t4,t4,289 + 80000238: 00ee9e93 slli t4,t4,0xe + 8000023c: 00f00193 li gp,15 + 80000240: 1bdf1a63 bne t5,t4,800003f4 + +0000000080000244 : + 80000244: 212120b7 lui ra,0x21212 + 80000248: 1210809b addiw ra,ra,289 + 8000024c: 01f09f13 slli t5,ra,0x1f + 80000250: 21212eb7 lui t4,0x21212 + 80000254: 121e8e9b addiw t4,t4,289 + 80000258: 01fe9e93 slli t4,t4,0x1f + 8000025c: 01000193 li gp,16 + 80000260: 19df1a63 bne t5,t4,800003f4 + +0000000080000264 : + 80000264: 00100093 li ra,1 + 80000268: 03f09f13 slli t5,ra,0x3f + 8000026c: fff00e9b addiw t4,zero,-1 + 80000270: 03fe9e93 slli t4,t4,0x3f + 80000274: 03200193 li gp,50 + 80000278: 17df1e63 bne t5,t4,800003f4 + +000000008000027c : + 8000027c: fff00093 li ra,-1 + 80000280: 02709f13 slli t5,ra,0x27 + 80000284: fff00e9b addiw t4,zero,-1 + 80000288: 027e9e93 slli t4,t4,0x27 + 8000028c: 03300193 li gp,51 + 80000290: 17df1263 bne t5,t4,800003f4 + +0000000080000294 : + 80000294: 212120b7 lui ra,0x21212 + 80000298: 1210809b addiw ra,ra,289 + 8000029c: 02b09f13 slli t5,ra,0x2b + 800002a0: 00012eb7 lui t4,0x12 + 800002a4: 121e8e9b addiw t4,t4,289 + 800002a8: 02be9e93 slli t4,t4,0x2b + 800002ac: 03400193 li gp,52 + 800002b0: 15df1263 bne t5,t4,800003f4 + +00000000800002b4 : + 800002b4: 00100093 li ra,1 + 800002b8: 00709093 slli ra,ra,0x7 + 800002bc: 08000e93 li t4,128 + 800002c0: 01100193 li gp,17 + 800002c4: 13d09863 bne ra,t4,800003f4 + +00000000800002c8 : + 800002c8: 00000213 li tp,0 + 800002cc: 00100093 li ra,1 + 800002d0: 00709f13 slli t5,ra,0x7 + 800002d4: 000f0313 mv t1,t5 + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5216e3 bne tp,t0,800002cc + 800002e4: 08000e93 li t4,128 + 800002e8: 01200193 li gp,18 + 800002ec: 11d31463 bne t1,t4,800003f4 + +00000000800002f0 : + 800002f0: 00000213 li tp,0 + 800002f4: 00100093 li ra,1 + 800002f8: 00e09f13 slli t5,ra,0xe + 800002fc: 00000013 nop + 80000300: 000f0313 mv t1,t5 + 80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000308: 00200293 li t0,2 + 8000030c: fe5214e3 bne tp,t0,800002f4 + 80000310: 00004eb7 lui t4,0x4 + 80000314: 01300193 li gp,19 + 80000318: 0dd31e63 bne t1,t4,800003f4 + +000000008000031c : + 8000031c: 00000213 li tp,0 + 80000320: 00100093 li ra,1 + 80000324: 01f09f13 slli t5,ra,0x1f + 80000328: 00000013 nop + 8000032c: 00000013 nop + 80000330: 000f0313 mv t1,t5 + 80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000338: 00200293 li t0,2 + 8000033c: fe5212e3 bne tp,t0,80000320 + 80000340: 00100e9b addiw t4,zero,1 + 80000344: 01fe9e93 slli t4,t4,0x1f + 80000348: 01400193 li gp,20 + 8000034c: 0bd31463 bne t1,t4,800003f4 + +0000000080000350 : + 80000350: 00000213 li tp,0 + 80000354: 00100093 li ra,1 + 80000358: 00709f13 slli t5,ra,0x7 + 8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000360: 00200293 li t0,2 + 80000364: fe5218e3 bne tp,t0,80000354 + 80000368: 08000e93 li t4,128 + 8000036c: 01500193 li gp,21 + 80000370: 09df1263 bne t5,t4,800003f4 + +0000000080000374 : + 80000374: 00000213 li tp,0 + 80000378: 00100093 li ra,1 + 8000037c: 00000013 nop + 80000380: 00e09f13 slli t5,ra,0xe + 80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000388: 00200293 li t0,2 + 8000038c: fe5216e3 bne tp,t0,80000378 + 80000390: 00004eb7 lui t4,0x4 + 80000394: 01600193 li gp,22 + 80000398: 05df1e63 bne t5,t4,800003f4 + +000000008000039c : + 8000039c: 00000213 li tp,0 + 800003a0: 00100093 li ra,1 + 800003a4: 00000013 nop + 800003a8: 00000013 nop + 800003ac: 01f09f13 slli t5,ra,0x1f + 800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b4: 00200293 li t0,2 + 800003b8: fe5214e3 bne tp,t0,800003a0 + 800003bc: 00100e9b addiw t4,zero,1 + 800003c0: 01fe9e93 slli t4,t4,0x1f + 800003c4: 01700193 li gp,23 + 800003c8: 03df1663 bne t5,t4,800003f4 + +00000000800003cc : + 800003cc: 01f01093 slli ra,zero,0x1f + 800003d0: 00000e93 li t4,0 + 800003d4: 01800193 li gp,24 + 800003d8: 01d09e63 bne ra,t4,800003f4 + +00000000800003dc : + 800003dc: 02100093 li ra,33 + 800003e0: 01409013 slli zero,ra,0x14 + 800003e4: 00000e93 li t4,0 + 800003e8: 01900193 li gp,25 + 800003ec: 01d01463 bne zero,t4,800003f4 + 800003f0: 00301c63 bne zero,gp,80000408 + +00000000800003f4 : + 800003f4: 0ff0000f fence + 800003f8: 00018063 beqz gp,800003f8 + 800003fc: 00119193 slli gp,gp,0x1 + 80000400: 0011e193 ori gp,gp,1 + 80000404: 00000073 ecall + +0000000080000408 : + 80000408: 0ff0000f fence + 8000040c: 00100193 li gp,1 + 80000410: 00000073 ecall + 80000414: c0001073 unimp + 80000418: 0000 unimp + 8000041a: 0000 unimp + 8000041c: 0000 unimp + 8000041e: 0000 unimp + 80000420: 0000 unimp + 80000422: 0000 unimp + 80000424: 0000 unimp + 80000426: 0000 unimp + 80000428: 0000 unimp + 8000042a: 0000 unimp + 8000042c: 0000 unimp + 8000042e: 0000 unimp + 80000430: 0000 unimp + 80000432: 0000 unimp + 80000434: 0000 unimp + 80000436: 0000 unimp + 80000438: 0000 unimp + 8000043a: 0000 unimp + 8000043c: 0000 unimp + 8000043e: 0000 unimp + 80000440: 0000 unimp + 80000442: 0000 unimp diff --git a/Tests/isa/rv64ui-p-slliw b/Tests/isa/rv64ui-p-slliw new file mode 100644 index 0000000..7e13692 Binary files /dev/null and b/Tests/isa/rv64ui-p-slliw differ diff --git a/Tests/isa/rv64ui-p-slliw.dump b/Tests/isa/rv64ui-p-slliw.dump new file mode 100644 index 0000000..b821b9f --- /dev/null +++ b/Tests/isa/rv64ui-p-slliw.dump @@ -0,0 +1,316 @@ + +rv64ui-p-slliw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00100093 li ra,1 + 80000100: 00009f1b slliw t5,ra,0x0 + 80000104: 00100e93 li t4,1 + 80000108: 00200193 li gp,2 + 8000010c: 27df1a63 bne t5,t4,80000380 + +0000000080000110 : + 80000110: 00100093 li ra,1 + 80000114: 00109f1b slliw t5,ra,0x1 + 80000118: 00200e93 li t4,2 + 8000011c: 00300193 li gp,3 + 80000120: 27df1063 bne t5,t4,80000380 + +0000000080000124 : + 80000124: 00100093 li ra,1 + 80000128: 00709f1b slliw t5,ra,0x7 + 8000012c: 08000e93 li t4,128 + 80000130: 00400193 li gp,4 + 80000134: 25df1663 bne t5,t4,80000380 + +0000000080000138 : + 80000138: 00100093 li ra,1 + 8000013c: 00e09f1b slliw t5,ra,0xe + 80000140: 00004eb7 lui t4,0x4 + 80000144: 00500193 li gp,5 + 80000148: 23df1c63 bne t5,t4,80000380 + +000000008000014c : + 8000014c: 00100093 li ra,1 + 80000150: 01f09f1b slliw t5,ra,0x1f + 80000154: 80000eb7 lui t4,0x80000 + 80000158: 00600193 li gp,6 + 8000015c: 23df1263 bne t5,t4,80000380 + +0000000080000160 : + 80000160: fff00093 li ra,-1 + 80000164: 00009f1b slliw t5,ra,0x0 + 80000168: fff00e93 li t4,-1 + 8000016c: 00700193 li gp,7 + 80000170: 21df1863 bne t5,t4,80000380 + +0000000080000174 : + 80000174: fff00093 li ra,-1 + 80000178: 00109f1b slliw t5,ra,0x1 + 8000017c: ffe00e93 li t4,-2 + 80000180: 00800193 li gp,8 + 80000184: 1fdf1e63 bne t5,t4,80000380 + +0000000080000188 : + 80000188: fff00093 li ra,-1 + 8000018c: 00709f1b slliw t5,ra,0x7 + 80000190: f8000e93 li t4,-128 + 80000194: 00900193 li gp,9 + 80000198: 1fdf1463 bne t5,t4,80000380 + +000000008000019c : + 8000019c: fff00093 li ra,-1 + 800001a0: 00e09f1b slliw t5,ra,0xe + 800001a4: ffffceb7 lui t4,0xffffc + 800001a8: 00a00193 li gp,10 + 800001ac: 1ddf1a63 bne t5,t4,80000380 + +00000000800001b0 : + 800001b0: fff00093 li ra,-1 + 800001b4: 01f09f1b slliw t5,ra,0x1f + 800001b8: 80000eb7 lui t4,0x80000 + 800001bc: 00b00193 li gp,11 + 800001c0: 1ddf1063 bne t5,t4,80000380 + +00000000800001c4 : + 800001c4: 212120b7 lui ra,0x21212 + 800001c8: 1210809b addiw ra,ra,289 + 800001cc: 00009f1b slliw t5,ra,0x0 + 800001d0: 21212eb7 lui t4,0x21212 + 800001d4: 121e8e9b addiw t4,t4,289 + 800001d8: 00c00193 li gp,12 + 800001dc: 1bdf1263 bne t5,t4,80000380 + +00000000800001e0 : + 800001e0: 212120b7 lui ra,0x21212 + 800001e4: 1210809b addiw ra,ra,289 + 800001e8: 00109f1b slliw t5,ra,0x1 + 800001ec: 42424eb7 lui t4,0x42424 + 800001f0: 242e8e9b addiw t4,t4,578 + 800001f4: 00d00193 li gp,13 + 800001f8: 19df1463 bne t5,t4,80000380 + +00000000800001fc : + 800001fc: 212120b7 lui ra,0x21212 + 80000200: 1210809b addiw ra,ra,289 + 80000204: 00709f1b slliw t5,ra,0x7 + 80000208: 90909eb7 lui t4,0x90909 + 8000020c: 080e8e9b addiw t4,t4,128 + 80000210: 00e00193 li gp,14 + 80000214: 17df1663 bne t5,t4,80000380 + +0000000080000218 : + 80000218: 212120b7 lui ra,0x21212 + 8000021c: 1210809b addiw ra,ra,289 + 80000220: 00e09f1b slliw t5,ra,0xe + 80000224: 48484eb7 lui t4,0x48484 + 80000228: 00f00193 li gp,15 + 8000022c: 15df1a63 bne t5,t4,80000380 + +0000000080000230 : + 80000230: 212120b7 lui ra,0x21212 + 80000234: 1210809b addiw ra,ra,289 + 80000238: 01f09f1b slliw t5,ra,0x1f + 8000023c: 80000eb7 lui t4,0x80000 + 80000240: 01000193 li gp,16 + 80000244: 13df1e63 bne t5,t4,80000380 + +0000000080000248 : + 80000248: 00100093 li ra,1 + 8000024c: 0070909b slliw ra,ra,0x7 + 80000250: 08000e93 li t4,128 + 80000254: 01100193 li gp,17 + 80000258: 13d09463 bne ra,t4,80000380 + +000000008000025c : + 8000025c: 00000213 li tp,0 + 80000260: 00100093 li ra,1 + 80000264: 00709f1b slliw t5,ra,0x7 + 80000268: 000f0313 mv t1,t5 + 8000026c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000270: 00200293 li t0,2 + 80000274: fe5216e3 bne tp,t0,80000260 + 80000278: 08000e93 li t4,128 + 8000027c: 01200193 li gp,18 + 80000280: 11d31063 bne t1,t4,80000380 + +0000000080000284 : + 80000284: 00000213 li tp,0 + 80000288: 00100093 li ra,1 + 8000028c: 00e09f1b slliw t5,ra,0xe + 80000290: 00000013 nop + 80000294: 000f0313 mv t1,t5 + 80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000029c: 00200293 li t0,2 + 800002a0: fe5214e3 bne tp,t0,80000288 + 800002a4: 00004eb7 lui t4,0x4 + 800002a8: 01300193 li gp,19 + 800002ac: 0dd31a63 bne t1,t4,80000380 + +00000000800002b0 : + 800002b0: 00000213 li tp,0 + 800002b4: 00100093 li ra,1 + 800002b8: 01f09f1b slliw t5,ra,0x1f + 800002bc: 00000013 nop + 800002c0: 00000013 nop + 800002c4: 000f0313 mv t1,t5 + 800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002cc: 00200293 li t0,2 + 800002d0: fe5212e3 bne tp,t0,800002b4 + 800002d4: 80000eb7 lui t4,0x80000 + 800002d8: 01400193 li gp,20 + 800002dc: 0bd31263 bne t1,t4,80000380 + +00000000800002e0 : + 800002e0: 00000213 li tp,0 + 800002e4: 00100093 li ra,1 + 800002e8: 00709f1b slliw t5,ra,0x7 + 800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f0: 00200293 li t0,2 + 800002f4: fe5218e3 bne tp,t0,800002e4 + 800002f8: 08000e93 li t4,128 + 800002fc: 01500193 li gp,21 + 80000300: 09df1063 bne t5,t4,80000380 + +0000000080000304 : + 80000304: 00000213 li tp,0 + 80000308: 00100093 li ra,1 + 8000030c: 00000013 nop + 80000310: 00e09f1b slliw t5,ra,0xe + 80000314: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000318: 00200293 li t0,2 + 8000031c: fe5216e3 bne tp,t0,80000308 + 80000320: 00004eb7 lui t4,0x4 + 80000324: 01600193 li gp,22 + 80000328: 05df1c63 bne t5,t4,80000380 + +000000008000032c : + 8000032c: 00000213 li tp,0 + 80000330: 00100093 li ra,1 + 80000334: 00000013 nop + 80000338: 00000013 nop + 8000033c: 01f09f1b slliw t5,ra,0x1f + 80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000344: 00200293 li t0,2 + 80000348: fe5214e3 bne tp,t0,80000330 + 8000034c: 80000eb7 lui t4,0x80000 + 80000350: 01700193 li gp,23 + 80000354: 03df1663 bne t5,t4,80000380 + +0000000080000358 : + 80000358: 01f0109b slliw ra,zero,0x1f + 8000035c: 00000e93 li t4,0 + 80000360: 01800193 li gp,24 + 80000364: 01d09e63 bne ra,t4,80000380 + +0000000080000368 : + 80000368: 01f00093 li ra,31 + 8000036c: 01c0901b slliw zero,ra,0x1c + 80000370: 00000e93 li t4,0 + 80000374: 01900193 li gp,25 + 80000378: 01d01463 bne zero,t4,80000380 + 8000037c: 00301c63 bne zero,gp,80000394 + +0000000080000380 : + 80000380: 0ff0000f fence + 80000384: 00018063 beqz gp,80000384 + 80000388: 00119193 slli gp,gp,0x1 + 8000038c: 0011e193 ori gp,gp,1 + 80000390: 00000073 ecall + +0000000080000394 : + 80000394: 0ff0000f fence + 80000398: 00100193 li gp,1 + 8000039c: 00000073 ecall + 800003a0: c0001073 unimp + 800003a4: 0000 unimp + 800003a6: 0000 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sllw b/Tests/isa/rv64ui-p-sllw new file mode 100644 index 0000000..1b3add3 Binary files /dev/null and b/Tests/isa/rv64ui-p-sllw differ diff --git a/Tests/isa/rv64ui-p-sllw.dump b/Tests/isa/rv64ui-p-sllw.dump new file mode 100644 index 0000000..45f030a --- /dev/null +++ b/Tests/isa/rv64ui-p-sllw.dump @@ -0,0 +1,550 @@ + +rv64ui-p-sllw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00100093 li ra,1 + 80000100: 00000113 li sp,0 + 80000104: 00209f3b sllw t5,ra,sp + 80000108: 00100e93 li t4,1 + 8000010c: 00200193 li gp,2 + 80000110: 55df1c63 bne t5,t4,80000668 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 00209f3b sllw t5,ra,sp + 80000120: 00200e93 li t4,2 + 80000124: 00300193 li gp,3 + 80000128: 55df1063 bne t5,t4,80000668 + +000000008000012c : + 8000012c: 00100093 li ra,1 + 80000130: 00700113 li sp,7 + 80000134: 00209f3b sllw t5,ra,sp + 80000138: 08000e93 li t4,128 + 8000013c: 00400193 li gp,4 + 80000140: 53df1463 bne t5,t4,80000668 + +0000000080000144 : + 80000144: 00100093 li ra,1 + 80000148: 00e00113 li sp,14 + 8000014c: 00209f3b sllw t5,ra,sp + 80000150: 00004eb7 lui t4,0x4 + 80000154: 00500193 li gp,5 + 80000158: 51df1863 bne t5,t4,80000668 + +000000008000015c : + 8000015c: 00100093 li ra,1 + 80000160: 01f00113 li sp,31 + 80000164: 00209f3b sllw t5,ra,sp + 80000168: 80000eb7 lui t4,0x80000 + 8000016c: 00600193 li gp,6 + 80000170: 4fdf1c63 bne t5,t4,80000668 + +0000000080000174 : + 80000174: fff00093 li ra,-1 + 80000178: 00000113 li sp,0 + 8000017c: 00209f3b sllw t5,ra,sp + 80000180: fff00e93 li t4,-1 + 80000184: 00700193 li gp,7 + 80000188: 4fdf1063 bne t5,t4,80000668 + +000000008000018c : + 8000018c: fff00093 li ra,-1 + 80000190: 00100113 li sp,1 + 80000194: 00209f3b sllw t5,ra,sp + 80000198: ffe00e93 li t4,-2 + 8000019c: 00800193 li gp,8 + 800001a0: 4ddf1463 bne t5,t4,80000668 + +00000000800001a4 : + 800001a4: fff00093 li ra,-1 + 800001a8: 00700113 li sp,7 + 800001ac: 00209f3b sllw t5,ra,sp + 800001b0: f8000e93 li t4,-128 + 800001b4: 00900193 li gp,9 + 800001b8: 4bdf1863 bne t5,t4,80000668 + +00000000800001bc : + 800001bc: fff00093 li ra,-1 + 800001c0: 00e00113 li sp,14 + 800001c4: 00209f3b sllw t5,ra,sp + 800001c8: ffffceb7 lui t4,0xffffc + 800001cc: 00a00193 li gp,10 + 800001d0: 49df1c63 bne t5,t4,80000668 + +00000000800001d4 : + 800001d4: fff00093 li ra,-1 + 800001d8: 01f00113 li sp,31 + 800001dc: 00209f3b sllw t5,ra,sp + 800001e0: 80000eb7 lui t4,0x80000 + 800001e4: 00b00193 li gp,11 + 800001e8: 49df1063 bne t5,t4,80000668 + +00000000800001ec : + 800001ec: 212120b7 lui ra,0x21212 + 800001f0: 1210809b addiw ra,ra,289 + 800001f4: 00000113 li sp,0 + 800001f8: 00209f3b sllw t5,ra,sp + 800001fc: 21212eb7 lui t4,0x21212 + 80000200: 121e8e9b addiw t4,t4,289 + 80000204: 00c00193 li gp,12 + 80000208: 47df1063 bne t5,t4,80000668 + +000000008000020c : + 8000020c: 212120b7 lui ra,0x21212 + 80000210: 1210809b addiw ra,ra,289 + 80000214: 00100113 li sp,1 + 80000218: 00209f3b sllw t5,ra,sp + 8000021c: 42424eb7 lui t4,0x42424 + 80000220: 242e8e9b addiw t4,t4,578 + 80000224: 00d00193 li gp,13 + 80000228: 45df1063 bne t5,t4,80000668 + +000000008000022c : + 8000022c: 212120b7 lui ra,0x21212 + 80000230: 1210809b addiw ra,ra,289 + 80000234: 00700113 li sp,7 + 80000238: 00209f3b sllw t5,ra,sp + 8000023c: 90909eb7 lui t4,0x90909 + 80000240: 080e8e9b addiw t4,t4,128 + 80000244: 00e00193 li gp,14 + 80000248: 43df1063 bne t5,t4,80000668 + +000000008000024c : + 8000024c: 212120b7 lui ra,0x21212 + 80000250: 1210809b addiw ra,ra,289 + 80000254: 00e00113 li sp,14 + 80000258: 00209f3b sllw t5,ra,sp + 8000025c: 48484eb7 lui t4,0x48484 + 80000260: 00f00193 li gp,15 + 80000264: 41df1263 bne t5,t4,80000668 + +0000000080000268 : + 80000268: 212120b7 lui ra,0x21212 + 8000026c: 1210809b addiw ra,ra,289 + 80000270: 01f00113 li sp,31 + 80000274: 00209f3b sllw t5,ra,sp + 80000278: 80000eb7 lui t4,0x80000 + 8000027c: 01000193 li gp,16 + 80000280: 3fdf1463 bne t5,t4,80000668 + +0000000080000284 : + 80000284: 212120b7 lui ra,0x21212 + 80000288: 1210809b addiw ra,ra,289 + 8000028c: fe000113 li sp,-32 + 80000290: 00209f3b sllw t5,ra,sp + 80000294: 21212eb7 lui t4,0x21212 + 80000298: 121e8e9b addiw t4,t4,289 + 8000029c: 01100193 li gp,17 + 800002a0: 3ddf1463 bne t5,t4,80000668 + +00000000800002a4 : + 800002a4: 212120b7 lui ra,0x21212 + 800002a8: 1210809b addiw ra,ra,289 + 800002ac: fe100113 li sp,-31 + 800002b0: 00209f3b sllw t5,ra,sp + 800002b4: 42424eb7 lui t4,0x42424 + 800002b8: 242e8e9b addiw t4,t4,578 + 800002bc: 01200193 li gp,18 + 800002c0: 3bdf1463 bne t5,t4,80000668 + +00000000800002c4 : + 800002c4: 212120b7 lui ra,0x21212 + 800002c8: 1210809b addiw ra,ra,289 + 800002cc: fe700113 li sp,-25 + 800002d0: 00209f3b sllw t5,ra,sp + 800002d4: 90909eb7 lui t4,0x90909 + 800002d8: 080e8e9b addiw t4,t4,128 + 800002dc: 01300193 li gp,19 + 800002e0: 39df1463 bne t5,t4,80000668 + +00000000800002e4 : + 800002e4: 212120b7 lui ra,0x21212 + 800002e8: 1210809b addiw ra,ra,289 + 800002ec: fee00113 li sp,-18 + 800002f0: 00209f3b sllw t5,ra,sp + 800002f4: 48484eb7 lui t4,0x48484 + 800002f8: 01400193 li gp,20 + 800002fc: 37df1663 bne t5,t4,80000668 + +0000000080000300 : + 80000300: 212120b7 lui ra,0x21212 + 80000304: 1210809b addiw ra,ra,289 + 80000308: fff00113 li sp,-1 + 8000030c: 00209f3b sllw t5,ra,sp + 80000310: 80000eb7 lui t4,0x80000 + 80000314: 01500193 li gp,21 + 80000318: 35df1863 bne t5,t4,80000668 + +000000008000031c : + 8000031c: 00100093 li ra,1 + 80000320: 00700113 li sp,7 + 80000324: 002090bb sllw ra,ra,sp + 80000328: 08000e93 li t4,128 + 8000032c: 01600193 li gp,22 + 80000330: 33d09c63 bne ra,t4,80000668 + +0000000080000334 : + 80000334: 00100093 li ra,1 + 80000338: 00e00113 li sp,14 + 8000033c: 0020913b sllw sp,ra,sp + 80000340: 00004eb7 lui t4,0x4 + 80000344: 01700193 li gp,23 + 80000348: 33d11063 bne sp,t4,80000668 + +000000008000034c : + 8000034c: 00300093 li ra,3 + 80000350: 001090bb sllw ra,ra,ra + 80000354: 01800e93 li t4,24 + 80000358: 01800193 li gp,24 + 8000035c: 31d09663 bne ra,t4,80000668 + +0000000080000360 : + 80000360: 00000213 li tp,0 + 80000364: 00100093 li ra,1 + 80000368: 00700113 li sp,7 + 8000036c: 00209f3b sllw t5,ra,sp + 80000370: 000f0313 mv t1,t5 + 80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000378: 00200293 li t0,2 + 8000037c: fe5214e3 bne tp,t0,80000364 + 80000380: 08000e93 li t4,128 + 80000384: 01900193 li gp,25 + 80000388: 2fd31063 bne t1,t4,80000668 + +000000008000038c : + 8000038c: 00000213 li tp,0 + 80000390: 00100093 li ra,1 + 80000394: 00e00113 li sp,14 + 80000398: 00209f3b sllw t5,ra,sp + 8000039c: 00000013 nop + 800003a0: 000f0313 mv t1,t5 + 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003a8: 00200293 li t0,2 + 800003ac: fe5212e3 bne tp,t0,80000390 + 800003b0: 00004eb7 lui t4,0x4 + 800003b4: 01a00193 li gp,26 + 800003b8: 2bd31863 bne t1,t4,80000668 + +00000000800003bc : + 800003bc: 00000213 li tp,0 + 800003c0: 00100093 li ra,1 + 800003c4: 01f00113 li sp,31 + 800003c8: 00209f3b sllw t5,ra,sp + 800003cc: 00000013 nop + 800003d0: 00000013 nop + 800003d4: 000f0313 mv t1,t5 + 800003d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003dc: 00200293 li t0,2 + 800003e0: fe5210e3 bne tp,t0,800003c0 + 800003e4: 80000eb7 lui t4,0x80000 + 800003e8: 01b00193 li gp,27 + 800003ec: 27d31e63 bne t1,t4,80000668 + +00000000800003f0 : + 800003f0: 00000213 li tp,0 + 800003f4: 00100093 li ra,1 + 800003f8: 00700113 li sp,7 + 800003fc: 00209f3b sllw t5,ra,sp + 80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000404: 00200293 li t0,2 + 80000408: fe5216e3 bne tp,t0,800003f4 + 8000040c: 08000e93 li t4,128 + 80000410: 01c00193 li gp,28 + 80000414: 25df1a63 bne t5,t4,80000668 + +0000000080000418 : + 80000418: 00000213 li tp,0 + 8000041c: 00100093 li ra,1 + 80000420: 00e00113 li sp,14 + 80000424: 00000013 nop + 80000428: 00209f3b sllw t5,ra,sp + 8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000430: 00200293 li t0,2 + 80000434: fe5214e3 bne tp,t0,8000041c + 80000438: 00004eb7 lui t4,0x4 + 8000043c: 01d00193 li gp,29 + 80000440: 23df1463 bne t5,t4,80000668 + +0000000080000444 : + 80000444: 00000213 li tp,0 + 80000448: 00100093 li ra,1 + 8000044c: 01f00113 li sp,31 + 80000450: 00000013 nop + 80000454: 00000013 nop + 80000458: 00209f3b sllw t5,ra,sp + 8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000460: 00200293 li t0,2 + 80000464: fe5212e3 bne tp,t0,80000448 + 80000468: 80000eb7 lui t4,0x80000 + 8000046c: 01e00193 li gp,30 + 80000470: 1fdf1c63 bne t5,t4,80000668 + +0000000080000474 : + 80000474: 00000213 li tp,0 + 80000478: 00100093 li ra,1 + 8000047c: 00000013 nop + 80000480: 00700113 li sp,7 + 80000484: 00209f3b sllw t5,ra,sp + 80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000048c: 00200293 li t0,2 + 80000490: fe5214e3 bne tp,t0,80000478 + 80000494: 08000e93 li t4,128 + 80000498: 01f00193 li gp,31 + 8000049c: 1ddf1663 bne t5,t4,80000668 + +00000000800004a0 : + 800004a0: 00000213 li tp,0 + 800004a4: 00100093 li ra,1 + 800004a8: 00000013 nop + 800004ac: 00e00113 li sp,14 + 800004b0: 00000013 nop + 800004b4: 00209f3b sllw t5,ra,sp + 800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004bc: 00200293 li t0,2 + 800004c0: fe5212e3 bne tp,t0,800004a4 + 800004c4: 00004eb7 lui t4,0x4 + 800004c8: 02000193 li gp,32 + 800004cc: 19df1e63 bne t5,t4,80000668 + +00000000800004d0 : + 800004d0: 00000213 li tp,0 + 800004d4: 00100093 li ra,1 + 800004d8: 00000013 nop + 800004dc: 00000013 nop + 800004e0: 01f00113 li sp,31 + 800004e4: 00209f3b sllw t5,ra,sp + 800004e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004ec: 00200293 li t0,2 + 800004f0: fe5212e3 bne tp,t0,800004d4 + 800004f4: 80000eb7 lui t4,0x80000 + 800004f8: 02100193 li gp,33 + 800004fc: 17df1663 bne t5,t4,80000668 + +0000000080000500 : + 80000500: 00000213 li tp,0 + 80000504: 00700113 li sp,7 + 80000508: 00100093 li ra,1 + 8000050c: 00209f3b sllw t5,ra,sp + 80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000514: 00200293 li t0,2 + 80000518: fe5216e3 bne tp,t0,80000504 + 8000051c: 08000e93 li t4,128 + 80000520: 02200193 li gp,34 + 80000524: 15df1263 bne t5,t4,80000668 + +0000000080000528 : + 80000528: 00000213 li tp,0 + 8000052c: 00e00113 li sp,14 + 80000530: 00100093 li ra,1 + 80000534: 00000013 nop + 80000538: 00209f3b sllw t5,ra,sp + 8000053c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000540: 00200293 li t0,2 + 80000544: fe5214e3 bne tp,t0,8000052c + 80000548: 00004eb7 lui t4,0x4 + 8000054c: 02300193 li gp,35 + 80000550: 11df1c63 bne t5,t4,80000668 + +0000000080000554 : + 80000554: 00000213 li tp,0 + 80000558: 01f00113 li sp,31 + 8000055c: 00100093 li ra,1 + 80000560: 00000013 nop + 80000564: 00000013 nop + 80000568: 00209f3b sllw t5,ra,sp + 8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000570: 00200293 li t0,2 + 80000574: fe5212e3 bne tp,t0,80000558 + 80000578: 80000eb7 lui t4,0x80000 + 8000057c: 02400193 li gp,36 + 80000580: 0fdf1463 bne t5,t4,80000668 + +0000000080000584 : + 80000584: 00000213 li tp,0 + 80000588: 00700113 li sp,7 + 8000058c: 00000013 nop + 80000590: 00100093 li ra,1 + 80000594: 00209f3b sllw t5,ra,sp + 80000598: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000059c: 00200293 li t0,2 + 800005a0: fe5214e3 bne tp,t0,80000588 + 800005a4: 08000e93 li t4,128 + 800005a8: 02500193 li gp,37 + 800005ac: 0bdf1e63 bne t5,t4,80000668 + +00000000800005b0 : + 800005b0: 00000213 li tp,0 + 800005b4: 00e00113 li sp,14 + 800005b8: 00000013 nop + 800005bc: 00100093 li ra,1 + 800005c0: 00000013 nop + 800005c4: 00209f3b sllw t5,ra,sp + 800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005cc: 00200293 li t0,2 + 800005d0: fe5212e3 bne tp,t0,800005b4 + 800005d4: 00004eb7 lui t4,0x4 + 800005d8: 02600193 li gp,38 + 800005dc: 09df1663 bne t5,t4,80000668 + +00000000800005e0 : + 800005e0: 00000213 li tp,0 + 800005e4: 01f00113 li sp,31 + 800005e8: 00000013 nop + 800005ec: 00000013 nop + 800005f0: 00100093 li ra,1 + 800005f4: 00209f3b sllw t5,ra,sp + 800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005fc: 00200293 li t0,2 + 80000600: fe5212e3 bne tp,t0,800005e4 + 80000604: 80000eb7 lui t4,0x80000 + 80000608: 02700193 li gp,39 + 8000060c: 05df1e63 bne t5,t4,80000668 + +0000000080000610 : + 80000610: 00f00093 li ra,15 + 80000614: 0010113b sllw sp,zero,ra + 80000618: 00000e93 li t4,0 + 8000061c: 02800193 li gp,40 + 80000620: 05d11463 bne sp,t4,80000668 + +0000000080000624 : + 80000624: 02000093 li ra,32 + 80000628: 0000913b sllw sp,ra,zero + 8000062c: 02000e93 li t4,32 + 80000630: 02900193 li gp,41 + 80000634: 03d11a63 bne sp,t4,80000668 + +0000000080000638 : + 80000638: 000010bb sllw ra,zero,zero + 8000063c: 00000e93 li t4,0 + 80000640: 02a00193 li gp,42 + 80000644: 03d09263 bne ra,t4,80000668 + +0000000080000648 : + 80000648: 40000093 li ra,1024 + 8000064c: 00001137 lui sp,0x1 + 80000650: 8001011b addiw sp,sp,-2048 + 80000654: 0020903b sllw zero,ra,sp + 80000658: 00000e93 li t4,0 + 8000065c: 02b00193 li gp,43 + 80000660: 01d01463 bne zero,t4,80000668 + 80000664: 00301c63 bne zero,gp,8000067c + +0000000080000668 : + 80000668: 0ff0000f fence + 8000066c: 00018063 beqz gp,8000066c + 80000670: 00119193 slli gp,gp,0x1 + 80000674: 0011e193 ori gp,gp,1 + 80000678: 00000073 ecall + +000000008000067c : + 8000067c: 0ff0000f fence + 80000680: 00100193 li gp,1 + 80000684: 00000073 ecall + 80000688: c0001073 unimp + 8000068c: 0000 unimp + 8000068e: 0000 unimp + 80000690: 0000 unimp + 80000692: 0000 unimp + 80000694: 0000 unimp + 80000696: 0000 unimp + 80000698: 0000 unimp + 8000069a: 0000 unimp + 8000069c: 0000 unimp + 8000069e: 0000 unimp + 800006a0: 0000 unimp + 800006a2: 0000 unimp + 800006a4: 0000 unimp + 800006a6: 0000 unimp + 800006a8: 0000 unimp + 800006aa: 0000 unimp + 800006ac: 0000 unimp + 800006ae: 0000 unimp + 800006b0: 0000 unimp + 800006b2: 0000 unimp + 800006b4: 0000 unimp + 800006b6: 0000 unimp + 800006b8: 0000 unimp + 800006ba: 0000 unimp + 800006bc: 0000 unimp + 800006be: 0000 unimp + 800006c0: 0000 unimp + 800006c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-slt b/Tests/isa/rv64ui-p-slt new file mode 100644 index 0000000..f34ed77 Binary files /dev/null and b/Tests/isa/rv64ui-p-slt differ diff --git a/Tests/isa/rv64ui-p-slt.dump b/Tests/isa/rv64ui-p-slt.dump new file mode 100644 index 0000000..1d5f786 --- /dev/null +++ b/Tests/isa/rv64ui-p-slt.dump @@ -0,0 +1,485 @@ + +rv64ui-p-slt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 0020af33 slt t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 4bdf1a63 bne t5,t4,800005c4 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 0020af33 slt t5,ra,sp + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 49df1e63 bne t5,t4,800005c4 + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 0020af33 slt t5,ra,sp + 80000138: 00100e93 li t4,1 + 8000013c: 00400193 li gp,4 + 80000140: 49df1263 bne t5,t4,800005c4 + +0000000080000144 : + 80000144: 00700093 li ra,7 + 80000148: 00300113 li sp,3 + 8000014c: 0020af33 slt t5,ra,sp + 80000150: 00000e93 li t4,0 + 80000154: 00500193 li gp,5 + 80000158: 47df1663 bne t5,t4,800005c4 + +000000008000015c : + 8000015c: 00000093 li ra,0 + 80000160: ffff8137 lui sp,0xffff8 + 80000164: 0020af33 slt t5,ra,sp + 80000168: 00000e93 li t4,0 + 8000016c: 00600193 li gp,6 + 80000170: 45df1a63 bne t5,t4,800005c4 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: 00000113 li sp,0 + 8000017c: 0020af33 slt t5,ra,sp + 80000180: 00100e93 li t4,1 + 80000184: 00700193 li gp,7 + 80000188: 43df1e63 bne t5,t4,800005c4 + +000000008000018c : + 8000018c: 800000b7 lui ra,0x80000 + 80000190: ffff8137 lui sp,0xffff8 + 80000194: 0020af33 slt t5,ra,sp + 80000198: 00100e93 li t4,1 + 8000019c: 00800193 li gp,8 + 800001a0: 43df1263 bne t5,t4,800005c4 + +00000000800001a4 : + 800001a4: 00000093 li ra,0 + 800001a8: 00008137 lui sp,0x8 + 800001ac: fff1011b addiw sp,sp,-1 + 800001b0: 0020af33 slt t5,ra,sp + 800001b4: 00100e93 li t4,1 + 800001b8: 00900193 li gp,9 + 800001bc: 41df1463 bne t5,t4,800005c4 + +00000000800001c0 : + 800001c0: 800000b7 lui ra,0x80000 + 800001c4: fff0809b addiw ra,ra,-1 + 800001c8: 00000113 li sp,0 + 800001cc: 0020af33 slt t5,ra,sp + 800001d0: 00000e93 li t4,0 + 800001d4: 00a00193 li gp,10 + 800001d8: 3fdf1663 bne t5,t4,800005c4 + +00000000800001dc : + 800001dc: 800000b7 lui ra,0x80000 + 800001e0: fff0809b addiw ra,ra,-1 + 800001e4: 00008137 lui sp,0x8 + 800001e8: fff1011b addiw sp,sp,-1 + 800001ec: 0020af33 slt t5,ra,sp + 800001f0: 00000e93 li t4,0 + 800001f4: 00b00193 li gp,11 + 800001f8: 3ddf1663 bne t5,t4,800005c4 + +00000000800001fc : + 800001fc: 800000b7 lui ra,0x80000 + 80000200: 00008137 lui sp,0x8 + 80000204: fff1011b addiw sp,sp,-1 + 80000208: 0020af33 slt t5,ra,sp + 8000020c: 00100e93 li t4,1 + 80000210: 00c00193 li gp,12 + 80000214: 3bdf1863 bne t5,t4,800005c4 + +0000000080000218 : + 80000218: 800000b7 lui ra,0x80000 + 8000021c: fff0809b addiw ra,ra,-1 + 80000220: ffff8137 lui sp,0xffff8 + 80000224: 0020af33 slt t5,ra,sp + 80000228: 00000e93 li t4,0 + 8000022c: 00d00193 li gp,13 + 80000230: 39df1a63 bne t5,t4,800005c4 + +0000000080000234 : + 80000234: 00000093 li ra,0 + 80000238: fff00113 li sp,-1 + 8000023c: 0020af33 slt t5,ra,sp + 80000240: 00000e93 li t4,0 + 80000244: 00e00193 li gp,14 + 80000248: 37df1e63 bne t5,t4,800005c4 + +000000008000024c : + 8000024c: fff00093 li ra,-1 + 80000250: 00100113 li sp,1 + 80000254: 0020af33 slt t5,ra,sp + 80000258: 00100e93 li t4,1 + 8000025c: 00f00193 li gp,15 + 80000260: 37df1263 bne t5,t4,800005c4 + +0000000080000264 : + 80000264: fff00093 li ra,-1 + 80000268: fff00113 li sp,-1 + 8000026c: 0020af33 slt t5,ra,sp + 80000270: 00000e93 li t4,0 + 80000274: 01000193 li gp,16 + 80000278: 35df1663 bne t5,t4,800005c4 + +000000008000027c : + 8000027c: 00e00093 li ra,14 + 80000280: 00d00113 li sp,13 + 80000284: 0020a0b3 slt ra,ra,sp + 80000288: 00000e93 li t4,0 + 8000028c: 01100193 li gp,17 + 80000290: 33d09a63 bne ra,t4,800005c4 + +0000000080000294 : + 80000294: 00b00093 li ra,11 + 80000298: 00d00113 li sp,13 + 8000029c: 0020a133 slt sp,ra,sp + 800002a0: 00100e93 li t4,1 + 800002a4: 01200193 li gp,18 + 800002a8: 31d11e63 bne sp,t4,800005c4 + +00000000800002ac : + 800002ac: 00d00093 li ra,13 + 800002b0: 0010a0b3 slt ra,ra,ra + 800002b4: 00000e93 li t4,0 + 800002b8: 01300193 li gp,19 + 800002bc: 31d09463 bne ra,t4,800005c4 + +00000000800002c0 : + 800002c0: 00000213 li tp,0 + 800002c4: 00b00093 li ra,11 + 800002c8: 00d00113 li sp,13 + 800002cc: 0020af33 slt t5,ra,sp + 800002d0: 000f0313 mv t1,t5 + 800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d8: 00200293 li t0,2 + 800002dc: fe5214e3 bne tp,t0,800002c4 + 800002e0: 00100e93 li t4,1 + 800002e4: 01400193 li gp,20 + 800002e8: 2dd31e63 bne t1,t4,800005c4 + +00000000800002ec : + 800002ec: 00000213 li tp,0 + 800002f0: 00e00093 li ra,14 + 800002f4: 00d00113 li sp,13 + 800002f8: 0020af33 slt t5,ra,sp + 800002fc: 00000013 nop + 80000300: 000f0313 mv t1,t5 + 80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000308: 00200293 li t0,2 + 8000030c: fe5212e3 bne tp,t0,800002f0 + 80000310: 00000e93 li t4,0 + 80000314: 01500193 li gp,21 + 80000318: 2bd31663 bne t1,t4,800005c4 + +000000008000031c : + 8000031c: 00000213 li tp,0 + 80000320: 00c00093 li ra,12 + 80000324: 00d00113 li sp,13 + 80000328: 0020af33 slt t5,ra,sp + 8000032c: 00000013 nop + 80000330: 00000013 nop + 80000334: 000f0313 mv t1,t5 + 80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000033c: 00200293 li t0,2 + 80000340: fe5210e3 bne tp,t0,80000320 + 80000344: 00100e93 li t4,1 + 80000348: 01600193 li gp,22 + 8000034c: 27d31c63 bne t1,t4,800005c4 + +0000000080000350 : + 80000350: 00000213 li tp,0 + 80000354: 00e00093 li ra,14 + 80000358: 00d00113 li sp,13 + 8000035c: 0020af33 slt t5,ra,sp + 80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000364: 00200293 li t0,2 + 80000368: fe5216e3 bne tp,t0,80000354 + 8000036c: 00000e93 li t4,0 + 80000370: 01700193 li gp,23 + 80000374: 25df1863 bne t5,t4,800005c4 + +0000000080000378 : + 80000378: 00000213 li tp,0 + 8000037c: 00b00093 li ra,11 + 80000380: 00d00113 li sp,13 + 80000384: 00000013 nop + 80000388: 0020af33 slt t5,ra,sp + 8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000390: 00200293 li t0,2 + 80000394: fe5214e3 bne tp,t0,8000037c + 80000398: 00100e93 li t4,1 + 8000039c: 01800193 li gp,24 + 800003a0: 23df1263 bne t5,t4,800005c4 + +00000000800003a4 : + 800003a4: 00000213 li tp,0 + 800003a8: 00f00093 li ra,15 + 800003ac: 00d00113 li sp,13 + 800003b0: 00000013 nop + 800003b4: 00000013 nop + 800003b8: 0020af33 slt t5,ra,sp + 800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c0: 00200293 li t0,2 + 800003c4: fe5212e3 bne tp,t0,800003a8 + 800003c8: 00000e93 li t4,0 + 800003cc: 01900193 li gp,25 + 800003d0: 1fdf1a63 bne t5,t4,800005c4 + +00000000800003d4 : + 800003d4: 00000213 li tp,0 + 800003d8: 00a00093 li ra,10 + 800003dc: 00000013 nop + 800003e0: 00d00113 li sp,13 + 800003e4: 0020af33 slt t5,ra,sp + 800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003ec: 00200293 li t0,2 + 800003f0: fe5214e3 bne tp,t0,800003d8 + 800003f4: 00100e93 li t4,1 + 800003f8: 01a00193 li gp,26 + 800003fc: 1ddf1463 bne t5,t4,800005c4 + +0000000080000400 : + 80000400: 00000213 li tp,0 + 80000404: 01000093 li ra,16 + 80000408: 00000013 nop + 8000040c: 00d00113 li sp,13 + 80000410: 00000013 nop + 80000414: 0020af33 slt t5,ra,sp + 80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000041c: 00200293 li t0,2 + 80000420: fe5212e3 bne tp,t0,80000404 + 80000424: 00000e93 li t4,0 + 80000428: 01b00193 li gp,27 + 8000042c: 19df1c63 bne t5,t4,800005c4 + +0000000080000430 : + 80000430: 00000213 li tp,0 + 80000434: 00900093 li ra,9 + 80000438: 00000013 nop + 8000043c: 00000013 nop + 80000440: 00d00113 li sp,13 + 80000444: 0020af33 slt t5,ra,sp + 80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000044c: 00200293 li t0,2 + 80000450: fe5212e3 bne tp,t0,80000434 + 80000454: 00100e93 li t4,1 + 80000458: 01c00193 li gp,28 + 8000045c: 17df1463 bne t5,t4,800005c4 + +0000000080000460 : + 80000460: 00000213 li tp,0 + 80000464: 00d00113 li sp,13 + 80000468: 01100093 li ra,17 + 8000046c: 0020af33 slt t5,ra,sp + 80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000474: 00200293 li t0,2 + 80000478: fe5216e3 bne tp,t0,80000464 + 8000047c: 00000e93 li t4,0 + 80000480: 01d00193 li gp,29 + 80000484: 15df1063 bne t5,t4,800005c4 + +0000000080000488 : + 80000488: 00000213 li tp,0 + 8000048c: 00d00113 li sp,13 + 80000490: 00800093 li ra,8 + 80000494: 00000013 nop + 80000498: 0020af33 slt t5,ra,sp + 8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004a0: 00200293 li t0,2 + 800004a4: fe5214e3 bne tp,t0,8000048c + 800004a8: 00100e93 li t4,1 + 800004ac: 01e00193 li gp,30 + 800004b0: 11df1a63 bne t5,t4,800005c4 + +00000000800004b4 : + 800004b4: 00000213 li tp,0 + 800004b8: 00d00113 li sp,13 + 800004bc: 01200093 li ra,18 + 800004c0: 00000013 nop + 800004c4: 00000013 nop + 800004c8: 0020af33 slt t5,ra,sp + 800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d0: 00200293 li t0,2 + 800004d4: fe5212e3 bne tp,t0,800004b8 + 800004d8: 00000e93 li t4,0 + 800004dc: 01f00193 li gp,31 + 800004e0: 0fdf1263 bne t5,t4,800005c4 + +00000000800004e4 : + 800004e4: 00000213 li tp,0 + 800004e8: 00d00113 li sp,13 + 800004ec: 00000013 nop + 800004f0: 00700093 li ra,7 + 800004f4: 0020af33 slt t5,ra,sp + 800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004fc: 00200293 li t0,2 + 80000500: fe5214e3 bne tp,t0,800004e8 + 80000504: 00100e93 li t4,1 + 80000508: 02000193 li gp,32 + 8000050c: 0bdf1c63 bne t5,t4,800005c4 + +0000000080000510 : + 80000510: 00000213 li tp,0 + 80000514: 00d00113 li sp,13 + 80000518: 00000013 nop + 8000051c: 01300093 li ra,19 + 80000520: 00000013 nop + 80000524: 0020af33 slt t5,ra,sp + 80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000052c: 00200293 li t0,2 + 80000530: fe5212e3 bne tp,t0,80000514 + 80000534: 00000e93 li t4,0 + 80000538: 02100193 li gp,33 + 8000053c: 09df1463 bne t5,t4,800005c4 + +0000000080000540 : + 80000540: 00000213 li tp,0 + 80000544: 00d00113 li sp,13 + 80000548: 00000013 nop + 8000054c: 00000013 nop + 80000550: 00600093 li ra,6 + 80000554: 0020af33 slt t5,ra,sp + 80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000055c: 00200293 li t0,2 + 80000560: fe5212e3 bne tp,t0,80000544 + 80000564: 00100e93 li t4,1 + 80000568: 02200193 li gp,34 + 8000056c: 05df1c63 bne t5,t4,800005c4 + +0000000080000570 : + 80000570: fff00093 li ra,-1 + 80000574: 00102133 sgtz sp,ra + 80000578: 00000e93 li t4,0 + 8000057c: 02300193 li gp,35 + 80000580: 05d11263 bne sp,t4,800005c4 + +0000000080000584 : + 80000584: fff00093 li ra,-1 + 80000588: 0000a133 sltz sp,ra + 8000058c: 00100e93 li t4,1 + 80000590: 02400193 li gp,36 + 80000594: 03d11863 bne sp,t4,800005c4 + +0000000080000598 : + 80000598: 000020b3 sltz ra,zero + 8000059c: 00000e93 li t4,0 + 800005a0: 02500193 li gp,37 + 800005a4: 03d09063 bne ra,t4,800005c4 + +00000000800005a8 : + 800005a8: 01000093 li ra,16 + 800005ac: 01e00113 li sp,30 + 800005b0: 0020a033 slt zero,ra,sp + 800005b4: 00000e93 li t4,0 + 800005b8: 02600193 li gp,38 + 800005bc: 01d01463 bne zero,t4,800005c4 + 800005c0: 00301c63 bne zero,gp,800005d8 + +00000000800005c4 : + 800005c4: 0ff0000f fence + 800005c8: 00018063 beqz gp,800005c8 + 800005cc: 00119193 slli gp,gp,0x1 + 800005d0: 0011e193 ori gp,gp,1 + 800005d4: 00000073 ecall + +00000000800005d8 : + 800005d8: 0ff0000f fence + 800005dc: 00100193 li gp,1 + 800005e0: 00000073 ecall + 800005e4: c0001073 unimp + 800005e8: 0000 unimp + 800005ea: 0000 unimp + 800005ec: 0000 unimp + 800005ee: 0000 unimp + 800005f0: 0000 unimp + 800005f2: 0000 unimp + 800005f4: 0000 unimp + 800005f6: 0000 unimp + 800005f8: 0000 unimp + 800005fa: 0000 unimp + 800005fc: 0000 unimp + 800005fe: 0000 unimp + 80000600: 0000 unimp + 80000602: 0000 unimp diff --git a/Tests/isa/rv64ui-p-slti b/Tests/isa/rv64ui-p-slti new file mode 100644 index 0000000..b5e6b94 Binary files /dev/null and b/Tests/isa/rv64ui-p-slti differ diff --git a/Tests/isa/rv64ui-p-slti.dump b/Tests/isa/rv64ui-p-slti.dump new file mode 100644 index 0000000..c9ca449 --- /dev/null +++ b/Tests/isa/rv64ui-p-slti.dump @@ -0,0 +1,320 @@ + +rv64ui-p-slti: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 0000af13 slti t5,ra,0 + 80000104: 00000e93 li t4,0 + 80000108: 00200193 li gp,2 + 8000010c: 27df1263 bne t5,t4,80000370 + +0000000080000110 : + 80000110: 00100093 li ra,1 + 80000114: 0010af13 slti t5,ra,1 + 80000118: 00000e93 li t4,0 + 8000011c: 00300193 li gp,3 + 80000120: 25df1863 bne t5,t4,80000370 + +0000000080000124 : + 80000124: 00300093 li ra,3 + 80000128: 0070af13 slti t5,ra,7 + 8000012c: 00100e93 li t4,1 + 80000130: 00400193 li gp,4 + 80000134: 23df1e63 bne t5,t4,80000370 + +0000000080000138 : + 80000138: 00700093 li ra,7 + 8000013c: 0030af13 slti t5,ra,3 + 80000140: 00000e93 li t4,0 + 80000144: 00500193 li gp,5 + 80000148: 23df1463 bne t5,t4,80000370 + +000000008000014c : + 8000014c: 00000093 li ra,0 + 80000150: 8000af13 slti t5,ra,-2048 + 80000154: 00000e93 li t4,0 + 80000158: 00600193 li gp,6 + 8000015c: 21df1a63 bne t5,t4,80000370 + +0000000080000160 : + 80000160: 800000b7 lui ra,0x80000 + 80000164: 0000af13 slti t5,ra,0 + 80000168: 00100e93 li t4,1 + 8000016c: 00700193 li gp,7 + 80000170: 21df1063 bne t5,t4,80000370 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: 8000af13 slti t5,ra,-2048 + 8000017c: 00100e93 li t4,1 + 80000180: 00800193 li gp,8 + 80000184: 1fdf1663 bne t5,t4,80000370 + +0000000080000188 : + 80000188: 00000093 li ra,0 + 8000018c: 7ff0af13 slti t5,ra,2047 + 80000190: 00100e93 li t4,1 + 80000194: 00900193 li gp,9 + 80000198: 1ddf1c63 bne t5,t4,80000370 + +000000008000019c : + 8000019c: 800000b7 lui ra,0x80000 + 800001a0: fff0809b addiw ra,ra,-1 + 800001a4: 0000af13 slti t5,ra,0 + 800001a8: 00000e93 li t4,0 + 800001ac: 00a00193 li gp,10 + 800001b0: 1ddf1063 bne t5,t4,80000370 + +00000000800001b4 : + 800001b4: 800000b7 lui ra,0x80000 + 800001b8: fff0809b addiw ra,ra,-1 + 800001bc: 7ff0af13 slti t5,ra,2047 + 800001c0: 00000e93 li t4,0 + 800001c4: 00b00193 li gp,11 + 800001c8: 1bdf1463 bne t5,t4,80000370 + +00000000800001cc : + 800001cc: 800000b7 lui ra,0x80000 + 800001d0: 7ff0af13 slti t5,ra,2047 + 800001d4: 00100e93 li t4,1 + 800001d8: 00c00193 li gp,12 + 800001dc: 19df1a63 bne t5,t4,80000370 + +00000000800001e0 : + 800001e0: 800000b7 lui ra,0x80000 + 800001e4: fff0809b addiw ra,ra,-1 + 800001e8: 8000af13 slti t5,ra,-2048 + 800001ec: 00000e93 li t4,0 + 800001f0: 00d00193 li gp,13 + 800001f4: 17df1e63 bne t5,t4,80000370 + +00000000800001f8 : + 800001f8: 00000093 li ra,0 + 800001fc: fff0af13 slti t5,ra,-1 + 80000200: 00000e93 li t4,0 + 80000204: 00e00193 li gp,14 + 80000208: 17df1463 bne t5,t4,80000370 + +000000008000020c : + 8000020c: fff00093 li ra,-1 + 80000210: 0010af13 slti t5,ra,1 + 80000214: 00100e93 li t4,1 + 80000218: 00f00193 li gp,15 + 8000021c: 15df1a63 bne t5,t4,80000370 + +0000000080000220 : + 80000220: fff00093 li ra,-1 + 80000224: fff0af13 slti t5,ra,-1 + 80000228: 00000e93 li t4,0 + 8000022c: 01000193 li gp,16 + 80000230: 15df1063 bne t5,t4,80000370 + +0000000080000234 : + 80000234: 00b00093 li ra,11 + 80000238: 00d0a093 slti ra,ra,13 + 8000023c: 00100e93 li t4,1 + 80000240: 01100193 li gp,17 + 80000244: 13d09663 bne ra,t4,80000370 + +0000000080000248 : + 80000248: 00000213 li tp,0 + 8000024c: 00f00093 li ra,15 + 80000250: 00a0af13 slti t5,ra,10 + 80000254: 000f0313 mv t1,t5 + 80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000025c: 00200293 li t0,2 + 80000260: fe5216e3 bne tp,t0,8000024c + 80000264: 00000e93 li t4,0 + 80000268: 01200193 li gp,18 + 8000026c: 11d31263 bne t1,t4,80000370 + +0000000080000270 : + 80000270: 00000213 li tp,0 + 80000274: 00a00093 li ra,10 + 80000278: 0100af13 slti t5,ra,16 + 8000027c: 00000013 nop + 80000280: 000f0313 mv t1,t5 + 80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000288: 00200293 li t0,2 + 8000028c: fe5214e3 bne tp,t0,80000274 + 80000290: 00100e93 li t4,1 + 80000294: 01300193 li gp,19 + 80000298: 0dd31c63 bne t1,t4,80000370 + +000000008000029c : + 8000029c: 00000213 li tp,0 + 800002a0: 01000093 li ra,16 + 800002a4: 0090af13 slti t5,ra,9 + 800002a8: 00000013 nop + 800002ac: 00000013 nop + 800002b0: 000f0313 mv t1,t5 + 800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b8: 00200293 li t0,2 + 800002bc: fe5212e3 bne tp,t0,800002a0 + 800002c0: 00000e93 li t4,0 + 800002c4: 01400193 li gp,20 + 800002c8: 0bd31463 bne t1,t4,80000370 + +00000000800002cc : + 800002cc: 00000213 li tp,0 + 800002d0: 00b00093 li ra,11 + 800002d4: 00f0af13 slti t5,ra,15 + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5218e3 bne tp,t0,800002d0 + 800002e4: 00100e93 li t4,1 + 800002e8: 01500193 li gp,21 + 800002ec: 09df1263 bne t5,t4,80000370 + +00000000800002f0 : + 800002f0: 00000213 li tp,0 + 800002f4: 01100093 li ra,17 + 800002f8: 00000013 nop + 800002fc: 0080af13 slti t5,ra,8 + 80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000304: 00200293 li t0,2 + 80000308: fe5216e3 bne tp,t0,800002f4 + 8000030c: 00000e93 li t4,0 + 80000310: 01600193 li gp,22 + 80000314: 05df1e63 bne t5,t4,80000370 + +0000000080000318 : + 80000318: 00000213 li tp,0 + 8000031c: 00c00093 li ra,12 + 80000320: 00000013 nop + 80000324: 00000013 nop + 80000328: 00e0af13 slti t5,ra,14 + 8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000330: 00200293 li t0,2 + 80000334: fe5214e3 bne tp,t0,8000031c + 80000338: 00100e93 li t4,1 + 8000033c: 01700193 li gp,23 + 80000340: 03df1863 bne t5,t4,80000370 + +0000000080000344 : + 80000344: fff02093 slti ra,zero,-1 + 80000348: 00000e93 li t4,0 + 8000034c: 01800193 li gp,24 + 80000350: 03d09063 bne ra,t4,80000370 + +0000000080000354 : + 80000354: 00ff00b7 lui ra,0xff0 + 80000358: 0ff0809b addiw ra,ra,255 + 8000035c: fff0a013 slti zero,ra,-1 + 80000360: 00000e93 li t4,0 + 80000364: 01900193 li gp,25 + 80000368: 01d01463 bne zero,t4,80000370 + 8000036c: 00301c63 bne zero,gp,80000384 + +0000000080000370 : + 80000370: 0ff0000f fence + 80000374: 00018063 beqz gp,80000374 + 80000378: 00119193 slli gp,gp,0x1 + 8000037c: 0011e193 ori gp,gp,1 + 80000380: 00000073 ecall + +0000000080000384 : + 80000384: 0ff0000f fence + 80000388: 00100193 li gp,1 + 8000038c: 00000073 ecall + 80000390: c0001073 unimp + 80000394: 0000 unimp + 80000396: 0000 unimp + 80000398: 0000 unimp + 8000039a: 0000 unimp + 8000039c: 0000 unimp + 8000039e: 0000 unimp + 800003a0: 0000 unimp + 800003a2: 0000 unimp + 800003a4: 0000 unimp + 800003a6: 0000 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sltiu b/Tests/isa/rv64ui-p-sltiu new file mode 100644 index 0000000..6179a5e Binary files /dev/null and b/Tests/isa/rv64ui-p-sltiu differ diff --git a/Tests/isa/rv64ui-p-sltiu.dump b/Tests/isa/rv64ui-p-sltiu.dump new file mode 100644 index 0000000..45fe6ab --- /dev/null +++ b/Tests/isa/rv64ui-p-sltiu.dump @@ -0,0 +1,320 @@ + +rv64ui-p-sltiu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 0000bf13 sltiu t5,ra,0 + 80000104: 00000e93 li t4,0 + 80000108: 00200193 li gp,2 + 8000010c: 27df1263 bne t5,t4,80000370 + +0000000080000110 : + 80000110: 00100093 li ra,1 + 80000114: 0010bf13 seqz t5,ra + 80000118: 00000e93 li t4,0 + 8000011c: 00300193 li gp,3 + 80000120: 25df1863 bne t5,t4,80000370 + +0000000080000124 : + 80000124: 00300093 li ra,3 + 80000128: 0070bf13 sltiu t5,ra,7 + 8000012c: 00100e93 li t4,1 + 80000130: 00400193 li gp,4 + 80000134: 23df1e63 bne t5,t4,80000370 + +0000000080000138 : + 80000138: 00700093 li ra,7 + 8000013c: 0030bf13 sltiu t5,ra,3 + 80000140: 00000e93 li t4,0 + 80000144: 00500193 li gp,5 + 80000148: 23df1463 bne t5,t4,80000370 + +000000008000014c : + 8000014c: 00000093 li ra,0 + 80000150: 8000bf13 sltiu t5,ra,-2048 + 80000154: 00100e93 li t4,1 + 80000158: 00600193 li gp,6 + 8000015c: 21df1a63 bne t5,t4,80000370 + +0000000080000160 : + 80000160: 800000b7 lui ra,0x80000 + 80000164: 0000bf13 sltiu t5,ra,0 + 80000168: 00000e93 li t4,0 + 8000016c: 00700193 li gp,7 + 80000170: 21df1063 bne t5,t4,80000370 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: 8000bf13 sltiu t5,ra,-2048 + 8000017c: 00100e93 li t4,1 + 80000180: 00800193 li gp,8 + 80000184: 1fdf1663 bne t5,t4,80000370 + +0000000080000188 : + 80000188: 00000093 li ra,0 + 8000018c: 7ff0bf13 sltiu t5,ra,2047 + 80000190: 00100e93 li t4,1 + 80000194: 00900193 li gp,9 + 80000198: 1ddf1c63 bne t5,t4,80000370 + +000000008000019c : + 8000019c: 800000b7 lui ra,0x80000 + 800001a0: fff0809b addiw ra,ra,-1 + 800001a4: 0000bf13 sltiu t5,ra,0 + 800001a8: 00000e93 li t4,0 + 800001ac: 00a00193 li gp,10 + 800001b0: 1ddf1063 bne t5,t4,80000370 + +00000000800001b4 : + 800001b4: 800000b7 lui ra,0x80000 + 800001b8: fff0809b addiw ra,ra,-1 + 800001bc: 7ff0bf13 sltiu t5,ra,2047 + 800001c0: 00000e93 li t4,0 + 800001c4: 00b00193 li gp,11 + 800001c8: 1bdf1463 bne t5,t4,80000370 + +00000000800001cc : + 800001cc: 800000b7 lui ra,0x80000 + 800001d0: 7ff0bf13 sltiu t5,ra,2047 + 800001d4: 00000e93 li t4,0 + 800001d8: 00c00193 li gp,12 + 800001dc: 19df1a63 bne t5,t4,80000370 + +00000000800001e0 : + 800001e0: 800000b7 lui ra,0x80000 + 800001e4: fff0809b addiw ra,ra,-1 + 800001e8: 8000bf13 sltiu t5,ra,-2048 + 800001ec: 00100e93 li t4,1 + 800001f0: 00d00193 li gp,13 + 800001f4: 17df1e63 bne t5,t4,80000370 + +00000000800001f8 : + 800001f8: 00000093 li ra,0 + 800001fc: fff0bf13 sltiu t5,ra,-1 + 80000200: 00100e93 li t4,1 + 80000204: 00e00193 li gp,14 + 80000208: 17df1463 bne t5,t4,80000370 + +000000008000020c : + 8000020c: fff00093 li ra,-1 + 80000210: 0010bf13 seqz t5,ra + 80000214: 00000e93 li t4,0 + 80000218: 00f00193 li gp,15 + 8000021c: 15df1a63 bne t5,t4,80000370 + +0000000080000220 : + 80000220: fff00093 li ra,-1 + 80000224: fff0bf13 sltiu t5,ra,-1 + 80000228: 00000e93 li t4,0 + 8000022c: 01000193 li gp,16 + 80000230: 15df1063 bne t5,t4,80000370 + +0000000080000234 : + 80000234: 00b00093 li ra,11 + 80000238: 00d0b093 sltiu ra,ra,13 + 8000023c: 00100e93 li t4,1 + 80000240: 01100193 li gp,17 + 80000244: 13d09663 bne ra,t4,80000370 + +0000000080000248 : + 80000248: 00000213 li tp,0 + 8000024c: 00f00093 li ra,15 + 80000250: 00a0bf13 sltiu t5,ra,10 + 80000254: 000f0313 mv t1,t5 + 80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000025c: 00200293 li t0,2 + 80000260: fe5216e3 bne tp,t0,8000024c + 80000264: 00000e93 li t4,0 + 80000268: 01200193 li gp,18 + 8000026c: 11d31263 bne t1,t4,80000370 + +0000000080000270 : + 80000270: 00000213 li tp,0 + 80000274: 00a00093 li ra,10 + 80000278: 0100bf13 sltiu t5,ra,16 + 8000027c: 00000013 nop + 80000280: 000f0313 mv t1,t5 + 80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000288: 00200293 li t0,2 + 8000028c: fe5214e3 bne tp,t0,80000274 + 80000290: 00100e93 li t4,1 + 80000294: 01300193 li gp,19 + 80000298: 0dd31c63 bne t1,t4,80000370 + +000000008000029c : + 8000029c: 00000213 li tp,0 + 800002a0: 01000093 li ra,16 + 800002a4: 0090bf13 sltiu t5,ra,9 + 800002a8: 00000013 nop + 800002ac: 00000013 nop + 800002b0: 000f0313 mv t1,t5 + 800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b8: 00200293 li t0,2 + 800002bc: fe5212e3 bne tp,t0,800002a0 + 800002c0: 00000e93 li t4,0 + 800002c4: 01400193 li gp,20 + 800002c8: 0bd31463 bne t1,t4,80000370 + +00000000800002cc : + 800002cc: 00000213 li tp,0 + 800002d0: 00b00093 li ra,11 + 800002d4: 00f0bf13 sltiu t5,ra,15 + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5218e3 bne tp,t0,800002d0 + 800002e4: 00100e93 li t4,1 + 800002e8: 01500193 li gp,21 + 800002ec: 09df1263 bne t5,t4,80000370 + +00000000800002f0 : + 800002f0: 00000213 li tp,0 + 800002f4: 01100093 li ra,17 + 800002f8: 00000013 nop + 800002fc: 0080bf13 sltiu t5,ra,8 + 80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000304: 00200293 li t0,2 + 80000308: fe5216e3 bne tp,t0,800002f4 + 8000030c: 00000e93 li t4,0 + 80000310: 01600193 li gp,22 + 80000314: 05df1e63 bne t5,t4,80000370 + +0000000080000318 : + 80000318: 00000213 li tp,0 + 8000031c: 00c00093 li ra,12 + 80000320: 00000013 nop + 80000324: 00000013 nop + 80000328: 00e0bf13 sltiu t5,ra,14 + 8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000330: 00200293 li t0,2 + 80000334: fe5214e3 bne tp,t0,8000031c + 80000338: 00100e93 li t4,1 + 8000033c: 01700193 li gp,23 + 80000340: 03df1863 bne t5,t4,80000370 + +0000000080000344 : + 80000344: fff03093 sltiu ra,zero,-1 + 80000348: 00100e93 li t4,1 + 8000034c: 01800193 li gp,24 + 80000350: 03d09063 bne ra,t4,80000370 + +0000000080000354 : + 80000354: 00ff00b7 lui ra,0xff0 + 80000358: 0ff0809b addiw ra,ra,255 + 8000035c: fff0b013 sltiu zero,ra,-1 + 80000360: 00000e93 li t4,0 + 80000364: 01900193 li gp,25 + 80000368: 01d01463 bne zero,t4,80000370 + 8000036c: 00301c63 bne zero,gp,80000384 + +0000000080000370 : + 80000370: 0ff0000f fence + 80000374: 00018063 beqz gp,80000374 + 80000378: 00119193 slli gp,gp,0x1 + 8000037c: 0011e193 ori gp,gp,1 + 80000380: 00000073 ecall + +0000000080000384 : + 80000384: 0ff0000f fence + 80000388: 00100193 li gp,1 + 8000038c: 00000073 ecall + 80000390: c0001073 unimp + 80000394: 0000 unimp + 80000396: 0000 unimp + 80000398: 0000 unimp + 8000039a: 0000 unimp + 8000039c: 0000 unimp + 8000039e: 0000 unimp + 800003a0: 0000 unimp + 800003a2: 0000 unimp + 800003a4: 0000 unimp + 800003a6: 0000 unimp + 800003a8: 0000 unimp + 800003aa: 0000 unimp + 800003ac: 0000 unimp + 800003ae: 0000 unimp + 800003b0: 0000 unimp + 800003b2: 0000 unimp + 800003b4: 0000 unimp + 800003b6: 0000 unimp + 800003b8: 0000 unimp + 800003ba: 0000 unimp + 800003bc: 0000 unimp + 800003be: 0000 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sltu b/Tests/isa/rv64ui-p-sltu new file mode 100644 index 0000000..de61bd9 Binary files /dev/null and b/Tests/isa/rv64ui-p-sltu differ diff --git a/Tests/isa/rv64ui-p-sltu.dump b/Tests/isa/rv64ui-p-sltu.dump new file mode 100644 index 0000000..4b1cd23 --- /dev/null +++ b/Tests/isa/rv64ui-p-sltu.dump @@ -0,0 +1,500 @@ + +rv64ui-p-sltu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 0020bf33 sltu t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 4fdf1c63 bne t5,t4,80000608 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 0020bf33 sltu t5,ra,sp + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 4fdf1063 bne t5,t4,80000608 + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 0020bf33 sltu t5,ra,sp + 80000138: 00100e93 li t4,1 + 8000013c: 00400193 li gp,4 + 80000140: 4ddf1463 bne t5,t4,80000608 + +0000000080000144 : + 80000144: 00700093 li ra,7 + 80000148: 00300113 li sp,3 + 8000014c: 0020bf33 sltu t5,ra,sp + 80000150: 00000e93 li t4,0 + 80000154: 00500193 li gp,5 + 80000158: 4bdf1863 bne t5,t4,80000608 + +000000008000015c : + 8000015c: 00000093 li ra,0 + 80000160: 00020137 lui sp,0x20 + 80000164: fff1011b addiw sp,sp,-1 + 80000168: 00f11113 slli sp,sp,0xf + 8000016c: 0020bf33 sltu t5,ra,sp + 80000170: 00100e93 li t4,1 + 80000174: 00600193 li gp,6 + 80000178: 49df1863 bne t5,t4,80000608 + +000000008000017c : + 8000017c: 0010009b addiw ra,zero,1 + 80000180: 01f09093 slli ra,ra,0x1f + 80000184: 00000113 li sp,0 + 80000188: 0020bf33 sltu t5,ra,sp + 8000018c: 00000e93 li t4,0 + 80000190: 00700193 li gp,7 + 80000194: 47df1a63 bne t5,t4,80000608 + +0000000080000198 : + 80000198: 0010009b addiw ra,zero,1 + 8000019c: 01f09093 slli ra,ra,0x1f + 800001a0: 00020137 lui sp,0x20 + 800001a4: fff1011b addiw sp,sp,-1 + 800001a8: 00f11113 slli sp,sp,0xf + 800001ac: 0020bf33 sltu t5,ra,sp + 800001b0: 00100e93 li t4,1 + 800001b4: 00800193 li gp,8 + 800001b8: 45df1863 bne t5,t4,80000608 + +00000000800001bc : + 800001bc: 00000093 li ra,0 + 800001c0: 00008137 lui sp,0x8 + 800001c4: fff1011b addiw sp,sp,-1 + 800001c8: 0020bf33 sltu t5,ra,sp + 800001cc: 00100e93 li t4,1 + 800001d0: 00900193 li gp,9 + 800001d4: 43df1a63 bne t5,t4,80000608 + +00000000800001d8 : + 800001d8: 800000b7 lui ra,0x80000 + 800001dc: fff0809b addiw ra,ra,-1 + 800001e0: 00000113 li sp,0 + 800001e4: 0020bf33 sltu t5,ra,sp + 800001e8: 00000e93 li t4,0 + 800001ec: 00a00193 li gp,10 + 800001f0: 41df1c63 bne t5,t4,80000608 + +00000000800001f4 : + 800001f4: 800000b7 lui ra,0x80000 + 800001f8: fff0809b addiw ra,ra,-1 + 800001fc: 00008137 lui sp,0x8 + 80000200: fff1011b addiw sp,sp,-1 + 80000204: 0020bf33 sltu t5,ra,sp + 80000208: 00000e93 li t4,0 + 8000020c: 00b00193 li gp,11 + 80000210: 3fdf1c63 bne t5,t4,80000608 + +0000000080000214 : + 80000214: 0010009b addiw ra,zero,1 + 80000218: 01f09093 slli ra,ra,0x1f + 8000021c: 00008137 lui sp,0x8 + 80000220: fff1011b addiw sp,sp,-1 + 80000224: 0020bf33 sltu t5,ra,sp + 80000228: 00000e93 li t4,0 + 8000022c: 00c00193 li gp,12 + 80000230: 3ddf1c63 bne t5,t4,80000608 + +0000000080000234 : + 80000234: 800000b7 lui ra,0x80000 + 80000238: fff0809b addiw ra,ra,-1 + 8000023c: 00020137 lui sp,0x20 + 80000240: fff1011b addiw sp,sp,-1 + 80000244: 00f11113 slli sp,sp,0xf + 80000248: 0020bf33 sltu t5,ra,sp + 8000024c: 00100e93 li t4,1 + 80000250: 00d00193 li gp,13 + 80000254: 3bdf1a63 bne t5,t4,80000608 + +0000000080000258 : + 80000258: 00000093 li ra,0 + 8000025c: 0010011b addiw sp,zero,1 + 80000260: 02011113 slli sp,sp,0x20 + 80000264: fff10113 addi sp,sp,-1 # 1ffff <_start-0x7ffe0001> + 80000268: 0020bf33 sltu t5,ra,sp + 8000026c: 00100e93 li t4,1 + 80000270: 00e00193 li gp,14 + 80000274: 39df1a63 bne t5,t4,80000608 + +0000000080000278 : + 80000278: 0010009b addiw ra,zero,1 + 8000027c: 02009093 slli ra,ra,0x20 + 80000280: fff08093 addi ra,ra,-1 # ffffffff7fffffff <_end+0xfffffffeffffdfff> + 80000284: 00100113 li sp,1 + 80000288: 0020bf33 sltu t5,ra,sp + 8000028c: 00000e93 li t4,0 + 80000290: 00f00193 li gp,15 + 80000294: 37df1a63 bne t5,t4,80000608 + +0000000080000298 : + 80000298: 0010009b addiw ra,zero,1 + 8000029c: 02009093 slli ra,ra,0x20 + 800002a0: fff08093 addi ra,ra,-1 + 800002a4: 0010011b addiw sp,zero,1 + 800002a8: 02011113 slli sp,sp,0x20 + 800002ac: fff10113 addi sp,sp,-1 + 800002b0: 0020bf33 sltu t5,ra,sp + 800002b4: 00000e93 li t4,0 + 800002b8: 01000193 li gp,16 + 800002bc: 35df1663 bne t5,t4,80000608 + +00000000800002c0 : + 800002c0: 00e00093 li ra,14 + 800002c4: 00d00113 li sp,13 + 800002c8: 0020b0b3 sltu ra,ra,sp + 800002cc: 00000e93 li t4,0 + 800002d0: 01100193 li gp,17 + 800002d4: 33d09a63 bne ra,t4,80000608 + +00000000800002d8 : + 800002d8: 00b00093 li ra,11 + 800002dc: 00d00113 li sp,13 + 800002e0: 0020b133 sltu sp,ra,sp + 800002e4: 00100e93 li t4,1 + 800002e8: 01200193 li gp,18 + 800002ec: 31d11e63 bne sp,t4,80000608 + +00000000800002f0 : + 800002f0: 00d00093 li ra,13 + 800002f4: 0010b0b3 sltu ra,ra,ra + 800002f8: 00000e93 li t4,0 + 800002fc: 01300193 li gp,19 + 80000300: 31d09463 bne ra,t4,80000608 + +0000000080000304 : + 80000304: 00000213 li tp,0 + 80000308: 00b00093 li ra,11 + 8000030c: 00d00113 li sp,13 + 80000310: 0020bf33 sltu t5,ra,sp + 80000314: 000f0313 mv t1,t5 + 80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000031c: 00200293 li t0,2 + 80000320: fe5214e3 bne tp,t0,80000308 + 80000324: 00100e93 li t4,1 + 80000328: 01400193 li gp,20 + 8000032c: 2dd31e63 bne t1,t4,80000608 + +0000000080000330 : + 80000330: 00000213 li tp,0 + 80000334: 00e00093 li ra,14 + 80000338: 00d00113 li sp,13 + 8000033c: 0020bf33 sltu t5,ra,sp + 80000340: 00000013 nop + 80000344: 000f0313 mv t1,t5 + 80000348: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000034c: 00200293 li t0,2 + 80000350: fe5212e3 bne tp,t0,80000334 + 80000354: 00000e93 li t4,0 + 80000358: 01500193 li gp,21 + 8000035c: 2bd31663 bne t1,t4,80000608 + +0000000080000360 : + 80000360: 00000213 li tp,0 + 80000364: 00c00093 li ra,12 + 80000368: 00d00113 li sp,13 + 8000036c: 0020bf33 sltu t5,ra,sp + 80000370: 00000013 nop + 80000374: 00000013 nop + 80000378: 000f0313 mv t1,t5 + 8000037c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000380: 00200293 li t0,2 + 80000384: fe5210e3 bne tp,t0,80000364 + 80000388: 00100e93 li t4,1 + 8000038c: 01600193 li gp,22 + 80000390: 27d31c63 bne t1,t4,80000608 + +0000000080000394 : + 80000394: 00000213 li tp,0 + 80000398: 00e00093 li ra,14 + 8000039c: 00d00113 li sp,13 + 800003a0: 0020bf33 sltu t5,ra,sp + 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003a8: 00200293 li t0,2 + 800003ac: fe5216e3 bne tp,t0,80000398 + 800003b0: 00000e93 li t4,0 + 800003b4: 01700193 li gp,23 + 800003b8: 25df1863 bne t5,t4,80000608 + +00000000800003bc : + 800003bc: 00000213 li tp,0 + 800003c0: 00b00093 li ra,11 + 800003c4: 00d00113 li sp,13 + 800003c8: 00000013 nop + 800003cc: 0020bf33 sltu t5,ra,sp + 800003d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003d4: 00200293 li t0,2 + 800003d8: fe5214e3 bne tp,t0,800003c0 + 800003dc: 00100e93 li t4,1 + 800003e0: 01800193 li gp,24 + 800003e4: 23df1263 bne t5,t4,80000608 + +00000000800003e8 : + 800003e8: 00000213 li tp,0 + 800003ec: 00f00093 li ra,15 + 800003f0: 00d00113 li sp,13 + 800003f4: 00000013 nop + 800003f8: 00000013 nop + 800003fc: 0020bf33 sltu t5,ra,sp + 80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000404: 00200293 li t0,2 + 80000408: fe5212e3 bne tp,t0,800003ec + 8000040c: 00000e93 li t4,0 + 80000410: 01900193 li gp,25 + 80000414: 1fdf1a63 bne t5,t4,80000608 + +0000000080000418 : + 80000418: 00000213 li tp,0 + 8000041c: 00a00093 li ra,10 + 80000420: 00000013 nop + 80000424: 00d00113 li sp,13 + 80000428: 0020bf33 sltu t5,ra,sp + 8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000430: 00200293 li t0,2 + 80000434: fe5214e3 bne tp,t0,8000041c + 80000438: 00100e93 li t4,1 + 8000043c: 01a00193 li gp,26 + 80000440: 1ddf1463 bne t5,t4,80000608 + +0000000080000444 : + 80000444: 00000213 li tp,0 + 80000448: 01000093 li ra,16 + 8000044c: 00000013 nop + 80000450: 00d00113 li sp,13 + 80000454: 00000013 nop + 80000458: 0020bf33 sltu t5,ra,sp + 8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000460: 00200293 li t0,2 + 80000464: fe5212e3 bne tp,t0,80000448 + 80000468: 00000e93 li t4,0 + 8000046c: 01b00193 li gp,27 + 80000470: 19df1c63 bne t5,t4,80000608 + +0000000080000474 : + 80000474: 00000213 li tp,0 + 80000478: 00900093 li ra,9 + 8000047c: 00000013 nop + 80000480: 00000013 nop + 80000484: 00d00113 li sp,13 + 80000488: 0020bf33 sltu t5,ra,sp + 8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000490: 00200293 li t0,2 + 80000494: fe5212e3 bne tp,t0,80000478 + 80000498: 00100e93 li t4,1 + 8000049c: 01c00193 li gp,28 + 800004a0: 17df1463 bne t5,t4,80000608 + +00000000800004a4 : + 800004a4: 00000213 li tp,0 + 800004a8: 00d00113 li sp,13 + 800004ac: 01100093 li ra,17 + 800004b0: 0020bf33 sltu t5,ra,sp + 800004b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004b8: 00200293 li t0,2 + 800004bc: fe5216e3 bne tp,t0,800004a8 + 800004c0: 00000e93 li t4,0 + 800004c4: 01d00193 li gp,29 + 800004c8: 15df1063 bne t5,t4,80000608 + +00000000800004cc : + 800004cc: 00000213 li tp,0 + 800004d0: 00d00113 li sp,13 + 800004d4: 00800093 li ra,8 + 800004d8: 00000013 nop + 800004dc: 0020bf33 sltu t5,ra,sp + 800004e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004e4: 00200293 li t0,2 + 800004e8: fe5214e3 bne tp,t0,800004d0 + 800004ec: 00100e93 li t4,1 + 800004f0: 01e00193 li gp,30 + 800004f4: 11df1a63 bne t5,t4,80000608 + +00000000800004f8 : + 800004f8: 00000213 li tp,0 + 800004fc: 00d00113 li sp,13 + 80000500: 01200093 li ra,18 + 80000504: 00000013 nop + 80000508: 00000013 nop + 8000050c: 0020bf33 sltu t5,ra,sp + 80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000514: 00200293 li t0,2 + 80000518: fe5212e3 bne tp,t0,800004fc + 8000051c: 00000e93 li t4,0 + 80000520: 01f00193 li gp,31 + 80000524: 0fdf1263 bne t5,t4,80000608 + +0000000080000528 : + 80000528: 00000213 li tp,0 + 8000052c: 00d00113 li sp,13 + 80000530: 00000013 nop + 80000534: 00700093 li ra,7 + 80000538: 0020bf33 sltu t5,ra,sp + 8000053c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000540: 00200293 li t0,2 + 80000544: fe5214e3 bne tp,t0,8000052c + 80000548: 00100e93 li t4,1 + 8000054c: 02000193 li gp,32 + 80000550: 0bdf1c63 bne t5,t4,80000608 + +0000000080000554 : + 80000554: 00000213 li tp,0 + 80000558: 00d00113 li sp,13 + 8000055c: 00000013 nop + 80000560: 01300093 li ra,19 + 80000564: 00000013 nop + 80000568: 0020bf33 sltu t5,ra,sp + 8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000570: 00200293 li t0,2 + 80000574: fe5212e3 bne tp,t0,80000558 + 80000578: 00000e93 li t4,0 + 8000057c: 02100193 li gp,33 + 80000580: 09df1463 bne t5,t4,80000608 + +0000000080000584 : + 80000584: 00000213 li tp,0 + 80000588: 00d00113 li sp,13 + 8000058c: 00000013 nop + 80000590: 00000013 nop + 80000594: 00600093 li ra,6 + 80000598: 0020bf33 sltu t5,ra,sp + 8000059c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005a0: 00200293 li t0,2 + 800005a4: fe5212e3 bne tp,t0,80000588 + 800005a8: 00100e93 li t4,1 + 800005ac: 02200193 li gp,34 + 800005b0: 05df1c63 bne t5,t4,80000608 + +00000000800005b4 : + 800005b4: fff00093 li ra,-1 + 800005b8: 00103133 snez sp,ra + 800005bc: 00100e93 li t4,1 + 800005c0: 02300193 li gp,35 + 800005c4: 05d11263 bne sp,t4,80000608 + +00000000800005c8 : + 800005c8: fff00093 li ra,-1 + 800005cc: 0000b133 sltu sp,ra,zero + 800005d0: 00000e93 li t4,0 + 800005d4: 02400193 li gp,36 + 800005d8: 03d11863 bne sp,t4,80000608 + +00000000800005dc : + 800005dc: 000030b3 snez ra,zero + 800005e0: 00000e93 li t4,0 + 800005e4: 02500193 li gp,37 + 800005e8: 03d09063 bne ra,t4,80000608 + +00000000800005ec : + 800005ec: 01000093 li ra,16 + 800005f0: 01e00113 li sp,30 + 800005f4: 0020b033 sltu zero,ra,sp + 800005f8: 00000e93 li t4,0 + 800005fc: 02600193 li gp,38 + 80000600: 01d01463 bne zero,t4,80000608 + 80000604: 00301c63 bne zero,gp,8000061c + +0000000080000608 : + 80000608: 0ff0000f fence + 8000060c: 00018063 beqz gp,8000060c + 80000610: 00119193 slli gp,gp,0x1 + 80000614: 0011e193 ori gp,gp,1 + 80000618: 00000073 ecall + +000000008000061c : + 8000061c: 0ff0000f fence + 80000620: 00100193 li gp,1 + 80000624: 00000073 ecall + 80000628: c0001073 unimp + 8000062c: 0000 unimp + 8000062e: 0000 unimp + 80000630: 0000 unimp + 80000632: 0000 unimp + 80000634: 0000 unimp + 80000636: 0000 unimp + 80000638: 0000 unimp + 8000063a: 0000 unimp + 8000063c: 0000 unimp + 8000063e: 0000 unimp + 80000640: 0000 unimp + 80000642: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sra b/Tests/isa/rv64ui-p-sra new file mode 100644 index 0000000..585f8f7 Binary files /dev/null and b/Tests/isa/rv64ui-p-sra differ diff --git a/Tests/isa/rv64ui-p-sra.dump b/Tests/isa/rv64ui-p-sra.dump new file mode 100644 index 0000000..4b5e4ed --- /dev/null +++ b/Tests/isa/rv64ui-p-sra.dump @@ -0,0 +1,538 @@ + +rv64ui-p-sra: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 800000b7 lui ra,0x80000 + 80000100: 00000113 li sp,0 + 80000104: 4020df33 sra t5,ra,sp + 80000108: 80000eb7 lui t4,0x80000 + 8000010c: 00200193 li gp,2 + 80000110: 59df1463 bne t5,t4,80000698 + +0000000080000114 : + 80000114: 800000b7 lui ra,0x80000 + 80000118: 00100113 li sp,1 + 8000011c: 4020df33 sra t5,ra,sp + 80000120: c0000eb7 lui t4,0xc0000 + 80000124: 00300193 li gp,3 + 80000128: 57df1863 bne t5,t4,80000698 + +000000008000012c : + 8000012c: 800000b7 lui ra,0x80000 + 80000130: 00700113 li sp,7 + 80000134: 4020df33 sra t5,ra,sp + 80000138: ff000eb7 lui t4,0xff000 + 8000013c: 00400193 li gp,4 + 80000140: 55df1c63 bne t5,t4,80000698 + +0000000080000144 : + 80000144: 800000b7 lui ra,0x80000 + 80000148: 00e00113 li sp,14 + 8000014c: 4020df33 sra t5,ra,sp + 80000150: fffe0eb7 lui t4,0xfffe0 + 80000154: 00500193 li gp,5 + 80000158: 55df1063 bne t5,t4,80000698 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 0010809b addiw ra,ra,1 + 80000164: 01f00113 li sp,31 + 80000168: 4020df33 sra t5,ra,sp + 8000016c: fff00e93 li t4,-1 + 80000170: 00600193 li gp,6 + 80000174: 53df1263 bne t5,t4,80000698 + +0000000080000178 : + 80000178: 800000b7 lui ra,0x80000 + 8000017c: fff0809b addiw ra,ra,-1 + 80000180: 00000113 li sp,0 + 80000184: 4020df33 sra t5,ra,sp + 80000188: 80000eb7 lui t4,0x80000 + 8000018c: fffe8e9b addiw t4,t4,-1 + 80000190: 00700193 li gp,7 + 80000194: 51df1263 bne t5,t4,80000698 + +0000000080000198 : + 80000198: 800000b7 lui ra,0x80000 + 8000019c: fff0809b addiw ra,ra,-1 + 800001a0: 00100113 li sp,1 + 800001a4: 4020df33 sra t5,ra,sp + 800001a8: 40000eb7 lui t4,0x40000 + 800001ac: fffe8e9b addiw t4,t4,-1 + 800001b0: 00800193 li gp,8 + 800001b4: 4fdf1263 bne t5,t4,80000698 + +00000000800001b8 : + 800001b8: 800000b7 lui ra,0x80000 + 800001bc: fff0809b addiw ra,ra,-1 + 800001c0: 00700113 li sp,7 + 800001c4: 4020df33 sra t5,ra,sp + 800001c8: 01000eb7 lui t4,0x1000 + 800001cc: fffe8e9b addiw t4,t4,-1 + 800001d0: 00900193 li gp,9 + 800001d4: 4ddf1263 bne t5,t4,80000698 + +00000000800001d8 : + 800001d8: 800000b7 lui ra,0x80000 + 800001dc: fff0809b addiw ra,ra,-1 + 800001e0: 00e00113 li sp,14 + 800001e4: 4020df33 sra t5,ra,sp + 800001e8: 00020eb7 lui t4,0x20 + 800001ec: fffe8e9b addiw t4,t4,-1 + 800001f0: 00a00193 li gp,10 + 800001f4: 4bdf1263 bne t5,t4,80000698 + +00000000800001f8 : + 800001f8: 800000b7 lui ra,0x80000 + 800001fc: fff0809b addiw ra,ra,-1 + 80000200: 01f00113 li sp,31 + 80000204: 4020df33 sra t5,ra,sp + 80000208: 00000e93 li t4,0 + 8000020c: 00b00193 li gp,11 + 80000210: 49df1463 bne t5,t4,80000698 + +0000000080000214 : + 80000214: 818180b7 lui ra,0x81818 + 80000218: 1810809b addiw ra,ra,385 + 8000021c: 00000113 li sp,0 + 80000220: 4020df33 sra t5,ra,sp + 80000224: 81818eb7 lui t4,0x81818 + 80000228: 181e8e9b addiw t4,t4,385 + 8000022c: 00c00193 li gp,12 + 80000230: 47df1463 bne t5,t4,80000698 + +0000000080000234 : + 80000234: 818180b7 lui ra,0x81818 + 80000238: 1810809b addiw ra,ra,385 + 8000023c: 00100113 li sp,1 + 80000240: 4020df33 sra t5,ra,sp + 80000244: c0c0ceb7 lui t4,0xc0c0c + 80000248: 0c0e8e9b addiw t4,t4,192 + 8000024c: 00d00193 li gp,13 + 80000250: 45df1463 bne t5,t4,80000698 + +0000000080000254 : + 80000254: 818180b7 lui ra,0x81818 + 80000258: 1810809b addiw ra,ra,385 + 8000025c: 00700113 li sp,7 + 80000260: 4020df33 sra t5,ra,sp + 80000264: ff030eb7 lui t4,0xff030 + 80000268: 303e8e9b addiw t4,t4,771 + 8000026c: 00e00193 li gp,14 + 80000270: 43df1463 bne t5,t4,80000698 + +0000000080000274 : + 80000274: 818180b7 lui ra,0x81818 + 80000278: 1810809b addiw ra,ra,385 + 8000027c: 00e00113 li sp,14 + 80000280: 4020df33 sra t5,ra,sp + 80000284: fffe0eb7 lui t4,0xfffe0 + 80000288: 606e8e9b addiw t4,t4,1542 + 8000028c: 00f00193 li gp,15 + 80000290: 41df1463 bne t5,t4,80000698 + +0000000080000294 : + 80000294: 818180b7 lui ra,0x81818 + 80000298: 1810809b addiw ra,ra,385 + 8000029c: 01f00113 li sp,31 + 800002a0: 4020df33 sra t5,ra,sp + 800002a4: fff00e93 li t4,-1 + 800002a8: 01000193 li gp,16 + 800002ac: 3fdf1663 bne t5,t4,80000698 + +00000000800002b0 : + 800002b0: 818180b7 lui ra,0x81818 + 800002b4: 1810809b addiw ra,ra,385 + 800002b8: fc000113 li sp,-64 + 800002bc: 4020df33 sra t5,ra,sp + 800002c0: 81818eb7 lui t4,0x81818 + 800002c4: 181e8e9b addiw t4,t4,385 + 800002c8: 01100193 li gp,17 + 800002cc: 3ddf1663 bne t5,t4,80000698 + +00000000800002d0 : + 800002d0: 818180b7 lui ra,0x81818 + 800002d4: 1810809b addiw ra,ra,385 + 800002d8: fc100113 li sp,-63 + 800002dc: 4020df33 sra t5,ra,sp + 800002e0: c0c0ceb7 lui t4,0xc0c0c + 800002e4: 0c0e8e9b addiw t4,t4,192 + 800002e8: 01200193 li gp,18 + 800002ec: 3bdf1663 bne t5,t4,80000698 + +00000000800002f0 : + 800002f0: 818180b7 lui ra,0x81818 + 800002f4: 1810809b addiw ra,ra,385 + 800002f8: fc700113 li sp,-57 + 800002fc: 4020df33 sra t5,ra,sp + 80000300: ff030eb7 lui t4,0xff030 + 80000304: 303e8e9b addiw t4,t4,771 + 80000308: 01300193 li gp,19 + 8000030c: 39df1663 bne t5,t4,80000698 + +0000000080000310 : + 80000310: 818180b7 lui ra,0x81818 + 80000314: 1810809b addiw ra,ra,385 + 80000318: fce00113 li sp,-50 + 8000031c: 4020df33 sra t5,ra,sp + 80000320: fffe0eb7 lui t4,0xfffe0 + 80000324: 606e8e9b addiw t4,t4,1542 + 80000328: 01400193 li gp,20 + 8000032c: 37df1663 bne t5,t4,80000698 + +0000000080000330 : + 80000330: 818180b7 lui ra,0x81818 + 80000334: 1810809b addiw ra,ra,385 + 80000338: fff00113 li sp,-1 + 8000033c: 4020df33 sra t5,ra,sp + 80000340: fff00e93 li t4,-1 + 80000344: 01500193 li gp,21 + 80000348: 35df1863 bne t5,t4,80000698 + +000000008000034c : + 8000034c: 800000b7 lui ra,0x80000 + 80000350: 00700113 li sp,7 + 80000354: 4020d0b3 sra ra,ra,sp + 80000358: ff000eb7 lui t4,0xff000 + 8000035c: 01600193 li gp,22 + 80000360: 33d09c63 bne ra,t4,80000698 + +0000000080000364 : + 80000364: 800000b7 lui ra,0x80000 + 80000368: 00e00113 li sp,14 + 8000036c: 4020d133 sra sp,ra,sp + 80000370: fffe0eb7 lui t4,0xfffe0 + 80000374: 01700193 li gp,23 + 80000378: 33d11063 bne sp,t4,80000698 + +000000008000037c : + 8000037c: 00700093 li ra,7 + 80000380: 4010d0b3 sra ra,ra,ra + 80000384: 00000e93 li t4,0 + 80000388: 01800193 li gp,24 + 8000038c: 31d09663 bne ra,t4,80000698 + +0000000080000390 : + 80000390: 00000213 li tp,0 + 80000394: 800000b7 lui ra,0x80000 + 80000398: 00700113 li sp,7 + 8000039c: 4020df33 sra t5,ra,sp + 800003a0: 000f0313 mv t1,t5 + 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003a8: 00200293 li t0,2 + 800003ac: fe5214e3 bne tp,t0,80000394 + 800003b0: ff000eb7 lui t4,0xff000 + 800003b4: 01900193 li gp,25 + 800003b8: 2fd31063 bne t1,t4,80000698 + +00000000800003bc : + 800003bc: 00000213 li tp,0 + 800003c0: 800000b7 lui ra,0x80000 + 800003c4: 00e00113 li sp,14 + 800003c8: 4020df33 sra t5,ra,sp + 800003cc: 00000013 nop + 800003d0: 000f0313 mv t1,t5 + 800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003d8: 00200293 li t0,2 + 800003dc: fe5212e3 bne tp,t0,800003c0 + 800003e0: fffe0eb7 lui t4,0xfffe0 + 800003e4: 01a00193 li gp,26 + 800003e8: 2bd31863 bne t1,t4,80000698 + +00000000800003ec : + 800003ec: 00000213 li tp,0 + 800003f0: 800000b7 lui ra,0x80000 + 800003f4: 01f00113 li sp,31 + 800003f8: 4020df33 sra t5,ra,sp + 800003fc: 00000013 nop + 80000400: 00000013 nop + 80000404: 000f0313 mv t1,t5 + 80000408: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000040c: 00200293 li t0,2 + 80000410: fe5210e3 bne tp,t0,800003f0 + 80000414: fff00e93 li t4,-1 + 80000418: 01b00193 li gp,27 + 8000041c: 27d31e63 bne t1,t4,80000698 + +0000000080000420 : + 80000420: 00000213 li tp,0 + 80000424: 800000b7 lui ra,0x80000 + 80000428: 00700113 li sp,7 + 8000042c: 4020df33 sra t5,ra,sp + 80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000434: 00200293 li t0,2 + 80000438: fe5216e3 bne tp,t0,80000424 + 8000043c: ff000eb7 lui t4,0xff000 + 80000440: 01c00193 li gp,28 + 80000444: 25df1a63 bne t5,t4,80000698 + +0000000080000448 : + 80000448: 00000213 li tp,0 + 8000044c: 800000b7 lui ra,0x80000 + 80000450: 00e00113 li sp,14 + 80000454: 00000013 nop + 80000458: 4020df33 sra t5,ra,sp + 8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000460: 00200293 li t0,2 + 80000464: fe5214e3 bne tp,t0,8000044c + 80000468: fffe0eb7 lui t4,0xfffe0 + 8000046c: 01d00193 li gp,29 + 80000470: 23df1463 bne t5,t4,80000698 + +0000000080000474 : + 80000474: 00000213 li tp,0 + 80000478: 800000b7 lui ra,0x80000 + 8000047c: 01f00113 li sp,31 + 80000480: 00000013 nop + 80000484: 00000013 nop + 80000488: 4020df33 sra t5,ra,sp + 8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000490: 00200293 li t0,2 + 80000494: fe5212e3 bne tp,t0,80000478 + 80000498: fff00e93 li t4,-1 + 8000049c: 01e00193 li gp,30 + 800004a0: 1fdf1c63 bne t5,t4,80000698 + +00000000800004a4 : + 800004a4: 00000213 li tp,0 + 800004a8: 800000b7 lui ra,0x80000 + 800004ac: 00000013 nop + 800004b0: 00700113 li sp,7 + 800004b4: 4020df33 sra t5,ra,sp + 800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004bc: 00200293 li t0,2 + 800004c0: fe5214e3 bne tp,t0,800004a8 + 800004c4: ff000eb7 lui t4,0xff000 + 800004c8: 01f00193 li gp,31 + 800004cc: 1ddf1663 bne t5,t4,80000698 + +00000000800004d0 : + 800004d0: 00000213 li tp,0 + 800004d4: 800000b7 lui ra,0x80000 + 800004d8: 00000013 nop + 800004dc: 00e00113 li sp,14 + 800004e0: 00000013 nop + 800004e4: 4020df33 sra t5,ra,sp + 800004e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004ec: 00200293 li t0,2 + 800004f0: fe5212e3 bne tp,t0,800004d4 + 800004f4: fffe0eb7 lui t4,0xfffe0 + 800004f8: 02000193 li gp,32 + 800004fc: 19df1e63 bne t5,t4,80000698 + +0000000080000500 : + 80000500: 00000213 li tp,0 + 80000504: 800000b7 lui ra,0x80000 + 80000508: 00000013 nop + 8000050c: 00000013 nop + 80000510: 01f00113 li sp,31 + 80000514: 4020df33 sra t5,ra,sp + 80000518: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000051c: 00200293 li t0,2 + 80000520: fe5212e3 bne tp,t0,80000504 + 80000524: fff00e93 li t4,-1 + 80000528: 02100193 li gp,33 + 8000052c: 17df1663 bne t5,t4,80000698 + +0000000080000530 : + 80000530: 00000213 li tp,0 + 80000534: 00700113 li sp,7 + 80000538: 800000b7 lui ra,0x80000 + 8000053c: 4020df33 sra t5,ra,sp + 80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000544: 00200293 li t0,2 + 80000548: fe5216e3 bne tp,t0,80000534 + 8000054c: ff000eb7 lui t4,0xff000 + 80000550: 02200193 li gp,34 + 80000554: 15df1263 bne t5,t4,80000698 + +0000000080000558 : + 80000558: 00000213 li tp,0 + 8000055c: 00e00113 li sp,14 + 80000560: 800000b7 lui ra,0x80000 + 80000564: 00000013 nop + 80000568: 4020df33 sra t5,ra,sp + 8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000570: 00200293 li t0,2 + 80000574: fe5214e3 bne tp,t0,8000055c + 80000578: fffe0eb7 lui t4,0xfffe0 + 8000057c: 02300193 li gp,35 + 80000580: 11df1c63 bne t5,t4,80000698 + +0000000080000584 : + 80000584: 00000213 li tp,0 + 80000588: 01f00113 li sp,31 + 8000058c: 800000b7 lui ra,0x80000 + 80000590: 00000013 nop + 80000594: 00000013 nop + 80000598: 4020df33 sra t5,ra,sp + 8000059c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005a0: 00200293 li t0,2 + 800005a4: fe5212e3 bne tp,t0,80000588 + 800005a8: fff00e93 li t4,-1 + 800005ac: 02400193 li gp,36 + 800005b0: 0fdf1463 bne t5,t4,80000698 + +00000000800005b4 : + 800005b4: 00000213 li tp,0 + 800005b8: 00700113 li sp,7 + 800005bc: 00000013 nop + 800005c0: 800000b7 lui ra,0x80000 + 800005c4: 4020df33 sra t5,ra,sp + 800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005cc: 00200293 li t0,2 + 800005d0: fe5214e3 bne tp,t0,800005b8 + 800005d4: ff000eb7 lui t4,0xff000 + 800005d8: 02500193 li gp,37 + 800005dc: 0bdf1e63 bne t5,t4,80000698 + +00000000800005e0 : + 800005e0: 00000213 li tp,0 + 800005e4: 00e00113 li sp,14 + 800005e8: 00000013 nop + 800005ec: 800000b7 lui ra,0x80000 + 800005f0: 00000013 nop + 800005f4: 4020df33 sra t5,ra,sp + 800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005fc: 00200293 li t0,2 + 80000600: fe5212e3 bne tp,t0,800005e4 + 80000604: fffe0eb7 lui t4,0xfffe0 + 80000608: 02600193 li gp,38 + 8000060c: 09df1663 bne t5,t4,80000698 + +0000000080000610 : + 80000610: 00000213 li tp,0 + 80000614: 01f00113 li sp,31 + 80000618: 00000013 nop + 8000061c: 00000013 nop + 80000620: 800000b7 lui ra,0x80000 + 80000624: 4020df33 sra t5,ra,sp + 80000628: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000062c: 00200293 li t0,2 + 80000630: fe5212e3 bne tp,t0,80000614 + 80000634: fff00e93 li t4,-1 + 80000638: 02700193 li gp,39 + 8000063c: 05df1e63 bne t5,t4,80000698 + +0000000080000640 : + 80000640: 00f00093 li ra,15 + 80000644: 40105133 sra sp,zero,ra + 80000648: 00000e93 li t4,0 + 8000064c: 02800193 li gp,40 + 80000650: 05d11463 bne sp,t4,80000698 + +0000000080000654 : + 80000654: 02000093 li ra,32 + 80000658: 4000d133 sra sp,ra,zero + 8000065c: 02000e93 li t4,32 + 80000660: 02900193 li gp,41 + 80000664: 03d11a63 bne sp,t4,80000698 + +0000000080000668 : + 80000668: 400050b3 sra ra,zero,zero + 8000066c: 00000e93 li t4,0 + 80000670: 02a00193 li gp,42 + 80000674: 03d09263 bne ra,t4,80000698 + +0000000080000678 : + 80000678: 40000093 li ra,1024 + 8000067c: 00001137 lui sp,0x1 + 80000680: 8001011b addiw sp,sp,-2048 + 80000684: 4020d033 sra zero,ra,sp + 80000688: 00000e93 li t4,0 + 8000068c: 02b00193 li gp,43 + 80000690: 01d01463 bne zero,t4,80000698 + 80000694: 00301c63 bne zero,gp,800006ac + +0000000080000698 : + 80000698: 0ff0000f fence + 8000069c: 00018063 beqz gp,8000069c + 800006a0: 00119193 slli gp,gp,0x1 + 800006a4: 0011e193 ori gp,gp,1 + 800006a8: 00000073 ecall + +00000000800006ac : + 800006ac: 0ff0000f fence + 800006b0: 00100193 li gp,1 + 800006b4: 00000073 ecall + 800006b8: c0001073 unimp + 800006bc: 0000 unimp + 800006be: 0000 unimp + 800006c0: 0000 unimp + 800006c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-srai b/Tests/isa/rv64ui-p-srai new file mode 100644 index 0000000..6b2e4d2 Binary files /dev/null and b/Tests/isa/rv64ui-p-srai differ diff --git a/Tests/isa/rv64ui-p-srai.dump b/Tests/isa/rv64ui-p-srai.dump new file mode 100644 index 0000000..e86b051 --- /dev/null +++ b/Tests/isa/rv64ui-p-srai.dump @@ -0,0 +1,333 @@ + +rv64ui-p-srai: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: fff0009b addiw ra,zero,-1 + 80000100: 02709093 slli ra,ra,0x27 + 80000104: 4000df13 srai t5,ra,0x0 + 80000108: fff00e9b addiw t4,zero,-1 + 8000010c: 027e9e93 slli t4,t4,0x27 + 80000110: 00200193 li gp,2 + 80000114: 2bdf1463 bne t5,t4,800003bc + +0000000080000118 : + 80000118: 800000b7 lui ra,0x80000 + 8000011c: 4010df13 srai t5,ra,0x1 + 80000120: c0000eb7 lui t4,0xc0000 + 80000124: 00300193 li gp,3 + 80000128: 29df1a63 bne t5,t4,800003bc + +000000008000012c : + 8000012c: 800000b7 lui ra,0x80000 + 80000130: 4070df13 srai t5,ra,0x7 + 80000134: ff000eb7 lui t4,0xff000 + 80000138: 00400193 li gp,4 + 8000013c: 29df1063 bne t5,t4,800003bc + +0000000080000140 : + 80000140: 800000b7 lui ra,0x80000 + 80000144: 40e0df13 srai t5,ra,0xe + 80000148: fffe0eb7 lui t4,0xfffe0 + 8000014c: 00500193 li gp,5 + 80000150: 27df1663 bne t5,t4,800003bc + +0000000080000154 : + 80000154: 800000b7 lui ra,0x80000 + 80000158: 0010809b addiw ra,ra,1 + 8000015c: 41f0df13 srai t5,ra,0x1f + 80000160: fff00e93 li t4,-1 + 80000164: 00600193 li gp,6 + 80000168: 25df1a63 bne t5,t4,800003bc + +000000008000016c : + 8000016c: 800000b7 lui ra,0x80000 + 80000170: fff0809b addiw ra,ra,-1 + 80000174: 4000df13 srai t5,ra,0x0 + 80000178: 80000eb7 lui t4,0x80000 + 8000017c: fffe8e9b addiw t4,t4,-1 + 80000180: 00700193 li gp,7 + 80000184: 23df1c63 bne t5,t4,800003bc + +0000000080000188 : + 80000188: 800000b7 lui ra,0x80000 + 8000018c: fff0809b addiw ra,ra,-1 + 80000190: 4010df13 srai t5,ra,0x1 + 80000194: 40000eb7 lui t4,0x40000 + 80000198: fffe8e9b addiw t4,t4,-1 + 8000019c: 00800193 li gp,8 + 800001a0: 21df1e63 bne t5,t4,800003bc + +00000000800001a4 : + 800001a4: 800000b7 lui ra,0x80000 + 800001a8: fff0809b addiw ra,ra,-1 + 800001ac: 4070df13 srai t5,ra,0x7 + 800001b0: 01000eb7 lui t4,0x1000 + 800001b4: fffe8e9b addiw t4,t4,-1 + 800001b8: 00900193 li gp,9 + 800001bc: 21df1063 bne t5,t4,800003bc + +00000000800001c0 : + 800001c0: 800000b7 lui ra,0x80000 + 800001c4: fff0809b addiw ra,ra,-1 + 800001c8: 40e0df13 srai t5,ra,0xe + 800001cc: 00020eb7 lui t4,0x20 + 800001d0: fffe8e9b addiw t4,t4,-1 + 800001d4: 00a00193 li gp,10 + 800001d8: 1fdf1263 bne t5,t4,800003bc + +00000000800001dc : + 800001dc: 800000b7 lui ra,0x80000 + 800001e0: fff0809b addiw ra,ra,-1 + 800001e4: 41f0df13 srai t5,ra,0x1f + 800001e8: 00000e93 li t4,0 + 800001ec: 00b00193 li gp,11 + 800001f0: 1ddf1663 bne t5,t4,800003bc + +00000000800001f4 : + 800001f4: 818180b7 lui ra,0x81818 + 800001f8: 1810809b addiw ra,ra,385 + 800001fc: 4000df13 srai t5,ra,0x0 + 80000200: 81818eb7 lui t4,0x81818 + 80000204: 181e8e9b addiw t4,t4,385 + 80000208: 00c00193 li gp,12 + 8000020c: 1bdf1863 bne t5,t4,800003bc + +0000000080000210 : + 80000210: 818180b7 lui ra,0x81818 + 80000214: 1810809b addiw ra,ra,385 + 80000218: 4010df13 srai t5,ra,0x1 + 8000021c: c0c0ceb7 lui t4,0xc0c0c + 80000220: 0c0e8e9b addiw t4,t4,192 + 80000224: 00d00193 li gp,13 + 80000228: 19df1a63 bne t5,t4,800003bc + +000000008000022c : + 8000022c: 818180b7 lui ra,0x81818 + 80000230: 1810809b addiw ra,ra,385 + 80000234: 4070df13 srai t5,ra,0x7 + 80000238: ff030eb7 lui t4,0xff030 + 8000023c: 303e8e9b addiw t4,t4,771 + 80000240: 00e00193 li gp,14 + 80000244: 17df1c63 bne t5,t4,800003bc + +0000000080000248 : + 80000248: 818180b7 lui ra,0x81818 + 8000024c: 1810809b addiw ra,ra,385 + 80000250: 40e0df13 srai t5,ra,0xe + 80000254: fffe0eb7 lui t4,0xfffe0 + 80000258: 606e8e9b addiw t4,t4,1542 + 8000025c: 00f00193 li gp,15 + 80000260: 15df1e63 bne t5,t4,800003bc + +0000000080000264 : + 80000264: 818180b7 lui ra,0x81818 + 80000268: 1810809b addiw ra,ra,385 + 8000026c: 41f0df13 srai t5,ra,0x1f + 80000270: fff00e93 li t4,-1 + 80000274: 01000193 li gp,16 + 80000278: 15df1263 bne t5,t4,800003bc + +000000008000027c : + 8000027c: 800000b7 lui ra,0x80000 + 80000280: 4070d093 srai ra,ra,0x7 + 80000284: ff000eb7 lui t4,0xff000 + 80000288: 01100193 li gp,17 + 8000028c: 13d09863 bne ra,t4,800003bc + +0000000080000290 : + 80000290: 00000213 li tp,0 + 80000294: 800000b7 lui ra,0x80000 + 80000298: 4070df13 srai t5,ra,0x7 + 8000029c: 000f0313 mv t1,t5 + 800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a4: 00200293 li t0,2 + 800002a8: fe5216e3 bne tp,t0,80000294 + 800002ac: ff000eb7 lui t4,0xff000 + 800002b0: 01200193 li gp,18 + 800002b4: 11d31463 bne t1,t4,800003bc + +00000000800002b8 : + 800002b8: 00000213 li tp,0 + 800002bc: 800000b7 lui ra,0x80000 + 800002c0: 40e0df13 srai t5,ra,0xe + 800002c4: 00000013 nop + 800002c8: 000f0313 mv t1,t5 + 800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d0: 00200293 li t0,2 + 800002d4: fe5214e3 bne tp,t0,800002bc + 800002d8: fffe0eb7 lui t4,0xfffe0 + 800002dc: 01300193 li gp,19 + 800002e0: 0dd31e63 bne t1,t4,800003bc + +00000000800002e4 : + 800002e4: 00000213 li tp,0 + 800002e8: 800000b7 lui ra,0x80000 + 800002ec: 0010809b addiw ra,ra,1 + 800002f0: 41f0df13 srai t5,ra,0x1f + 800002f4: 00000013 nop + 800002f8: 00000013 nop + 800002fc: 000f0313 mv t1,t5 + 80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000304: 00200293 li t0,2 + 80000308: fe5210e3 bne tp,t0,800002e8 + 8000030c: fff00e93 li t4,-1 + 80000310: 01400193 li gp,20 + 80000314: 0bd31463 bne t1,t4,800003bc + +0000000080000318 : + 80000318: 00000213 li tp,0 + 8000031c: 800000b7 lui ra,0x80000 + 80000320: 4070df13 srai t5,ra,0x7 + 80000324: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000328: 00200293 li t0,2 + 8000032c: fe5218e3 bne tp,t0,8000031c + 80000330: ff000eb7 lui t4,0xff000 + 80000334: 01500193 li gp,21 + 80000338: 09df1263 bne t5,t4,800003bc + +000000008000033c : + 8000033c: 00000213 li tp,0 + 80000340: 800000b7 lui ra,0x80000 + 80000344: 00000013 nop + 80000348: 40e0df13 srai t5,ra,0xe + 8000034c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000350: 00200293 li t0,2 + 80000354: fe5216e3 bne tp,t0,80000340 + 80000358: fffe0eb7 lui t4,0xfffe0 + 8000035c: 01600193 li gp,22 + 80000360: 05df1e63 bne t5,t4,800003bc + +0000000080000364 : + 80000364: 00000213 li tp,0 + 80000368: 800000b7 lui ra,0x80000 + 8000036c: 0010809b addiw ra,ra,1 + 80000370: 00000013 nop + 80000374: 00000013 nop + 80000378: 41f0df13 srai t5,ra,0x1f + 8000037c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000380: 00200293 li t0,2 + 80000384: fe5212e3 bne tp,t0,80000368 + 80000388: fff00e93 li t4,-1 + 8000038c: 01700193 li gp,23 + 80000390: 03df1663 bne t5,t4,800003bc + +0000000080000394 : + 80000394: 40405093 srai ra,zero,0x4 + 80000398: 00000e93 li t4,0 + 8000039c: 01800193 li gp,24 + 800003a0: 01d09e63 bne ra,t4,800003bc + +00000000800003a4 : + 800003a4: 02100093 li ra,33 + 800003a8: 40a0d013 srai zero,ra,0xa + 800003ac: 00000e93 li t4,0 + 800003b0: 01900193 li gp,25 + 800003b4: 01d01463 bne zero,t4,800003bc + 800003b8: 00301c63 bne zero,gp,800003d0 + +00000000800003bc : + 800003bc: 0ff0000f fence + 800003c0: 00018063 beqz gp,800003c0 + 800003c4: 00119193 slli gp,gp,0x1 + 800003c8: 0011e193 ori gp,gp,1 + 800003cc: 00000073 ecall + +00000000800003d0 : + 800003d0: 0ff0000f fence + 800003d4: 00100193 li gp,1 + 800003d8: 00000073 ecall + 800003dc: c0001073 unimp + 800003e0: 0000 unimp + 800003e2: 0000 unimp + 800003e4: 0000 unimp + 800003e6: 0000 unimp + 800003e8: 0000 unimp + 800003ea: 0000 unimp + 800003ec: 0000 unimp + 800003ee: 0000 unimp + 800003f0: 0000 unimp + 800003f2: 0000 unimp + 800003f4: 0000 unimp + 800003f6: 0000 unimp + 800003f8: 0000 unimp + 800003fa: 0000 unimp + 800003fc: 0000 unimp + 800003fe: 0000 unimp + 80000400: 0000 unimp + 80000402: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sraiw b/Tests/isa/rv64ui-p-sraiw new file mode 100644 index 0000000..3c23d38 Binary files /dev/null and b/Tests/isa/rv64ui-p-sraiw differ diff --git a/Tests/isa/rv64ui-p-sraiw.dump b/Tests/isa/rv64ui-p-sraiw.dump new file mode 100644 index 0000000..c45179f --- /dev/null +++ b/Tests/isa/rv64ui-p-sraiw.dump @@ -0,0 +1,359 @@ + +rv64ui-p-sraiw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 800000b7 lui ra,0x80000 + 80000100: 4000df1b sraiw t5,ra,0x0 + 80000104: 80000eb7 lui t4,0x80000 + 80000108: 00200193 li gp,2 + 8000010c: 2ddf1c63 bne t5,t4,800003e4 + +0000000080000110 : + 80000110: 800000b7 lui ra,0x80000 + 80000114: 4010df1b sraiw t5,ra,0x1 + 80000118: c0000eb7 lui t4,0xc0000 + 8000011c: 00300193 li gp,3 + 80000120: 2ddf1263 bne t5,t4,800003e4 + +0000000080000124 : + 80000124: 800000b7 lui ra,0x80000 + 80000128: 4070df1b sraiw t5,ra,0x7 + 8000012c: ff000eb7 lui t4,0xff000 + 80000130: 00400193 li gp,4 + 80000134: 2bdf1863 bne t5,t4,800003e4 + +0000000080000138 : + 80000138: 800000b7 lui ra,0x80000 + 8000013c: 40e0df1b sraiw t5,ra,0xe + 80000140: fffe0eb7 lui t4,0xfffe0 + 80000144: 00500193 li gp,5 + 80000148: 29df1e63 bne t5,t4,800003e4 + +000000008000014c : + 8000014c: 800000b7 lui ra,0x80000 + 80000150: 0010809b addiw ra,ra,1 + 80000154: 41f0df1b sraiw t5,ra,0x1f + 80000158: fff00e93 li t4,-1 + 8000015c: 00600193 li gp,6 + 80000160: 29df1263 bne t5,t4,800003e4 + +0000000080000164 : + 80000164: 800000b7 lui ra,0x80000 + 80000168: fff0809b addiw ra,ra,-1 + 8000016c: 4000df1b sraiw t5,ra,0x0 + 80000170: 80000eb7 lui t4,0x80000 + 80000174: fffe8e9b addiw t4,t4,-1 + 80000178: 00700193 li gp,7 + 8000017c: 27df1463 bne t5,t4,800003e4 + +0000000080000180 : + 80000180: 800000b7 lui ra,0x80000 + 80000184: fff0809b addiw ra,ra,-1 + 80000188: 4010df1b sraiw t5,ra,0x1 + 8000018c: 40000eb7 lui t4,0x40000 + 80000190: fffe8e9b addiw t4,t4,-1 + 80000194: 00800193 li gp,8 + 80000198: 25df1663 bne t5,t4,800003e4 + +000000008000019c : + 8000019c: 800000b7 lui ra,0x80000 + 800001a0: fff0809b addiw ra,ra,-1 + 800001a4: 4070df1b sraiw t5,ra,0x7 + 800001a8: 01000eb7 lui t4,0x1000 + 800001ac: fffe8e9b addiw t4,t4,-1 + 800001b0: 00900193 li gp,9 + 800001b4: 23df1863 bne t5,t4,800003e4 + +00000000800001b8 : + 800001b8: 800000b7 lui ra,0x80000 + 800001bc: fff0809b addiw ra,ra,-1 + 800001c0: 40e0df1b sraiw t5,ra,0xe + 800001c4: 00020eb7 lui t4,0x20 + 800001c8: fffe8e9b addiw t4,t4,-1 + 800001cc: 00a00193 li gp,10 + 800001d0: 21df1a63 bne t5,t4,800003e4 + +00000000800001d4 : + 800001d4: 800000b7 lui ra,0x80000 + 800001d8: fff0809b addiw ra,ra,-1 + 800001dc: 41f0df1b sraiw t5,ra,0x1f + 800001e0: 00000e93 li t4,0 + 800001e4: 00b00193 li gp,11 + 800001e8: 1fdf1e63 bne t5,t4,800003e4 + +00000000800001ec : + 800001ec: 818180b7 lui ra,0x81818 + 800001f0: 1810809b addiw ra,ra,385 + 800001f4: 4000df1b sraiw t5,ra,0x0 + 800001f8: 81818eb7 lui t4,0x81818 + 800001fc: 181e8e9b addiw t4,t4,385 + 80000200: 00c00193 li gp,12 + 80000204: 1fdf1063 bne t5,t4,800003e4 + +0000000080000208 : + 80000208: 818180b7 lui ra,0x81818 + 8000020c: 1810809b addiw ra,ra,385 + 80000210: 4010df1b sraiw t5,ra,0x1 + 80000214: c0c0ceb7 lui t4,0xc0c0c + 80000218: 0c0e8e9b addiw t4,t4,192 + 8000021c: 00d00193 li gp,13 + 80000220: 1ddf1263 bne t5,t4,800003e4 + +0000000080000224 : + 80000224: 818180b7 lui ra,0x81818 + 80000228: 1810809b addiw ra,ra,385 + 8000022c: 4070df1b sraiw t5,ra,0x7 + 80000230: ff030eb7 lui t4,0xff030 + 80000234: 303e8e9b addiw t4,t4,771 + 80000238: 00e00193 li gp,14 + 8000023c: 1bdf1463 bne t5,t4,800003e4 + +0000000080000240 : + 80000240: 818180b7 lui ra,0x81818 + 80000244: 1810809b addiw ra,ra,385 + 80000248: 40e0df1b sraiw t5,ra,0xe + 8000024c: fffe0eb7 lui t4,0xfffe0 + 80000250: 606e8e9b addiw t4,t4,1542 + 80000254: 00f00193 li gp,15 + 80000258: 19df1663 bne t5,t4,800003e4 + +000000008000025c : + 8000025c: 818180b7 lui ra,0x81818 + 80000260: 1810809b addiw ra,ra,385 + 80000264: 41f0df1b sraiw t5,ra,0x1f + 80000268: fff00e93 li t4,-1 + 8000026c: 01000193 li gp,16 + 80000270: 17df1a63 bne t5,t4,800003e4 + +0000000080000274 : + 80000274: 800000b7 lui ra,0x80000 + 80000278: 4070d09b sraiw ra,ra,0x7 + 8000027c: ff000eb7 lui t4,0xff000 + 80000280: 01100193 li gp,17 + 80000284: 17d09063 bne ra,t4,800003e4 + +0000000080000288 : + 80000288: 00000213 li tp,0 + 8000028c: 800000b7 lui ra,0x80000 + 80000290: 4070df1b sraiw t5,ra,0x7 + 80000294: 000f0313 mv t1,t5 + 80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000029c: 00200293 li t0,2 + 800002a0: fe5216e3 bne tp,t0,8000028c + 800002a4: ff000eb7 lui t4,0xff000 + 800002a8: 01200193 li gp,18 + 800002ac: 13d31c63 bne t1,t4,800003e4 + +00000000800002b0 : + 800002b0: 00000213 li tp,0 + 800002b4: 800000b7 lui ra,0x80000 + 800002b8: 40e0df1b sraiw t5,ra,0xe + 800002bc: 00000013 nop + 800002c0: 000f0313 mv t1,t5 + 800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002c8: 00200293 li t0,2 + 800002cc: fe5214e3 bne tp,t0,800002b4 + 800002d0: fffe0eb7 lui t4,0xfffe0 + 800002d4: 01300193 li gp,19 + 800002d8: 11d31663 bne t1,t4,800003e4 + +00000000800002dc : + 800002dc: 00000213 li tp,0 + 800002e0: 800000b7 lui ra,0x80000 + 800002e4: 0010809b addiw ra,ra,1 + 800002e8: 41f0df1b sraiw t5,ra,0x1f + 800002ec: 00000013 nop + 800002f0: 00000013 nop + 800002f4: 000f0313 mv t1,t5 + 800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002fc: 00200293 li t0,2 + 80000300: fe5210e3 bne tp,t0,800002e0 + 80000304: fff00e93 li t4,-1 + 80000308: 01400193 li gp,20 + 8000030c: 0dd31c63 bne t1,t4,800003e4 + +0000000080000310 : + 80000310: 00000213 li tp,0 + 80000314: 800000b7 lui ra,0x80000 + 80000318: 4070df1b sraiw t5,ra,0x7 + 8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000320: 00200293 li t0,2 + 80000324: fe5218e3 bne tp,t0,80000314 + 80000328: ff000eb7 lui t4,0xff000 + 8000032c: 01500193 li gp,21 + 80000330: 0bdf1a63 bne t5,t4,800003e4 + +0000000080000334 : + 80000334: 00000213 li tp,0 + 80000338: 800000b7 lui ra,0x80000 + 8000033c: 00000013 nop + 80000340: 40e0df1b sraiw t5,ra,0xe + 80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000348: 00200293 li t0,2 + 8000034c: fe5216e3 bne tp,t0,80000338 + 80000350: fffe0eb7 lui t4,0xfffe0 + 80000354: 01600193 li gp,22 + 80000358: 09df1663 bne t5,t4,800003e4 + +000000008000035c : + 8000035c: 00000213 li tp,0 + 80000360: 800000b7 lui ra,0x80000 + 80000364: 0010809b addiw ra,ra,1 + 80000368: 00000013 nop + 8000036c: 00000013 nop + 80000370: 41f0df1b sraiw t5,ra,0x1f + 80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000378: 00200293 li t0,2 + 8000037c: fe5212e3 bne tp,t0,80000360 + 80000380: fff00e93 li t4,-1 + 80000384: 01700193 li gp,23 + 80000388: 05df1e63 bne t5,t4,800003e4 + +000000008000038c : + 8000038c: 41f0509b sraiw ra,zero,0x1f + 80000390: 00000e93 li t4,0 + 80000394: 01800193 li gp,24 + 80000398: 05d09663 bne ra,t4,800003e4 + +000000008000039c : + 8000039c: 01f00093 li ra,31 + 800003a0: 41c0d01b sraiw zero,ra,0x1c + 800003a4: 00000e93 li t4,0 + 800003a8: 01900193 li gp,25 + 800003ac: 03d01c63 bne zero,t4,800003e4 + +00000000800003b0 : + 800003b0: 0070009b addiw ra,zero,7 + 800003b4: 03509093 slli ra,ra,0x35 + 800003b8: 41c0df1b sraiw t5,ra,0x1c + 800003bc: 00000e93 li t4,0 + 800003c0: 01a00193 li gp,26 + 800003c4: 03df1063 bne t5,t4,800003e4 + +00000000800003c8 : + 800003c8: 00f0009b addiw ra,zero,15 + 800003cc: 01c09093 slli ra,ra,0x1c + 800003d0: 4040df1b sraiw t5,ra,0x4 + 800003d4: ff000eb7 lui t4,0xff000 + 800003d8: 01b00193 li gp,27 + 800003dc: 01df1463 bne t5,t4,800003e4 + 800003e0: 00301c63 bne zero,gp,800003f8 + +00000000800003e4 : + 800003e4: 0ff0000f fence + 800003e8: 00018063 beqz gp,800003e8 + 800003ec: 00119193 slli gp,gp,0x1 + 800003f0: 0011e193 ori gp,gp,1 + 800003f4: 00000073 ecall + +00000000800003f8 : + 800003f8: 0ff0000f fence + 800003fc: 00100193 li gp,1 + 80000400: 00000073 ecall + 80000404: c0001073 unimp + 80000408: 0000 unimp + 8000040a: 0000 unimp + 8000040c: 0000 unimp + 8000040e: 0000 unimp + 80000410: 0000 unimp + 80000412: 0000 unimp + 80000414: 0000 unimp + 80000416: 0000 unimp + 80000418: 0000 unimp + 8000041a: 0000 unimp + 8000041c: 0000 unimp + 8000041e: 0000 unimp + 80000420: 0000 unimp + 80000422: 0000 unimp + 80000424: 0000 unimp + 80000426: 0000 unimp + 80000428: 0000 unimp + 8000042a: 0000 unimp + 8000042c: 0000 unimp + 8000042e: 0000 unimp + 80000430: 0000 unimp + 80000432: 0000 unimp + 80000434: 0000 unimp + 80000436: 0000 unimp + 80000438: 0000 unimp + 8000043a: 0000 unimp + 8000043c: 0000 unimp + 8000043e: 0000 unimp + 80000440: 0000 unimp + 80000442: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sraw b/Tests/isa/rv64ui-p-sraw new file mode 100644 index 0000000..102d6ed Binary files /dev/null and b/Tests/isa/rv64ui-p-sraw differ diff --git a/Tests/isa/rv64ui-p-sraw.dump b/Tests/isa/rv64ui-p-sraw.dump new file mode 100644 index 0000000..dc65ff4 --- /dev/null +++ b/Tests/isa/rv64ui-p-sraw.dump @@ -0,0 +1,538 @@ + +rv64ui-p-sraw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 800000b7 lui ra,0x80000 + 80000100: 00000113 li sp,0 + 80000104: 4020df3b sraw t5,ra,sp + 80000108: 80000eb7 lui t4,0x80000 + 8000010c: 00200193 li gp,2 + 80000110: 59df1463 bne t5,t4,80000698 + +0000000080000114 : + 80000114: 800000b7 lui ra,0x80000 + 80000118: 00100113 li sp,1 + 8000011c: 4020df3b sraw t5,ra,sp + 80000120: c0000eb7 lui t4,0xc0000 + 80000124: 00300193 li gp,3 + 80000128: 57df1863 bne t5,t4,80000698 + +000000008000012c : + 8000012c: 800000b7 lui ra,0x80000 + 80000130: 00700113 li sp,7 + 80000134: 4020df3b sraw t5,ra,sp + 80000138: ff000eb7 lui t4,0xff000 + 8000013c: 00400193 li gp,4 + 80000140: 55df1c63 bne t5,t4,80000698 + +0000000080000144 : + 80000144: 800000b7 lui ra,0x80000 + 80000148: 00e00113 li sp,14 + 8000014c: 4020df3b sraw t5,ra,sp + 80000150: fffe0eb7 lui t4,0xfffe0 + 80000154: 00500193 li gp,5 + 80000158: 55df1063 bne t5,t4,80000698 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 0010809b addiw ra,ra,1 + 80000164: 01f00113 li sp,31 + 80000168: 4020df3b sraw t5,ra,sp + 8000016c: fff00e93 li t4,-1 + 80000170: 00600193 li gp,6 + 80000174: 53df1263 bne t5,t4,80000698 + +0000000080000178 : + 80000178: 800000b7 lui ra,0x80000 + 8000017c: fff0809b addiw ra,ra,-1 + 80000180: 00000113 li sp,0 + 80000184: 4020df3b sraw t5,ra,sp + 80000188: 80000eb7 lui t4,0x80000 + 8000018c: fffe8e9b addiw t4,t4,-1 + 80000190: 00700193 li gp,7 + 80000194: 51df1263 bne t5,t4,80000698 + +0000000080000198 : + 80000198: 800000b7 lui ra,0x80000 + 8000019c: fff0809b addiw ra,ra,-1 + 800001a0: 00100113 li sp,1 + 800001a4: 4020df3b sraw t5,ra,sp + 800001a8: 40000eb7 lui t4,0x40000 + 800001ac: fffe8e9b addiw t4,t4,-1 + 800001b0: 00800193 li gp,8 + 800001b4: 4fdf1263 bne t5,t4,80000698 + +00000000800001b8 : + 800001b8: 800000b7 lui ra,0x80000 + 800001bc: fff0809b addiw ra,ra,-1 + 800001c0: 00700113 li sp,7 + 800001c4: 4020df3b sraw t5,ra,sp + 800001c8: 01000eb7 lui t4,0x1000 + 800001cc: fffe8e9b addiw t4,t4,-1 + 800001d0: 00900193 li gp,9 + 800001d4: 4ddf1263 bne t5,t4,80000698 + +00000000800001d8 : + 800001d8: 800000b7 lui ra,0x80000 + 800001dc: fff0809b addiw ra,ra,-1 + 800001e0: 00e00113 li sp,14 + 800001e4: 4020df3b sraw t5,ra,sp + 800001e8: 00020eb7 lui t4,0x20 + 800001ec: fffe8e9b addiw t4,t4,-1 + 800001f0: 00a00193 li gp,10 + 800001f4: 4bdf1263 bne t5,t4,80000698 + +00000000800001f8 : + 800001f8: 800000b7 lui ra,0x80000 + 800001fc: fff0809b addiw ra,ra,-1 + 80000200: 01f00113 li sp,31 + 80000204: 4020df3b sraw t5,ra,sp + 80000208: 00000e93 li t4,0 + 8000020c: 00b00193 li gp,11 + 80000210: 49df1463 bne t5,t4,80000698 + +0000000080000214 : + 80000214: 818180b7 lui ra,0x81818 + 80000218: 1810809b addiw ra,ra,385 + 8000021c: 00000113 li sp,0 + 80000220: 4020df3b sraw t5,ra,sp + 80000224: 81818eb7 lui t4,0x81818 + 80000228: 181e8e9b addiw t4,t4,385 + 8000022c: 00c00193 li gp,12 + 80000230: 47df1463 bne t5,t4,80000698 + +0000000080000234 : + 80000234: 818180b7 lui ra,0x81818 + 80000238: 1810809b addiw ra,ra,385 + 8000023c: 00100113 li sp,1 + 80000240: 4020df3b sraw t5,ra,sp + 80000244: c0c0ceb7 lui t4,0xc0c0c + 80000248: 0c0e8e9b addiw t4,t4,192 + 8000024c: 00d00193 li gp,13 + 80000250: 45df1463 bne t5,t4,80000698 + +0000000080000254 : + 80000254: 818180b7 lui ra,0x81818 + 80000258: 1810809b addiw ra,ra,385 + 8000025c: 00700113 li sp,7 + 80000260: 4020df3b sraw t5,ra,sp + 80000264: ff030eb7 lui t4,0xff030 + 80000268: 303e8e9b addiw t4,t4,771 + 8000026c: 00e00193 li gp,14 + 80000270: 43df1463 bne t5,t4,80000698 + +0000000080000274 : + 80000274: 818180b7 lui ra,0x81818 + 80000278: 1810809b addiw ra,ra,385 + 8000027c: 00e00113 li sp,14 + 80000280: 4020df3b sraw t5,ra,sp + 80000284: fffe0eb7 lui t4,0xfffe0 + 80000288: 606e8e9b addiw t4,t4,1542 + 8000028c: 00f00193 li gp,15 + 80000290: 41df1463 bne t5,t4,80000698 + +0000000080000294 : + 80000294: 818180b7 lui ra,0x81818 + 80000298: 1810809b addiw ra,ra,385 + 8000029c: 01f00113 li sp,31 + 800002a0: 4020df3b sraw t5,ra,sp + 800002a4: fff00e93 li t4,-1 + 800002a8: 01000193 li gp,16 + 800002ac: 3fdf1663 bne t5,t4,80000698 + +00000000800002b0 : + 800002b0: 818180b7 lui ra,0x81818 + 800002b4: 1810809b addiw ra,ra,385 + 800002b8: fe000113 li sp,-32 + 800002bc: 4020df3b sraw t5,ra,sp + 800002c0: 81818eb7 lui t4,0x81818 + 800002c4: 181e8e9b addiw t4,t4,385 + 800002c8: 01100193 li gp,17 + 800002cc: 3ddf1663 bne t5,t4,80000698 + +00000000800002d0 : + 800002d0: 818180b7 lui ra,0x81818 + 800002d4: 1810809b addiw ra,ra,385 + 800002d8: fe100113 li sp,-31 + 800002dc: 4020df3b sraw t5,ra,sp + 800002e0: c0c0ceb7 lui t4,0xc0c0c + 800002e4: 0c0e8e9b addiw t4,t4,192 + 800002e8: 01200193 li gp,18 + 800002ec: 3bdf1663 bne t5,t4,80000698 + +00000000800002f0 : + 800002f0: 818180b7 lui ra,0x81818 + 800002f4: 1810809b addiw ra,ra,385 + 800002f8: fe700113 li sp,-25 + 800002fc: 4020df3b sraw t5,ra,sp + 80000300: ff030eb7 lui t4,0xff030 + 80000304: 303e8e9b addiw t4,t4,771 + 80000308: 01300193 li gp,19 + 8000030c: 39df1663 bne t5,t4,80000698 + +0000000080000310 : + 80000310: 818180b7 lui ra,0x81818 + 80000314: 1810809b addiw ra,ra,385 + 80000318: fee00113 li sp,-18 + 8000031c: 4020df3b sraw t5,ra,sp + 80000320: fffe0eb7 lui t4,0xfffe0 + 80000324: 606e8e9b addiw t4,t4,1542 + 80000328: 01400193 li gp,20 + 8000032c: 37df1663 bne t5,t4,80000698 + +0000000080000330 : + 80000330: 818180b7 lui ra,0x81818 + 80000334: 1810809b addiw ra,ra,385 + 80000338: fff00113 li sp,-1 + 8000033c: 4020df3b sraw t5,ra,sp + 80000340: fff00e93 li t4,-1 + 80000344: 01500193 li gp,21 + 80000348: 35df1863 bne t5,t4,80000698 + +000000008000034c : + 8000034c: 800000b7 lui ra,0x80000 + 80000350: 00700113 li sp,7 + 80000354: 4020d0bb sraw ra,ra,sp + 80000358: ff000eb7 lui t4,0xff000 + 8000035c: 01600193 li gp,22 + 80000360: 33d09c63 bne ra,t4,80000698 + +0000000080000364 : + 80000364: 800000b7 lui ra,0x80000 + 80000368: 00e00113 li sp,14 + 8000036c: 4020d13b sraw sp,ra,sp + 80000370: fffe0eb7 lui t4,0xfffe0 + 80000374: 01700193 li gp,23 + 80000378: 33d11063 bne sp,t4,80000698 + +000000008000037c : + 8000037c: 00700093 li ra,7 + 80000380: 4010d0bb sraw ra,ra,ra + 80000384: 00000e93 li t4,0 + 80000388: 01800193 li gp,24 + 8000038c: 31d09663 bne ra,t4,80000698 + +0000000080000390 : + 80000390: 00000213 li tp,0 + 80000394: 800000b7 lui ra,0x80000 + 80000398: 00700113 li sp,7 + 8000039c: 4020df3b sraw t5,ra,sp + 800003a0: 000f0313 mv t1,t5 + 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003a8: 00200293 li t0,2 + 800003ac: fe5214e3 bne tp,t0,80000394 + 800003b0: ff000eb7 lui t4,0xff000 + 800003b4: 01900193 li gp,25 + 800003b8: 2fd31063 bne t1,t4,80000698 + +00000000800003bc : + 800003bc: 00000213 li tp,0 + 800003c0: 800000b7 lui ra,0x80000 + 800003c4: 00e00113 li sp,14 + 800003c8: 4020df3b sraw t5,ra,sp + 800003cc: 00000013 nop + 800003d0: 000f0313 mv t1,t5 + 800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003d8: 00200293 li t0,2 + 800003dc: fe5212e3 bne tp,t0,800003c0 + 800003e0: fffe0eb7 lui t4,0xfffe0 + 800003e4: 01a00193 li gp,26 + 800003e8: 2bd31863 bne t1,t4,80000698 + +00000000800003ec : + 800003ec: 00000213 li tp,0 + 800003f0: 800000b7 lui ra,0x80000 + 800003f4: 01f00113 li sp,31 + 800003f8: 4020df3b sraw t5,ra,sp + 800003fc: 00000013 nop + 80000400: 00000013 nop + 80000404: 000f0313 mv t1,t5 + 80000408: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000040c: 00200293 li t0,2 + 80000410: fe5210e3 bne tp,t0,800003f0 + 80000414: fff00e93 li t4,-1 + 80000418: 01b00193 li gp,27 + 8000041c: 27d31e63 bne t1,t4,80000698 + +0000000080000420 : + 80000420: 00000213 li tp,0 + 80000424: 800000b7 lui ra,0x80000 + 80000428: 00700113 li sp,7 + 8000042c: 4020df3b sraw t5,ra,sp + 80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000434: 00200293 li t0,2 + 80000438: fe5216e3 bne tp,t0,80000424 + 8000043c: ff000eb7 lui t4,0xff000 + 80000440: 01c00193 li gp,28 + 80000444: 25df1a63 bne t5,t4,80000698 + +0000000080000448 : + 80000448: 00000213 li tp,0 + 8000044c: 800000b7 lui ra,0x80000 + 80000450: 00e00113 li sp,14 + 80000454: 00000013 nop + 80000458: 4020df3b sraw t5,ra,sp + 8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000460: 00200293 li t0,2 + 80000464: fe5214e3 bne tp,t0,8000044c + 80000468: fffe0eb7 lui t4,0xfffe0 + 8000046c: 01d00193 li gp,29 + 80000470: 23df1463 bne t5,t4,80000698 + +0000000080000474 : + 80000474: 00000213 li tp,0 + 80000478: 800000b7 lui ra,0x80000 + 8000047c: 01f00113 li sp,31 + 80000480: 00000013 nop + 80000484: 00000013 nop + 80000488: 4020df3b sraw t5,ra,sp + 8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000490: 00200293 li t0,2 + 80000494: fe5212e3 bne tp,t0,80000478 + 80000498: fff00e93 li t4,-1 + 8000049c: 01e00193 li gp,30 + 800004a0: 1fdf1c63 bne t5,t4,80000698 + +00000000800004a4 : + 800004a4: 00000213 li tp,0 + 800004a8: 800000b7 lui ra,0x80000 + 800004ac: 00000013 nop + 800004b0: 00700113 li sp,7 + 800004b4: 4020df3b sraw t5,ra,sp + 800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004bc: 00200293 li t0,2 + 800004c0: fe5214e3 bne tp,t0,800004a8 + 800004c4: ff000eb7 lui t4,0xff000 + 800004c8: 01f00193 li gp,31 + 800004cc: 1ddf1663 bne t5,t4,80000698 + +00000000800004d0 : + 800004d0: 00000213 li tp,0 + 800004d4: 800000b7 lui ra,0x80000 + 800004d8: 00000013 nop + 800004dc: 00e00113 li sp,14 + 800004e0: 00000013 nop + 800004e4: 4020df3b sraw t5,ra,sp + 800004e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004ec: 00200293 li t0,2 + 800004f0: fe5212e3 bne tp,t0,800004d4 + 800004f4: fffe0eb7 lui t4,0xfffe0 + 800004f8: 02000193 li gp,32 + 800004fc: 19df1e63 bne t5,t4,80000698 + +0000000080000500 : + 80000500: 00000213 li tp,0 + 80000504: 800000b7 lui ra,0x80000 + 80000508: 00000013 nop + 8000050c: 00000013 nop + 80000510: 01f00113 li sp,31 + 80000514: 4020df3b sraw t5,ra,sp + 80000518: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000051c: 00200293 li t0,2 + 80000520: fe5212e3 bne tp,t0,80000504 + 80000524: fff00e93 li t4,-1 + 80000528: 02100193 li gp,33 + 8000052c: 17df1663 bne t5,t4,80000698 + +0000000080000530 : + 80000530: 00000213 li tp,0 + 80000534: 00700113 li sp,7 + 80000538: 800000b7 lui ra,0x80000 + 8000053c: 4020df3b sraw t5,ra,sp + 80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000544: 00200293 li t0,2 + 80000548: fe5216e3 bne tp,t0,80000534 + 8000054c: ff000eb7 lui t4,0xff000 + 80000550: 02200193 li gp,34 + 80000554: 15df1263 bne t5,t4,80000698 + +0000000080000558 : + 80000558: 00000213 li tp,0 + 8000055c: 00e00113 li sp,14 + 80000560: 800000b7 lui ra,0x80000 + 80000564: 00000013 nop + 80000568: 4020df3b sraw t5,ra,sp + 8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000570: 00200293 li t0,2 + 80000574: fe5214e3 bne tp,t0,8000055c + 80000578: fffe0eb7 lui t4,0xfffe0 + 8000057c: 02300193 li gp,35 + 80000580: 11df1c63 bne t5,t4,80000698 + +0000000080000584 : + 80000584: 00000213 li tp,0 + 80000588: 01f00113 li sp,31 + 8000058c: 800000b7 lui ra,0x80000 + 80000590: 00000013 nop + 80000594: 00000013 nop + 80000598: 4020df3b sraw t5,ra,sp + 8000059c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005a0: 00200293 li t0,2 + 800005a4: fe5212e3 bne tp,t0,80000588 + 800005a8: fff00e93 li t4,-1 + 800005ac: 02400193 li gp,36 + 800005b0: 0fdf1463 bne t5,t4,80000698 + +00000000800005b4 : + 800005b4: 00000213 li tp,0 + 800005b8: 00700113 li sp,7 + 800005bc: 00000013 nop + 800005c0: 800000b7 lui ra,0x80000 + 800005c4: 4020df3b sraw t5,ra,sp + 800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005cc: 00200293 li t0,2 + 800005d0: fe5214e3 bne tp,t0,800005b8 + 800005d4: ff000eb7 lui t4,0xff000 + 800005d8: 02500193 li gp,37 + 800005dc: 0bdf1e63 bne t5,t4,80000698 + +00000000800005e0 : + 800005e0: 00000213 li tp,0 + 800005e4: 00e00113 li sp,14 + 800005e8: 00000013 nop + 800005ec: 800000b7 lui ra,0x80000 + 800005f0: 00000013 nop + 800005f4: 4020df3b sraw t5,ra,sp + 800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005fc: 00200293 li t0,2 + 80000600: fe5212e3 bne tp,t0,800005e4 + 80000604: fffe0eb7 lui t4,0xfffe0 + 80000608: 02600193 li gp,38 + 8000060c: 09df1663 bne t5,t4,80000698 + +0000000080000610 : + 80000610: 00000213 li tp,0 + 80000614: 01f00113 li sp,31 + 80000618: 00000013 nop + 8000061c: 00000013 nop + 80000620: 800000b7 lui ra,0x80000 + 80000624: 4020df3b sraw t5,ra,sp + 80000628: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000062c: 00200293 li t0,2 + 80000630: fe5212e3 bne tp,t0,80000614 + 80000634: fff00e93 li t4,-1 + 80000638: 02700193 li gp,39 + 8000063c: 05df1e63 bne t5,t4,80000698 + +0000000080000640 : + 80000640: 00f00093 li ra,15 + 80000644: 4010513b sraw sp,zero,ra + 80000648: 00000e93 li t4,0 + 8000064c: 02800193 li gp,40 + 80000650: 05d11463 bne sp,t4,80000698 + +0000000080000654 : + 80000654: 02000093 li ra,32 + 80000658: 4000d13b sraw sp,ra,zero + 8000065c: 02000e93 li t4,32 + 80000660: 02900193 li gp,41 + 80000664: 03d11a63 bne sp,t4,80000698 + +0000000080000668 : + 80000668: 400050bb sraw ra,zero,zero + 8000066c: 00000e93 li t4,0 + 80000670: 02a00193 li gp,42 + 80000674: 03d09263 bne ra,t4,80000698 + +0000000080000678 : + 80000678: 40000093 li ra,1024 + 8000067c: 00001137 lui sp,0x1 + 80000680: 8001011b addiw sp,sp,-2048 + 80000684: 4020d03b sraw zero,ra,sp + 80000688: 00000e93 li t4,0 + 8000068c: 02b00193 li gp,43 + 80000690: 01d01463 bne zero,t4,80000698 + 80000694: 00301c63 bne zero,gp,800006ac + +0000000080000698 : + 80000698: 0ff0000f fence + 8000069c: 00018063 beqz gp,8000069c + 800006a0: 00119193 slli gp,gp,0x1 + 800006a4: 0011e193 ori gp,gp,1 + 800006a8: 00000073 ecall + +00000000800006ac : + 800006ac: 0ff0000f fence + 800006b0: 00100193 li gp,1 + 800006b4: 00000073 ecall + 800006b8: c0001073 unimp + 800006bc: 0000 unimp + 800006be: 0000 unimp + 800006c0: 0000 unimp + 800006c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-srl b/Tests/isa/rv64ui-p-srl new file mode 100644 index 0000000..22b73a4 Binary files /dev/null and b/Tests/isa/rv64ui-p-srl differ diff --git a/Tests/isa/rv64ui-p-srl.dump b/Tests/isa/rv64ui-p-srl.dump new file mode 100644 index 0000000..314069f --- /dev/null +++ b/Tests/isa/rv64ui-p-srl.dump @@ -0,0 +1,575 @@ + +rv64ui-p-srl: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 800000b7 lui ra,0x80000 + 80000100: 00000113 li sp,0 + 80000104: 0020df33 srl t5,ra,sp + 80000108: 80000eb7 lui t4,0x80000 + 8000010c: 00200193 li gp,2 + 80000110: 5fdf1a63 bne t5,t4,80000704 + +0000000080000114 : + 80000114: 800000b7 lui ra,0x80000 + 80000118: 00100113 li sp,1 + 8000011c: 0020df33 srl t5,ra,sp + 80000120: 00100e9b addiw t4,zero,1 + 80000124: 021e9e93 slli t4,t4,0x21 + 80000128: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffffdfff> + 8000012c: 01ee9e93 slli t4,t4,0x1e + 80000130: 00300193 li gp,3 + 80000134: 5ddf1863 bne t5,t4,80000704 + +0000000080000138 : + 80000138: 800000b7 lui ra,0x80000 + 8000013c: 00700113 li sp,7 + 80000140: 0020df33 srl t5,ra,sp + 80000144: 00100e9b addiw t4,zero,1 + 80000148: 021e9e93 slli t4,t4,0x21 + 8000014c: fffe8e93 addi t4,t4,-1 + 80000150: 018e9e93 slli t4,t4,0x18 + 80000154: 00400193 li gp,4 + 80000158: 5bdf1663 bne t5,t4,80000704 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00e00113 li sp,14 + 80000164: 0020df33 srl t5,ra,sp + 80000168: 00100e9b addiw t4,zero,1 + 8000016c: 021e9e93 slli t4,t4,0x21 + 80000170: fffe8e93 addi t4,t4,-1 + 80000174: 011e9e93 slli t4,t4,0x11 + 80000178: 00500193 li gp,5 + 8000017c: 59df1463 bne t5,t4,80000704 + +0000000080000180 : + 80000180: 800000b7 lui ra,0x80000 + 80000184: 0010809b addiw ra,ra,1 + 80000188: 01f00113 li sp,31 + 8000018c: 0020df33 srl t5,ra,sp + 80000190: 00100e9b addiw t4,zero,1 + 80000194: 021e9e93 slli t4,t4,0x21 + 80000198: fffe8e93 addi t4,t4,-1 + 8000019c: 00600193 li gp,6 + 800001a0: 57df1263 bne t5,t4,80000704 + +00000000800001a4 : + 800001a4: fff00093 li ra,-1 + 800001a8: 00000113 li sp,0 + 800001ac: 0020df33 srl t5,ra,sp + 800001b0: fff00e93 li t4,-1 + 800001b4: 00700193 li gp,7 + 800001b8: 55df1663 bne t5,t4,80000704 + +00000000800001bc : + 800001bc: fff00093 li ra,-1 + 800001c0: 00100113 li sp,1 + 800001c4: 0020df33 srl t5,ra,sp + 800001c8: fff00e9b addiw t4,zero,-1 + 800001cc: 03fe9e93 slli t4,t4,0x3f + 800001d0: fffe8e93 addi t4,t4,-1 + 800001d4: 00800193 li gp,8 + 800001d8: 53df1663 bne t5,t4,80000704 + +00000000800001dc : + 800001dc: fff00093 li ra,-1 + 800001e0: 00700113 li sp,7 + 800001e4: 0020df33 srl t5,ra,sp + 800001e8: 00100e9b addiw t4,zero,1 + 800001ec: 039e9e93 slli t4,t4,0x39 + 800001f0: fffe8e93 addi t4,t4,-1 + 800001f4: 00900193 li gp,9 + 800001f8: 51df1663 bne t5,t4,80000704 + +00000000800001fc : + 800001fc: fff00093 li ra,-1 + 80000200: 00e00113 li sp,14 + 80000204: 0020df33 srl t5,ra,sp + 80000208: 00100e9b addiw t4,zero,1 + 8000020c: 032e9e93 slli t4,t4,0x32 + 80000210: fffe8e93 addi t4,t4,-1 + 80000214: 00a00193 li gp,10 + 80000218: 4fdf1663 bne t5,t4,80000704 + +000000008000021c : + 8000021c: fff00093 li ra,-1 + 80000220: 01f00113 li sp,31 + 80000224: 0020df33 srl t5,ra,sp + 80000228: 00100e9b addiw t4,zero,1 + 8000022c: 021e9e93 slli t4,t4,0x21 + 80000230: fffe8e93 addi t4,t4,-1 + 80000234: 00b00193 li gp,11 + 80000238: 4ddf1663 bne t5,t4,80000704 + +000000008000023c : + 8000023c: 212120b7 lui ra,0x21212 + 80000240: 1210809b addiw ra,ra,289 + 80000244: 00000113 li sp,0 + 80000248: 0020df33 srl t5,ra,sp + 8000024c: 21212eb7 lui t4,0x21212 + 80000250: 121e8e9b addiw t4,t4,289 + 80000254: 00c00193 li gp,12 + 80000258: 4bdf1663 bne t5,t4,80000704 + +000000008000025c : + 8000025c: 212120b7 lui ra,0x21212 + 80000260: 1210809b addiw ra,ra,289 + 80000264: 00100113 li sp,1 + 80000268: 0020df33 srl t5,ra,sp + 8000026c: 10909eb7 lui t4,0x10909 + 80000270: 090e8e9b addiw t4,t4,144 + 80000274: 00d00193 li gp,13 + 80000278: 49df1663 bne t5,t4,80000704 + +000000008000027c : + 8000027c: 212120b7 lui ra,0x21212 + 80000280: 1210809b addiw ra,ra,289 + 80000284: 00700113 li sp,7 + 80000288: 0020df33 srl t5,ra,sp + 8000028c: 00424eb7 lui t4,0x424 + 80000290: 242e8e9b addiw t4,t4,578 + 80000294: 00e00193 li gp,14 + 80000298: 47df1663 bne t5,t4,80000704 + +000000008000029c : + 8000029c: 212120b7 lui ra,0x21212 + 800002a0: 1210809b addiw ra,ra,289 + 800002a4: 00e00113 li sp,14 + 800002a8: 0020df33 srl t5,ra,sp + 800002ac: 00008eb7 lui t4,0x8 + 800002b0: 484e8e9b addiw t4,t4,1156 + 800002b4: 00f00193 li gp,15 + 800002b8: 45df1663 bne t5,t4,80000704 + +00000000800002bc : + 800002bc: 212120b7 lui ra,0x21212 + 800002c0: 1210809b addiw ra,ra,289 + 800002c4: 01f00113 li sp,31 + 800002c8: 0020df33 srl t5,ra,sp + 800002cc: 00000e93 li t4,0 + 800002d0: 01000193 li gp,16 + 800002d4: 43df1863 bne t5,t4,80000704 + +00000000800002d8 : + 800002d8: 212120b7 lui ra,0x21212 + 800002dc: 1210809b addiw ra,ra,289 + 800002e0: fc000113 li sp,-64 + 800002e4: 0020df33 srl t5,ra,sp + 800002e8: 21212eb7 lui t4,0x21212 + 800002ec: 121e8e9b addiw t4,t4,289 + 800002f0: 01100193 li gp,17 + 800002f4: 41df1863 bne t5,t4,80000704 + +00000000800002f8 : + 800002f8: 212120b7 lui ra,0x21212 + 800002fc: 1210809b addiw ra,ra,289 + 80000300: fc100113 li sp,-63 + 80000304: 0020df33 srl t5,ra,sp + 80000308: 10909eb7 lui t4,0x10909 + 8000030c: 090e8e9b addiw t4,t4,144 + 80000310: 01200193 li gp,18 + 80000314: 3fdf1863 bne t5,t4,80000704 + +0000000080000318 : + 80000318: 212120b7 lui ra,0x21212 + 8000031c: 1210809b addiw ra,ra,289 + 80000320: fc700113 li sp,-57 + 80000324: 0020df33 srl t5,ra,sp + 80000328: 00424eb7 lui t4,0x424 + 8000032c: 242e8e9b addiw t4,t4,578 + 80000330: 01300193 li gp,19 + 80000334: 3ddf1863 bne t5,t4,80000704 + +0000000080000338 : + 80000338: 212120b7 lui ra,0x21212 + 8000033c: 1210809b addiw ra,ra,289 + 80000340: fce00113 li sp,-50 + 80000344: 0020df33 srl t5,ra,sp + 80000348: 00008eb7 lui t4,0x8 + 8000034c: 484e8e9b addiw t4,t4,1156 + 80000350: 01400193 li gp,20 + 80000354: 3bdf1863 bne t5,t4,80000704 + +0000000080000358 : + 80000358: 212120b7 lui ra,0x21212 + 8000035c: 1210809b addiw ra,ra,289 + 80000360: fff00113 li sp,-1 + 80000364: 0020df33 srl t5,ra,sp + 80000368: 00000e93 li t4,0 + 8000036c: 01500193 li gp,21 + 80000370: 39df1a63 bne t5,t4,80000704 + +0000000080000374 : + 80000374: 0010009b addiw ra,zero,1 + 80000378: 01f09093 slli ra,ra,0x1f + 8000037c: 00700113 li sp,7 + 80000380: 0020d0b3 srl ra,ra,sp + 80000384: 01000eb7 lui t4,0x1000 + 80000388: 01600193 li gp,22 + 8000038c: 37d09c63 bne ra,t4,80000704 + +0000000080000390 : + 80000390: 0010009b addiw ra,zero,1 + 80000394: 01f09093 slli ra,ra,0x1f + 80000398: 00e00113 li sp,14 + 8000039c: 0020d133 srl sp,ra,sp + 800003a0: 00020eb7 lui t4,0x20 + 800003a4: 01700193 li gp,23 + 800003a8: 35d11e63 bne sp,t4,80000704 + +00000000800003ac : + 800003ac: 00700093 li ra,7 + 800003b0: 0010d0b3 srl ra,ra,ra + 800003b4: 00000e93 li t4,0 + 800003b8: 01800193 li gp,24 + 800003bc: 35d09463 bne ra,t4,80000704 + +00000000800003c0 : + 800003c0: 00000213 li tp,0 + 800003c4: 0010009b addiw ra,zero,1 + 800003c8: 01f09093 slli ra,ra,0x1f + 800003cc: 00700113 li sp,7 + 800003d0: 0020df33 srl t5,ra,sp + 800003d4: 000f0313 mv t1,t5 + 800003d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003dc: 00200293 li t0,2 + 800003e0: fe5212e3 bne tp,t0,800003c4 + 800003e4: 01000eb7 lui t4,0x1000 + 800003e8: 01900193 li gp,25 + 800003ec: 31d31c63 bne t1,t4,80000704 + +00000000800003f0 : + 800003f0: 00000213 li tp,0 + 800003f4: 0010009b addiw ra,zero,1 + 800003f8: 01f09093 slli ra,ra,0x1f + 800003fc: 00e00113 li sp,14 + 80000400: 0020df33 srl t5,ra,sp + 80000404: 00000013 nop + 80000408: 000f0313 mv t1,t5 + 8000040c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000410: 00200293 li t0,2 + 80000414: fe5210e3 bne tp,t0,800003f4 + 80000418: 00020eb7 lui t4,0x20 + 8000041c: 01a00193 li gp,26 + 80000420: 2fd31263 bne t1,t4,80000704 + +0000000080000424 : + 80000424: 00000213 li tp,0 + 80000428: 0010009b addiw ra,zero,1 + 8000042c: 01f09093 slli ra,ra,0x1f + 80000430: 01f00113 li sp,31 + 80000434: 0020df33 srl t5,ra,sp + 80000438: 00000013 nop + 8000043c: 00000013 nop + 80000440: 000f0313 mv t1,t5 + 80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000448: 00200293 li t0,2 + 8000044c: fc521ee3 bne tp,t0,80000428 + 80000450: 00100e93 li t4,1 + 80000454: 01b00193 li gp,27 + 80000458: 2bd31663 bne t1,t4,80000704 + +000000008000045c : + 8000045c: 00000213 li tp,0 + 80000460: 0010009b addiw ra,zero,1 + 80000464: 01f09093 slli ra,ra,0x1f + 80000468: 00700113 li sp,7 + 8000046c: 0020df33 srl t5,ra,sp + 80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000474: 00200293 li t0,2 + 80000478: fe5214e3 bne tp,t0,80000460 + 8000047c: 01000eb7 lui t4,0x1000 + 80000480: 01c00193 li gp,28 + 80000484: 29df1063 bne t5,t4,80000704 + +0000000080000488 : + 80000488: 00000213 li tp,0 + 8000048c: 0010009b addiw ra,zero,1 + 80000490: 01f09093 slli ra,ra,0x1f + 80000494: 00e00113 li sp,14 + 80000498: 00000013 nop + 8000049c: 0020df33 srl t5,ra,sp + 800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004a4: 00200293 li t0,2 + 800004a8: fe5212e3 bne tp,t0,8000048c + 800004ac: 00020eb7 lui t4,0x20 + 800004b0: 01d00193 li gp,29 + 800004b4: 25df1863 bne t5,t4,80000704 + +00000000800004b8 : + 800004b8: 00000213 li tp,0 + 800004bc: 0010009b addiw ra,zero,1 + 800004c0: 01f09093 slli ra,ra,0x1f + 800004c4: 01f00113 li sp,31 + 800004c8: 00000013 nop + 800004cc: 00000013 nop + 800004d0: 0020df33 srl t5,ra,sp + 800004d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d8: 00200293 li t0,2 + 800004dc: fe5210e3 bne tp,t0,800004bc + 800004e0: 00100e93 li t4,1 + 800004e4: 01e00193 li gp,30 + 800004e8: 21df1e63 bne t5,t4,80000704 + +00000000800004ec : + 800004ec: 00000213 li tp,0 + 800004f0: 0010009b addiw ra,zero,1 + 800004f4: 01f09093 slli ra,ra,0x1f + 800004f8: 00000013 nop + 800004fc: 00700113 li sp,7 + 80000500: 0020df33 srl t5,ra,sp + 80000504: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000508: 00200293 li t0,2 + 8000050c: fe5212e3 bne tp,t0,800004f0 + 80000510: 01000eb7 lui t4,0x1000 + 80000514: 01f00193 li gp,31 + 80000518: 1fdf1663 bne t5,t4,80000704 + +000000008000051c : + 8000051c: 00000213 li tp,0 + 80000520: 0010009b addiw ra,zero,1 + 80000524: 01f09093 slli ra,ra,0x1f + 80000528: 00000013 nop + 8000052c: 00e00113 li sp,14 + 80000530: 00000013 nop + 80000534: 0020df33 srl t5,ra,sp + 80000538: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000053c: 00200293 li t0,2 + 80000540: fe5210e3 bne tp,t0,80000520 + 80000544: 00020eb7 lui t4,0x20 + 80000548: 02000193 li gp,32 + 8000054c: 1bdf1c63 bne t5,t4,80000704 + +0000000080000550 : + 80000550: 00000213 li tp,0 + 80000554: 0010009b addiw ra,zero,1 + 80000558: 01f09093 slli ra,ra,0x1f + 8000055c: 00000013 nop + 80000560: 00000013 nop + 80000564: 01f00113 li sp,31 + 80000568: 0020df33 srl t5,ra,sp + 8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000570: 00200293 li t0,2 + 80000574: fe5210e3 bne tp,t0,80000554 + 80000578: 00100e93 li t4,1 + 8000057c: 02100193 li gp,33 + 80000580: 19df1263 bne t5,t4,80000704 + +0000000080000584 : + 80000584: 00000213 li tp,0 + 80000588: 00700113 li sp,7 + 8000058c: 0010009b addiw ra,zero,1 + 80000590: 01f09093 slli ra,ra,0x1f + 80000594: 0020df33 srl t5,ra,sp + 80000598: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000059c: 00200293 li t0,2 + 800005a0: fe5214e3 bne tp,t0,80000588 + 800005a4: 01000eb7 lui t4,0x1000 + 800005a8: 02200193 li gp,34 + 800005ac: 15df1c63 bne t5,t4,80000704 + +00000000800005b0 : + 800005b0: 00000213 li tp,0 + 800005b4: 00e00113 li sp,14 + 800005b8: 0010009b addiw ra,zero,1 + 800005bc: 01f09093 slli ra,ra,0x1f + 800005c0: 00000013 nop + 800005c4: 0020df33 srl t5,ra,sp + 800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005cc: 00200293 li t0,2 + 800005d0: fe5212e3 bne tp,t0,800005b4 + 800005d4: 00020eb7 lui t4,0x20 + 800005d8: 02300193 li gp,35 + 800005dc: 13df1463 bne t5,t4,80000704 + +00000000800005e0 : + 800005e0: 00000213 li tp,0 + 800005e4: 01f00113 li sp,31 + 800005e8: 0010009b addiw ra,zero,1 + 800005ec: 01f09093 slli ra,ra,0x1f + 800005f0: 00000013 nop + 800005f4: 00000013 nop + 800005f8: 0020df33 srl t5,ra,sp + 800005fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000600: 00200293 li t0,2 + 80000604: fe5210e3 bne tp,t0,800005e4 + 80000608: 00100e93 li t4,1 + 8000060c: 02400193 li gp,36 + 80000610: 0fdf1a63 bne t5,t4,80000704 + +0000000080000614 : + 80000614: 00000213 li tp,0 + 80000618: 00700113 li sp,7 + 8000061c: 00000013 nop + 80000620: 0010009b addiw ra,zero,1 + 80000624: 01f09093 slli ra,ra,0x1f + 80000628: 0020df33 srl t5,ra,sp + 8000062c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000630: 00200293 li t0,2 + 80000634: fe5212e3 bne tp,t0,80000618 + 80000638: 01000eb7 lui t4,0x1000 + 8000063c: 02500193 li gp,37 + 80000640: 0ddf1263 bne t5,t4,80000704 + +0000000080000644 : + 80000644: 00000213 li tp,0 + 80000648: 00e00113 li sp,14 + 8000064c: 00000013 nop + 80000650: 0010009b addiw ra,zero,1 + 80000654: 01f09093 slli ra,ra,0x1f + 80000658: 00000013 nop + 8000065c: 0020df33 srl t5,ra,sp + 80000660: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000664: 00200293 li t0,2 + 80000668: fe5210e3 bne tp,t0,80000648 + 8000066c: 00020eb7 lui t4,0x20 + 80000670: 02600193 li gp,38 + 80000674: 09df1863 bne t5,t4,80000704 + +0000000080000678 : + 80000678: 00000213 li tp,0 + 8000067c: 01f00113 li sp,31 + 80000680: 00000013 nop + 80000684: 00000013 nop + 80000688: 0010009b addiw ra,zero,1 + 8000068c: 01f09093 slli ra,ra,0x1f + 80000690: 0020df33 srl t5,ra,sp + 80000694: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000698: 00200293 li t0,2 + 8000069c: fe5210e3 bne tp,t0,8000067c + 800006a0: 00100e93 li t4,1 + 800006a4: 02700193 li gp,39 + 800006a8: 05df1e63 bne t5,t4,80000704 + +00000000800006ac : + 800006ac: 00f00093 li ra,15 + 800006b0: 00105133 srl sp,zero,ra + 800006b4: 00000e93 li t4,0 + 800006b8: 02800193 li gp,40 + 800006bc: 05d11463 bne sp,t4,80000704 + +00000000800006c0 : + 800006c0: 02000093 li ra,32 + 800006c4: 0000d133 srl sp,ra,zero + 800006c8: 02000e93 li t4,32 + 800006cc: 02900193 li gp,41 + 800006d0: 03d11a63 bne sp,t4,80000704 + +00000000800006d4 : + 800006d4: 000050b3 srl ra,zero,zero + 800006d8: 00000e93 li t4,0 + 800006dc: 02a00193 li gp,42 + 800006e0: 03d09263 bne ra,t4,80000704 + +00000000800006e4 : + 800006e4: 40000093 li ra,1024 + 800006e8: 00001137 lui sp,0x1 + 800006ec: 8001011b addiw sp,sp,-2048 + 800006f0: 0020d033 srl zero,ra,sp + 800006f4: 00000e93 li t4,0 + 800006f8: 02b00193 li gp,43 + 800006fc: 01d01463 bne zero,t4,80000704 + 80000700: 00301c63 bne zero,gp,80000718 + +0000000080000704 : + 80000704: 0ff0000f fence + 80000708: 00018063 beqz gp,80000708 + 8000070c: 00119193 slli gp,gp,0x1 + 80000710: 0011e193 ori gp,gp,1 + 80000714: 00000073 ecall + +0000000080000718 : + 80000718: 0ff0000f fence + 8000071c: 00100193 li gp,1 + 80000720: 00000073 ecall + 80000724: c0001073 unimp + 80000728: 0000 unimp + 8000072a: 0000 unimp + 8000072c: 0000 unimp + 8000072e: 0000 unimp + 80000730: 0000 unimp + 80000732: 0000 unimp + 80000734: 0000 unimp + 80000736: 0000 unimp + 80000738: 0000 unimp + 8000073a: 0000 unimp + 8000073c: 0000 unimp + 8000073e: 0000 unimp + 80000740: 0000 unimp + 80000742: 0000 unimp diff --git a/Tests/isa/rv64ui-p-srli b/Tests/isa/rv64ui-p-srli new file mode 100644 index 0000000..1f6dc12 Binary files /dev/null and b/Tests/isa/rv64ui-p-srli differ diff --git a/Tests/isa/rv64ui-p-srli.dump b/Tests/isa/rv64ui-p-srli.dump new file mode 100644 index 0000000..bcb2df7 --- /dev/null +++ b/Tests/isa/rv64ui-p-srli.dump @@ -0,0 +1,350 @@ + +rv64ui-p-srli: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 800000b7 lui ra,0x80000 + 80000100: 0000df13 srli t5,ra,0x0 + 80000104: 80000eb7 lui t4,0x80000 + 80000108: 00200193 li gp,2 + 8000010c: 2fdf1663 bne t5,t4,800003f8 + +0000000080000110 : + 80000110: 800000b7 lui ra,0x80000 + 80000114: 0010df13 srli t5,ra,0x1 + 80000118: 00100e9b addiw t4,zero,1 + 8000011c: 021e9e93 slli t4,t4,0x21 + 80000120: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffffdfff> + 80000124: 01ee9e93 slli t4,t4,0x1e + 80000128: 00300193 li gp,3 + 8000012c: 2ddf1663 bne t5,t4,800003f8 + +0000000080000130 : + 80000130: 800000b7 lui ra,0x80000 + 80000134: 0070df13 srli t5,ra,0x7 + 80000138: 00100e9b addiw t4,zero,1 + 8000013c: 021e9e93 slli t4,t4,0x21 + 80000140: fffe8e93 addi t4,t4,-1 + 80000144: 018e9e93 slli t4,t4,0x18 + 80000148: 00400193 li gp,4 + 8000014c: 2bdf1663 bne t5,t4,800003f8 + +0000000080000150 : + 80000150: 800000b7 lui ra,0x80000 + 80000154: 00e0df13 srli t5,ra,0xe + 80000158: 00100e9b addiw t4,zero,1 + 8000015c: 021e9e93 slli t4,t4,0x21 + 80000160: fffe8e93 addi t4,t4,-1 + 80000164: 011e9e93 slli t4,t4,0x11 + 80000168: 00500193 li gp,5 + 8000016c: 29df1663 bne t5,t4,800003f8 + +0000000080000170 : + 80000170: 800000b7 lui ra,0x80000 + 80000174: 0010809b addiw ra,ra,1 + 80000178: 01f0df13 srli t5,ra,0x1f + 8000017c: 00100e9b addiw t4,zero,1 + 80000180: 021e9e93 slli t4,t4,0x21 + 80000184: fffe8e93 addi t4,t4,-1 + 80000188: 00600193 li gp,6 + 8000018c: 27df1663 bne t5,t4,800003f8 + +0000000080000190 : + 80000190: fff00093 li ra,-1 + 80000194: 0000df13 srli t5,ra,0x0 + 80000198: fff00e93 li t4,-1 + 8000019c: 00700193 li gp,7 + 800001a0: 25df1c63 bne t5,t4,800003f8 + +00000000800001a4 : + 800001a4: fff00093 li ra,-1 + 800001a8: 0010df13 srli t5,ra,0x1 + 800001ac: fff00e9b addiw t4,zero,-1 + 800001b0: 03fe9e93 slli t4,t4,0x3f + 800001b4: fffe8e93 addi t4,t4,-1 + 800001b8: 00800193 li gp,8 + 800001bc: 23df1e63 bne t5,t4,800003f8 + +00000000800001c0 : + 800001c0: fff00093 li ra,-1 + 800001c4: 0070df13 srli t5,ra,0x7 + 800001c8: 00100e9b addiw t4,zero,1 + 800001cc: 039e9e93 slli t4,t4,0x39 + 800001d0: fffe8e93 addi t4,t4,-1 + 800001d4: 00900193 li gp,9 + 800001d8: 23df1063 bne t5,t4,800003f8 + +00000000800001dc : + 800001dc: fff00093 li ra,-1 + 800001e0: 00e0df13 srli t5,ra,0xe + 800001e4: 00100e9b addiw t4,zero,1 + 800001e8: 032e9e93 slli t4,t4,0x32 + 800001ec: fffe8e93 addi t4,t4,-1 + 800001f0: 00a00193 li gp,10 + 800001f4: 21df1263 bne t5,t4,800003f8 + +00000000800001f8 : + 800001f8: fff00093 li ra,-1 + 800001fc: 01f0df13 srli t5,ra,0x1f + 80000200: 00100e9b addiw t4,zero,1 + 80000204: 021e9e93 slli t4,t4,0x21 + 80000208: fffe8e93 addi t4,t4,-1 + 8000020c: 00b00193 li gp,11 + 80000210: 1fdf1463 bne t5,t4,800003f8 + +0000000080000214 : + 80000214: 212120b7 lui ra,0x21212 + 80000218: 1210809b addiw ra,ra,289 + 8000021c: 0000df13 srli t5,ra,0x0 + 80000220: 21212eb7 lui t4,0x21212 + 80000224: 121e8e9b addiw t4,t4,289 + 80000228: 00c00193 li gp,12 + 8000022c: 1ddf1663 bne t5,t4,800003f8 + +0000000080000230 : + 80000230: 212120b7 lui ra,0x21212 + 80000234: 1210809b addiw ra,ra,289 + 80000238: 0010df13 srli t5,ra,0x1 + 8000023c: 10909eb7 lui t4,0x10909 + 80000240: 090e8e9b addiw t4,t4,144 + 80000244: 00d00193 li gp,13 + 80000248: 1bdf1863 bne t5,t4,800003f8 + +000000008000024c : + 8000024c: 212120b7 lui ra,0x21212 + 80000250: 1210809b addiw ra,ra,289 + 80000254: 0070df13 srli t5,ra,0x7 + 80000258: 00424eb7 lui t4,0x424 + 8000025c: 242e8e9b addiw t4,t4,578 + 80000260: 00e00193 li gp,14 + 80000264: 19df1a63 bne t5,t4,800003f8 + +0000000080000268 : + 80000268: 212120b7 lui ra,0x21212 + 8000026c: 1210809b addiw ra,ra,289 + 80000270: 00e0df13 srli t5,ra,0xe + 80000274: 00008eb7 lui t4,0x8 + 80000278: 484e8e9b addiw t4,t4,1156 + 8000027c: 00f00193 li gp,15 + 80000280: 17df1c63 bne t5,t4,800003f8 + +0000000080000284 : + 80000284: 212120b7 lui ra,0x21212 + 80000288: 1210809b addiw ra,ra,289 + 8000028c: 01f0df13 srli t5,ra,0x1f + 80000290: 00000e93 li t4,0 + 80000294: 01000193 li gp,16 + 80000298: 17df1063 bne t5,t4,800003f8 + +000000008000029c : + 8000029c: 0010009b addiw ra,zero,1 + 800002a0: 01f09093 slli ra,ra,0x1f + 800002a4: 0070d093 srli ra,ra,0x7 + 800002a8: 01000eb7 lui t4,0x1000 + 800002ac: 01100193 li gp,17 + 800002b0: 15d09463 bne ra,t4,800003f8 + +00000000800002b4 : + 800002b4: 00000213 li tp,0 + 800002b8: 0010009b addiw ra,zero,1 + 800002bc: 01f09093 slli ra,ra,0x1f + 800002c0: 0070df13 srli t5,ra,0x7 + 800002c4: 000f0313 mv t1,t5 + 800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002cc: 00200293 li t0,2 + 800002d0: fe5214e3 bne tp,t0,800002b8 + 800002d4: 01000eb7 lui t4,0x1000 + 800002d8: 01200193 li gp,18 + 800002dc: 11d31e63 bne t1,t4,800003f8 + +00000000800002e0 : + 800002e0: 00000213 li tp,0 + 800002e4: 0010009b addiw ra,zero,1 + 800002e8: 01f09093 slli ra,ra,0x1f + 800002ec: 00e0df13 srli t5,ra,0xe + 800002f0: 00000013 nop + 800002f4: 000f0313 mv t1,t5 + 800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002fc: 00200293 li t0,2 + 80000300: fe5212e3 bne tp,t0,800002e4 + 80000304: 00020eb7 lui t4,0x20 + 80000308: 01300193 li gp,19 + 8000030c: 0fd31663 bne t1,t4,800003f8 + +0000000080000310 : + 80000310: 00000213 li tp,0 + 80000314: 0010009b addiw ra,zero,1 + 80000318: 01f09093 slli ra,ra,0x1f + 8000031c: 00108093 addi ra,ra,1 # 21212001 <_start-0x5ededfff> + 80000320: 01f0df13 srli t5,ra,0x1f + 80000324: 00000013 nop + 80000328: 00000013 nop + 8000032c: 000f0313 mv t1,t5 + 80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000334: 00200293 li t0,2 + 80000338: fc521ee3 bne tp,t0,80000314 + 8000033c: 00100e93 li t4,1 + 80000340: 01400193 li gp,20 + 80000344: 0bd31a63 bne t1,t4,800003f8 + +0000000080000348 : + 80000348: 00000213 li tp,0 + 8000034c: 0010009b addiw ra,zero,1 + 80000350: 01f09093 slli ra,ra,0x1f + 80000354: 0070df13 srli t5,ra,0x7 + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fe5216e3 bne tp,t0,8000034c + 80000364: 01000eb7 lui t4,0x1000 + 80000368: 01500193 li gp,21 + 8000036c: 09df1663 bne t5,t4,800003f8 + +0000000080000370 : + 80000370: 00000213 li tp,0 + 80000374: 0010009b addiw ra,zero,1 + 80000378: 01f09093 slli ra,ra,0x1f + 8000037c: 00000013 nop + 80000380: 00e0df13 srli t5,ra,0xe + 80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000388: 00200293 li t0,2 + 8000038c: fe5214e3 bne tp,t0,80000374 + 80000390: 00020eb7 lui t4,0x20 + 80000394: 01600193 li gp,22 + 80000398: 07df1063 bne t5,t4,800003f8 + +000000008000039c : + 8000039c: 00000213 li tp,0 + 800003a0: 0010009b addiw ra,zero,1 + 800003a4: 01f09093 slli ra,ra,0x1f + 800003a8: 00108093 addi ra,ra,1 + 800003ac: 00000013 nop + 800003b0: 00000013 nop + 800003b4: 01f0df13 srli t5,ra,0x1f + 800003b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003bc: 00200293 li t0,2 + 800003c0: fe5210e3 bne tp,t0,800003a0 + 800003c4: 00100e93 li t4,1 + 800003c8: 01700193 li gp,23 + 800003cc: 03df1663 bne t5,t4,800003f8 + +00000000800003d0 : + 800003d0: 00405093 srli ra,zero,0x4 + 800003d4: 00000e93 li t4,0 + 800003d8: 01800193 li gp,24 + 800003dc: 01d09e63 bne ra,t4,800003f8 + +00000000800003e0 : + 800003e0: 02100093 li ra,33 + 800003e4: 00a0d013 srli zero,ra,0xa + 800003e8: 00000e93 li t4,0 + 800003ec: 01900193 li gp,25 + 800003f0: 01d01463 bne zero,t4,800003f8 + 800003f4: 00301c63 bne zero,gp,8000040c + +00000000800003f8 : + 800003f8: 0ff0000f fence + 800003fc: 00018063 beqz gp,800003fc + 80000400: 00119193 slli gp,gp,0x1 + 80000404: 0011e193 ori gp,gp,1 + 80000408: 00000073 ecall + +000000008000040c : + 8000040c: 0ff0000f fence + 80000410: 00100193 li gp,1 + 80000414: 00000073 ecall + 80000418: c0001073 unimp + 8000041c: 0000 unimp + 8000041e: 0000 unimp + 80000420: 0000 unimp + 80000422: 0000 unimp + 80000424: 0000 unimp + 80000426: 0000 unimp + 80000428: 0000 unimp + 8000042a: 0000 unimp + 8000042c: 0000 unimp + 8000042e: 0000 unimp + 80000430: 0000 unimp + 80000432: 0000 unimp + 80000434: 0000 unimp + 80000436: 0000 unimp + 80000438: 0000 unimp + 8000043a: 0000 unimp + 8000043c: 0000 unimp + 8000043e: 0000 unimp + 80000440: 0000 unimp + 80000442: 0000 unimp diff --git a/Tests/isa/rv64ui-p-srliw b/Tests/isa/rv64ui-p-srliw new file mode 100644 index 0000000..506a840 Binary files /dev/null and b/Tests/isa/rv64ui-p-srliw differ diff --git a/Tests/isa/rv64ui-p-srliw.dump b/Tests/isa/rv64ui-p-srliw.dump new file mode 100644 index 0000000..99581fb --- /dev/null +++ b/Tests/isa/rv64ui-p-srliw.dump @@ -0,0 +1,309 @@ + +rv64ui-p-srliw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 800000b7 lui ra,0x80000 + 80000100: 0000df1b srliw t5,ra,0x0 + 80000104: 80000eb7 lui t4,0x80000 + 80000108: 00200193 li gp,2 + 8000010c: 29df1863 bne t5,t4,8000039c + +0000000080000110 : + 80000110: 800000b7 lui ra,0x80000 + 80000114: 0010df1b srliw t5,ra,0x1 + 80000118: 40000eb7 lui t4,0x40000 + 8000011c: 00300193 li gp,3 + 80000120: 27df1e63 bne t5,t4,8000039c + +0000000080000124 : + 80000124: 800000b7 lui ra,0x80000 + 80000128: 0070df1b srliw t5,ra,0x7 + 8000012c: 01000eb7 lui t4,0x1000 + 80000130: 00400193 li gp,4 + 80000134: 27df1463 bne t5,t4,8000039c + +0000000080000138 : + 80000138: 800000b7 lui ra,0x80000 + 8000013c: 00e0df1b srliw t5,ra,0xe + 80000140: 00020eb7 lui t4,0x20 + 80000144: 00500193 li gp,5 + 80000148: 25df1a63 bne t5,t4,8000039c + +000000008000014c : + 8000014c: 800000b7 lui ra,0x80000 + 80000150: 0010809b addiw ra,ra,1 + 80000154: 01f0df1b srliw t5,ra,0x1f + 80000158: 00100e93 li t4,1 + 8000015c: 00600193 li gp,6 + 80000160: 23df1e63 bne t5,t4,8000039c + +0000000080000164 : + 80000164: fff00093 li ra,-1 + 80000168: 0000df1b srliw t5,ra,0x0 + 8000016c: fff00e93 li t4,-1 + 80000170: 00700193 li gp,7 + 80000174: 23df1463 bne t5,t4,8000039c + +0000000080000178 : + 80000178: fff00093 li ra,-1 + 8000017c: 0010df1b srliw t5,ra,0x1 + 80000180: 80000eb7 lui t4,0x80000 + 80000184: fffe8e9b addiw t4,t4,-1 + 80000188: 00800193 li gp,8 + 8000018c: 21df1863 bne t5,t4,8000039c + +0000000080000190 : + 80000190: fff00093 li ra,-1 + 80000194: 0070df1b srliw t5,ra,0x7 + 80000198: 02000eb7 lui t4,0x2000 + 8000019c: fffe8e9b addiw t4,t4,-1 + 800001a0: 00900193 li gp,9 + 800001a4: 1fdf1c63 bne t5,t4,8000039c + +00000000800001a8 : + 800001a8: fff00093 li ra,-1 + 800001ac: 00e0df1b srliw t5,ra,0xe + 800001b0: 00040eb7 lui t4,0x40 + 800001b4: fffe8e9b addiw t4,t4,-1 + 800001b8: 00a00193 li gp,10 + 800001bc: 1fdf1063 bne t5,t4,8000039c + +00000000800001c0 : + 800001c0: fff00093 li ra,-1 + 800001c4: 01f0df1b srliw t5,ra,0x1f + 800001c8: 00100e93 li t4,1 + 800001cc: 00b00193 li gp,11 + 800001d0: 1ddf1663 bne t5,t4,8000039c + +00000000800001d4 : + 800001d4: 212120b7 lui ra,0x21212 + 800001d8: 1210809b addiw ra,ra,289 + 800001dc: 0000df1b srliw t5,ra,0x0 + 800001e0: 21212eb7 lui t4,0x21212 + 800001e4: 121e8e9b addiw t4,t4,289 + 800001e8: 00c00193 li gp,12 + 800001ec: 1bdf1863 bne t5,t4,8000039c + +00000000800001f0 : + 800001f0: 212120b7 lui ra,0x21212 + 800001f4: 1210809b addiw ra,ra,289 + 800001f8: 0010df1b srliw t5,ra,0x1 + 800001fc: 10909eb7 lui t4,0x10909 + 80000200: 090e8e9b addiw t4,t4,144 + 80000204: 00d00193 li gp,13 + 80000208: 19df1a63 bne t5,t4,8000039c + +000000008000020c : + 8000020c: 212120b7 lui ra,0x21212 + 80000210: 1210809b addiw ra,ra,289 + 80000214: 0070df1b srliw t5,ra,0x7 + 80000218: 00424eb7 lui t4,0x424 + 8000021c: 242e8e9b addiw t4,t4,578 + 80000220: 00e00193 li gp,14 + 80000224: 17df1c63 bne t5,t4,8000039c + +0000000080000228 : + 80000228: 212120b7 lui ra,0x21212 + 8000022c: 1210809b addiw ra,ra,289 + 80000230: 00e0df1b srliw t5,ra,0xe + 80000234: 00008eb7 lui t4,0x8 + 80000238: 484e8e9b addiw t4,t4,1156 + 8000023c: 00f00193 li gp,15 + 80000240: 15df1e63 bne t5,t4,8000039c + +0000000080000244 : + 80000244: 212120b7 lui ra,0x21212 + 80000248: 1210809b addiw ra,ra,289 + 8000024c: 01f0df1b srliw t5,ra,0x1f + 80000250: 00000e93 li t4,0 + 80000254: 01000193 li gp,16 + 80000258: 15df1263 bne t5,t4,8000039c + +000000008000025c : + 8000025c: 800000b7 lui ra,0x80000 + 80000260: 0070d09b srliw ra,ra,0x7 + 80000264: 01000eb7 lui t4,0x1000 + 80000268: 01100193 li gp,17 + 8000026c: 13d09863 bne ra,t4,8000039c + +0000000080000270 : + 80000270: 00000213 li tp,0 + 80000274: 800000b7 lui ra,0x80000 + 80000278: 0070df1b srliw t5,ra,0x7 + 8000027c: 000f0313 mv t1,t5 + 80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000284: 00200293 li t0,2 + 80000288: fe5216e3 bne tp,t0,80000274 + 8000028c: 01000eb7 lui t4,0x1000 + 80000290: 01200193 li gp,18 + 80000294: 11d31463 bne t1,t4,8000039c + +0000000080000298 : + 80000298: 00000213 li tp,0 + 8000029c: 800000b7 lui ra,0x80000 + 800002a0: 00e0df1b srliw t5,ra,0xe + 800002a4: 00000013 nop + 800002a8: 000f0313 mv t1,t5 + 800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b0: 00200293 li t0,2 + 800002b4: fe5214e3 bne tp,t0,8000029c + 800002b8: 00020eb7 lui t4,0x20 + 800002bc: 01300193 li gp,19 + 800002c0: 0dd31e63 bne t1,t4,8000039c + +00000000800002c4 : + 800002c4: 00000213 li tp,0 + 800002c8: 800000b7 lui ra,0x80000 + 800002cc: 0010809b addiw ra,ra,1 + 800002d0: 01f0df1b srliw t5,ra,0x1f + 800002d4: 00000013 nop + 800002d8: 00000013 nop + 800002dc: 000f0313 mv t1,t5 + 800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002e4: 00200293 li t0,2 + 800002e8: fe5210e3 bne tp,t0,800002c8 + 800002ec: 00100e93 li t4,1 + 800002f0: 01400193 li gp,20 + 800002f4: 0bd31463 bne t1,t4,8000039c + +00000000800002f8 : + 800002f8: 00000213 li tp,0 + 800002fc: 800000b7 lui ra,0x80000 + 80000300: 0070df1b srliw t5,ra,0x7 + 80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000308: 00200293 li t0,2 + 8000030c: fe5218e3 bne tp,t0,800002fc + 80000310: 01000eb7 lui t4,0x1000 + 80000314: 01500193 li gp,21 + 80000318: 09df1263 bne t5,t4,8000039c + +000000008000031c : + 8000031c: 00000213 li tp,0 + 80000320: 800000b7 lui ra,0x80000 + 80000324: 00000013 nop + 80000328: 00e0df1b srliw t5,ra,0xe + 8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000330: 00200293 li t0,2 + 80000334: fe5216e3 bne tp,t0,80000320 + 80000338: 00020eb7 lui t4,0x20 + 8000033c: 01600193 li gp,22 + 80000340: 05df1e63 bne t5,t4,8000039c + +0000000080000344 : + 80000344: 00000213 li tp,0 + 80000348: 800000b7 lui ra,0x80000 + 8000034c: 0010809b addiw ra,ra,1 + 80000350: 00000013 nop + 80000354: 00000013 nop + 80000358: 01f0df1b srliw t5,ra,0x1f + 8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000360: 00200293 li t0,2 + 80000364: fe5212e3 bne tp,t0,80000348 + 80000368: 00100e93 li t4,1 + 8000036c: 01700193 li gp,23 + 80000370: 03df1663 bne t5,t4,8000039c + +0000000080000374 : + 80000374: 01f0509b srliw ra,zero,0x1f + 80000378: 00000e93 li t4,0 + 8000037c: 01800193 li gp,24 + 80000380: 01d09e63 bne ra,t4,8000039c + +0000000080000384 : + 80000384: 01f00093 li ra,31 + 80000388: 01c0d01b srliw zero,ra,0x1c + 8000038c: 00000e93 li t4,0 + 80000390: 01900193 li gp,25 + 80000394: 01d01463 bne zero,t4,8000039c + 80000398: 00301c63 bne zero,gp,800003b0 + +000000008000039c : + 8000039c: 0ff0000f fence + 800003a0: 00018063 beqz gp,800003a0 + 800003a4: 00119193 slli gp,gp,0x1 + 800003a8: 0011e193 ori gp,gp,1 + 800003ac: 00000073 ecall + +00000000800003b0 : + 800003b0: 0ff0000f fence + 800003b4: 00100193 li gp,1 + 800003b8: 00000073 ecall + 800003bc: c0001073 unimp + 800003c0: 0000 unimp + 800003c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-srlw b/Tests/isa/rv64ui-p-srlw new file mode 100644 index 0000000..1ed0e33 Binary files /dev/null and b/Tests/isa/rv64ui-p-srlw differ diff --git a/Tests/isa/rv64ui-p-srlw.dump b/Tests/isa/rv64ui-p-srlw.dump new file mode 100644 index 0000000..cf3f837 --- /dev/null +++ b/Tests/isa/rv64ui-p-srlw.dump @@ -0,0 +1,544 @@ + +rv64ui-p-srlw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 800000b7 lui ra,0x80000 + 80000100: 00000113 li sp,0 + 80000104: 0020df3b srlw t5,ra,sp + 80000108: 80000eb7 lui t4,0x80000 + 8000010c: 00200193 li gp,2 + 80000110: 57df1863 bne t5,t4,80000680 + +0000000080000114 : + 80000114: 800000b7 lui ra,0x80000 + 80000118: 00100113 li sp,1 + 8000011c: 0020df3b srlw t5,ra,sp + 80000120: 40000eb7 lui t4,0x40000 + 80000124: 00300193 li gp,3 + 80000128: 55df1c63 bne t5,t4,80000680 + +000000008000012c : + 8000012c: 800000b7 lui ra,0x80000 + 80000130: 00700113 li sp,7 + 80000134: 0020df3b srlw t5,ra,sp + 80000138: 01000eb7 lui t4,0x1000 + 8000013c: 00400193 li gp,4 + 80000140: 55df1063 bne t5,t4,80000680 + +0000000080000144 : + 80000144: 800000b7 lui ra,0x80000 + 80000148: 00e00113 li sp,14 + 8000014c: 0020df3b srlw t5,ra,sp + 80000150: 00020eb7 lui t4,0x20 + 80000154: 00500193 li gp,5 + 80000158: 53df1463 bne t5,t4,80000680 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 0010809b addiw ra,ra,1 + 80000164: 01f00113 li sp,31 + 80000168: 0020df3b srlw t5,ra,sp + 8000016c: 00100e93 li t4,1 + 80000170: 00600193 li gp,6 + 80000174: 51df1663 bne t5,t4,80000680 + +0000000080000178 : + 80000178: fff00093 li ra,-1 + 8000017c: 00000113 li sp,0 + 80000180: 0020df3b srlw t5,ra,sp + 80000184: fff00e93 li t4,-1 + 80000188: 00700193 li gp,7 + 8000018c: 4fdf1a63 bne t5,t4,80000680 + +0000000080000190 : + 80000190: fff00093 li ra,-1 + 80000194: 00100113 li sp,1 + 80000198: 0020df3b srlw t5,ra,sp + 8000019c: 80000eb7 lui t4,0x80000 + 800001a0: fffe8e9b addiw t4,t4,-1 + 800001a4: 00800193 li gp,8 + 800001a8: 4ddf1c63 bne t5,t4,80000680 + +00000000800001ac : + 800001ac: fff00093 li ra,-1 + 800001b0: 00700113 li sp,7 + 800001b4: 0020df3b srlw t5,ra,sp + 800001b8: 02000eb7 lui t4,0x2000 + 800001bc: fffe8e9b addiw t4,t4,-1 + 800001c0: 00900193 li gp,9 + 800001c4: 4bdf1e63 bne t5,t4,80000680 + +00000000800001c8 : + 800001c8: fff00093 li ra,-1 + 800001cc: 00e00113 li sp,14 + 800001d0: 0020df3b srlw t5,ra,sp + 800001d4: 00040eb7 lui t4,0x40 + 800001d8: fffe8e9b addiw t4,t4,-1 + 800001dc: 00a00193 li gp,10 + 800001e0: 4bdf1063 bne t5,t4,80000680 + +00000000800001e4 : + 800001e4: fff00093 li ra,-1 + 800001e8: 01f00113 li sp,31 + 800001ec: 0020df3b srlw t5,ra,sp + 800001f0: 00100e93 li t4,1 + 800001f4: 00b00193 li gp,11 + 800001f8: 49df1463 bne t5,t4,80000680 + +00000000800001fc : + 800001fc: 212120b7 lui ra,0x21212 + 80000200: 1210809b addiw ra,ra,289 + 80000204: 00000113 li sp,0 + 80000208: 0020df3b srlw t5,ra,sp + 8000020c: 21212eb7 lui t4,0x21212 + 80000210: 121e8e9b addiw t4,t4,289 + 80000214: 00c00193 li gp,12 + 80000218: 47df1463 bne t5,t4,80000680 + +000000008000021c : + 8000021c: 212120b7 lui ra,0x21212 + 80000220: 1210809b addiw ra,ra,289 + 80000224: 00100113 li sp,1 + 80000228: 0020df3b srlw t5,ra,sp + 8000022c: 10909eb7 lui t4,0x10909 + 80000230: 090e8e9b addiw t4,t4,144 + 80000234: 00d00193 li gp,13 + 80000238: 45df1463 bne t5,t4,80000680 + +000000008000023c : + 8000023c: 212120b7 lui ra,0x21212 + 80000240: 1210809b addiw ra,ra,289 + 80000244: 00700113 li sp,7 + 80000248: 0020df3b srlw t5,ra,sp + 8000024c: 00424eb7 lui t4,0x424 + 80000250: 242e8e9b addiw t4,t4,578 + 80000254: 00e00193 li gp,14 + 80000258: 43df1463 bne t5,t4,80000680 + +000000008000025c : + 8000025c: 212120b7 lui ra,0x21212 + 80000260: 1210809b addiw ra,ra,289 + 80000264: 00e00113 li sp,14 + 80000268: 0020df3b srlw t5,ra,sp + 8000026c: 00008eb7 lui t4,0x8 + 80000270: 484e8e9b addiw t4,t4,1156 + 80000274: 00f00193 li gp,15 + 80000278: 41df1463 bne t5,t4,80000680 + +000000008000027c : + 8000027c: 212120b7 lui ra,0x21212 + 80000280: 1210809b addiw ra,ra,289 + 80000284: 01f00113 li sp,31 + 80000288: 0020df3b srlw t5,ra,sp + 8000028c: 00000e93 li t4,0 + 80000290: 01000193 li gp,16 + 80000294: 3fdf1663 bne t5,t4,80000680 + +0000000080000298 : + 80000298: 212120b7 lui ra,0x21212 + 8000029c: 1210809b addiw ra,ra,289 + 800002a0: fe000113 li sp,-32 + 800002a4: 0020df3b srlw t5,ra,sp + 800002a8: 21212eb7 lui t4,0x21212 + 800002ac: 121e8e9b addiw t4,t4,289 + 800002b0: 01100193 li gp,17 + 800002b4: 3ddf1663 bne t5,t4,80000680 + +00000000800002b8 : + 800002b8: 212120b7 lui ra,0x21212 + 800002bc: 1210809b addiw ra,ra,289 + 800002c0: fe100113 li sp,-31 + 800002c4: 0020df3b srlw t5,ra,sp + 800002c8: 10909eb7 lui t4,0x10909 + 800002cc: 090e8e9b addiw t4,t4,144 + 800002d0: 01200193 li gp,18 + 800002d4: 3bdf1663 bne t5,t4,80000680 + +00000000800002d8 : + 800002d8: 212120b7 lui ra,0x21212 + 800002dc: 1210809b addiw ra,ra,289 + 800002e0: fe700113 li sp,-25 + 800002e4: 0020df3b srlw t5,ra,sp + 800002e8: 00424eb7 lui t4,0x424 + 800002ec: 242e8e9b addiw t4,t4,578 + 800002f0: 01300193 li gp,19 + 800002f4: 39df1663 bne t5,t4,80000680 + +00000000800002f8 : + 800002f8: 212120b7 lui ra,0x21212 + 800002fc: 1210809b addiw ra,ra,289 + 80000300: fee00113 li sp,-18 + 80000304: 0020df3b srlw t5,ra,sp + 80000308: 00008eb7 lui t4,0x8 + 8000030c: 484e8e9b addiw t4,t4,1156 + 80000310: 01400193 li gp,20 + 80000314: 37df1663 bne t5,t4,80000680 + +0000000080000318 : + 80000318: 212120b7 lui ra,0x21212 + 8000031c: 1210809b addiw ra,ra,289 + 80000320: fff00113 li sp,-1 + 80000324: 0020df3b srlw t5,ra,sp + 80000328: 00000e93 li t4,0 + 8000032c: 01500193 li gp,21 + 80000330: 35df1863 bne t5,t4,80000680 + +0000000080000334 : + 80000334: 800000b7 lui ra,0x80000 + 80000338: 00700113 li sp,7 + 8000033c: 0020d0bb srlw ra,ra,sp + 80000340: 01000eb7 lui t4,0x1000 + 80000344: 01600193 li gp,22 + 80000348: 33d09c63 bne ra,t4,80000680 + +000000008000034c : + 8000034c: 800000b7 lui ra,0x80000 + 80000350: 00e00113 li sp,14 + 80000354: 0020d13b srlw sp,ra,sp + 80000358: 00020eb7 lui t4,0x20 + 8000035c: 01700193 li gp,23 + 80000360: 33d11063 bne sp,t4,80000680 + +0000000080000364 : + 80000364: 00700093 li ra,7 + 80000368: 0010d0bb srlw ra,ra,ra + 8000036c: 00000e93 li t4,0 + 80000370: 01800193 li gp,24 + 80000374: 31d09663 bne ra,t4,80000680 + +0000000080000378 : + 80000378: 00000213 li tp,0 + 8000037c: 800000b7 lui ra,0x80000 + 80000380: 00700113 li sp,7 + 80000384: 0020df3b srlw t5,ra,sp + 80000388: 000f0313 mv t1,t5 + 8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000390: 00200293 li t0,2 + 80000394: fe5214e3 bne tp,t0,8000037c + 80000398: 01000eb7 lui t4,0x1000 + 8000039c: 01900193 li gp,25 + 800003a0: 2fd31063 bne t1,t4,80000680 + +00000000800003a4 : + 800003a4: 00000213 li tp,0 + 800003a8: 800000b7 lui ra,0x80000 + 800003ac: 00e00113 li sp,14 + 800003b0: 0020df3b srlw t5,ra,sp + 800003b4: 00000013 nop + 800003b8: 000f0313 mv t1,t5 + 800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c0: 00200293 li t0,2 + 800003c4: fe5212e3 bne tp,t0,800003a8 + 800003c8: 00020eb7 lui t4,0x20 + 800003cc: 01a00193 li gp,26 + 800003d0: 2bd31863 bne t1,t4,80000680 + +00000000800003d4 : + 800003d4: 00000213 li tp,0 + 800003d8: 800000b7 lui ra,0x80000 + 800003dc: 01f00113 li sp,31 + 800003e0: 0020df3b srlw t5,ra,sp + 800003e4: 00000013 nop + 800003e8: 00000013 nop + 800003ec: 000f0313 mv t1,t5 + 800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003f4: 00200293 li t0,2 + 800003f8: fe5210e3 bne tp,t0,800003d8 + 800003fc: 00100e93 li t4,1 + 80000400: 01b00193 li gp,27 + 80000404: 27d31e63 bne t1,t4,80000680 + +0000000080000408 : + 80000408: 00000213 li tp,0 + 8000040c: 800000b7 lui ra,0x80000 + 80000410: 00700113 li sp,7 + 80000414: 0020df3b srlw t5,ra,sp + 80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000041c: 00200293 li t0,2 + 80000420: fe5216e3 bne tp,t0,8000040c + 80000424: 01000eb7 lui t4,0x1000 + 80000428: 01c00193 li gp,28 + 8000042c: 25df1a63 bne t5,t4,80000680 + +0000000080000430 : + 80000430: 00000213 li tp,0 + 80000434: 800000b7 lui ra,0x80000 + 80000438: 00e00113 li sp,14 + 8000043c: 00000013 nop + 80000440: 0020df3b srlw t5,ra,sp + 80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000448: 00200293 li t0,2 + 8000044c: fe5214e3 bne tp,t0,80000434 + 80000450: 00020eb7 lui t4,0x20 + 80000454: 01d00193 li gp,29 + 80000458: 23df1463 bne t5,t4,80000680 + +000000008000045c : + 8000045c: 00000213 li tp,0 + 80000460: 800000b7 lui ra,0x80000 + 80000464: 01f00113 li sp,31 + 80000468: 00000013 nop + 8000046c: 00000013 nop + 80000470: 0020df3b srlw t5,ra,sp + 80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000478: 00200293 li t0,2 + 8000047c: fe5212e3 bne tp,t0,80000460 + 80000480: 00100e93 li t4,1 + 80000484: 01e00193 li gp,30 + 80000488: 1fdf1c63 bne t5,t4,80000680 + +000000008000048c : + 8000048c: 00000213 li tp,0 + 80000490: 800000b7 lui ra,0x80000 + 80000494: 00000013 nop + 80000498: 00700113 li sp,7 + 8000049c: 0020df3b srlw t5,ra,sp + 800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004a4: 00200293 li t0,2 + 800004a8: fe5214e3 bne tp,t0,80000490 + 800004ac: 01000eb7 lui t4,0x1000 + 800004b0: 01f00193 li gp,31 + 800004b4: 1ddf1663 bne t5,t4,80000680 + +00000000800004b8 : + 800004b8: 00000213 li tp,0 + 800004bc: 800000b7 lui ra,0x80000 + 800004c0: 00000013 nop + 800004c4: 00e00113 li sp,14 + 800004c8: 00000013 nop + 800004cc: 0020df3b srlw t5,ra,sp + 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d4: 00200293 li t0,2 + 800004d8: fe5212e3 bne tp,t0,800004bc + 800004dc: 00020eb7 lui t4,0x20 + 800004e0: 02000193 li gp,32 + 800004e4: 19df1e63 bne t5,t4,80000680 + +00000000800004e8 : + 800004e8: 00000213 li tp,0 + 800004ec: 800000b7 lui ra,0x80000 + 800004f0: 00000013 nop + 800004f4: 00000013 nop + 800004f8: 01f00113 li sp,31 + 800004fc: 0020df3b srlw t5,ra,sp + 80000500: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000504: 00200293 li t0,2 + 80000508: fe5212e3 bne tp,t0,800004ec + 8000050c: 00100e93 li t4,1 + 80000510: 02100193 li gp,33 + 80000514: 17df1663 bne t5,t4,80000680 + +0000000080000518 : + 80000518: 00000213 li tp,0 + 8000051c: 00700113 li sp,7 + 80000520: 800000b7 lui ra,0x80000 + 80000524: 0020df3b srlw t5,ra,sp + 80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000052c: 00200293 li t0,2 + 80000530: fe5216e3 bne tp,t0,8000051c + 80000534: 01000eb7 lui t4,0x1000 + 80000538: 02200193 li gp,34 + 8000053c: 15df1263 bne t5,t4,80000680 + +0000000080000540 : + 80000540: 00000213 li tp,0 + 80000544: 00e00113 li sp,14 + 80000548: 800000b7 lui ra,0x80000 + 8000054c: 00000013 nop + 80000550: 0020df3b srlw t5,ra,sp + 80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000558: 00200293 li t0,2 + 8000055c: fe5214e3 bne tp,t0,80000544 + 80000560: 00020eb7 lui t4,0x20 + 80000564: 02300193 li gp,35 + 80000568: 11df1c63 bne t5,t4,80000680 + +000000008000056c : + 8000056c: 00000213 li tp,0 + 80000570: 01f00113 li sp,31 + 80000574: 800000b7 lui ra,0x80000 + 80000578: 00000013 nop + 8000057c: 00000013 nop + 80000580: 0020df3b srlw t5,ra,sp + 80000584: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000588: 00200293 li t0,2 + 8000058c: fe5212e3 bne tp,t0,80000570 + 80000590: 00100e93 li t4,1 + 80000594: 02400193 li gp,36 + 80000598: 0fdf1463 bne t5,t4,80000680 + +000000008000059c : + 8000059c: 00000213 li tp,0 + 800005a0: 00700113 li sp,7 + 800005a4: 00000013 nop + 800005a8: 800000b7 lui ra,0x80000 + 800005ac: 0020df3b srlw t5,ra,sp + 800005b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005b4: 00200293 li t0,2 + 800005b8: fe5214e3 bne tp,t0,800005a0 + 800005bc: 01000eb7 lui t4,0x1000 + 800005c0: 02500193 li gp,37 + 800005c4: 0bdf1e63 bne t5,t4,80000680 + +00000000800005c8 : + 800005c8: 00000213 li tp,0 + 800005cc: 00e00113 li sp,14 + 800005d0: 00000013 nop + 800005d4: 800000b7 lui ra,0x80000 + 800005d8: 00000013 nop + 800005dc: 0020df3b srlw t5,ra,sp + 800005e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005e4: 00200293 li t0,2 + 800005e8: fe5212e3 bne tp,t0,800005cc + 800005ec: 00020eb7 lui t4,0x20 + 800005f0: 02600193 li gp,38 + 800005f4: 09df1663 bne t5,t4,80000680 + +00000000800005f8 : + 800005f8: 00000213 li tp,0 + 800005fc: 01f00113 li sp,31 + 80000600: 00000013 nop + 80000604: 00000013 nop + 80000608: 800000b7 lui ra,0x80000 + 8000060c: 0020df3b srlw t5,ra,sp + 80000610: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000614: 00200293 li t0,2 + 80000618: fe5212e3 bne tp,t0,800005fc + 8000061c: 00100e93 li t4,1 + 80000620: 02700193 li gp,39 + 80000624: 05df1e63 bne t5,t4,80000680 + +0000000080000628 : + 80000628: 00f00093 li ra,15 + 8000062c: 0010513b srlw sp,zero,ra + 80000630: 00000e93 li t4,0 + 80000634: 02800193 li gp,40 + 80000638: 05d11463 bne sp,t4,80000680 + +000000008000063c : + 8000063c: 02000093 li ra,32 + 80000640: 0000d13b srlw sp,ra,zero + 80000644: 02000e93 li t4,32 + 80000648: 02900193 li gp,41 + 8000064c: 03d11a63 bne sp,t4,80000680 + +0000000080000650 : + 80000650: 000050bb srlw ra,zero,zero + 80000654: 00000e93 li t4,0 + 80000658: 02a00193 li gp,42 + 8000065c: 03d09263 bne ra,t4,80000680 + +0000000080000660 : + 80000660: 40000093 li ra,1024 + 80000664: 00001137 lui sp,0x1 + 80000668: 8001011b addiw sp,sp,-2048 + 8000066c: 0020d03b srlw zero,ra,sp + 80000670: 00000e93 li t4,0 + 80000674: 02b00193 li gp,43 + 80000678: 01d01463 bne zero,t4,80000680 + 8000067c: 00301c63 bne zero,gp,80000694 + +0000000080000680 : + 80000680: 0ff0000f fence + 80000684: 00018063 beqz gp,80000684 + 80000688: 00119193 slli gp,gp,0x1 + 8000068c: 0011e193 ori gp,gp,1 + 80000690: 00000073 ecall + +0000000080000694 : + 80000694: 0ff0000f fence + 80000698: 00100193 li gp,1 + 8000069c: 00000073 ecall + 800006a0: c0001073 unimp + 800006a4: 0000 unimp + 800006a6: 0000 unimp + 800006a8: 0000 unimp + 800006aa: 0000 unimp + 800006ac: 0000 unimp + 800006ae: 0000 unimp + 800006b0: 0000 unimp + 800006b2: 0000 unimp + 800006b4: 0000 unimp + 800006b6: 0000 unimp + 800006b8: 0000 unimp + 800006ba: 0000 unimp + 800006bc: 0000 unimp + 800006be: 0000 unimp + 800006c0: 0000 unimp + 800006c2: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sub b/Tests/isa/rv64ui-p-sub new file mode 100644 index 0000000..0f53cb6 Binary files /dev/null and b/Tests/isa/rv64ui-p-sub differ diff --git a/Tests/isa/rv64ui-p-sub.dump b/Tests/isa/rv64ui-p-sub.dump new file mode 100644 index 0000000..34bda7b --- /dev/null +++ b/Tests/isa/rv64ui-p-sub.dump @@ -0,0 +1,481 @@ + +rv64ui-p-sub: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 40208f33 sub t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 4bdf1e63 bne t5,t4,800005cc + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 40208f33 sub t5,ra,sp + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 4bdf1263 bne t5,t4,800005cc + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 40208f33 sub t5,ra,sp + 80000138: ffc00e93 li t4,-4 + 8000013c: 00400193 li gp,4 + 80000140: 49df1663 bne t5,t4,800005cc + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 40208f33 sub t5,ra,sp + 80000150: 00008eb7 lui t4,0x8 + 80000154: 00500193 li gp,5 + 80000158: 47df1a63 bne t5,t4,800005cc + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 40208f33 sub t5,ra,sp + 80000168: 80000eb7 lui t4,0x80000 + 8000016c: 00600193 li gp,6 + 80000170: 45df1e63 bne t5,t4,800005cc + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 40208f33 sub t5,ra,sp + 80000180: 80008eb7 lui t4,0x80008 + 80000184: 00700193 li gp,7 + 80000188: 45df1263 bne t5,t4,800005cc + +000000008000018c : + 8000018c: 00000093 li ra,0 + 80000190: 00008137 lui sp,0x8 + 80000194: fff1011b addiw sp,sp,-1 + 80000198: 40208f33 sub t5,ra,sp + 8000019c: ffff8eb7 lui t4,0xffff8 + 800001a0: 001e8e9b addiw t4,t4,1 + 800001a4: 00800193 li gp,8 + 800001a8: 43df1263 bne t5,t4,800005cc + +00000000800001ac : + 800001ac: 800000b7 lui ra,0x80000 + 800001b0: fff0809b addiw ra,ra,-1 + 800001b4: 00000113 li sp,0 + 800001b8: 40208f33 sub t5,ra,sp + 800001bc: 80000eb7 lui t4,0x80000 + 800001c0: fffe8e9b addiw t4,t4,-1 + 800001c4: 00900193 li gp,9 + 800001c8: 41df1263 bne t5,t4,800005cc + +00000000800001cc : + 800001cc: 800000b7 lui ra,0x80000 + 800001d0: fff0809b addiw ra,ra,-1 + 800001d4: 00008137 lui sp,0x8 + 800001d8: fff1011b addiw sp,sp,-1 + 800001dc: 40208f33 sub t5,ra,sp + 800001e0: 7fff8eb7 lui t4,0x7fff8 + 800001e4: 00a00193 li gp,10 + 800001e8: 3fdf1263 bne t5,t4,800005cc + +00000000800001ec : + 800001ec: 800000b7 lui ra,0x80000 + 800001f0: 00008137 lui sp,0x8 + 800001f4: fff1011b addiw sp,sp,-1 + 800001f8: 40208f33 sub t5,ra,sp + 800001fc: ffff0eb7 lui t4,0xffff0 + 80000200: fffe8e9b addiw t4,t4,-1 + 80000204: 00fe9e93 slli t4,t4,0xf + 80000208: 001e8e93 addi t4,t4,1 # ffffffffffff0001 <_end+0xffffffff7ffee001> + 8000020c: 00b00193 li gp,11 + 80000210: 3bdf1e63 bne t5,t4,800005cc + +0000000080000214 : + 80000214: 800000b7 lui ra,0x80000 + 80000218: fff0809b addiw ra,ra,-1 + 8000021c: ffff8137 lui sp,0xffff8 + 80000220: 40208f33 sub t5,ra,sp + 80000224: 00010eb7 lui t4,0x10 + 80000228: 001e8e9b addiw t4,t4,1 + 8000022c: 00fe9e93 slli t4,t4,0xf + 80000230: fffe8e93 addi t4,t4,-1 # ffff <_start-0x7fff0001> + 80000234: 00c00193 li gp,12 + 80000238: 39df1a63 bne t5,t4,800005cc + +000000008000023c : + 8000023c: 00000093 li ra,0 + 80000240: fff00113 li sp,-1 + 80000244: 40208f33 sub t5,ra,sp + 80000248: 00100e93 li t4,1 + 8000024c: 00d00193 li gp,13 + 80000250: 37df1e63 bne t5,t4,800005cc + +0000000080000254 : + 80000254: fff00093 li ra,-1 + 80000258: 00100113 li sp,1 + 8000025c: 40208f33 sub t5,ra,sp + 80000260: ffe00e93 li t4,-2 + 80000264: 00e00193 li gp,14 + 80000268: 37df1263 bne t5,t4,800005cc + +000000008000026c : + 8000026c: fff00093 li ra,-1 + 80000270: fff00113 li sp,-1 + 80000274: 40208f33 sub t5,ra,sp + 80000278: 00000e93 li t4,0 + 8000027c: 00f00193 li gp,15 + 80000280: 35df1663 bne t5,t4,800005cc + +0000000080000284 : + 80000284: 00d00093 li ra,13 + 80000288: 00b00113 li sp,11 + 8000028c: 402080b3 sub ra,ra,sp + 80000290: 00200e93 li t4,2 + 80000294: 01000193 li gp,16 + 80000298: 33d09a63 bne ra,t4,800005cc + +000000008000029c : + 8000029c: 00e00093 li ra,14 + 800002a0: 00b00113 li sp,11 + 800002a4: 40208133 sub sp,ra,sp + 800002a8: 00300e93 li t4,3 + 800002ac: 01100193 li gp,17 + 800002b0: 31d11e63 bne sp,t4,800005cc + +00000000800002b4 : + 800002b4: 00d00093 li ra,13 + 800002b8: 401080b3 sub ra,ra,ra + 800002bc: 00000e93 li t4,0 + 800002c0: 01200193 li gp,18 + 800002c4: 31d09463 bne ra,t4,800005cc + +00000000800002c8 : + 800002c8: 00000213 li tp,0 + 800002cc: 00d00093 li ra,13 + 800002d0: 00b00113 li sp,11 + 800002d4: 40208f33 sub t5,ra,sp + 800002d8: 000f0313 mv t1,t5 + 800002dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002e0: 00200293 li t0,2 + 800002e4: fe5214e3 bne tp,t0,800002cc + 800002e8: 00200e93 li t4,2 + 800002ec: 01300193 li gp,19 + 800002f0: 2dd31e63 bne t1,t4,800005cc + +00000000800002f4 : + 800002f4: 00000213 li tp,0 + 800002f8: 00e00093 li ra,14 + 800002fc: 00b00113 li sp,11 + 80000300: 40208f33 sub t5,ra,sp + 80000304: 00000013 nop + 80000308: 000f0313 mv t1,t5 + 8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000310: 00200293 li t0,2 + 80000314: fe5212e3 bne tp,t0,800002f8 + 80000318: 00300e93 li t4,3 + 8000031c: 01400193 li gp,20 + 80000320: 2bd31663 bne t1,t4,800005cc + +0000000080000324 : + 80000324: 00000213 li tp,0 + 80000328: 00f00093 li ra,15 + 8000032c: 00b00113 li sp,11 + 80000330: 40208f33 sub t5,ra,sp + 80000334: 00000013 nop + 80000338: 00000013 nop + 8000033c: 000f0313 mv t1,t5 + 80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000344: 00200293 li t0,2 + 80000348: fe5210e3 bne tp,t0,80000328 + 8000034c: 00400e93 li t4,4 + 80000350: 01500193 li gp,21 + 80000354: 27d31c63 bne t1,t4,800005cc + +0000000080000358 : + 80000358: 00000213 li tp,0 + 8000035c: 00d00093 li ra,13 + 80000360: 00b00113 li sp,11 + 80000364: 40208f33 sub t5,ra,sp + 80000368: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000036c: 00200293 li t0,2 + 80000370: fe5216e3 bne tp,t0,8000035c + 80000374: 00200e93 li t4,2 + 80000378: 01600193 li gp,22 + 8000037c: 25df1863 bne t5,t4,800005cc + +0000000080000380 : + 80000380: 00000213 li tp,0 + 80000384: 00e00093 li ra,14 + 80000388: 00b00113 li sp,11 + 8000038c: 00000013 nop + 80000390: 40208f33 sub t5,ra,sp + 80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000398: 00200293 li t0,2 + 8000039c: fe5214e3 bne tp,t0,80000384 + 800003a0: 00300e93 li t4,3 + 800003a4: 01700193 li gp,23 + 800003a8: 23df1263 bne t5,t4,800005cc + +00000000800003ac : + 800003ac: 00000213 li tp,0 + 800003b0: 00f00093 li ra,15 + 800003b4: 00b00113 li sp,11 + 800003b8: 00000013 nop + 800003bc: 00000013 nop + 800003c0: 40208f33 sub t5,ra,sp + 800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c8: 00200293 li t0,2 + 800003cc: fe5212e3 bne tp,t0,800003b0 + 800003d0: 00400e93 li t4,4 + 800003d4: 01800193 li gp,24 + 800003d8: 1fdf1a63 bne t5,t4,800005cc + +00000000800003dc : + 800003dc: 00000213 li tp,0 + 800003e0: 00d00093 li ra,13 + 800003e4: 00000013 nop + 800003e8: 00b00113 li sp,11 + 800003ec: 40208f33 sub t5,ra,sp + 800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003f4: 00200293 li t0,2 + 800003f8: fe5214e3 bne tp,t0,800003e0 + 800003fc: 00200e93 li t4,2 + 80000400: 01900193 li gp,25 + 80000404: 1ddf1463 bne t5,t4,800005cc + +0000000080000408 : + 80000408: 00000213 li tp,0 + 8000040c: 00e00093 li ra,14 + 80000410: 00000013 nop + 80000414: 00b00113 li sp,11 + 80000418: 00000013 nop + 8000041c: 40208f33 sub t5,ra,sp + 80000420: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000424: 00200293 li t0,2 + 80000428: fe5212e3 bne tp,t0,8000040c + 8000042c: 00300e93 li t4,3 + 80000430: 01a00193 li gp,26 + 80000434: 19df1c63 bne t5,t4,800005cc + +0000000080000438 : + 80000438: 00000213 li tp,0 + 8000043c: 00f00093 li ra,15 + 80000440: 00000013 nop + 80000444: 00000013 nop + 80000448: 00b00113 li sp,11 + 8000044c: 40208f33 sub t5,ra,sp + 80000450: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000454: 00200293 li t0,2 + 80000458: fe5212e3 bne tp,t0,8000043c + 8000045c: 00400e93 li t4,4 + 80000460: 01b00193 li gp,27 + 80000464: 17df1463 bne t5,t4,800005cc + +0000000080000468 : + 80000468: 00000213 li tp,0 + 8000046c: 00b00113 li sp,11 + 80000470: 00d00093 li ra,13 + 80000474: 40208f33 sub t5,ra,sp + 80000478: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000047c: 00200293 li t0,2 + 80000480: fe5216e3 bne tp,t0,8000046c + 80000484: 00200e93 li t4,2 + 80000488: 01c00193 li gp,28 + 8000048c: 15df1063 bne t5,t4,800005cc + +0000000080000490 : + 80000490: 00000213 li tp,0 + 80000494: 00b00113 li sp,11 + 80000498: 00e00093 li ra,14 + 8000049c: 00000013 nop + 800004a0: 40208f33 sub t5,ra,sp + 800004a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004a8: 00200293 li t0,2 + 800004ac: fe5214e3 bne tp,t0,80000494 + 800004b0: 00300e93 li t4,3 + 800004b4: 01d00193 li gp,29 + 800004b8: 11df1a63 bne t5,t4,800005cc + +00000000800004bc : + 800004bc: 00000213 li tp,0 + 800004c0: 00b00113 li sp,11 + 800004c4: 00f00093 li ra,15 + 800004c8: 00000013 nop + 800004cc: 00000013 nop + 800004d0: 40208f33 sub t5,ra,sp + 800004d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d8: 00200293 li t0,2 + 800004dc: fe5212e3 bne tp,t0,800004c0 + 800004e0: 00400e93 li t4,4 + 800004e4: 01e00193 li gp,30 + 800004e8: 0fdf1263 bne t5,t4,800005cc + +00000000800004ec : + 800004ec: 00000213 li tp,0 + 800004f0: 00b00113 li sp,11 + 800004f4: 00000013 nop + 800004f8: 00d00093 li ra,13 + 800004fc: 40208f33 sub t5,ra,sp + 80000500: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000504: 00200293 li t0,2 + 80000508: fe5214e3 bne tp,t0,800004f0 + 8000050c: 00200e93 li t4,2 + 80000510: 01f00193 li gp,31 + 80000514: 0bdf1c63 bne t5,t4,800005cc + +0000000080000518 : + 80000518: 00000213 li tp,0 + 8000051c: 00b00113 li sp,11 + 80000520: 00000013 nop + 80000524: 00e00093 li ra,14 + 80000528: 00000013 nop + 8000052c: 40208f33 sub t5,ra,sp + 80000530: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000534: 00200293 li t0,2 + 80000538: fe5212e3 bne tp,t0,8000051c + 8000053c: 00300e93 li t4,3 + 80000540: 02000193 li gp,32 + 80000544: 09df1463 bne t5,t4,800005cc + +0000000080000548 : + 80000548: 00000213 li tp,0 + 8000054c: 00b00113 li sp,11 + 80000550: 00000013 nop + 80000554: 00000013 nop + 80000558: 00f00093 li ra,15 + 8000055c: 40208f33 sub t5,ra,sp + 80000560: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000564: 00200293 li t0,2 + 80000568: fe5212e3 bne tp,t0,8000054c + 8000056c: 00400e93 li t4,4 + 80000570: 02100193 li gp,33 + 80000574: 05df1c63 bne t5,t4,800005cc + +0000000080000578 : + 80000578: ff100093 li ra,-15 + 8000057c: 40100133 neg sp,ra + 80000580: 00f00e93 li t4,15 + 80000584: 02200193 li gp,34 + 80000588: 05d11263 bne sp,t4,800005cc + +000000008000058c : + 8000058c: 02000093 li ra,32 + 80000590: 40008133 sub sp,ra,zero + 80000594: 02000e93 li t4,32 + 80000598: 02300193 li gp,35 + 8000059c: 03d11863 bne sp,t4,800005cc + +00000000800005a0 : + 800005a0: 400000b3 neg ra,zero + 800005a4: 00000e93 li t4,0 + 800005a8: 02400193 li gp,36 + 800005ac: 03d09063 bne ra,t4,800005cc + +00000000800005b0 : + 800005b0: 01000093 li ra,16 + 800005b4: 01e00113 li sp,30 + 800005b8: 40208033 sub zero,ra,sp + 800005bc: 00000e93 li t4,0 + 800005c0: 02500193 li gp,37 + 800005c4: 01d01463 bne zero,t4,800005cc + 800005c8: 00301c63 bne zero,gp,800005e0 + +00000000800005cc : + 800005cc: 0ff0000f fence + 800005d0: 00018063 beqz gp,800005d0 + 800005d4: 00119193 slli gp,gp,0x1 + 800005d8: 0011e193 ori gp,gp,1 + 800005dc: 00000073 ecall + +00000000800005e0 : + 800005e0: 0ff0000f fence + 800005e4: 00100193 li gp,1 + 800005e8: 00000073 ecall + 800005ec: c0001073 unimp + 800005f0: 0000 unimp + 800005f2: 0000 unimp + 800005f4: 0000 unimp + 800005f6: 0000 unimp + 800005f8: 0000 unimp + 800005fa: 0000 unimp + 800005fc: 0000 unimp + 800005fe: 0000 unimp + 80000600: 0000 unimp + 80000602: 0000 unimp diff --git a/Tests/isa/rv64ui-p-subw b/Tests/isa/rv64ui-p-subw new file mode 100644 index 0000000..312ac23 Binary files /dev/null and b/Tests/isa/rv64ui-p-subw differ diff --git a/Tests/isa/rv64ui-p-subw.dump b/Tests/isa/rv64ui-p-subw.dump new file mode 100644 index 0000000..0a29bbf --- /dev/null +++ b/Tests/isa/rv64ui-p-subw.dump @@ -0,0 +1,485 @@ + +rv64ui-p-subw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 40208f3b subw t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 4bdf1663 bne t5,t4,800005bc + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 40208f3b subw t5,ra,sp + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 49df1a63 bne t5,t4,800005bc + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 40208f3b subw t5,ra,sp + 80000138: ffc00e93 li t4,-4 + 8000013c: 00400193 li gp,4 + 80000140: 47df1e63 bne t5,t4,800005bc + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 40208f3b subw t5,ra,sp + 80000150: 00008eb7 lui t4,0x8 + 80000154: 00500193 li gp,5 + 80000158: 47df1263 bne t5,t4,800005bc + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 40208f3b subw t5,ra,sp + 80000168: 80000eb7 lui t4,0x80000 + 8000016c: 00600193 li gp,6 + 80000170: 45df1663 bne t5,t4,800005bc + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 40208f3b subw t5,ra,sp + 80000180: 80008eb7 lui t4,0x80008 + 80000184: 00700193 li gp,7 + 80000188: 43df1a63 bne t5,t4,800005bc + +000000008000018c : + 8000018c: 00000093 li ra,0 + 80000190: 00008137 lui sp,0x8 + 80000194: fff1011b addiw sp,sp,-1 + 80000198: 40208f3b subw t5,ra,sp + 8000019c: ffff8eb7 lui t4,0xffff8 + 800001a0: 001e8e9b addiw t4,t4,1 + 800001a4: 00800193 li gp,8 + 800001a8: 41df1a63 bne t5,t4,800005bc + +00000000800001ac : + 800001ac: 800000b7 lui ra,0x80000 + 800001b0: fff0809b addiw ra,ra,-1 + 800001b4: 00000113 li sp,0 + 800001b8: 40208f3b subw t5,ra,sp + 800001bc: 80000eb7 lui t4,0x80000 + 800001c0: fffe8e9b addiw t4,t4,-1 + 800001c4: 00900193 li gp,9 + 800001c8: 3fdf1a63 bne t5,t4,800005bc + +00000000800001cc : + 800001cc: 800000b7 lui ra,0x80000 + 800001d0: fff0809b addiw ra,ra,-1 + 800001d4: 00008137 lui sp,0x8 + 800001d8: fff1011b addiw sp,sp,-1 + 800001dc: 40208f3b subw t5,ra,sp + 800001e0: 7fff8eb7 lui t4,0x7fff8 + 800001e4: 00a00193 li gp,10 + 800001e8: 3ddf1a63 bne t5,t4,800005bc + +00000000800001ec : + 800001ec: 800000b7 lui ra,0x80000 + 800001f0: 00008137 lui sp,0x8 + 800001f4: fff1011b addiw sp,sp,-1 + 800001f8: 40208f3b subw t5,ra,sp + 800001fc: 7fff8eb7 lui t4,0x7fff8 + 80000200: 001e8e9b addiw t4,t4,1 + 80000204: 00b00193 li gp,11 + 80000208: 3bdf1a63 bne t5,t4,800005bc + +000000008000020c : + 8000020c: 800000b7 lui ra,0x80000 + 80000210: fff0809b addiw ra,ra,-1 + 80000214: ffff8137 lui sp,0xffff8 + 80000218: 40208f3b subw t5,ra,sp + 8000021c: 80008eb7 lui t4,0x80008 + 80000220: fffe8e9b addiw t4,t4,-1 + 80000224: 00c00193 li gp,12 + 80000228: 39df1a63 bne t5,t4,800005bc + +000000008000022c : + 8000022c: 00000093 li ra,0 + 80000230: fff00113 li sp,-1 + 80000234: 40208f3b subw t5,ra,sp + 80000238: 00100e93 li t4,1 + 8000023c: 00d00193 li gp,13 + 80000240: 37df1e63 bne t5,t4,800005bc + +0000000080000244 : + 80000244: fff00093 li ra,-1 + 80000248: 00100113 li sp,1 + 8000024c: 40208f3b subw t5,ra,sp + 80000250: ffe00e93 li t4,-2 + 80000254: 00e00193 li gp,14 + 80000258: 37df1263 bne t5,t4,800005bc + +000000008000025c : + 8000025c: fff00093 li ra,-1 + 80000260: fff00113 li sp,-1 + 80000264: 40208f3b subw t5,ra,sp + 80000268: 00000e93 li t4,0 + 8000026c: 00f00193 li gp,15 + 80000270: 35df1663 bne t5,t4,800005bc + +0000000080000274 : + 80000274: 00d00093 li ra,13 + 80000278: 00b00113 li sp,11 + 8000027c: 402080bb subw ra,ra,sp + 80000280: 00200e93 li t4,2 + 80000284: 01000193 li gp,16 + 80000288: 33d09a63 bne ra,t4,800005bc + +000000008000028c : + 8000028c: 00e00093 li ra,14 + 80000290: 00b00113 li sp,11 + 80000294: 4020813b subw sp,ra,sp + 80000298: 00300e93 li t4,3 + 8000029c: 01100193 li gp,17 + 800002a0: 31d11e63 bne sp,t4,800005bc + +00000000800002a4 : + 800002a4: 00d00093 li ra,13 + 800002a8: 401080bb subw ra,ra,ra + 800002ac: 00000e93 li t4,0 + 800002b0: 01200193 li gp,18 + 800002b4: 31d09463 bne ra,t4,800005bc + +00000000800002b8 : + 800002b8: 00000213 li tp,0 + 800002bc: 00d00093 li ra,13 + 800002c0: 00b00113 li sp,11 + 800002c4: 40208f3b subw t5,ra,sp + 800002c8: 000f0313 mv t1,t5 + 800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d0: 00200293 li t0,2 + 800002d4: fe5214e3 bne tp,t0,800002bc + 800002d8: 00200e93 li t4,2 + 800002dc: 01300193 li gp,19 + 800002e0: 2dd31e63 bne t1,t4,800005bc + +00000000800002e4 : + 800002e4: 00000213 li tp,0 + 800002e8: 00e00093 li ra,14 + 800002ec: 00b00113 li sp,11 + 800002f0: 40208f3b subw t5,ra,sp + 800002f4: 00000013 nop + 800002f8: 000f0313 mv t1,t5 + 800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000300: 00200293 li t0,2 + 80000304: fe5212e3 bne tp,t0,800002e8 + 80000308: 00300e93 li t4,3 + 8000030c: 01400193 li gp,20 + 80000310: 2bd31663 bne t1,t4,800005bc + +0000000080000314 : + 80000314: 00000213 li tp,0 + 80000318: 00f00093 li ra,15 + 8000031c: 00b00113 li sp,11 + 80000320: 40208f3b subw t5,ra,sp + 80000324: 00000013 nop + 80000328: 00000013 nop + 8000032c: 000f0313 mv t1,t5 + 80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000334: 00200293 li t0,2 + 80000338: fe5210e3 bne tp,t0,80000318 + 8000033c: 00400e93 li t4,4 + 80000340: 01500193 li gp,21 + 80000344: 27d31c63 bne t1,t4,800005bc + +0000000080000348 : + 80000348: 00000213 li tp,0 + 8000034c: 00d00093 li ra,13 + 80000350: 00b00113 li sp,11 + 80000354: 40208f3b subw t5,ra,sp + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fe5216e3 bne tp,t0,8000034c + 80000364: 00200e93 li t4,2 + 80000368: 01600193 li gp,22 + 8000036c: 25df1863 bne t5,t4,800005bc + +0000000080000370 : + 80000370: 00000213 li tp,0 + 80000374: 00e00093 li ra,14 + 80000378: 00b00113 li sp,11 + 8000037c: 00000013 nop + 80000380: 40208f3b subw t5,ra,sp + 80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000388: 00200293 li t0,2 + 8000038c: fe5214e3 bne tp,t0,80000374 + 80000390: 00300e93 li t4,3 + 80000394: 01700193 li gp,23 + 80000398: 23df1263 bne t5,t4,800005bc + +000000008000039c : + 8000039c: 00000213 li tp,0 + 800003a0: 00f00093 li ra,15 + 800003a4: 00b00113 li sp,11 + 800003a8: 00000013 nop + 800003ac: 00000013 nop + 800003b0: 40208f3b subw t5,ra,sp + 800003b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b8: 00200293 li t0,2 + 800003bc: fe5212e3 bne tp,t0,800003a0 + 800003c0: 00400e93 li t4,4 + 800003c4: 01800193 li gp,24 + 800003c8: 1fdf1a63 bne t5,t4,800005bc + +00000000800003cc : + 800003cc: 00000213 li tp,0 + 800003d0: 00d00093 li ra,13 + 800003d4: 00000013 nop + 800003d8: 00b00113 li sp,11 + 800003dc: 40208f3b subw t5,ra,sp + 800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003e4: 00200293 li t0,2 + 800003e8: fe5214e3 bne tp,t0,800003d0 + 800003ec: 00200e93 li t4,2 + 800003f0: 01900193 li gp,25 + 800003f4: 1ddf1463 bne t5,t4,800005bc + +00000000800003f8 : + 800003f8: 00000213 li tp,0 + 800003fc: 00e00093 li ra,14 + 80000400: 00000013 nop + 80000404: 00b00113 li sp,11 + 80000408: 00000013 nop + 8000040c: 40208f3b subw t5,ra,sp + 80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000414: 00200293 li t0,2 + 80000418: fe5212e3 bne tp,t0,800003fc + 8000041c: 00300e93 li t4,3 + 80000420: 01a00193 li gp,26 + 80000424: 19df1c63 bne t5,t4,800005bc + +0000000080000428 : + 80000428: 00000213 li tp,0 + 8000042c: 00f00093 li ra,15 + 80000430: 00000013 nop + 80000434: 00000013 nop + 80000438: 00b00113 li sp,11 + 8000043c: 40208f3b subw t5,ra,sp + 80000440: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000444: 00200293 li t0,2 + 80000448: fe5212e3 bne tp,t0,8000042c + 8000044c: 00400e93 li t4,4 + 80000450: 01b00193 li gp,27 + 80000454: 17df1463 bne t5,t4,800005bc + +0000000080000458 : + 80000458: 00000213 li tp,0 + 8000045c: 00b00113 li sp,11 + 80000460: 00d00093 li ra,13 + 80000464: 40208f3b subw t5,ra,sp + 80000468: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000046c: 00200293 li t0,2 + 80000470: fe5216e3 bne tp,t0,8000045c + 80000474: 00200e93 li t4,2 + 80000478: 01c00193 li gp,28 + 8000047c: 15df1063 bne t5,t4,800005bc + +0000000080000480 : + 80000480: 00000213 li tp,0 + 80000484: 00b00113 li sp,11 + 80000488: 00e00093 li ra,14 + 8000048c: 00000013 nop + 80000490: 40208f3b subw t5,ra,sp + 80000494: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000498: 00200293 li t0,2 + 8000049c: fe5214e3 bne tp,t0,80000484 + 800004a0: 00300e93 li t4,3 + 800004a4: 01d00193 li gp,29 + 800004a8: 11df1a63 bne t5,t4,800005bc + +00000000800004ac : + 800004ac: 00000213 li tp,0 + 800004b0: 00b00113 li sp,11 + 800004b4: 00f00093 li ra,15 + 800004b8: 00000013 nop + 800004bc: 00000013 nop + 800004c0: 40208f3b subw t5,ra,sp + 800004c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004c8: 00200293 li t0,2 + 800004cc: fe5212e3 bne tp,t0,800004b0 + 800004d0: 00400e93 li t4,4 + 800004d4: 01e00193 li gp,30 + 800004d8: 0fdf1263 bne t5,t4,800005bc + +00000000800004dc : + 800004dc: 00000213 li tp,0 + 800004e0: 00b00113 li sp,11 + 800004e4: 00000013 nop + 800004e8: 00d00093 li ra,13 + 800004ec: 40208f3b subw t5,ra,sp + 800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004f4: 00200293 li t0,2 + 800004f8: fe5214e3 bne tp,t0,800004e0 + 800004fc: 00200e93 li t4,2 + 80000500: 01f00193 li gp,31 + 80000504: 0bdf1c63 bne t5,t4,800005bc + +0000000080000508 : + 80000508: 00000213 li tp,0 + 8000050c: 00b00113 li sp,11 + 80000510: 00000013 nop + 80000514: 00e00093 li ra,14 + 80000518: 00000013 nop + 8000051c: 40208f3b subw t5,ra,sp + 80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000524: 00200293 li t0,2 + 80000528: fe5212e3 bne tp,t0,8000050c + 8000052c: 00300e93 li t4,3 + 80000530: 02000193 li gp,32 + 80000534: 09df1463 bne t5,t4,800005bc + +0000000080000538 : + 80000538: 00000213 li tp,0 + 8000053c: 00b00113 li sp,11 + 80000540: 00000013 nop + 80000544: 00000013 nop + 80000548: 00f00093 li ra,15 + 8000054c: 40208f3b subw t5,ra,sp + 80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000554: 00200293 li t0,2 + 80000558: fe5212e3 bne tp,t0,8000053c + 8000055c: 00400e93 li t4,4 + 80000560: 02100193 li gp,33 + 80000564: 05df1c63 bne t5,t4,800005bc + +0000000080000568 : + 80000568: ff100093 li ra,-15 + 8000056c: 4010013b negw sp,ra + 80000570: 00f00e93 li t4,15 + 80000574: 02200193 li gp,34 + 80000578: 05d11263 bne sp,t4,800005bc + +000000008000057c : + 8000057c: 02000093 li ra,32 + 80000580: 4000813b subw sp,ra,zero + 80000584: 02000e93 li t4,32 + 80000588: 02300193 li gp,35 + 8000058c: 03d11863 bne sp,t4,800005bc + +0000000080000590 : + 80000590: 400000bb negw ra,zero + 80000594: 00000e93 li t4,0 + 80000598: 02400193 li gp,36 + 8000059c: 03d09063 bne ra,t4,800005bc + +00000000800005a0 : + 800005a0: 01000093 li ra,16 + 800005a4: 01e00113 li sp,30 + 800005a8: 4020803b subw zero,ra,sp + 800005ac: 00000e93 li t4,0 + 800005b0: 02500193 li gp,37 + 800005b4: 01d01463 bne zero,t4,800005bc + 800005b8: 00301c63 bne zero,gp,800005d0 + +00000000800005bc : + 800005bc: 0ff0000f fence + 800005c0: 00018063 beqz gp,800005c0 + 800005c4: 00119193 slli gp,gp,0x1 + 800005c8: 0011e193 ori gp,gp,1 + 800005cc: 00000073 ecall + +00000000800005d0 : + 800005d0: 0ff0000f fence + 800005d4: 00100193 li gp,1 + 800005d8: 00000073 ecall + 800005dc: c0001073 unimp + 800005e0: 0000 unimp + 800005e2: 0000 unimp + 800005e4: 0000 unimp + 800005e6: 0000 unimp + 800005e8: 0000 unimp + 800005ea: 0000 unimp + 800005ec: 0000 unimp + 800005ee: 0000 unimp + 800005f0: 0000 unimp + 800005f2: 0000 unimp + 800005f4: 0000 unimp + 800005f6: 0000 unimp + 800005f8: 0000 unimp + 800005fa: 0000 unimp + 800005fc: 0000 unimp + 800005fe: 0000 unimp + 80000600: 0000 unimp + 80000602: 0000 unimp diff --git a/Tests/isa/rv64ui-p-sw b/Tests/isa/rv64ui-p-sw new file mode 100644 index 0000000..5674fcb Binary files /dev/null and b/Tests/isa/rv64ui-p-sw differ diff --git a/Tests/isa/rv64ui-p-sw.dump b/Tests/isa/rv64ui-p-sw.dump new file mode 100644 index 0000000..a80b995 --- /dev/null +++ b/Tests/isa/rv64ui-p-sw.dump @@ -0,0 +1,476 @@ + +rv64ui-p-sw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00002097 auipc ra,0x2 + 80000100: f0408093 addi ra,ra,-252 # 80002000 + 80000104: 00aa0137 lui sp,0xaa0 + 80000108: 0aa1011b addiw sp,sp,170 + 8000010c: 0020a023 sw sp,0(ra) + 80000110: 0000af03 lw t5,0(ra) + 80000114: 00aa0eb7 lui t4,0xaa0 + 80000118: 0aae8e9b addiw t4,t4,170 + 8000011c: 00200193 li gp,2 + 80000120: 47df1063 bne t5,t4,80000580 + +0000000080000124 : + 80000124: 00002097 auipc ra,0x2 + 80000128: edc08093 addi ra,ra,-292 # 80002000 + 8000012c: aa00b137 lui sp,0xaa00b + 80000130: a001011b addiw sp,sp,-1536 + 80000134: 0020a223 sw sp,4(ra) + 80000138: 0040af03 lw t5,4(ra) + 8000013c: aa00beb7 lui t4,0xaa00b + 80000140: a00e8e9b addiw t4,t4,-1536 + 80000144: 00300193 li gp,3 + 80000148: 43df1c63 bne t5,t4,80000580 + +000000008000014c : + 8000014c: 00002097 auipc ra,0x2 + 80000150: eb408093 addi ra,ra,-332 # 80002000 + 80000154: 0aa01137 lui sp,0xaa01 + 80000158: aa01011b addiw sp,sp,-1376 + 8000015c: 0020a423 sw sp,8(ra) + 80000160: 0080af03 lw t5,8(ra) + 80000164: 0aa01eb7 lui t4,0xaa01 + 80000168: aa0e8e9b addiw t4,t4,-1376 + 8000016c: 00400193 li gp,4 + 80000170: 41df1863 bne t5,t4,80000580 + +0000000080000174 : + 80000174: 00002097 auipc ra,0x2 + 80000178: e8c08093 addi ra,ra,-372 # 80002000 + 8000017c: a00aa137 lui sp,0xa00aa + 80000180: 00a1011b addiw sp,sp,10 + 80000184: 0020a623 sw sp,12(ra) + 80000188: 00c0af03 lw t5,12(ra) + 8000018c: a00aaeb7 lui t4,0xa00aa + 80000190: 00ae8e9b addiw t4,t4,10 + 80000194: 00500193 li gp,5 + 80000198: 3fdf1463 bne t5,t4,80000580 + +000000008000019c : + 8000019c: 00002097 auipc ra,0x2 + 800001a0: e8008093 addi ra,ra,-384 # 8000201c + 800001a4: 00aa0137 lui sp,0xaa0 + 800001a8: 0aa1011b addiw sp,sp,170 + 800001ac: fe20aa23 sw sp,-12(ra) + 800001b0: ff40af03 lw t5,-12(ra) + 800001b4: 00aa0eb7 lui t4,0xaa0 + 800001b8: 0aae8e9b addiw t4,t4,170 + 800001bc: 00600193 li gp,6 + 800001c0: 3ddf1063 bne t5,t4,80000580 + +00000000800001c4 : + 800001c4: 00002097 auipc ra,0x2 + 800001c8: e5808093 addi ra,ra,-424 # 8000201c + 800001cc: aa00b137 lui sp,0xaa00b + 800001d0: a001011b addiw sp,sp,-1536 + 800001d4: fe20ac23 sw sp,-8(ra) + 800001d8: ff80af03 lw t5,-8(ra) + 800001dc: aa00beb7 lui t4,0xaa00b + 800001e0: a00e8e9b addiw t4,t4,-1536 + 800001e4: 00700193 li gp,7 + 800001e8: 39df1c63 bne t5,t4,80000580 + +00000000800001ec : + 800001ec: 00002097 auipc ra,0x2 + 800001f0: e3008093 addi ra,ra,-464 # 8000201c + 800001f4: 0aa01137 lui sp,0xaa01 + 800001f8: aa01011b addiw sp,sp,-1376 + 800001fc: fe20ae23 sw sp,-4(ra) + 80000200: ffc0af03 lw t5,-4(ra) + 80000204: 0aa01eb7 lui t4,0xaa01 + 80000208: aa0e8e9b addiw t4,t4,-1376 + 8000020c: 00800193 li gp,8 + 80000210: 37df1863 bne t5,t4,80000580 + +0000000080000214 : + 80000214: 00002097 auipc ra,0x2 + 80000218: e0808093 addi ra,ra,-504 # 8000201c + 8000021c: a00aa137 lui sp,0xa00aa + 80000220: 00a1011b addiw sp,sp,10 + 80000224: 0020a023 sw sp,0(ra) + 80000228: 0000af03 lw t5,0(ra) + 8000022c: a00aaeb7 lui t4,0xa00aa + 80000230: 00ae8e9b addiw t4,t4,10 + 80000234: 00900193 li gp,9 + 80000238: 35df1463 bne t5,t4,80000580 + +000000008000023c : + 8000023c: 00002097 auipc ra,0x2 + 80000240: de408093 addi ra,ra,-540 # 80002020 + 80000244: 12345137 lui sp,0x12345 + 80000248: 6781011b addiw sp,sp,1656 + 8000024c: fe008213 addi tp,ra,-32 + 80000250: 02222023 sw sp,32(tp) # 20 <_start-0x7fffffe0> + 80000254: 0000a283 lw t0,0(ra) + 80000258: 12345eb7 lui t4,0x12345 + 8000025c: 678e8e9b addiw t4,t4,1656 + 80000260: 00a00193 li gp,10 + 80000264: 31d29e63 bne t0,t4,80000580 + +0000000080000268 : + 80000268: 00002097 auipc ra,0x2 + 8000026c: db808093 addi ra,ra,-584 # 80002020 + 80000270: 58213137 lui sp,0x58213 + 80000274: 0981011b addiw sp,sp,152 + 80000278: ffd08093 addi ra,ra,-3 + 8000027c: 0020a3a3 sw sp,7(ra) + 80000280: 00002217 auipc tp,0x2 + 80000284: da420213 addi tp,tp,-604 # 80002024 + 80000288: 00022283 lw t0,0(tp) # 0 <_start-0x80000000> + 8000028c: 58213eb7 lui t4,0x58213 + 80000290: 098e8e9b addiw t4,t4,152 + 80000294: 00b00193 li gp,11 + 80000298: 2fd29463 bne t0,t4,80000580 + +000000008000029c : + 8000029c: 00c00193 li gp,12 + 800002a0: 00000213 li tp,0 + 800002a4: aabbd0b7 lui ra,0xaabbd + 800002a8: cdd0809b addiw ra,ra,-803 + 800002ac: 00002117 auipc sp,0x2 + 800002b0: d5410113 addi sp,sp,-684 # 80002000 + 800002b4: 00112023 sw ra,0(sp) + 800002b8: 00012f03 lw t5,0(sp) + 800002bc: aabbdeb7 lui t4,0xaabbd + 800002c0: cdde8e9b addiw t4,t4,-803 + 800002c4: 2bdf1e63 bne t5,t4,80000580 + 800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002cc: 00200293 li t0,2 + 800002d0: fc521ae3 bne tp,t0,800002a4 + +00000000800002d4 : + 800002d4: 00d00193 li gp,13 + 800002d8: 00000213 li tp,0 + 800002dc: daabc0b7 lui ra,0xdaabc + 800002e0: ccd0809b addiw ra,ra,-819 + 800002e4: 00002117 auipc sp,0x2 + 800002e8: d1c10113 addi sp,sp,-740 # 80002000 + 800002ec: 00000013 nop + 800002f0: 00112223 sw ra,4(sp) + 800002f4: 00412f03 lw t5,4(sp) + 800002f8: daabceb7 lui t4,0xdaabc + 800002fc: ccde8e9b addiw t4,t4,-819 + 80000300: 29df1063 bne t5,t4,80000580 + 80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000308: 00200293 li t0,2 + 8000030c: fc5218e3 bne tp,t0,800002dc + +0000000080000310 : + 80000310: 00e00193 li gp,14 + 80000314: 00000213 li tp,0 + 80000318: ddaac0b7 lui ra,0xddaac + 8000031c: bcc0809b addiw ra,ra,-1076 + 80000320: 00002117 auipc sp,0x2 + 80000324: ce010113 addi sp,sp,-800 # 80002000 + 80000328: 00000013 nop + 8000032c: 00000013 nop + 80000330: 00112423 sw ra,8(sp) + 80000334: 00812f03 lw t5,8(sp) + 80000338: ddaaceb7 lui t4,0xddaac + 8000033c: bcce8e9b addiw t4,t4,-1076 + 80000340: 25df1063 bne t5,t4,80000580 + 80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000348: 00200293 li t0,2 + 8000034c: fc5216e3 bne tp,t0,80000318 + +0000000080000350 : + 80000350: 00f00193 li gp,15 + 80000354: 00000213 li tp,0 + 80000358: cddab0b7 lui ra,0xcddab + 8000035c: bbc0809b addiw ra,ra,-1092 + 80000360: 00000013 nop + 80000364: 00002117 auipc sp,0x2 + 80000368: c9c10113 addi sp,sp,-868 # 80002000 + 8000036c: 00112623 sw ra,12(sp) + 80000370: 00c12f03 lw t5,12(sp) + 80000374: cddabeb7 lui t4,0xcddab + 80000378: bbce8e9b addiw t4,t4,-1092 + 8000037c: 21df1263 bne t5,t4,80000580 + 80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000384: 00200293 li t0,2 + 80000388: fc5218e3 bne tp,t0,80000358 + +000000008000038c : + 8000038c: 01000193 li gp,16 + 80000390: 00000213 li tp,0 + 80000394: ccddb0b7 lui ra,0xccddb + 80000398: abb0809b addiw ra,ra,-1349 + 8000039c: 00000013 nop + 800003a0: 00002117 auipc sp,0x2 + 800003a4: c6010113 addi sp,sp,-928 # 80002000 + 800003a8: 00000013 nop + 800003ac: 00112823 sw ra,16(sp) + 800003b0: 01012f03 lw t5,16(sp) + 800003b4: ccddbeb7 lui t4,0xccddb + 800003b8: abbe8e9b addiw t4,t4,-1349 + 800003bc: 1ddf1263 bne t5,t4,80000580 + 800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c4: 00200293 li t0,2 + 800003c8: fc5216e3 bne tp,t0,80000394 + +00000000800003cc : + 800003cc: 01100193 li gp,17 + 800003d0: 00000213 li tp,0 + 800003d4: bccde0b7 lui ra,0xbccde + 800003d8: aab0809b addiw ra,ra,-1365 + 800003dc: 00000013 nop + 800003e0: 00000013 nop + 800003e4: 00002117 auipc sp,0x2 + 800003e8: c1c10113 addi sp,sp,-996 # 80002000 + 800003ec: 00112a23 sw ra,20(sp) + 800003f0: 01412f03 lw t5,20(sp) + 800003f4: bccdeeb7 lui t4,0xbccde + 800003f8: aabe8e9b addiw t4,t4,-1365 + 800003fc: 19df1263 bne t5,t4,80000580 + 80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000404: 00200293 li t0,2 + 80000408: fc5216e3 bne tp,t0,800003d4 + +000000008000040c : + 8000040c: 01200193 li gp,18 + 80000410: 00000213 li tp,0 + 80000414: 00002117 auipc sp,0x2 + 80000418: bec10113 addi sp,sp,-1044 # 80002000 + 8000041c: 001120b7 lui ra,0x112 + 80000420: 2330809b addiw ra,ra,563 + 80000424: 00112023 sw ra,0(sp) + 80000428: 00012f03 lw t5,0(sp) + 8000042c: 00112eb7 lui t4,0x112 + 80000430: 233e8e9b addiw t4,t4,563 + 80000434: 15df1663 bne t5,t4,80000580 + 80000438: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000043c: 00200293 li t0,2 + 80000440: fc521ae3 bne tp,t0,80000414 + +0000000080000444 : + 80000444: 01300193 li gp,19 + 80000448: 00000213 li tp,0 + 8000044c: 00002117 auipc sp,0x2 + 80000450: bb410113 addi sp,sp,-1100 # 80002000 + 80000454: 300110b7 lui ra,0x30011 + 80000458: 2230809b addiw ra,ra,547 + 8000045c: 00000013 nop + 80000460: 00112223 sw ra,4(sp) + 80000464: 00412f03 lw t5,4(sp) + 80000468: 30011eb7 lui t4,0x30011 + 8000046c: 223e8e9b addiw t4,t4,547 + 80000470: 11df1863 bne t5,t4,80000580 + 80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000478: 00200293 li t0,2 + 8000047c: fc5218e3 bne tp,t0,8000044c + +0000000080000480 : + 80000480: 01400193 li gp,20 + 80000484: 00000213 li tp,0 + 80000488: 00002117 auipc sp,0x2 + 8000048c: b7810113 addi sp,sp,-1160 # 80002000 + 80000490: 330010b7 lui ra,0x33001 + 80000494: 1220809b addiw ra,ra,290 + 80000498: 00000013 nop + 8000049c: 00000013 nop + 800004a0: 00112423 sw ra,8(sp) + 800004a4: 00812f03 lw t5,8(sp) + 800004a8: 33001eb7 lui t4,0x33001 + 800004ac: 122e8e9b addiw t4,t4,290 + 800004b0: 0ddf1863 bne t5,t4,80000580 + 800004b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004b8: 00200293 li t0,2 + 800004bc: fc5216e3 bne tp,t0,80000488 + +00000000800004c0 : + 800004c0: 01500193 li gp,21 + 800004c4: 00000213 li tp,0 + 800004c8: 00002117 auipc sp,0x2 + 800004cc: b3810113 addi sp,sp,-1224 # 80002000 + 800004d0: 00000013 nop + 800004d4: 233000b7 lui ra,0x23300 + 800004d8: 1120809b addiw ra,ra,274 + 800004dc: 00112623 sw ra,12(sp) + 800004e0: 00c12f03 lw t5,12(sp) + 800004e4: 23300eb7 lui t4,0x23300 + 800004e8: 112e8e9b addiw t4,t4,274 + 800004ec: 09df1a63 bne t5,t4,80000580 + 800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004f4: 00200293 li t0,2 + 800004f8: fc5218e3 bne tp,t0,800004c8 + +00000000800004fc : + 800004fc: 01600193 li gp,22 + 80000500: 00000213 li tp,0 + 80000504: 00002117 auipc sp,0x2 + 80000508: afc10113 addi sp,sp,-1284 # 80002000 + 8000050c: 00000013 nop + 80000510: 223300b7 lui ra,0x22330 + 80000514: 0110809b addiw ra,ra,17 + 80000518: 00000013 nop + 8000051c: 00112823 sw ra,16(sp) + 80000520: 01012f03 lw t5,16(sp) + 80000524: 22330eb7 lui t4,0x22330 + 80000528: 011e8e9b addiw t4,t4,17 + 8000052c: 05df1a63 bne t5,t4,80000580 + 80000530: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000534: 00200293 li t0,2 + 80000538: fc5216e3 bne tp,t0,80000504 + +000000008000053c : + 8000053c: 01700193 li gp,23 + 80000540: 00000213 li tp,0 + 80000544: 00002117 auipc sp,0x2 + 80000548: abc10113 addi sp,sp,-1348 # 80002000 + 8000054c: 00000013 nop + 80000550: 00000013 nop + 80000554: 122330b7 lui ra,0x12233 + 80000558: 0010809b addiw ra,ra,1 + 8000055c: 00112a23 sw ra,20(sp) + 80000560: 01412f03 lw t5,20(sp) + 80000564: 12233eb7 lui t4,0x12233 + 80000568: 001e8e9b addiw t4,t4,1 + 8000056c: 01df1a63 bne t5,t4,80000580 + 80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000574: 00200293 li t0,2 + 80000578: fc5216e3 bne tp,t0,80000544 + 8000057c: 00301c63 bne zero,gp,80000594 + +0000000080000580 : + 80000580: 0ff0000f fence + 80000584: 00018063 beqz gp,80000584 + 80000588: 00119193 slli gp,gp,0x1 + 8000058c: 0011e193 ori gp,gp,1 + 80000590: 00000073 ecall + +0000000080000594 : + 80000594: 0ff0000f fence + 80000598: 00100193 li gp,1 + 8000059c: 00000073 ecall + 800005a0: c0001073 unimp + 800005a4: 0000 unimp + 800005a6: 0000 unimp + 800005a8: 0000 unimp + 800005aa: 0000 unimp + 800005ac: 0000 unimp + 800005ae: 0000 unimp + 800005b0: 0000 unimp + 800005b2: 0000 unimp + 800005b4: 0000 unimp + 800005b6: 0000 unimp + 800005b8: 0000 unimp + 800005ba: 0000 unimp + 800005bc: 0000 unimp + 800005be: 0000 unimp + 800005c0: 0000 unimp + 800005c2: 0000 unimp + +Disassembly of section .data: + +0000000080002000 : + 80002000: deadbeef jal t4,7ffdd5ea <_start-0x22a16> + +0000000080002004 : + 80002004: deadbeef jal t4,7ffdd5ee <_start-0x22a12> + +0000000080002008 : + 80002008: deadbeef jal t4,7ffdd5f2 <_start-0x22a0e> + +000000008000200c : + 8000200c: deadbeef jal t4,7ffdd5f6 <_start-0x22a0a> + +0000000080002010 : + 80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> + +0000000080002014 : + 80002014: deadbeef jal t4,7ffdd5fe <_start-0x22a02> + +0000000080002018 : + 80002018: deadbeef jal t4,7ffdd602 <_start-0x229fe> + +000000008000201c : + 8000201c: deadbeef jal t4,7ffdd606 <_start-0x229fa> + +0000000080002020 : + 80002020: deadbeef jal t4,7ffdd60a <_start-0x229f6> + +0000000080002024 : + 80002024: deadbeef jal t4,7ffdd60e <_start-0x229f2> + 80002028: 0000 unimp + 8000202a: 0000 unimp + 8000202c: 0000 unimp + 8000202e: 0000 unimp diff --git a/Tests/isa/rv64ui-p-xor b/Tests/isa/rv64ui-p-xor new file mode 100644 index 0000000..8483065 Binary files /dev/null and b/Tests/isa/rv64ui-p-xor differ diff --git a/Tests/isa/rv64ui-p-xor.dump b/Tests/isa/rv64ui-p-xor.dump new file mode 100644 index 0000000..2f6d21b --- /dev/null +++ b/Tests/isa/rv64ui-p-xor.dump @@ -0,0 +1,527 @@ + +rv64ui-p-xor: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 000100b7 lui ra,0x10 + 80000100: f010809b addiw ra,ra,-255 + 80000104: 01009093 slli ra,ra,0x10 + 80000108: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000010c: 0f0f1137 lui sp,0xf0f1 + 80000110: f0f1011b addiw sp,sp,-241 + 80000114: 0020cf33 xor t5,ra,sp + 80000118: 000f0eb7 lui t4,0xf0 + 8000011c: 0ffe8e9b addiw t4,t4,255 + 80000120: 00ce9e93 slli t4,t4,0xc + 80000124: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80000128: 00200193 li gp,2 + 8000012c: 59df1c63 bne t5,t4,800006c4 + +0000000080000130 : + 80000130: 0ff010b7 lui ra,0xff01 + 80000134: ff00809b addiw ra,ra,-16 + 80000138: 000f1137 lui sp,0xf1 + 8000013c: f0f1011b addiw sp,sp,-241 + 80000140: 00c11113 slli sp,sp,0xc + 80000144: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000148: 0020cf33 xor t5,ra,sp + 8000014c: 00010eb7 lui t4,0x10 + 80000150: f01e8e9b addiw t4,t4,-255 + 80000154: 010e9e93 slli t4,t4,0x10 + 80000158: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 8000015c: 00300193 li gp,3 + 80000160: 57df1263 bne t5,t4,800006c4 + +0000000080000164 : + 80000164: 00ff00b7 lui ra,0xff0 + 80000168: 0ff0809b addiw ra,ra,255 + 8000016c: 0f0f1137 lui sp,0xf0f1 + 80000170: f0f1011b addiw sp,sp,-241 + 80000174: 0020cf33 xor t5,ra,sp + 80000178: 0ff01eb7 lui t4,0xff01 + 8000017c: ff0e8e9b addiw t4,t4,-16 + 80000180: 00400193 li gp,4 + 80000184: 55df1063 bne t5,t4,800006c4 + +0000000080000188 : + 80000188: 000f00b7 lui ra,0xf0 + 8000018c: 0ff0809b addiw ra,ra,255 + 80000190: 00c09093 slli ra,ra,0xc + 80000194: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80000198: 000f1137 lui sp,0xf1 + 8000019c: f0f1011b addiw sp,sp,-241 + 800001a0: 00c11113 slli sp,sp,0xc + 800001a4: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800001a8: 0020cf33 xor t5,ra,sp + 800001ac: 00ff0eb7 lui t4,0xff0 + 800001b0: 0ffe8e9b addiw t4,t4,255 + 800001b4: 00500193 li gp,5 + 800001b8: 51df1663 bne t5,t4,800006c4 + +00000000800001bc : + 800001bc: 000100b7 lui ra,0x10 + 800001c0: f010809b addiw ra,ra,-255 + 800001c4: 01009093 slli ra,ra,0x10 + 800001c8: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800001cc: 0f0f1137 lui sp,0xf0f1 + 800001d0: f0f1011b addiw sp,sp,-241 + 800001d4: 0020c0b3 xor ra,ra,sp + 800001d8: 000f0eb7 lui t4,0xf0 + 800001dc: 0ffe8e9b addiw t4,t4,255 + 800001e0: 00ce9e93 slli t4,t4,0xc + 800001e4: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 800001e8: 00600193 li gp,6 + 800001ec: 4dd09c63 bne ra,t4,800006c4 + +00000000800001f0 : + 800001f0: 000100b7 lui ra,0x10 + 800001f4: f010809b addiw ra,ra,-255 + 800001f8: 01009093 slli ra,ra,0x10 + 800001fc: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000200: 0f0f1137 lui sp,0xf0f1 + 80000204: f0f1011b addiw sp,sp,-241 + 80000208: 0020c133 xor sp,ra,sp + 8000020c: 000f0eb7 lui t4,0xf0 + 80000210: 0ffe8e9b addiw t4,t4,255 + 80000214: 00ce9e93 slli t4,t4,0xc + 80000218: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 8000021c: 00700193 li gp,7 + 80000220: 4bd11263 bne sp,t4,800006c4 + +0000000080000224 : + 80000224: 000100b7 lui ra,0x10 + 80000228: f010809b addiw ra,ra,-255 + 8000022c: 01009093 slli ra,ra,0x10 + 80000230: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000234: 0010c0b3 xor ra,ra,ra + 80000238: 00000e93 li t4,0 + 8000023c: 00800193 li gp,8 + 80000240: 49d09263 bne ra,t4,800006c4 + +0000000080000244 : + 80000244: 00000213 li tp,0 + 80000248: 000100b7 lui ra,0x10 + 8000024c: f010809b addiw ra,ra,-255 + 80000250: 01009093 slli ra,ra,0x10 + 80000254: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000258: 0f0f1137 lui sp,0xf0f1 + 8000025c: f0f1011b addiw sp,sp,-241 + 80000260: 0020cf33 xor t5,ra,sp + 80000264: 000f0313 mv t1,t5 + 80000268: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000026c: 00200293 li t0,2 + 80000270: fc521ce3 bne tp,t0,80000248 + 80000274: 000f0eb7 lui t4,0xf0 + 80000278: 0ffe8e9b addiw t4,t4,255 + 8000027c: 00ce9e93 slli t4,t4,0xc + 80000280: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80000284: 00900193 li gp,9 + 80000288: 43d31e63 bne t1,t4,800006c4 + +000000008000028c : + 8000028c: 00000213 li tp,0 + 80000290: 0ff010b7 lui ra,0xff01 + 80000294: ff00809b addiw ra,ra,-16 + 80000298: 000f1137 lui sp,0xf1 + 8000029c: f0f1011b addiw sp,sp,-241 + 800002a0: 00c11113 slli sp,sp,0xc + 800002a4: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800002a8: 0020cf33 xor t5,ra,sp + 800002ac: 00000013 nop + 800002b0: 000f0313 mv t1,t5 + 800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002b8: 00200293 li t0,2 + 800002bc: fc521ae3 bne tp,t0,80000290 + 800002c0: 00010eb7 lui t4,0x10 + 800002c4: f01e8e9b addiw t4,t4,-255 + 800002c8: 010e9e93 slli t4,t4,0x10 + 800002cc: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 800002d0: 00a00193 li gp,10 + 800002d4: 3fd31863 bne t1,t4,800006c4 + +00000000800002d8 : + 800002d8: 00000213 li tp,0 + 800002dc: 00ff00b7 lui ra,0xff0 + 800002e0: 0ff0809b addiw ra,ra,255 + 800002e4: 0f0f1137 lui sp,0xf0f1 + 800002e8: f0f1011b addiw sp,sp,-241 + 800002ec: 0020cf33 xor t5,ra,sp + 800002f0: 00000013 nop + 800002f4: 00000013 nop + 800002f8: 000f0313 mv t1,t5 + 800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000300: 00200293 li t0,2 + 80000304: fc521ce3 bne tp,t0,800002dc + 80000308: 0ff01eb7 lui t4,0xff01 + 8000030c: ff0e8e9b addiw t4,t4,-16 + 80000310: 00b00193 li gp,11 + 80000314: 3bd31863 bne t1,t4,800006c4 + +0000000080000318 : + 80000318: 00000213 li tp,0 + 8000031c: 000100b7 lui ra,0x10 + 80000320: f010809b addiw ra,ra,-255 + 80000324: 01009093 slli ra,ra,0x10 + 80000328: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 8000032c: 0f0f1137 lui sp,0xf0f1 + 80000330: f0f1011b addiw sp,sp,-241 + 80000334: 0020cf33 xor t5,ra,sp + 80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000033c: 00200293 li t0,2 + 80000340: fc521ee3 bne tp,t0,8000031c + 80000344: 000f0eb7 lui t4,0xf0 + 80000348: 0ffe8e9b addiw t4,t4,255 + 8000034c: 00ce9e93 slli t4,t4,0xc + 80000350: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80000354: 00c00193 li gp,12 + 80000358: 37df1663 bne t5,t4,800006c4 + +000000008000035c : + 8000035c: 00000213 li tp,0 + 80000360: 0ff010b7 lui ra,0xff01 + 80000364: ff00809b addiw ra,ra,-16 + 80000368: 000f1137 lui sp,0xf1 + 8000036c: f0f1011b addiw sp,sp,-241 + 80000370: 00c11113 slli sp,sp,0xc + 80000374: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000378: 00000013 nop + 8000037c: 0020cf33 xor t5,ra,sp + 80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000384: 00200293 li t0,2 + 80000388: fc521ce3 bne tp,t0,80000360 + 8000038c: 00010eb7 lui t4,0x10 + 80000390: f01e8e9b addiw t4,t4,-255 + 80000394: 010e9e93 slli t4,t4,0x10 + 80000398: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 8000039c: 00d00193 li gp,13 + 800003a0: 33df1263 bne t5,t4,800006c4 + +00000000800003a4 : + 800003a4: 00000213 li tp,0 + 800003a8: 00ff00b7 lui ra,0xff0 + 800003ac: 0ff0809b addiw ra,ra,255 + 800003b0: 0f0f1137 lui sp,0xf0f1 + 800003b4: f0f1011b addiw sp,sp,-241 + 800003b8: 00000013 nop + 800003bc: 00000013 nop + 800003c0: 0020cf33 xor t5,ra,sp + 800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c8: 00200293 li t0,2 + 800003cc: fc521ee3 bne tp,t0,800003a8 + 800003d0: 0ff01eb7 lui t4,0xff01 + 800003d4: ff0e8e9b addiw t4,t4,-16 + 800003d8: 00e00193 li gp,14 + 800003dc: 2fdf1463 bne t5,t4,800006c4 + +00000000800003e0 : + 800003e0: 00000213 li tp,0 + 800003e4: 000100b7 lui ra,0x10 + 800003e8: f010809b addiw ra,ra,-255 + 800003ec: 01009093 slli ra,ra,0x10 + 800003f0: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800003f4: 00000013 nop + 800003f8: 0f0f1137 lui sp,0xf0f1 + 800003fc: f0f1011b addiw sp,sp,-241 + 80000400: 0020cf33 xor t5,ra,sp + 80000404: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000408: 00200293 li t0,2 + 8000040c: fc521ce3 bne tp,t0,800003e4 + 80000410: 000f0eb7 lui t4,0xf0 + 80000414: 0ffe8e9b addiw t4,t4,255 + 80000418: 00ce9e93 slli t4,t4,0xc + 8000041c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80000420: 00f00193 li gp,15 + 80000424: 2bdf1063 bne t5,t4,800006c4 + +0000000080000428 : + 80000428: 00000213 li tp,0 + 8000042c: 0ff010b7 lui ra,0xff01 + 80000430: ff00809b addiw ra,ra,-16 + 80000434: 00000013 nop + 80000438: 000f1137 lui sp,0xf1 + 8000043c: f0f1011b addiw sp,sp,-241 + 80000440: 00c11113 slli sp,sp,0xc + 80000444: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000448: 00000013 nop + 8000044c: 0020cf33 xor t5,ra,sp + 80000450: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000454: 00200293 li t0,2 + 80000458: fc521ae3 bne tp,t0,8000042c + 8000045c: 00010eb7 lui t4,0x10 + 80000460: f01e8e9b addiw t4,t4,-255 + 80000464: 010e9e93 slli t4,t4,0x10 + 80000468: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 8000046c: 01000193 li gp,16 + 80000470: 25df1a63 bne t5,t4,800006c4 + +0000000080000474 : + 80000474: 00000213 li tp,0 + 80000478: 00ff00b7 lui ra,0xff0 + 8000047c: 0ff0809b addiw ra,ra,255 + 80000480: 00000013 nop + 80000484: 00000013 nop + 80000488: 0f0f1137 lui sp,0xf0f1 + 8000048c: f0f1011b addiw sp,sp,-241 + 80000490: 0020cf33 xor t5,ra,sp + 80000494: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000498: 00200293 li t0,2 + 8000049c: fc521ee3 bne tp,t0,80000478 + 800004a0: 0ff01eb7 lui t4,0xff01 + 800004a4: ff0e8e9b addiw t4,t4,-16 + 800004a8: 01100193 li gp,17 + 800004ac: 21df1c63 bne t5,t4,800006c4 + +00000000800004b0 : + 800004b0: 00000213 li tp,0 + 800004b4: 0f0f1137 lui sp,0xf0f1 + 800004b8: f0f1011b addiw sp,sp,-241 + 800004bc: 000100b7 lui ra,0x10 + 800004c0: f010809b addiw ra,ra,-255 + 800004c4: 01009093 slli ra,ra,0x10 + 800004c8: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 800004cc: 0020cf33 xor t5,ra,sp + 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d4: 00200293 li t0,2 + 800004d8: fc521ee3 bne tp,t0,800004b4 + 800004dc: 000f0eb7 lui t4,0xf0 + 800004e0: 0ffe8e9b addiw t4,t4,255 + 800004e4: 00ce9e93 slli t4,t4,0xc + 800004e8: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 800004ec: 01200193 li gp,18 + 800004f0: 1ddf1a63 bne t5,t4,800006c4 + +00000000800004f4 : + 800004f4: 00000213 li tp,0 + 800004f8: 000f1137 lui sp,0xf1 + 800004fc: f0f1011b addiw sp,sp,-241 + 80000500: 00c11113 slli sp,sp,0xc + 80000504: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80000508: 0ff010b7 lui ra,0xff01 + 8000050c: ff00809b addiw ra,ra,-16 + 80000510: 00000013 nop + 80000514: 0020cf33 xor t5,ra,sp + 80000518: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000051c: 00200293 li t0,2 + 80000520: fc521ce3 bne tp,t0,800004f8 + 80000524: 00010eb7 lui t4,0x10 + 80000528: f01e8e9b addiw t4,t4,-255 + 8000052c: 010e9e93 slli t4,t4,0x10 + 80000530: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80000534: 01300193 li gp,19 + 80000538: 19df1663 bne t5,t4,800006c4 + +000000008000053c : + 8000053c: 00000213 li tp,0 + 80000540: 0f0f1137 lui sp,0xf0f1 + 80000544: f0f1011b addiw sp,sp,-241 + 80000548: 00ff00b7 lui ra,0xff0 + 8000054c: 0ff0809b addiw ra,ra,255 + 80000550: 00000013 nop + 80000554: 00000013 nop + 80000558: 0020cf33 xor t5,ra,sp + 8000055c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000560: 00200293 li t0,2 + 80000564: fc521ee3 bne tp,t0,80000540 + 80000568: 0ff01eb7 lui t4,0xff01 + 8000056c: ff0e8e9b addiw t4,t4,-16 + 80000570: 01400193 li gp,20 + 80000574: 15df1863 bne t5,t4,800006c4 + +0000000080000578 : + 80000578: 00000213 li tp,0 + 8000057c: 0f0f1137 lui sp,0xf0f1 + 80000580: f0f1011b addiw sp,sp,-241 + 80000584: 00000013 nop + 80000588: 000100b7 lui ra,0x10 + 8000058c: f010809b addiw ra,ra,-255 + 80000590: 01009093 slli ra,ra,0x10 + 80000594: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000598: 0020cf33 xor t5,ra,sp + 8000059c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005a0: 00200293 li t0,2 + 800005a4: fc521ce3 bne tp,t0,8000057c + 800005a8: 000f0eb7 lui t4,0xf0 + 800005ac: 0ffe8e9b addiw t4,t4,255 + 800005b0: 00ce9e93 slli t4,t4,0xc + 800005b4: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 800005b8: 01500193 li gp,21 + 800005bc: 11df1463 bne t5,t4,800006c4 + +00000000800005c0 : + 800005c0: 00000213 li tp,0 + 800005c4: 000f1137 lui sp,0xf1 + 800005c8: f0f1011b addiw sp,sp,-241 + 800005cc: 00c11113 slli sp,sp,0xc + 800005d0: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 800005d4: 00000013 nop + 800005d8: 0ff010b7 lui ra,0xff01 + 800005dc: ff00809b addiw ra,ra,-16 + 800005e0: 00000013 nop + 800005e4: 0020cf33 xor t5,ra,sp + 800005e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800005ec: 00200293 li t0,2 + 800005f0: fc521ae3 bne tp,t0,800005c4 + 800005f4: 00010eb7 lui t4,0x10 + 800005f8: f01e8e9b addiw t4,t4,-255 + 800005fc: 010e9e93 slli t4,t4,0x10 + 80000600: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80000604: 01600193 li gp,22 + 80000608: 0bdf1e63 bne t5,t4,800006c4 + +000000008000060c : + 8000060c: 00000213 li tp,0 + 80000610: 0f0f1137 lui sp,0xf0f1 + 80000614: f0f1011b addiw sp,sp,-241 + 80000618: 00000013 nop + 8000061c: 00000013 nop + 80000620: 00ff00b7 lui ra,0xff0 + 80000624: 0ff0809b addiw ra,ra,255 + 80000628: 0020cf33 xor t5,ra,sp + 8000062c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000630: 00200293 li t0,2 + 80000634: fc521ee3 bne tp,t0,80000610 + 80000638: 0ff01eb7 lui t4,0xff01 + 8000063c: ff0e8e9b addiw t4,t4,-16 + 80000640: 01700193 li gp,23 + 80000644: 09df1063 bne t5,t4,800006c4 + +0000000080000648 : + 80000648: 000100b7 lui ra,0x10 + 8000064c: f010809b addiw ra,ra,-255 + 80000650: 01009093 slli ra,ra,0x10 + 80000654: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80000658: 00104133 xor sp,zero,ra + 8000065c: 00010eb7 lui t4,0x10 + 80000660: f01e8e9b addiw t4,t4,-255 + 80000664: 010e9e93 slli t4,t4,0x10 + 80000668: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 8000066c: 01800193 li gp,24 + 80000670: 05d11a63 bne sp,t4,800006c4 + +0000000080000674 : + 80000674: 00ff00b7 lui ra,0xff0 + 80000678: 0ff0809b addiw ra,ra,255 + 8000067c: 0000c133 xor sp,ra,zero + 80000680: 00ff0eb7 lui t4,0xff0 + 80000684: 0ffe8e9b addiw t4,t4,255 + 80000688: 01900193 li gp,25 + 8000068c: 03d11c63 bne sp,t4,800006c4 + +0000000080000690 : + 80000690: 000040b3 xor ra,zero,zero + 80000694: 00000e93 li t4,0 + 80000698: 01a00193 li gp,26 + 8000069c: 03d09463 bne ra,t4,800006c4 + +00000000800006a0 : + 800006a0: 111110b7 lui ra,0x11111 + 800006a4: 1110809b addiw ra,ra,273 + 800006a8: 22222137 lui sp,0x22222 + 800006ac: 2221011b addiw sp,sp,546 + 800006b0: 0020c033 xor zero,ra,sp + 800006b4: 00000e93 li t4,0 + 800006b8: 01b00193 li gp,27 + 800006bc: 01d01463 bne zero,t4,800006c4 + 800006c0: 00301c63 bne zero,gp,800006d8 + +00000000800006c4 : + 800006c4: 0ff0000f fence + 800006c8: 00018063 beqz gp,800006c8 + 800006cc: 00119193 slli gp,gp,0x1 + 800006d0: 0011e193 ori gp,gp,1 + 800006d4: 00000073 ecall + +00000000800006d8 : + 800006d8: 0ff0000f fence + 800006dc: 00100193 li gp,1 + 800006e0: 00000073 ecall + 800006e4: c0001073 unimp + 800006e8: 0000 unimp + 800006ea: 0000 unimp + 800006ec: 0000 unimp + 800006ee: 0000 unimp + 800006f0: 0000 unimp + 800006f2: 0000 unimp + 800006f4: 0000 unimp + 800006f6: 0000 unimp + 800006f8: 0000 unimp + 800006fa: 0000 unimp + 800006fc: 0000 unimp + 800006fe: 0000 unimp + 80000700: 0000 unimp + 80000702: 0000 unimp diff --git a/Tests/isa/rv64ui-p-xori b/Tests/isa/rv64ui-p-xori new file mode 100644 index 0000000..a30b66a Binary files /dev/null and b/Tests/isa/rv64ui-p-xori differ diff --git a/Tests/isa/rv64ui-p-xori.dump b/Tests/isa/rv64ui-p-xori.dump new file mode 100644 index 0000000..12f6997 --- /dev/null +++ b/Tests/isa/rv64ui-p-xori.dump @@ -0,0 +1,238 @@ + +rv64ui-p-xori: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00ff10b7 lui ra,0xff1 + 80000100: f000809b addiw ra,ra,-256 + 80000104: f0f0cf13 xori t5,ra,-241 + 80000108: ff00feb7 lui t4,0xff00f + 8000010c: 00fe8e9b addiw t4,t4,15 + 80000110: 00200193 li gp,2 + 80000114: 1ddf1663 bne t5,t4,800002e0 + +0000000080000118 : + 80000118: 0ff010b7 lui ra,0xff01 + 8000011c: ff00809b addiw ra,ra,-16 + 80000120: 0f00cf13 xori t5,ra,240 + 80000124: 0ff01eb7 lui t4,0xff01 + 80000128: f00e8e9b addiw t4,t4,-256 + 8000012c: 00300193 li gp,3 + 80000130: 1bdf1863 bne t5,t4,800002e0 + +0000000080000134 : + 80000134: 00ff10b7 lui ra,0xff1 + 80000138: 8ff0809b addiw ra,ra,-1793 + 8000013c: 70f0cf13 xori t5,ra,1807 + 80000140: 00ff1eb7 lui t4,0xff1 + 80000144: ff0e8e9b addiw t4,t4,-16 + 80000148: 00400193 li gp,4 + 8000014c: 19df1a63 bne t5,t4,800002e0 + +0000000080000150 : + 80000150: f00ff0b7 lui ra,0xf00ff + 80000154: 00f0809b addiw ra,ra,15 + 80000158: 0f00cf13 xori t5,ra,240 + 8000015c: f00ffeb7 lui t4,0xf00ff + 80000160: 0ffe8e9b addiw t4,t4,255 + 80000164: 00500193 li gp,5 + 80000168: 17df1c63 bne t5,t4,800002e0 + +000000008000016c : + 8000016c: ff00f0b7 lui ra,0xff00f + 80000170: 7000809b addiw ra,ra,1792 + 80000174: 70f0c093 xori ra,ra,1807 + 80000178: ff00feb7 lui t4,0xff00f + 8000017c: 00fe8e9b addiw t4,t4,15 + 80000180: 00600193 li gp,6 + 80000184: 15d09e63 bne ra,t4,800002e0 + +0000000080000188 : + 80000188: 00000213 li tp,0 + 8000018c: 0ff010b7 lui ra,0xff01 + 80000190: ff00809b addiw ra,ra,-16 + 80000194: 0f00cf13 xori t5,ra,240 + 80000198: 000f0313 mv t1,t5 + 8000019c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001a0: 00200293 li t0,2 + 800001a4: fe5214e3 bne tp,t0,8000018c + 800001a8: 0ff01eb7 lui t4,0xff01 + 800001ac: f00e8e9b addiw t4,t4,-256 + 800001b0: 00700193 li gp,7 + 800001b4: 13d31663 bne t1,t4,800002e0 + +00000000800001b8 : + 800001b8: 00000213 li tp,0 + 800001bc: 00ff10b7 lui ra,0xff1 + 800001c0: 8ff0809b addiw ra,ra,-1793 + 800001c4: 70f0cf13 xori t5,ra,1807 + 800001c8: 00000013 nop + 800001cc: 000f0313 mv t1,t5 + 800001d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001d4: 00200293 li t0,2 + 800001d8: fe5212e3 bne tp,t0,800001bc + 800001dc: 00ff1eb7 lui t4,0xff1 + 800001e0: ff0e8e9b addiw t4,t4,-16 + 800001e4: 00800193 li gp,8 + 800001e8: 0fd31c63 bne t1,t4,800002e0 + +00000000800001ec : + 800001ec: 00000213 li tp,0 + 800001f0: f00ff0b7 lui ra,0xf00ff + 800001f4: 00f0809b addiw ra,ra,15 + 800001f8: 0f00cf13 xori t5,ra,240 + 800001fc: 00000013 nop + 80000200: 00000013 nop + 80000204: 000f0313 mv t1,t5 + 80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000020c: 00200293 li t0,2 + 80000210: fe5210e3 bne tp,t0,800001f0 + 80000214: f00ffeb7 lui t4,0xf00ff + 80000218: 0ffe8e9b addiw t4,t4,255 + 8000021c: 00900193 li gp,9 + 80000220: 0dd31063 bne t1,t4,800002e0 + +0000000080000224 : + 80000224: 00000213 li tp,0 + 80000228: 0ff010b7 lui ra,0xff01 + 8000022c: ff00809b addiw ra,ra,-16 + 80000230: 0f00cf13 xori t5,ra,240 + 80000234: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000238: 00200293 li t0,2 + 8000023c: fe5216e3 bne tp,t0,80000228 + 80000240: 0ff01eb7 lui t4,0xff01 + 80000244: f00e8e9b addiw t4,t4,-256 + 80000248: 00a00193 li gp,10 + 8000024c: 09df1a63 bne t5,t4,800002e0 + +0000000080000250 : + 80000250: 00000213 li tp,0 + 80000254: 00ff10b7 lui ra,0xff1 + 80000258: fff0809b addiw ra,ra,-1 + 8000025c: 00000013 nop + 80000260: 00f0cf13 xori t5,ra,15 + 80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000268: 00200293 li t0,2 + 8000026c: fe5214e3 bne tp,t0,80000254 + 80000270: 00ff1eb7 lui t4,0xff1 + 80000274: ff0e8e9b addiw t4,t4,-16 + 80000278: 00b00193 li gp,11 + 8000027c: 07df1263 bne t5,t4,800002e0 + +0000000080000280 : + 80000280: 00000213 li tp,0 + 80000284: f00ff0b7 lui ra,0xf00ff + 80000288: 00f0809b addiw ra,ra,15 + 8000028c: 00000013 nop + 80000290: 00000013 nop + 80000294: 0f00cf13 xori t5,ra,240 + 80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000029c: 00200293 li t0,2 + 800002a0: fe5212e3 bne tp,t0,80000284 + 800002a4: f00ffeb7 lui t4,0xf00ff + 800002a8: 0ffe8e9b addiw t4,t4,255 + 800002ac: 00c00193 li gp,12 + 800002b0: 03df1863 bne t5,t4,800002e0 + +00000000800002b4 : + 800002b4: 0f004093 xori ra,zero,240 + 800002b8: 0f000e93 li t4,240 + 800002bc: 00d00193 li gp,13 + 800002c0: 03d09063 bne ra,t4,800002e0 + +00000000800002c4 : + 800002c4: 00ff00b7 lui ra,0xff0 + 800002c8: 0ff0809b addiw ra,ra,255 + 800002cc: 70f0c013 xori zero,ra,1807 + 800002d0: 00000e93 li t4,0 + 800002d4: 00e00193 li gp,14 + 800002d8: 01d01463 bne zero,t4,800002e0 + 800002dc: 00301c63 bne zero,gp,800002f4 + +00000000800002e0 : + 800002e0: 0ff0000f fence + 800002e4: 00018063 beqz gp,800002e4 + 800002e8: 00119193 slli gp,gp,0x1 + 800002ec: 0011e193 ori gp,gp,1 + 800002f0: 00000073 ecall + +00000000800002f4 : + 800002f4: 0ff0000f fence + 800002f8: 00100193 li gp,1 + 800002fc: 00000073 ecall + 80000300: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-add b/Tests/isa/rv64ui-v-add new file mode 100644 index 0000000..8ffe022 Binary files /dev/null and b/Tests/isa/rv64ui-v-add differ diff --git a/Tests/isa/rv64ui-v-add.dump b/Tests/isa/rv64ui-v-add.dump new file mode 100644 index 0000000..8598d2b --- /dev/null +++ b/Tests/isa/rv64ui-v-add.dump @@ -0,0 +1,1229 @@ + +rv64ui-v-add: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b8068693 addi a3,a3,-1152 # 80002fd8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: bb460613 addi a2,a2,-1100 # 80003068 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b7c60613 addi a2,a2,-1156 # 80003080 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: acc68693 addi a3,a3,-1332 # 80003020 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: ae868693 addi a3,a3,-1304 # 80003158 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a6860613 addi a2,a2,-1432 # 80003130 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 99c68693 addi a3,a3,-1636 # 80003188 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 8bc68693 addi a3,a3,-1860 # 800030f8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 84c68693 addi a3,a3,-1972 # 800030c0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02100793 li a5,33 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0f1557b7 lui a5,0xf155 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 1b078793 addi a5,a5,432 # f1551b0 <_start-0x70eaae50> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 00208f33 add t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 4fdf1063 bne t5,t4,80002fbc + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 00208f33 add t5,ra,sp + 80002aec: 00200e93 li t4,2 + 80002af0: 00300193 li gp,3 + 80002af4: 4ddf1463 bne t5,t4,80002fbc + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 00208f33 add t5,ra,sp + 80002b04: 00a00e93 li t4,10 + 80002b08: 00400193 li gp,4 + 80002b0c: 4bdf1863 bne t5,t4,80002fbc + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 00208f33 add t5,ra,sp + 80002b1c: ffff8eb7 lui t4,0xffff8 + 80002b20: 00500193 li gp,5 + 80002b24: 49df1c63 bne t5,t4,80002fbc + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 00208f33 add t5,ra,sp + 80002b34: 80000eb7 lui t4,0x80000 + 80002b38: 00600193 li gp,6 + 80002b3c: 49df1063 bne t5,t4,80002fbc + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 00208f33 add t5,ra,sp + 80002b4c: ffff0eb7 lui t4,0xffff0 + 80002b50: fffe8e9b addiw t4,t4,-1 + 80002b54: 00fe9e93 slli t4,t4,0xf + 80002b58: 00700193 li gp,7 + 80002b5c: 47df1063 bne t5,t4,80002fbc + +0000000080002b60 : + 80002b60: 00000093 li ra,0 + 80002b64: 00008137 lui sp,0x8 + 80002b68: fff1011b addiw sp,sp,-1 + 80002b6c: 00208f33 add t5,ra,sp + 80002b70: 00008eb7 lui t4,0x8 + 80002b74: fffe8e9b addiw t4,t4,-1 + 80002b78: 00800193 li gp,8 + 80002b7c: 45df1063 bne t5,t4,80002fbc + +0000000080002b80 : + 80002b80: 800000b7 lui ra,0x80000 + 80002b84: fff0809b addiw ra,ra,-1 + 80002b88: 00000113 li sp,0 + 80002b8c: 00208f33 add t5,ra,sp + 80002b90: 80000eb7 lui t4,0x80000 + 80002b94: fffe8e9b addiw t4,t4,-1 + 80002b98: 00900193 li gp,9 + 80002b9c: 43df1063 bne t5,t4,80002fbc + +0000000080002ba0 : + 80002ba0: 800000b7 lui ra,0x80000 + 80002ba4: fff0809b addiw ra,ra,-1 + 80002ba8: 00008137 lui sp,0x8 + 80002bac: fff1011b addiw sp,sp,-1 + 80002bb0: 00208f33 add t5,ra,sp + 80002bb4: 00010eb7 lui t4,0x10 + 80002bb8: 001e8e9b addiw t4,t4,1 + 80002bbc: 00fe9e93 slli t4,t4,0xf + 80002bc0: ffee8e93 addi t4,t4,-2 # fffe <_start-0x7fff0002> + 80002bc4: 00a00193 li gp,10 + 80002bc8: 3fdf1a63 bne t5,t4,80002fbc + +0000000080002bcc : + 80002bcc: 800000b7 lui ra,0x80000 + 80002bd0: 00008137 lui sp,0x8 + 80002bd4: fff1011b addiw sp,sp,-1 + 80002bd8: 00208f33 add t5,ra,sp + 80002bdc: 80008eb7 lui t4,0x80008 + 80002be0: fffe8e9b addiw t4,t4,-1 + 80002be4: 00b00193 li gp,11 + 80002be8: 3ddf1a63 bne t5,t4,80002fbc + +0000000080002bec : + 80002bec: 800000b7 lui ra,0x80000 + 80002bf0: fff0809b addiw ra,ra,-1 + 80002bf4: ffff8137 lui sp,0xffff8 + 80002bf8: 00208f33 add t5,ra,sp + 80002bfc: 7fff8eb7 lui t4,0x7fff8 + 80002c00: fffe8e9b addiw t4,t4,-1 + 80002c04: 00c00193 li gp,12 + 80002c08: 3bdf1a63 bne t5,t4,80002fbc + +0000000080002c0c : + 80002c0c: 00000093 li ra,0 + 80002c10: fff00113 li sp,-1 + 80002c14: 00208f33 add t5,ra,sp + 80002c18: fff00e93 li t4,-1 + 80002c1c: 00d00193 li gp,13 + 80002c20: 39df1e63 bne t5,t4,80002fbc + +0000000080002c24 : + 80002c24: fff00093 li ra,-1 + 80002c28: 00100113 li sp,1 + 80002c2c: 00208f33 add t5,ra,sp + 80002c30: 00000e93 li t4,0 + 80002c34: 00e00193 li gp,14 + 80002c38: 39df1263 bne t5,t4,80002fbc + +0000000080002c3c : + 80002c3c: fff00093 li ra,-1 + 80002c40: fff00113 li sp,-1 + 80002c44: 00208f33 add t5,ra,sp + 80002c48: ffe00e93 li t4,-2 + 80002c4c: 00f00193 li gp,15 + 80002c50: 37df1663 bne t5,t4,80002fbc + +0000000080002c54 : + 80002c54: 00100093 li ra,1 + 80002c58: 80000137 lui sp,0x80000 + 80002c5c: fff1011b addiw sp,sp,-1 + 80002c60: 00208f33 add t5,ra,sp + 80002c64: 00100e9b addiw t4,zero,1 + 80002c68: 01fe9e93 slli t4,t4,0x1f + 80002c6c: 01000193 li gp,16 + 80002c70: 35df1663 bne t5,t4,80002fbc + +0000000080002c74 : + 80002c74: 00d00093 li ra,13 + 80002c78: 00b00113 li sp,11 + 80002c7c: 002080b3 add ra,ra,sp + 80002c80: 01800e93 li t4,24 + 80002c84: 01100193 li gp,17 + 80002c88: 33d09a63 bne ra,t4,80002fbc + +0000000080002c8c : + 80002c8c: 00e00093 li ra,14 + 80002c90: 00b00113 li sp,11 + 80002c94: 00208133 add sp,ra,sp + 80002c98: 01900e93 li t4,25 + 80002c9c: 01200193 li gp,18 + 80002ca0: 31d11e63 bne sp,t4,80002fbc + +0000000080002ca4 : + 80002ca4: 00d00093 li ra,13 + 80002ca8: 001080b3 add ra,ra,ra + 80002cac: 01a00e93 li t4,26 + 80002cb0: 01300193 li gp,19 + 80002cb4: 31d09463 bne ra,t4,80002fbc + +0000000080002cb8 : + 80002cb8: 00000213 li tp,0 + 80002cbc: 00d00093 li ra,13 + 80002cc0: 00b00113 li sp,11 + 80002cc4: 00208f33 add t5,ra,sp + 80002cc8: 000f0313 mv t1,t5 + 80002ccc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd0: 00200293 li t0,2 + 80002cd4: fe5214e3 bne tp,t0,80002cbc + 80002cd8: 01800e93 li t4,24 + 80002cdc: 01400193 li gp,20 + 80002ce0: 2dd31e63 bne t1,t4,80002fbc + +0000000080002ce4 : + 80002ce4: 00000213 li tp,0 + 80002ce8: 00e00093 li ra,14 + 80002cec: 00b00113 li sp,11 + 80002cf0: 00208f33 add t5,ra,sp + 80002cf4: 00000013 nop + 80002cf8: 000f0313 mv t1,t5 + 80002cfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d00: 00200293 li t0,2 + 80002d04: fe5212e3 bne tp,t0,80002ce8 + 80002d08: 01900e93 li t4,25 + 80002d0c: 01500193 li gp,21 + 80002d10: 2bd31663 bne t1,t4,80002fbc + +0000000080002d14 : + 80002d14: 00000213 li tp,0 + 80002d18: 00f00093 li ra,15 + 80002d1c: 00b00113 li sp,11 + 80002d20: 00208f33 add t5,ra,sp + 80002d24: 00000013 nop + 80002d28: 00000013 nop + 80002d2c: 000f0313 mv t1,t5 + 80002d30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d34: 00200293 li t0,2 + 80002d38: fe5210e3 bne tp,t0,80002d18 + 80002d3c: 01a00e93 li t4,26 + 80002d40: 01600193 li gp,22 + 80002d44: 27d31c63 bne t1,t4,80002fbc + +0000000080002d48 : + 80002d48: 00000213 li tp,0 + 80002d4c: 00d00093 li ra,13 + 80002d50: 00b00113 li sp,11 + 80002d54: 00208f33 add t5,ra,sp + 80002d58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d5c: 00200293 li t0,2 + 80002d60: fe5216e3 bne tp,t0,80002d4c + 80002d64: 01800e93 li t4,24 + 80002d68: 01700193 li gp,23 + 80002d6c: 25df1863 bne t5,t4,80002fbc + +0000000080002d70 : + 80002d70: 00000213 li tp,0 + 80002d74: 00e00093 li ra,14 + 80002d78: 00b00113 li sp,11 + 80002d7c: 00000013 nop + 80002d80: 00208f33 add t5,ra,sp + 80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d88: 00200293 li t0,2 + 80002d8c: fe5214e3 bne tp,t0,80002d74 + 80002d90: 01900e93 li t4,25 + 80002d94: 01800193 li gp,24 + 80002d98: 23df1263 bne t5,t4,80002fbc + +0000000080002d9c : + 80002d9c: 00000213 li tp,0 + 80002da0: 00f00093 li ra,15 + 80002da4: 00b00113 li sp,11 + 80002da8: 00000013 nop + 80002dac: 00000013 nop + 80002db0: 00208f33 add t5,ra,sp + 80002db4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002db8: 00200293 li t0,2 + 80002dbc: fe5212e3 bne tp,t0,80002da0 + 80002dc0: 01a00e93 li t4,26 + 80002dc4: 01900193 li gp,25 + 80002dc8: 1fdf1a63 bne t5,t4,80002fbc + +0000000080002dcc : + 80002dcc: 00000213 li tp,0 + 80002dd0: 00d00093 li ra,13 + 80002dd4: 00000013 nop + 80002dd8: 00b00113 li sp,11 + 80002ddc: 00208f33 add t5,ra,sp + 80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de4: 00200293 li t0,2 + 80002de8: fe5214e3 bne tp,t0,80002dd0 + 80002dec: 01800e93 li t4,24 + 80002df0: 01a00193 li gp,26 + 80002df4: 1ddf1463 bne t5,t4,80002fbc + +0000000080002df8 : + 80002df8: 00000213 li tp,0 + 80002dfc: 00e00093 li ra,14 + 80002e00: 00000013 nop + 80002e04: 00b00113 li sp,11 + 80002e08: 00000013 nop + 80002e0c: 00208f33 add t5,ra,sp + 80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e14: 00200293 li t0,2 + 80002e18: fe5212e3 bne tp,t0,80002dfc + 80002e1c: 01900e93 li t4,25 + 80002e20: 01b00193 li gp,27 + 80002e24: 19df1c63 bne t5,t4,80002fbc + +0000000080002e28 : + 80002e28: 00000213 li tp,0 + 80002e2c: 00f00093 li ra,15 + 80002e30: 00000013 nop + 80002e34: 00000013 nop + 80002e38: 00b00113 li sp,11 + 80002e3c: 00208f33 add t5,ra,sp + 80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e44: 00200293 li t0,2 + 80002e48: fe5212e3 bne tp,t0,80002e2c + 80002e4c: 01a00e93 li t4,26 + 80002e50: 01c00193 li gp,28 + 80002e54: 17df1463 bne t5,t4,80002fbc + +0000000080002e58 : + 80002e58: 00000213 li tp,0 + 80002e5c: 00b00113 li sp,11 + 80002e60: 00d00093 li ra,13 + 80002e64: 00208f33 add t5,ra,sp + 80002e68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e6c: 00200293 li t0,2 + 80002e70: fe5216e3 bne tp,t0,80002e5c + 80002e74: 01800e93 li t4,24 + 80002e78: 01d00193 li gp,29 + 80002e7c: 15df1063 bne t5,t4,80002fbc + +0000000080002e80 : + 80002e80: 00000213 li tp,0 + 80002e84: 00b00113 li sp,11 + 80002e88: 00e00093 li ra,14 + 80002e8c: 00000013 nop + 80002e90: 00208f33 add t5,ra,sp + 80002e94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e98: 00200293 li t0,2 + 80002e9c: fe5214e3 bne tp,t0,80002e84 + 80002ea0: 01900e93 li t4,25 + 80002ea4: 01e00193 li gp,30 + 80002ea8: 11df1a63 bne t5,t4,80002fbc + +0000000080002eac : + 80002eac: 00000213 li tp,0 + 80002eb0: 00b00113 li sp,11 + 80002eb4: 00f00093 li ra,15 + 80002eb8: 00000013 nop + 80002ebc: 00000013 nop + 80002ec0: 00208f33 add t5,ra,sp + 80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ec8: 00200293 li t0,2 + 80002ecc: fe5212e3 bne tp,t0,80002eb0 + 80002ed0: 01a00e93 li t4,26 + 80002ed4: 01f00193 li gp,31 + 80002ed8: 0fdf1263 bne t5,t4,80002fbc + +0000000080002edc : + 80002edc: 00000213 li tp,0 + 80002ee0: 00b00113 li sp,11 + 80002ee4: 00000013 nop + 80002ee8: 00d00093 li ra,13 + 80002eec: 00208f33 add t5,ra,sp + 80002ef0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ef4: 00200293 li t0,2 + 80002ef8: fe5214e3 bne tp,t0,80002ee0 + 80002efc: 01800e93 li t4,24 + 80002f00: 02000193 li gp,32 + 80002f04: 0bdf1c63 bne t5,t4,80002fbc + +0000000080002f08 : + 80002f08: 00000213 li tp,0 + 80002f0c: 00b00113 li sp,11 + 80002f10: 00000013 nop + 80002f14: 00e00093 li ra,14 + 80002f18: 00000013 nop + 80002f1c: 00208f33 add t5,ra,sp + 80002f20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f24: 00200293 li t0,2 + 80002f28: fe5212e3 bne tp,t0,80002f0c + 80002f2c: 01900e93 li t4,25 + 80002f30: 02100193 li gp,33 + 80002f34: 09df1463 bne t5,t4,80002fbc + +0000000080002f38 : + 80002f38: 00000213 li tp,0 + 80002f3c: 00b00113 li sp,11 + 80002f40: 00000013 nop + 80002f44: 00000013 nop + 80002f48: 00f00093 li ra,15 + 80002f4c: 00208f33 add t5,ra,sp + 80002f50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f54: 00200293 li t0,2 + 80002f58: fe5212e3 bne tp,t0,80002f3c + 80002f5c: 01a00e93 li t4,26 + 80002f60: 02200193 li gp,34 + 80002f64: 05df1c63 bne t5,t4,80002fbc + +0000000080002f68 : + 80002f68: 00f00093 li ra,15 + 80002f6c: 00100133 add sp,zero,ra + 80002f70: 00f00e93 li t4,15 + 80002f74: 02300193 li gp,35 + 80002f78: 05d11263 bne sp,t4,80002fbc + +0000000080002f7c : + 80002f7c: 02000093 li ra,32 + 80002f80: 00008133 add sp,ra,zero + 80002f84: 02000e93 li t4,32 + 80002f88: 02400193 li gp,36 + 80002f8c: 03d11863 bne sp,t4,80002fbc + +0000000080002f90 : + 80002f90: 000000b3 add ra,zero,zero + 80002f94: 00000e93 li t4,0 + 80002f98: 02500193 li gp,37 + 80002f9c: 03d09063 bne ra,t4,80002fbc + +0000000080002fa0 : + 80002fa0: 01000093 li ra,16 + 80002fa4: 01e00113 li sp,30 + 80002fa8: 00208033 add zero,ra,sp + 80002fac: 00000e93 li t4,0 + 80002fb0: 02600193 li gp,38 + 80002fb4: 01d01463 bne zero,t4,80002fbc + 80002fb8: 00301a63 bne zero,gp,80002fcc + +0000000080002fbc : + 80002fbc: 00119513 slli a0,gp,0x1 + 80002fc0: 00050063 beqz a0,80002fc0 + 80002fc4: 00156513 ori a0,a0,1 + 80002fc8: 00000073 ecall + +0000000080002fcc : + 80002fcc: 00100513 li a0,1 + 80002fd0: 00000073 ecall + 80002fd4: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-addi b/Tests/isa/rv64ui-v-addi new file mode 100644 index 0000000..ea7f3b3 Binary files /dev/null and b/Tests/isa/rv64ui-v-addi differ diff --git a/Tests/isa/rv64ui-v-addi.dump b/Tests/isa/rv64ui-v-addi.dump new file mode 100644 index 0000000..6c453f7 --- /dev/null +++ b/Tests/isa/rv64ui-v-addi.dump @@ -0,0 +1,1051 @@ + +rv64ui-v-addi: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 92068693 addi a3,a3,-1760 # 80002d78 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 95460613 addi a2,a2,-1708 # 80002e08 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 91c60613 addi a2,a2,-1764 # 80002e20 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 86c68693 addi a3,a3,-1940 # 80002dc0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 88868693 addi a3,a3,-1912 # 80002ef8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 80860613 addi a2,a2,-2040 # 80002ed0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 73c68693 addi a3,a3,1852 # 80002f28 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 65c68693 addi a3,a3,1628 # 80002e98 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5ec68693 addi a3,a3,1516 # 80002e60 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01000793 li a5,16 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 04f557b7 lui a5,0x4f55 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 5a178793 addi a5,a5,1441 # 4f555a1 <_start-0x7b0aaa5f> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00008f13 mv t5,ra + 80002ad0: 00000e93 li t4,0 + 80002ad4: 00200193 li gp,2 + 80002ad8: 29df1263 bne t5,t4,80002d5c + +0000000080002adc : + 80002adc: 00100093 li ra,1 + 80002ae0: 00108f13 addi t5,ra,1 + 80002ae4: 00200e93 li t4,2 + 80002ae8: 00300193 li gp,3 + 80002aec: 27df1863 bne t5,t4,80002d5c + +0000000080002af0 : + 80002af0: 00300093 li ra,3 + 80002af4: 00708f13 addi t5,ra,7 + 80002af8: 00a00e93 li t4,10 + 80002afc: 00400193 li gp,4 + 80002b00: 25df1e63 bne t5,t4,80002d5c + +0000000080002b04 : + 80002b04: 00000093 li ra,0 + 80002b08: 80008f13 addi t5,ra,-2048 + 80002b0c: 80000e93 li t4,-2048 + 80002b10: 00500193 li gp,5 + 80002b14: 25df1463 bne t5,t4,80002d5c + +0000000080002b18 : + 80002b18: 800000b7 lui ra,0x80000 + 80002b1c: 00008f13 mv t5,ra + 80002b20: 80000eb7 lui t4,0x80000 + 80002b24: 00600193 li gp,6 + 80002b28: 23df1a63 bne t5,t4,80002d5c + +0000000080002b2c : + 80002b2c: 800000b7 lui ra,0x80000 + 80002b30: 80008f13 addi t5,ra,-2048 # ffffffff7ffff800 <_end+0xfffffffeffff8010> + 80002b34: fff00e9b addiw t4,zero,-1 + 80002b38: 01fe9e93 slli t4,t4,0x1f + 80002b3c: 800e8e93 addi t4,t4,-2048 # ffffffff7ffff800 <_end+0xfffffffeffff8010> + 80002b40: 00700193 li gp,7 + 80002b44: 21df1c63 bne t5,t4,80002d5c + +0000000080002b48 : + 80002b48: 00000093 li ra,0 + 80002b4c: 7ff08f13 addi t5,ra,2047 + 80002b50: 7ff00e93 li t4,2047 + 80002b54: 00800193 li gp,8 + 80002b58: 21df1263 bne t5,t4,80002d5c + +0000000080002b5c : + 80002b5c: 800000b7 lui ra,0x80000 + 80002b60: fff0809b addiw ra,ra,-1 + 80002b64: 00008f13 mv t5,ra + 80002b68: 80000eb7 lui t4,0x80000 + 80002b6c: fffe8e9b addiw t4,t4,-1 + 80002b70: 00900193 li gp,9 + 80002b74: 1fdf1463 bne t5,t4,80002d5c + +0000000080002b78 : + 80002b78: 800000b7 lui ra,0x80000 + 80002b7c: fff0809b addiw ra,ra,-1 + 80002b80: 7ff08f13 addi t5,ra,2047 # ffffffff800007ff <_end+0xfffffffeffff900f> + 80002b84: 00100e9b addiw t4,zero,1 + 80002b88: 01fe9e93 slli t4,t4,0x1f + 80002b8c: 7fee8e93 addi t4,t4,2046 # ffffffff800007fe <_end+0xfffffffeffff900e> + 80002b90: 00a00193 li gp,10 + 80002b94: 1ddf1463 bne t5,t4,80002d5c + +0000000080002b98 : + 80002b98: 800000b7 lui ra,0x80000 + 80002b9c: 7ff08f13 addi t5,ra,2047 # ffffffff800007ff <_end+0xfffffffeffff900f> + 80002ba0: 80000eb7 lui t4,0x80000 + 80002ba4: 7ffe8e9b addiw t4,t4,2047 + 80002ba8: 00b00193 li gp,11 + 80002bac: 1bdf1863 bne t5,t4,80002d5c + +0000000080002bb0 : + 80002bb0: 800000b7 lui ra,0x80000 + 80002bb4: fff0809b addiw ra,ra,-1 + 80002bb8: 80008f13 addi t5,ra,-2048 # ffffffff7ffff800 <_end+0xfffffffeffff8010> + 80002bbc: 7ffffeb7 lui t4,0x7ffff + 80002bc0: 7ffe8e9b addiw t4,t4,2047 + 80002bc4: 00c00193 li gp,12 + 80002bc8: 19df1a63 bne t5,t4,80002d5c + +0000000080002bcc : + 80002bcc: 00000093 li ra,0 + 80002bd0: fff08f13 addi t5,ra,-1 + 80002bd4: fff00e93 li t4,-1 + 80002bd8: 00d00193 li gp,13 + 80002bdc: 19df1063 bne t5,t4,80002d5c + +0000000080002be0 : + 80002be0: fff00093 li ra,-1 + 80002be4: 00108f13 addi t5,ra,1 + 80002be8: 00000e93 li t4,0 + 80002bec: 00e00193 li gp,14 + 80002bf0: 17df1663 bne t5,t4,80002d5c + +0000000080002bf4 : + 80002bf4: fff00093 li ra,-1 + 80002bf8: fff08f13 addi t5,ra,-1 + 80002bfc: ffe00e93 li t4,-2 + 80002c00: 00f00193 li gp,15 + 80002c04: 15df1c63 bne t5,t4,80002d5c + +0000000080002c08 : + 80002c08: 800000b7 lui ra,0x80000 + 80002c0c: fff0809b addiw ra,ra,-1 + 80002c10: 00108f13 addi t5,ra,1 # ffffffff80000001 <_end+0xfffffffeffff8811> + 80002c14: 00100e9b addiw t4,zero,1 + 80002c18: 01fe9e93 slli t4,t4,0x1f + 80002c1c: 01000193 li gp,16 + 80002c20: 13df1e63 bne t5,t4,80002d5c + +0000000080002c24 : + 80002c24: 00d00093 li ra,13 + 80002c28: 00b08093 addi ra,ra,11 + 80002c2c: 01800e93 li t4,24 + 80002c30: 01100193 li gp,17 + 80002c34: 13d09463 bne ra,t4,80002d5c + +0000000080002c38 : + 80002c38: 00000213 li tp,0 + 80002c3c: 00d00093 li ra,13 + 80002c40: 00b08f13 addi t5,ra,11 + 80002c44: 000f0313 mv t1,t5 + 80002c48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c4c: 00200293 li t0,2 + 80002c50: fe5216e3 bne tp,t0,80002c3c + 80002c54: 01800e93 li t4,24 + 80002c58: 01200193 li gp,18 + 80002c5c: 11d31063 bne t1,t4,80002d5c + +0000000080002c60 : + 80002c60: 00000213 li tp,0 + 80002c64: 00d00093 li ra,13 + 80002c68: 00a08f13 addi t5,ra,10 + 80002c6c: 00000013 nop + 80002c70: 000f0313 mv t1,t5 + 80002c74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c78: 00200293 li t0,2 + 80002c7c: fe5214e3 bne tp,t0,80002c64 + 80002c80: 01700e93 li t4,23 + 80002c84: 01300193 li gp,19 + 80002c88: 0dd31a63 bne t1,t4,80002d5c + +0000000080002c8c : + 80002c8c: 00000213 li tp,0 + 80002c90: 00d00093 li ra,13 + 80002c94: 00908f13 addi t5,ra,9 + 80002c98: 00000013 nop + 80002c9c: 00000013 nop + 80002ca0: 000f0313 mv t1,t5 + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5212e3 bne tp,t0,80002c90 + 80002cb0: 01600e93 li t4,22 + 80002cb4: 01400193 li gp,20 + 80002cb8: 0bd31263 bne t1,t4,80002d5c + +0000000080002cbc : + 80002cbc: 00000213 li tp,0 + 80002cc0: 00d00093 li ra,13 + 80002cc4: 00b08f13 addi t5,ra,11 + 80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ccc: 00200293 li t0,2 + 80002cd0: fe5218e3 bne tp,t0,80002cc0 + 80002cd4: 01800e93 li t4,24 + 80002cd8: 01500193 li gp,21 + 80002cdc: 09df1063 bne t5,t4,80002d5c + +0000000080002ce0 : + 80002ce0: 00000213 li tp,0 + 80002ce4: 00d00093 li ra,13 + 80002ce8: 00000013 nop + 80002cec: 00a08f13 addi t5,ra,10 + 80002cf0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf4: 00200293 li t0,2 + 80002cf8: fe5216e3 bne tp,t0,80002ce4 + 80002cfc: 01700e93 li t4,23 + 80002d00: 01600193 li gp,22 + 80002d04: 05df1c63 bne t5,t4,80002d5c + +0000000080002d08 : + 80002d08: 00000213 li tp,0 + 80002d0c: 00d00093 li ra,13 + 80002d10: 00000013 nop + 80002d14: 00000013 nop + 80002d18: 00908f13 addi t5,ra,9 + 80002d1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d20: 00200293 li t0,2 + 80002d24: fe5214e3 bne tp,t0,80002d0c + 80002d28: 01600e93 li t4,22 + 80002d2c: 01700193 li gp,23 + 80002d30: 03df1663 bne t5,t4,80002d5c + +0000000080002d34 : + 80002d34: 02000093 li ra,32 + 80002d38: 02000e93 li t4,32 + 80002d3c: 01800193 li gp,24 + 80002d40: 01d09e63 bne ra,t4,80002d5c + +0000000080002d44 : + 80002d44: 02100093 li ra,33 + 80002d48: 03208013 addi zero,ra,50 + 80002d4c: 00000e93 li t4,0 + 80002d50: 01900193 li gp,25 + 80002d54: 01d01463 bne zero,t4,80002d5c + 80002d58: 00301a63 bne zero,gp,80002d6c + +0000000080002d5c : + 80002d5c: 00119513 slli a0,gp,0x1 + 80002d60: 00050063 beqz a0,80002d60 + 80002d64: 00156513 ori a0,a0,1 + 80002d68: 00000073 ecall + +0000000080002d6c : + 80002d6c: 00100513 li a0,1 + 80002d70: 00000073 ecall + 80002d74: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-addiw b/Tests/isa/rv64ui-v-addiw new file mode 100644 index 0000000..006ad7d Binary files /dev/null and b/Tests/isa/rv64ui-v-addiw differ diff --git a/Tests/isa/rv64ui-v-addiw.dump b/Tests/isa/rv64ui-v-addiw.dump new file mode 100644 index 0000000..d152915 --- /dev/null +++ b/Tests/isa/rv64ui-v-addiw.dump @@ -0,0 +1,1048 @@ + +rv64ui-v-addiw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 91868693 addi a3,a3,-1768 # 80002d70 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 94c60613 addi a2,a2,-1716 # 80002e00 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 91460613 addi a2,a2,-1772 # 80002e18 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 86468693 addi a3,a3,-1948 # 80002db8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 88068693 addi a3,a3,-1920 # 80002ef0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 80060613 addi a2,a2,-2048 # 80002ec8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 73468693 addi a3,a3,1844 # 80002f20 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 65468693 addi a3,a3,1620 # 80002e90 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5e468693 addi a3,a3,1508 # 80002e58 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 00d00793 li a5,13 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 04c6e7b7 lui a5,0x4c6e + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 45678793 addi a5,a5,1110 # 4c6e456 <_start-0x7b391baa> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00008f1b sext.w t5,ra + 80002ad0: 00000e93 li t4,0 + 80002ad4: 00200193 li gp,2 + 80002ad8: 27df1c63 bne t5,t4,80002d50 + +0000000080002adc : + 80002adc: 00100093 li ra,1 + 80002ae0: 00108f1b addiw t5,ra,1 + 80002ae4: 00200e93 li t4,2 + 80002ae8: 00300193 li gp,3 + 80002aec: 27df1263 bne t5,t4,80002d50 + +0000000080002af0 : + 80002af0: 00300093 li ra,3 + 80002af4: 00708f1b addiw t5,ra,7 + 80002af8: 00a00e93 li t4,10 + 80002afc: 00400193 li gp,4 + 80002b00: 25df1863 bne t5,t4,80002d50 + +0000000080002b04 : + 80002b04: 00000093 li ra,0 + 80002b08: 80008f1b addiw t5,ra,-2048 + 80002b0c: 80000e93 li t4,-2048 + 80002b10: 00500193 li gp,5 + 80002b14: 23df1e63 bne t5,t4,80002d50 + +0000000080002b18 : + 80002b18: 800000b7 lui ra,0x80000 + 80002b1c: 00008f1b sext.w t5,ra + 80002b20: 80000eb7 lui t4,0x80000 + 80002b24: 00600193 li gp,6 + 80002b28: 23df1463 bne t5,t4,80002d50 + +0000000080002b2c : + 80002b2c: 800000b7 lui ra,0x80000 + 80002b30: 80008f1b addiw t5,ra,-2048 + 80002b34: 80000eb7 lui t4,0x80000 + 80002b38: 800e8e9b addiw t4,t4,-2048 + 80002b3c: 00700193 li gp,7 + 80002b40: 21df1863 bne t5,t4,80002d50 + +0000000080002b44 : + 80002b44: 00000093 li ra,0 + 80002b48: 7ff08f1b addiw t5,ra,2047 + 80002b4c: 7ff00e93 li t4,2047 + 80002b50: 00800193 li gp,8 + 80002b54: 1fdf1e63 bne t5,t4,80002d50 + +0000000080002b58 : + 80002b58: 800000b7 lui ra,0x80000 + 80002b5c: fff0809b addiw ra,ra,-1 + 80002b60: 00008f1b sext.w t5,ra + 80002b64: 80000eb7 lui t4,0x80000 + 80002b68: fffe8e9b addiw t4,t4,-1 + 80002b6c: 00900193 li gp,9 + 80002b70: 1fdf1063 bne t5,t4,80002d50 + +0000000080002b74 : + 80002b74: 800000b7 lui ra,0x80000 + 80002b78: fff0809b addiw ra,ra,-1 + 80002b7c: 7ff08f1b addiw t5,ra,2047 + 80002b80: 80000eb7 lui t4,0x80000 + 80002b84: 7fee8e9b addiw t4,t4,2046 + 80002b88: 00a00193 li gp,10 + 80002b8c: 1ddf1263 bne t5,t4,80002d50 + +0000000080002b90 : + 80002b90: 800000b7 lui ra,0x80000 + 80002b94: 7ff08f1b addiw t5,ra,2047 + 80002b98: 80000eb7 lui t4,0x80000 + 80002b9c: 7ffe8e9b addiw t4,t4,2047 + 80002ba0: 00b00193 li gp,11 + 80002ba4: 1bdf1663 bne t5,t4,80002d50 + +0000000080002ba8 : + 80002ba8: 800000b7 lui ra,0x80000 + 80002bac: fff0809b addiw ra,ra,-1 + 80002bb0: 80008f1b addiw t5,ra,-2048 + 80002bb4: 7ffffeb7 lui t4,0x7ffff + 80002bb8: 7ffe8e9b addiw t4,t4,2047 + 80002bbc: 00c00193 li gp,12 + 80002bc0: 19df1863 bne t5,t4,80002d50 + +0000000080002bc4 : + 80002bc4: 00000093 li ra,0 + 80002bc8: fff08f1b addiw t5,ra,-1 + 80002bcc: fff00e93 li t4,-1 + 80002bd0: 00d00193 li gp,13 + 80002bd4: 17df1e63 bne t5,t4,80002d50 + +0000000080002bd8 : + 80002bd8: fff00093 li ra,-1 + 80002bdc: 00108f1b addiw t5,ra,1 + 80002be0: 00000e93 li t4,0 + 80002be4: 00e00193 li gp,14 + 80002be8: 17df1463 bne t5,t4,80002d50 + +0000000080002bec : + 80002bec: fff00093 li ra,-1 + 80002bf0: fff08f1b addiw t5,ra,-1 + 80002bf4: ffe00e93 li t4,-2 + 80002bf8: 00f00193 li gp,15 + 80002bfc: 15df1a63 bne t5,t4,80002d50 + +0000000080002c00 : + 80002c00: 800000b7 lui ra,0x80000 + 80002c04: fff0809b addiw ra,ra,-1 + 80002c08: 00108f1b addiw t5,ra,1 + 80002c0c: 80000eb7 lui t4,0x80000 + 80002c10: 01000193 li gp,16 + 80002c14: 13df1e63 bne t5,t4,80002d50 + +0000000080002c18 : + 80002c18: 00d00093 li ra,13 + 80002c1c: 00b0809b addiw ra,ra,11 + 80002c20: 01800e93 li t4,24 + 80002c24: 01100193 li gp,17 + 80002c28: 13d09463 bne ra,t4,80002d50 + +0000000080002c2c : + 80002c2c: 00000213 li tp,0 + 80002c30: 00d00093 li ra,13 + 80002c34: 00b08f1b addiw t5,ra,11 + 80002c38: 000f0313 mv t1,t5 + 80002c3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c40: 00200293 li t0,2 + 80002c44: fe5216e3 bne tp,t0,80002c30 + 80002c48: 01800e93 li t4,24 + 80002c4c: 01200193 li gp,18 + 80002c50: 11d31063 bne t1,t4,80002d50 + +0000000080002c54 : + 80002c54: 00000213 li tp,0 + 80002c58: 00d00093 li ra,13 + 80002c5c: 00a08f1b addiw t5,ra,10 + 80002c60: 00000013 nop + 80002c64: 000f0313 mv t1,t5 + 80002c68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c6c: 00200293 li t0,2 + 80002c70: fe5214e3 bne tp,t0,80002c58 + 80002c74: 01700e93 li t4,23 + 80002c78: 01300193 li gp,19 + 80002c7c: 0dd31a63 bne t1,t4,80002d50 + +0000000080002c80 : + 80002c80: 00000213 li tp,0 + 80002c84: 00d00093 li ra,13 + 80002c88: 00908f1b addiw t5,ra,9 + 80002c8c: 00000013 nop + 80002c90: 00000013 nop + 80002c94: 000f0313 mv t1,t5 + 80002c98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c9c: 00200293 li t0,2 + 80002ca0: fe5212e3 bne tp,t0,80002c84 + 80002ca4: 01600e93 li t4,22 + 80002ca8: 01400193 li gp,20 + 80002cac: 0bd31263 bne t1,t4,80002d50 + +0000000080002cb0 : + 80002cb0: 00000213 li tp,0 + 80002cb4: 00d00093 li ra,13 + 80002cb8: 00b08f1b addiw t5,ra,11 + 80002cbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cc0: 00200293 li t0,2 + 80002cc4: fe5218e3 bne tp,t0,80002cb4 + 80002cc8: 01800e93 li t4,24 + 80002ccc: 01500193 li gp,21 + 80002cd0: 09df1063 bne t5,t4,80002d50 + +0000000080002cd4 : + 80002cd4: 00000213 li tp,0 + 80002cd8: 00d00093 li ra,13 + 80002cdc: 00000013 nop + 80002ce0: 00a08f1b addiw t5,ra,10 + 80002ce4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce8: 00200293 li t0,2 + 80002cec: fe5216e3 bne tp,t0,80002cd8 + 80002cf0: 01700e93 li t4,23 + 80002cf4: 01600193 li gp,22 + 80002cf8: 05df1c63 bne t5,t4,80002d50 + +0000000080002cfc : + 80002cfc: 00000213 li tp,0 + 80002d00: 00d00093 li ra,13 + 80002d04: 00000013 nop + 80002d08: 00000013 nop + 80002d0c: 00908f1b addiw t5,ra,9 + 80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d14: 00200293 li t0,2 + 80002d18: fe5214e3 bne tp,t0,80002d00 + 80002d1c: 01600e93 li t4,22 + 80002d20: 01700193 li gp,23 + 80002d24: 03df1663 bne t5,t4,80002d50 + +0000000080002d28 : + 80002d28: 0200009b addiw ra,zero,32 + 80002d2c: 02000e93 li t4,32 + 80002d30: 01800193 li gp,24 + 80002d34: 01d09e63 bne ra,t4,80002d50 + +0000000080002d38 : + 80002d38: 02100093 li ra,33 + 80002d3c: 0320801b addiw zero,ra,50 + 80002d40: 00000e93 li t4,0 + 80002d44: 01900193 li gp,25 + 80002d48: 01d01463 bne zero,t4,80002d50 + 80002d4c: 00301a63 bne zero,gp,80002d60 + +0000000080002d50 : + 80002d50: 00119513 slli a0,gp,0x1 + 80002d54: 00050063 beqz a0,80002d54 + 80002d58: 00156513 ori a0,a0,1 + 80002d5c: 00000073 ecall + +0000000080002d60 : + 80002d60: 00100513 li a0,1 + 80002d64: 00000073 ecall + 80002d68: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-addw b/Tests/isa/rv64ui-v-addw new file mode 100644 index 0000000..01f0eb1 Binary files /dev/null and b/Tests/isa/rv64ui-v-addw differ diff --git a/Tests/isa/rv64ui-v-addw.dump b/Tests/isa/rv64ui-v-addw.dump new file mode 100644 index 0000000..838371b --- /dev/null +++ b/Tests/isa/rv64ui-v-addw.dump @@ -0,0 +1,1224 @@ + +rv64ui-v-addw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b7068693 addi a3,a3,-1168 # 80002fc8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: ba460613 addi a2,a2,-1116 # 80003058 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b6c60613 addi a2,a2,-1172 # 80003070 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: abc68693 addi a3,a3,-1348 # 80003010 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: ad868693 addi a3,a3,-1320 # 80003148 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a5860613 addi a2,a2,-1448 # 80003120 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 98c68693 addi a3,a3,-1652 # 80003178 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 8ac68693 addi a3,a3,-1876 # 800030e8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 83c68693 addi a3,a3,-1988 # 800030b0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00800793 li a5,8 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 04c367b7 lui a5,0x4c36 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 29178793 addi a5,a5,657 # 4c36291 <_start-0x7b3c9d6f> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 00208f3b addw t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 4ddf1663 bne t5,t4,80002fa8 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 00208f3b addw t5,ra,sp + 80002aec: 00200e93 li t4,2 + 80002af0: 00300193 li gp,3 + 80002af4: 4bdf1a63 bne t5,t4,80002fa8 + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 00208f3b addw t5,ra,sp + 80002b04: 00a00e93 li t4,10 + 80002b08: 00400193 li gp,4 + 80002b0c: 49df1e63 bne t5,t4,80002fa8 + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 00208f3b addw t5,ra,sp + 80002b1c: ffff8eb7 lui t4,0xffff8 + 80002b20: 00500193 li gp,5 + 80002b24: 49df1263 bne t5,t4,80002fa8 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 00208f3b addw t5,ra,sp + 80002b34: 80000eb7 lui t4,0x80000 + 80002b38: 00600193 li gp,6 + 80002b3c: 47df1663 bne t5,t4,80002fa8 + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 00208f3b addw t5,ra,sp + 80002b4c: 7fff8eb7 lui t4,0x7fff8 + 80002b50: 00700193 li gp,7 + 80002b54: 45df1a63 bne t5,t4,80002fa8 + +0000000080002b58 : + 80002b58: 00000093 li ra,0 + 80002b5c: 00008137 lui sp,0x8 + 80002b60: fff1011b addiw sp,sp,-1 + 80002b64: 00208f3b addw t5,ra,sp + 80002b68: 00008eb7 lui t4,0x8 + 80002b6c: fffe8e9b addiw t4,t4,-1 + 80002b70: 00800193 li gp,8 + 80002b74: 43df1a63 bne t5,t4,80002fa8 + +0000000080002b78 : + 80002b78: 800000b7 lui ra,0x80000 + 80002b7c: fff0809b addiw ra,ra,-1 + 80002b80: 00000113 li sp,0 + 80002b84: 00208f3b addw t5,ra,sp + 80002b88: 80000eb7 lui t4,0x80000 + 80002b8c: fffe8e9b addiw t4,t4,-1 + 80002b90: 00900193 li gp,9 + 80002b94: 41df1a63 bne t5,t4,80002fa8 + +0000000080002b98 : + 80002b98: 800000b7 lui ra,0x80000 + 80002b9c: fff0809b addiw ra,ra,-1 + 80002ba0: 00008137 lui sp,0x8 + 80002ba4: fff1011b addiw sp,sp,-1 + 80002ba8: 00208f3b addw t5,ra,sp + 80002bac: 80008eb7 lui t4,0x80008 + 80002bb0: ffee8e9b addiw t4,t4,-2 + 80002bb4: 00a00193 li gp,10 + 80002bb8: 3fdf1863 bne t5,t4,80002fa8 + +0000000080002bbc : + 80002bbc: 800000b7 lui ra,0x80000 + 80002bc0: 00008137 lui sp,0x8 + 80002bc4: fff1011b addiw sp,sp,-1 + 80002bc8: 00208f3b addw t5,ra,sp + 80002bcc: 80008eb7 lui t4,0x80008 + 80002bd0: fffe8e9b addiw t4,t4,-1 + 80002bd4: 00b00193 li gp,11 + 80002bd8: 3ddf1863 bne t5,t4,80002fa8 + +0000000080002bdc : + 80002bdc: 800000b7 lui ra,0x80000 + 80002be0: fff0809b addiw ra,ra,-1 + 80002be4: ffff8137 lui sp,0xffff8 + 80002be8: 00208f3b addw t5,ra,sp + 80002bec: 7fff8eb7 lui t4,0x7fff8 + 80002bf0: fffe8e9b addiw t4,t4,-1 + 80002bf4: 00c00193 li gp,12 + 80002bf8: 3bdf1863 bne t5,t4,80002fa8 + +0000000080002bfc : + 80002bfc: 00000093 li ra,0 + 80002c00: fff00113 li sp,-1 + 80002c04: 00208f3b addw t5,ra,sp + 80002c08: fff00e93 li t4,-1 + 80002c0c: 00d00193 li gp,13 + 80002c10: 39df1c63 bne t5,t4,80002fa8 + +0000000080002c14 : + 80002c14: fff00093 li ra,-1 + 80002c18: 00100113 li sp,1 + 80002c1c: 00208f3b addw t5,ra,sp + 80002c20: 00000e93 li t4,0 + 80002c24: 00e00193 li gp,14 + 80002c28: 39df1063 bne t5,t4,80002fa8 + +0000000080002c2c : + 80002c2c: fff00093 li ra,-1 + 80002c30: fff00113 li sp,-1 + 80002c34: 00208f3b addw t5,ra,sp + 80002c38: ffe00e93 li t4,-2 + 80002c3c: 00f00193 li gp,15 + 80002c40: 37df1463 bne t5,t4,80002fa8 + +0000000080002c44 : + 80002c44: 00100093 li ra,1 + 80002c48: 80000137 lui sp,0x80000 + 80002c4c: fff1011b addiw sp,sp,-1 + 80002c50: 00208f3b addw t5,ra,sp + 80002c54: 80000eb7 lui t4,0x80000 + 80002c58: 01000193 li gp,16 + 80002c5c: 35df1663 bne t5,t4,80002fa8 + +0000000080002c60 : + 80002c60: 00d00093 li ra,13 + 80002c64: 00b00113 li sp,11 + 80002c68: 002080bb addw ra,ra,sp + 80002c6c: 01800e93 li t4,24 + 80002c70: 01100193 li gp,17 + 80002c74: 33d09a63 bne ra,t4,80002fa8 + +0000000080002c78 : + 80002c78: 00e00093 li ra,14 + 80002c7c: 00b00113 li sp,11 + 80002c80: 0020813b addw sp,ra,sp + 80002c84: 01900e93 li t4,25 + 80002c88: 01200193 li gp,18 + 80002c8c: 31d11e63 bne sp,t4,80002fa8 + +0000000080002c90 : + 80002c90: 00d00093 li ra,13 + 80002c94: 001080bb addw ra,ra,ra + 80002c98: 01a00e93 li t4,26 + 80002c9c: 01300193 li gp,19 + 80002ca0: 31d09463 bne ra,t4,80002fa8 + +0000000080002ca4 : + 80002ca4: 00000213 li tp,0 + 80002ca8: 00d00093 li ra,13 + 80002cac: 00b00113 li sp,11 + 80002cb0: 00208f3b addw t5,ra,sp + 80002cb4: 000f0313 mv t1,t5 + 80002cb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cbc: 00200293 li t0,2 + 80002cc0: fe5214e3 bne tp,t0,80002ca8 + 80002cc4: 01800e93 li t4,24 + 80002cc8: 01400193 li gp,20 + 80002ccc: 2dd31e63 bne t1,t4,80002fa8 + +0000000080002cd0 : + 80002cd0: 00000213 li tp,0 + 80002cd4: 00e00093 li ra,14 + 80002cd8: 00b00113 li sp,11 + 80002cdc: 00208f3b addw t5,ra,sp + 80002ce0: 00000013 nop + 80002ce4: 000f0313 mv t1,t5 + 80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cec: 00200293 li t0,2 + 80002cf0: fe5212e3 bne tp,t0,80002cd4 + 80002cf4: 01900e93 li t4,25 + 80002cf8: 01500193 li gp,21 + 80002cfc: 2bd31663 bne t1,t4,80002fa8 + +0000000080002d00 : + 80002d00: 00000213 li tp,0 + 80002d04: 00f00093 li ra,15 + 80002d08: 00b00113 li sp,11 + 80002d0c: 00208f3b addw t5,ra,sp + 80002d10: 00000013 nop + 80002d14: 00000013 nop + 80002d18: 000f0313 mv t1,t5 + 80002d1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d20: 00200293 li t0,2 + 80002d24: fe5210e3 bne tp,t0,80002d04 + 80002d28: 01a00e93 li t4,26 + 80002d2c: 01600193 li gp,22 + 80002d30: 27d31c63 bne t1,t4,80002fa8 + +0000000080002d34 : + 80002d34: 00000213 li tp,0 + 80002d38: 00d00093 li ra,13 + 80002d3c: 00b00113 li sp,11 + 80002d40: 00208f3b addw t5,ra,sp + 80002d44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d48: 00200293 li t0,2 + 80002d4c: fe5216e3 bne tp,t0,80002d38 + 80002d50: 01800e93 li t4,24 + 80002d54: 01700193 li gp,23 + 80002d58: 25df1863 bne t5,t4,80002fa8 + +0000000080002d5c : + 80002d5c: 00000213 li tp,0 + 80002d60: 00e00093 li ra,14 + 80002d64: 00b00113 li sp,11 + 80002d68: 00000013 nop + 80002d6c: 00208f3b addw t5,ra,sp + 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d74: 00200293 li t0,2 + 80002d78: fe5214e3 bne tp,t0,80002d60 + 80002d7c: 01900e93 li t4,25 + 80002d80: 01800193 li gp,24 + 80002d84: 23df1263 bne t5,t4,80002fa8 + +0000000080002d88 : + 80002d88: 00000213 li tp,0 + 80002d8c: 00f00093 li ra,15 + 80002d90: 00b00113 li sp,11 + 80002d94: 00000013 nop + 80002d98: 00000013 nop + 80002d9c: 00208f3b addw t5,ra,sp + 80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da4: 00200293 li t0,2 + 80002da8: fe5212e3 bne tp,t0,80002d8c + 80002dac: 01a00e93 li t4,26 + 80002db0: 01900193 li gp,25 + 80002db4: 1fdf1a63 bne t5,t4,80002fa8 + +0000000080002db8 : + 80002db8: 00000213 li tp,0 + 80002dbc: 00d00093 li ra,13 + 80002dc0: 00000013 nop + 80002dc4: 00b00113 li sp,11 + 80002dc8: 00208f3b addw t5,ra,sp + 80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd0: 00200293 li t0,2 + 80002dd4: fe5214e3 bne tp,t0,80002dbc + 80002dd8: 01800e93 li t4,24 + 80002ddc: 01a00193 li gp,26 + 80002de0: 1ddf1463 bne t5,t4,80002fa8 + +0000000080002de4 : + 80002de4: 00000213 li tp,0 + 80002de8: 00e00093 li ra,14 + 80002dec: 00000013 nop + 80002df0: 00b00113 li sp,11 + 80002df4: 00000013 nop + 80002df8: 00208f3b addw t5,ra,sp + 80002dfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e00: 00200293 li t0,2 + 80002e04: fe5212e3 bne tp,t0,80002de8 + 80002e08: 01900e93 li t4,25 + 80002e0c: 01b00193 li gp,27 + 80002e10: 19df1c63 bne t5,t4,80002fa8 + +0000000080002e14 : + 80002e14: 00000213 li tp,0 + 80002e18: 00f00093 li ra,15 + 80002e1c: 00000013 nop + 80002e20: 00000013 nop + 80002e24: 00b00113 li sp,11 + 80002e28: 00208f3b addw t5,ra,sp + 80002e2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e30: 00200293 li t0,2 + 80002e34: fe5212e3 bne tp,t0,80002e18 + 80002e38: 01a00e93 li t4,26 + 80002e3c: 01c00193 li gp,28 + 80002e40: 17df1463 bne t5,t4,80002fa8 + +0000000080002e44 : + 80002e44: 00000213 li tp,0 + 80002e48: 00b00113 li sp,11 + 80002e4c: 00d00093 li ra,13 + 80002e50: 00208f3b addw t5,ra,sp + 80002e54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e58: 00200293 li t0,2 + 80002e5c: fe5216e3 bne tp,t0,80002e48 + 80002e60: 01800e93 li t4,24 + 80002e64: 01d00193 li gp,29 + 80002e68: 15df1063 bne t5,t4,80002fa8 + +0000000080002e6c : + 80002e6c: 00000213 li tp,0 + 80002e70: 00b00113 li sp,11 + 80002e74: 00e00093 li ra,14 + 80002e78: 00000013 nop + 80002e7c: 00208f3b addw t5,ra,sp + 80002e80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e84: 00200293 li t0,2 + 80002e88: fe5214e3 bne tp,t0,80002e70 + 80002e8c: 01900e93 li t4,25 + 80002e90: 01e00193 li gp,30 + 80002e94: 11df1a63 bne t5,t4,80002fa8 + +0000000080002e98 : + 80002e98: 00000213 li tp,0 + 80002e9c: 00b00113 li sp,11 + 80002ea0: 00f00093 li ra,15 + 80002ea4: 00000013 nop + 80002ea8: 00000013 nop + 80002eac: 00208f3b addw t5,ra,sp + 80002eb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002eb4: 00200293 li t0,2 + 80002eb8: fe5212e3 bne tp,t0,80002e9c + 80002ebc: 01a00e93 li t4,26 + 80002ec0: 01f00193 li gp,31 + 80002ec4: 0fdf1263 bne t5,t4,80002fa8 + +0000000080002ec8 : + 80002ec8: 00000213 li tp,0 + 80002ecc: 00b00113 li sp,11 + 80002ed0: 00000013 nop + 80002ed4: 00d00093 li ra,13 + 80002ed8: 00208f3b addw t5,ra,sp + 80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ee0: 00200293 li t0,2 + 80002ee4: fe5214e3 bne tp,t0,80002ecc + 80002ee8: 01800e93 li t4,24 + 80002eec: 02000193 li gp,32 + 80002ef0: 0bdf1c63 bne t5,t4,80002fa8 + +0000000080002ef4 : + 80002ef4: 00000213 li tp,0 + 80002ef8: 00b00113 li sp,11 + 80002efc: 00000013 nop + 80002f00: 00e00093 li ra,14 + 80002f04: 00000013 nop + 80002f08: 00208f3b addw t5,ra,sp + 80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f10: 00200293 li t0,2 + 80002f14: fe5212e3 bne tp,t0,80002ef8 + 80002f18: 01900e93 li t4,25 + 80002f1c: 02100193 li gp,33 + 80002f20: 09df1463 bne t5,t4,80002fa8 + +0000000080002f24 : + 80002f24: 00000213 li tp,0 + 80002f28: 00b00113 li sp,11 + 80002f2c: 00000013 nop + 80002f30: 00000013 nop + 80002f34: 00f00093 li ra,15 + 80002f38: 00208f3b addw t5,ra,sp + 80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f40: 00200293 li t0,2 + 80002f44: fe5212e3 bne tp,t0,80002f28 + 80002f48: 01a00e93 li t4,26 + 80002f4c: 02200193 li gp,34 + 80002f50: 05df1c63 bne t5,t4,80002fa8 + +0000000080002f54 : + 80002f54: 00f00093 li ra,15 + 80002f58: 0010013b addw sp,zero,ra + 80002f5c: 00f00e93 li t4,15 + 80002f60: 02300193 li gp,35 + 80002f64: 05d11263 bne sp,t4,80002fa8 + +0000000080002f68 : + 80002f68: 02000093 li ra,32 + 80002f6c: 0000813b addw sp,ra,zero + 80002f70: 02000e93 li t4,32 + 80002f74: 02400193 li gp,36 + 80002f78: 03d11863 bne sp,t4,80002fa8 + +0000000080002f7c : + 80002f7c: 000000bb addw ra,zero,zero + 80002f80: 00000e93 li t4,0 + 80002f84: 02500193 li gp,37 + 80002f88: 03d09063 bne ra,t4,80002fa8 + +0000000080002f8c : + 80002f8c: 01000093 li ra,16 + 80002f90: 01e00113 li sp,30 + 80002f94: 0020803b addw zero,ra,sp + 80002f98: 00000e93 li t4,0 + 80002f9c: 02600193 li gp,38 + 80002fa0: 01d01463 bne zero,t4,80002fa8 + 80002fa4: 00301a63 bne zero,gp,80002fb8 + +0000000080002fa8 : + 80002fa8: 00119513 slli a0,gp,0x1 + 80002fac: 00050063 beqz a0,80002fac + 80002fb0: 00156513 ori a0,a0,1 + 80002fb4: 00000073 ecall + +0000000080002fb8 : + 80002fb8: 00100513 li a0,1 + 80002fbc: 00000073 ecall + 80002fc0: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-and b/Tests/isa/rv64ui-v-and new file mode 100644 index 0000000..6a0323b Binary files /dev/null and b/Tests/isa/rv64ui-v-and differ diff --git a/Tests/isa/rv64ui-v-and.dump b/Tests/isa/rv64ui-v-and.dump new file mode 100644 index 0000000..063fbeb --- /dev/null +++ b/Tests/isa/rv64ui-v-and.dump @@ -0,0 +1,1232 @@ + +rv64ui-v-and: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: be868693 addi a3,a3,-1048 # 80003040 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: c1c60613 addi a2,a2,-996 # 800030d0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: be460613 addi a2,a2,-1052 # 800030e8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: b3468693 addi a3,a3,-1228 # 80003088 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: b5068693 addi a3,a3,-1200 # 800031c0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: ad060613 addi a2,a2,-1328 # 80003198 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: a0468693 addi a3,a3,-1532 # 800031f0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 92468693 addi a3,a3,-1756 # 80003160 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 8b468693 addi a3,a3,-1868 # 80003128 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01200793 li a5,18 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a1787b7 lui a5,0xa178 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 4b678793 addi a5,a5,1206 # a1784b6 <_start-0x75e87b4a> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 000100b7 lui ra,0x10 + 80002acc: f010809b addiw ra,ra,-255 + 80002ad0: 01009093 slli ra,ra,0x10 + 80002ad4: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002ad8: 0f0f1137 lui sp,0xf0f1 + 80002adc: f0f1011b addiw sp,sp,-241 + 80002ae0: 0020ff33 and t5,ra,sp + 80002ae4: 0f001eb7 lui t4,0xf001 + 80002ae8: f00e8e9b addiw t4,t4,-256 + 80002aec: 00200193 li gp,2 + 80002af0: 53df1863 bne t5,t4,80003020 + +0000000080002af4 : + 80002af4: 0ff010b7 lui ra,0xff01 + 80002af8: ff00809b addiw ra,ra,-16 + 80002afc: 000f1137 lui sp,0xf1 + 80002b00: f0f1011b addiw sp,sp,-241 + 80002b04: 00c11113 slli sp,sp,0xc + 80002b08: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002b0c: 0020ff33 and t5,ra,sp + 80002b10: 00f00eb7 lui t4,0xf00 + 80002b14: 0f0e8e9b addiw t4,t4,240 + 80002b18: 00300193 li gp,3 + 80002b1c: 51df1263 bne t5,t4,80003020 + +0000000080002b20 : + 80002b20: 00ff00b7 lui ra,0xff0 + 80002b24: 0ff0809b addiw ra,ra,255 + 80002b28: 0f0f1137 lui sp,0xf0f1 + 80002b2c: f0f1011b addiw sp,sp,-241 + 80002b30: 0020ff33 and t5,ra,sp + 80002b34: 000f0eb7 lui t4,0xf0 + 80002b38: 00fe8e9b addiw t4,t4,15 + 80002b3c: 00400193 li gp,4 + 80002b40: 4fdf1063 bne t5,t4,80003020 + +0000000080002b44 : + 80002b44: 000f00b7 lui ra,0xf0 + 80002b48: 0ff0809b addiw ra,ra,255 + 80002b4c: 00c09093 slli ra,ra,0xc + 80002b50: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80002b54: 000f1137 lui sp,0xf1 + 80002b58: f0f1011b addiw sp,sp,-241 + 80002b5c: 00c11113 slli sp,sp,0xc + 80002b60: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002b64: 0020ff33 and t5,ra,sp + 80002b68: 000f0eb7 lui t4,0xf0 + 80002b6c: 00fe8e9b addiw t4,t4,15 + 80002b70: 00ce9e93 slli t4,t4,0xc + 80002b74: 00500193 li gp,5 + 80002b78: 4bdf1463 bne t5,t4,80003020 + +0000000080002b7c : + 80002b7c: 000100b7 lui ra,0x10 + 80002b80: f010809b addiw ra,ra,-255 + 80002b84: 01009093 slli ra,ra,0x10 + 80002b88: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002b8c: 0f0f1137 lui sp,0xf0f1 + 80002b90: f0f1011b addiw sp,sp,-241 + 80002b94: 0020f0b3 and ra,ra,sp + 80002b98: 0f001eb7 lui t4,0xf001 + 80002b9c: f00e8e9b addiw t4,t4,-256 + 80002ba0: 00600193 li gp,6 + 80002ba4: 47d09e63 bne ra,t4,80003020 + +0000000080002ba8 : + 80002ba8: 0ff010b7 lui ra,0xff01 + 80002bac: ff00809b addiw ra,ra,-16 + 80002bb0: 000f1137 lui sp,0xf1 + 80002bb4: f0f1011b addiw sp,sp,-241 + 80002bb8: 00c11113 slli sp,sp,0xc + 80002bbc: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002bc0: 0020f133 and sp,ra,sp + 80002bc4: 00f00eb7 lui t4,0xf00 + 80002bc8: 0f0e8e9b addiw t4,t4,240 + 80002bcc: 00700193 li gp,7 + 80002bd0: 45d11863 bne sp,t4,80003020 + +0000000080002bd4 : + 80002bd4: 000100b7 lui ra,0x10 + 80002bd8: f010809b addiw ra,ra,-255 + 80002bdc: 01009093 slli ra,ra,0x10 + 80002be0: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002be4: 0010f0b3 and ra,ra,ra + 80002be8: 00010eb7 lui t4,0x10 + 80002bec: f01e8e9b addiw t4,t4,-255 + 80002bf0: 010e9e93 slli t4,t4,0x10 + 80002bf4: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002bf8: 00800193 li gp,8 + 80002bfc: 43d09263 bne ra,t4,80003020 + +0000000080002c00 : + 80002c00: 00000213 li tp,0 + 80002c04: 000100b7 lui ra,0x10 + 80002c08: f010809b addiw ra,ra,-255 + 80002c0c: 01009093 slli ra,ra,0x10 + 80002c10: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002c14: 0f0f1137 lui sp,0xf0f1 + 80002c18: f0f1011b addiw sp,sp,-241 + 80002c1c: 0020ff33 and t5,ra,sp + 80002c20: 000f0313 mv t1,t5 + 80002c24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c28: 00200293 li t0,2 + 80002c2c: fc521ce3 bne tp,t0,80002c04 + 80002c30: 0f001eb7 lui t4,0xf001 + 80002c34: f00e8e9b addiw t4,t4,-256 + 80002c38: 00900193 li gp,9 + 80002c3c: 3fd31263 bne t1,t4,80003020 + +0000000080002c40 : + 80002c40: 00000213 li tp,0 + 80002c44: 0ff010b7 lui ra,0xff01 + 80002c48: ff00809b addiw ra,ra,-16 + 80002c4c: 000f1137 lui sp,0xf1 + 80002c50: f0f1011b addiw sp,sp,-241 + 80002c54: 00c11113 slli sp,sp,0xc + 80002c58: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002c5c: 0020ff33 and t5,ra,sp + 80002c60: 00000013 nop + 80002c64: 000f0313 mv t1,t5 + 80002c68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c6c: 00200293 li t0,2 + 80002c70: fc521ae3 bne tp,t0,80002c44 + 80002c74: 00f00eb7 lui t4,0xf00 + 80002c78: 0f0e8e9b addiw t4,t4,240 + 80002c7c: 00a00193 li gp,10 + 80002c80: 3bd31063 bne t1,t4,80003020 + +0000000080002c84 : + 80002c84: 00000213 li tp,0 + 80002c88: 00ff00b7 lui ra,0xff0 + 80002c8c: 0ff0809b addiw ra,ra,255 + 80002c90: 0f0f1137 lui sp,0xf0f1 + 80002c94: f0f1011b addiw sp,sp,-241 + 80002c98: 0020ff33 and t5,ra,sp + 80002c9c: 00000013 nop + 80002ca0: 00000013 nop + 80002ca4: 000f0313 mv t1,t5 + 80002ca8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cac: 00200293 li t0,2 + 80002cb0: fc521ce3 bne tp,t0,80002c88 + 80002cb4: 000f0eb7 lui t4,0xf0 + 80002cb8: 00fe8e9b addiw t4,t4,15 + 80002cbc: 00b00193 li gp,11 + 80002cc0: 37d31063 bne t1,t4,80003020 + +0000000080002cc4 : + 80002cc4: 00000213 li tp,0 + 80002cc8: 000100b7 lui ra,0x10 + 80002ccc: f010809b addiw ra,ra,-255 + 80002cd0: 01009093 slli ra,ra,0x10 + 80002cd4: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002cd8: 0f0f1137 lui sp,0xf0f1 + 80002cdc: f0f1011b addiw sp,sp,-241 + 80002ce0: 0020ff33 and t5,ra,sp + 80002ce4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce8: 00200293 li t0,2 + 80002cec: fc521ee3 bne tp,t0,80002cc8 + 80002cf0: 0f001eb7 lui t4,0xf001 + 80002cf4: f00e8e9b addiw t4,t4,-256 + 80002cf8: 00c00193 li gp,12 + 80002cfc: 33df1263 bne t5,t4,80003020 + +0000000080002d00 : + 80002d00: 00000213 li tp,0 + 80002d04: 0ff010b7 lui ra,0xff01 + 80002d08: ff00809b addiw ra,ra,-16 + 80002d0c: 000f1137 lui sp,0xf1 + 80002d10: f0f1011b addiw sp,sp,-241 + 80002d14: 00c11113 slli sp,sp,0xc + 80002d18: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002d1c: 00000013 nop + 80002d20: 0020ff33 and t5,ra,sp + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fc521ce3 bne tp,t0,80002d04 + 80002d30: 00f00eb7 lui t4,0xf00 + 80002d34: 0f0e8e9b addiw t4,t4,240 + 80002d38: 00d00193 li gp,13 + 80002d3c: 2fdf1263 bne t5,t4,80003020 + +0000000080002d40 : + 80002d40: 00000213 li tp,0 + 80002d44: 00ff00b7 lui ra,0xff0 + 80002d48: 0ff0809b addiw ra,ra,255 + 80002d4c: 0f0f1137 lui sp,0xf0f1 + 80002d50: f0f1011b addiw sp,sp,-241 + 80002d54: 00000013 nop + 80002d58: 00000013 nop + 80002d5c: 0020ff33 and t5,ra,sp + 80002d60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d64: 00200293 li t0,2 + 80002d68: fc521ee3 bne tp,t0,80002d44 + 80002d6c: 000f0eb7 lui t4,0xf0 + 80002d70: 00fe8e9b addiw t4,t4,15 + 80002d74: 00e00193 li gp,14 + 80002d78: 2bdf1463 bne t5,t4,80003020 + +0000000080002d7c : + 80002d7c: 00000213 li tp,0 + 80002d80: 000100b7 lui ra,0x10 + 80002d84: f010809b addiw ra,ra,-255 + 80002d88: 01009093 slli ra,ra,0x10 + 80002d8c: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002d90: 00000013 nop + 80002d94: 0f0f1137 lui sp,0xf0f1 + 80002d98: f0f1011b addiw sp,sp,-241 + 80002d9c: 0020ff33 and t5,ra,sp + 80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da4: 00200293 li t0,2 + 80002da8: fc521ce3 bne tp,t0,80002d80 + 80002dac: 0f001eb7 lui t4,0xf001 + 80002db0: f00e8e9b addiw t4,t4,-256 + 80002db4: 00f00193 li gp,15 + 80002db8: 27df1463 bne t5,t4,80003020 + +0000000080002dbc : + 80002dbc: 00000213 li tp,0 + 80002dc0: 0ff010b7 lui ra,0xff01 + 80002dc4: ff00809b addiw ra,ra,-16 + 80002dc8: 00000013 nop + 80002dcc: 000f1137 lui sp,0xf1 + 80002dd0: f0f1011b addiw sp,sp,-241 + 80002dd4: 00c11113 slli sp,sp,0xc + 80002dd8: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002ddc: 00000013 nop + 80002de0: 0020ff33 and t5,ra,sp + 80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de8: 00200293 li t0,2 + 80002dec: fc521ae3 bne tp,t0,80002dc0 + 80002df0: 00f00eb7 lui t4,0xf00 + 80002df4: 0f0e8e9b addiw t4,t4,240 + 80002df8: 01000193 li gp,16 + 80002dfc: 23df1263 bne t5,t4,80003020 + +0000000080002e00 : + 80002e00: 00000213 li tp,0 + 80002e04: 00ff00b7 lui ra,0xff0 + 80002e08: 0ff0809b addiw ra,ra,255 + 80002e0c: 00000013 nop + 80002e10: 00000013 nop + 80002e14: 0f0f1137 lui sp,0xf0f1 + 80002e18: f0f1011b addiw sp,sp,-241 + 80002e1c: 0020ff33 and t5,ra,sp + 80002e20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e24: 00200293 li t0,2 + 80002e28: fc521ee3 bne tp,t0,80002e04 + 80002e2c: 000f0eb7 lui t4,0xf0 + 80002e30: 00fe8e9b addiw t4,t4,15 + 80002e34: 01100193 li gp,17 + 80002e38: 1fdf1463 bne t5,t4,80003020 + +0000000080002e3c : + 80002e3c: 00000213 li tp,0 + 80002e40: 0f0f1137 lui sp,0xf0f1 + 80002e44: f0f1011b addiw sp,sp,-241 + 80002e48: 000100b7 lui ra,0x10 + 80002e4c: f010809b addiw ra,ra,-255 + 80002e50: 01009093 slli ra,ra,0x10 + 80002e54: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002e58: 0020ff33 and t5,ra,sp + 80002e5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e60: 00200293 li t0,2 + 80002e64: fc521ee3 bne tp,t0,80002e40 + 80002e68: 0f001eb7 lui t4,0xf001 + 80002e6c: f00e8e9b addiw t4,t4,-256 + 80002e70: 01200193 li gp,18 + 80002e74: 1bdf1663 bne t5,t4,80003020 + +0000000080002e78 : + 80002e78: 00000213 li tp,0 + 80002e7c: 000f1137 lui sp,0xf1 + 80002e80: f0f1011b addiw sp,sp,-241 + 80002e84: 00c11113 slli sp,sp,0xc + 80002e88: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002e8c: 0ff010b7 lui ra,0xff01 + 80002e90: ff00809b addiw ra,ra,-16 + 80002e94: 00000013 nop + 80002e98: 0020ff33 and t5,ra,sp + 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea0: 00200293 li t0,2 + 80002ea4: fc521ce3 bne tp,t0,80002e7c + 80002ea8: 00f00eb7 lui t4,0xf00 + 80002eac: 0f0e8e9b addiw t4,t4,240 + 80002eb0: 01300193 li gp,19 + 80002eb4: 17df1663 bne t5,t4,80003020 + +0000000080002eb8 : + 80002eb8: 00000213 li tp,0 + 80002ebc: 0f0f1137 lui sp,0xf0f1 + 80002ec0: f0f1011b addiw sp,sp,-241 + 80002ec4: 00ff00b7 lui ra,0xff0 + 80002ec8: 0ff0809b addiw ra,ra,255 + 80002ecc: 00000013 nop + 80002ed0: 00000013 nop + 80002ed4: 0020ff33 and t5,ra,sp + 80002ed8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002edc: 00200293 li t0,2 + 80002ee0: fc521ee3 bne tp,t0,80002ebc + 80002ee4: 000f0eb7 lui t4,0xf0 + 80002ee8: 00fe8e9b addiw t4,t4,15 + 80002eec: 01400193 li gp,20 + 80002ef0: 13df1863 bne t5,t4,80003020 + +0000000080002ef4 : + 80002ef4: 00000213 li tp,0 + 80002ef8: 0f0f1137 lui sp,0xf0f1 + 80002efc: f0f1011b addiw sp,sp,-241 + 80002f00: 00000013 nop + 80002f04: 000100b7 lui ra,0x10 + 80002f08: f010809b addiw ra,ra,-255 + 80002f0c: 01009093 slli ra,ra,0x10 + 80002f10: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002f14: 0020ff33 and t5,ra,sp + 80002f18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f1c: 00200293 li t0,2 + 80002f20: fc521ce3 bne tp,t0,80002ef8 + 80002f24: 0f001eb7 lui t4,0xf001 + 80002f28: f00e8e9b addiw t4,t4,-256 + 80002f2c: 01500193 li gp,21 + 80002f30: 0fdf1863 bne t5,t4,80003020 + +0000000080002f34 : + 80002f34: 00000213 li tp,0 + 80002f38: 000f1137 lui sp,0xf1 + 80002f3c: f0f1011b addiw sp,sp,-241 + 80002f40: 00c11113 slli sp,sp,0xc + 80002f44: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002f48: 00000013 nop + 80002f4c: 0ff010b7 lui ra,0xff01 + 80002f50: ff00809b addiw ra,ra,-16 + 80002f54: 00000013 nop + 80002f58: 0020ff33 and t5,ra,sp + 80002f5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f60: 00200293 li t0,2 + 80002f64: fc521ae3 bne tp,t0,80002f38 + 80002f68: 00f00eb7 lui t4,0xf00 + 80002f6c: 0f0e8e9b addiw t4,t4,240 + 80002f70: 01600193 li gp,22 + 80002f74: 0bdf1663 bne t5,t4,80003020 + +0000000080002f78 : + 80002f78: 00000213 li tp,0 + 80002f7c: 0f0f1137 lui sp,0xf0f1 + 80002f80: f0f1011b addiw sp,sp,-241 + 80002f84: 00000013 nop + 80002f88: 00000013 nop + 80002f8c: 00ff00b7 lui ra,0xff0 + 80002f90: 0ff0809b addiw ra,ra,255 + 80002f94: 0020ff33 and t5,ra,sp + 80002f98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f9c: 00200293 li t0,2 + 80002fa0: fc521ee3 bne tp,t0,80002f7c + 80002fa4: 000f0eb7 lui t4,0xf0 + 80002fa8: 00fe8e9b addiw t4,t4,15 + 80002fac: 01700193 li gp,23 + 80002fb0: 07df1863 bne t5,t4,80003020 + +0000000080002fb4 : + 80002fb4: 000100b7 lui ra,0x10 + 80002fb8: f010809b addiw ra,ra,-255 + 80002fbc: 01009093 slli ra,ra,0x10 + 80002fc0: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002fc4: 00107133 and sp,zero,ra + 80002fc8: 00000e93 li t4,0 + 80002fcc: 01800193 li gp,24 + 80002fd0: 05d11863 bne sp,t4,80003020 + +0000000080002fd4 : + 80002fd4: 00ff00b7 lui ra,0xff0 + 80002fd8: 0ff0809b addiw ra,ra,255 + 80002fdc: 0000f133 and sp,ra,zero + 80002fe0: 00000e93 li t4,0 + 80002fe4: 01900193 li gp,25 + 80002fe8: 03d11c63 bne sp,t4,80003020 + +0000000080002fec : + 80002fec: 000070b3 and ra,zero,zero + 80002ff0: 00000e93 li t4,0 + 80002ff4: 01a00193 li gp,26 + 80002ff8: 03d09463 bne ra,t4,80003020 + +0000000080002ffc : + 80002ffc: 111110b7 lui ra,0x11111 + 80003000: 1110809b addiw ra,ra,273 + 80003004: 22222137 lui sp,0x22222 + 80003008: 2221011b addiw sp,sp,546 + 8000300c: 0020f033 and zero,ra,sp + 80003010: 00000e93 li t4,0 + 80003014: 01b00193 li gp,27 + 80003018: 01d01463 bne zero,t4,80003020 + 8000301c: 00301a63 bne zero,gp,80003030 + +0000000080003020 : + 80003020: 00119513 slli a0,gp,0x1 + 80003024: 00050063 beqz a0,80003024 + 80003028: 00156513 ori a0,a0,1 + 8000302c: 00000073 ecall + +0000000080003030 : + 80003030: 00100513 li a0,1 + 80003034: 00000073 ecall + 80003038: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-andi b/Tests/isa/rv64ui-v-andi new file mode 100644 index 0000000..91e3f05 Binary files /dev/null and b/Tests/isa/rv64ui-v-andi differ diff --git a/Tests/isa/rv64ui-v-andi.dump b/Tests/isa/rv64ui-v-andi.dump new file mode 100644 index 0000000..6503a37 --- /dev/null +++ b/Tests/isa/rv64ui-v-andi.dump @@ -0,0 +1,990 @@ + +rv64ui-v-andi: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 88868693 addi a3,a3,-1912 # 80002ce0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 8bc60613 addi a2,a2,-1860 # 80002d70 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 88460613 addi a2,a2,-1916 # 80002d88 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 7d468693 addi a3,a3,2004 # 80002d28 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 7f068693 addi a3,a3,2032 # 80002e60 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 77060613 addi a2,a2,1904 # 80002e38 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 6a468693 addi a3,a3,1700 # 80002e90 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 5c468693 addi a3,a3,1476 # 80002e00 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 55468693 addi a3,a3,1364 # 80002dc8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01a00793 li a5,26 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 069897b7 lui a5,0x6989 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 68978793 addi a5,a5,1673 # 6989689 <_start-0x79676977> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 000100b7 lui ra,0x10 + 80002acc: f010809b addiw ra,ra,-255 + 80002ad0: 01009093 slli ra,ra,0x10 + 80002ad4: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002ad8: f0f0ff13 andi t5,ra,-241 + 80002adc: 00010eb7 lui t4,0x10 + 80002ae0: f01e8e9b addiw t4,t4,-255 + 80002ae4: 010e9e93 slli t4,t4,0x10 + 80002ae8: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002aec: 00200193 li gp,2 + 80002af0: 1ddf1863 bne t5,t4,80002cc0 + +0000000080002af4 : + 80002af4: 0ff010b7 lui ra,0xff01 + 80002af8: ff00809b addiw ra,ra,-16 + 80002afc: 0f00ff13 andi t5,ra,240 + 80002b00: 0f000e93 li t4,240 + 80002b04: 00300193 li gp,3 + 80002b08: 1bdf1c63 bne t5,t4,80002cc0 + +0000000080002b0c : + 80002b0c: 00ff00b7 lui ra,0xff0 + 80002b10: 0ff0809b addiw ra,ra,255 + 80002b14: 70f0ff13 andi t5,ra,1807 + 80002b18: 00f00e93 li t4,15 + 80002b1c: 00400193 li gp,4 + 80002b20: 1bdf1063 bne t5,t4,80002cc0 + +0000000080002b24 : + 80002b24: 000f00b7 lui ra,0xf0 + 80002b28: 0ff0809b addiw ra,ra,255 + 80002b2c: 00c09093 slli ra,ra,0xc + 80002b30: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80002b34: 0f00ff13 andi t5,ra,240 + 80002b38: 00000e93 li t4,0 + 80002b3c: 00500193 li gp,5 + 80002b40: 19df1063 bne t5,t4,80002cc0 + +0000000080002b44 : + 80002b44: 000100b7 lui ra,0x10 + 80002b48: f010809b addiw ra,ra,-255 + 80002b4c: 01009093 slli ra,ra,0x10 + 80002b50: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002b54: 0f00f093 andi ra,ra,240 + 80002b58: 00000e93 li t4,0 + 80002b5c: 00600193 li gp,6 + 80002b60: 17d09063 bne ra,t4,80002cc0 + +0000000080002b64 : + 80002b64: 00000213 li tp,0 + 80002b68: 0ff010b7 lui ra,0xff01 + 80002b6c: ff00809b addiw ra,ra,-16 + 80002b70: 70f0ff13 andi t5,ra,1807 + 80002b74: 000f0313 mv t1,t5 + 80002b78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002b7c: 00200293 li t0,2 + 80002b80: fe5214e3 bne tp,t0,80002b68 + 80002b84: 70000e93 li t4,1792 + 80002b88: 00700193 li gp,7 + 80002b8c: 13d31a63 bne t1,t4,80002cc0 + +0000000080002b90 : + 80002b90: 00000213 li tp,0 + 80002b94: 00ff00b7 lui ra,0xff0 + 80002b98: 0ff0809b addiw ra,ra,255 + 80002b9c: 0f00ff13 andi t5,ra,240 + 80002ba0: 00000013 nop + 80002ba4: 000f0313 mv t1,t5 + 80002ba8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bac: 00200293 li t0,2 + 80002bb0: fe5212e3 bne tp,t0,80002b94 + 80002bb4: 0f000e93 li t4,240 + 80002bb8: 00800193 li gp,8 + 80002bbc: 11d31263 bne t1,t4,80002cc0 + +0000000080002bc0 : + 80002bc0: 00000213 li tp,0 + 80002bc4: 000f00b7 lui ra,0xf0 + 80002bc8: 0ff0809b addiw ra,ra,255 + 80002bcc: 00c09093 slli ra,ra,0xc + 80002bd0: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80002bd4: f0f0ff13 andi t5,ra,-241 + 80002bd8: 00000013 nop + 80002bdc: 00000013 nop + 80002be0: 000f0313 mv t1,t5 + 80002be4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002be8: 00200293 li t0,2 + 80002bec: fc521ce3 bne tp,t0,80002bc4 + 80002bf0: 000f0eb7 lui t4,0xf0 + 80002bf4: 0ffe8e9b addiw t4,t4,255 + 80002bf8: 00ce9e93 slli t4,t4,0xc + 80002bfc: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002c00: 00900193 li gp,9 + 80002c04: 0bd31e63 bne t1,t4,80002cc0 + +0000000080002c08 : + 80002c08: 00000213 li tp,0 + 80002c0c: 0ff010b7 lui ra,0xff01 + 80002c10: ff00809b addiw ra,ra,-16 + 80002c14: 70f0ff13 andi t5,ra,1807 + 80002c18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c1c: 00200293 li t0,2 + 80002c20: fe5216e3 bne tp,t0,80002c0c + 80002c24: 70000e93 li t4,1792 + 80002c28: 00a00193 li gp,10 + 80002c2c: 09df1a63 bne t5,t4,80002cc0 + +0000000080002c30 : + 80002c30: 00000213 li tp,0 + 80002c34: 00ff00b7 lui ra,0xff0 + 80002c38: 0ff0809b addiw ra,ra,255 + 80002c3c: 00000013 nop + 80002c40: 0f00ff13 andi t5,ra,240 + 80002c44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c48: 00200293 li t0,2 + 80002c4c: fe5214e3 bne tp,t0,80002c34 + 80002c50: 0f000e93 li t4,240 + 80002c54: 00b00193 li gp,11 + 80002c58: 07df1463 bne t5,t4,80002cc0 + +0000000080002c5c : + 80002c5c: 00000213 li tp,0 + 80002c60: 000f00b7 lui ra,0xf0 + 80002c64: 0ff0809b addiw ra,ra,255 + 80002c68: 00c09093 slli ra,ra,0xc + 80002c6c: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80002c70: 00000013 nop + 80002c74: 00000013 nop + 80002c78: 70f0ff13 andi t5,ra,1807 + 80002c7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c80: 00200293 li t0,2 + 80002c84: fc521ee3 bne tp,t0,80002c60 + 80002c88: 00f00e93 li t4,15 + 80002c8c: 00c00193 li gp,12 + 80002c90: 03df1863 bne t5,t4,80002cc0 + +0000000080002c94 : + 80002c94: 0f007093 andi ra,zero,240 + 80002c98: 00000e93 li t4,0 + 80002c9c: 00d00193 li gp,13 + 80002ca0: 03d09063 bne ra,t4,80002cc0 + +0000000080002ca4 : + 80002ca4: 00ff00b7 lui ra,0xff0 + 80002ca8: 0ff0809b addiw ra,ra,255 + 80002cac: 70f0f013 andi zero,ra,1807 + 80002cb0: 00000e93 li t4,0 + 80002cb4: 00e00193 li gp,14 + 80002cb8: 01d01463 bne zero,t4,80002cc0 + 80002cbc: 00301a63 bne zero,gp,80002cd0 + +0000000080002cc0 : + 80002cc0: 00119513 slli a0,gp,0x1 + 80002cc4: 00050063 beqz a0,80002cc4 + 80002cc8: 00156513 ori a0,a0,1 + 80002ccc: 00000073 ecall + +0000000080002cd0 : + 80002cd0: 00100513 li a0,1 + 80002cd4: 00000073 ecall + 80002cd8: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-auipc b/Tests/isa/rv64ui-v-auipc new file mode 100644 index 0000000..bb1dc92 Binary files /dev/null and b/Tests/isa/rv64ui-v-auipc differ diff --git a/Tests/isa/rv64ui-v-auipc.dump b/Tests/isa/rv64ui-v-auipc.dump new file mode 100644 index 0000000..bfa19dd --- /dev/null +++ b/Tests/isa/rv64ui-v-auipc.dump @@ -0,0 +1,859 @@ + +rv64ui-v-auipc: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6d068693 addi a3,a3,1744 # 80002b28 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 70460613 addi a2,a2,1796 # 80002bb8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6cc60613 addi a2,a2,1740 # 80002bd0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 61c68693 addi a3,a3,1564 # 80002b70 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 63868693 addi a3,a3,1592 # 80002ca8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5b860613 addi a2,a2,1464 # 80002c80 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 4ec68693 addi a3,a3,1260 # 80002cd8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 40c68693 addi a3,a3,1036 # 80002c48 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 39c68693 addi a3,a3,924 # 80002c10 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02a00793 li a5,42 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0962a7b7 lui a5,0x962a + 80002a70: 000805b7 lui a1,0x80 + 80002a74: af278793 addi a5,a5,-1294 # 9629af2 <_start-0x769d650e> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00002517 auipc a0,0x2 + 80002acc: 71c50513 addi a0,a0,1820 # 800051e4 + 80002ad0: 004005ef jal a1,80002ad4 + 80002ad4: 40b50533 sub a0,a0,a1 + 80002ad8: 00002eb7 lui t4,0x2 + 80002adc: 710e8e9b addiw t4,t4,1808 + 80002ae0: 00200193 li gp,2 + 80002ae4: 03d51463 bne a0,t4,80002b0c + +0000000080002ae8 : + 80002ae8: ffffe517 auipc a0,0xffffe + 80002aec: 8fc50513 addi a0,a0,-1796 # 800003e4 + 80002af0: 004005ef jal a1,80002af4 + 80002af4: 40b50533 sub a0,a0,a1 + 80002af8: ffffeeb7 lui t4,0xffffe + 80002afc: 8f0e8e9b addiw t4,t4,-1808 + 80002b00: 00300193 li gp,3 + 80002b04: 01d51463 bne a0,t4,80002b0c + 80002b08: 00301a63 bne zero,gp,80002b1c + +0000000080002b0c : + 80002b0c: 00119513 slli a0,gp,0x1 + 80002b10: 00050063 beqz a0,80002b10 + 80002b14: 00156513 ori a0,a0,1 + 80002b18: 00000073 ecall + +0000000080002b1c : + 80002b1c: 00100513 li a0,1 + 80002b20: 00000073 ecall + 80002b24: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-beq b/Tests/isa/rv64ui-v-beq new file mode 100644 index 0000000..b607b53 Binary files /dev/null and b/Tests/isa/rv64ui-v-beq differ diff --git a/Tests/isa/rv64ui-v-beq.dump b/Tests/isa/rv64ui-v-beq.dump new file mode 100644 index 0000000..18ece1e --- /dev/null +++ b/Tests/isa/rv64ui-v-beq.dump @@ -0,0 +1,1054 @@ + +rv64ui-v-beq: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 95068693 addi a3,a3,-1712 # 80002da8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 98460613 addi a2,a2,-1660 # 80002e38 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 94c60613 addi a2,a2,-1716 # 80002e50 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 89c68693 addi a3,a3,-1892 # 80002df0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8b868693 addi a3,a3,-1864 # 80002f28 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 83860613 addi a2,a2,-1992 # 80002f00 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 76c68693 addi a3,a3,1900 # 80002f58 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 68c68693 addi a3,a3,1676 # 80002ec8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 61c68693 addi a3,a3,1564 # 80002e90 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 03400793 li a5,52 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 029747b7 lui a5,0x2974 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 93378793 addi a5,a5,-1741 # 2973933 <_start-0x7d68c6cd> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000093 li ra,0 + 80002ad0: 00000113 li sp,0 + 80002ad4: 00208663 beq ra,sp,80002ae0 + 80002ad8: 2a301863 bne zero,gp,80002d88 + 80002adc: 00301663 bne zero,gp,80002ae8 + 80002ae0: fe208ee3 beq ra,sp,80002adc + 80002ae4: 2a301263 bne zero,gp,80002d88 + +0000000080002ae8 : + 80002ae8: 00300193 li gp,3 + 80002aec: 00100093 li ra,1 + 80002af0: 00100113 li sp,1 + 80002af4: 00208663 beq ra,sp,80002b00 + 80002af8: 28301863 bne zero,gp,80002d88 + 80002afc: 00301663 bne zero,gp,80002b08 + 80002b00: fe208ee3 beq ra,sp,80002afc + 80002b04: 28301263 bne zero,gp,80002d88 + +0000000080002b08 : + 80002b08: 00400193 li gp,4 + 80002b0c: fff00093 li ra,-1 + 80002b10: fff00113 li sp,-1 + 80002b14: 00208663 beq ra,sp,80002b20 + 80002b18: 26301863 bne zero,gp,80002d88 + 80002b1c: 00301663 bne zero,gp,80002b28 + 80002b20: fe208ee3 beq ra,sp,80002b1c + 80002b24: 26301263 bne zero,gp,80002d88 + +0000000080002b28 : + 80002b28: 00500193 li gp,5 + 80002b2c: 00000093 li ra,0 + 80002b30: 00100113 li sp,1 + 80002b34: 00208463 beq ra,sp,80002b3c + 80002b38: 00301463 bne zero,gp,80002b40 + 80002b3c: 24301663 bne zero,gp,80002d88 + 80002b40: fe208ee3 beq ra,sp,80002b3c + +0000000080002b44 : + 80002b44: 00600193 li gp,6 + 80002b48: 00100093 li ra,1 + 80002b4c: 00000113 li sp,0 + 80002b50: 00208463 beq ra,sp,80002b58 + 80002b54: 00301463 bne zero,gp,80002b5c + 80002b58: 22301863 bne zero,gp,80002d88 + 80002b5c: fe208ee3 beq ra,sp,80002b58 + +0000000080002b60 : + 80002b60: 00700193 li gp,7 + 80002b64: fff00093 li ra,-1 + 80002b68: 00100113 li sp,1 + 80002b6c: 00208463 beq ra,sp,80002b74 + 80002b70: 00301463 bne zero,gp,80002b78 + 80002b74: 20301a63 bne zero,gp,80002d88 + 80002b78: fe208ee3 beq ra,sp,80002b74 + +0000000080002b7c : + 80002b7c: 00800193 li gp,8 + 80002b80: 00100093 li ra,1 + 80002b84: fff00113 li sp,-1 + 80002b88: 00208463 beq ra,sp,80002b90 + 80002b8c: 00301463 bne zero,gp,80002b94 + 80002b90: 1e301c63 bne zero,gp,80002d88 + 80002b94: fe208ee3 beq ra,sp,80002b90 + +0000000080002b98 : + 80002b98: 00900193 li gp,9 + 80002b9c: 00000213 li tp,0 + 80002ba0: 00000093 li ra,0 + 80002ba4: fff00113 li sp,-1 + 80002ba8: 1e208063 beq ra,sp,80002d88 + 80002bac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bb0: 00200293 li t0,2 + 80002bb4: fe5216e3 bne tp,t0,80002ba0 + +0000000080002bb8 : + 80002bb8: 00a00193 li gp,10 + 80002bbc: 00000213 li tp,0 + 80002bc0: 00000093 li ra,0 + 80002bc4: fff00113 li sp,-1 + 80002bc8: 00000013 nop + 80002bcc: 1a208e63 beq ra,sp,80002d88 + 80002bd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bd4: 00200293 li t0,2 + 80002bd8: fe5214e3 bne tp,t0,80002bc0 + +0000000080002bdc : + 80002bdc: 00b00193 li gp,11 + 80002be0: 00000213 li tp,0 + 80002be4: 00000093 li ra,0 + 80002be8: fff00113 li sp,-1 + 80002bec: 00000013 nop + 80002bf0: 00000013 nop + 80002bf4: 18208a63 beq ra,sp,80002d88 + 80002bf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bfc: 00200293 li t0,2 + 80002c00: fe5212e3 bne tp,t0,80002be4 + +0000000080002c04 : + 80002c04: 00c00193 li gp,12 + 80002c08: 00000213 li tp,0 + 80002c0c: 00000093 li ra,0 + 80002c10: 00000013 nop + 80002c14: fff00113 li sp,-1 + 80002c18: 16208863 beq ra,sp,80002d88 + 80002c1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c20: 00200293 li t0,2 + 80002c24: fe5214e3 bne tp,t0,80002c0c + +0000000080002c28 : + 80002c28: 00d00193 li gp,13 + 80002c2c: 00000213 li tp,0 + 80002c30: 00000093 li ra,0 + 80002c34: 00000013 nop + 80002c38: fff00113 li sp,-1 + 80002c3c: 00000013 nop + 80002c40: 14208463 beq ra,sp,80002d88 + 80002c44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c48: 00200293 li t0,2 + 80002c4c: fe5212e3 bne tp,t0,80002c30 + +0000000080002c50 : + 80002c50: 00e00193 li gp,14 + 80002c54: 00000213 li tp,0 + 80002c58: 00000093 li ra,0 + 80002c5c: 00000013 nop + 80002c60: 00000013 nop + 80002c64: fff00113 li sp,-1 + 80002c68: 12208063 beq ra,sp,80002d88 + 80002c6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c70: 00200293 li t0,2 + 80002c74: fe5212e3 bne tp,t0,80002c58 + +0000000080002c78 : + 80002c78: 00f00193 li gp,15 + 80002c7c: 00000213 li tp,0 + 80002c80: 00000093 li ra,0 + 80002c84: fff00113 li sp,-1 + 80002c88: 10208063 beq ra,sp,80002d88 + 80002c8c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c90: 00200293 li t0,2 + 80002c94: fe5216e3 bne tp,t0,80002c80 + +0000000080002c98 : + 80002c98: 01000193 li gp,16 + 80002c9c: 00000213 li tp,0 + 80002ca0: 00000093 li ra,0 + 80002ca4: fff00113 li sp,-1 + 80002ca8: 00000013 nop + 80002cac: 0c208e63 beq ra,sp,80002d88 + 80002cb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cb4: 00200293 li t0,2 + 80002cb8: fe5214e3 bne tp,t0,80002ca0 + +0000000080002cbc : + 80002cbc: 01100193 li gp,17 + 80002cc0: 00000213 li tp,0 + 80002cc4: 00000093 li ra,0 + 80002cc8: fff00113 li sp,-1 + 80002ccc: 00000013 nop + 80002cd0: 00000013 nop + 80002cd4: 0a208a63 beq ra,sp,80002d88 + 80002cd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cdc: 00200293 li t0,2 + 80002ce0: fe5212e3 bne tp,t0,80002cc4 + +0000000080002ce4 : + 80002ce4: 01200193 li gp,18 + 80002ce8: 00000213 li tp,0 + 80002cec: 00000093 li ra,0 + 80002cf0: 00000013 nop + 80002cf4: fff00113 li sp,-1 + 80002cf8: 08208863 beq ra,sp,80002d88 + 80002cfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d00: 00200293 li t0,2 + 80002d04: fe5214e3 bne tp,t0,80002cec + +0000000080002d08 : + 80002d08: 01300193 li gp,19 + 80002d0c: 00000213 li tp,0 + 80002d10: 00000093 li ra,0 + 80002d14: 00000013 nop + 80002d18: fff00113 li sp,-1 + 80002d1c: 00000013 nop + 80002d20: 06208463 beq ra,sp,80002d88 + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fe5212e3 bne tp,t0,80002d10 + +0000000080002d30 : + 80002d30: 01400193 li gp,20 + 80002d34: 00000213 li tp,0 + 80002d38: 00000093 li ra,0 + 80002d3c: 00000013 nop + 80002d40: 00000013 nop + 80002d44: fff00113 li sp,-1 + 80002d48: 04208063 beq ra,sp,80002d88 + 80002d4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d50: 00200293 li t0,2 + 80002d54: fe5212e3 bne tp,t0,80002d38 + +0000000080002d58 : + 80002d58: 00100093 li ra,1 + 80002d5c: 00000a63 beqz zero,80002d70 + 80002d60: 00108093 addi ra,ra,1 + 80002d64: 00108093 addi ra,ra,1 + 80002d68: 00108093 addi ra,ra,1 + 80002d6c: 00108093 addi ra,ra,1 + 80002d70: 00108093 addi ra,ra,1 + 80002d74: 00108093 addi ra,ra,1 + 80002d78: 00300e93 li t4,3 + 80002d7c: 01500193 li gp,21 + 80002d80: 01d09463 bne ra,t4,80002d88 + 80002d84: 00301a63 bne zero,gp,80002d98 + +0000000080002d88 : + 80002d88: 00119513 slli a0,gp,0x1 + 80002d8c: 00050063 beqz a0,80002d8c + 80002d90: 00156513 ori a0,a0,1 + 80002d94: 00000073 ecall + +0000000080002d98 : + 80002d98: 00100513 li a0,1 + 80002d9c: 00000073 ecall + 80002da0: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-bge b/Tests/isa/rv64ui-v-bge new file mode 100644 index 0000000..fa1ac48 Binary files /dev/null and b/Tests/isa/rv64ui-v-bge differ diff --git a/Tests/isa/rv64ui-v-bge.dump b/Tests/isa/rv64ui-v-bge.dump new file mode 100644 index 0000000..5821526 --- /dev/null +++ b/Tests/isa/rv64ui-v-bge.dump @@ -0,0 +1,1084 @@ + +rv64ui-v-bge: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 9b068693 addi a3,a3,-1616 # 80002e08 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 9e460613 addi a2,a2,-1564 # 80002e98 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 9ac60613 addi a2,a2,-1620 # 80002eb0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 8fc68693 addi a3,a3,-1796 # 80002e50 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 91868693 addi a3,a3,-1768 # 80002f88 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 89860613 addi a2,a2,-1896 # 80002f60 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 7cc68693 addi a3,a3,1996 # 80002fb8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 6ec68693 addi a3,a3,1772 # 80002f28 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 67c68693 addi a3,a3,1660 # 80002ef0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01f00793 li a5,31 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 05e177b7 lui a5,0x5e17 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 4f578793 addi a5,a5,1269 # 5e174f5 <_start-0x7a1e8b0b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000093 li ra,0 + 80002ad0: 00000113 li sp,0 + 80002ad4: 0020d663 ble sp,ra,80002ae0 + 80002ad8: 30301863 bne zero,gp,80002de8 + 80002adc: 00301663 bne zero,gp,80002ae8 + 80002ae0: fe20dee3 ble sp,ra,80002adc + 80002ae4: 30301263 bne zero,gp,80002de8 + +0000000080002ae8 : + 80002ae8: 00300193 li gp,3 + 80002aec: 00100093 li ra,1 + 80002af0: 00100113 li sp,1 + 80002af4: 0020d663 ble sp,ra,80002b00 + 80002af8: 2e301863 bne zero,gp,80002de8 + 80002afc: 00301663 bne zero,gp,80002b08 + 80002b00: fe20dee3 ble sp,ra,80002afc + 80002b04: 2e301263 bne zero,gp,80002de8 + +0000000080002b08 : + 80002b08: 00400193 li gp,4 + 80002b0c: fff00093 li ra,-1 + 80002b10: fff00113 li sp,-1 + 80002b14: 0020d663 ble sp,ra,80002b20 + 80002b18: 2c301863 bne zero,gp,80002de8 + 80002b1c: 00301663 bne zero,gp,80002b28 + 80002b20: fe20dee3 ble sp,ra,80002b1c + 80002b24: 2c301263 bne zero,gp,80002de8 + +0000000080002b28 : + 80002b28: 00500193 li gp,5 + 80002b2c: 00100093 li ra,1 + 80002b30: 00000113 li sp,0 + 80002b34: 0020d663 ble sp,ra,80002b40 + 80002b38: 2a301863 bne zero,gp,80002de8 + 80002b3c: 00301663 bne zero,gp,80002b48 + 80002b40: fe20dee3 ble sp,ra,80002b3c + 80002b44: 2a301263 bne zero,gp,80002de8 + +0000000080002b48 : + 80002b48: 00600193 li gp,6 + 80002b4c: 00100093 li ra,1 + 80002b50: fff00113 li sp,-1 + 80002b54: 0020d663 ble sp,ra,80002b60 + 80002b58: 28301863 bne zero,gp,80002de8 + 80002b5c: 00301663 bne zero,gp,80002b68 + 80002b60: fe20dee3 ble sp,ra,80002b5c + 80002b64: 28301263 bne zero,gp,80002de8 + +0000000080002b68 : + 80002b68: 00700193 li gp,7 + 80002b6c: fff00093 li ra,-1 + 80002b70: ffe00113 li sp,-2 + 80002b74: 0020d663 ble sp,ra,80002b80 + 80002b78: 26301863 bne zero,gp,80002de8 + 80002b7c: 00301663 bne zero,gp,80002b88 + 80002b80: fe20dee3 ble sp,ra,80002b7c + 80002b84: 26301263 bne zero,gp,80002de8 + +0000000080002b88 : + 80002b88: 00800193 li gp,8 + 80002b8c: 00000093 li ra,0 + 80002b90: 00100113 li sp,1 + 80002b94: 0020d463 ble sp,ra,80002b9c + 80002b98: 00301463 bne zero,gp,80002ba0 + 80002b9c: 24301663 bne zero,gp,80002de8 + 80002ba0: fe20dee3 ble sp,ra,80002b9c + +0000000080002ba4 : + 80002ba4: 00900193 li gp,9 + 80002ba8: fff00093 li ra,-1 + 80002bac: 00100113 li sp,1 + 80002bb0: 0020d463 ble sp,ra,80002bb8 + 80002bb4: 00301463 bne zero,gp,80002bbc + 80002bb8: 22301863 bne zero,gp,80002de8 + 80002bbc: fe20dee3 ble sp,ra,80002bb8 + +0000000080002bc0 : + 80002bc0: 00a00193 li gp,10 + 80002bc4: ffe00093 li ra,-2 + 80002bc8: fff00113 li sp,-1 + 80002bcc: 0020d463 ble sp,ra,80002bd4 + 80002bd0: 00301463 bne zero,gp,80002bd8 + 80002bd4: 20301a63 bne zero,gp,80002de8 + 80002bd8: fe20dee3 ble sp,ra,80002bd4 + +0000000080002bdc : + 80002bdc: 00b00193 li gp,11 + 80002be0: ffe00093 li ra,-2 + 80002be4: 00100113 li sp,1 + 80002be8: 0020d463 ble sp,ra,80002bf0 + 80002bec: 00301463 bne zero,gp,80002bf4 + 80002bf0: 1e301c63 bne zero,gp,80002de8 + 80002bf4: fe20dee3 ble sp,ra,80002bf0 + +0000000080002bf8 : + 80002bf8: 00c00193 li gp,12 + 80002bfc: 00000213 li tp,0 + 80002c00: fff00093 li ra,-1 + 80002c04: 00000113 li sp,0 + 80002c08: 1e20d063 ble sp,ra,80002de8 + 80002c0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c10: 00200293 li t0,2 + 80002c14: fe5216e3 bne tp,t0,80002c00 + +0000000080002c18 : + 80002c18: 00d00193 li gp,13 + 80002c1c: 00000213 li tp,0 + 80002c20: fff00093 li ra,-1 + 80002c24: 00000113 li sp,0 + 80002c28: 00000013 nop + 80002c2c: 1a20de63 ble sp,ra,80002de8 + 80002c30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c34: 00200293 li t0,2 + 80002c38: fe5214e3 bne tp,t0,80002c20 + +0000000080002c3c : + 80002c3c: 00e00193 li gp,14 + 80002c40: 00000213 li tp,0 + 80002c44: fff00093 li ra,-1 + 80002c48: 00000113 li sp,0 + 80002c4c: 00000013 nop + 80002c50: 00000013 nop + 80002c54: 1820da63 ble sp,ra,80002de8 + 80002c58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c5c: 00200293 li t0,2 + 80002c60: fe5212e3 bne tp,t0,80002c44 + +0000000080002c64 : + 80002c64: 00f00193 li gp,15 + 80002c68: 00000213 li tp,0 + 80002c6c: fff00093 li ra,-1 + 80002c70: 00000013 nop + 80002c74: 00000113 li sp,0 + 80002c78: 1620d863 ble sp,ra,80002de8 + 80002c7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c80: 00200293 li t0,2 + 80002c84: fe5214e3 bne tp,t0,80002c6c + +0000000080002c88 : + 80002c88: 01000193 li gp,16 + 80002c8c: 00000213 li tp,0 + 80002c90: fff00093 li ra,-1 + 80002c94: 00000013 nop + 80002c98: 00000113 li sp,0 + 80002c9c: 00000013 nop + 80002ca0: 1420d463 ble sp,ra,80002de8 + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5212e3 bne tp,t0,80002c90 + +0000000080002cb0 : + 80002cb0: 01100193 li gp,17 + 80002cb4: 00000213 li tp,0 + 80002cb8: fff00093 li ra,-1 + 80002cbc: 00000013 nop + 80002cc0: 00000013 nop + 80002cc4: 00000113 li sp,0 + 80002cc8: 1220d063 ble sp,ra,80002de8 + 80002ccc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd0: 00200293 li t0,2 + 80002cd4: fe5212e3 bne tp,t0,80002cb8 + +0000000080002cd8 : + 80002cd8: 01200193 li gp,18 + 80002cdc: 00000213 li tp,0 + 80002ce0: fff00093 li ra,-1 + 80002ce4: 00000113 li sp,0 + 80002ce8: 1020d063 ble sp,ra,80002de8 + 80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf0: 00200293 li t0,2 + 80002cf4: fe5216e3 bne tp,t0,80002ce0 + +0000000080002cf8 : + 80002cf8: 01300193 li gp,19 + 80002cfc: 00000213 li tp,0 + 80002d00: fff00093 li ra,-1 + 80002d04: 00000113 li sp,0 + 80002d08: 00000013 nop + 80002d0c: 0c20de63 ble sp,ra,80002de8 + 80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d14: 00200293 li t0,2 + 80002d18: fe5214e3 bne tp,t0,80002d00 + +0000000080002d1c : + 80002d1c: 01400193 li gp,20 + 80002d20: 00000213 li tp,0 + 80002d24: fff00093 li ra,-1 + 80002d28: 00000113 li sp,0 + 80002d2c: 00000013 nop + 80002d30: 00000013 nop + 80002d34: 0a20da63 ble sp,ra,80002de8 + 80002d38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d3c: 00200293 li t0,2 + 80002d40: fe5212e3 bne tp,t0,80002d24 + +0000000080002d44 : + 80002d44: 01500193 li gp,21 + 80002d48: 00000213 li tp,0 + 80002d4c: fff00093 li ra,-1 + 80002d50: 00000013 nop + 80002d54: 00000113 li sp,0 + 80002d58: 0820d863 ble sp,ra,80002de8 + 80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d60: 00200293 li t0,2 + 80002d64: fe5214e3 bne tp,t0,80002d4c + +0000000080002d68 : + 80002d68: 01600193 li gp,22 + 80002d6c: 00000213 li tp,0 + 80002d70: fff00093 li ra,-1 + 80002d74: 00000013 nop + 80002d78: 00000113 li sp,0 + 80002d7c: 00000013 nop + 80002d80: 0620d463 ble sp,ra,80002de8 + 80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d88: 00200293 li t0,2 + 80002d8c: fe5212e3 bne tp,t0,80002d70 + +0000000080002d90 : + 80002d90: 01700193 li gp,23 + 80002d94: 00000213 li tp,0 + 80002d98: fff00093 li ra,-1 + 80002d9c: 00000013 nop + 80002da0: 00000013 nop + 80002da4: 00000113 li sp,0 + 80002da8: 0420d063 ble sp,ra,80002de8 + 80002dac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002db0: 00200293 li t0,2 + 80002db4: fe5212e3 bne tp,t0,80002d98 + +0000000080002db8 : + 80002db8: 00100093 li ra,1 + 80002dbc: 0000da63 bgez ra,80002dd0 + 80002dc0: 00108093 addi ra,ra,1 + 80002dc4: 00108093 addi ra,ra,1 + 80002dc8: 00108093 addi ra,ra,1 + 80002dcc: 00108093 addi ra,ra,1 + 80002dd0: 00108093 addi ra,ra,1 + 80002dd4: 00108093 addi ra,ra,1 + 80002dd8: 00300e93 li t4,3 + 80002ddc: 01800193 li gp,24 + 80002de0: 01d09463 bne ra,t4,80002de8 + 80002de4: 00301a63 bne zero,gp,80002df8 + +0000000080002de8 : + 80002de8: 00119513 slli a0,gp,0x1 + 80002dec: 00050063 beqz a0,80002dec + 80002df0: 00156513 ori a0,a0,1 + 80002df4: 00000073 ecall + +0000000080002df8 : + 80002df8: 00100513 li a0,1 + 80002dfc: 00000073 ecall + 80002e00: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-bgeu b/Tests/isa/rv64ui-v-bgeu new file mode 100644 index 0000000..7b45f75 Binary files /dev/null and b/Tests/isa/rv64ui-v-bgeu differ diff --git a/Tests/isa/rv64ui-v-bgeu.dump b/Tests/isa/rv64ui-v-bgeu.dump new file mode 100644 index 0000000..9544e42 --- /dev/null +++ b/Tests/isa/rv64ui-v-bgeu.dump @@ -0,0 +1,1138 @@ + +rv64ui-v-bgeu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: a8868693 addi a3,a3,-1400 # 80002ee0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: abc60613 addi a2,a2,-1348 # 80002f70 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: a8460613 addi a2,a2,-1404 # 80002f88 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 9d468693 addi a3,a3,-1580 # 80002f28 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 9f068693 addi a3,a3,-1552 # 80003060 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 97060613 addi a2,a2,-1680 # 80003038 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 8a468693 addi a3,a3,-1884 # 80003090 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 7c468693 addi a3,a3,1988 # 80003000 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 75468693 addi a3,a3,1876 # 80002fc8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03d00793 li a5,61 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 02e567b7 lui a5,0x2e56 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: eb078793 addi a5,a5,-336 # 2e55eb0 <_start-0x7d1aa150> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000093 li ra,0 + 80002ad0: 00000113 li sp,0 + 80002ad4: 0020f663 bleu sp,ra,80002ae0 + 80002ad8: 3e301463 bne zero,gp,80002ec0 + 80002adc: 00301663 bne zero,gp,80002ae8 + 80002ae0: fe20fee3 bleu sp,ra,80002adc + 80002ae4: 3c301e63 bne zero,gp,80002ec0 + +0000000080002ae8 : + 80002ae8: 00300193 li gp,3 + 80002aec: 00100093 li ra,1 + 80002af0: 00100113 li sp,1 + 80002af4: 0020f663 bleu sp,ra,80002b00 + 80002af8: 3c301463 bne zero,gp,80002ec0 + 80002afc: 00301663 bne zero,gp,80002b08 + 80002b00: fe20fee3 bleu sp,ra,80002afc + 80002b04: 3a301e63 bne zero,gp,80002ec0 + +0000000080002b08 : + 80002b08: 00400193 li gp,4 + 80002b0c: 0010009b addiw ra,zero,1 + 80002b10: 02009093 slli ra,ra,0x20 + 80002b14: fff08093 addi ra,ra,-1 + 80002b18: 0010011b addiw sp,zero,1 + 80002b1c: 02011113 slli sp,sp,0x20 + 80002b20: fff10113 addi sp,sp,-1 + 80002b24: 0020f663 bleu sp,ra,80002b30 + 80002b28: 38301c63 bne zero,gp,80002ec0 + 80002b2c: 00301663 bne zero,gp,80002b38 + 80002b30: fe20fee3 bleu sp,ra,80002b2c + 80002b34: 38301663 bne zero,gp,80002ec0 + +0000000080002b38 : + 80002b38: 00500193 li gp,5 + 80002b3c: 00100093 li ra,1 + 80002b40: 00000113 li sp,0 + 80002b44: 0020f663 bleu sp,ra,80002b50 + 80002b48: 36301c63 bne zero,gp,80002ec0 + 80002b4c: 00301663 bne zero,gp,80002b58 + 80002b50: fe20fee3 bleu sp,ra,80002b4c + 80002b54: 36301663 bne zero,gp,80002ec0 + +0000000080002b58 : + 80002b58: 00600193 li gp,6 + 80002b5c: 0010009b addiw ra,zero,1 + 80002b60: 02009093 slli ra,ra,0x20 + 80002b64: fff08093 addi ra,ra,-1 + 80002b68: 0010011b addiw sp,zero,1 + 80002b6c: 02011113 slli sp,sp,0x20 + 80002b70: ffe10113 addi sp,sp,-2 + 80002b74: 0020f663 bleu sp,ra,80002b80 + 80002b78: 34301463 bne zero,gp,80002ec0 + 80002b7c: 00301663 bne zero,gp,80002b88 + 80002b80: fe20fee3 bleu sp,ra,80002b7c + 80002b84: 32301e63 bne zero,gp,80002ec0 + +0000000080002b88 : + 80002b88: 00700193 li gp,7 + 80002b8c: 0010009b addiw ra,zero,1 + 80002b90: 02009093 slli ra,ra,0x20 + 80002b94: fff08093 addi ra,ra,-1 + 80002b98: 00000113 li sp,0 + 80002b9c: 0020f663 bleu sp,ra,80002ba8 + 80002ba0: 32301063 bne zero,gp,80002ec0 + 80002ba4: 00301663 bne zero,gp,80002bb0 + 80002ba8: fe20fee3 bleu sp,ra,80002ba4 + 80002bac: 30301a63 bne zero,gp,80002ec0 + +0000000080002bb0 : + 80002bb0: 00800193 li gp,8 + 80002bb4: 00000093 li ra,0 + 80002bb8: 00100113 li sp,1 + 80002bbc: 0020f463 bleu sp,ra,80002bc4 + 80002bc0: 00301463 bne zero,gp,80002bc8 + 80002bc4: 2e301e63 bne zero,gp,80002ec0 + 80002bc8: fe20fee3 bleu sp,ra,80002bc4 + +0000000080002bcc : + 80002bcc: 00900193 li gp,9 + 80002bd0: 0010009b addiw ra,zero,1 + 80002bd4: 02009093 slli ra,ra,0x20 + 80002bd8: ffe08093 addi ra,ra,-2 + 80002bdc: 0010011b addiw sp,zero,1 + 80002be0: 02011113 slli sp,sp,0x20 + 80002be4: fff10113 addi sp,sp,-1 + 80002be8: 0020f463 bleu sp,ra,80002bf0 + 80002bec: 00301463 bne zero,gp,80002bf4 + 80002bf0: 2c301863 bne zero,gp,80002ec0 + 80002bf4: fe20fee3 bleu sp,ra,80002bf0 + +0000000080002bf8 : + 80002bf8: 00a00193 li gp,10 + 80002bfc: 00000093 li ra,0 + 80002c00: 0010011b addiw sp,zero,1 + 80002c04: 02011113 slli sp,sp,0x20 + 80002c08: fff10113 addi sp,sp,-1 + 80002c0c: 0020f463 bleu sp,ra,80002c14 + 80002c10: 00301463 bne zero,gp,80002c18 + 80002c14: 2a301663 bne zero,gp,80002ec0 + 80002c18: fe20fee3 bleu sp,ra,80002c14 + +0000000080002c1c : + 80002c1c: 00b00193 li gp,11 + 80002c20: 800000b7 lui ra,0x80000 + 80002c24: fff0809b addiw ra,ra,-1 + 80002c28: 0010011b addiw sp,zero,1 + 80002c2c: 01f11113 slli sp,sp,0x1f + 80002c30: 0020f463 bleu sp,ra,80002c38 + 80002c34: 00301463 bne zero,gp,80002c3c + 80002c38: 28301463 bne zero,gp,80002ec0 + 80002c3c: fe20fee3 bleu sp,ra,80002c38 + +0000000080002c40 : + 80002c40: 00c00193 li gp,12 + 80002c44: 00000213 li tp,0 + 80002c48: 00f0009b addiw ra,zero,15 + 80002c4c: 01c09093 slli ra,ra,0x1c + 80002c50: fff08093 addi ra,ra,-1 # ffffffff7fffffff <_end+0xfffffffeffff780f> + 80002c54: 00f0011b addiw sp,zero,15 + 80002c58: 01c11113 slli sp,sp,0x1c + 80002c5c: 2620f263 bleu sp,ra,80002ec0 + 80002c60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c64: 00200293 li t0,2 + 80002c68: fe5210e3 bne tp,t0,80002c48 + +0000000080002c6c : + 80002c6c: 00d00193 li gp,13 + 80002c70: 00000213 li tp,0 + 80002c74: 00f0009b addiw ra,zero,15 + 80002c78: 01c09093 slli ra,ra,0x1c + 80002c7c: fff08093 addi ra,ra,-1 + 80002c80: 00f0011b addiw sp,zero,15 + 80002c84: 01c11113 slli sp,sp,0x1c + 80002c88: 00000013 nop + 80002c8c: 2220fa63 bleu sp,ra,80002ec0 + 80002c90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c94: 00200293 li t0,2 + 80002c98: fc521ee3 bne tp,t0,80002c74 + +0000000080002c9c : + 80002c9c: 00e00193 li gp,14 + 80002ca0: 00000213 li tp,0 + 80002ca4: 00f0009b addiw ra,zero,15 + 80002ca8: 01c09093 slli ra,ra,0x1c + 80002cac: fff08093 addi ra,ra,-1 + 80002cb0: 00f0011b addiw sp,zero,15 + 80002cb4: 01c11113 slli sp,sp,0x1c + 80002cb8: 00000013 nop + 80002cbc: 00000013 nop + 80002cc0: 2020f063 bleu sp,ra,80002ec0 + 80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cc8: 00200293 li t0,2 + 80002ccc: fc521ce3 bne tp,t0,80002ca4 + +0000000080002cd0 : + 80002cd0: 00f00193 li gp,15 + 80002cd4: 00000213 li tp,0 + 80002cd8: 00f0009b addiw ra,zero,15 + 80002cdc: 01c09093 slli ra,ra,0x1c + 80002ce0: fff08093 addi ra,ra,-1 + 80002ce4: 00000013 nop + 80002ce8: 00f0011b addiw sp,zero,15 + 80002cec: 01c11113 slli sp,sp,0x1c + 80002cf0: 1c20f863 bleu sp,ra,80002ec0 + 80002cf4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf8: 00200293 li t0,2 + 80002cfc: fc521ee3 bne tp,t0,80002cd8 + +0000000080002d00 : + 80002d00: 01000193 li gp,16 + 80002d04: 00000213 li tp,0 + 80002d08: 00f0009b addiw ra,zero,15 + 80002d0c: 01c09093 slli ra,ra,0x1c + 80002d10: fff08093 addi ra,ra,-1 + 80002d14: 00000013 nop + 80002d18: 00f0011b addiw sp,zero,15 + 80002d1c: 01c11113 slli sp,sp,0x1c + 80002d20: 00000013 nop + 80002d24: 1820fe63 bleu sp,ra,80002ec0 + 80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d2c: 00200293 li t0,2 + 80002d30: fc521ce3 bne tp,t0,80002d08 + +0000000080002d34 : + 80002d34: 01100193 li gp,17 + 80002d38: 00000213 li tp,0 + 80002d3c: 00f0009b addiw ra,zero,15 + 80002d40: 01c09093 slli ra,ra,0x1c + 80002d44: fff08093 addi ra,ra,-1 + 80002d48: 00000013 nop + 80002d4c: 00000013 nop + 80002d50: 00f0011b addiw sp,zero,15 + 80002d54: 01c11113 slli sp,sp,0x1c + 80002d58: 1620f463 bleu sp,ra,80002ec0 + 80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d60: 00200293 li t0,2 + 80002d64: fc521ce3 bne tp,t0,80002d3c + +0000000080002d68 : + 80002d68: 01200193 li gp,18 + 80002d6c: 00000213 li tp,0 + 80002d70: 00f0009b addiw ra,zero,15 + 80002d74: 01c09093 slli ra,ra,0x1c + 80002d78: fff08093 addi ra,ra,-1 + 80002d7c: 00f0011b addiw sp,zero,15 + 80002d80: 01c11113 slli sp,sp,0x1c + 80002d84: 1220fe63 bleu sp,ra,80002ec0 + 80002d88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d8c: 00200293 li t0,2 + 80002d90: fe5210e3 bne tp,t0,80002d70 + +0000000080002d94 : + 80002d94: 01300193 li gp,19 + 80002d98: 00000213 li tp,0 + 80002d9c: 00f0009b addiw ra,zero,15 + 80002da0: 01c09093 slli ra,ra,0x1c + 80002da4: fff08093 addi ra,ra,-1 + 80002da8: 00f0011b addiw sp,zero,15 + 80002dac: 01c11113 slli sp,sp,0x1c + 80002db0: 00000013 nop + 80002db4: 1020f663 bleu sp,ra,80002ec0 + 80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dbc: 00200293 li t0,2 + 80002dc0: fc521ee3 bne tp,t0,80002d9c + +0000000080002dc4 : + 80002dc4: 01400193 li gp,20 + 80002dc8: 00000213 li tp,0 + 80002dcc: 00f0009b addiw ra,zero,15 + 80002dd0: 01c09093 slli ra,ra,0x1c + 80002dd4: fff08093 addi ra,ra,-1 + 80002dd8: 00f0011b addiw sp,zero,15 + 80002ddc: 01c11113 slli sp,sp,0x1c + 80002de0: 00000013 nop + 80002de4: 00000013 nop + 80002de8: 0c20fc63 bleu sp,ra,80002ec0 + 80002dec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002df0: 00200293 li t0,2 + 80002df4: fc521ce3 bne tp,t0,80002dcc + +0000000080002df8 : + 80002df8: 01500193 li gp,21 + 80002dfc: 00000213 li tp,0 + 80002e00: 00f0009b addiw ra,zero,15 + 80002e04: 01c09093 slli ra,ra,0x1c + 80002e08: fff08093 addi ra,ra,-1 + 80002e0c: 00000013 nop + 80002e10: 00f0011b addiw sp,zero,15 + 80002e14: 01c11113 slli sp,sp,0x1c + 80002e18: 0a20f463 bleu sp,ra,80002ec0 + 80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e20: 00200293 li t0,2 + 80002e24: fc521ee3 bne tp,t0,80002e00 + +0000000080002e28 : + 80002e28: 01600193 li gp,22 + 80002e2c: 00000213 li tp,0 + 80002e30: 00f0009b addiw ra,zero,15 + 80002e34: 01c09093 slli ra,ra,0x1c + 80002e38: fff08093 addi ra,ra,-1 + 80002e3c: 00000013 nop + 80002e40: 00f0011b addiw sp,zero,15 + 80002e44: 01c11113 slli sp,sp,0x1c + 80002e48: 00000013 nop + 80002e4c: 0620fa63 bleu sp,ra,80002ec0 + 80002e50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e54: 00200293 li t0,2 + 80002e58: fc521ce3 bne tp,t0,80002e30 + +0000000080002e5c : + 80002e5c: 01700193 li gp,23 + 80002e60: 00000213 li tp,0 + 80002e64: 00f0009b addiw ra,zero,15 + 80002e68: 01c09093 slli ra,ra,0x1c + 80002e6c: fff08093 addi ra,ra,-1 + 80002e70: 00000013 nop + 80002e74: 00000013 nop + 80002e78: 00f0011b addiw sp,zero,15 + 80002e7c: 01c11113 slli sp,sp,0x1c + 80002e80: 0420f063 bleu sp,ra,80002ec0 + 80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e88: 00200293 li t0,2 + 80002e8c: fc521ce3 bne tp,t0,80002e64 + +0000000080002e90 : + 80002e90: 00100093 li ra,1 + 80002e94: 0000fa63 bleu zero,ra,80002ea8 + 80002e98: 00108093 addi ra,ra,1 + 80002e9c: 00108093 addi ra,ra,1 + 80002ea0: 00108093 addi ra,ra,1 + 80002ea4: 00108093 addi ra,ra,1 + 80002ea8: 00108093 addi ra,ra,1 + 80002eac: 00108093 addi ra,ra,1 + 80002eb0: 00300e93 li t4,3 + 80002eb4: 01800193 li gp,24 + 80002eb8: 01d09463 bne ra,t4,80002ec0 + 80002ebc: 00301a63 bne zero,gp,80002ed0 + +0000000080002ec0 : + 80002ec0: 00119513 slli a0,gp,0x1 + 80002ec4: 00050063 beqz a0,80002ec4 + 80002ec8: 00156513 ori a0,a0,1 + 80002ecc: 00000073 ecall + +0000000080002ed0 : + 80002ed0: 00100513 li a0,1 + 80002ed4: 00000073 ecall + 80002ed8: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-blt b/Tests/isa/rv64ui-v-blt new file mode 100644 index 0000000..daad160 Binary files /dev/null and b/Tests/isa/rv64ui-v-blt differ diff --git a/Tests/isa/rv64ui-v-blt.dump b/Tests/isa/rv64ui-v-blt.dump new file mode 100644 index 0000000..c0eaae6 --- /dev/null +++ b/Tests/isa/rv64ui-v-blt.dump @@ -0,0 +1,1054 @@ + +rv64ui-v-blt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 95068693 addi a3,a3,-1712 # 80002da8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 98460613 addi a2,a2,-1660 # 80002e38 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 94c60613 addi a2,a2,-1716 # 80002e50 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 89c68693 addi a3,a3,-1892 # 80002df0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8b868693 addi a3,a3,-1864 # 80002f28 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 83860613 addi a2,a2,-1992 # 80002f00 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 76c68693 addi a3,a3,1900 # 80002f58 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 68c68693 addi a3,a3,1676 # 80002ec8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 61c68693 addi a3,a3,1564 # 80002e90 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01300793 li a5,19 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 01a3a7b7 lui a5,0x1a3a + 80002a70: 000805b7 lui a1,0x80 + 80002a74: b4178793 addi a5,a5,-1215 # 1a39b41 <_start-0x7e5c64bf> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000093 li ra,0 + 80002ad0: 00100113 li sp,1 + 80002ad4: 0020c663 blt ra,sp,80002ae0 + 80002ad8: 2a301863 bne zero,gp,80002d88 + 80002adc: 00301663 bne zero,gp,80002ae8 + 80002ae0: fe20cee3 blt ra,sp,80002adc + 80002ae4: 2a301263 bne zero,gp,80002d88 + +0000000080002ae8 : + 80002ae8: 00300193 li gp,3 + 80002aec: fff00093 li ra,-1 + 80002af0: 00100113 li sp,1 + 80002af4: 0020c663 blt ra,sp,80002b00 + 80002af8: 28301863 bne zero,gp,80002d88 + 80002afc: 00301663 bne zero,gp,80002b08 + 80002b00: fe20cee3 blt ra,sp,80002afc + 80002b04: 28301263 bne zero,gp,80002d88 + +0000000080002b08 : + 80002b08: 00400193 li gp,4 + 80002b0c: ffe00093 li ra,-2 + 80002b10: fff00113 li sp,-1 + 80002b14: 0020c663 blt ra,sp,80002b20 + 80002b18: 26301863 bne zero,gp,80002d88 + 80002b1c: 00301663 bne zero,gp,80002b28 + 80002b20: fe20cee3 blt ra,sp,80002b1c + 80002b24: 26301263 bne zero,gp,80002d88 + +0000000080002b28 : + 80002b28: 00500193 li gp,5 + 80002b2c: 00100093 li ra,1 + 80002b30: 00000113 li sp,0 + 80002b34: 0020c463 blt ra,sp,80002b3c + 80002b38: 00301463 bne zero,gp,80002b40 + 80002b3c: 24301663 bne zero,gp,80002d88 + 80002b40: fe20cee3 blt ra,sp,80002b3c + +0000000080002b44 : + 80002b44: 00600193 li gp,6 + 80002b48: 00100093 li ra,1 + 80002b4c: fff00113 li sp,-1 + 80002b50: 0020c463 blt ra,sp,80002b58 + 80002b54: 00301463 bne zero,gp,80002b5c + 80002b58: 22301863 bne zero,gp,80002d88 + 80002b5c: fe20cee3 blt ra,sp,80002b58 + +0000000080002b60 : + 80002b60: 00700193 li gp,7 + 80002b64: fff00093 li ra,-1 + 80002b68: ffe00113 li sp,-2 + 80002b6c: 0020c463 blt ra,sp,80002b74 + 80002b70: 00301463 bne zero,gp,80002b78 + 80002b74: 20301a63 bne zero,gp,80002d88 + 80002b78: fe20cee3 blt ra,sp,80002b74 + +0000000080002b7c : + 80002b7c: 00800193 li gp,8 + 80002b80: 00100093 li ra,1 + 80002b84: ffe00113 li sp,-2 + 80002b88: 0020c463 blt ra,sp,80002b90 + 80002b8c: 00301463 bne zero,gp,80002b94 + 80002b90: 1e301c63 bne zero,gp,80002d88 + 80002b94: fe20cee3 blt ra,sp,80002b90 + +0000000080002b98 : + 80002b98: 00900193 li gp,9 + 80002b9c: 00000213 li tp,0 + 80002ba0: 00000093 li ra,0 + 80002ba4: fff00113 li sp,-1 + 80002ba8: 1e20c063 blt ra,sp,80002d88 + 80002bac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bb0: 00200293 li t0,2 + 80002bb4: fe5216e3 bne tp,t0,80002ba0 + +0000000080002bb8 : + 80002bb8: 00a00193 li gp,10 + 80002bbc: 00000213 li tp,0 + 80002bc0: 00000093 li ra,0 + 80002bc4: fff00113 li sp,-1 + 80002bc8: 00000013 nop + 80002bcc: 1a20ce63 blt ra,sp,80002d88 + 80002bd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bd4: 00200293 li t0,2 + 80002bd8: fe5214e3 bne tp,t0,80002bc0 + +0000000080002bdc : + 80002bdc: 00b00193 li gp,11 + 80002be0: 00000213 li tp,0 + 80002be4: 00000093 li ra,0 + 80002be8: fff00113 li sp,-1 + 80002bec: 00000013 nop + 80002bf0: 00000013 nop + 80002bf4: 1820ca63 blt ra,sp,80002d88 + 80002bf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bfc: 00200293 li t0,2 + 80002c00: fe5212e3 bne tp,t0,80002be4 + +0000000080002c04 : + 80002c04: 00c00193 li gp,12 + 80002c08: 00000213 li tp,0 + 80002c0c: 00000093 li ra,0 + 80002c10: 00000013 nop + 80002c14: fff00113 li sp,-1 + 80002c18: 1620c863 blt ra,sp,80002d88 + 80002c1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c20: 00200293 li t0,2 + 80002c24: fe5214e3 bne tp,t0,80002c0c + +0000000080002c28 : + 80002c28: 00d00193 li gp,13 + 80002c2c: 00000213 li tp,0 + 80002c30: 00000093 li ra,0 + 80002c34: 00000013 nop + 80002c38: fff00113 li sp,-1 + 80002c3c: 00000013 nop + 80002c40: 1420c463 blt ra,sp,80002d88 + 80002c44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c48: 00200293 li t0,2 + 80002c4c: fe5212e3 bne tp,t0,80002c30 + +0000000080002c50 : + 80002c50: 00e00193 li gp,14 + 80002c54: 00000213 li tp,0 + 80002c58: 00000093 li ra,0 + 80002c5c: 00000013 nop + 80002c60: 00000013 nop + 80002c64: fff00113 li sp,-1 + 80002c68: 1220c063 blt ra,sp,80002d88 + 80002c6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c70: 00200293 li t0,2 + 80002c74: fe5212e3 bne tp,t0,80002c58 + +0000000080002c78 : + 80002c78: 00f00193 li gp,15 + 80002c7c: 00000213 li tp,0 + 80002c80: 00000093 li ra,0 + 80002c84: fff00113 li sp,-1 + 80002c88: 1020c063 blt ra,sp,80002d88 + 80002c8c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c90: 00200293 li t0,2 + 80002c94: fe5216e3 bne tp,t0,80002c80 + +0000000080002c98 : + 80002c98: 01000193 li gp,16 + 80002c9c: 00000213 li tp,0 + 80002ca0: 00000093 li ra,0 + 80002ca4: fff00113 li sp,-1 + 80002ca8: 00000013 nop + 80002cac: 0c20ce63 blt ra,sp,80002d88 + 80002cb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cb4: 00200293 li t0,2 + 80002cb8: fe5214e3 bne tp,t0,80002ca0 + +0000000080002cbc : + 80002cbc: 01100193 li gp,17 + 80002cc0: 00000213 li tp,0 + 80002cc4: 00000093 li ra,0 + 80002cc8: fff00113 li sp,-1 + 80002ccc: 00000013 nop + 80002cd0: 00000013 nop + 80002cd4: 0a20ca63 blt ra,sp,80002d88 + 80002cd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cdc: 00200293 li t0,2 + 80002ce0: fe5212e3 bne tp,t0,80002cc4 + +0000000080002ce4 : + 80002ce4: 01200193 li gp,18 + 80002ce8: 00000213 li tp,0 + 80002cec: 00000093 li ra,0 + 80002cf0: 00000013 nop + 80002cf4: fff00113 li sp,-1 + 80002cf8: 0820c863 blt ra,sp,80002d88 + 80002cfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d00: 00200293 li t0,2 + 80002d04: fe5214e3 bne tp,t0,80002cec + +0000000080002d08 : + 80002d08: 01300193 li gp,19 + 80002d0c: 00000213 li tp,0 + 80002d10: 00000093 li ra,0 + 80002d14: 00000013 nop + 80002d18: fff00113 li sp,-1 + 80002d1c: 00000013 nop + 80002d20: 0620c463 blt ra,sp,80002d88 + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fe5212e3 bne tp,t0,80002d10 + +0000000080002d30 : + 80002d30: 01400193 li gp,20 + 80002d34: 00000213 li tp,0 + 80002d38: 00000093 li ra,0 + 80002d3c: 00000013 nop + 80002d40: 00000013 nop + 80002d44: fff00113 li sp,-1 + 80002d48: 0420c063 blt ra,sp,80002d88 + 80002d4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d50: 00200293 li t0,2 + 80002d54: fe5212e3 bne tp,t0,80002d38 + +0000000080002d58 : + 80002d58: 00100093 li ra,1 + 80002d5c: 00104a63 bgtz ra,80002d70 + 80002d60: 00108093 addi ra,ra,1 + 80002d64: 00108093 addi ra,ra,1 + 80002d68: 00108093 addi ra,ra,1 + 80002d6c: 00108093 addi ra,ra,1 + 80002d70: 00108093 addi ra,ra,1 + 80002d74: 00108093 addi ra,ra,1 + 80002d78: 00300e93 li t4,3 + 80002d7c: 01500193 li gp,21 + 80002d80: 01d09463 bne ra,t4,80002d88 + 80002d84: 00301a63 bne zero,gp,80002d98 + +0000000080002d88 : + 80002d88: 00119513 slli a0,gp,0x1 + 80002d8c: 00050063 beqz a0,80002d8c + 80002d90: 00156513 ori a0,a0,1 + 80002d94: 00000073 ecall + +0000000080002d98 : + 80002d98: 00100513 li a0,1 + 80002d9c: 00000073 ecall + 80002da0: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-bltu b/Tests/isa/rv64ui-v-bltu new file mode 100644 index 0000000..1e58d62 Binary files /dev/null and b/Tests/isa/rv64ui-v-bltu differ diff --git a/Tests/isa/rv64ui-v-bltu.dump b/Tests/isa/rv64ui-v-bltu.dump new file mode 100644 index 0000000..bf46506 --- /dev/null +++ b/Tests/isa/rv64ui-v-bltu.dump @@ -0,0 +1,1104 @@ + +rv64ui-v-bltu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: a1868693 addi a3,a3,-1512 # 80002e70 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: a4c60613 addi a2,a2,-1460 # 80002f00 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: a1460613 addi a2,a2,-1516 # 80002f18 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 96468693 addi a3,a3,-1692 # 80002eb8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 98068693 addi a3,a3,-1664 # 80002ff0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 90060613 addi a2,a2,-1792 # 80002fc8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 83468693 addi a3,a3,-1996 # 80003020 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 75468693 addi a3,a3,1876 # 80002f90 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 6e468693 addi a3,a3,1764 # 80002f58 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03800793 li a5,56 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 09c3b7b7 lui a5,0x9c3b + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 9db78793 addi a5,a5,-1573 # 9c3a9db <_start-0x763c5625> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000093 li ra,0 + 80002ad0: 00100113 li sp,1 + 80002ad4: 0020e663 bltu ra,sp,80002ae0 + 80002ad8: 36301c63 bne zero,gp,80002e50 + 80002adc: 00301663 bne zero,gp,80002ae8 + 80002ae0: fe20eee3 bltu ra,sp,80002adc + 80002ae4: 36301663 bne zero,gp,80002e50 + +0000000080002ae8 : + 80002ae8: 00300193 li gp,3 + 80002aec: 0010009b addiw ra,zero,1 + 80002af0: 02009093 slli ra,ra,0x20 + 80002af4: ffe08093 addi ra,ra,-2 + 80002af8: 0010011b addiw sp,zero,1 + 80002afc: 02011113 slli sp,sp,0x20 + 80002b00: fff10113 addi sp,sp,-1 + 80002b04: 0020e663 bltu ra,sp,80002b10 + 80002b08: 34301463 bne zero,gp,80002e50 + 80002b0c: 00301663 bne zero,gp,80002b18 + 80002b10: fe20eee3 bltu ra,sp,80002b0c + 80002b14: 32301e63 bne zero,gp,80002e50 + +0000000080002b18 : + 80002b18: 00400193 li gp,4 + 80002b1c: 00000093 li ra,0 + 80002b20: 0010011b addiw sp,zero,1 + 80002b24: 02011113 slli sp,sp,0x20 + 80002b28: fff10113 addi sp,sp,-1 + 80002b2c: 0020e663 bltu ra,sp,80002b38 + 80002b30: 32301063 bne zero,gp,80002e50 + 80002b34: 00301663 bne zero,gp,80002b40 + 80002b38: fe20eee3 bltu ra,sp,80002b34 + 80002b3c: 30301a63 bne zero,gp,80002e50 + +0000000080002b40 : + 80002b40: 00500193 li gp,5 + 80002b44: 00100093 li ra,1 + 80002b48: 00000113 li sp,0 + 80002b4c: 0020e463 bltu ra,sp,80002b54 + 80002b50: 00301463 bne zero,gp,80002b58 + 80002b54: 2e301e63 bne zero,gp,80002e50 + 80002b58: fe20eee3 bltu ra,sp,80002b54 + +0000000080002b5c : + 80002b5c: 00600193 li gp,6 + 80002b60: 0010009b addiw ra,zero,1 + 80002b64: 02009093 slli ra,ra,0x20 + 80002b68: fff08093 addi ra,ra,-1 + 80002b6c: 0010011b addiw sp,zero,1 + 80002b70: 02011113 slli sp,sp,0x20 + 80002b74: ffe10113 addi sp,sp,-2 + 80002b78: 0020e463 bltu ra,sp,80002b80 + 80002b7c: 00301463 bne zero,gp,80002b84 + 80002b80: 2c301863 bne zero,gp,80002e50 + 80002b84: fe20eee3 bltu ra,sp,80002b80 + +0000000080002b88 : + 80002b88: 00700193 li gp,7 + 80002b8c: 0010009b addiw ra,zero,1 + 80002b90: 02009093 slli ra,ra,0x20 + 80002b94: fff08093 addi ra,ra,-1 + 80002b98: 00000113 li sp,0 + 80002b9c: 0020e463 bltu ra,sp,80002ba4 + 80002ba0: 00301463 bne zero,gp,80002ba8 + 80002ba4: 2a301663 bne zero,gp,80002e50 + 80002ba8: fe20eee3 bltu ra,sp,80002ba4 + +0000000080002bac : + 80002bac: 00800193 li gp,8 + 80002bb0: 0010009b addiw ra,zero,1 + 80002bb4: 01f09093 slli ra,ra,0x1f + 80002bb8: 80000137 lui sp,0x80000 + 80002bbc: fff1011b addiw sp,sp,-1 + 80002bc0: 0020e463 bltu ra,sp,80002bc8 + 80002bc4: 00301463 bne zero,gp,80002bcc + 80002bc8: 28301463 bne zero,gp,80002e50 + 80002bcc: fe20eee3 bltu ra,sp,80002bc8 + +0000000080002bd0 : + 80002bd0: 00900193 li gp,9 + 80002bd4: 00000213 li tp,0 + 80002bd8: 00f0009b addiw ra,zero,15 + 80002bdc: 01c09093 slli ra,ra,0x1c + 80002be0: 00f0011b addiw sp,zero,15 + 80002be4: 01c11113 slli sp,sp,0x1c + 80002be8: fff10113 addi sp,sp,-1 # ffffffff7fffffff <_end+0xfffffffeffff780f> + 80002bec: 2620e263 bltu ra,sp,80002e50 + 80002bf0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bf4: 00200293 li t0,2 + 80002bf8: fe5210e3 bne tp,t0,80002bd8 + +0000000080002bfc : + 80002bfc: 00a00193 li gp,10 + 80002c00: 00000213 li tp,0 + 80002c04: 00f0009b addiw ra,zero,15 + 80002c08: 01c09093 slli ra,ra,0x1c + 80002c0c: 00f0011b addiw sp,zero,15 + 80002c10: 01c11113 slli sp,sp,0x1c + 80002c14: fff10113 addi sp,sp,-1 + 80002c18: 00000013 nop + 80002c1c: 2220ea63 bltu ra,sp,80002e50 + 80002c20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c24: 00200293 li t0,2 + 80002c28: fc521ee3 bne tp,t0,80002c04 + +0000000080002c2c : + 80002c2c: 00b00193 li gp,11 + 80002c30: 00000213 li tp,0 + 80002c34: 00f0009b addiw ra,zero,15 + 80002c38: 01c09093 slli ra,ra,0x1c + 80002c3c: 00f0011b addiw sp,zero,15 + 80002c40: 01c11113 slli sp,sp,0x1c + 80002c44: fff10113 addi sp,sp,-1 + 80002c48: 00000013 nop + 80002c4c: 00000013 nop + 80002c50: 2020e063 bltu ra,sp,80002e50 + 80002c54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c58: 00200293 li t0,2 + 80002c5c: fc521ce3 bne tp,t0,80002c34 + +0000000080002c60 : + 80002c60: 00c00193 li gp,12 + 80002c64: 00000213 li tp,0 + 80002c68: 00f0009b addiw ra,zero,15 + 80002c6c: 01c09093 slli ra,ra,0x1c + 80002c70: 00000013 nop + 80002c74: 00f0011b addiw sp,zero,15 + 80002c78: 01c11113 slli sp,sp,0x1c + 80002c7c: fff10113 addi sp,sp,-1 + 80002c80: 1c20e863 bltu ra,sp,80002e50 + 80002c84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c88: 00200293 li t0,2 + 80002c8c: fc521ee3 bne tp,t0,80002c68 + +0000000080002c90 : + 80002c90: 00d00193 li gp,13 + 80002c94: 00000213 li tp,0 + 80002c98: 00f0009b addiw ra,zero,15 + 80002c9c: 01c09093 slli ra,ra,0x1c + 80002ca0: 00000013 nop + 80002ca4: 00f0011b addiw sp,zero,15 + 80002ca8: 01c11113 slli sp,sp,0x1c + 80002cac: fff10113 addi sp,sp,-1 + 80002cb0: 00000013 nop + 80002cb4: 1820ee63 bltu ra,sp,80002e50 + 80002cb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cbc: 00200293 li t0,2 + 80002cc0: fc521ce3 bne tp,t0,80002c98 + +0000000080002cc4 : + 80002cc4: 00e00193 li gp,14 + 80002cc8: 00000213 li tp,0 + 80002ccc: 00f0009b addiw ra,zero,15 + 80002cd0: 01c09093 slli ra,ra,0x1c + 80002cd4: 00000013 nop + 80002cd8: 00000013 nop + 80002cdc: 00f0011b addiw sp,zero,15 + 80002ce0: 01c11113 slli sp,sp,0x1c + 80002ce4: fff10113 addi sp,sp,-1 + 80002ce8: 1620e463 bltu ra,sp,80002e50 + 80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf0: 00200293 li t0,2 + 80002cf4: fc521ce3 bne tp,t0,80002ccc + +0000000080002cf8 : + 80002cf8: 00f00193 li gp,15 + 80002cfc: 00000213 li tp,0 + 80002d00: 00f0009b addiw ra,zero,15 + 80002d04: 01c09093 slli ra,ra,0x1c + 80002d08: 00f0011b addiw sp,zero,15 + 80002d0c: 01c11113 slli sp,sp,0x1c + 80002d10: fff10113 addi sp,sp,-1 + 80002d14: 1220ee63 bltu ra,sp,80002e50 + 80002d18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d1c: 00200293 li t0,2 + 80002d20: fe5210e3 bne tp,t0,80002d00 + +0000000080002d24 : + 80002d24: 01000193 li gp,16 + 80002d28: 00000213 li tp,0 + 80002d2c: 00f0009b addiw ra,zero,15 + 80002d30: 01c09093 slli ra,ra,0x1c + 80002d34: 00f0011b addiw sp,zero,15 + 80002d38: 01c11113 slli sp,sp,0x1c + 80002d3c: fff10113 addi sp,sp,-1 + 80002d40: 00000013 nop + 80002d44: 1020e663 bltu ra,sp,80002e50 + 80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d4c: 00200293 li t0,2 + 80002d50: fc521ee3 bne tp,t0,80002d2c + +0000000080002d54 : + 80002d54: 01100193 li gp,17 + 80002d58: 00000213 li tp,0 + 80002d5c: 00f0009b addiw ra,zero,15 + 80002d60: 01c09093 slli ra,ra,0x1c + 80002d64: 00f0011b addiw sp,zero,15 + 80002d68: 01c11113 slli sp,sp,0x1c + 80002d6c: fff10113 addi sp,sp,-1 + 80002d70: 00000013 nop + 80002d74: 00000013 nop + 80002d78: 0c20ec63 bltu ra,sp,80002e50 + 80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d80: 00200293 li t0,2 + 80002d84: fc521ce3 bne tp,t0,80002d5c + +0000000080002d88 : + 80002d88: 01200193 li gp,18 + 80002d8c: 00000213 li tp,0 + 80002d90: 00f0009b addiw ra,zero,15 + 80002d94: 01c09093 slli ra,ra,0x1c + 80002d98: 00000013 nop + 80002d9c: 00f0011b addiw sp,zero,15 + 80002da0: 01c11113 slli sp,sp,0x1c + 80002da4: fff10113 addi sp,sp,-1 + 80002da8: 0a20e463 bltu ra,sp,80002e50 + 80002dac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002db0: 00200293 li t0,2 + 80002db4: fc521ee3 bne tp,t0,80002d90 + +0000000080002db8 : + 80002db8: 01300193 li gp,19 + 80002dbc: 00000213 li tp,0 + 80002dc0: 00f0009b addiw ra,zero,15 + 80002dc4: 01c09093 slli ra,ra,0x1c + 80002dc8: 00000013 nop + 80002dcc: 00f0011b addiw sp,zero,15 + 80002dd0: 01c11113 slli sp,sp,0x1c + 80002dd4: fff10113 addi sp,sp,-1 + 80002dd8: 00000013 nop + 80002ddc: 0620ea63 bltu ra,sp,80002e50 + 80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de4: 00200293 li t0,2 + 80002de8: fc521ce3 bne tp,t0,80002dc0 + +0000000080002dec : + 80002dec: 01400193 li gp,20 + 80002df0: 00000213 li tp,0 + 80002df4: 00f0009b addiw ra,zero,15 + 80002df8: 01c09093 slli ra,ra,0x1c + 80002dfc: 00000013 nop + 80002e00: 00000013 nop + 80002e04: 00f0011b addiw sp,zero,15 + 80002e08: 01c11113 slli sp,sp,0x1c + 80002e0c: fff10113 addi sp,sp,-1 + 80002e10: 0420e063 bltu ra,sp,80002e50 + 80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e18: 00200293 li t0,2 + 80002e1c: fc521ce3 bne tp,t0,80002df4 + +0000000080002e20 : + 80002e20: 00100093 li ra,1 + 80002e24: 00106a63 bltu zero,ra,80002e38 + 80002e28: 00108093 addi ra,ra,1 + 80002e2c: 00108093 addi ra,ra,1 + 80002e30: 00108093 addi ra,ra,1 + 80002e34: 00108093 addi ra,ra,1 + 80002e38: 00108093 addi ra,ra,1 + 80002e3c: 00108093 addi ra,ra,1 + 80002e40: 00300e93 li t4,3 + 80002e44: 01500193 li gp,21 + 80002e48: 01d09463 bne ra,t4,80002e50 + 80002e4c: 00301a63 bne zero,gp,80002e60 + +0000000080002e50 : + 80002e50: 00119513 slli a0,gp,0x1 + 80002e54: 00050063 beqz a0,80002e54 + 80002e58: 00156513 ori a0,a0,1 + 80002e5c: 00000073 ecall + +0000000080002e60 : + 80002e60: 00100513 li a0,1 + 80002e64: 00000073 ecall + 80002e68: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-bne b/Tests/isa/rv64ui-v-bne new file mode 100644 index 0000000..913f574 Binary files /dev/null and b/Tests/isa/rv64ui-v-bne differ diff --git a/Tests/isa/rv64ui-v-bne.dump b/Tests/isa/rv64ui-v-bne.dump new file mode 100644 index 0000000..63ec288 --- /dev/null +++ b/Tests/isa/rv64ui-v-bne.dump @@ -0,0 +1,1055 @@ + +rv64ui-v-bne: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 95068693 addi a3,a3,-1712 # 80002da8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 98460613 addi a2,a2,-1660 # 80002e38 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 94c60613 addi a2,a2,-1716 # 80002e50 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 89c68693 addi a3,a3,-1892 # 80002df0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8b868693 addi a3,a3,-1864 # 80002f28 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 83860613 addi a2,a2,-1992 # 80002f00 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 76c68693 addi a3,a3,1900 # 80002f58 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 68c68693 addi a3,a3,1676 # 80002ec8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 61c68693 addi a3,a3,1564 # 80002e90 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02600793 li a5,38 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0802e7b7 lui a5,0x802e + 80002a70: 000805b7 lui a1,0x80 + 80002a74: d7978793 addi a5,a5,-647 # 802dd79 <_start-0x77fd2287> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000093 li ra,0 + 80002ad0: 00100113 li sp,1 + 80002ad4: 00209663 bne ra,sp,80002ae0 + 80002ad8: 2a301a63 bne zero,gp,80002d8c + 80002adc: 00301663 bne zero,gp,80002ae8 + 80002ae0: fe209ee3 bne ra,sp,80002adc + 80002ae4: 2a301463 bne zero,gp,80002d8c + +0000000080002ae8 : + 80002ae8: 00300193 li gp,3 + 80002aec: 00100093 li ra,1 + 80002af0: 00000113 li sp,0 + 80002af4: 00209663 bne ra,sp,80002b00 + 80002af8: 28301a63 bne zero,gp,80002d8c + 80002afc: 00301663 bne zero,gp,80002b08 + 80002b00: fe209ee3 bne ra,sp,80002afc + 80002b04: 28301463 bne zero,gp,80002d8c + +0000000080002b08 : + 80002b08: 00400193 li gp,4 + 80002b0c: fff00093 li ra,-1 + 80002b10: 00100113 li sp,1 + 80002b14: 00209663 bne ra,sp,80002b20 + 80002b18: 26301a63 bne zero,gp,80002d8c + 80002b1c: 00301663 bne zero,gp,80002b28 + 80002b20: fe209ee3 bne ra,sp,80002b1c + 80002b24: 26301463 bne zero,gp,80002d8c + +0000000080002b28 : + 80002b28: 00500193 li gp,5 + 80002b2c: 00100093 li ra,1 + 80002b30: fff00113 li sp,-1 + 80002b34: 00209663 bne ra,sp,80002b40 + 80002b38: 24301a63 bne zero,gp,80002d8c + 80002b3c: 00301663 bne zero,gp,80002b48 + 80002b40: fe209ee3 bne ra,sp,80002b3c + 80002b44: 24301463 bne zero,gp,80002d8c + +0000000080002b48 : + 80002b48: 00600193 li gp,6 + 80002b4c: 00000093 li ra,0 + 80002b50: 00000113 li sp,0 + 80002b54: 00209463 bne ra,sp,80002b5c + 80002b58: 00301463 bne zero,gp,80002b60 + 80002b5c: 22301863 bne zero,gp,80002d8c + 80002b60: fe209ee3 bne ra,sp,80002b5c + +0000000080002b64 : + 80002b64: 00700193 li gp,7 + 80002b68: 00100093 li ra,1 + 80002b6c: 00100113 li sp,1 + 80002b70: 00209463 bne ra,sp,80002b78 + 80002b74: 00301463 bne zero,gp,80002b7c + 80002b78: 20301a63 bne zero,gp,80002d8c + 80002b7c: fe209ee3 bne ra,sp,80002b78 + +0000000080002b80 : + 80002b80: 00800193 li gp,8 + 80002b84: fff00093 li ra,-1 + 80002b88: fff00113 li sp,-1 + 80002b8c: 00209463 bne ra,sp,80002b94 + 80002b90: 00301463 bne zero,gp,80002b98 + 80002b94: 1e301c63 bne zero,gp,80002d8c + 80002b98: fe209ee3 bne ra,sp,80002b94 + +0000000080002b9c : + 80002b9c: 00900193 li gp,9 + 80002ba0: 00000213 li tp,0 + 80002ba4: 00000093 li ra,0 + 80002ba8: 00000113 li sp,0 + 80002bac: 1e209063 bne ra,sp,80002d8c + 80002bb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bb4: 00200293 li t0,2 + 80002bb8: fe5216e3 bne tp,t0,80002ba4 + +0000000080002bbc : + 80002bbc: 00a00193 li gp,10 + 80002bc0: 00000213 li tp,0 + 80002bc4: 00000093 li ra,0 + 80002bc8: 00000113 li sp,0 + 80002bcc: 00000013 nop + 80002bd0: 1a209e63 bne ra,sp,80002d8c + 80002bd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bd8: 00200293 li t0,2 + 80002bdc: fe5214e3 bne tp,t0,80002bc4 + +0000000080002be0 : + 80002be0: 00b00193 li gp,11 + 80002be4: 00000213 li tp,0 + 80002be8: 00000093 li ra,0 + 80002bec: 00000113 li sp,0 + 80002bf0: 00000013 nop + 80002bf4: 00000013 nop + 80002bf8: 18209a63 bne ra,sp,80002d8c + 80002bfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c00: 00200293 li t0,2 + 80002c04: fe5212e3 bne tp,t0,80002be8 + +0000000080002c08 : + 80002c08: 00c00193 li gp,12 + 80002c0c: 00000213 li tp,0 + 80002c10: 00000093 li ra,0 + 80002c14: 00000013 nop + 80002c18: 00000113 li sp,0 + 80002c1c: 16209863 bne ra,sp,80002d8c + 80002c20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c24: 00200293 li t0,2 + 80002c28: fe5214e3 bne tp,t0,80002c10 + +0000000080002c2c : + 80002c2c: 00d00193 li gp,13 + 80002c30: 00000213 li tp,0 + 80002c34: 00000093 li ra,0 + 80002c38: 00000013 nop + 80002c3c: 00000113 li sp,0 + 80002c40: 00000013 nop + 80002c44: 14209463 bne ra,sp,80002d8c + 80002c48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c4c: 00200293 li t0,2 + 80002c50: fe5212e3 bne tp,t0,80002c34 + +0000000080002c54 : + 80002c54: 00e00193 li gp,14 + 80002c58: 00000213 li tp,0 + 80002c5c: 00000093 li ra,0 + 80002c60: 00000013 nop + 80002c64: 00000013 nop + 80002c68: 00000113 li sp,0 + 80002c6c: 12209063 bne ra,sp,80002d8c + 80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c74: 00200293 li t0,2 + 80002c78: fe5212e3 bne tp,t0,80002c5c + +0000000080002c7c : + 80002c7c: 00f00193 li gp,15 + 80002c80: 00000213 li tp,0 + 80002c84: 00000093 li ra,0 + 80002c88: 00000113 li sp,0 + 80002c8c: 10209063 bne ra,sp,80002d8c + 80002c90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c94: 00200293 li t0,2 + 80002c98: fe5216e3 bne tp,t0,80002c84 + +0000000080002c9c : + 80002c9c: 01000193 li gp,16 + 80002ca0: 00000213 li tp,0 + 80002ca4: 00000093 li ra,0 + 80002ca8: 00000113 li sp,0 + 80002cac: 00000013 nop + 80002cb0: 0c209e63 bne ra,sp,80002d8c + 80002cb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cb8: 00200293 li t0,2 + 80002cbc: fe5214e3 bne tp,t0,80002ca4 + +0000000080002cc0 : + 80002cc0: 01100193 li gp,17 + 80002cc4: 00000213 li tp,0 + 80002cc8: 00000093 li ra,0 + 80002ccc: 00000113 li sp,0 + 80002cd0: 00000013 nop + 80002cd4: 00000013 nop + 80002cd8: 0a209a63 bne ra,sp,80002d8c + 80002cdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce0: 00200293 li t0,2 + 80002ce4: fe5212e3 bne tp,t0,80002cc8 + +0000000080002ce8 : + 80002ce8: 01200193 li gp,18 + 80002cec: 00000213 li tp,0 + 80002cf0: 00000093 li ra,0 + 80002cf4: 00000013 nop + 80002cf8: 00000113 li sp,0 + 80002cfc: 08209863 bne ra,sp,80002d8c + 80002d00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d04: 00200293 li t0,2 + 80002d08: fe5214e3 bne tp,t0,80002cf0 + +0000000080002d0c : + 80002d0c: 01300193 li gp,19 + 80002d10: 00000213 li tp,0 + 80002d14: 00000093 li ra,0 + 80002d18: 00000013 nop + 80002d1c: 00000113 li sp,0 + 80002d20: 00000013 nop + 80002d24: 06209463 bne ra,sp,80002d8c + 80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d2c: 00200293 li t0,2 + 80002d30: fe5212e3 bne tp,t0,80002d14 + +0000000080002d34 : + 80002d34: 01400193 li gp,20 + 80002d38: 00000213 li tp,0 + 80002d3c: 00000093 li ra,0 + 80002d40: 00000013 nop + 80002d44: 00000013 nop + 80002d48: 00000113 li sp,0 + 80002d4c: 04209063 bne ra,sp,80002d8c + 80002d50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d54: 00200293 li t0,2 + 80002d58: fe5212e3 bne tp,t0,80002d3c + +0000000080002d5c : + 80002d5c: 00100093 li ra,1 + 80002d60: 00009a63 bnez ra,80002d74 + 80002d64: 00108093 addi ra,ra,1 + 80002d68: 00108093 addi ra,ra,1 + 80002d6c: 00108093 addi ra,ra,1 + 80002d70: 00108093 addi ra,ra,1 + 80002d74: 00108093 addi ra,ra,1 + 80002d78: 00108093 addi ra,ra,1 + 80002d7c: 00300e93 li t4,3 + 80002d80: 01500193 li gp,21 + 80002d84: 01d09463 bne ra,t4,80002d8c + 80002d88: 00301a63 bne zero,gp,80002d9c + +0000000080002d8c : + 80002d8c: 00119513 slli a0,gp,0x1 + 80002d90: 00050063 beqz a0,80002d90 + 80002d94: 00156513 ori a0,a0,1 + 80002d98: 00000073 ecall + +0000000080002d9c : + 80002d9c: 00100513 li a0,1 + 80002da0: 00000073 ecall + 80002da4: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-fence_i b/Tests/isa/rv64ui-v-fence_i new file mode 100644 index 0000000..01397eb Binary files /dev/null and b/Tests/isa/rv64ui-v-fence_i differ diff --git a/Tests/isa/rv64ui-v-fence_i.dump b/Tests/isa/rv64ui-v-fence_i.dump new file mode 100644 index 0000000..b559930 --- /dev/null +++ b/Tests/isa/rv64ui-v-fence_i.dump @@ -0,0 +1,959 @@ + +rv64ui-v-fence_i: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: ad050513 addi a0,a0,-1328 # 80002b00 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 7d868693 addi a3,a3,2008 # 80002c30 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 80c60613 addi a2,a2,-2036 # 80002cc0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 7d460613 addi a2,a2,2004 # 80002cd8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 72468693 addi a3,a3,1828 # 80002c78 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 74068693 addi a3,a3,1856 # 80002db0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 6c060613 addi a2,a2,1728 # 80002d88 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 5f468693 addi a3,a3,1524 # 80002de0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 51468693 addi a3,a3,1300 # 80002d50 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 4a468693 addi a3,a3,1188 # 80002d18 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03300793 li a5,51 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 032fe7b7 lui a5,0x32fe + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 19f78793 addi a5,a5,415 # 32fe19f <_start-0x7cd01e61> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + 80002ac8: 0000 unimp + 80002aca: 0000 unimp + 80002acc: 0000 unimp + 80002ace: 0000 unimp + 80002ad0: 0000 unimp + 80002ad2: 0000 unimp + 80002ad4: 0000 unimp + 80002ad6: 0000 unimp + 80002ad8: 0000 unimp + 80002ada: 0000 unimp + 80002adc: 0000 unimp + 80002ade: 0000 unimp + 80002ae0: 0000 unimp + 80002ae2: 0000 unimp + 80002ae4: 0000 unimp + 80002ae6: 0000 unimp + 80002ae8: 0000 unimp + 80002aea: 0000 unimp + 80002aec: 0000 unimp + 80002aee: 0000 unimp + 80002af0: 0000 unimp + 80002af2: 0000 unimp + 80002af4: 0000 unimp + 80002af6: 0000 unimp + 80002af8: 0000 unimp + 80002afa: 0000 unimp + 80002afc: 0000 unimp + 80002afe: 0000 unimp + +0000000080002b00 : + 80002b00: 06f00693 li a3,111 + 80002b04: 00000517 auipc a0,0x0 + 80002b08: 4fc51503 lh a0,1276(a0) # 80003000 + 80002b0c: 00000597 auipc a1,0x0 + 80002b10: 4f659583 lh a1,1270(a1) # 80003002 + 80002b14: 00000013 nop + 80002b18: 00000013 nop + 80002b1c: 00000013 nop + 80002b20: 00000013 nop + 80002b24: 00000013 nop + 80002b28: 00000013 nop + 80002b2c: 00000013 nop + 80002b30: 00000013 nop + 80002b34: 00000013 nop + 80002b38: 00000013 nop + 80002b3c: 00000013 nop + 80002b40: 00000297 auipc t0,0x0 + 80002b44: 00a29a23 sh a0,20(t0) # 80002b54 + 80002b48: 00000297 auipc t0,0x0 + 80002b4c: 00b29723 sh a1,14(t0) # 80002b56 + 80002b50: 0000100f fence.i + 80002b54: 0de68693 addi a3,a3,222 + +0000000080002b58 : + 80002b58: 00000013 nop + 80002b5c: 1bc00e93 li t4,444 + 80002b60: 00200193 li gp,2 + 80002b64: 07d69a63 bne a3,t4,80002bd8 + 80002b68: 06400713 li a4,100 + 80002b6c: fff70713 addi a4,a4,-1 + 80002b70: fe071ee3 bnez a4,80002b6c + 80002b74: 00000297 auipc t0,0x0 + 80002b78: 04a29623 sh a0,76(t0) # 80002bc0 + 80002b7c: 00000297 auipc t0,0x0 + 80002b80: 04b29323 sh a1,70(t0) # 80002bc2 + 80002b84: 0000100f fence.i + 80002b88: 00000013 nop + 80002b8c: 00000013 nop + 80002b90: 00000013 nop + 80002b94: 00000013 nop + 80002b98: 00000013 nop + 80002b9c: 00000013 nop + 80002ba0: 00000013 nop + 80002ba4: 00000013 nop + 80002ba8: 00000013 nop + 80002bac: 00000013 nop + 80002bb0: 00000013 nop + 80002bb4: 00000013 nop + 80002bb8: 00000013 nop + 80002bbc: 00000013 nop + 80002bc0: 22b68693 addi a3,a3,555 + +0000000080002bc4 : + 80002bc4: 00000013 nop + 80002bc8: 30900e93 li t4,777 + 80002bcc: 00300193 li gp,3 + 80002bd0: 01d69463 bne a3,t4,80002bd8 + 80002bd4: 00301a63 bne zero,gp,80002be8 + +0000000080002bd8 : + 80002bd8: 00119513 slli a0,gp,0x1 + 80002bdc: 00050063 beqz a0,80002bdc + 80002be0: 00156513 ori a0,a0,1 + 80002be4: 00000073 ecall + +0000000080002be8 : + 80002be8: 00100513 li a0,1 + 80002bec: 00000073 ecall + 80002bf0: c0001073 unimp + 80002bf4: 0000 unimp + 80002bf6: 0000 unimp + 80002bf8: 0000 unimp + 80002bfa: 0000 unimp + 80002bfc: 0000 unimp + 80002bfe: 0000 unimp + 80002c00: 0000 unimp + 80002c02: 0000 unimp + 80002c04: 0000 unimp + 80002c06: 0000 unimp + 80002c08: 0000 unimp + 80002c0a: 0000 unimp + 80002c0c: 0000 unimp + 80002c0e: 0000 unimp + 80002c10: 0000 unimp + 80002c12: 0000 unimp + 80002c14: 0000 unimp + 80002c16: 0000 unimp + 80002c18: 0000 unimp + 80002c1a: 0000 unimp + 80002c1c: 0000 unimp + 80002c1e: 0000 unimp + 80002c20: 0000 unimp + 80002c22: 0000 unimp + 80002c24: 0000 unimp + 80002c26: 0000 unimp + 80002c28: 0000 unimp + 80002c2a: 0000 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 14d68693 addi a3,a3,333 diff --git a/Tests/isa/rv64ui-v-jal b/Tests/isa/rv64ui-v-jal new file mode 100644 index 0000000..5f957a2 Binary files /dev/null and b/Tests/isa/rv64ui-v-jal differ diff --git a/Tests/isa/rv64ui-v-jal.dump b/Tests/isa/rv64ui-v-jal.dump new file mode 100644 index 0000000..a22031d --- /dev/null +++ b/Tests/isa/rv64ui-v-jal.dump @@ -0,0 +1,867 @@ + +rv64ui-v-jal: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6e068693 addi a3,a3,1760 # 80002b38 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 71460613 addi a2,a2,1812 # 80002bc8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6dc60613 addi a2,a2,1756 # 80002be0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 62c68693 addi a3,a3,1580 # 80002b80 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 64868693 addi a3,a3,1608 # 80002cb8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5c860613 addi a2,a2,1480 # 80002c90 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 4fc68693 addi a3,a3,1276 # 80002ce8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 41c68693 addi a3,a3,1052 # 80002c58 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3ac68693 addi a3,a3,940 # 80002c20 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02d00793 li a5,45 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0e1d97b7 lui a5,0xe1d9 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: ad378793 addi a5,a5,-1325 # e1d8ad3 <_start-0x71e2752d> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000093 li ra,0 + 80002ad0: 0100026f jal tp,80002ae0 + +0000000080002ad4 : + 80002ad4: 00000013 nop + 80002ad8: 00000013 nop + 80002adc: 0400006f j 80002b1c + +0000000080002ae0 : + 80002ae0: 00000117 auipc sp,0x0 + 80002ae4: ff410113 addi sp,sp,-12 # 80002ad4 + 80002ae8: 02411a63 bne sp,tp,80002b1c + +0000000080002aec : + 80002aec: 00100093 li ra,1 + 80002af0: 0140006f j 80002b04 + 80002af4: 00108093 addi ra,ra,1 + 80002af8: 00108093 addi ra,ra,1 + 80002afc: 00108093 addi ra,ra,1 + 80002b00: 00108093 addi ra,ra,1 + 80002b04: 00108093 addi ra,ra,1 + 80002b08: 00108093 addi ra,ra,1 + 80002b0c: 00300e93 li t4,3 + 80002b10: 00300193 li gp,3 + 80002b14: 01d09463 bne ra,t4,80002b1c + 80002b18: 00301a63 bne zero,gp,80002b2c + +0000000080002b1c : + 80002b1c: 00119513 slli a0,gp,0x1 + 80002b20: 00050063 beqz a0,80002b20 + 80002b24: 00156513 ori a0,a0,1 + 80002b28: 00000073 ecall + +0000000080002b2c : + 80002b2c: 00100513 li a0,1 + 80002b30: 00000073 ecall + 80002b34: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-jalr b/Tests/isa/rv64ui-v-jalr new file mode 100644 index 0000000..8ab55d2 Binary files /dev/null and b/Tests/isa/rv64ui-v-jalr differ diff --git a/Tests/isa/rv64ui-v-jalr.dump b/Tests/isa/rv64ui-v-jalr.dump new file mode 100644 index 0000000..4b43b16 --- /dev/null +++ b/Tests/isa/rv64ui-v-jalr.dump @@ -0,0 +1,905 @@ + +rv64ui-v-jalr: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 76068693 addi a3,a3,1888 # 80002bb8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 79460613 addi a2,a2,1940 # 80002c48 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 75c60613 addi a2,a2,1884 # 80002c60 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6ac68693 addi a3,a3,1708 # 80002c00 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6c868693 addi a3,a3,1736 # 80002d38 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 64860613 addi a2,a2,1608 # 80002d10 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 57c68693 addi a3,a3,1404 # 80002d68 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 49c68693 addi a3,a3,1180 # 80002cd8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 42c68693 addi a3,a3,1068 # 80002ca0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01600793 li a5,22 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 044267b7 lui a5,0x4426 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 9b478793 addi a5,a5,-1612 # 44259b4 <_start-0x7bbda64c> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00200193 li gp,2 + 80002acc: 00000293 li t0,0 + 80002ad0: 00000317 auipc t1,0x0 + 80002ad4: 01030313 addi t1,t1,16 # 80002ae0 + 80002ad8: 000302e7 jalr t0,t1 + +0000000080002adc : + 80002adc: 0c00006f j 80002b9c + +0000000080002ae0 : + 80002ae0: 00000317 auipc t1,0x0 + 80002ae4: ffc30313 addi t1,t1,-4 # 80002adc + 80002ae8: 0a629a63 bne t0,t1,80002b9c + +0000000080002aec : + 80002aec: 00400193 li gp,4 + 80002af0: 00000213 li tp,0 + 80002af4: 00000317 auipc t1,0x0 + 80002af8: 01030313 addi t1,t1,16 # 80002b04 + 80002afc: 000309e7 jalr s3,t1 + 80002b00: 08301e63 bne zero,gp,80002b9c + 80002b04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002b08: 00200293 li t0,2 + 80002b0c: fe5214e3 bne tp,t0,80002af4 + +0000000080002b10 : + 80002b10: 00500193 li gp,5 + 80002b14: 00000213 li tp,0 + 80002b18: 00000317 auipc t1,0x0 + 80002b1c: 01430313 addi t1,t1,20 # 80002b2c + 80002b20: 00000013 nop + 80002b24: 000309e7 jalr s3,t1 + 80002b28: 06301a63 bne zero,gp,80002b9c + 80002b2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002b30: 00200293 li t0,2 + 80002b34: fe5212e3 bne tp,t0,80002b18 + +0000000080002b38 : + 80002b38: 00600193 li gp,6 + 80002b3c: 00000213 li tp,0 + 80002b40: 00000317 auipc t1,0x0 + 80002b44: 01830313 addi t1,t1,24 # 80002b58 + 80002b48: 00000013 nop + 80002b4c: 00000013 nop + 80002b50: 000309e7 jalr s3,t1 + 80002b54: 04301463 bne zero,gp,80002b9c + 80002b58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002b5c: 00200293 li t0,2 + 80002b60: fe5210e3 bne tp,t0,80002b40 + +0000000080002b64 : + 80002b64: 00100293 li t0,1 + 80002b68: 00000317 auipc t1,0x0 + 80002b6c: 01c30313 addi t1,t1,28 # 80002b84 + 80002b70: ffc30067 jr -4(t1) + 80002b74: 00128293 addi t0,t0,1 + 80002b78: 00128293 addi t0,t0,1 + 80002b7c: 00128293 addi t0,t0,1 + 80002b80: 00128293 addi t0,t0,1 + 80002b84: 00128293 addi t0,t0,1 + 80002b88: 00128293 addi t0,t0,1 + 80002b8c: 00400e93 li t4,4 + 80002b90: 00700193 li gp,7 + 80002b94: 01d29463 bne t0,t4,80002b9c + 80002b98: 00301a63 bne zero,gp,80002bac + +0000000080002b9c : + 80002b9c: 00119513 slli a0,gp,0x1 + 80002ba0: 00050063 beqz a0,80002ba0 + 80002ba4: 00156513 ori a0,a0,1 + 80002ba8: 00000073 ecall + +0000000080002bac : + 80002bac: 00100513 li a0,1 + 80002bb0: 00000073 ecall + 80002bb4: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-lb b/Tests/isa/rv64ui-v-lb new file mode 100644 index 0000000..ac5b192 Binary files /dev/null and b/Tests/isa/rv64ui-v-lb differ diff --git a/Tests/isa/rv64ui-v-lb.dump b/Tests/isa/rv64ui-v-lb.dump new file mode 100644 index 0000000..fc9d680 --- /dev/null +++ b/Tests/isa/rv64ui-v-lb.dump @@ -0,0 +1,1037 @@ + +rv64ui-v-lb: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 8d868693 addi a3,a3,-1832 # 80002d30 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 90c60613 addi a2,a2,-1780 # 80002dc0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 8d460613 addi a2,a2,-1836 # 80002dd8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 82468693 addi a3,a3,-2012 # 80002d78 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 84068693 addi a3,a3,-1984 # 80002eb0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7c060613 addi a2,a2,1984 # 80002e88 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 6f468693 addi a3,a3,1780 # 80002ee0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 61468693 addi a3,a3,1556 # 80002e50 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5a468693 addi a3,a3,1444 # 80002e18 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00600793 li a5,6 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0c1067b7 lui a5,0xc106 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 32278793 addi a5,a5,802 # c106322 <_start-0x73ef9cde> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000097 auipc ra,0x0 + 80002acc: 53808093 addi ra,ra,1336 # 80003000 + 80002ad0: 00008f03 lb t5,0(ra) + 80002ad4: fff00e93 li t4,-1 + 80002ad8: 00200193 li gp,2 + 80002adc: 23df1c63 bne t5,t4,80002d14 + +0000000080002ae0 : + 80002ae0: 00000097 auipc ra,0x0 + 80002ae4: 52008093 addi ra,ra,1312 # 80003000 + 80002ae8: 00108f03 lb t5,1(ra) + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 23df1063 bne t5,t4,80002d14 + +0000000080002af8 : + 80002af8: 00000097 auipc ra,0x0 + 80002afc: 50808093 addi ra,ra,1288 # 80003000 + 80002b00: 00208f03 lb t5,2(ra) + 80002b04: ff000e93 li t4,-16 + 80002b08: 00400193 li gp,4 + 80002b0c: 21df1463 bne t5,t4,80002d14 + +0000000080002b10 : + 80002b10: 00000097 auipc ra,0x0 + 80002b14: 4f008093 addi ra,ra,1264 # 80003000 + 80002b18: 00308f03 lb t5,3(ra) + 80002b1c: 00f00e93 li t4,15 + 80002b20: 00500193 li gp,5 + 80002b24: 1fdf1863 bne t5,t4,80002d14 + +0000000080002b28 : + 80002b28: 00000097 auipc ra,0x0 + 80002b2c: 4db08093 addi ra,ra,1243 # 80003003 + 80002b30: ffd08f03 lb t5,-3(ra) + 80002b34: fff00e93 li t4,-1 + 80002b38: 00600193 li gp,6 + 80002b3c: 1ddf1c63 bne t5,t4,80002d14 + +0000000080002b40 : + 80002b40: 00000097 auipc ra,0x0 + 80002b44: 4c308093 addi ra,ra,1219 # 80003003 + 80002b48: ffe08f03 lb t5,-2(ra) + 80002b4c: 00000e93 li t4,0 + 80002b50: 00700193 li gp,7 + 80002b54: 1ddf1063 bne t5,t4,80002d14 + +0000000080002b58 : + 80002b58: 00000097 auipc ra,0x0 + 80002b5c: 4ab08093 addi ra,ra,1195 # 80003003 + 80002b60: fff08f03 lb t5,-1(ra) + 80002b64: ff000e93 li t4,-16 + 80002b68: 00800193 li gp,8 + 80002b6c: 1bdf1463 bne t5,t4,80002d14 + +0000000080002b70 : + 80002b70: 00000097 auipc ra,0x0 + 80002b74: 49308093 addi ra,ra,1171 # 80003003 + 80002b78: 00008f03 lb t5,0(ra) + 80002b7c: 00f00e93 li t4,15 + 80002b80: 00900193 li gp,9 + 80002b84: 19df1863 bne t5,t4,80002d14 + +0000000080002b88 : + 80002b88: 00000097 auipc ra,0x0 + 80002b8c: 47808093 addi ra,ra,1144 # 80003000 + 80002b90: fe008093 addi ra,ra,-32 + 80002b94: 02008283 lb t0,32(ra) + 80002b98: fff00e93 li t4,-1 + 80002b9c: 00a00193 li gp,10 + 80002ba0: 17d29a63 bne t0,t4,80002d14 + +0000000080002ba4 : + 80002ba4: 00000097 auipc ra,0x0 + 80002ba8: 45c08093 addi ra,ra,1116 # 80003000 + 80002bac: ffa08093 addi ra,ra,-6 + 80002bb0: 00708283 lb t0,7(ra) + 80002bb4: 00000e93 li t4,0 + 80002bb8: 00b00193 li gp,11 + 80002bbc: 15d29c63 bne t0,t4,80002d14 + +0000000080002bc0 : + 80002bc0: 00c00193 li gp,12 + 80002bc4: 00000213 li tp,0 + 80002bc8: 00000097 auipc ra,0x0 + 80002bcc: 43908093 addi ra,ra,1081 # 80003001 + 80002bd0: 00108f03 lb t5,1(ra) + 80002bd4: 000f0313 mv t1,t5 + 80002bd8: ff000e93 li t4,-16 + 80002bdc: 13d31c63 bne t1,t4,80002d14 + 80002be0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002be4: 00200293 li t0,2 + 80002be8: fe5210e3 bne tp,t0,80002bc8 + +0000000080002bec : + 80002bec: 00d00193 li gp,13 + 80002bf0: 00000213 li tp,0 + 80002bf4: 00000097 auipc ra,0x0 + 80002bf8: 40e08093 addi ra,ra,1038 # 80003002 + 80002bfc: 00108f03 lb t5,1(ra) + 80002c00: 00000013 nop + 80002c04: 000f0313 mv t1,t5 + 80002c08: 00f00e93 li t4,15 + 80002c0c: 11d31463 bne t1,t4,80002d14 + 80002c10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c14: 00200293 li t0,2 + 80002c18: fc521ee3 bne tp,t0,80002bf4 + +0000000080002c1c : + 80002c1c: 00e00193 li gp,14 + 80002c20: 00000213 li tp,0 + 80002c24: 00000097 auipc ra,0x0 + 80002c28: 3dc08093 addi ra,ra,988 # 80003000 + 80002c2c: 00108f03 lb t5,1(ra) + 80002c30: 00000013 nop + 80002c34: 00000013 nop + 80002c38: 000f0313 mv t1,t5 + 80002c3c: 00000e93 li t4,0 + 80002c40: 0dd31a63 bne t1,t4,80002d14 + 80002c44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c48: 00200293 li t0,2 + 80002c4c: fc521ce3 bne tp,t0,80002c24 + +0000000080002c50 : + 80002c50: 00f00193 li gp,15 + 80002c54: 00000213 li tp,0 + 80002c58: 00000097 auipc ra,0x0 + 80002c5c: 3a908093 addi ra,ra,937 # 80003001 + 80002c60: 00108f03 lb t5,1(ra) + 80002c64: ff000e93 li t4,-16 + 80002c68: 0bdf1663 bne t5,t4,80002d14 + 80002c6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c70: 00200293 li t0,2 + 80002c74: fe5212e3 bne tp,t0,80002c58 + +0000000080002c78 : + 80002c78: 01000193 li gp,16 + 80002c7c: 00000213 li tp,0 + 80002c80: 00000097 auipc ra,0x0 + 80002c84: 38208093 addi ra,ra,898 # 80003002 + 80002c88: 00000013 nop + 80002c8c: 00108f03 lb t5,1(ra) + 80002c90: 00f00e93 li t4,15 + 80002c94: 09df1063 bne t5,t4,80002d14 + 80002c98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c9c: 00200293 li t0,2 + 80002ca0: fe5210e3 bne tp,t0,80002c80 + +0000000080002ca4 : + 80002ca4: 01100193 li gp,17 + 80002ca8: 00000213 li tp,0 + 80002cac: 00000097 auipc ra,0x0 + 80002cb0: 35408093 addi ra,ra,852 # 80003000 + 80002cb4: 00000013 nop + 80002cb8: 00000013 nop + 80002cbc: 00108f03 lb t5,1(ra) + 80002cc0: 00000e93 li t4,0 + 80002cc4: 05df1863 bne t5,t4,80002d14 + 80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ccc: 00200293 li t0,2 + 80002cd0: fc521ee3 bne tp,t0,80002cac + +0000000080002cd4 : + 80002cd4: 00000297 auipc t0,0x0 + 80002cd8: 32c28293 addi t0,t0,812 # 80003000 + 80002cdc: 00028103 lb sp,0(t0) + 80002ce0: 00200113 li sp,2 + 80002ce4: 00200e93 li t4,2 + 80002ce8: 01200193 li gp,18 + 80002cec: 03d11463 bne sp,t4,80002d14 + +0000000080002cf0 : + 80002cf0: 00000297 auipc t0,0x0 + 80002cf4: 31028293 addi t0,t0,784 # 80003000 + 80002cf8: 00028103 lb sp,0(t0) + 80002cfc: 00000013 nop + 80002d00: 00200113 li sp,2 + 80002d04: 00200e93 li t4,2 + 80002d08: 01300193 li gp,19 + 80002d0c: 01d11463 bne sp,t4,80002d14 + 80002d10: 00301a63 bne zero,gp,80002d24 + +0000000080002d14 : + 80002d14: 00119513 slli a0,gp,0x1 + 80002d18: 00050063 beqz a0,80002d18 + 80002d1c: 00156513 ori a0,a0,1 + 80002d20: 00000073 ecall + +0000000080002d24 : + 80002d24: 00100513 li a0,1 + 80002d28: 00000073 ecall + 80002d2c: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0xff + +0000000080003001 : + 80003001: sd s0,32(s0) + +0000000080003002 : + 80003002: addi a2,sp,988 + +0000000080003003 : + 80003003: 0f Address 0x0000000080003003 is out of bounds. + + 80003007: diff --git a/Tests/isa/rv64ui-v-lbu b/Tests/isa/rv64ui-v-lbu new file mode 100644 index 0000000..e829a5c Binary files /dev/null and b/Tests/isa/rv64ui-v-lbu differ diff --git a/Tests/isa/rv64ui-v-lbu.dump b/Tests/isa/rv64ui-v-lbu.dump new file mode 100644 index 0000000..8de55fb --- /dev/null +++ b/Tests/isa/rv64ui-v-lbu.dump @@ -0,0 +1,1037 @@ + +rv64ui-v-lbu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 8d868693 addi a3,a3,-1832 # 80002d30 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 90c60613 addi a2,a2,-1780 # 80002dc0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 8d460613 addi a2,a2,-1836 # 80002dd8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 82468693 addi a3,a3,-2012 # 80002d78 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 84068693 addi a3,a3,-1984 # 80002eb0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7c060613 addi a2,a2,1984 # 80002e88 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 6f468693 addi a3,a3,1780 # 80002ee0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 61468693 addi a3,a3,1556 # 80002e50 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5a468693 addi a3,a3,1444 # 80002e18 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00d00793 li a5,13 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 04c8f7b7 lui a5,0x4c8f + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 8a478793 addi a5,a5,-1884 # 4c8e8a4 <_start-0x7b37175c> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000097 auipc ra,0x0 + 80002acc: 53808093 addi ra,ra,1336 # 80003000 + 80002ad0: 0000cf03 lbu t5,0(ra) + 80002ad4: 0ff00e93 li t4,255 + 80002ad8: 00200193 li gp,2 + 80002adc: 23df1c63 bne t5,t4,80002d14 + +0000000080002ae0 : + 80002ae0: 00000097 auipc ra,0x0 + 80002ae4: 52008093 addi ra,ra,1312 # 80003000 + 80002ae8: 0010cf03 lbu t5,1(ra) + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 23df1063 bne t5,t4,80002d14 + +0000000080002af8 : + 80002af8: 00000097 auipc ra,0x0 + 80002afc: 50808093 addi ra,ra,1288 # 80003000 + 80002b00: 0020cf03 lbu t5,2(ra) + 80002b04: 0f000e93 li t4,240 + 80002b08: 00400193 li gp,4 + 80002b0c: 21df1463 bne t5,t4,80002d14 + +0000000080002b10 : + 80002b10: 00000097 auipc ra,0x0 + 80002b14: 4f008093 addi ra,ra,1264 # 80003000 + 80002b18: 0030cf03 lbu t5,3(ra) + 80002b1c: 00f00e93 li t4,15 + 80002b20: 00500193 li gp,5 + 80002b24: 1fdf1863 bne t5,t4,80002d14 + +0000000080002b28 : + 80002b28: 00000097 auipc ra,0x0 + 80002b2c: 4db08093 addi ra,ra,1243 # 80003003 + 80002b30: ffd0cf03 lbu t5,-3(ra) + 80002b34: 0ff00e93 li t4,255 + 80002b38: 00600193 li gp,6 + 80002b3c: 1ddf1c63 bne t5,t4,80002d14 + +0000000080002b40 : + 80002b40: 00000097 auipc ra,0x0 + 80002b44: 4c308093 addi ra,ra,1219 # 80003003 + 80002b48: ffe0cf03 lbu t5,-2(ra) + 80002b4c: 00000e93 li t4,0 + 80002b50: 00700193 li gp,7 + 80002b54: 1ddf1063 bne t5,t4,80002d14 + +0000000080002b58 : + 80002b58: 00000097 auipc ra,0x0 + 80002b5c: 4ab08093 addi ra,ra,1195 # 80003003 + 80002b60: fff0cf03 lbu t5,-1(ra) + 80002b64: 0f000e93 li t4,240 + 80002b68: 00800193 li gp,8 + 80002b6c: 1bdf1463 bne t5,t4,80002d14 + +0000000080002b70 : + 80002b70: 00000097 auipc ra,0x0 + 80002b74: 49308093 addi ra,ra,1171 # 80003003 + 80002b78: 0000cf03 lbu t5,0(ra) + 80002b7c: 00f00e93 li t4,15 + 80002b80: 00900193 li gp,9 + 80002b84: 19df1863 bne t5,t4,80002d14 + +0000000080002b88 : + 80002b88: 00000097 auipc ra,0x0 + 80002b8c: 47808093 addi ra,ra,1144 # 80003000 + 80002b90: fe008093 addi ra,ra,-32 + 80002b94: 0200c283 lbu t0,32(ra) + 80002b98: 0ff00e93 li t4,255 + 80002b9c: 00a00193 li gp,10 + 80002ba0: 17d29a63 bne t0,t4,80002d14 + +0000000080002ba4 : + 80002ba4: 00000097 auipc ra,0x0 + 80002ba8: 45c08093 addi ra,ra,1116 # 80003000 + 80002bac: ffa08093 addi ra,ra,-6 + 80002bb0: 0070c283 lbu t0,7(ra) + 80002bb4: 00000e93 li t4,0 + 80002bb8: 00b00193 li gp,11 + 80002bbc: 15d29c63 bne t0,t4,80002d14 + +0000000080002bc0 : + 80002bc0: 00c00193 li gp,12 + 80002bc4: 00000213 li tp,0 + 80002bc8: 00000097 auipc ra,0x0 + 80002bcc: 43908093 addi ra,ra,1081 # 80003001 + 80002bd0: 0010cf03 lbu t5,1(ra) + 80002bd4: 000f0313 mv t1,t5 + 80002bd8: 0f000e93 li t4,240 + 80002bdc: 13d31c63 bne t1,t4,80002d14 + 80002be0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002be4: 00200293 li t0,2 + 80002be8: fe5210e3 bne tp,t0,80002bc8 + +0000000080002bec : + 80002bec: 00d00193 li gp,13 + 80002bf0: 00000213 li tp,0 + 80002bf4: 00000097 auipc ra,0x0 + 80002bf8: 40e08093 addi ra,ra,1038 # 80003002 + 80002bfc: 0010cf03 lbu t5,1(ra) + 80002c00: 00000013 nop + 80002c04: 000f0313 mv t1,t5 + 80002c08: 00f00e93 li t4,15 + 80002c0c: 11d31463 bne t1,t4,80002d14 + 80002c10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c14: 00200293 li t0,2 + 80002c18: fc521ee3 bne tp,t0,80002bf4 + +0000000080002c1c : + 80002c1c: 00e00193 li gp,14 + 80002c20: 00000213 li tp,0 + 80002c24: 00000097 auipc ra,0x0 + 80002c28: 3dc08093 addi ra,ra,988 # 80003000 + 80002c2c: 0010cf03 lbu t5,1(ra) + 80002c30: 00000013 nop + 80002c34: 00000013 nop + 80002c38: 000f0313 mv t1,t5 + 80002c3c: 00000e93 li t4,0 + 80002c40: 0dd31a63 bne t1,t4,80002d14 + 80002c44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c48: 00200293 li t0,2 + 80002c4c: fc521ce3 bne tp,t0,80002c24 + +0000000080002c50 : + 80002c50: 00f00193 li gp,15 + 80002c54: 00000213 li tp,0 + 80002c58: 00000097 auipc ra,0x0 + 80002c5c: 3a908093 addi ra,ra,937 # 80003001 + 80002c60: 0010cf03 lbu t5,1(ra) + 80002c64: 0f000e93 li t4,240 + 80002c68: 0bdf1663 bne t5,t4,80002d14 + 80002c6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c70: 00200293 li t0,2 + 80002c74: fe5212e3 bne tp,t0,80002c58 + +0000000080002c78 : + 80002c78: 01000193 li gp,16 + 80002c7c: 00000213 li tp,0 + 80002c80: 00000097 auipc ra,0x0 + 80002c84: 38208093 addi ra,ra,898 # 80003002 + 80002c88: 00000013 nop + 80002c8c: 0010cf03 lbu t5,1(ra) + 80002c90: 00f00e93 li t4,15 + 80002c94: 09df1063 bne t5,t4,80002d14 + 80002c98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c9c: 00200293 li t0,2 + 80002ca0: fe5210e3 bne tp,t0,80002c80 + +0000000080002ca4 : + 80002ca4: 01100193 li gp,17 + 80002ca8: 00000213 li tp,0 + 80002cac: 00000097 auipc ra,0x0 + 80002cb0: 35408093 addi ra,ra,852 # 80003000 + 80002cb4: 00000013 nop + 80002cb8: 00000013 nop + 80002cbc: 0010cf03 lbu t5,1(ra) + 80002cc0: 00000e93 li t4,0 + 80002cc4: 05df1863 bne t5,t4,80002d14 + 80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ccc: 00200293 li t0,2 + 80002cd0: fc521ee3 bne tp,t0,80002cac + +0000000080002cd4 : + 80002cd4: 00000297 auipc t0,0x0 + 80002cd8: 32c28293 addi t0,t0,812 # 80003000 + 80002cdc: 0002c103 lbu sp,0(t0) + 80002ce0: 00200113 li sp,2 + 80002ce4: 00200e93 li t4,2 + 80002ce8: 01200193 li gp,18 + 80002cec: 03d11463 bne sp,t4,80002d14 + +0000000080002cf0 : + 80002cf0: 00000297 auipc t0,0x0 + 80002cf4: 31028293 addi t0,t0,784 # 80003000 + 80002cf8: 0002c103 lbu sp,0(t0) + 80002cfc: 00000013 nop + 80002d00: 00200113 li sp,2 + 80002d04: 00200e93 li t4,2 + 80002d08: 01300193 li gp,19 + 80002d0c: 01d11463 bne sp,t4,80002d14 + 80002d10: 00301a63 bne zero,gp,80002d24 + +0000000080002d14 : + 80002d14: 00119513 slli a0,gp,0x1 + 80002d18: 00050063 beqz a0,80002d18 + 80002d1c: 00156513 ori a0,a0,1 + 80002d20: 00000073 ecall + +0000000080002d24 : + 80002d24: 00100513 li a0,1 + 80002d28: 00000073 ecall + 80002d2c: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 0xff + +0000000080003001 : + 80003001: sd s0,32(s0) + +0000000080003002 : + 80003002: addi a2,sp,988 + +0000000080003003 : + 80003003: 0f Address 0x0000000080003003 is out of bounds. + + 80003007: diff --git a/Tests/isa/rv64ui-v-ld b/Tests/isa/rv64ui-v-ld new file mode 100644 index 0000000..121a344 Binary files /dev/null and b/Tests/isa/rv64ui-v-ld differ diff --git a/Tests/isa/rv64ui-v-ld.dump b/Tests/isa/rv64ui-v-ld.dump new file mode 100644 index 0000000..3d8b640 --- /dev/null +++ b/Tests/isa/rv64ui-v-ld.dump @@ -0,0 +1,1141 @@ + +rv64ui-v-ld: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: a5868693 addi a3,a3,-1448 # 80002eb0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: a8c60613 addi a2,a2,-1396 # 80002f40 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: a5460613 addi a2,a2,-1452 # 80002f58 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 9a468693 addi a3,a3,-1628 # 80002ef8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 9c068693 addi a3,a3,-1600 # 80003030 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 94060613 addi a2,a2,-1728 # 80003008 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 87468693 addi a3,a3,-1932 # 80003060 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 79468693 addi a3,a3,1940 # 80002fd0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 72468693 addi a3,a3,1828 # 80002f98 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 02d00793 li a5,45 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 055417b7 lui a5,0x5541 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: b2578793 addi a5,a5,-1243 # 5540b25 <_start-0x7aabf4db> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00001097 auipc ra,0x1 + 80002acc: 53808093 addi ra,ra,1336 # 80004000 + 80002ad0: 0000bf03 ld t5,0(ra) + 80002ad4: 00ff0eb7 lui t4,0xff0 + 80002ad8: 0ffe8e9b addiw t4,t4,255 + 80002adc: 010e9e93 slli t4,t4,0x10 + 80002ae0: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> + 80002ae4: 010e9e93 slli t4,t4,0x10 + 80002ae8: 0ffe8e93 addi t4,t4,255 + 80002aec: 00200193 li gp,2 + 80002af0: 3bdf1263 bne t5,t4,80002e94 + +0000000080002af4 : + 80002af4: 00001097 auipc ra,0x1 + 80002af8: 50c08093 addi ra,ra,1292 # 80004000 + 80002afc: 0080bf03 ld t5,8(ra) + 80002b00: ff010eb7 lui t4,0xff010 + 80002b04: f01e8e9b addiw t4,t4,-255 + 80002b08: 010e9e93 slli t4,t4,0x10 + 80002b0c: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f006711> + 80002b10: 010e9e93 slli t4,t4,0x10 + 80002b14: f00e8e93 addi t4,t4,-256 + 80002b18: 00300193 li gp,3 + 80002b1c: 37df1c63 bne t5,t4,80002e94 + +0000000080002b20 : + 80002b20: 00001097 auipc ra,0x1 + 80002b24: 4e008093 addi ra,ra,1248 # 80004000 + 80002b28: 0100bf03 ld t5,16(ra) + 80002b2c: 00010eb7 lui t4,0x10 + 80002b30: f01e8e9b addiw t4,t4,-255 + 80002b34: 010e9e93 slli t4,t4,0x10 + 80002b38: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 80002b3c: 010e9e93 slli t4,t4,0x10 + 80002b40: f01e8e93 addi t4,t4,-255 + 80002b44: 00ce9e93 slli t4,t4,0xc + 80002b48: ff0e8e93 addi t4,t4,-16 + 80002b4c: 00400193 li gp,4 + 80002b50: 35df1263 bne t5,t4,80002e94 + +0000000080002b54 : + 80002b54: 00001097 auipc ra,0x1 + 80002b58: 4ac08093 addi ra,ra,1196 # 80004000 + 80002b5c: 0180bf03 ld t5,24(ra) + 80002b60: ffff0eb7 lui t4,0xffff0 + 80002b64: 0ffe8e9b addiw t4,t4,255 + 80002b68: 010e9e93 slli t4,t4,0x10 + 80002b6c: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffe690f> + 80002b70: 010e9e93 slli t4,t4,0x10 + 80002b74: 0ffe8e93 addi t4,t4,255 + 80002b78: 00ce9e93 slli t4,t4,0xc + 80002b7c: 00fe8e93 addi t4,t4,15 + 80002b80: 00500193 li gp,5 + 80002b84: 31df1863 bne t5,t4,80002e94 + +0000000080002b88 : + 80002b88: 00001097 auipc ra,0x1 + 80002b8c: 49008093 addi ra,ra,1168 # 80004018 + 80002b90: fe80bf03 ld t5,-24(ra) + 80002b94: 00ff0eb7 lui t4,0xff0 + 80002b98: 0ffe8e9b addiw t4,t4,255 + 80002b9c: 010e9e93 slli t4,t4,0x10 + 80002ba0: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> + 80002ba4: 010e9e93 slli t4,t4,0x10 + 80002ba8: 0ffe8e93 addi t4,t4,255 + 80002bac: 00600193 li gp,6 + 80002bb0: 2fdf1263 bne t5,t4,80002e94 + +0000000080002bb4 : + 80002bb4: 00001097 auipc ra,0x1 + 80002bb8: 46408093 addi ra,ra,1124 # 80004018 + 80002bbc: ff00bf03 ld t5,-16(ra) + 80002bc0: ff010eb7 lui t4,0xff010 + 80002bc4: f01e8e9b addiw t4,t4,-255 + 80002bc8: 010e9e93 slli t4,t4,0x10 + 80002bcc: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f006711> + 80002bd0: 010e9e93 slli t4,t4,0x10 + 80002bd4: f00e8e93 addi t4,t4,-256 + 80002bd8: 00700193 li gp,7 + 80002bdc: 2bdf1c63 bne t5,t4,80002e94 + +0000000080002be0 : + 80002be0: 00001097 auipc ra,0x1 + 80002be4: 43808093 addi ra,ra,1080 # 80004018 + 80002be8: ff80bf03 ld t5,-8(ra) + 80002bec: 00010eb7 lui t4,0x10 + 80002bf0: f01e8e9b addiw t4,t4,-255 + 80002bf4: 010e9e93 slli t4,t4,0x10 + 80002bf8: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 80002bfc: 010e9e93 slli t4,t4,0x10 + 80002c00: f01e8e93 addi t4,t4,-255 + 80002c04: 00ce9e93 slli t4,t4,0xc + 80002c08: ff0e8e93 addi t4,t4,-16 + 80002c0c: 00800193 li gp,8 + 80002c10: 29df1263 bne t5,t4,80002e94 + +0000000080002c14 : + 80002c14: 00001097 auipc ra,0x1 + 80002c18: 40408093 addi ra,ra,1028 # 80004018 + 80002c1c: 0000bf03 ld t5,0(ra) + 80002c20: ffff0eb7 lui t4,0xffff0 + 80002c24: 0ffe8e9b addiw t4,t4,255 + 80002c28: 010e9e93 slli t4,t4,0x10 + 80002c2c: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffe690f> + 80002c30: 010e9e93 slli t4,t4,0x10 + 80002c34: 0ffe8e93 addi t4,t4,255 + 80002c38: 00ce9e93 slli t4,t4,0xc + 80002c3c: 00fe8e93 addi t4,t4,15 + 80002c40: 00900193 li gp,9 + 80002c44: 25df1863 bne t5,t4,80002e94 + +0000000080002c48 : + 80002c48: 00001097 auipc ra,0x1 + 80002c4c: 3b808093 addi ra,ra,952 # 80004000 + 80002c50: fe008093 addi ra,ra,-32 + 80002c54: 0200b283 ld t0,32(ra) + 80002c58: 00ff0eb7 lui t4,0xff0 + 80002c5c: 0ffe8e9b addiw t4,t4,255 + 80002c60: 010e9e93 slli t4,t4,0x10 + 80002c64: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01> + 80002c68: 010e9e93 slli t4,t4,0x10 + 80002c6c: 0ffe8e93 addi t4,t4,255 + 80002c70: 00a00193 li gp,10 + 80002c74: 23d29063 bne t0,t4,80002e94 + +0000000080002c78 : + 80002c78: 00001097 auipc ra,0x1 + 80002c7c: 38808093 addi ra,ra,904 # 80004000 + 80002c80: ffd08093 addi ra,ra,-3 + 80002c84: 00b0b283 ld t0,11(ra) + 80002c88: ff010eb7 lui t4,0xff010 + 80002c8c: f01e8e9b addiw t4,t4,-255 + 80002c90: 010e9e93 slli t4,t4,0x10 + 80002c94: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f006711> + 80002c98: 010e9e93 slli t4,t4,0x10 + 80002c9c: f00e8e93 addi t4,t4,-256 + 80002ca0: 00b00193 li gp,11 + 80002ca4: 1fd29863 bne t0,t4,80002e94 + +0000000080002ca8 : + 80002ca8: 00c00193 li gp,12 + 80002cac: 00000213 li tp,0 + 80002cb0: 00001097 auipc ra,0x1 + 80002cb4: 35808093 addi ra,ra,856 # 80004008 + 80002cb8: 0080bf03 ld t5,8(ra) + 80002cbc: 000f0313 mv t1,t5 + 80002cc0: 00010eb7 lui t4,0x10 + 80002cc4: f01e8e9b addiw t4,t4,-255 + 80002cc8: 010e9e93 slli t4,t4,0x10 + 80002ccc: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 80002cd0: 010e9e93 slli t4,t4,0x10 + 80002cd4: f01e8e93 addi t4,t4,-255 + 80002cd8: 00ce9e93 slli t4,t4,0xc + 80002cdc: ff0e8e93 addi t4,t4,-16 + 80002ce0: 1bd31a63 bne t1,t4,80002e94 + 80002ce4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce8: 00200293 li t0,2 + 80002cec: fc5212e3 bne tp,t0,80002cb0 + +0000000080002cf0 : + 80002cf0: 00d00193 li gp,13 + 80002cf4: 00000213 li tp,0 + 80002cf8: 00001097 auipc ra,0x1 + 80002cfc: 31808093 addi ra,ra,792 # 80004010 + 80002d00: 0080bf03 ld t5,8(ra) + 80002d04: 00000013 nop + 80002d08: 000f0313 mv t1,t5 + 80002d0c: ffff0eb7 lui t4,0xffff0 + 80002d10: 0ffe8e9b addiw t4,t4,255 + 80002d14: 010e9e93 slli t4,t4,0x10 + 80002d18: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffe690f> + 80002d1c: 010e9e93 slli t4,t4,0x10 + 80002d20: 0ffe8e93 addi t4,t4,255 + 80002d24: 00ce9e93 slli t4,t4,0xc + 80002d28: 00fe8e93 addi t4,t4,15 + 80002d2c: 17d31463 bne t1,t4,80002e94 + 80002d30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d34: 00200293 li t0,2 + 80002d38: fc5210e3 bne tp,t0,80002cf8 + +0000000080002d3c : + 80002d3c: 00e00193 li gp,14 + 80002d40: 00000213 li tp,0 + 80002d44: 00001097 auipc ra,0x1 + 80002d48: 2bc08093 addi ra,ra,700 # 80004000 + 80002d4c: 0080bf03 ld t5,8(ra) + 80002d50: 00000013 nop + 80002d54: 00000013 nop + 80002d58: 000f0313 mv t1,t5 + 80002d5c: ff010eb7 lui t4,0xff010 + 80002d60: f01e8e9b addiw t4,t4,-255 + 80002d64: 010e9e93 slli t4,t4,0x10 + 80002d68: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f006711> + 80002d6c: 010e9e93 slli t4,t4,0x10 + 80002d70: f00e8e93 addi t4,t4,-256 + 80002d74: 13d31063 bne t1,t4,80002e94 + 80002d78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d7c: 00200293 li t0,2 + 80002d80: fc5212e3 bne tp,t0,80002d44 + +0000000080002d84 : + 80002d84: 00f00193 li gp,15 + 80002d88: 00000213 li tp,0 + 80002d8c: 00001097 auipc ra,0x1 + 80002d90: 27c08093 addi ra,ra,636 # 80004008 + 80002d94: 0080bf03 ld t5,8(ra) + 80002d98: 00010eb7 lui t4,0x10 + 80002d9c: f01e8e9b addiw t4,t4,-255 + 80002da0: 010e9e93 slli t4,t4,0x10 + 80002da4: f01e8e93 addi t4,t4,-255 # ff01 <_start-0x7fff00ff> + 80002da8: 010e9e93 slli t4,t4,0x10 + 80002dac: f01e8e93 addi t4,t4,-255 + 80002db0: 00ce9e93 slli t4,t4,0xc + 80002db4: ff0e8e93 addi t4,t4,-16 + 80002db8: 0ddf1e63 bne t5,t4,80002e94 + 80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dc0: 00200293 li t0,2 + 80002dc4: fc5214e3 bne tp,t0,80002d8c + +0000000080002dc8 : + 80002dc8: 01000193 li gp,16 + 80002dcc: 00000213 li tp,0 + 80002dd0: 00001097 auipc ra,0x1 + 80002dd4: 24008093 addi ra,ra,576 # 80004010 + 80002dd8: 00000013 nop + 80002ddc: 0080bf03 ld t5,8(ra) + 80002de0: ffff0eb7 lui t4,0xffff0 + 80002de4: 0ffe8e9b addiw t4,t4,255 + 80002de8: 010e9e93 slli t4,t4,0x10 + 80002dec: 0ffe8e93 addi t4,t4,255 # ffffffffffff00ff <_end+0xffffffff7ffe690f> + 80002df0: 010e9e93 slli t4,t4,0x10 + 80002df4: 0ffe8e93 addi t4,t4,255 + 80002df8: 00ce9e93 slli t4,t4,0xc + 80002dfc: 00fe8e93 addi t4,t4,15 + 80002e00: 09df1a63 bne t5,t4,80002e94 + 80002e04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e08: 00200293 li t0,2 + 80002e0c: fc5212e3 bne tp,t0,80002dd0 + +0000000080002e10 : + 80002e10: 01100193 li gp,17 + 80002e14: 00000213 li tp,0 + 80002e18: 00001097 auipc ra,0x1 + 80002e1c: 1e808093 addi ra,ra,488 # 80004000 + 80002e20: 00000013 nop + 80002e24: 00000013 nop + 80002e28: 0080bf03 ld t5,8(ra) + 80002e2c: ff010eb7 lui t4,0xff010 + 80002e30: f01e8e9b addiw t4,t4,-255 + 80002e34: 010e9e93 slli t4,t4,0x10 + 80002e38: f01e8e93 addi t4,t4,-255 # ffffffffff00ff01 <_end+0xffffffff7f006711> + 80002e3c: 010e9e93 slli t4,t4,0x10 + 80002e40: f00e8e93 addi t4,t4,-256 + 80002e44: 05df1863 bne t5,t4,80002e94 + 80002e48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e4c: 00200293 li t0,2 + 80002e50: fc5214e3 bne tp,t0,80002e18 + +0000000080002e54 : + 80002e54: 00001297 auipc t0,0x1 + 80002e58: 1ac28293 addi t0,t0,428 # 80004000 + 80002e5c: 0002b103 ld sp,0(t0) + 80002e60: 00200113 li sp,2 + 80002e64: 00200e93 li t4,2 + 80002e68: 01200193 li gp,18 + 80002e6c: 03d11463 bne sp,t4,80002e94 + +0000000080002e70 : + 80002e70: 00001297 auipc t0,0x1 + 80002e74: 19028293 addi t0,t0,400 # 80004000 + 80002e78: 0002b103 ld sp,0(t0) + 80002e7c: 00000013 nop + 80002e80: 00200113 li sp,2 + 80002e84: 00200e93 li t4,2 + 80002e88: 01300193 li gp,19 + 80002e8c: 01d11463 bne sp,t4,80002e94 + 80002e90: 00301a63 bne zero,gp,80002ea4 + +0000000080002e94 : + 80002e94: 00119513 slli a0,gp,0x1 + 80002e98: 00050063 beqz a0,80002e98 + 80002e9c: 00156513 ori a0,a0,1 + 80002ea0: 00000073 ecall + +0000000080002ea4 : + 80002ea4: 00100513 li a0,1 + 80002ea8: 00000073 ecall + 80002eac: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: 00ff 0xff + 80004002: 00ff 0xff + 80004004: 00ff 0xff + 80004006: 00ff 0xff + +0000000080004008 : + 80004008: ff00 sd s0,56(a4) + 8000400a: ff00 sd s0,56(a4) + 8000400c: ff00 sd s0,56(a4) + 8000400e: ff00 sd s0,56(a4) + +0000000080004010 : + 80004010: 0ff0 addi a2,sp,988 + 80004012: 0ff0 addi a2,sp,988 + 80004014: 0ff0 addi a2,sp,988 + 80004016: 0ff0 addi a2,sp,988 + +0000000080004018 : + 80004018: f00ff00f 0xf00ff00f + 8000401c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv64ui-v-lh b/Tests/isa/rv64ui-v-lh new file mode 100644 index 0000000..858f2af Binary files /dev/null and b/Tests/isa/rv64ui-v-lh differ diff --git a/Tests/isa/rv64ui-v-lh.dump b/Tests/isa/rv64ui-v-lh.dump new file mode 100644 index 0000000..50f2fdd --- /dev/null +++ b/Tests/isa/rv64ui-v-lh.dump @@ -0,0 +1,1043 @@ + +rv64ui-v-lh: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 8f868693 addi a3,a3,-1800 # 80002d50 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 92c60613 addi a2,a2,-1748 # 80002de0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 8f460613 addi a2,a2,-1804 # 80002df8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 84468693 addi a3,a3,-1980 # 80002d98 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 86068693 addi a3,a3,-1952 # 80002ed0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7e060613 addi a2,a2,2016 # 80002ea8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 71468693 addi a3,a3,1812 # 80002f00 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 63468693 addi a3,a3,1588 # 80002e70 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5c468693 addi a3,a3,1476 # 80002e38 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00700793 li a5,7 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 039687b7 lui a5,0x3968 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: c8378793 addi a5,a5,-893 # 3967c83 <_start-0x7c69837d> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000097 auipc ra,0x0 + 80002acc: 53808093 addi ra,ra,1336 # 80003000 + 80002ad0: 00009f03 lh t5,0(ra) + 80002ad4: 0ff00e93 li t4,255 + 80002ad8: 00200193 li gp,2 + 80002adc: 25df1c63 bne t5,t4,80002d34 + +0000000080002ae0 : + 80002ae0: 00000097 auipc ra,0x0 + 80002ae4: 52008093 addi ra,ra,1312 # 80003000 + 80002ae8: 00209f03 lh t5,2(ra) + 80002aec: f0000e93 li t4,-256 + 80002af0: 00300193 li gp,3 + 80002af4: 25df1063 bne t5,t4,80002d34 + +0000000080002af8 : + 80002af8: 00000097 auipc ra,0x0 + 80002afc: 50808093 addi ra,ra,1288 # 80003000 + 80002b00: 00409f03 lh t5,4(ra) + 80002b04: 00001eb7 lui t4,0x1 + 80002b08: ff0e8e9b addiw t4,t4,-16 + 80002b0c: 00400193 li gp,4 + 80002b10: 23df1263 bne t5,t4,80002d34 + +0000000080002b14 : + 80002b14: 00000097 auipc ra,0x0 + 80002b18: 4ec08093 addi ra,ra,1260 # 80003000 + 80002b1c: 00609f03 lh t5,6(ra) + 80002b20: fffffeb7 lui t4,0xfffff + 80002b24: 00fe8e9b addiw t4,t4,15 + 80002b28: 00500193 li gp,5 + 80002b2c: 21df1463 bne t5,t4,80002d34 + +0000000080002b30 : + 80002b30: 00000097 auipc ra,0x0 + 80002b34: 4d608093 addi ra,ra,1238 # 80003006 + 80002b38: ffa09f03 lh t5,-6(ra) + 80002b3c: 0ff00e93 li t4,255 + 80002b40: 00600193 li gp,6 + 80002b44: 1fdf1863 bne t5,t4,80002d34 + +0000000080002b48 : + 80002b48: 00000097 auipc ra,0x0 + 80002b4c: 4be08093 addi ra,ra,1214 # 80003006 + 80002b50: ffc09f03 lh t5,-4(ra) + 80002b54: f0000e93 li t4,-256 + 80002b58: 00700193 li gp,7 + 80002b5c: 1ddf1c63 bne t5,t4,80002d34 + +0000000080002b60 : + 80002b60: 00000097 auipc ra,0x0 + 80002b64: 4a608093 addi ra,ra,1190 # 80003006 + 80002b68: ffe09f03 lh t5,-2(ra) + 80002b6c: 00001eb7 lui t4,0x1 + 80002b70: ff0e8e9b addiw t4,t4,-16 + 80002b74: 00800193 li gp,8 + 80002b78: 1bdf1e63 bne t5,t4,80002d34 + +0000000080002b7c : + 80002b7c: 00000097 auipc ra,0x0 + 80002b80: 48a08093 addi ra,ra,1162 # 80003006 + 80002b84: 00009f03 lh t5,0(ra) + 80002b88: fffffeb7 lui t4,0xfffff + 80002b8c: 00fe8e9b addiw t4,t4,15 + 80002b90: 00900193 li gp,9 + 80002b94: 1bdf1063 bne t5,t4,80002d34 + +0000000080002b98 : + 80002b98: 00000097 auipc ra,0x0 + 80002b9c: 46808093 addi ra,ra,1128 # 80003000 + 80002ba0: fe008093 addi ra,ra,-32 + 80002ba4: 02009283 lh t0,32(ra) + 80002ba8: 0ff00e93 li t4,255 + 80002bac: 00a00193 li gp,10 + 80002bb0: 19d29263 bne t0,t4,80002d34 + +0000000080002bb4 : + 80002bb4: 00000097 auipc ra,0x0 + 80002bb8: 44c08093 addi ra,ra,1100 # 80003000 + 80002bbc: ffb08093 addi ra,ra,-5 + 80002bc0: 00709283 lh t0,7(ra) + 80002bc4: f0000e93 li t4,-256 + 80002bc8: 00b00193 li gp,11 + 80002bcc: 17d29463 bne t0,t4,80002d34 + +0000000080002bd0 : + 80002bd0: 00c00193 li gp,12 + 80002bd4: 00000213 li tp,0 + 80002bd8: 00000097 auipc ra,0x0 + 80002bdc: 42a08093 addi ra,ra,1066 # 80003002 + 80002be0: 00209f03 lh t5,2(ra) + 80002be4: 000f0313 mv t1,t5 + 80002be8: 00001eb7 lui t4,0x1 + 80002bec: ff0e8e9b addiw t4,t4,-16 + 80002bf0: 15d31263 bne t1,t4,80002d34 + 80002bf4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bf8: 00200293 li t0,2 + 80002bfc: fc521ee3 bne tp,t0,80002bd8 + +0000000080002c00 : + 80002c00: 00d00193 li gp,13 + 80002c04: 00000213 li tp,0 + 80002c08: 00000097 auipc ra,0x0 + 80002c0c: 3fc08093 addi ra,ra,1020 # 80003004 + 80002c10: 00209f03 lh t5,2(ra) + 80002c14: 00000013 nop + 80002c18: 000f0313 mv t1,t5 + 80002c1c: fffffeb7 lui t4,0xfffff + 80002c20: 00fe8e9b addiw t4,t4,15 + 80002c24: 11d31863 bne t1,t4,80002d34 + 80002c28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c2c: 00200293 li t0,2 + 80002c30: fc521ce3 bne tp,t0,80002c08 + +0000000080002c34 : + 80002c34: 00e00193 li gp,14 + 80002c38: 00000213 li tp,0 + 80002c3c: 00000097 auipc ra,0x0 + 80002c40: 3c408093 addi ra,ra,964 # 80003000 + 80002c44: 00209f03 lh t5,2(ra) + 80002c48: 00000013 nop + 80002c4c: 00000013 nop + 80002c50: 000f0313 mv t1,t5 + 80002c54: f0000e93 li t4,-256 + 80002c58: 0dd31e63 bne t1,t4,80002d34 + 80002c5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c60: 00200293 li t0,2 + 80002c64: fc521ce3 bne tp,t0,80002c3c + +0000000080002c68 : + 80002c68: 00f00193 li gp,15 + 80002c6c: 00000213 li tp,0 + 80002c70: 00000097 auipc ra,0x0 + 80002c74: 39208093 addi ra,ra,914 # 80003002 + 80002c78: 00209f03 lh t5,2(ra) + 80002c7c: 00001eb7 lui t4,0x1 + 80002c80: ff0e8e9b addiw t4,t4,-16 + 80002c84: 0bdf1863 bne t5,t4,80002d34 + 80002c88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c8c: 00200293 li t0,2 + 80002c90: fe5210e3 bne tp,t0,80002c70 + +0000000080002c94 : + 80002c94: 01000193 li gp,16 + 80002c98: 00000213 li tp,0 + 80002c9c: 00000097 auipc ra,0x0 + 80002ca0: 36808093 addi ra,ra,872 # 80003004 + 80002ca4: 00000013 nop + 80002ca8: 00209f03 lh t5,2(ra) + 80002cac: fffffeb7 lui t4,0xfffff + 80002cb0: 00fe8e9b addiw t4,t4,15 + 80002cb4: 09df1063 bne t5,t4,80002d34 + 80002cb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cbc: 00200293 li t0,2 + 80002cc0: fc521ee3 bne tp,t0,80002c9c + +0000000080002cc4 : + 80002cc4: 01100193 li gp,17 + 80002cc8: 00000213 li tp,0 + 80002ccc: 00000097 auipc ra,0x0 + 80002cd0: 33408093 addi ra,ra,820 # 80003000 + 80002cd4: 00000013 nop + 80002cd8: 00000013 nop + 80002cdc: 00209f03 lh t5,2(ra) + 80002ce0: f0000e93 li t4,-256 + 80002ce4: 05df1863 bne t5,t4,80002d34 + 80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cec: 00200293 li t0,2 + 80002cf0: fc521ee3 bne tp,t0,80002ccc + +0000000080002cf4 : + 80002cf4: 00000297 auipc t0,0x0 + 80002cf8: 30c28293 addi t0,t0,780 # 80003000 + 80002cfc: 00029103 lh sp,0(t0) + 80002d00: 00200113 li sp,2 + 80002d04: 00200e93 li t4,2 + 80002d08: 01200193 li gp,18 + 80002d0c: 03d11463 bne sp,t4,80002d34 + +0000000080002d10 : + 80002d10: 00000297 auipc t0,0x0 + 80002d14: 2f028293 addi t0,t0,752 # 80003000 + 80002d18: 00029103 lh sp,0(t0) + 80002d1c: 00000013 nop + 80002d20: 00200113 li sp,2 + 80002d24: 00200e93 li t4,2 + 80002d28: 01300193 li gp,19 + 80002d2c: 01d11463 bne sp,t4,80002d34 + 80002d30: 00301a63 bne zero,gp,80002d44 + +0000000080002d34 : + 80002d34: 00119513 slli a0,gp,0x1 + 80002d38: 00050063 beqz a0,80002d38 + 80002d3c: 00156513 ori a0,a0,1 + 80002d40: 00000073 ecall + +0000000080002d44 : + 80002d44: 00100513 li a0,1 + 80002d48: 00000073 ecall + 80002d4c: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 00ff 0xff + +0000000080003002 : + 80003002: ff00 sd s0,56(a4) + +0000000080003004 : + 80003004: 0ff0 addi a2,sp,988 + +0000000080003006 : + 80003006: 0xf00f diff --git a/Tests/isa/rv64ui-v-lhu b/Tests/isa/rv64ui-v-lhu new file mode 100644 index 0000000..a4456f1 Binary files /dev/null and b/Tests/isa/rv64ui-v-lhu differ diff --git a/Tests/isa/rv64ui-v-lhu.dump b/Tests/isa/rv64ui-v-lhu.dump new file mode 100644 index 0000000..45585fe --- /dev/null +++ b/Tests/isa/rv64ui-v-lhu.dump @@ -0,0 +1,1048 @@ + +rv64ui-v-lhu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 91068693 addi a3,a3,-1776 # 80002d68 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 94460613 addi a2,a2,-1724 # 80002df8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 90c60613 addi a2,a2,-1780 # 80002e10 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 85c68693 addi a3,a3,-1956 # 80002db0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 87868693 addi a3,a3,-1928 # 80002ee8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7f860613 addi a2,a2,2040 # 80002ec0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 72c68693 addi a3,a3,1836 # 80002f18 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 64c68693 addi a3,a3,1612 # 80002e88 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5dc68693 addi a3,a3,1500 # 80002e50 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03b00793 li a5,59 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 007667b7 lui a5,0x766 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: efb78793 addi a5,a5,-261 # 765efb <_start-0x7f89a105> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000097 auipc ra,0x0 + 80002acc: 53808093 addi ra,ra,1336 # 80003000 + 80002ad0: 0000df03 lhu t5,0(ra) + 80002ad4: 0ff00e93 li t4,255 + 80002ad8: 00200193 li gp,2 + 80002adc: 27df1663 bne t5,t4,80002d48 + +0000000080002ae0 : + 80002ae0: 00000097 auipc ra,0x0 + 80002ae4: 52008093 addi ra,ra,1312 # 80003000 + 80002ae8: 0020df03 lhu t5,2(ra) + 80002aec: 00010eb7 lui t4,0x10 + 80002af0: f00e8e9b addiw t4,t4,-256 + 80002af4: 00300193 li gp,3 + 80002af8: 25df1863 bne t5,t4,80002d48 + +0000000080002afc : + 80002afc: 00000097 auipc ra,0x0 + 80002b00: 50408093 addi ra,ra,1284 # 80003000 + 80002b04: 0040df03 lhu t5,4(ra) + 80002b08: 00001eb7 lui t4,0x1 + 80002b0c: ff0e8e9b addiw t4,t4,-16 + 80002b10: 00400193 li gp,4 + 80002b14: 23df1a63 bne t5,t4,80002d48 + +0000000080002b18 : + 80002b18: 00000097 auipc ra,0x0 + 80002b1c: 4e808093 addi ra,ra,1256 # 80003000 + 80002b20: 0060df03 lhu t5,6(ra) + 80002b24: 0000feb7 lui t4,0xf + 80002b28: 00fe8e9b addiw t4,t4,15 + 80002b2c: 00500193 li gp,5 + 80002b30: 21df1c63 bne t5,t4,80002d48 + +0000000080002b34 : + 80002b34: 00000097 auipc ra,0x0 + 80002b38: 4d208093 addi ra,ra,1234 # 80003006 + 80002b3c: ffa0df03 lhu t5,-6(ra) + 80002b40: 0ff00e93 li t4,255 + 80002b44: 00600193 li gp,6 + 80002b48: 21df1063 bne t5,t4,80002d48 + +0000000080002b4c : + 80002b4c: 00000097 auipc ra,0x0 + 80002b50: 4ba08093 addi ra,ra,1210 # 80003006 + 80002b54: ffc0df03 lhu t5,-4(ra) + 80002b58: 00010eb7 lui t4,0x10 + 80002b5c: f00e8e9b addiw t4,t4,-256 + 80002b60: 00700193 li gp,7 + 80002b64: 1fdf1263 bne t5,t4,80002d48 + +0000000080002b68 : + 80002b68: 00000097 auipc ra,0x0 + 80002b6c: 49e08093 addi ra,ra,1182 # 80003006 + 80002b70: ffe0df03 lhu t5,-2(ra) + 80002b74: 00001eb7 lui t4,0x1 + 80002b78: ff0e8e9b addiw t4,t4,-16 + 80002b7c: 00800193 li gp,8 + 80002b80: 1ddf1463 bne t5,t4,80002d48 + +0000000080002b84 : + 80002b84: 00000097 auipc ra,0x0 + 80002b88: 48208093 addi ra,ra,1154 # 80003006 + 80002b8c: 0000df03 lhu t5,0(ra) + 80002b90: 0000feb7 lui t4,0xf + 80002b94: 00fe8e9b addiw t4,t4,15 + 80002b98: 00900193 li gp,9 + 80002b9c: 1bdf1663 bne t5,t4,80002d48 + +0000000080002ba0 : + 80002ba0: 00000097 auipc ra,0x0 + 80002ba4: 46008093 addi ra,ra,1120 # 80003000 + 80002ba8: fe008093 addi ra,ra,-32 + 80002bac: 0200d283 lhu t0,32(ra) + 80002bb0: 0ff00e93 li t4,255 + 80002bb4: 00a00193 li gp,10 + 80002bb8: 19d29863 bne t0,t4,80002d48 + +0000000080002bbc : + 80002bbc: 00000097 auipc ra,0x0 + 80002bc0: 44408093 addi ra,ra,1092 # 80003000 + 80002bc4: ffb08093 addi ra,ra,-5 + 80002bc8: 0070d283 lhu t0,7(ra) + 80002bcc: 00010eb7 lui t4,0x10 + 80002bd0: f00e8e9b addiw t4,t4,-256 + 80002bd4: 00b00193 li gp,11 + 80002bd8: 17d29863 bne t0,t4,80002d48 + +0000000080002bdc : + 80002bdc: 00c00193 li gp,12 + 80002be0: 00000213 li tp,0 + 80002be4: 00000097 auipc ra,0x0 + 80002be8: 41e08093 addi ra,ra,1054 # 80003002 + 80002bec: 0020df03 lhu t5,2(ra) + 80002bf0: 000f0313 mv t1,t5 + 80002bf4: 00001eb7 lui t4,0x1 + 80002bf8: ff0e8e9b addiw t4,t4,-16 + 80002bfc: 15d31663 bne t1,t4,80002d48 + 80002c00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c04: 00200293 li t0,2 + 80002c08: fc521ee3 bne tp,t0,80002be4 + +0000000080002c0c : + 80002c0c: 00d00193 li gp,13 + 80002c10: 00000213 li tp,0 + 80002c14: 00000097 auipc ra,0x0 + 80002c18: 3f008093 addi ra,ra,1008 # 80003004 + 80002c1c: 0020df03 lhu t5,2(ra) + 80002c20: 00000013 nop + 80002c24: 000f0313 mv t1,t5 + 80002c28: 0000feb7 lui t4,0xf + 80002c2c: 00fe8e9b addiw t4,t4,15 + 80002c30: 11d31c63 bne t1,t4,80002d48 + 80002c34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c38: 00200293 li t0,2 + 80002c3c: fc521ce3 bne tp,t0,80002c14 + +0000000080002c40 : + 80002c40: 00e00193 li gp,14 + 80002c44: 00000213 li tp,0 + 80002c48: 00000097 auipc ra,0x0 + 80002c4c: 3b808093 addi ra,ra,952 # 80003000 + 80002c50: 0020df03 lhu t5,2(ra) + 80002c54: 00000013 nop + 80002c58: 00000013 nop + 80002c5c: 000f0313 mv t1,t5 + 80002c60: 00010eb7 lui t4,0x10 + 80002c64: f00e8e9b addiw t4,t4,-256 + 80002c68: 0fd31063 bne t1,t4,80002d48 + 80002c6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c70: 00200293 li t0,2 + 80002c74: fc521ae3 bne tp,t0,80002c48 + +0000000080002c78 : + 80002c78: 00f00193 li gp,15 + 80002c7c: 00000213 li tp,0 + 80002c80: 00000097 auipc ra,0x0 + 80002c84: 38208093 addi ra,ra,898 # 80003002 + 80002c88: 0020df03 lhu t5,2(ra) + 80002c8c: 00001eb7 lui t4,0x1 + 80002c90: ff0e8e9b addiw t4,t4,-16 + 80002c94: 0bdf1a63 bne t5,t4,80002d48 + 80002c98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c9c: 00200293 li t0,2 + 80002ca0: fe5210e3 bne tp,t0,80002c80 + +0000000080002ca4 : + 80002ca4: 01000193 li gp,16 + 80002ca8: 00000213 li tp,0 + 80002cac: 00000097 auipc ra,0x0 + 80002cb0: 35808093 addi ra,ra,856 # 80003004 + 80002cb4: 00000013 nop + 80002cb8: 0020df03 lhu t5,2(ra) + 80002cbc: 0000feb7 lui t4,0xf + 80002cc0: 00fe8e9b addiw t4,t4,15 + 80002cc4: 09df1263 bne t5,t4,80002d48 + 80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ccc: 00200293 li t0,2 + 80002cd0: fc521ee3 bne tp,t0,80002cac + +0000000080002cd4 : + 80002cd4: 01100193 li gp,17 + 80002cd8: 00000213 li tp,0 + 80002cdc: 00000097 auipc ra,0x0 + 80002ce0: 32408093 addi ra,ra,804 # 80003000 + 80002ce4: 00000013 nop + 80002ce8: 00000013 nop + 80002cec: 0020df03 lhu t5,2(ra) + 80002cf0: 00010eb7 lui t4,0x10 + 80002cf4: f00e8e9b addiw t4,t4,-256 + 80002cf8: 05df1863 bne t5,t4,80002d48 + 80002cfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d00: 00200293 li t0,2 + 80002d04: fc521ce3 bne tp,t0,80002cdc + +0000000080002d08 : + 80002d08: 00000297 auipc t0,0x0 + 80002d0c: 2f828293 addi t0,t0,760 # 80003000 + 80002d10: 0002d103 lhu sp,0(t0) + 80002d14: 00200113 li sp,2 + 80002d18: 00200e93 li t4,2 + 80002d1c: 01200193 li gp,18 + 80002d20: 03d11463 bne sp,t4,80002d48 + +0000000080002d24 : + 80002d24: 00000297 auipc t0,0x0 + 80002d28: 2dc28293 addi t0,t0,732 # 80003000 + 80002d2c: 0002d103 lhu sp,0(t0) + 80002d30: 00000013 nop + 80002d34: 00200113 li sp,2 + 80002d38: 00200e93 li t4,2 + 80002d3c: 01300193 li gp,19 + 80002d40: 01d11463 bne sp,t4,80002d48 + 80002d44: 00301a63 bne zero,gp,80002d58 + +0000000080002d48 : + 80002d48: 00119513 slli a0,gp,0x1 + 80002d4c: 00050063 beqz a0,80002d4c + 80002d50: 00156513 ori a0,a0,1 + 80002d54: 00000073 ecall + +0000000080002d58 : + 80002d58: 00100513 li a0,1 + 80002d5c: 00000073 ecall + 80002d60: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 00ff 0xff + +0000000080003002 : + 80003002: ff00 sd s0,56(a4) + +0000000080003004 : + 80003004: 0ff0 addi a2,sp,988 + +0000000080003006 : + 80003006: 0xf00f diff --git a/Tests/isa/rv64ui-v-lui b/Tests/isa/rv64ui-v-lui new file mode 100644 index 0000000..acca019 Binary files /dev/null and b/Tests/isa/rv64ui-v-lui differ diff --git a/Tests/isa/rv64ui-v-lui.dump b/Tests/isa/rv64ui-v-lui.dump new file mode 100644 index 0000000..6de22b6 --- /dev/null +++ b/Tests/isa/rv64ui-v-lui.dump @@ -0,0 +1,872 @@ + +rv64ui-v-lui: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 6f068693 addi a3,a3,1776 # 80002b48 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 72460613 addi a2,a2,1828 # 80002bd8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 6ec60613 addi a2,a2,1772 # 80002bf0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 63c68693 addi a3,a3,1596 # 80002b90 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 65868693 addi a3,a3,1624 # 80002cc8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 5d860613 addi a2,a2,1496 # 80002ca0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 50c68693 addi a3,a3,1292 # 80002cf8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 42c68693 addi a3,a3,1068 # 80002c68 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 3bc68693 addi a3,a3,956 # 80002c30 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 00e00793 li a5,14 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0caa87b7 lui a5,0xcaa8 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 51978793 addi a5,a5,1305 # caa8519 <_start-0x73557ae7> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 000000b7 lui ra,0x0 + 80002acc: 00000e93 li t4,0 + 80002ad0: 00200193 li gp,2 + 80002ad4: 05d09a63 bne ra,t4,80002b28 + +0000000080002ad8 : + 80002ad8: fffff0b7 lui ra,0xfffff + 80002adc: 4010d093 srai ra,ra,0x1 + 80002ae0: 80000e93 li t4,-2048 + 80002ae4: 00300193 li gp,3 + 80002ae8: 05d09063 bne ra,t4,80002b28 + +0000000080002aec : + 80002aec: 7ffff0b7 lui ra,0x7ffff + 80002af0: 4140d093 srai ra,ra,0x14 + 80002af4: 7ff00e93 li t4,2047 + 80002af8: 00400193 li gp,4 + 80002afc: 03d09663 bne ra,t4,80002b28 + +0000000080002b00 : + 80002b00: 800000b7 lui ra,0x80000 + 80002b04: 4140d093 srai ra,ra,0x14 + 80002b08: 80000e93 li t4,-2048 + 80002b0c: 00500193 li gp,5 + 80002b10: 01d09c63 bne ra,t4,80002b28 + +0000000080002b14 : + 80002b14: 80000037 lui zero,0x80000 + 80002b18: 00000e93 li t4,0 + 80002b1c: 00600193 li gp,6 + 80002b20: 01d01463 bne zero,t4,80002b28 + 80002b24: 00301a63 bne zero,gp,80002b38 + +0000000080002b28 : + 80002b28: 00119513 slli a0,gp,0x1 + 80002b2c: 00050063 beqz a0,80002b2c + 80002b30: 00156513 ori a0,a0,1 + 80002b34: 00000073 ecall + +0000000080002b38 : + 80002b38: 00100513 li a0,1 + 80002b3c: 00000073 ecall + 80002b40: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-lw b/Tests/isa/rv64ui-v-lw new file mode 100644 index 0000000..8d54775 Binary files /dev/null and b/Tests/isa/rv64ui-v-lw differ diff --git a/Tests/isa/rv64ui-v-lw.dump b/Tests/isa/rv64ui-v-lw.dump new file mode 100644 index 0000000..4208d27 --- /dev/null +++ b/Tests/isa/rv64ui-v-lw.dump @@ -0,0 +1,1054 @@ + +rv64ui-v-lw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 91868693 addi a3,a3,-1768 # 80002d70 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 94c60613 addi a2,a2,-1716 # 80002e00 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 91460613 addi a2,a2,-1772 # 80002e18 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 86468693 addi a3,a3,-1948 # 80002db8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 88068693 addi a3,a3,-1920 # 80002ef0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 80060613 addi a2,a2,-2048 # 80002ec8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 73468693 addi a3,a3,1844 # 80002f20 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 65468693 addi a3,a3,1620 # 80002e90 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5e468693 addi a3,a3,1508 # 80002e58 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00800793 li a5,8 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 03dd47b7 lui a5,0x3dd4 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: ebd78793 addi a5,a5,-323 # 3dd3ebd <_start-0x7c22c143> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000097 auipc ra,0x0 + 80002acc: 53808093 addi ra,ra,1336 # 80003000 + 80002ad0: 0000af03 lw t5,0(ra) + 80002ad4: 00ff0eb7 lui t4,0xff0 + 80002ad8: 0ffe8e9b addiw t4,t4,255 + 80002adc: 00200193 li gp,2 + 80002ae0: 27df1a63 bne t5,t4,80002d54 + +0000000080002ae4 : + 80002ae4: 00000097 auipc ra,0x0 + 80002ae8: 51c08093 addi ra,ra,1308 # 80003000 + 80002aec: 0040af03 lw t5,4(ra) + 80002af0: ff010eb7 lui t4,0xff010 + 80002af4: f00e8e9b addiw t4,t4,-256 + 80002af8: 00300193 li gp,3 + 80002afc: 25df1c63 bne t5,t4,80002d54 + +0000000080002b00 : + 80002b00: 00000097 auipc ra,0x0 + 80002b04: 50008093 addi ra,ra,1280 # 80003000 + 80002b08: 0080af03 lw t5,8(ra) + 80002b0c: 0ff01eb7 lui t4,0xff01 + 80002b10: ff0e8e9b addiw t4,t4,-16 + 80002b14: 00400193 li gp,4 + 80002b18: 23df1e63 bne t5,t4,80002d54 + +0000000080002b1c : + 80002b1c: 00000097 auipc ra,0x0 + 80002b20: 4e408093 addi ra,ra,1252 # 80003000 + 80002b24: 00c0af03 lw t5,12(ra) + 80002b28: f00ffeb7 lui t4,0xf00ff + 80002b2c: 00fe8e9b addiw t4,t4,15 + 80002b30: 00500193 li gp,5 + 80002b34: 23df1063 bne t5,t4,80002d54 + +0000000080002b38 : + 80002b38: 00000097 auipc ra,0x0 + 80002b3c: 4d408093 addi ra,ra,1236 # 8000300c + 80002b40: ff40af03 lw t5,-12(ra) + 80002b44: 00ff0eb7 lui t4,0xff0 + 80002b48: 0ffe8e9b addiw t4,t4,255 + 80002b4c: 00600193 li gp,6 + 80002b50: 21df1263 bne t5,t4,80002d54 + +0000000080002b54 : + 80002b54: 00000097 auipc ra,0x0 + 80002b58: 4b808093 addi ra,ra,1208 # 8000300c + 80002b5c: ff80af03 lw t5,-8(ra) + 80002b60: ff010eb7 lui t4,0xff010 + 80002b64: f00e8e9b addiw t4,t4,-256 + 80002b68: 00700193 li gp,7 + 80002b6c: 1fdf1463 bne t5,t4,80002d54 + +0000000080002b70 : + 80002b70: 00000097 auipc ra,0x0 + 80002b74: 49c08093 addi ra,ra,1180 # 8000300c + 80002b78: ffc0af03 lw t5,-4(ra) + 80002b7c: 0ff01eb7 lui t4,0xff01 + 80002b80: ff0e8e9b addiw t4,t4,-16 + 80002b84: 00800193 li gp,8 + 80002b88: 1ddf1663 bne t5,t4,80002d54 + +0000000080002b8c : + 80002b8c: 00000097 auipc ra,0x0 + 80002b90: 48008093 addi ra,ra,1152 # 8000300c + 80002b94: 0000af03 lw t5,0(ra) + 80002b98: f00ffeb7 lui t4,0xf00ff + 80002b9c: 00fe8e9b addiw t4,t4,15 + 80002ba0: 00900193 li gp,9 + 80002ba4: 1bdf1863 bne t5,t4,80002d54 + +0000000080002ba8 : + 80002ba8: 00000097 auipc ra,0x0 + 80002bac: 45808093 addi ra,ra,1112 # 80003000 + 80002bb0: fe008093 addi ra,ra,-32 + 80002bb4: 0200a283 lw t0,32(ra) + 80002bb8: 00ff0eb7 lui t4,0xff0 + 80002bbc: 0ffe8e9b addiw t4,t4,255 + 80002bc0: 00a00193 li gp,10 + 80002bc4: 19d29863 bne t0,t4,80002d54 + +0000000080002bc8 : + 80002bc8: 00000097 auipc ra,0x0 + 80002bcc: 43808093 addi ra,ra,1080 # 80003000 + 80002bd0: ffd08093 addi ra,ra,-3 + 80002bd4: 0070a283 lw t0,7(ra) + 80002bd8: ff010eb7 lui t4,0xff010 + 80002bdc: f00e8e9b addiw t4,t4,-256 + 80002be0: 00b00193 li gp,11 + 80002be4: 17d29863 bne t0,t4,80002d54 + +0000000080002be8 : + 80002be8: 00c00193 li gp,12 + 80002bec: 00000213 li tp,0 + 80002bf0: 00000097 auipc ra,0x0 + 80002bf4: 41408093 addi ra,ra,1044 # 80003004 + 80002bf8: 0040af03 lw t5,4(ra) + 80002bfc: 000f0313 mv t1,t5 + 80002c00: 0ff01eb7 lui t4,0xff01 + 80002c04: ff0e8e9b addiw t4,t4,-16 + 80002c08: 15d31663 bne t1,t4,80002d54 + 80002c0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c10: 00200293 li t0,2 + 80002c14: fc521ee3 bne tp,t0,80002bf0 + +0000000080002c18 : + 80002c18: 00d00193 li gp,13 + 80002c1c: 00000213 li tp,0 + 80002c20: 00000097 auipc ra,0x0 + 80002c24: 3e808093 addi ra,ra,1000 # 80003008 + 80002c28: 0040af03 lw t5,4(ra) + 80002c2c: 00000013 nop + 80002c30: 000f0313 mv t1,t5 + 80002c34: f00ffeb7 lui t4,0xf00ff + 80002c38: 00fe8e9b addiw t4,t4,15 + 80002c3c: 11d31c63 bne t1,t4,80002d54 + 80002c40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c44: 00200293 li t0,2 + 80002c48: fc521ce3 bne tp,t0,80002c20 + +0000000080002c4c : + 80002c4c: 00e00193 li gp,14 + 80002c50: 00000213 li tp,0 + 80002c54: 00000097 auipc ra,0x0 + 80002c58: 3ac08093 addi ra,ra,940 # 80003000 + 80002c5c: 0040af03 lw t5,4(ra) + 80002c60: 00000013 nop + 80002c64: 00000013 nop + 80002c68: 000f0313 mv t1,t5 + 80002c6c: ff010eb7 lui t4,0xff010 + 80002c70: f00e8e9b addiw t4,t4,-256 + 80002c74: 0fd31063 bne t1,t4,80002d54 + 80002c78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c7c: 00200293 li t0,2 + 80002c80: fc521ae3 bne tp,t0,80002c54 + +0000000080002c84 : + 80002c84: 00f00193 li gp,15 + 80002c88: 00000213 li tp,0 + 80002c8c: 00000097 auipc ra,0x0 + 80002c90: 37808093 addi ra,ra,888 # 80003004 + 80002c94: 0040af03 lw t5,4(ra) + 80002c98: 0ff01eb7 lui t4,0xff01 + 80002c9c: ff0e8e9b addiw t4,t4,-16 + 80002ca0: 0bdf1a63 bne t5,t4,80002d54 + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5210e3 bne tp,t0,80002c8c + +0000000080002cb0 : + 80002cb0: 01000193 li gp,16 + 80002cb4: 00000213 li tp,0 + 80002cb8: 00000097 auipc ra,0x0 + 80002cbc: 35008093 addi ra,ra,848 # 80003008 + 80002cc0: 00000013 nop + 80002cc4: 0040af03 lw t5,4(ra) + 80002cc8: f00ffeb7 lui t4,0xf00ff + 80002ccc: 00fe8e9b addiw t4,t4,15 + 80002cd0: 09df1263 bne t5,t4,80002d54 + 80002cd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd8: 00200293 li t0,2 + 80002cdc: fc521ee3 bne tp,t0,80002cb8 + +0000000080002ce0 : + 80002ce0: 01100193 li gp,17 + 80002ce4: 00000213 li tp,0 + 80002ce8: 00000097 auipc ra,0x0 + 80002cec: 31808093 addi ra,ra,792 # 80003000 + 80002cf0: 00000013 nop + 80002cf4: 00000013 nop + 80002cf8: 0040af03 lw t5,4(ra) + 80002cfc: ff010eb7 lui t4,0xff010 + 80002d00: f00e8e9b addiw t4,t4,-256 + 80002d04: 05df1863 bne t5,t4,80002d54 + 80002d08: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d0c: 00200293 li t0,2 + 80002d10: fc521ce3 bne tp,t0,80002ce8 + +0000000080002d14 : + 80002d14: 00000297 auipc t0,0x0 + 80002d18: 2ec28293 addi t0,t0,748 # 80003000 + 80002d1c: 0002a103 lw sp,0(t0) + 80002d20: 00200113 li sp,2 + 80002d24: 00200e93 li t4,2 + 80002d28: 01200193 li gp,18 + 80002d2c: 03d11463 bne sp,t4,80002d54 + +0000000080002d30 : + 80002d30: 00000297 auipc t0,0x0 + 80002d34: 2d028293 addi t0,t0,720 # 80003000 + 80002d38: 0002a103 lw sp,0(t0) + 80002d3c: 00000013 nop + 80002d40: 00200113 li sp,2 + 80002d44: 00200e93 li t4,2 + 80002d48: 01300193 li gp,19 + 80002d4c: 01d11463 bne sp,t4,80002d54 + 80002d50: 00301a63 bne zero,gp,80002d64 + +0000000080002d54 : + 80002d54: 00119513 slli a0,gp,0x1 + 80002d58: 00050063 beqz a0,80002d58 + 80002d5c: 00156513 ori a0,a0,1 + 80002d60: 00000073 ecall + +0000000080002d64 : + 80002d64: 00100513 li a0,1 + 80002d68: 00000073 ecall + 80002d6c: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 00ff 0xff + 80003002: 00ff 0xff + +0000000080003004 : + 80003004: ff00 sd s0,56(a4) + 80003006: ff00 sd s0,56(a4) + +0000000080003008 : + 80003008: 0ff0 addi a2,sp,988 + 8000300a: 0ff0 addi a2,sp,988 + +000000008000300c : + 8000300c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv64ui-v-lwu b/Tests/isa/rv64ui-v-lwu new file mode 100644 index 0000000..6659b4d Binary files /dev/null and b/Tests/isa/rv64ui-v-lwu differ diff --git a/Tests/isa/rv64ui-v-lwu.dump b/Tests/isa/rv64ui-v-lwu.dump new file mode 100644 index 0000000..aa0fb7d --- /dev/null +++ b/Tests/isa/rv64ui-v-lwu.dump @@ -0,0 +1,1072 @@ + +rv64ui-v-lwu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 96068693 addi a3,a3,-1696 # 80002db8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 99460613 addi a2,a2,-1644 # 80002e48 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 95c60613 addi a2,a2,-1700 # 80002e60 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 8ac68693 addi a3,a3,-1876 # 80002e00 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8c868693 addi a3,a3,-1848 # 80002f38 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 84860613 addi a2,a2,-1976 # 80002f10 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 77c68693 addi a3,a3,1916 # 80002f68 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 69c68693 addi a3,a3,1692 # 80002ed8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 62c68693 addi a3,a3,1580 # 80002ea0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00200793 li a5,2 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 046f07b7 lui a5,0x46f0 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: b8378793 addi a5,a5,-1149 # 46efb83 <_start-0x7b91047d> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000097 auipc ra,0x0 + 80002acc: 53808093 addi ra,ra,1336 # 80003000 + 80002ad0: 0000ef03 lwu t5,0(ra) + 80002ad4: 00ff0eb7 lui t4,0xff0 + 80002ad8: 0ffe8e9b addiw t4,t4,255 + 80002adc: 00200193 li gp,2 + 80002ae0: 2bdf1e63 bne t5,t4,80002d9c + +0000000080002ae4 : + 80002ae4: 00000097 auipc ra,0x0 + 80002ae8: 51c08093 addi ra,ra,1308 # 80003000 + 80002aec: 0040ef03 lwu t5,4(ra) + 80002af0: 00010eb7 lui t4,0x10 + 80002af4: f01e8e9b addiw t4,t4,-255 + 80002af8: 010e9e93 slli t4,t4,0x10 + 80002afc: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002b00: 00300193 li gp,3 + 80002b04: 29df1c63 bne t5,t4,80002d9c + +0000000080002b08 : + 80002b08: 00000097 auipc ra,0x0 + 80002b0c: 4f808093 addi ra,ra,1272 # 80003000 + 80002b10: 0080ef03 lwu t5,8(ra) + 80002b14: 0ff01eb7 lui t4,0xff01 + 80002b18: ff0e8e9b addiw t4,t4,-16 + 80002b1c: 00400193 li gp,4 + 80002b20: 27df1e63 bne t5,t4,80002d9c + +0000000080002b24 : + 80002b24: 00000097 auipc ra,0x0 + 80002b28: 4dc08093 addi ra,ra,1244 # 80003000 + 80002b2c: 00c0ef03 lwu t5,12(ra) + 80002b30: 000f0eb7 lui t4,0xf0 + 80002b34: 0ffe8e9b addiw t4,t4,255 + 80002b38: 00ce9e93 slli t4,t4,0xc + 80002b3c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002b40: 00500193 li gp,5 + 80002b44: 25df1c63 bne t5,t4,80002d9c + +0000000080002b48 : + 80002b48: 00000097 auipc ra,0x0 + 80002b4c: 4c408093 addi ra,ra,1220 # 8000300c + 80002b50: ff40ef03 lwu t5,-12(ra) + 80002b54: 00ff0eb7 lui t4,0xff0 + 80002b58: 0ffe8e9b addiw t4,t4,255 + 80002b5c: 00600193 li gp,6 + 80002b60: 23df1e63 bne t5,t4,80002d9c + +0000000080002b64 : + 80002b64: 00000097 auipc ra,0x0 + 80002b68: 4a808093 addi ra,ra,1192 # 8000300c + 80002b6c: ff80ef03 lwu t5,-8(ra) + 80002b70: 00010eb7 lui t4,0x10 + 80002b74: f01e8e9b addiw t4,t4,-255 + 80002b78: 010e9e93 slli t4,t4,0x10 + 80002b7c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002b80: 00700193 li gp,7 + 80002b84: 21df1c63 bne t5,t4,80002d9c + +0000000080002b88 : + 80002b88: 00000097 auipc ra,0x0 + 80002b8c: 48408093 addi ra,ra,1156 # 8000300c + 80002b90: ffc0ef03 lwu t5,-4(ra) + 80002b94: 0ff01eb7 lui t4,0xff01 + 80002b98: ff0e8e9b addiw t4,t4,-16 + 80002b9c: 00800193 li gp,8 + 80002ba0: 1fdf1e63 bne t5,t4,80002d9c + +0000000080002ba4 : + 80002ba4: 00000097 auipc ra,0x0 + 80002ba8: 46808093 addi ra,ra,1128 # 8000300c + 80002bac: 0000ef03 lwu t5,0(ra) + 80002bb0: 000f0eb7 lui t4,0xf0 + 80002bb4: 0ffe8e9b addiw t4,t4,255 + 80002bb8: 00ce9e93 slli t4,t4,0xc + 80002bbc: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002bc0: 00900193 li gp,9 + 80002bc4: 1ddf1c63 bne t5,t4,80002d9c + +0000000080002bc8 : + 80002bc8: 00000097 auipc ra,0x0 + 80002bcc: 43808093 addi ra,ra,1080 # 80003000 + 80002bd0: fe008093 addi ra,ra,-32 + 80002bd4: 0200e283 lwu t0,32(ra) + 80002bd8: 00ff0eb7 lui t4,0xff0 + 80002bdc: 0ffe8e9b addiw t4,t4,255 + 80002be0: 00a00193 li gp,10 + 80002be4: 1bd29c63 bne t0,t4,80002d9c + +0000000080002be8 : + 80002be8: 00000097 auipc ra,0x0 + 80002bec: 41808093 addi ra,ra,1048 # 80003000 + 80002bf0: ffd08093 addi ra,ra,-3 + 80002bf4: 0070e283 lwu t0,7(ra) + 80002bf8: 00010eb7 lui t4,0x10 + 80002bfc: f01e8e9b addiw t4,t4,-255 + 80002c00: 010e9e93 slli t4,t4,0x10 + 80002c04: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002c08: 00b00193 li gp,11 + 80002c0c: 19d29863 bne t0,t4,80002d9c + +0000000080002c10 : + 80002c10: 00c00193 li gp,12 + 80002c14: 00000213 li tp,0 + 80002c18: 00000097 auipc ra,0x0 + 80002c1c: 3ec08093 addi ra,ra,1004 # 80003004 + 80002c20: 0040ef03 lwu t5,4(ra) + 80002c24: 000f0313 mv t1,t5 + 80002c28: 0ff01eb7 lui t4,0xff01 + 80002c2c: ff0e8e9b addiw t4,t4,-16 + 80002c30: 17d31663 bne t1,t4,80002d9c + 80002c34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c38: 00200293 li t0,2 + 80002c3c: fc521ee3 bne tp,t0,80002c18 + +0000000080002c40 : + 80002c40: 00d00193 li gp,13 + 80002c44: 00000213 li tp,0 + 80002c48: 00000097 auipc ra,0x0 + 80002c4c: 3c008093 addi ra,ra,960 # 80003008 + 80002c50: 0040ef03 lwu t5,4(ra) + 80002c54: 00000013 nop + 80002c58: 000f0313 mv t1,t5 + 80002c5c: 000f0eb7 lui t4,0xf0 + 80002c60: 0ffe8e9b addiw t4,t4,255 + 80002c64: 00ce9e93 slli t4,t4,0xc + 80002c68: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002c6c: 13d31863 bne t1,t4,80002d9c + 80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c74: 00200293 li t0,2 + 80002c78: fc5218e3 bne tp,t0,80002c48 + +0000000080002c7c : + 80002c7c: 00e00193 li gp,14 + 80002c80: 00000213 li tp,0 + 80002c84: 00000097 auipc ra,0x0 + 80002c88: 37c08093 addi ra,ra,892 # 80003000 + 80002c8c: 0040ef03 lwu t5,4(ra) + 80002c90: 00000013 nop + 80002c94: 00000013 nop + 80002c98: 000f0313 mv t1,t5 + 80002c9c: 00010eb7 lui t4,0x10 + 80002ca0: f01e8e9b addiw t4,t4,-255 + 80002ca4: 010e9e93 slli t4,t4,0x10 + 80002ca8: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002cac: 0fd31863 bne t1,t4,80002d9c + 80002cb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cb4: 00200293 li t0,2 + 80002cb8: fc5216e3 bne tp,t0,80002c84 + +0000000080002cbc : + 80002cbc: 00f00193 li gp,15 + 80002cc0: 00000213 li tp,0 + 80002cc4: 00000097 auipc ra,0x0 + 80002cc8: 34008093 addi ra,ra,832 # 80003004 + 80002ccc: 0040ef03 lwu t5,4(ra) + 80002cd0: 0ff01eb7 lui t4,0xff01 + 80002cd4: ff0e8e9b addiw t4,t4,-16 + 80002cd8: 0ddf1263 bne t5,t4,80002d9c + 80002cdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce0: 00200293 li t0,2 + 80002ce4: fe5210e3 bne tp,t0,80002cc4 + +0000000080002ce8 : + 80002ce8: 01000193 li gp,16 + 80002cec: 00000213 li tp,0 + 80002cf0: 00000097 auipc ra,0x0 + 80002cf4: 31808093 addi ra,ra,792 # 80003008 + 80002cf8: 00000013 nop + 80002cfc: 0040ef03 lwu t5,4(ra) + 80002d00: 000f0eb7 lui t4,0xf0 + 80002d04: 0ffe8e9b addiw t4,t4,255 + 80002d08: 00ce9e93 slli t4,t4,0xc + 80002d0c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002d10: 09df1663 bne t5,t4,80002d9c + 80002d14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d18: 00200293 li t0,2 + 80002d1c: fc521ae3 bne tp,t0,80002cf0 + +0000000080002d20 : + 80002d20: 01100193 li gp,17 + 80002d24: 00000213 li tp,0 + 80002d28: 00000097 auipc ra,0x0 + 80002d2c: 2d808093 addi ra,ra,728 # 80003000 + 80002d30: 00000013 nop + 80002d34: 00000013 nop + 80002d38: 0040ef03 lwu t5,4(ra) + 80002d3c: 00010eb7 lui t4,0x10 + 80002d40: f01e8e9b addiw t4,t4,-255 + 80002d44: 010e9e93 slli t4,t4,0x10 + 80002d48: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002d4c: 05df1863 bne t5,t4,80002d9c + 80002d50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d54: 00200293 li t0,2 + 80002d58: fc5218e3 bne tp,t0,80002d28 + +0000000080002d5c : + 80002d5c: 00000297 auipc t0,0x0 + 80002d60: 2a428293 addi t0,t0,676 # 80003000 + 80002d64: 0002e103 lwu sp,0(t0) + 80002d68: 00200113 li sp,2 + 80002d6c: 00200e93 li t4,2 + 80002d70: 01200193 li gp,18 + 80002d74: 03d11463 bne sp,t4,80002d9c + +0000000080002d78 : + 80002d78: 00000297 auipc t0,0x0 + 80002d7c: 28828293 addi t0,t0,648 # 80003000 + 80002d80: 0002e103 lwu sp,0(t0) + 80002d84: 00000013 nop + 80002d88: 00200113 li sp,2 + 80002d8c: 00200e93 li t4,2 + 80002d90: 01300193 li gp,19 + 80002d94: 01d11463 bne sp,t4,80002d9c + 80002d98: 00301a63 bne zero,gp,80002dac + +0000000080002d9c : + 80002d9c: 00119513 slli a0,gp,0x1 + 80002da0: 00050063 beqz a0,80002da0 + 80002da4: 00156513 ori a0,a0,1 + 80002da8: 00000073 ecall + +0000000080002dac : + 80002dac: 00100513 li a0,1 + 80002db0: 00000073 ecall + 80002db4: c0001073 unimp + +Disassembly of section .data: + +0000000080003000 : + 80003000: 00ff 0xff + 80003002: 00ff 0xff + +0000000080003004 : + 80003004: ff00 sd s0,56(a4) + 80003006: ff00 sd s0,56(a4) + +0000000080003008 : + 80003008: 0ff0 addi a2,sp,988 + 8000300a: 0ff0 addi a2,sp,988 + +000000008000300c : + 8000300c: f00ff00f 0xf00ff00f diff --git a/Tests/isa/rv64ui-v-or b/Tests/isa/rv64ui-v-or new file mode 100644 index 0000000..4beff1a Binary files /dev/null and b/Tests/isa/rv64ui-v-or differ diff --git a/Tests/isa/rv64ui-v-or.dump b/Tests/isa/rv64ui-v-or.dump new file mode 100644 index 0000000..c5e0940 --- /dev/null +++ b/Tests/isa/rv64ui-v-or.dump @@ -0,0 +1,1265 @@ + +rv64ui-v-or: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: c6868693 addi a3,a3,-920 # 800030c0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: c9c60613 addi a2,a2,-868 # 80003150 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: c6460613 addi a2,a2,-924 # 80003168 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: bb468693 addi a3,a3,-1100 # 80003108 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: bd068693 addi a3,a3,-1072 # 80003240 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: b5060613 addi a2,a2,-1200 # 80003218 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: a8468693 addi a3,a3,-1404 # 80003270 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 9a468693 addi a3,a3,-1628 # 800031e0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 93468693 addi a3,a3,-1740 # 800031a8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03800793 li a5,56 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 039357b7 lui a5,0x3935 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: f5d78793 addi a5,a5,-163 # 3934f5d <_start-0x7c6cb0a3> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 000100b7 lui ra,0x10 + 80002acc: f010809b addiw ra,ra,-255 + 80002ad0: 01009093 slli ra,ra,0x10 + 80002ad4: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002ad8: 0f0f1137 lui sp,0xf0f1 + 80002adc: f0f1011b addiw sp,sp,-241 + 80002ae0: 0020ef33 or t5,ra,sp + 80002ae4: 00001eb7 lui t4,0x1 + 80002ae8: ff1e8e9b addiw t4,t4,-15 + 80002aec: 014e9e93 slli t4,t4,0x14 + 80002af0: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002af4: 00200193 li gp,2 + 80002af8: 5bdf1663 bne t5,t4,800030a4 + +0000000080002afc : + 80002afc: 0ff010b7 lui ra,0xff01 + 80002b00: ff00809b addiw ra,ra,-16 + 80002b04: 000f1137 lui sp,0xf1 + 80002b08: f0f1011b addiw sp,sp,-241 + 80002b0c: 00c11113 slli sp,sp,0xc + 80002b10: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002b14: 0020ef33 or t5,ra,sp + 80002b18: 00010eb7 lui t4,0x10 + 80002b1c: ff1e8e9b addiw t4,t4,-15 + 80002b20: 010e9e93 slli t4,t4,0x10 + 80002b24: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80002b28: 00300193 li gp,3 + 80002b2c: 57df1c63 bne t5,t4,800030a4 + +0000000080002b30 : + 80002b30: 00ff00b7 lui ra,0xff0 + 80002b34: 0ff0809b addiw ra,ra,255 + 80002b38: 0f0f1137 lui sp,0xf0f1 + 80002b3c: f0f1011b addiw sp,sp,-241 + 80002b40: 0020ef33 or t5,ra,sp + 80002b44: 0fff1eb7 lui t4,0xfff1 + 80002b48: fffe8e9b addiw t4,t4,-1 + 80002b4c: 00400193 li gp,4 + 80002b50: 55df1a63 bne t5,t4,800030a4 + +0000000080002b54 : + 80002b54: 000f00b7 lui ra,0xf0 + 80002b58: 0ff0809b addiw ra,ra,255 + 80002b5c: 00c09093 slli ra,ra,0xc + 80002b60: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80002b64: 000f1137 lui sp,0xf1 + 80002b68: f0f1011b addiw sp,sp,-241 + 80002b6c: 00c11113 slli sp,sp,0xc + 80002b70: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002b74: 0020ef33 or t5,ra,sp + 80002b78: 000f1eb7 lui t4,0xf1 + 80002b7c: fffe8e9b addiw t4,t4,-1 + 80002b80: 00ce9e93 slli t4,t4,0xc + 80002b84: 0ffe8e93 addi t4,t4,255 # f10ff <_start-0x7ff0ef01> + 80002b88: 00500193 li gp,5 + 80002b8c: 51df1c63 bne t5,t4,800030a4 + +0000000080002b90 : + 80002b90: 000100b7 lui ra,0x10 + 80002b94: f010809b addiw ra,ra,-255 + 80002b98: 01009093 slli ra,ra,0x10 + 80002b9c: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002ba0: 0f0f1137 lui sp,0xf0f1 + 80002ba4: f0f1011b addiw sp,sp,-241 + 80002ba8: 0020e0b3 or ra,ra,sp + 80002bac: 00001eb7 lui t4,0x1 + 80002bb0: ff1e8e9b addiw t4,t4,-15 + 80002bb4: 014e9e93 slli t4,t4,0x14 + 80002bb8: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002bbc: 00600193 li gp,6 + 80002bc0: 4fd09263 bne ra,t4,800030a4 + +0000000080002bc4 : + 80002bc4: 000100b7 lui ra,0x10 + 80002bc8: f010809b addiw ra,ra,-255 + 80002bcc: 01009093 slli ra,ra,0x10 + 80002bd0: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002bd4: 0f0f1137 lui sp,0xf0f1 + 80002bd8: f0f1011b addiw sp,sp,-241 + 80002bdc: 0020e133 or sp,ra,sp + 80002be0: 00001eb7 lui t4,0x1 + 80002be4: ff1e8e9b addiw t4,t4,-15 + 80002be8: 014e9e93 slli t4,t4,0x14 + 80002bec: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002bf0: 00700193 li gp,7 + 80002bf4: 4bd11863 bne sp,t4,800030a4 + +0000000080002bf8 : + 80002bf8: 000100b7 lui ra,0x10 + 80002bfc: f010809b addiw ra,ra,-255 + 80002c00: 01009093 slli ra,ra,0x10 + 80002c04: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002c08: 0010e0b3 or ra,ra,ra + 80002c0c: 00010eb7 lui t4,0x10 + 80002c10: f01e8e9b addiw t4,t4,-255 + 80002c14: 010e9e93 slli t4,t4,0x10 + 80002c18: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002c1c: 00800193 li gp,8 + 80002c20: 49d09263 bne ra,t4,800030a4 + +0000000080002c24 : + 80002c24: 00000213 li tp,0 + 80002c28: 000100b7 lui ra,0x10 + 80002c2c: f010809b addiw ra,ra,-255 + 80002c30: 01009093 slli ra,ra,0x10 + 80002c34: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002c38: 0f0f1137 lui sp,0xf0f1 + 80002c3c: f0f1011b addiw sp,sp,-241 + 80002c40: 0020ef33 or t5,ra,sp + 80002c44: 000f0313 mv t1,t5 + 80002c48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c4c: 00200293 li t0,2 + 80002c50: fc521ce3 bne tp,t0,80002c28 + 80002c54: 00001eb7 lui t4,0x1 + 80002c58: ff1e8e9b addiw t4,t4,-15 + 80002c5c: 014e9e93 slli t4,t4,0x14 + 80002c60: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002c64: 00900193 li gp,9 + 80002c68: 43d31e63 bne t1,t4,800030a4 + +0000000080002c6c : + 80002c6c: 00000213 li tp,0 + 80002c70: 0ff010b7 lui ra,0xff01 + 80002c74: ff00809b addiw ra,ra,-16 + 80002c78: 000f1137 lui sp,0xf1 + 80002c7c: f0f1011b addiw sp,sp,-241 + 80002c80: 00c11113 slli sp,sp,0xc + 80002c84: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002c88: 0020ef33 or t5,ra,sp + 80002c8c: 00000013 nop + 80002c90: 000f0313 mv t1,t5 + 80002c94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c98: 00200293 li t0,2 + 80002c9c: fc521ae3 bne tp,t0,80002c70 + 80002ca0: 00010eb7 lui t4,0x10 + 80002ca4: ff1e8e9b addiw t4,t4,-15 + 80002ca8: 010e9e93 slli t4,t4,0x10 + 80002cac: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80002cb0: 00a00193 li gp,10 + 80002cb4: 3fd31863 bne t1,t4,800030a4 + +0000000080002cb8 : + 80002cb8: 00000213 li tp,0 + 80002cbc: 00ff00b7 lui ra,0xff0 + 80002cc0: 0ff0809b addiw ra,ra,255 + 80002cc4: 0f0f1137 lui sp,0xf0f1 + 80002cc8: f0f1011b addiw sp,sp,-241 + 80002ccc: 0020ef33 or t5,ra,sp + 80002cd0: 00000013 nop + 80002cd4: 00000013 nop + 80002cd8: 000f0313 mv t1,t5 + 80002cdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce0: 00200293 li t0,2 + 80002ce4: fc521ce3 bne tp,t0,80002cbc + 80002ce8: 0fff1eb7 lui t4,0xfff1 + 80002cec: fffe8e9b addiw t4,t4,-1 + 80002cf0: 00b00193 li gp,11 + 80002cf4: 3bd31863 bne t1,t4,800030a4 + +0000000080002cf8 : + 80002cf8: 00000213 li tp,0 + 80002cfc: 000100b7 lui ra,0x10 + 80002d00: f010809b addiw ra,ra,-255 + 80002d04: 01009093 slli ra,ra,0x10 + 80002d08: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002d0c: 0f0f1137 lui sp,0xf0f1 + 80002d10: f0f1011b addiw sp,sp,-241 + 80002d14: 0020ef33 or t5,ra,sp + 80002d18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d1c: 00200293 li t0,2 + 80002d20: fc521ee3 bne tp,t0,80002cfc + 80002d24: 00001eb7 lui t4,0x1 + 80002d28: ff1e8e9b addiw t4,t4,-15 + 80002d2c: 014e9e93 slli t4,t4,0x14 + 80002d30: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002d34: 00c00193 li gp,12 + 80002d38: 37df1663 bne t5,t4,800030a4 + +0000000080002d3c : + 80002d3c: 00000213 li tp,0 + 80002d40: 0ff010b7 lui ra,0xff01 + 80002d44: ff00809b addiw ra,ra,-16 + 80002d48: 000f1137 lui sp,0xf1 + 80002d4c: f0f1011b addiw sp,sp,-241 + 80002d50: 00c11113 slli sp,sp,0xc + 80002d54: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002d58: 00000013 nop + 80002d5c: 0020ef33 or t5,ra,sp + 80002d60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d64: 00200293 li t0,2 + 80002d68: fc521ce3 bne tp,t0,80002d40 + 80002d6c: 00010eb7 lui t4,0x10 + 80002d70: ff1e8e9b addiw t4,t4,-15 + 80002d74: 010e9e93 slli t4,t4,0x10 + 80002d78: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80002d7c: 00d00193 li gp,13 + 80002d80: 33df1263 bne t5,t4,800030a4 + +0000000080002d84 : + 80002d84: 00000213 li tp,0 + 80002d88: 00ff00b7 lui ra,0xff0 + 80002d8c: 0ff0809b addiw ra,ra,255 + 80002d90: 0f0f1137 lui sp,0xf0f1 + 80002d94: f0f1011b addiw sp,sp,-241 + 80002d98: 00000013 nop + 80002d9c: 00000013 nop + 80002da0: 0020ef33 or t5,ra,sp + 80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da8: 00200293 li t0,2 + 80002dac: fc521ee3 bne tp,t0,80002d88 + 80002db0: 0fff1eb7 lui t4,0xfff1 + 80002db4: fffe8e9b addiw t4,t4,-1 + 80002db8: 00e00193 li gp,14 + 80002dbc: 2fdf1463 bne t5,t4,800030a4 + +0000000080002dc0 : + 80002dc0: 00000213 li tp,0 + 80002dc4: 000100b7 lui ra,0x10 + 80002dc8: f010809b addiw ra,ra,-255 + 80002dcc: 01009093 slli ra,ra,0x10 + 80002dd0: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002dd4: 00000013 nop + 80002dd8: 0f0f1137 lui sp,0xf0f1 + 80002ddc: f0f1011b addiw sp,sp,-241 + 80002de0: 0020ef33 or t5,ra,sp + 80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de8: 00200293 li t0,2 + 80002dec: fc521ce3 bne tp,t0,80002dc4 + 80002df0: 00001eb7 lui t4,0x1 + 80002df4: ff1e8e9b addiw t4,t4,-15 + 80002df8: 014e9e93 slli t4,t4,0x14 + 80002dfc: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002e00: 00f00193 li gp,15 + 80002e04: 2bdf1063 bne t5,t4,800030a4 + +0000000080002e08 : + 80002e08: 00000213 li tp,0 + 80002e0c: 0ff010b7 lui ra,0xff01 + 80002e10: ff00809b addiw ra,ra,-16 + 80002e14: 00000013 nop + 80002e18: 000f1137 lui sp,0xf1 + 80002e1c: f0f1011b addiw sp,sp,-241 + 80002e20: 00c11113 slli sp,sp,0xc + 80002e24: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002e28: 00000013 nop + 80002e2c: 0020ef33 or t5,ra,sp + 80002e30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e34: 00200293 li t0,2 + 80002e38: fc521ae3 bne tp,t0,80002e0c + 80002e3c: 00010eb7 lui t4,0x10 + 80002e40: ff1e8e9b addiw t4,t4,-15 + 80002e44: 010e9e93 slli t4,t4,0x10 + 80002e48: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80002e4c: 01000193 li gp,16 + 80002e50: 25df1a63 bne t5,t4,800030a4 + +0000000080002e54 : + 80002e54: 00000213 li tp,0 + 80002e58: 00ff00b7 lui ra,0xff0 + 80002e5c: 0ff0809b addiw ra,ra,255 + 80002e60: 00000013 nop + 80002e64: 00000013 nop + 80002e68: 0f0f1137 lui sp,0xf0f1 + 80002e6c: f0f1011b addiw sp,sp,-241 + 80002e70: 0020ef33 or t5,ra,sp + 80002e74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e78: 00200293 li t0,2 + 80002e7c: fc521ee3 bne tp,t0,80002e58 + 80002e80: 0fff1eb7 lui t4,0xfff1 + 80002e84: fffe8e9b addiw t4,t4,-1 + 80002e88: 01100193 li gp,17 + 80002e8c: 21df1c63 bne t5,t4,800030a4 + +0000000080002e90 : + 80002e90: 00000213 li tp,0 + 80002e94: 0f0f1137 lui sp,0xf0f1 + 80002e98: f0f1011b addiw sp,sp,-241 + 80002e9c: 000100b7 lui ra,0x10 + 80002ea0: f010809b addiw ra,ra,-255 + 80002ea4: 01009093 slli ra,ra,0x10 + 80002ea8: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002eac: 0020ef33 or t5,ra,sp + 80002eb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002eb4: 00200293 li t0,2 + 80002eb8: fc521ee3 bne tp,t0,80002e94 + 80002ebc: 00001eb7 lui t4,0x1 + 80002ec0: ff1e8e9b addiw t4,t4,-15 + 80002ec4: 014e9e93 slli t4,t4,0x14 + 80002ec8: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002ecc: 01200193 li gp,18 + 80002ed0: 1ddf1a63 bne t5,t4,800030a4 + +0000000080002ed4 : + 80002ed4: 00000213 li tp,0 + 80002ed8: 000f1137 lui sp,0xf1 + 80002edc: f0f1011b addiw sp,sp,-241 + 80002ee0: 00c11113 slli sp,sp,0xc + 80002ee4: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002ee8: 0ff010b7 lui ra,0xff01 + 80002eec: ff00809b addiw ra,ra,-16 + 80002ef0: 00000013 nop + 80002ef4: 0020ef33 or t5,ra,sp + 80002ef8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002efc: 00200293 li t0,2 + 80002f00: fc521ce3 bne tp,t0,80002ed8 + 80002f04: 00010eb7 lui t4,0x10 + 80002f08: ff1e8e9b addiw t4,t4,-15 + 80002f0c: 010e9e93 slli t4,t4,0x10 + 80002f10: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80002f14: 01300193 li gp,19 + 80002f18: 19df1663 bne t5,t4,800030a4 + +0000000080002f1c : + 80002f1c: 00000213 li tp,0 + 80002f20: 0f0f1137 lui sp,0xf0f1 + 80002f24: f0f1011b addiw sp,sp,-241 + 80002f28: 00ff00b7 lui ra,0xff0 + 80002f2c: 0ff0809b addiw ra,ra,255 + 80002f30: 00000013 nop + 80002f34: 00000013 nop + 80002f38: 0020ef33 or t5,ra,sp + 80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f40: 00200293 li t0,2 + 80002f44: fc521ee3 bne tp,t0,80002f20 + 80002f48: 0fff1eb7 lui t4,0xfff1 + 80002f4c: fffe8e9b addiw t4,t4,-1 + 80002f50: 01400193 li gp,20 + 80002f54: 15df1863 bne t5,t4,800030a4 + +0000000080002f58 : + 80002f58: 00000213 li tp,0 + 80002f5c: 0f0f1137 lui sp,0xf0f1 + 80002f60: f0f1011b addiw sp,sp,-241 + 80002f64: 00000013 nop + 80002f68: 000100b7 lui ra,0x10 + 80002f6c: f010809b addiw ra,ra,-255 + 80002f70: 01009093 slli ra,ra,0x10 + 80002f74: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002f78: 0020ef33 or t5,ra,sp + 80002f7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f80: 00200293 li t0,2 + 80002f84: fc521ce3 bne tp,t0,80002f5c + 80002f88: 00001eb7 lui t4,0x1 + 80002f8c: ff1e8e9b addiw t4,t4,-15 + 80002f90: 014e9e93 slli t4,t4,0x14 + 80002f94: f0fe8e93 addi t4,t4,-241 # f0f <_start-0x7ffff0f1> + 80002f98: 01500193 li gp,21 + 80002f9c: 11df1463 bne t5,t4,800030a4 + +0000000080002fa0 : + 80002fa0: 00000213 li tp,0 + 80002fa4: 000f1137 lui sp,0xf1 + 80002fa8: f0f1011b addiw sp,sp,-241 + 80002fac: 00c11113 slli sp,sp,0xc + 80002fb0: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002fb4: 00000013 nop + 80002fb8: 0ff010b7 lui ra,0xff01 + 80002fbc: ff00809b addiw ra,ra,-16 + 80002fc0: 00000013 nop + 80002fc4: 0020ef33 or t5,ra,sp + 80002fc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fcc: 00200293 li t0,2 + 80002fd0: fc521ae3 bne tp,t0,80002fa4 + 80002fd4: 00010eb7 lui t4,0x10 + 80002fd8: ff1e8e9b addiw t4,t4,-15 + 80002fdc: 010e9e93 slli t4,t4,0x10 + 80002fe0: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80002fe4: 01600193 li gp,22 + 80002fe8: 0bdf1e63 bne t5,t4,800030a4 + +0000000080002fec : + 80002fec: 00000213 li tp,0 + 80002ff0: 0f0f1137 lui sp,0xf0f1 + 80002ff4: f0f1011b addiw sp,sp,-241 + 80002ff8: 00000013 nop + 80002ffc: 00000013 nop + 80003000: 00ff00b7 lui ra,0xff0 + 80003004: 0ff0809b addiw ra,ra,255 + 80003008: 0020ef33 or t5,ra,sp + 8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003010: 00200293 li t0,2 + 80003014: fc521ee3 bne tp,t0,80002ff0 + 80003018: 0fff1eb7 lui t4,0xfff1 + 8000301c: fffe8e9b addiw t4,t4,-1 + 80003020: 01700193 li gp,23 + 80003024: 09df1063 bne t5,t4,800030a4 + +0000000080003028 : + 80003028: 000100b7 lui ra,0x10 + 8000302c: f010809b addiw ra,ra,-255 + 80003030: 01009093 slli ra,ra,0x10 + 80003034: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80003038: 00106133 or sp,zero,ra + 8000303c: 00010eb7 lui t4,0x10 + 80003040: f01e8e9b addiw t4,t4,-255 + 80003044: 010e9e93 slli t4,t4,0x10 + 80003048: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 8000304c: 01800193 li gp,24 + 80003050: 05d11a63 bne sp,t4,800030a4 + +0000000080003054 : + 80003054: 00ff00b7 lui ra,0xff0 + 80003058: 0ff0809b addiw ra,ra,255 + 8000305c: 0000e133 or sp,ra,zero + 80003060: 00ff0eb7 lui t4,0xff0 + 80003064: 0ffe8e9b addiw t4,t4,255 + 80003068: 01900193 li gp,25 + 8000306c: 03d11c63 bne sp,t4,800030a4 + +0000000080003070 : + 80003070: 000060b3 or ra,zero,zero + 80003074: 00000e93 li t4,0 + 80003078: 01a00193 li gp,26 + 8000307c: 03d09463 bne ra,t4,800030a4 + +0000000080003080 : + 80003080: 111110b7 lui ra,0x11111 + 80003084: 1110809b addiw ra,ra,273 + 80003088: 22222137 lui sp,0x22222 + 8000308c: 2221011b addiw sp,sp,546 + 80003090: 0020e033 or zero,ra,sp + 80003094: 00000e93 li t4,0 + 80003098: 01b00193 li gp,27 + 8000309c: 01d01463 bne zero,t4,800030a4 + 800030a0: 00301a63 bne zero,gp,800030b4 + +00000000800030a4 : + 800030a4: 00119513 slli a0,gp,0x1 + 800030a8: 00050063 beqz a0,800030a8 + 800030ac: 00156513 ori a0,a0,1 + 800030b0: 00000073 ecall + +00000000800030b4 : + 800030b4: 00100513 li a0,1 + 800030b8: 00000073 ecall + 800030bc: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-ori b/Tests/isa/rv64ui-v-ori new file mode 100644 index 0000000..248f3d8 Binary files /dev/null and b/Tests/isa/rv64ui-v-ori differ diff --git a/Tests/isa/rv64ui-v-ori.dump b/Tests/isa/rv64ui-v-ori.dump new file mode 100644 index 0000000..9b536c5 --- /dev/null +++ b/Tests/isa/rv64ui-v-ori.dump @@ -0,0 +1,987 @@ + +rv64ui-v-ori: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 87868693 addi a3,a3,-1928 # 80002cd0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 8ac60613 addi a2,a2,-1876 # 80002d60 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 87460613 addi a2,a2,-1932 # 80002d78 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 7c468693 addi a3,a3,1988 # 80002d18 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 7e068693 addi a3,a3,2016 # 80002e50 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 76060613 addi a2,a2,1888 # 80002e28 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 69468693 addi a3,a3,1684 # 80002e80 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 5b468693 addi a3,a3,1460 # 80002df0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 54468693 addi a3,a3,1348 # 80002db8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 00d00793 li a5,13 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a6287b7 lui a5,0xa628 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: a5878793 addi a5,a5,-1448 # a627a58 <_start-0x759d85a8> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: ff0100b7 lui ra,0xff010 + 80002acc: f000809b addiw ra,ra,-256 + 80002ad0: f0f0ef13 ori t5,ra,-241 + 80002ad4: f0f00e93 li t4,-241 + 80002ad8: 00200193 li gp,2 + 80002adc: 1ddf1c63 bne t5,t4,80002cb4 + +0000000080002ae0 : + 80002ae0: 0ff010b7 lui ra,0xff01 + 80002ae4: ff00809b addiw ra,ra,-16 + 80002ae8: 0f00ef13 ori t5,ra,240 + 80002aec: 0ff01eb7 lui t4,0xff01 + 80002af0: ff0e8e9b addiw t4,t4,-16 + 80002af4: 00300193 li gp,3 + 80002af8: 1bdf1e63 bne t5,t4,80002cb4 + +0000000080002afc : + 80002afc: 00ff00b7 lui ra,0xff0 + 80002b00: 0ff0809b addiw ra,ra,255 + 80002b04: 70f0ef13 ori t5,ra,1807 + 80002b08: 00ff0eb7 lui t4,0xff0 + 80002b0c: 7ffe8e9b addiw t4,t4,2047 + 80002b10: 00400193 li gp,4 + 80002b14: 1bdf1063 bne t5,t4,80002cb4 + +0000000080002b18 : + 80002b18: f00ff0b7 lui ra,0xf00ff + 80002b1c: 00f0809b addiw ra,ra,15 + 80002b20: 0f00ef13 ori t5,ra,240 + 80002b24: f00ffeb7 lui t4,0xf00ff + 80002b28: 0ffe8e9b addiw t4,t4,255 + 80002b2c: 00500193 li gp,5 + 80002b30: 19df1263 bne t5,t4,80002cb4 + +0000000080002b34 : + 80002b34: 000100b7 lui ra,0x10 + 80002b38: f010809b addiw ra,ra,-255 + 80002b3c: 01009093 slli ra,ra,0x10 + 80002b40: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002b44: 0f00e093 ori ra,ra,240 + 80002b48: 00010eb7 lui t4,0x10 + 80002b4c: f01e8e9b addiw t4,t4,-255 + 80002b50: 010e9e93 slli t4,t4,0x10 + 80002b54: ff0e8e93 addi t4,t4,-16 # fff0 <_start-0x7fff0010> + 80002b58: 00600193 li gp,6 + 80002b5c: 15d09c63 bne ra,t4,80002cb4 + +0000000080002b60 : + 80002b60: 00000213 li tp,0 + 80002b64: 0ff010b7 lui ra,0xff01 + 80002b68: ff00809b addiw ra,ra,-16 + 80002b6c: 0f00ef13 ori t5,ra,240 + 80002b70: 000f0313 mv t1,t5 + 80002b74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002b78: 00200293 li t0,2 + 80002b7c: fe5214e3 bne tp,t0,80002b64 + 80002b80: 0ff01eb7 lui t4,0xff01 + 80002b84: ff0e8e9b addiw t4,t4,-16 + 80002b88: 00700193 li gp,7 + 80002b8c: 13d31463 bne t1,t4,80002cb4 + +0000000080002b90 : + 80002b90: 00000213 li tp,0 + 80002b94: 00ff00b7 lui ra,0xff0 + 80002b98: 0ff0809b addiw ra,ra,255 + 80002b9c: 70f0ef13 ori t5,ra,1807 + 80002ba0: 00000013 nop + 80002ba4: 000f0313 mv t1,t5 + 80002ba8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bac: 00200293 li t0,2 + 80002bb0: fe5212e3 bne tp,t0,80002b94 + 80002bb4: 00ff0eb7 lui t4,0xff0 + 80002bb8: 7ffe8e9b addiw t4,t4,2047 + 80002bbc: 00800193 li gp,8 + 80002bc0: 0fd31a63 bne t1,t4,80002cb4 + +0000000080002bc4 : + 80002bc4: 00000213 li tp,0 + 80002bc8: f00ff0b7 lui ra,0xf00ff + 80002bcc: 00f0809b addiw ra,ra,15 + 80002bd0: 0f00ef13 ori t5,ra,240 + 80002bd4: 00000013 nop + 80002bd8: 00000013 nop + 80002bdc: 000f0313 mv t1,t5 + 80002be0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002be4: 00200293 li t0,2 + 80002be8: fe5210e3 bne tp,t0,80002bc8 + 80002bec: f00ffeb7 lui t4,0xf00ff + 80002bf0: 0ffe8e9b addiw t4,t4,255 + 80002bf4: 00900193 li gp,9 + 80002bf8: 0bd31e63 bne t1,t4,80002cb4 + +0000000080002bfc : + 80002bfc: 00000213 li tp,0 + 80002c00: 0ff010b7 lui ra,0xff01 + 80002c04: ff00809b addiw ra,ra,-16 + 80002c08: 0f00ef13 ori t5,ra,240 + 80002c0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c10: 00200293 li t0,2 + 80002c14: fe5216e3 bne tp,t0,80002c00 + 80002c18: 0ff01eb7 lui t4,0xff01 + 80002c1c: ff0e8e9b addiw t4,t4,-16 + 80002c20: 00a00193 li gp,10 + 80002c24: 09df1863 bne t5,t4,80002cb4 + +0000000080002c28 : + 80002c28: 00000213 li tp,0 + 80002c2c: 00ff00b7 lui ra,0xff0 + 80002c30: 0ff0809b addiw ra,ra,255 + 80002c34: 00000013 nop + 80002c38: f0f0ef13 ori t5,ra,-241 + 80002c3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c40: 00200293 li t0,2 + 80002c44: fe5214e3 bne tp,t0,80002c2c + 80002c48: fff00e93 li t4,-1 + 80002c4c: 00b00193 li gp,11 + 80002c50: 07df1263 bne t5,t4,80002cb4 + +0000000080002c54 : + 80002c54: 00000213 li tp,0 + 80002c58: f00ff0b7 lui ra,0xf00ff + 80002c5c: 00f0809b addiw ra,ra,15 + 80002c60: 00000013 nop + 80002c64: 00000013 nop + 80002c68: 0f00ef13 ori t5,ra,240 + 80002c6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c70: 00200293 li t0,2 + 80002c74: fe5212e3 bne tp,t0,80002c58 + 80002c78: f00ffeb7 lui t4,0xf00ff + 80002c7c: 0ffe8e9b addiw t4,t4,255 + 80002c80: 00c00193 li gp,12 + 80002c84: 03df1863 bne t5,t4,80002cb4 + +0000000080002c88 : + 80002c88: 0f006093 ori ra,zero,240 + 80002c8c: 0f000e93 li t4,240 + 80002c90: 00d00193 li gp,13 + 80002c94: 03d09063 bne ra,t4,80002cb4 + +0000000080002c98 : + 80002c98: 00ff00b7 lui ra,0xff0 + 80002c9c: 0ff0809b addiw ra,ra,255 + 80002ca0: 70f0e013 ori zero,ra,1807 + 80002ca4: 00000e93 li t4,0 + 80002ca8: 00e00193 li gp,14 + 80002cac: 01d01463 bne zero,t4,80002cb4 + 80002cb0: 00301a63 bne zero,gp,80002cc4 + +0000000080002cb4 : + 80002cb4: 00119513 slli a0,gp,0x1 + 80002cb8: 00050063 beqz a0,80002cb8 + 80002cbc: 00156513 ori a0,a0,1 + 80002cc0: 00000073 ecall + +0000000080002cc4 : + 80002cc4: 00100513 li a0,1 + 80002cc8: 00000073 ecall + 80002ccc: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sb b/Tests/isa/rv64ui-v-sb new file mode 100644 index 0000000..c334b0e Binary files /dev/null and b/Tests/isa/rv64ui-v-sb differ diff --git a/Tests/isa/rv64ui-v-sb.dump b/Tests/isa/rv64ui-v-sb.dump new file mode 100644 index 0000000..52b1645 --- /dev/null +++ b/Tests/isa/rv64ui-v-sb.dump @@ -0,0 +1,1169 @@ + +rv64ui-v-sb: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: a8068693 addi a3,a3,-1408 # 80002ed8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: ab460613 addi a2,a2,-1356 # 80002f68 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: a7c60613 addi a2,a2,-1412 # 80002f80 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 9cc68693 addi a3,a3,-1588 # 80002f20 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 9e868693 addi a3,a3,-1560 # 80003058 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 96860613 addi a2,a2,-1688 # 80003030 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 89c68693 addi a3,a3,-1892 # 80003088 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 7bc68693 addi a3,a3,1980 # 80002ff8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 74c68693 addi a3,a3,1868 # 80002fc0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 01300793 li a5,19 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 061a97b7 lui a5,0x61a9 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 7fc78793 addi a5,a5,2044 # 61a97fc <_start-0x79e56804> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00001097 auipc ra,0x1 + 80002acc: 53808093 addi ra,ra,1336 # 80004000 + 80002ad0: faa00113 li sp,-86 + 80002ad4: 00208023 sb sp,0(ra) + 80002ad8: 00008f03 lb t5,0(ra) + 80002adc: faa00e93 li t4,-86 + 80002ae0: 00200193 li gp,2 + 80002ae4: 3ddf1c63 bne t5,t4,80002ebc + +0000000080002ae8 : + 80002ae8: 00001097 auipc ra,0x1 + 80002aec: 51808093 addi ra,ra,1304 # 80004000 + 80002af0: 00000113 li sp,0 + 80002af4: 002080a3 sb sp,1(ra) + 80002af8: 00108f03 lb t5,1(ra) + 80002afc: 00000e93 li t4,0 + 80002b00: 00300193 li gp,3 + 80002b04: 3bdf1c63 bne t5,t4,80002ebc + +0000000080002b08 : + 80002b08: 00001097 auipc ra,0x1 + 80002b0c: 4f808093 addi ra,ra,1272 # 80004000 + 80002b10: fffff137 lui sp,0xfffff + 80002b14: fa01011b addiw sp,sp,-96 + 80002b18: 00208123 sb sp,2(ra) + 80002b1c: 00209f03 lh t5,2(ra) + 80002b20: fffffeb7 lui t4,0xfffff + 80002b24: fa0e8e9b addiw t4,t4,-96 + 80002b28: 00400193 li gp,4 + 80002b2c: 39df1863 bne t5,t4,80002ebc + +0000000080002b30 : + 80002b30: 00001097 auipc ra,0x1 + 80002b34: 4d008093 addi ra,ra,1232 # 80004000 + 80002b38: 00a00113 li sp,10 + 80002b3c: 002081a3 sb sp,3(ra) + 80002b40: 00308f03 lb t5,3(ra) + 80002b44: 00a00e93 li t4,10 + 80002b48: 00500193 li gp,5 + 80002b4c: 37df1863 bne t5,t4,80002ebc + +0000000080002b50 : + 80002b50: 00001097 auipc ra,0x1 + 80002b54: 4b708093 addi ra,ra,1207 # 80004007 + 80002b58: faa00113 li sp,-86 + 80002b5c: fe208ea3 sb sp,-3(ra) + 80002b60: ffd08f03 lb t5,-3(ra) + 80002b64: faa00e93 li t4,-86 + 80002b68: 00600193 li gp,6 + 80002b6c: 35df1863 bne t5,t4,80002ebc + +0000000080002b70 : + 80002b70: 00001097 auipc ra,0x1 + 80002b74: 49708093 addi ra,ra,1175 # 80004007 + 80002b78: 00000113 li sp,0 + 80002b7c: fe208f23 sb sp,-2(ra) + 80002b80: ffe08f03 lb t5,-2(ra) + 80002b84: 00000e93 li t4,0 + 80002b88: 00700193 li gp,7 + 80002b8c: 33df1863 bne t5,t4,80002ebc + +0000000080002b90 : + 80002b90: 00001097 auipc ra,0x1 + 80002b94: 47708093 addi ra,ra,1143 # 80004007 + 80002b98: fa000113 li sp,-96 + 80002b9c: fe208fa3 sb sp,-1(ra) + 80002ba0: fff08f03 lb t5,-1(ra) + 80002ba4: fa000e93 li t4,-96 + 80002ba8: 00800193 li gp,8 + 80002bac: 31df1863 bne t5,t4,80002ebc + +0000000080002bb0 : + 80002bb0: 00001097 auipc ra,0x1 + 80002bb4: 45708093 addi ra,ra,1111 # 80004007 + 80002bb8: 00a00113 li sp,10 + 80002bbc: 00208023 sb sp,0(ra) + 80002bc0: 00008f03 lb t5,0(ra) + 80002bc4: 00a00e93 li t4,10 + 80002bc8: 00900193 li gp,9 + 80002bcc: 2fdf1863 bne t5,t4,80002ebc + +0000000080002bd0 : + 80002bd0: 00001097 auipc ra,0x1 + 80002bd4: 43808093 addi ra,ra,1080 # 80004008 + 80002bd8: 12345137 lui sp,0x12345 + 80002bdc: 6781011b addiw sp,sp,1656 + 80002be0: fe008213 addi tp,ra,-32 + 80002be4: 02220023 sb sp,32(tp) # 20 <_start-0x7fffffe0> + 80002be8: 00008283 lb t0,0(ra) + 80002bec: 07800e93 li t4,120 + 80002bf0: 00a00193 li gp,10 + 80002bf4: 2dd29463 bne t0,t4,80002ebc + +0000000080002bf8 : + 80002bf8: 00001097 auipc ra,0x1 + 80002bfc: 41008093 addi ra,ra,1040 # 80004008 + 80002c00: 00003137 lui sp,0x3 + 80002c04: 0981011b addiw sp,sp,152 + 80002c08: ffa08093 addi ra,ra,-6 + 80002c0c: 002083a3 sb sp,7(ra) + 80002c10: 00001217 auipc tp,0x1 + 80002c14: 3f920213 addi tp,tp,1017 # 80004009 + 80002c18: 00020283 lb t0,0(tp) # 0 <_start-0x80000000> + 80002c1c: f9800e93 li t4,-104 + 80002c20: 00b00193 li gp,11 + 80002c24: 29d29c63 bne t0,t4,80002ebc + +0000000080002c28 : + 80002c28: 00c00193 li gp,12 + 80002c2c: 00000213 li tp,0 + 80002c30: fdd00093 li ra,-35 + 80002c34: 00001117 auipc sp,0x1 + 80002c38: 3cc10113 addi sp,sp,972 # 80004000 + 80002c3c: 00110023 sb ra,0(sp) + 80002c40: 00010f03 lb t5,0(sp) + 80002c44: fdd00e93 li t4,-35 + 80002c48: 27df1a63 bne t5,t4,80002ebc + 80002c4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c50: 00200293 li t0,2 + 80002c54: fc521ee3 bne tp,t0,80002c30 + +0000000080002c58 : + 80002c58: 00d00193 li gp,13 + 80002c5c: 00000213 li tp,0 + 80002c60: fcd00093 li ra,-51 + 80002c64: 00001117 auipc sp,0x1 + 80002c68: 39c10113 addi sp,sp,924 # 80004000 + 80002c6c: 00000013 nop + 80002c70: 001100a3 sb ra,1(sp) + 80002c74: 00110f03 lb t5,1(sp) + 80002c78: fcd00e93 li t4,-51 + 80002c7c: 25df1063 bne t5,t4,80002ebc + 80002c80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c84: 00200293 li t0,2 + 80002c88: fc521ce3 bne tp,t0,80002c60 + +0000000080002c8c : + 80002c8c: 00e00193 li gp,14 + 80002c90: 00000213 li tp,0 + 80002c94: fcc00093 li ra,-52 + 80002c98: 00001117 auipc sp,0x1 + 80002c9c: 36810113 addi sp,sp,872 # 80004000 + 80002ca0: 00000013 nop + 80002ca4: 00000013 nop + 80002ca8: 00110123 sb ra,2(sp) + 80002cac: 00210f03 lb t5,2(sp) + 80002cb0: fcc00e93 li t4,-52 + 80002cb4: 21df1463 bne t5,t4,80002ebc + 80002cb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cbc: 00200293 li t0,2 + 80002cc0: fc521ae3 bne tp,t0,80002c94 + +0000000080002cc4 : + 80002cc4: 00f00193 li gp,15 + 80002cc8: 00000213 li tp,0 + 80002ccc: fbc00093 li ra,-68 + 80002cd0: 00000013 nop + 80002cd4: 00001117 auipc sp,0x1 + 80002cd8: 32c10113 addi sp,sp,812 # 80004000 + 80002cdc: 001101a3 sb ra,3(sp) + 80002ce0: 00310f03 lb t5,3(sp) + 80002ce4: fbc00e93 li t4,-68 + 80002ce8: 1ddf1a63 bne t5,t4,80002ebc + 80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf0: 00200293 li t0,2 + 80002cf4: fc521ce3 bne tp,t0,80002ccc + +0000000080002cf8 : + 80002cf8: 01000193 li gp,16 + 80002cfc: 00000213 li tp,0 + 80002d00: fbb00093 li ra,-69 + 80002d04: 00000013 nop + 80002d08: 00001117 auipc sp,0x1 + 80002d0c: 2f810113 addi sp,sp,760 # 80004000 + 80002d10: 00000013 nop + 80002d14: 00110223 sb ra,4(sp) + 80002d18: 00410f03 lb t5,4(sp) + 80002d1c: fbb00e93 li t4,-69 + 80002d20: 19df1e63 bne t5,t4,80002ebc + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fc521ae3 bne tp,t0,80002d00 + +0000000080002d30 : + 80002d30: 01100193 li gp,17 + 80002d34: 00000213 li tp,0 + 80002d38: fab00093 li ra,-85 + 80002d3c: 00000013 nop + 80002d40: 00000013 nop + 80002d44: 00001117 auipc sp,0x1 + 80002d48: 2bc10113 addi sp,sp,700 # 80004000 + 80002d4c: 001102a3 sb ra,5(sp) + 80002d50: 00510f03 lb t5,5(sp) + 80002d54: fab00e93 li t4,-85 + 80002d58: 17df1263 bne t5,t4,80002ebc + 80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d60: 00200293 li t0,2 + 80002d64: fc521ae3 bne tp,t0,80002d38 + +0000000080002d68 : + 80002d68: 01200193 li gp,18 + 80002d6c: 00000213 li tp,0 + 80002d70: 00001117 auipc sp,0x1 + 80002d74: 29010113 addi sp,sp,656 # 80004000 + 80002d78: 03300093 li ra,51 + 80002d7c: 00110023 sb ra,0(sp) + 80002d80: 00010f03 lb t5,0(sp) + 80002d84: 03300e93 li t4,51 + 80002d88: 13df1a63 bne t5,t4,80002ebc + 80002d8c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d90: 00200293 li t0,2 + 80002d94: fc521ee3 bne tp,t0,80002d70 + +0000000080002d98 : + 80002d98: 01300193 li gp,19 + 80002d9c: 00000213 li tp,0 + 80002da0: 00001117 auipc sp,0x1 + 80002da4: 26010113 addi sp,sp,608 # 80004000 + 80002da8: 02300093 li ra,35 + 80002dac: 00000013 nop + 80002db0: 001100a3 sb ra,1(sp) + 80002db4: 00110f03 lb t5,1(sp) + 80002db8: 02300e93 li t4,35 + 80002dbc: 11df1063 bne t5,t4,80002ebc + 80002dc0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dc4: 00200293 li t0,2 + 80002dc8: fc521ce3 bne tp,t0,80002da0 + +0000000080002dcc : + 80002dcc: 01400193 li gp,20 + 80002dd0: 00000213 li tp,0 + 80002dd4: 00001117 auipc sp,0x1 + 80002dd8: 22c10113 addi sp,sp,556 # 80004000 + 80002ddc: 02200093 li ra,34 + 80002de0: 00000013 nop + 80002de4: 00000013 nop + 80002de8: 00110123 sb ra,2(sp) + 80002dec: 00210f03 lb t5,2(sp) + 80002df0: 02200e93 li t4,34 + 80002df4: 0ddf1463 bne t5,t4,80002ebc + 80002df8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dfc: 00200293 li t0,2 + 80002e00: fc521ae3 bne tp,t0,80002dd4 + +0000000080002e04 : + 80002e04: 01500193 li gp,21 + 80002e08: 00000213 li tp,0 + 80002e0c: 00001117 auipc sp,0x1 + 80002e10: 1f410113 addi sp,sp,500 # 80004000 + 80002e14: 00000013 nop + 80002e18: 01200093 li ra,18 + 80002e1c: 001101a3 sb ra,3(sp) + 80002e20: 00310f03 lb t5,3(sp) + 80002e24: 01200e93 li t4,18 + 80002e28: 09df1a63 bne t5,t4,80002ebc + 80002e2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e30: 00200293 li t0,2 + 80002e34: fc521ce3 bne tp,t0,80002e0c + +0000000080002e38 : + 80002e38: 01600193 li gp,22 + 80002e3c: 00000213 li tp,0 + 80002e40: 00001117 auipc sp,0x1 + 80002e44: 1c010113 addi sp,sp,448 # 80004000 + 80002e48: 00000013 nop + 80002e4c: 01100093 li ra,17 + 80002e50: 00000013 nop + 80002e54: 00110223 sb ra,4(sp) + 80002e58: 00410f03 lb t5,4(sp) + 80002e5c: 01100e93 li t4,17 + 80002e60: 05df1e63 bne t5,t4,80002ebc + 80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e68: 00200293 li t0,2 + 80002e6c: fc521ae3 bne tp,t0,80002e40 + +0000000080002e70 : + 80002e70: 01700193 li gp,23 + 80002e74: 00000213 li tp,0 + 80002e78: 00001117 auipc sp,0x1 + 80002e7c: 18810113 addi sp,sp,392 # 80004000 + 80002e80: 00000013 nop + 80002e84: 00000013 nop + 80002e88: 00100093 li ra,1 + 80002e8c: 001102a3 sb ra,5(sp) + 80002e90: 00510f03 lb t5,5(sp) + 80002e94: 00100e93 li t4,1 + 80002e98: 03df1263 bne t5,t4,80002ebc + 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea0: 00200293 li t0,2 + 80002ea4: fc521ae3 bne tp,t0,80002e78 + 80002ea8: 0ef00513 li a0,239 + 80002eac: 00001597 auipc a1,0x1 + 80002eb0: 15458593 addi a1,a1,340 # 80004000 + 80002eb4: 00a581a3 sb a0,3(a1) + 80002eb8: 00301a63 bne zero,gp,80002ecc + +0000000080002ebc : + 80002ebc: 00119513 slli a0,gp,0x1 + 80002ec0: 00050063 beqz a0,80002ec0 + 80002ec4: 00156513 ori a0,a0,1 + 80002ec8: 00000073 ecall + +0000000080002ecc : + 80002ecc: 00100513 li a0,1 + 80002ed0: 00000073 ecall + 80002ed4: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: jal t6,800026fe + +0000000080004001 : + 80004001: jal t6,800026ff + +0000000080004002 : + 80004002: jal t6,80002700 + +0000000080004003 : + 80004003: jal t6,80002701 + +0000000080004004 : + 80004004: jal t6,80002702 + +0000000080004005 : + 80004005: jal t6,80002703 + +0000000080004006 : + 80004006: jal t6,80002704 + +0000000080004007 : + 80004007: jal t6,80012007 <_end+0x8817> + +0000000080004008 : + 80004008: jal t6,80012008 <_end+0x8818> + +0000000080004009 : + 80004009: ef Address 0x0000000080004009 is out of bounds. + + 8000400d: diff --git a/Tests/isa/rv64ui-v-sd b/Tests/isa/rv64ui-v-sd new file mode 100644 index 0000000..f611117 Binary files /dev/null and b/Tests/isa/rv64ui-v-sd differ diff --git a/Tests/isa/rv64ui-v-sd.dump b/Tests/isa/rv64ui-v-sd.dump new file mode 100644 index 0000000..3fc6298 --- /dev/null +++ b/Tests/isa/rv64ui-v-sd.dump @@ -0,0 +1,1325 @@ + +rv64ui-v-sd: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: cd068693 addi a3,a3,-816 # 80003128 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: d0460613 addi a2,a2,-764 # 800031b8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: ccc60613 addi a2,a2,-820 # 800031d0 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: c1c68693 addi a3,a3,-996 # 80003170 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: c3868693 addi a3,a3,-968 # 800032a8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: bb860613 addi a2,a2,-1096 # 80003280 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: aec68693 addi a3,a3,-1300 # 800032d8 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: a0c68693 addi a3,a3,-1524 # 80003248 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 99c68693 addi a3,a3,-1636 # 80003210 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 00a00793 li a5,10 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 036b47b7 lui a5,0x36b4 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: c8578793 addi a5,a5,-891 # 36b3c85 <_start-0x7c94c37b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00001097 auipc ra,0x1 + 80002acc: 53808093 addi ra,ra,1336 # 80004000 + 80002ad0: 00550137 lui sp,0x550 + 80002ad4: 0551011b addiw sp,sp,85 + 80002ad8: 01011113 slli sp,sp,0x10 + 80002adc: 05510113 addi sp,sp,85 # 550055 <_start-0x7faaffab> + 80002ae0: 01111113 slli sp,sp,0x11 + 80002ae4: 0aa10113 addi sp,sp,170 + 80002ae8: 0020b023 sd sp,0(ra) + 80002aec: 0000bf03 ld t5,0(ra) + 80002af0: 00550eb7 lui t4,0x550 + 80002af4: 055e8e9b addiw t4,t4,85 + 80002af8: 010e9e93 slli t4,t4,0x10 + 80002afc: 055e8e93 addi t4,t4,85 # 550055 <_start-0x7faaffab> + 80002b00: 011e9e93 slli t4,t4,0x11 + 80002b04: 0aae8e93 addi t4,t4,170 + 80002b08: 00200193 li gp,2 + 80002b0c: 61df1063 bne t5,t4,8000310c + +0000000080002b10 : + 80002b10: 00001097 auipc ra,0x1 + 80002b14: 4f008093 addi ra,ra,1264 # 80004000 + 80002b18: ffd50137 lui sp,0xffd50 + 80002b1c: 0551011b addiw sp,sp,85 + 80002b20: 01011113 slli sp,sp,0x10 + 80002b24: 05510113 addi sp,sp,85 # ffffffffffd50055 <_end+0xffffffff7fd46865> + 80002b28: 00d11113 slli sp,sp,0xd + 80002b2c: 00b10113 addi sp,sp,11 + 80002b30: 00c11113 slli sp,sp,0xc + 80002b34: a0010113 addi sp,sp,-1536 + 80002b38: 0020b423 sd sp,8(ra) + 80002b3c: 0080bf03 ld t5,8(ra) + 80002b40: ffd50eb7 lui t4,0xffd50 + 80002b44: 055e8e9b addiw t4,t4,85 + 80002b48: 010e9e93 slli t4,t4,0x10 + 80002b4c: 055e8e93 addi t4,t4,85 # ffffffffffd50055 <_end+0xffffffff7fd46865> + 80002b50: 00de9e93 slli t4,t4,0xd + 80002b54: 00be8e93 addi t4,t4,11 + 80002b58: 00ce9e93 slli t4,t4,0xc + 80002b5c: a00e8e93 addi t4,t4,-1536 + 80002b60: 00300193 li gp,3 + 80002b64: 5bdf1463 bne t5,t4,8000310c + +0000000080002b68 : + 80002b68: 00001097 auipc ra,0x1 + 80002b6c: 49808093 addi ra,ra,1176 # 80004000 + 80002b70: 00550137 lui sp,0x550 + 80002b74: 0551011b addiw sp,sp,85 + 80002b78: 00d11113 slli sp,sp,0xd + 80002b7c: 00b10113 addi sp,sp,11 # 55000b <_start-0x7faafff5> + 80002b80: 00c11113 slli sp,sp,0xc + 80002b84: a0110113 addi sp,sp,-1535 + 80002b88: 00c11113 slli sp,sp,0xc + 80002b8c: aa010113 addi sp,sp,-1376 + 80002b90: 0020b823 sd sp,16(ra) + 80002b94: 0100bf03 ld t5,16(ra) + 80002b98: 00550eb7 lui t4,0x550 + 80002b9c: 055e8e9b addiw t4,t4,85 + 80002ba0: 00de9e93 slli t4,t4,0xd + 80002ba4: 00be8e93 addi t4,t4,11 # 55000b <_start-0x7faafff5> + 80002ba8: 00ce9e93 slli t4,t4,0xc + 80002bac: a01e8e93 addi t4,t4,-1535 + 80002bb0: 00ce9e93 slli t4,t4,0xc + 80002bb4: aa0e8e93 addi t4,t4,-1376 + 80002bb8: 00400193 li gp,4 + 80002bbc: 55df1863 bne t5,t4,8000310c + +0000000080002bc0 : + 80002bc0: 00001097 auipc ra,0x1 + 80002bc4: 44008093 addi ra,ra,1088 # 80004000 + 80002bc8: fffd0137 lui sp,0xfffd0 + 80002bcc: 0551011b addiw sp,sp,85 + 80002bd0: 01011113 slli sp,sp,0x10 + 80002bd4: 05510113 addi sp,sp,85 # fffffffffffd0055 <_end+0xffffffff7ffc6865> + 80002bd8: 01011113 slli sp,sp,0x10 + 80002bdc: 05510113 addi sp,sp,85 + 80002be0: 00d11113 slli sp,sp,0xd + 80002be4: 00a10113 addi sp,sp,10 + 80002be8: 0020bc23 sd sp,24(ra) + 80002bec: 0180bf03 ld t5,24(ra) + 80002bf0: fffd0eb7 lui t4,0xfffd0 + 80002bf4: 055e8e9b addiw t4,t4,85 + 80002bf8: 010e9e93 slli t4,t4,0x10 + 80002bfc: 055e8e93 addi t4,t4,85 # fffffffffffd0055 <_end+0xffffffff7ffc6865> + 80002c00: 010e9e93 slli t4,t4,0x10 + 80002c04: 055e8e93 addi t4,t4,85 + 80002c08: 00de9e93 slli t4,t4,0xd + 80002c0c: 00ae8e93 addi t4,t4,10 + 80002c10: 00500193 li gp,5 + 80002c14: 4fdf1c63 bne t5,t4,8000310c + +0000000080002c18 : + 80002c18: 00001097 auipc ra,0x1 + 80002c1c: 42008093 addi ra,ra,1056 # 80004038 + 80002c20: 00550137 lui sp,0x550 + 80002c24: 0551011b addiw sp,sp,85 + 80002c28: 01011113 slli sp,sp,0x10 + 80002c2c: 05510113 addi sp,sp,85 # 550055 <_start-0x7faaffab> + 80002c30: 01111113 slli sp,sp,0x11 + 80002c34: 0aa10113 addi sp,sp,170 + 80002c38: fe20b423 sd sp,-24(ra) + 80002c3c: fe80bf03 ld t5,-24(ra) + 80002c40: 00550eb7 lui t4,0x550 + 80002c44: 055e8e9b addiw t4,t4,85 + 80002c48: 010e9e93 slli t4,t4,0x10 + 80002c4c: 055e8e93 addi t4,t4,85 # 550055 <_start-0x7faaffab> + 80002c50: 011e9e93 slli t4,t4,0x11 + 80002c54: 0aae8e93 addi t4,t4,170 + 80002c58: 00600193 li gp,6 + 80002c5c: 4bdf1863 bne t5,t4,8000310c + +0000000080002c60 : + 80002c60: 00001097 auipc ra,0x1 + 80002c64: 3d808093 addi ra,ra,984 # 80004038 + 80002c68: ffd50137 lui sp,0xffd50 + 80002c6c: 0551011b addiw sp,sp,85 + 80002c70: 01011113 slli sp,sp,0x10 + 80002c74: 05510113 addi sp,sp,85 # ffffffffffd50055 <_end+0xffffffff7fd46865> + 80002c78: 00d11113 slli sp,sp,0xd + 80002c7c: 00b10113 addi sp,sp,11 + 80002c80: 00c11113 slli sp,sp,0xc + 80002c84: a0010113 addi sp,sp,-1536 + 80002c88: fe20b823 sd sp,-16(ra) + 80002c8c: ff00bf03 ld t5,-16(ra) + 80002c90: ffd50eb7 lui t4,0xffd50 + 80002c94: 055e8e9b addiw t4,t4,85 + 80002c98: 010e9e93 slli t4,t4,0x10 + 80002c9c: 055e8e93 addi t4,t4,85 # ffffffffffd50055 <_end+0xffffffff7fd46865> + 80002ca0: 00de9e93 slli t4,t4,0xd + 80002ca4: 00be8e93 addi t4,t4,11 + 80002ca8: 00ce9e93 slli t4,t4,0xc + 80002cac: a00e8e93 addi t4,t4,-1536 + 80002cb0: 00700193 li gp,7 + 80002cb4: 45df1c63 bne t5,t4,8000310c + +0000000080002cb8 : + 80002cb8: 00001097 auipc ra,0x1 + 80002cbc: 38008093 addi ra,ra,896 # 80004038 + 80002cc0: 00550137 lui sp,0x550 + 80002cc4: 0551011b addiw sp,sp,85 + 80002cc8: 00d11113 slli sp,sp,0xd + 80002ccc: 00b10113 addi sp,sp,11 # 55000b <_start-0x7faafff5> + 80002cd0: 00c11113 slli sp,sp,0xc + 80002cd4: a0110113 addi sp,sp,-1535 + 80002cd8: 00c11113 slli sp,sp,0xc + 80002cdc: aa010113 addi sp,sp,-1376 + 80002ce0: fe20bc23 sd sp,-8(ra) + 80002ce4: ff80bf03 ld t5,-8(ra) + 80002ce8: 00550eb7 lui t4,0x550 + 80002cec: 055e8e9b addiw t4,t4,85 + 80002cf0: 00de9e93 slli t4,t4,0xd + 80002cf4: 00be8e93 addi t4,t4,11 # 55000b <_start-0x7faafff5> + 80002cf8: 00ce9e93 slli t4,t4,0xc + 80002cfc: a01e8e93 addi t4,t4,-1535 + 80002d00: 00ce9e93 slli t4,t4,0xc + 80002d04: aa0e8e93 addi t4,t4,-1376 + 80002d08: 00800193 li gp,8 + 80002d0c: 41df1063 bne t5,t4,8000310c + +0000000080002d10 : + 80002d10: 00001097 auipc ra,0x1 + 80002d14: 32808093 addi ra,ra,808 # 80004038 + 80002d18: fffd0137 lui sp,0xfffd0 + 80002d1c: 0551011b addiw sp,sp,85 + 80002d20: 01011113 slli sp,sp,0x10 + 80002d24: 05510113 addi sp,sp,85 # fffffffffffd0055 <_end+0xffffffff7ffc6865> + 80002d28: 01011113 slli sp,sp,0x10 + 80002d2c: 05510113 addi sp,sp,85 + 80002d30: 00d11113 slli sp,sp,0xd + 80002d34: 00a10113 addi sp,sp,10 + 80002d38: 0020b023 sd sp,0(ra) + 80002d3c: 0000bf03 ld t5,0(ra) + 80002d40: fffd0eb7 lui t4,0xfffd0 + 80002d44: 055e8e9b addiw t4,t4,85 + 80002d48: 010e9e93 slli t4,t4,0x10 + 80002d4c: 055e8e93 addi t4,t4,85 # fffffffffffd0055 <_end+0xffffffff7ffc6865> + 80002d50: 010e9e93 slli t4,t4,0x10 + 80002d54: 055e8e93 addi t4,t4,85 + 80002d58: 00de9e93 slli t4,t4,0xd + 80002d5c: 00ae8e93 addi t4,t4,10 + 80002d60: 00900193 li gp,9 + 80002d64: 3bdf1463 bne t5,t4,8000310c + +0000000080002d68 : + 80002d68: 00001097 auipc ra,0x1 + 80002d6c: 2d808093 addi ra,ra,728 # 80004040 + 80002d70: 00247137 lui sp,0x247 + 80002d74: 8ad1011b addiw sp,sp,-1875 + 80002d78: 00e11113 slli sp,sp,0xe + 80002d7c: c0910113 addi sp,sp,-1015 # 246c09 <_start-0x7fdb93f7> + 80002d80: 00d11113 slli sp,sp,0xd + 80002d84: 34510113 addi sp,sp,837 + 80002d88: 00c11113 slli sp,sp,0xc + 80002d8c: 67810113 addi sp,sp,1656 + 80002d90: fe008213 addi tp,ra,-32 + 80002d94: 02223023 sd sp,32(tp) # 20 <_start-0x7fffffe0> + 80002d98: 0000b283 ld t0,0(ra) + 80002d9c: 00247eb7 lui t4,0x247 + 80002da0: 8ade8e9b addiw t4,t4,-1875 + 80002da4: 00ee9e93 slli t4,t4,0xe + 80002da8: c09e8e93 addi t4,t4,-1015 # 246c09 <_start-0x7fdb93f7> + 80002dac: 00de9e93 slli t4,t4,0xd + 80002db0: 345e8e93 addi t4,t4,837 + 80002db4: 00ce9e93 slli t4,t4,0xc + 80002db8: 678e8e93 addi t4,t4,1656 + 80002dbc: 00a00193 li gp,10 + 80002dc0: 35d29663 bne t0,t4,8000310c + +0000000080002dc4 : + 80002dc4: 00001097 auipc ra,0x1 + 80002dc8: 27c08093 addi ra,ra,636 # 80004040 + 80002dcc: 00b04137 lui sp,0xb04 + 80002dd0: 2611011b addiw sp,sp,609 + 80002dd4: 00c11113 slli sp,sp,0xc + 80002dd8: 30b10113 addi sp,sp,779 # b0430b <_start-0x7f4fbcf5> + 80002ddc: 00f11113 slli sp,sp,0xf + 80002de0: 21310113 addi sp,sp,531 + 80002de4: 00c11113 slli sp,sp,0xc + 80002de8: 09810113 addi sp,sp,152 + 80002dec: ffd08093 addi ra,ra,-3 + 80002df0: 0020b5a3 sd sp,11(ra) + 80002df4: 00001217 auipc tp,0x1 + 80002df8: 25420213 addi tp,tp,596 # 80004048 + 80002dfc: 00023283 ld t0,0(tp) # 0 <_start-0x80000000> + 80002e00: 00b04eb7 lui t4,0xb04 + 80002e04: 261e8e9b addiw t4,t4,609 + 80002e08: 00ce9e93 slli t4,t4,0xc + 80002e0c: 30be8e93 addi t4,t4,779 # b0430b <_start-0x7f4fbcf5> + 80002e10: 00fe9e93 slli t4,t4,0xf + 80002e14: 213e8e93 addi t4,t4,531 + 80002e18: 00ce9e93 slli t4,t4,0xc + 80002e1c: 098e8e93 addi t4,t4,152 + 80002e20: 00b00193 li gp,11 + 80002e24: 2fd29463 bne t0,t4,8000310c + +0000000080002e28 : + 80002e28: 00c00193 li gp,12 + 80002e2c: 00000213 li tp,0 + 80002e30: 0abbd0b7 lui ra,0xabbd + 80002e34: cdd0809b addiw ra,ra,-803 + 80002e38: 00001117 auipc sp,0x1 + 80002e3c: 1c810113 addi sp,sp,456 # 80004000 + 80002e40: 00113023 sd ra,0(sp) + 80002e44: 00013f03 ld t5,0(sp) + 80002e48: 0abbdeb7 lui t4,0xabbd + 80002e4c: cdde8e9b addiw t4,t4,-803 + 80002e50: 2bdf1e63 bne t5,t4,8000310c + 80002e54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e58: 00200293 li t0,2 + 80002e5c: fc521ae3 bne tp,t0,80002e30 + +0000000080002e60 : + 80002e60: 00d00193 li gp,13 + 80002e64: 00000213 li tp,0 + 80002e68: 0aabc0b7 lui ra,0xaabc + 80002e6c: ccd0809b addiw ra,ra,-819 + 80002e70: 00001117 auipc sp,0x1 + 80002e74: 19010113 addi sp,sp,400 # 80004000 + 80002e78: 00000013 nop + 80002e7c: 00113423 sd ra,8(sp) + 80002e80: 00813f03 ld t5,8(sp) + 80002e84: 0aabceb7 lui t4,0xaabc + 80002e88: ccde8e9b addiw t4,t4,-819 + 80002e8c: 29df1063 bne t5,t4,8000310c + 80002e90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e94: 00200293 li t0,2 + 80002e98: fc5218e3 bne tp,t0,80002e68 + +0000000080002e9c : + 80002e9c: 00e00193 li gp,14 + 80002ea0: 00000213 li tp,0 + 80002ea4: 0daac0b7 lui ra,0xdaac + 80002ea8: bcc0809b addiw ra,ra,-1076 + 80002eac: 00001117 auipc sp,0x1 + 80002eb0: 15410113 addi sp,sp,340 # 80004000 + 80002eb4: 00000013 nop + 80002eb8: 00000013 nop + 80002ebc: 00113823 sd ra,16(sp) + 80002ec0: 01013f03 ld t5,16(sp) + 80002ec4: 0daaceb7 lui t4,0xdaac + 80002ec8: bcce8e9b addiw t4,t4,-1076 + 80002ecc: 25df1063 bne t5,t4,8000310c + 80002ed0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ed4: 00200293 li t0,2 + 80002ed8: fc5216e3 bne tp,t0,80002ea4 + +0000000080002edc : + 80002edc: 00f00193 li gp,15 + 80002ee0: 00000213 li tp,0 + 80002ee4: 0ddab0b7 lui ra,0xddab + 80002ee8: bbc0809b addiw ra,ra,-1092 + 80002eec: 00000013 nop + 80002ef0: 00001117 auipc sp,0x1 + 80002ef4: 11010113 addi sp,sp,272 # 80004000 + 80002ef8: 00113c23 sd ra,24(sp) + 80002efc: 01813f03 ld t5,24(sp) + 80002f00: 0ddabeb7 lui t4,0xddab + 80002f04: bbce8e9b addiw t4,t4,-1092 + 80002f08: 21df1263 bne t5,t4,8000310c + 80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f10: 00200293 li t0,2 + 80002f14: fc5218e3 bne tp,t0,80002ee4 + +0000000080002f18 : + 80002f18: 01000193 li gp,16 + 80002f1c: 00000213 li tp,0 + 80002f20: 0cddb0b7 lui ra,0xcddb + 80002f24: abb0809b addiw ra,ra,-1349 + 80002f28: 00000013 nop + 80002f2c: 00001117 auipc sp,0x1 + 80002f30: 0d410113 addi sp,sp,212 # 80004000 + 80002f34: 00000013 nop + 80002f38: 02113023 sd ra,32(sp) + 80002f3c: 02013f03 ld t5,32(sp) + 80002f40: 0cddbeb7 lui t4,0xcddb + 80002f44: abbe8e9b addiw t4,t4,-1349 + 80002f48: 1ddf1263 bne t5,t4,8000310c + 80002f4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f50: 00200293 li t0,2 + 80002f54: fc5216e3 bne tp,t0,80002f20 + +0000000080002f58 : + 80002f58: 01100193 li gp,17 + 80002f5c: 00000213 li tp,0 + 80002f60: 0ccde0b7 lui ra,0xccde + 80002f64: aab0809b addiw ra,ra,-1365 + 80002f68: 00000013 nop + 80002f6c: 00000013 nop + 80002f70: 00001117 auipc sp,0x1 + 80002f74: 09010113 addi sp,sp,144 # 80004000 + 80002f78: 02113423 sd ra,40(sp) + 80002f7c: 02813f03 ld t5,40(sp) + 80002f80: 0ccdeeb7 lui t4,0xccde + 80002f84: aabe8e9b addiw t4,t4,-1365 + 80002f88: 19df1263 bne t5,t4,8000310c + 80002f8c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f90: 00200293 li t0,2 + 80002f94: fc5216e3 bne tp,t0,80002f60 + +0000000080002f98 : + 80002f98: 01200193 li gp,18 + 80002f9c: 00000213 li tp,0 + 80002fa0: 00001117 auipc sp,0x1 + 80002fa4: 06010113 addi sp,sp,96 # 80004000 + 80002fa8: 001120b7 lui ra,0x112 + 80002fac: 2330809b addiw ra,ra,563 + 80002fb0: 00113023 sd ra,0(sp) + 80002fb4: 00013f03 ld t5,0(sp) + 80002fb8: 00112eb7 lui t4,0x112 + 80002fbc: 233e8e9b addiw t4,t4,563 + 80002fc0: 15df1663 bne t5,t4,8000310c + 80002fc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fc8: 00200293 li t0,2 + 80002fcc: fc521ae3 bne tp,t0,80002fa0 + +0000000080002fd0 : + 80002fd0: 01300193 li gp,19 + 80002fd4: 00000213 li tp,0 + 80002fd8: 00001117 auipc sp,0x1 + 80002fdc: 02810113 addi sp,sp,40 # 80004000 + 80002fe0: 300110b7 lui ra,0x30011 + 80002fe4: 2230809b addiw ra,ra,547 + 80002fe8: 00000013 nop + 80002fec: 00113423 sd ra,8(sp) + 80002ff0: 00813f03 ld t5,8(sp) + 80002ff4: 30011eb7 lui t4,0x30011 + 80002ff8: 223e8e9b addiw t4,t4,547 + 80002ffc: 11df1863 bne t5,t4,8000310c + 80003000: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003004: 00200293 li t0,2 + 80003008: fc5218e3 bne tp,t0,80002fd8 + +000000008000300c : + 8000300c: 01400193 li gp,20 + 80003010: 00000213 li tp,0 + 80003014: 00001117 auipc sp,0x1 + 80003018: fec10113 addi sp,sp,-20 # 80004000 + 8000301c: 330010b7 lui ra,0x33001 + 80003020: 1220809b addiw ra,ra,290 + 80003024: 00000013 nop + 80003028: 00000013 nop + 8000302c: 00113823 sd ra,16(sp) + 80003030: 01013f03 ld t5,16(sp) + 80003034: 33001eb7 lui t4,0x33001 + 80003038: 122e8e9b addiw t4,t4,290 + 8000303c: 0ddf1863 bne t5,t4,8000310c + 80003040: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003044: 00200293 li t0,2 + 80003048: fc5216e3 bne tp,t0,80003014 + +000000008000304c : + 8000304c: 01500193 li gp,21 + 80003050: 00000213 li tp,0 + 80003054: 00001117 auipc sp,0x1 + 80003058: fac10113 addi sp,sp,-84 # 80004000 + 8000305c: 00000013 nop + 80003060: 233000b7 lui ra,0x23300 + 80003064: 1120809b addiw ra,ra,274 + 80003068: 00113c23 sd ra,24(sp) + 8000306c: 01813f03 ld t5,24(sp) + 80003070: 23300eb7 lui t4,0x23300 + 80003074: 112e8e9b addiw t4,t4,274 + 80003078: 09df1a63 bne t5,t4,8000310c + 8000307c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003080: 00200293 li t0,2 + 80003084: fc5218e3 bne tp,t0,80003054 + +0000000080003088 : + 80003088: 01600193 li gp,22 + 8000308c: 00000213 li tp,0 + 80003090: 00001117 auipc sp,0x1 + 80003094: f7010113 addi sp,sp,-144 # 80004000 + 80003098: 00000013 nop + 8000309c: 223300b7 lui ra,0x22330 + 800030a0: 0110809b addiw ra,ra,17 + 800030a4: 00000013 nop + 800030a8: 02113023 sd ra,32(sp) + 800030ac: 02013f03 ld t5,32(sp) + 800030b0: 22330eb7 lui t4,0x22330 + 800030b4: 011e8e9b addiw t4,t4,17 + 800030b8: 05df1a63 bne t5,t4,8000310c + 800030bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800030c0: 00200293 li t0,2 + 800030c4: fc5216e3 bne tp,t0,80003090 + +00000000800030c8 : + 800030c8: 01700193 li gp,23 + 800030cc: 00000213 li tp,0 + 800030d0: 00001117 auipc sp,0x1 + 800030d4: f3010113 addi sp,sp,-208 # 80004000 + 800030d8: 00000013 nop + 800030dc: 00000013 nop + 800030e0: 122330b7 lui ra,0x12233 + 800030e4: 0010809b addiw ra,ra,1 + 800030e8: 02113423 sd ra,40(sp) + 800030ec: 02813f03 ld t5,40(sp) + 800030f0: 12233eb7 lui t4,0x12233 + 800030f4: 001e8e9b addiw t4,t4,1 + 800030f8: 01df1a63 bne t5,t4,8000310c + 800030fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003100: 00200293 li t0,2 + 80003104: fc5216e3 bne tp,t0,800030d0 + 80003108: 00301a63 bne zero,gp,8000311c + +000000008000310c : + 8000310c: 00119513 slli a0,gp,0x1 + 80003110: 00050063 beqz a0,80003110 + 80003114: 00156513 ori a0,a0,1 + 80003118: 00000073 ecall + +000000008000311c : + 8000311c: 00100513 li a0,1 + 80003120: 00000073 ecall + 80003124: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: deadbeef jal t4,7ffdf5ea <_start-0x20a16> + 80004004: deadbeef jal t4,7ffdf5ee <_start-0x20a12> + +0000000080004008 : + 80004008: deadbeef jal t4,7ffdf5f2 <_start-0x20a0e> + 8000400c: deadbeef jal t4,7ffdf5f6 <_start-0x20a0a> + +0000000080004010 : + 80004010: deadbeef jal t4,7ffdf5fa <_start-0x20a06> + 80004014: deadbeef jal t4,7ffdf5fe <_start-0x20a02> + +0000000080004018 : + 80004018: deadbeef jal t4,7ffdf602 <_start-0x209fe> + 8000401c: deadbeef jal t4,7ffdf606 <_start-0x209fa> + +0000000080004020 : + 80004020: deadbeef jal t4,7ffdf60a <_start-0x209f6> + 80004024: deadbeef jal t4,7ffdf60e <_start-0x209f2> + +0000000080004028 : + 80004028: deadbeef jal t4,7ffdf612 <_start-0x209ee> + 8000402c: deadbeef jal t4,7ffdf616 <_start-0x209ea> + +0000000080004030 : + 80004030: deadbeef jal t4,7ffdf61a <_start-0x209e6> + 80004034: deadbeef jal t4,7ffdf61e <_start-0x209e2> + +0000000080004038 : + 80004038: deadbeef jal t4,7ffdf622 <_start-0x209de> + 8000403c: deadbeef jal t4,7ffdf626 <_start-0x209da> + +0000000080004040 : + 80004040: deadbeef jal t4,7ffdf62a <_start-0x209d6> + 80004044: deadbeef jal t4,7ffdf62e <_start-0x209d2> + +0000000080004048 : + 80004048: deadbeef jal t4,7ffdf632 <_start-0x209ce> + 8000404c: deadbeef jal t4,7ffdf636 <_start-0x209ca> diff --git a/Tests/isa/rv64ui-v-sh b/Tests/isa/rv64ui-v-sh new file mode 100644 index 0000000..07298d2 Binary files /dev/null and b/Tests/isa/rv64ui-v-sh differ diff --git a/Tests/isa/rv64ui-v-sh.dump b/Tests/isa/rv64ui-v-sh.dump new file mode 100644 index 0000000..62862d9 --- /dev/null +++ b/Tests/isa/rv64ui-v-sh.dump @@ -0,0 +1,1200 @@ + +rv64ui-v-sh: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b0868693 addi a3,a3,-1272 # 80002f60 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b3c60613 addi a2,a2,-1220 # 80002ff0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b0460613 addi a2,a2,-1276 # 80003008 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: a5468693 addi a3,a3,-1452 # 80002fa8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: a7068693 addi a3,a3,-1424 # 800030e0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 9f060613 addi a2,a2,-1552 # 800030b8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 92468693 addi a3,a3,-1756 # 80003110 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 84468693 addi a3,a3,-1980 # 80003080 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 7d468693 addi a3,a3,2004 # 80003048 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 03300793 li a5,51 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0adbd7b7 lui a5,0xadbd + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 91078793 addi a5,a5,-1776 # adbc910 <_start-0x752436f0> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00001097 auipc ra,0x1 + 80002acc: 53808093 addi ra,ra,1336 # 80004000 + 80002ad0: 0aa00113 li sp,170 + 80002ad4: 00209023 sh sp,0(ra) + 80002ad8: 00009f03 lh t5,0(ra) + 80002adc: 0aa00e93 li t4,170 + 80002ae0: 00200193 li gp,2 + 80002ae4: 45df1e63 bne t5,t4,80002f40 + +0000000080002ae8 : + 80002ae8: 00001097 auipc ra,0x1 + 80002aec: 51808093 addi ra,ra,1304 # 80004000 + 80002af0: ffffb137 lui sp,0xffffb + 80002af4: a001011b addiw sp,sp,-1536 + 80002af8: 00209123 sh sp,2(ra) + 80002afc: 00209f03 lh t5,2(ra) + 80002b00: ffffbeb7 lui t4,0xffffb + 80002b04: a00e8e9b addiw t4,t4,-1536 + 80002b08: 00300193 li gp,3 + 80002b0c: 43df1a63 bne t5,t4,80002f40 + +0000000080002b10 : + 80002b10: 00001097 auipc ra,0x1 + 80002b14: 4f008093 addi ra,ra,1264 # 80004000 + 80002b18: beef1137 lui sp,0xbeef1 + 80002b1c: aa01011b addiw sp,sp,-1376 + 80002b20: 00209223 sh sp,4(ra) + 80002b24: 0040af03 lw t5,4(ra) + 80002b28: beef1eb7 lui t4,0xbeef1 + 80002b2c: aa0e8e9b addiw t4,t4,-1376 + 80002b30: 00400193 li gp,4 + 80002b34: 41df1663 bne t5,t4,80002f40 + +0000000080002b38 : + 80002b38: 00001097 auipc ra,0x1 + 80002b3c: 4c808093 addi ra,ra,1224 # 80004000 + 80002b40: ffffa137 lui sp,0xffffa + 80002b44: 00a1011b addiw sp,sp,10 + 80002b48: 00209323 sh sp,6(ra) + 80002b4c: 00609f03 lh t5,6(ra) + 80002b50: ffffaeb7 lui t4,0xffffa + 80002b54: 00ae8e9b addiw t4,t4,10 + 80002b58: 00500193 li gp,5 + 80002b5c: 3fdf1263 bne t5,t4,80002f40 + +0000000080002b60 : + 80002b60: 00001097 auipc ra,0x1 + 80002b64: 4ae08093 addi ra,ra,1198 # 8000400e + 80002b68: 0aa00113 li sp,170 + 80002b6c: fe209d23 sh sp,-6(ra) + 80002b70: ffa09f03 lh t5,-6(ra) + 80002b74: 0aa00e93 li t4,170 + 80002b78: 00600193 li gp,6 + 80002b7c: 3ddf1263 bne t5,t4,80002f40 + +0000000080002b80 : + 80002b80: 00001097 auipc ra,0x1 + 80002b84: 48e08093 addi ra,ra,1166 # 8000400e + 80002b88: ffffb137 lui sp,0xffffb + 80002b8c: a001011b addiw sp,sp,-1536 + 80002b90: fe209e23 sh sp,-4(ra) + 80002b94: ffc09f03 lh t5,-4(ra) + 80002b98: ffffbeb7 lui t4,0xffffb + 80002b9c: a00e8e9b addiw t4,t4,-1536 + 80002ba0: 00700193 li gp,7 + 80002ba4: 39df1e63 bne t5,t4,80002f40 + +0000000080002ba8 : + 80002ba8: 00001097 auipc ra,0x1 + 80002bac: 46608093 addi ra,ra,1126 # 8000400e + 80002bb0: 00001137 lui sp,0x1 + 80002bb4: aa01011b addiw sp,sp,-1376 + 80002bb8: fe209f23 sh sp,-2(ra) + 80002bbc: ffe09f03 lh t5,-2(ra) + 80002bc0: 00001eb7 lui t4,0x1 + 80002bc4: aa0e8e9b addiw t4,t4,-1376 + 80002bc8: 00800193 li gp,8 + 80002bcc: 37df1a63 bne t5,t4,80002f40 + +0000000080002bd0 : + 80002bd0: 00001097 auipc ra,0x1 + 80002bd4: 43e08093 addi ra,ra,1086 # 8000400e + 80002bd8: ffffa137 lui sp,0xffffa + 80002bdc: 00a1011b addiw sp,sp,10 + 80002be0: 00209023 sh sp,0(ra) + 80002be4: 00009f03 lh t5,0(ra) + 80002be8: ffffaeb7 lui t4,0xffffa + 80002bec: 00ae8e9b addiw t4,t4,10 + 80002bf0: 00900193 li gp,9 + 80002bf4: 35df1663 bne t5,t4,80002f40 + +0000000080002bf8 : + 80002bf8: 00001097 auipc ra,0x1 + 80002bfc: 41808093 addi ra,ra,1048 # 80004010 + 80002c00: 12345137 lui sp,0x12345 + 80002c04: 6781011b addiw sp,sp,1656 + 80002c08: fe008213 addi tp,ra,-32 + 80002c0c: 02221023 sh sp,32(tp) # 20 <_start-0x7fffffe0> + 80002c10: 00009283 lh t0,0(ra) + 80002c14: 00005eb7 lui t4,0x5 + 80002c18: 678e8e9b addiw t4,t4,1656 + 80002c1c: 00a00193 li gp,10 + 80002c20: 33d29063 bne t0,t4,80002f40 + +0000000080002c24 : + 80002c24: 00001097 auipc ra,0x1 + 80002c28: 3ec08093 addi ra,ra,1004 # 80004010 + 80002c2c: 00003137 lui sp,0x3 + 80002c30: 0981011b addiw sp,sp,152 + 80002c34: ffb08093 addi ra,ra,-5 + 80002c38: 002093a3 sh sp,7(ra) + 80002c3c: 00001217 auipc tp,0x1 + 80002c40: 3d620213 addi tp,tp,982 # 80004012 + 80002c44: 00021283 lh t0,0(tp) # 0 <_start-0x80000000> + 80002c48: 00003eb7 lui t4,0x3 + 80002c4c: 098e8e9b addiw t4,t4,152 + 80002c50: 00b00193 li gp,11 + 80002c54: 2fd29663 bne t0,t4,80002f40 + +0000000080002c58 : + 80002c58: 00c00193 li gp,12 + 80002c5c: 00000213 li tp,0 + 80002c60: ffffd0b7 lui ra,0xffffd + 80002c64: cdd0809b addiw ra,ra,-803 + 80002c68: 00001117 auipc sp,0x1 + 80002c6c: 39810113 addi sp,sp,920 # 80004000 + 80002c70: 00111023 sh ra,0(sp) + 80002c74: 00011f03 lh t5,0(sp) + 80002c78: ffffdeb7 lui t4,0xffffd + 80002c7c: cdde8e9b addiw t4,t4,-803 + 80002c80: 2ddf1063 bne t5,t4,80002f40 + 80002c84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c88: 00200293 li t0,2 + 80002c8c: fc521ae3 bne tp,t0,80002c60 + +0000000080002c90 : + 80002c90: 00d00193 li gp,13 + 80002c94: 00000213 li tp,0 + 80002c98: ffffc0b7 lui ra,0xffffc + 80002c9c: ccd0809b addiw ra,ra,-819 + 80002ca0: 00001117 auipc sp,0x1 + 80002ca4: 36010113 addi sp,sp,864 # 80004000 + 80002ca8: 00000013 nop + 80002cac: 00111123 sh ra,2(sp) + 80002cb0: 00211f03 lh t5,2(sp) + 80002cb4: ffffceb7 lui t4,0xffffc + 80002cb8: ccde8e9b addiw t4,t4,-819 + 80002cbc: 29df1263 bne t5,t4,80002f40 + 80002cc0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cc4: 00200293 li t0,2 + 80002cc8: fc5218e3 bne tp,t0,80002c98 + +0000000080002ccc : + 80002ccc: 00e00193 li gp,14 + 80002cd0: 00000213 li tp,0 + 80002cd4: ffffc0b7 lui ra,0xffffc + 80002cd8: bcc0809b addiw ra,ra,-1076 + 80002cdc: 00001117 auipc sp,0x1 + 80002ce0: 32410113 addi sp,sp,804 # 80004000 + 80002ce4: 00000013 nop + 80002ce8: 00000013 nop + 80002cec: 00111223 sh ra,4(sp) + 80002cf0: 00411f03 lh t5,4(sp) + 80002cf4: ffffceb7 lui t4,0xffffc + 80002cf8: bcce8e9b addiw t4,t4,-1076 + 80002cfc: 25df1263 bne t5,t4,80002f40 + 80002d00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d04: 00200293 li t0,2 + 80002d08: fc5216e3 bne tp,t0,80002cd4 + +0000000080002d0c : + 80002d0c: 00f00193 li gp,15 + 80002d10: 00000213 li tp,0 + 80002d14: ffffb0b7 lui ra,0xffffb + 80002d18: bbc0809b addiw ra,ra,-1092 + 80002d1c: 00000013 nop + 80002d20: 00001117 auipc sp,0x1 + 80002d24: 2e010113 addi sp,sp,736 # 80004000 + 80002d28: 00111323 sh ra,6(sp) + 80002d2c: 00611f03 lh t5,6(sp) + 80002d30: ffffbeb7 lui t4,0xffffb + 80002d34: bbce8e9b addiw t4,t4,-1092 + 80002d38: 21df1463 bne t5,t4,80002f40 + 80002d3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d40: 00200293 li t0,2 + 80002d44: fc5218e3 bne tp,t0,80002d14 + +0000000080002d48 : + 80002d48: 01000193 li gp,16 + 80002d4c: 00000213 li tp,0 + 80002d50: ffffb0b7 lui ra,0xffffb + 80002d54: abb0809b addiw ra,ra,-1349 + 80002d58: 00000013 nop + 80002d5c: 00001117 auipc sp,0x1 + 80002d60: 2a410113 addi sp,sp,676 # 80004000 + 80002d64: 00000013 nop + 80002d68: 00111423 sh ra,8(sp) + 80002d6c: 00811f03 lh t5,8(sp) + 80002d70: ffffbeb7 lui t4,0xffffb + 80002d74: abbe8e9b addiw t4,t4,-1349 + 80002d78: 1ddf1463 bne t5,t4,80002f40 + 80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d80: 00200293 li t0,2 + 80002d84: fc5216e3 bne tp,t0,80002d50 + +0000000080002d88 : + 80002d88: 01100193 li gp,17 + 80002d8c: 00000213 li tp,0 + 80002d90: ffffe0b7 lui ra,0xffffe + 80002d94: aab0809b addiw ra,ra,-1365 + 80002d98: 00000013 nop + 80002d9c: 00000013 nop + 80002da0: 00001117 auipc sp,0x1 + 80002da4: 26010113 addi sp,sp,608 # 80004000 + 80002da8: 00111523 sh ra,10(sp) + 80002dac: 00a11f03 lh t5,10(sp) + 80002db0: ffffeeb7 lui t4,0xffffe + 80002db4: aabe8e9b addiw t4,t4,-1365 + 80002db8: 19df1463 bne t5,t4,80002f40 + 80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dc0: 00200293 li t0,2 + 80002dc4: fc5216e3 bne tp,t0,80002d90 + +0000000080002dc8 : + 80002dc8: 01200193 li gp,18 + 80002dcc: 00000213 li tp,0 + 80002dd0: 00001117 auipc sp,0x1 + 80002dd4: 23010113 addi sp,sp,560 # 80004000 + 80002dd8: 000020b7 lui ra,0x2 + 80002ddc: 2330809b addiw ra,ra,563 + 80002de0: 00111023 sh ra,0(sp) + 80002de4: 00011f03 lh t5,0(sp) + 80002de8: 00002eb7 lui t4,0x2 + 80002dec: 233e8e9b addiw t4,t4,563 + 80002df0: 15df1863 bne t5,t4,80002f40 + 80002df4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002df8: 00200293 li t0,2 + 80002dfc: fc521ae3 bne tp,t0,80002dd0 + +0000000080002e00 : + 80002e00: 01300193 li gp,19 + 80002e04: 00000213 li tp,0 + 80002e08: 00001117 auipc sp,0x1 + 80002e0c: 1f810113 addi sp,sp,504 # 80004000 + 80002e10: 000010b7 lui ra,0x1 + 80002e14: 2230809b addiw ra,ra,547 + 80002e18: 00000013 nop + 80002e1c: 00111123 sh ra,2(sp) + 80002e20: 00211f03 lh t5,2(sp) + 80002e24: 00001eb7 lui t4,0x1 + 80002e28: 223e8e9b addiw t4,t4,547 + 80002e2c: 11df1a63 bne t5,t4,80002f40 + 80002e30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e34: 00200293 li t0,2 + 80002e38: fc5218e3 bne tp,t0,80002e08 + +0000000080002e3c : + 80002e3c: 01400193 li gp,20 + 80002e40: 00000213 li tp,0 + 80002e44: 00001117 auipc sp,0x1 + 80002e48: 1bc10113 addi sp,sp,444 # 80004000 + 80002e4c: 000010b7 lui ra,0x1 + 80002e50: 1220809b addiw ra,ra,290 + 80002e54: 00000013 nop + 80002e58: 00000013 nop + 80002e5c: 00111223 sh ra,4(sp) + 80002e60: 00411f03 lh t5,4(sp) + 80002e64: 00001eb7 lui t4,0x1 + 80002e68: 122e8e9b addiw t4,t4,290 + 80002e6c: 0ddf1a63 bne t5,t4,80002f40 + 80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e74: 00200293 li t0,2 + 80002e78: fc5216e3 bne tp,t0,80002e44 + +0000000080002e7c : + 80002e7c: 01500193 li gp,21 + 80002e80: 00000213 li tp,0 + 80002e84: 00001117 auipc sp,0x1 + 80002e88: 17c10113 addi sp,sp,380 # 80004000 + 80002e8c: 00000013 nop + 80002e90: 11200093 li ra,274 + 80002e94: 00111323 sh ra,6(sp) + 80002e98: 00611f03 lh t5,6(sp) + 80002e9c: 11200e93 li t4,274 + 80002ea0: 0bdf1063 bne t5,t4,80002f40 + 80002ea4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea8: 00200293 li t0,2 + 80002eac: fc521ce3 bne tp,t0,80002e84 + +0000000080002eb0 : + 80002eb0: 01600193 li gp,22 + 80002eb4: 00000213 li tp,0 + 80002eb8: 00001117 auipc sp,0x1 + 80002ebc: 14810113 addi sp,sp,328 # 80004000 + 80002ec0: 00000013 nop + 80002ec4: 01100093 li ra,17 + 80002ec8: 00000013 nop + 80002ecc: 00111423 sh ra,8(sp) + 80002ed0: 00811f03 lh t5,8(sp) + 80002ed4: 01100e93 li t4,17 + 80002ed8: 07df1463 bne t5,t4,80002f40 + 80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ee0: 00200293 li t0,2 + 80002ee4: fc521ae3 bne tp,t0,80002eb8 + +0000000080002ee8 : + 80002ee8: 01700193 li gp,23 + 80002eec: 00000213 li tp,0 + 80002ef0: 00001117 auipc sp,0x1 + 80002ef4: 11010113 addi sp,sp,272 # 80004000 + 80002ef8: 00000013 nop + 80002efc: 00000013 nop + 80002f00: 000030b7 lui ra,0x3 + 80002f04: 0010809b addiw ra,ra,1 + 80002f08: 00111523 sh ra,10(sp) + 80002f0c: 00a11f03 lh t5,10(sp) + 80002f10: 00003eb7 lui t4,0x3 + 80002f14: 001e8e9b addiw t4,t4,1 + 80002f18: 03df1463 bne t5,t4,80002f40 + 80002f1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f20: 00200293 li t0,2 + 80002f24: fc5216e3 bne tp,t0,80002ef0 + 80002f28: 0000c537 lui a0,0xc + 80002f2c: eef5051b addiw a0,a0,-273 + 80002f30: 00001597 auipc a1,0x1 + 80002f34: 0d058593 addi a1,a1,208 # 80004000 + 80002f38: 00a59323 sh a0,6(a1) + 80002f3c: 00301a63 bne zero,gp,80002f50 + +0000000080002f40 : + 80002f40: 00119513 slli a0,gp,0x1 + 80002f44: 00050063 beqz a0,80002f44 + 80002f48: 00156513 ori a0,a0,1 + 80002f4c: 00000073 ecall + +0000000080002f50 : + 80002f50: 00100513 li a0,1 + 80002f54: 00000073 ecall + 80002f58: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: jal t4,7ffff3ee <_start-0xc12> + +0000000080004002 : + 80004002: jal t4,7ffff3f0 <_start-0xc10> + +0000000080004004 : + 80004004: jal t4,7ffff3f2 <_start-0xc0e> + +0000000080004006 : + 80004006: jal t4,7ffff3f4 <_start-0xc0c> + +0000000080004008 : + 80004008: jal t4,7ffff3f6 <_start-0xc0a> + +000000008000400a : + 8000400a: jal t4,7ffff3f8 <_start-0xc08> + +000000008000400c : + 8000400c: jal t4,7ffff3fa <_start-0xc06> + +000000008000400e : + 8000400e: jal t4,7ffff3fc <_start-0xc04> + +0000000080004010 : + 80004010: jal t4,7ffff3fe <_start-0xc02> + +0000000080004012 : + 80004012: jal t4,8000f012 <_end+0x5822> diff --git a/Tests/isa/rv64ui-v-simple b/Tests/isa/rv64ui-v-simple new file mode 100644 index 0000000..40137e2 Binary files /dev/null and b/Tests/isa/rv64ui-v-simple differ diff --git a/Tests/isa/rv64ui-v-simple.dump b/Tests/isa/rv64ui-v-simple.dump new file mode 100644 index 0000000..0c3cc1c --- /dev/null +++ b/Tests/isa/rv64ui-v-simple.dump @@ -0,0 +1,832 @@ + +rv64ui-v-simple: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 68068693 addi a3,a3,1664 # 80002ad8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 6b460613 addi a2,a2,1716 # 80002b68 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 67c60613 addi a2,a2,1660 # 80002b80 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 5cc68693 addi a3,a3,1484 # 80002b20 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 5e868693 addi a3,a3,1512 # 80002c58 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 56860613 addi a2,a2,1384 # 80002c30 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 49c68693 addi a3,a3,1180 # 80002c88 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 3bc68693 addi a3,a3,956 # 80002bf8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 34c68693 addi a3,a3,844 # 80002bc0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 03000793 li a5,48 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 07a657b7 lui a5,0x7a65 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: bab78793 addi a5,a5,-1109 # 7a64bab <_start-0x7859b455> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00100513 li a0,1 + 80002acc: 00000073 ecall + 80002ad0: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sll b/Tests/isa/rv64ui-v-sll new file mode 100644 index 0000000..3459693 Binary files /dev/null and b/Tests/isa/rv64ui-v-sll differ diff --git a/Tests/isa/rv64ui-v-sll.dump b/Tests/isa/rv64ui-v-sll.dump new file mode 100644 index 0000000..6b4b00b --- /dev/null +++ b/Tests/isa/rv64ui-v-sll.dump @@ -0,0 +1,1315 @@ + +rv64ui-v-sll: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: c9868693 addi a3,a3,-872 # 800030f0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: ccc60613 addi a2,a2,-820 # 80003180 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: c9460613 addi a2,a2,-876 # 80003198 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: be468693 addi a3,a3,-1052 # 80003138 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: c0068693 addi a3,a3,-1024 # 80003270 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: b8060613 addi a2,a2,-1152 # 80003248 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: ab468693 addi a3,a3,-1356 # 800032a0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 9d468693 addi a3,a3,-1580 # 80003210 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 96468693 addi a3,a3,-1692 # 800031d8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02b00793 li a5,43 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 063c27b7 lui a5,0x63c2 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 9ad78793 addi a5,a5,-1619 # 63c19ad <_start-0x79c3e653> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00100093 li ra,1 + 80002acc: 00000113 li sp,0 + 80002ad0: 00209f33 sll t5,ra,sp + 80002ad4: 00100e93 li t4,1 + 80002ad8: 00200193 li gp,2 + 80002adc: 5fdf1c63 bne t5,t4,800030d4 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 00209f33 sll t5,ra,sp + 80002aec: 00200e93 li t4,2 + 80002af0: 00300193 li gp,3 + 80002af4: 5fdf1063 bne t5,t4,800030d4 + +0000000080002af8 : + 80002af8: 00100093 li ra,1 + 80002afc: 00700113 li sp,7 + 80002b00: 00209f33 sll t5,ra,sp + 80002b04: 08000e93 li t4,128 + 80002b08: 00400193 li gp,4 + 80002b0c: 5ddf1463 bne t5,t4,800030d4 + +0000000080002b10 : + 80002b10: 00100093 li ra,1 + 80002b14: 00e00113 li sp,14 + 80002b18: 00209f33 sll t5,ra,sp + 80002b1c: 00004eb7 lui t4,0x4 + 80002b20: 00500193 li gp,5 + 80002b24: 5bdf1863 bne t5,t4,800030d4 + +0000000080002b28 : + 80002b28: 00100093 li ra,1 + 80002b2c: 01f00113 li sp,31 + 80002b30: 00209f33 sll t5,ra,sp + 80002b34: 00100e9b addiw t4,zero,1 + 80002b38: 01fe9e93 slli t4,t4,0x1f + 80002b3c: 00600193 li gp,6 + 80002b40: 59df1a63 bne t5,t4,800030d4 + +0000000080002b44 : + 80002b44: fff00093 li ra,-1 + 80002b48: 00000113 li sp,0 + 80002b4c: 00209f33 sll t5,ra,sp + 80002b50: fff00e93 li t4,-1 + 80002b54: 00700193 li gp,7 + 80002b58: 57df1e63 bne t5,t4,800030d4 + +0000000080002b5c : + 80002b5c: fff00093 li ra,-1 + 80002b60: 00100113 li sp,1 + 80002b64: 00209f33 sll t5,ra,sp + 80002b68: ffe00e93 li t4,-2 + 80002b6c: 00800193 li gp,8 + 80002b70: 57df1263 bne t5,t4,800030d4 + +0000000080002b74 : + 80002b74: fff00093 li ra,-1 + 80002b78: 00700113 li sp,7 + 80002b7c: 00209f33 sll t5,ra,sp + 80002b80: f8000e93 li t4,-128 + 80002b84: 00900193 li gp,9 + 80002b88: 55df1663 bne t5,t4,800030d4 + +0000000080002b8c : + 80002b8c: fff00093 li ra,-1 + 80002b90: 00e00113 li sp,14 + 80002b94: 00209f33 sll t5,ra,sp + 80002b98: ffffceb7 lui t4,0xffffc + 80002b9c: 00a00193 li gp,10 + 80002ba0: 53df1a63 bne t5,t4,800030d4 + +0000000080002ba4 : + 80002ba4: fff00093 li ra,-1 + 80002ba8: 01f00113 li sp,31 + 80002bac: 00209f33 sll t5,ra,sp + 80002bb0: 80000eb7 lui t4,0x80000 + 80002bb4: 00b00193 li gp,11 + 80002bb8: 51df1e63 bne t5,t4,800030d4 + +0000000080002bbc : + 80002bbc: 212120b7 lui ra,0x21212 + 80002bc0: 1210809b addiw ra,ra,289 + 80002bc4: 00000113 li sp,0 + 80002bc8: 00209f33 sll t5,ra,sp + 80002bcc: 21212eb7 lui t4,0x21212 + 80002bd0: 121e8e9b addiw t4,t4,289 + 80002bd4: 00c00193 li gp,12 + 80002bd8: 4fdf1e63 bne t5,t4,800030d4 + +0000000080002bdc : + 80002bdc: 212120b7 lui ra,0x21212 + 80002be0: 1210809b addiw ra,ra,289 + 80002be4: 00100113 li sp,1 + 80002be8: 00209f33 sll t5,ra,sp + 80002bec: 42424eb7 lui t4,0x42424 + 80002bf0: 242e8e9b addiw t4,t4,578 + 80002bf4: 00d00193 li gp,13 + 80002bf8: 4ddf1e63 bne t5,t4,800030d4 + +0000000080002bfc : + 80002bfc: 212120b7 lui ra,0x21212 + 80002c00: 1210809b addiw ra,ra,289 + 80002c04: 00700113 li sp,7 + 80002c08: 00209f33 sll t5,ra,sp + 80002c0c: 01091eb7 lui t4,0x1091 + 80002c10: 909e8e9b addiw t4,t4,-1783 + 80002c14: 00ce9e93 slli t4,t4,0xc + 80002c18: 080e8e93 addi t4,t4,128 # 1091080 <_start-0x7ef6ef80> + 80002c1c: 00e00193 li gp,14 + 80002c20: 4bdf1a63 bne t5,t4,800030d4 + +0000000080002c24 : + 80002c24: 212120b7 lui ra,0x21212 + 80002c28: 1210809b addiw ra,ra,289 + 80002c2c: 00e00113 li sp,14 + 80002c30: 00209f33 sll t5,ra,sp + 80002c34: 21212eb7 lui t4,0x21212 + 80002c38: 121e8e9b addiw t4,t4,289 + 80002c3c: 00ee9e93 slli t4,t4,0xe + 80002c40: 00f00193 li gp,15 + 80002c44: 49df1863 bne t5,t4,800030d4 + +0000000080002c48 : + 80002c48: 212120b7 lui ra,0x21212 + 80002c4c: 1210809b addiw ra,ra,289 + 80002c50: 01f00113 li sp,31 + 80002c54: 00209f33 sll t5,ra,sp + 80002c58: 21212eb7 lui t4,0x21212 + 80002c5c: 121e8e9b addiw t4,t4,289 + 80002c60: 01fe9e93 slli t4,t4,0x1f + 80002c64: 01000193 li gp,16 + 80002c68: 47df1663 bne t5,t4,800030d4 + +0000000080002c6c : + 80002c6c: 212120b7 lui ra,0x21212 + 80002c70: 1210809b addiw ra,ra,289 + 80002c74: fc000113 li sp,-64 + 80002c78: 00209f33 sll t5,ra,sp + 80002c7c: 21212eb7 lui t4,0x21212 + 80002c80: 121e8e9b addiw t4,t4,289 + 80002c84: 01100193 li gp,17 + 80002c88: 45df1663 bne t5,t4,800030d4 + +0000000080002c8c : + 80002c8c: 212120b7 lui ra,0x21212 + 80002c90: 1210809b addiw ra,ra,289 + 80002c94: fc100113 li sp,-63 + 80002c98: 00209f33 sll t5,ra,sp + 80002c9c: 42424eb7 lui t4,0x42424 + 80002ca0: 242e8e9b addiw t4,t4,578 + 80002ca4: 01200193 li gp,18 + 80002ca8: 43df1663 bne t5,t4,800030d4 + +0000000080002cac : + 80002cac: 212120b7 lui ra,0x21212 + 80002cb0: 1210809b addiw ra,ra,289 + 80002cb4: fc700113 li sp,-57 + 80002cb8: 00209f33 sll t5,ra,sp + 80002cbc: 01091eb7 lui t4,0x1091 + 80002cc0: 909e8e9b addiw t4,t4,-1783 + 80002cc4: 00ce9e93 slli t4,t4,0xc + 80002cc8: 080e8e93 addi t4,t4,128 # 1091080 <_start-0x7ef6ef80> + 80002ccc: 01300193 li gp,19 + 80002cd0: 41df1263 bne t5,t4,800030d4 + +0000000080002cd4 : + 80002cd4: 212120b7 lui ra,0x21212 + 80002cd8: 1210809b addiw ra,ra,289 + 80002cdc: fce00113 li sp,-50 + 80002ce0: 00209f33 sll t5,ra,sp + 80002ce4: 21212eb7 lui t4,0x21212 + 80002ce8: 121e8e9b addiw t4,t4,289 + 80002cec: 00ee9e93 slli t4,t4,0xe + 80002cf0: 01400193 li gp,20 + 80002cf4: 3fdf1063 bne t5,t4,800030d4 + +0000000080002cf8 : + 80002cf8: 212120b7 lui ra,0x21212 + 80002cfc: 1210809b addiw ra,ra,289 + 80002d00: fff00113 li sp,-1 + 80002d04: 00209f33 sll t5,ra,sp + 80002d08: fff00e9b addiw t4,zero,-1 + 80002d0c: 03fe9e93 slli t4,t4,0x3f + 80002d10: 01500193 li gp,21 + 80002d14: 3ddf1063 bne t5,t4,800030d4 + +0000000080002d18 : + 80002d18: 00100093 li ra,1 + 80002d1c: 03f00113 li sp,63 + 80002d20: 00209f33 sll t5,ra,sp + 80002d24: fff00e9b addiw t4,zero,-1 + 80002d28: 03fe9e93 slli t4,t4,0x3f + 80002d2c: 03200193 li gp,50 + 80002d30: 3bdf1263 bne t5,t4,800030d4 + +0000000080002d34 : + 80002d34: fff00093 li ra,-1 + 80002d38: 02700113 li sp,39 + 80002d3c: 00209f33 sll t5,ra,sp + 80002d40: fff00e9b addiw t4,zero,-1 + 80002d44: 027e9e93 slli t4,t4,0x27 + 80002d48: 03300193 li gp,51 + 80002d4c: 39df1463 bne t5,t4,800030d4 + +0000000080002d50 : + 80002d50: 212120b7 lui ra,0x21212 + 80002d54: 1210809b addiw ra,ra,289 + 80002d58: 02b00113 li sp,43 + 80002d5c: 00209f33 sll t5,ra,sp + 80002d60: 00012eb7 lui t4,0x12 + 80002d64: 121e8e9b addiw t4,t4,289 + 80002d68: 02be9e93 slli t4,t4,0x2b + 80002d6c: 03400193 li gp,52 + 80002d70: 37df1263 bne t5,t4,800030d4 + +0000000080002d74 : + 80002d74: 00100093 li ra,1 + 80002d78: 00700113 li sp,7 + 80002d7c: 002090b3 sll ra,ra,sp + 80002d80: 08000e93 li t4,128 + 80002d84: 01600193 li gp,22 + 80002d88: 35d09663 bne ra,t4,800030d4 + +0000000080002d8c : + 80002d8c: 00100093 li ra,1 + 80002d90: 00e00113 li sp,14 + 80002d94: 00209133 sll sp,ra,sp + 80002d98: 00004eb7 lui t4,0x4 + 80002d9c: 01700193 li gp,23 + 80002da0: 33d11a63 bne sp,t4,800030d4 + +0000000080002da4 : + 80002da4: 00300093 li ra,3 + 80002da8: 001090b3 sll ra,ra,ra + 80002dac: 01800e93 li t4,24 + 80002db0: 01800193 li gp,24 + 80002db4: 33d09063 bne ra,t4,800030d4 + +0000000080002db8 : + 80002db8: 00000213 li tp,0 + 80002dbc: 00100093 li ra,1 + 80002dc0: 00700113 li sp,7 + 80002dc4: 00209f33 sll t5,ra,sp + 80002dc8: 000f0313 mv t1,t5 + 80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd0: 00200293 li t0,2 + 80002dd4: fe5214e3 bne tp,t0,80002dbc + 80002dd8: 08000e93 li t4,128 + 80002ddc: 01900193 li gp,25 + 80002de0: 2fd31a63 bne t1,t4,800030d4 + +0000000080002de4 : + 80002de4: 00000213 li tp,0 + 80002de8: 00100093 li ra,1 + 80002dec: 00e00113 li sp,14 + 80002df0: 00209f33 sll t5,ra,sp + 80002df4: 00000013 nop + 80002df8: 000f0313 mv t1,t5 + 80002dfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e00: 00200293 li t0,2 + 80002e04: fe5212e3 bne tp,t0,80002de8 + 80002e08: 00004eb7 lui t4,0x4 + 80002e0c: 01a00193 li gp,26 + 80002e10: 2dd31263 bne t1,t4,800030d4 + +0000000080002e14 : + 80002e14: 00000213 li tp,0 + 80002e18: 00100093 li ra,1 + 80002e1c: 01f00113 li sp,31 + 80002e20: 00209f33 sll t5,ra,sp + 80002e24: 00000013 nop + 80002e28: 00000013 nop + 80002e2c: 000f0313 mv t1,t5 + 80002e30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e34: 00200293 li t0,2 + 80002e38: fe5210e3 bne tp,t0,80002e18 + 80002e3c: 00100e9b addiw t4,zero,1 + 80002e40: 01fe9e93 slli t4,t4,0x1f + 80002e44: 01b00193 li gp,27 + 80002e48: 29d31663 bne t1,t4,800030d4 + +0000000080002e4c : + 80002e4c: 00000213 li tp,0 + 80002e50: 00100093 li ra,1 + 80002e54: 00700113 li sp,7 + 80002e58: 00209f33 sll t5,ra,sp + 80002e5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e60: 00200293 li t0,2 + 80002e64: fe5216e3 bne tp,t0,80002e50 + 80002e68: 08000e93 li t4,128 + 80002e6c: 01c00193 li gp,28 + 80002e70: 27df1263 bne t5,t4,800030d4 + +0000000080002e74 : + 80002e74: 00000213 li tp,0 + 80002e78: 00100093 li ra,1 + 80002e7c: 00e00113 li sp,14 + 80002e80: 00000013 nop + 80002e84: 00209f33 sll t5,ra,sp + 80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e8c: 00200293 li t0,2 + 80002e90: fe5214e3 bne tp,t0,80002e78 + 80002e94: 00004eb7 lui t4,0x4 + 80002e98: 01d00193 li gp,29 + 80002e9c: 23df1c63 bne t5,t4,800030d4 + +0000000080002ea0 : + 80002ea0: 00000213 li tp,0 + 80002ea4: 00100093 li ra,1 + 80002ea8: 01f00113 li sp,31 + 80002eac: 00000013 nop + 80002eb0: 00000013 nop + 80002eb4: 00209f33 sll t5,ra,sp + 80002eb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ebc: 00200293 li t0,2 + 80002ec0: fe5212e3 bne tp,t0,80002ea4 + 80002ec4: 00100e9b addiw t4,zero,1 + 80002ec8: 01fe9e93 slli t4,t4,0x1f + 80002ecc: 01e00193 li gp,30 + 80002ed0: 21df1263 bne t5,t4,800030d4 + +0000000080002ed4 : + 80002ed4: 00000213 li tp,0 + 80002ed8: 00100093 li ra,1 + 80002edc: 00000013 nop + 80002ee0: 00700113 li sp,7 + 80002ee4: 00209f33 sll t5,ra,sp + 80002ee8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002eec: 00200293 li t0,2 + 80002ef0: fe5214e3 bne tp,t0,80002ed8 + 80002ef4: 08000e93 li t4,128 + 80002ef8: 01f00193 li gp,31 + 80002efc: 1ddf1c63 bne t5,t4,800030d4 + +0000000080002f00 : + 80002f00: 00000213 li tp,0 + 80002f04: 00100093 li ra,1 + 80002f08: 00000013 nop + 80002f0c: 00e00113 li sp,14 + 80002f10: 00000013 nop + 80002f14: 00209f33 sll t5,ra,sp + 80002f18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f1c: 00200293 li t0,2 + 80002f20: fe5212e3 bne tp,t0,80002f04 + 80002f24: 00004eb7 lui t4,0x4 + 80002f28: 02000193 li gp,32 + 80002f2c: 1bdf1463 bne t5,t4,800030d4 + +0000000080002f30 : + 80002f30: 00000213 li tp,0 + 80002f34: 00100093 li ra,1 + 80002f38: 00000013 nop + 80002f3c: 00000013 nop + 80002f40: 01f00113 li sp,31 + 80002f44: 00209f33 sll t5,ra,sp + 80002f48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f4c: 00200293 li t0,2 + 80002f50: fe5212e3 bne tp,t0,80002f34 + 80002f54: 00100e9b addiw t4,zero,1 + 80002f58: 01fe9e93 slli t4,t4,0x1f + 80002f5c: 02100193 li gp,33 + 80002f60: 17df1a63 bne t5,t4,800030d4 + +0000000080002f64 : + 80002f64: 00000213 li tp,0 + 80002f68: 00700113 li sp,7 + 80002f6c: 00100093 li ra,1 + 80002f70: 00209f33 sll t5,ra,sp + 80002f74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f78: 00200293 li t0,2 + 80002f7c: fe5216e3 bne tp,t0,80002f68 + 80002f80: 08000e93 li t4,128 + 80002f84: 02200193 li gp,34 + 80002f88: 15df1663 bne t5,t4,800030d4 + +0000000080002f8c : + 80002f8c: 00000213 li tp,0 + 80002f90: 00e00113 li sp,14 + 80002f94: 00100093 li ra,1 + 80002f98: 00000013 nop + 80002f9c: 00209f33 sll t5,ra,sp + 80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fa4: 00200293 li t0,2 + 80002fa8: fe5214e3 bne tp,t0,80002f90 + 80002fac: 00004eb7 lui t4,0x4 + 80002fb0: 02300193 li gp,35 + 80002fb4: 13df1063 bne t5,t4,800030d4 + +0000000080002fb8 : + 80002fb8: 00000213 li tp,0 + 80002fbc: 01f00113 li sp,31 + 80002fc0: 00100093 li ra,1 + 80002fc4: 00000013 nop + 80002fc8: 00000013 nop + 80002fcc: 00209f33 sll t5,ra,sp + 80002fd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fd4: 00200293 li t0,2 + 80002fd8: fe5212e3 bne tp,t0,80002fbc + 80002fdc: 00100e9b addiw t4,zero,1 + 80002fe0: 01fe9e93 slli t4,t4,0x1f + 80002fe4: 02400193 li gp,36 + 80002fe8: 0fdf1663 bne t5,t4,800030d4 + +0000000080002fec : + 80002fec: 00000213 li tp,0 + 80002ff0: 00700113 li sp,7 + 80002ff4: 00000013 nop + 80002ff8: 00100093 li ra,1 + 80002ffc: 00209f33 sll t5,ra,sp + 80003000: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003004: 00200293 li t0,2 + 80003008: fe5214e3 bne tp,t0,80002ff0 + 8000300c: 08000e93 li t4,128 + 80003010: 02500193 li gp,37 + 80003014: 0ddf1063 bne t5,t4,800030d4 + +0000000080003018 : + 80003018: 00000213 li tp,0 + 8000301c: 00e00113 li sp,14 + 80003020: 00000013 nop + 80003024: 00100093 li ra,1 + 80003028: 00000013 nop + 8000302c: 00209f33 sll t5,ra,sp + 80003030: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003034: 00200293 li t0,2 + 80003038: fe5212e3 bne tp,t0,8000301c + 8000303c: 00004eb7 lui t4,0x4 + 80003040: 02600193 li gp,38 + 80003044: 09df1863 bne t5,t4,800030d4 + +0000000080003048 : + 80003048: 00000213 li tp,0 + 8000304c: 01f00113 li sp,31 + 80003050: 00000013 nop + 80003054: 00000013 nop + 80003058: 00100093 li ra,1 + 8000305c: 00209f33 sll t5,ra,sp + 80003060: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003064: 00200293 li t0,2 + 80003068: fe5212e3 bne tp,t0,8000304c + 8000306c: 00100e9b addiw t4,zero,1 + 80003070: 01fe9e93 slli t4,t4,0x1f + 80003074: 02700193 li gp,39 + 80003078: 05df1e63 bne t5,t4,800030d4 + +000000008000307c : + 8000307c: 00f00093 li ra,15 + 80003080: 00101133 sll sp,zero,ra + 80003084: 00000e93 li t4,0 + 80003088: 02800193 li gp,40 + 8000308c: 05d11463 bne sp,t4,800030d4 + +0000000080003090 : + 80003090: 02000093 li ra,32 + 80003094: 00009133 sll sp,ra,zero + 80003098: 02000e93 li t4,32 + 8000309c: 02900193 li gp,41 + 800030a0: 03d11a63 bne sp,t4,800030d4 + +00000000800030a4 : + 800030a4: 000010b3 sll ra,zero,zero + 800030a8: 00000e93 li t4,0 + 800030ac: 02a00193 li gp,42 + 800030b0: 03d09263 bne ra,t4,800030d4 + +00000000800030b4 : + 800030b4: 40000093 li ra,1024 + 800030b8: 00001137 lui sp,0x1 + 800030bc: 8001011b addiw sp,sp,-2048 + 800030c0: 00209033 sll zero,ra,sp + 800030c4: 00000e93 li t4,0 + 800030c8: 02b00193 li gp,43 + 800030cc: 01d01463 bne zero,t4,800030d4 + 800030d0: 00301a63 bne zero,gp,800030e4 + +00000000800030d4 : + 800030d4: 00119513 slli a0,gp,0x1 + 800030d8: 00050063 beqz a0,800030d8 + 800030dc: 00156513 ori a0,a0,1 + 800030e0: 00000073 ecall + +00000000800030e4 : + 800030e4: 00100513 li a0,1 + 800030e8: 00000073 ecall + 800030ec: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-slli b/Tests/isa/rv64ui-v-slli new file mode 100644 index 0000000..92f4a0d Binary files /dev/null and b/Tests/isa/rv64ui-v-slli differ diff --git a/Tests/isa/rv64ui-v-slli.dump b/Tests/isa/rv64ui-v-slli.dump new file mode 100644 index 0000000..2808442 --- /dev/null +++ b/Tests/isa/rv64ui-v-slli.dump @@ -0,0 +1,1082 @@ + +rv64ui-v-slli: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 98868693 addi a3,a3,-1656 # 80002de0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 9bc60613 addi a2,a2,-1604 # 80002e70 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 98460613 addi a2,a2,-1660 # 80002e88 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 8d468693 addi a3,a3,-1836 # 80002e28 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8f068693 addi a3,a3,-1808 # 80002f60 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 87060613 addi a2,a2,-1936 # 80002f38 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 7a468693 addi a3,a3,1956 # 80002f90 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 6c468693 addi a3,a3,1732 # 80002f00 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 65468693 addi a3,a3,1620 # 80002ec8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02100793 li a5,33 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0f9957b7 lui a5,0xf995 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 0d278793 addi a5,a5,210 # f9950d2 <_start-0x7066af2e> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00100093 li ra,1 + 80002acc: 00009f13 slli t5,ra,0x0 + 80002ad0: 00100e93 li t4,1 + 80002ad4: 00200193 li gp,2 + 80002ad8: 2fdf1463 bne t5,t4,80002dc0 + +0000000080002adc : + 80002adc: 00100093 li ra,1 + 80002ae0: 00109f13 slli t5,ra,0x1 + 80002ae4: 00200e93 li t4,2 + 80002ae8: 00300193 li gp,3 + 80002aec: 2ddf1a63 bne t5,t4,80002dc0 + +0000000080002af0 : + 80002af0: 00100093 li ra,1 + 80002af4: 00709f13 slli t5,ra,0x7 + 80002af8: 08000e93 li t4,128 + 80002afc: 00400193 li gp,4 + 80002b00: 2ddf1063 bne t5,t4,80002dc0 + +0000000080002b04 : + 80002b04: 00100093 li ra,1 + 80002b08: 00e09f13 slli t5,ra,0xe + 80002b0c: 00004eb7 lui t4,0x4 + 80002b10: 00500193 li gp,5 + 80002b14: 2bdf1663 bne t5,t4,80002dc0 + +0000000080002b18 : + 80002b18: 00100093 li ra,1 + 80002b1c: 01f09f13 slli t5,ra,0x1f + 80002b20: 00100e9b addiw t4,zero,1 + 80002b24: 01fe9e93 slli t4,t4,0x1f + 80002b28: 00600193 li gp,6 + 80002b2c: 29df1a63 bne t5,t4,80002dc0 + +0000000080002b30 : + 80002b30: fff00093 li ra,-1 + 80002b34: 00009f13 slli t5,ra,0x0 + 80002b38: fff00e93 li t4,-1 + 80002b3c: 00700193 li gp,7 + 80002b40: 29df1063 bne t5,t4,80002dc0 + +0000000080002b44 : + 80002b44: fff00093 li ra,-1 + 80002b48: 00109f13 slli t5,ra,0x1 + 80002b4c: ffe00e93 li t4,-2 + 80002b50: 00800193 li gp,8 + 80002b54: 27df1663 bne t5,t4,80002dc0 + +0000000080002b58 : + 80002b58: fff00093 li ra,-1 + 80002b5c: 00709f13 slli t5,ra,0x7 + 80002b60: f8000e93 li t4,-128 + 80002b64: 00900193 li gp,9 + 80002b68: 25df1c63 bne t5,t4,80002dc0 + +0000000080002b6c : + 80002b6c: fff00093 li ra,-1 + 80002b70: 00e09f13 slli t5,ra,0xe + 80002b74: ffffceb7 lui t4,0xffffc + 80002b78: 00a00193 li gp,10 + 80002b7c: 25df1263 bne t5,t4,80002dc0 + +0000000080002b80 : + 80002b80: fff00093 li ra,-1 + 80002b84: 01f09f13 slli t5,ra,0x1f + 80002b88: 80000eb7 lui t4,0x80000 + 80002b8c: 00b00193 li gp,11 + 80002b90: 23df1863 bne t5,t4,80002dc0 + +0000000080002b94 : + 80002b94: 212120b7 lui ra,0x21212 + 80002b98: 1210809b addiw ra,ra,289 + 80002b9c: 00009f13 slli t5,ra,0x0 + 80002ba0: 21212eb7 lui t4,0x21212 + 80002ba4: 121e8e9b addiw t4,t4,289 + 80002ba8: 00c00193 li gp,12 + 80002bac: 21df1a63 bne t5,t4,80002dc0 + +0000000080002bb0 : + 80002bb0: 212120b7 lui ra,0x21212 + 80002bb4: 1210809b addiw ra,ra,289 + 80002bb8: 00109f13 slli t5,ra,0x1 + 80002bbc: 42424eb7 lui t4,0x42424 + 80002bc0: 242e8e9b addiw t4,t4,578 + 80002bc4: 00d00193 li gp,13 + 80002bc8: 1fdf1c63 bne t5,t4,80002dc0 + +0000000080002bcc : + 80002bcc: 212120b7 lui ra,0x21212 + 80002bd0: 1210809b addiw ra,ra,289 + 80002bd4: 00709f13 slli t5,ra,0x7 + 80002bd8: 01091eb7 lui t4,0x1091 + 80002bdc: 909e8e9b addiw t4,t4,-1783 + 80002be0: 00ce9e93 slli t4,t4,0xc + 80002be4: 080e8e93 addi t4,t4,128 # 1091080 <_start-0x7ef6ef80> + 80002be8: 00e00193 li gp,14 + 80002bec: 1ddf1a63 bne t5,t4,80002dc0 + +0000000080002bf0 : + 80002bf0: 212120b7 lui ra,0x21212 + 80002bf4: 1210809b addiw ra,ra,289 + 80002bf8: 00e09f13 slli t5,ra,0xe + 80002bfc: 21212eb7 lui t4,0x21212 + 80002c00: 121e8e9b addiw t4,t4,289 + 80002c04: 00ee9e93 slli t4,t4,0xe + 80002c08: 00f00193 li gp,15 + 80002c0c: 1bdf1a63 bne t5,t4,80002dc0 + +0000000080002c10 : + 80002c10: 212120b7 lui ra,0x21212 + 80002c14: 1210809b addiw ra,ra,289 + 80002c18: 01f09f13 slli t5,ra,0x1f + 80002c1c: 21212eb7 lui t4,0x21212 + 80002c20: 121e8e9b addiw t4,t4,289 + 80002c24: 01fe9e93 slli t4,t4,0x1f + 80002c28: 01000193 li gp,16 + 80002c2c: 19df1a63 bne t5,t4,80002dc0 + +0000000080002c30 : + 80002c30: 00100093 li ra,1 + 80002c34: 03f09f13 slli t5,ra,0x3f + 80002c38: fff00e9b addiw t4,zero,-1 + 80002c3c: 03fe9e93 slli t4,t4,0x3f + 80002c40: 03200193 li gp,50 + 80002c44: 17df1e63 bne t5,t4,80002dc0 + +0000000080002c48 : + 80002c48: fff00093 li ra,-1 + 80002c4c: 02709f13 slli t5,ra,0x27 + 80002c50: fff00e9b addiw t4,zero,-1 + 80002c54: 027e9e93 slli t4,t4,0x27 + 80002c58: 03300193 li gp,51 + 80002c5c: 17df1263 bne t5,t4,80002dc0 + +0000000080002c60 : + 80002c60: 212120b7 lui ra,0x21212 + 80002c64: 1210809b addiw ra,ra,289 + 80002c68: 02b09f13 slli t5,ra,0x2b + 80002c6c: 00012eb7 lui t4,0x12 + 80002c70: 121e8e9b addiw t4,t4,289 + 80002c74: 02be9e93 slli t4,t4,0x2b + 80002c78: 03400193 li gp,52 + 80002c7c: 15df1263 bne t5,t4,80002dc0 + +0000000080002c80 : + 80002c80: 00100093 li ra,1 + 80002c84: 00709093 slli ra,ra,0x7 + 80002c88: 08000e93 li t4,128 + 80002c8c: 01100193 li gp,17 + 80002c90: 13d09863 bne ra,t4,80002dc0 + +0000000080002c94 : + 80002c94: 00000213 li tp,0 + 80002c98: 00100093 li ra,1 + 80002c9c: 00709f13 slli t5,ra,0x7 + 80002ca0: 000f0313 mv t1,t5 + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5216e3 bne tp,t0,80002c98 + 80002cb0: 08000e93 li t4,128 + 80002cb4: 01200193 li gp,18 + 80002cb8: 11d31463 bne t1,t4,80002dc0 + +0000000080002cbc : + 80002cbc: 00000213 li tp,0 + 80002cc0: 00100093 li ra,1 + 80002cc4: 00e09f13 slli t5,ra,0xe + 80002cc8: 00000013 nop + 80002ccc: 000f0313 mv t1,t5 + 80002cd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd4: 00200293 li t0,2 + 80002cd8: fe5214e3 bne tp,t0,80002cc0 + 80002cdc: 00004eb7 lui t4,0x4 + 80002ce0: 01300193 li gp,19 + 80002ce4: 0dd31e63 bne t1,t4,80002dc0 + +0000000080002ce8 : + 80002ce8: 00000213 li tp,0 + 80002cec: 00100093 li ra,1 + 80002cf0: 01f09f13 slli t5,ra,0x1f + 80002cf4: 00000013 nop + 80002cf8: 00000013 nop + 80002cfc: 000f0313 mv t1,t5 + 80002d00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d04: 00200293 li t0,2 + 80002d08: fe5212e3 bne tp,t0,80002cec + 80002d0c: 00100e9b addiw t4,zero,1 + 80002d10: 01fe9e93 slli t4,t4,0x1f + 80002d14: 01400193 li gp,20 + 80002d18: 0bd31463 bne t1,t4,80002dc0 + +0000000080002d1c : + 80002d1c: 00000213 li tp,0 + 80002d20: 00100093 li ra,1 + 80002d24: 00709f13 slli t5,ra,0x7 + 80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d2c: 00200293 li t0,2 + 80002d30: fe5218e3 bne tp,t0,80002d20 + 80002d34: 08000e93 li t4,128 + 80002d38: 01500193 li gp,21 + 80002d3c: 09df1263 bne t5,t4,80002dc0 + +0000000080002d40 : + 80002d40: 00000213 li tp,0 + 80002d44: 00100093 li ra,1 + 80002d48: 00000013 nop + 80002d4c: 00e09f13 slli t5,ra,0xe + 80002d50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d54: 00200293 li t0,2 + 80002d58: fe5216e3 bne tp,t0,80002d44 + 80002d5c: 00004eb7 lui t4,0x4 + 80002d60: 01600193 li gp,22 + 80002d64: 05df1e63 bne t5,t4,80002dc0 + +0000000080002d68 : + 80002d68: 00000213 li tp,0 + 80002d6c: 00100093 li ra,1 + 80002d70: 00000013 nop + 80002d74: 00000013 nop + 80002d78: 01f09f13 slli t5,ra,0x1f + 80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d80: 00200293 li t0,2 + 80002d84: fe5214e3 bne tp,t0,80002d6c + 80002d88: 00100e9b addiw t4,zero,1 + 80002d8c: 01fe9e93 slli t4,t4,0x1f + 80002d90: 01700193 li gp,23 + 80002d94: 03df1663 bne t5,t4,80002dc0 + +0000000080002d98 : + 80002d98: 01f01093 slli ra,zero,0x1f + 80002d9c: 00000e93 li t4,0 + 80002da0: 01800193 li gp,24 + 80002da4: 01d09e63 bne ra,t4,80002dc0 + +0000000080002da8 : + 80002da8: 02100093 li ra,33 + 80002dac: 01409013 slli zero,ra,0x14 + 80002db0: 00000e93 li t4,0 + 80002db4: 01900193 li gp,25 + 80002db8: 01d01463 bne zero,t4,80002dc0 + 80002dbc: 00301a63 bne zero,gp,80002dd0 + +0000000080002dc0 : + 80002dc0: 00119513 slli a0,gp,0x1 + 80002dc4: 00050063 beqz a0,80002dc4 + 80002dc8: 00156513 ori a0,a0,1 + 80002dcc: 00000073 ecall + +0000000080002dd0 : + 80002dd0: 00100513 li a0,1 + 80002dd4: 00000073 ecall + 80002dd8: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-slliw b/Tests/isa/rv64ui-v-slliw new file mode 100644 index 0000000..6f90cc6 Binary files /dev/null and b/Tests/isa/rv64ui-v-slliw differ diff --git a/Tests/isa/rv64ui-v-slliw.dump b/Tests/isa/rv64ui-v-slliw.dump new file mode 100644 index 0000000..25efc0d --- /dev/null +++ b/Tests/isa/rv64ui-v-slliw.dump @@ -0,0 +1,1047 @@ + +rv64ui-v-slliw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 91068693 addi a3,a3,-1776 # 80002d68 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 94460613 addi a2,a2,-1724 # 80002df8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 90c60613 addi a2,a2,-1780 # 80002e10 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 85c68693 addi a3,a3,-1956 # 80002db0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 87868693 addi a3,a3,-1928 # 80002ee8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7f860613 addi a2,a2,2040 # 80002ec0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 72c68693 addi a3,a3,1836 # 80002f18 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 64c68693 addi a3,a3,1612 # 80002e88 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5dc68693 addi a3,a3,1500 # 80002e50 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01000793 li a5,16 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a2947b7 lui a5,0xa294 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: def78793 addi a5,a5,-529 # a293def <_start-0x75d6c211> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00100093 li ra,1 + 80002acc: 00009f1b slliw t5,ra,0x0 + 80002ad0: 00100e93 li t4,1 + 80002ad4: 00200193 li gp,2 + 80002ad8: 27df1a63 bne t5,t4,80002d4c + +0000000080002adc : + 80002adc: 00100093 li ra,1 + 80002ae0: 00109f1b slliw t5,ra,0x1 + 80002ae4: 00200e93 li t4,2 + 80002ae8: 00300193 li gp,3 + 80002aec: 27df1063 bne t5,t4,80002d4c + +0000000080002af0 : + 80002af0: 00100093 li ra,1 + 80002af4: 00709f1b slliw t5,ra,0x7 + 80002af8: 08000e93 li t4,128 + 80002afc: 00400193 li gp,4 + 80002b00: 25df1663 bne t5,t4,80002d4c + +0000000080002b04 : + 80002b04: 00100093 li ra,1 + 80002b08: 00e09f1b slliw t5,ra,0xe + 80002b0c: 00004eb7 lui t4,0x4 + 80002b10: 00500193 li gp,5 + 80002b14: 23df1c63 bne t5,t4,80002d4c + +0000000080002b18 : + 80002b18: 00100093 li ra,1 + 80002b1c: 01f09f1b slliw t5,ra,0x1f + 80002b20: 80000eb7 lui t4,0x80000 + 80002b24: 00600193 li gp,6 + 80002b28: 23df1263 bne t5,t4,80002d4c + +0000000080002b2c : + 80002b2c: fff00093 li ra,-1 + 80002b30: 00009f1b slliw t5,ra,0x0 + 80002b34: fff00e93 li t4,-1 + 80002b38: 00700193 li gp,7 + 80002b3c: 21df1863 bne t5,t4,80002d4c + +0000000080002b40 : + 80002b40: fff00093 li ra,-1 + 80002b44: 00109f1b slliw t5,ra,0x1 + 80002b48: ffe00e93 li t4,-2 + 80002b4c: 00800193 li gp,8 + 80002b50: 1fdf1e63 bne t5,t4,80002d4c + +0000000080002b54 : + 80002b54: fff00093 li ra,-1 + 80002b58: 00709f1b slliw t5,ra,0x7 + 80002b5c: f8000e93 li t4,-128 + 80002b60: 00900193 li gp,9 + 80002b64: 1fdf1463 bne t5,t4,80002d4c + +0000000080002b68 : + 80002b68: fff00093 li ra,-1 + 80002b6c: 00e09f1b slliw t5,ra,0xe + 80002b70: ffffceb7 lui t4,0xffffc + 80002b74: 00a00193 li gp,10 + 80002b78: 1ddf1a63 bne t5,t4,80002d4c + +0000000080002b7c : + 80002b7c: fff00093 li ra,-1 + 80002b80: 01f09f1b slliw t5,ra,0x1f + 80002b84: 80000eb7 lui t4,0x80000 + 80002b88: 00b00193 li gp,11 + 80002b8c: 1ddf1063 bne t5,t4,80002d4c + +0000000080002b90 : + 80002b90: 212120b7 lui ra,0x21212 + 80002b94: 1210809b addiw ra,ra,289 + 80002b98: 00009f1b slliw t5,ra,0x0 + 80002b9c: 21212eb7 lui t4,0x21212 + 80002ba0: 121e8e9b addiw t4,t4,289 + 80002ba4: 00c00193 li gp,12 + 80002ba8: 1bdf1263 bne t5,t4,80002d4c + +0000000080002bac : + 80002bac: 212120b7 lui ra,0x21212 + 80002bb0: 1210809b addiw ra,ra,289 + 80002bb4: 00109f1b slliw t5,ra,0x1 + 80002bb8: 42424eb7 lui t4,0x42424 + 80002bbc: 242e8e9b addiw t4,t4,578 + 80002bc0: 00d00193 li gp,13 + 80002bc4: 19df1463 bne t5,t4,80002d4c + +0000000080002bc8 : + 80002bc8: 212120b7 lui ra,0x21212 + 80002bcc: 1210809b addiw ra,ra,289 + 80002bd0: 00709f1b slliw t5,ra,0x7 + 80002bd4: 90909eb7 lui t4,0x90909 + 80002bd8: 080e8e9b addiw t4,t4,128 + 80002bdc: 00e00193 li gp,14 + 80002be0: 17df1663 bne t5,t4,80002d4c + +0000000080002be4 : + 80002be4: 212120b7 lui ra,0x21212 + 80002be8: 1210809b addiw ra,ra,289 + 80002bec: 00e09f1b slliw t5,ra,0xe + 80002bf0: 48484eb7 lui t4,0x48484 + 80002bf4: 00f00193 li gp,15 + 80002bf8: 15df1a63 bne t5,t4,80002d4c + +0000000080002bfc : + 80002bfc: 212120b7 lui ra,0x21212 + 80002c00: 1210809b addiw ra,ra,289 + 80002c04: 01f09f1b slliw t5,ra,0x1f + 80002c08: 80000eb7 lui t4,0x80000 + 80002c0c: 01000193 li gp,16 + 80002c10: 13df1e63 bne t5,t4,80002d4c + +0000000080002c14 : + 80002c14: 00100093 li ra,1 + 80002c18: 0070909b slliw ra,ra,0x7 + 80002c1c: 08000e93 li t4,128 + 80002c20: 01100193 li gp,17 + 80002c24: 13d09463 bne ra,t4,80002d4c + +0000000080002c28 : + 80002c28: 00000213 li tp,0 + 80002c2c: 00100093 li ra,1 + 80002c30: 00709f1b slliw t5,ra,0x7 + 80002c34: 000f0313 mv t1,t5 + 80002c38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c3c: 00200293 li t0,2 + 80002c40: fe5216e3 bne tp,t0,80002c2c + 80002c44: 08000e93 li t4,128 + 80002c48: 01200193 li gp,18 + 80002c4c: 11d31063 bne t1,t4,80002d4c + +0000000080002c50 : + 80002c50: 00000213 li tp,0 + 80002c54: 00100093 li ra,1 + 80002c58: 00e09f1b slliw t5,ra,0xe + 80002c5c: 00000013 nop + 80002c60: 000f0313 mv t1,t5 + 80002c64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c68: 00200293 li t0,2 + 80002c6c: fe5214e3 bne tp,t0,80002c54 + 80002c70: 00004eb7 lui t4,0x4 + 80002c74: 01300193 li gp,19 + 80002c78: 0dd31a63 bne t1,t4,80002d4c + +0000000080002c7c : + 80002c7c: 00000213 li tp,0 + 80002c80: 00100093 li ra,1 + 80002c84: 01f09f1b slliw t5,ra,0x1f + 80002c88: 00000013 nop + 80002c8c: 00000013 nop + 80002c90: 000f0313 mv t1,t5 + 80002c94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c98: 00200293 li t0,2 + 80002c9c: fe5212e3 bne tp,t0,80002c80 + 80002ca0: 80000eb7 lui t4,0x80000 + 80002ca4: 01400193 li gp,20 + 80002ca8: 0bd31263 bne t1,t4,80002d4c + +0000000080002cac : + 80002cac: 00000213 li tp,0 + 80002cb0: 00100093 li ra,1 + 80002cb4: 00709f1b slliw t5,ra,0x7 + 80002cb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cbc: 00200293 li t0,2 + 80002cc0: fe5218e3 bne tp,t0,80002cb0 + 80002cc4: 08000e93 li t4,128 + 80002cc8: 01500193 li gp,21 + 80002ccc: 09df1063 bne t5,t4,80002d4c + +0000000080002cd0 : + 80002cd0: 00000213 li tp,0 + 80002cd4: 00100093 li ra,1 + 80002cd8: 00000013 nop + 80002cdc: 00e09f1b slliw t5,ra,0xe + 80002ce0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce4: 00200293 li t0,2 + 80002ce8: fe5216e3 bne tp,t0,80002cd4 + 80002cec: 00004eb7 lui t4,0x4 + 80002cf0: 01600193 li gp,22 + 80002cf4: 05df1c63 bne t5,t4,80002d4c + +0000000080002cf8 : + 80002cf8: 00000213 li tp,0 + 80002cfc: 00100093 li ra,1 + 80002d00: 00000013 nop + 80002d04: 00000013 nop + 80002d08: 01f09f1b slliw t5,ra,0x1f + 80002d0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d10: 00200293 li t0,2 + 80002d14: fe5214e3 bne tp,t0,80002cfc + 80002d18: 80000eb7 lui t4,0x80000 + 80002d1c: 01700193 li gp,23 + 80002d20: 03df1663 bne t5,t4,80002d4c + +0000000080002d24 : + 80002d24: 01f0109b slliw ra,zero,0x1f + 80002d28: 00000e93 li t4,0 + 80002d2c: 01800193 li gp,24 + 80002d30: 01d09e63 bne ra,t4,80002d4c + +0000000080002d34 : + 80002d34: 01f00093 li ra,31 + 80002d38: 01c0901b slliw zero,ra,0x1c + 80002d3c: 00000e93 li t4,0 + 80002d40: 01900193 li gp,25 + 80002d44: 01d01463 bne zero,t4,80002d4c + 80002d48: 00301a63 bne zero,gp,80002d5c + +0000000080002d4c : + 80002d4c: 00119513 slli a0,gp,0x1 + 80002d50: 00050063 beqz a0,80002d50 + 80002d54: 00156513 ori a0,a0,1 + 80002d58: 00000073 ecall + +0000000080002d5c : + 80002d5c: 00100513 li a0,1 + 80002d60: 00000073 ecall + 80002d64: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sllw b/Tests/isa/rv64ui-v-sllw new file mode 100644 index 0000000..cd43746 Binary files /dev/null and b/Tests/isa/rv64ui-v-sllw differ diff --git a/Tests/isa/rv64ui-v-sllw.dump b/Tests/isa/rv64ui-v-sllw.dump new file mode 100644 index 0000000..e44d86e --- /dev/null +++ b/Tests/isa/rv64ui-v-sllw.dump @@ -0,0 +1,1269 @@ + +rv64ui-v-sllw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: bf868693 addi a3,a3,-1032 # 80003050 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: c2c60613 addi a2,a2,-980 # 800030e0 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: bf460613 addi a2,a2,-1036 # 800030f8 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: b4468693 addi a3,a3,-1212 # 80003098 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: b6068693 addi a3,a3,-1184 # 800031d0 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: ae060613 addi a2,a2,-1312 # 800031a8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: a1468693 addi a3,a3,-1516 # 80003200 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 93468693 addi a3,a3,-1740 # 80003170 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 8c468693 addi a3,a3,-1852 # 80003138 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02f00793 li a5,47 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 09afd7b7 lui a5,0x9afd + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 1b578793 addi a5,a5,437 # 9afd1b5 <_start-0x76502e4b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00100093 li ra,1 + 80002acc: 00000113 li sp,0 + 80002ad0: 00209f3b sllw t5,ra,sp + 80002ad4: 00100e93 li t4,1 + 80002ad8: 00200193 li gp,2 + 80002adc: 55df1c63 bne t5,t4,80003034 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 00209f3b sllw t5,ra,sp + 80002aec: 00200e93 li t4,2 + 80002af0: 00300193 li gp,3 + 80002af4: 55df1063 bne t5,t4,80003034 + +0000000080002af8 : + 80002af8: 00100093 li ra,1 + 80002afc: 00700113 li sp,7 + 80002b00: 00209f3b sllw t5,ra,sp + 80002b04: 08000e93 li t4,128 + 80002b08: 00400193 li gp,4 + 80002b0c: 53df1463 bne t5,t4,80003034 + +0000000080002b10 : + 80002b10: 00100093 li ra,1 + 80002b14: 00e00113 li sp,14 + 80002b18: 00209f3b sllw t5,ra,sp + 80002b1c: 00004eb7 lui t4,0x4 + 80002b20: 00500193 li gp,5 + 80002b24: 51df1863 bne t5,t4,80003034 + +0000000080002b28 : + 80002b28: 00100093 li ra,1 + 80002b2c: 01f00113 li sp,31 + 80002b30: 00209f3b sllw t5,ra,sp + 80002b34: 80000eb7 lui t4,0x80000 + 80002b38: 00600193 li gp,6 + 80002b3c: 4fdf1c63 bne t5,t4,80003034 + +0000000080002b40 : + 80002b40: fff00093 li ra,-1 + 80002b44: 00000113 li sp,0 + 80002b48: 00209f3b sllw t5,ra,sp + 80002b4c: fff00e93 li t4,-1 + 80002b50: 00700193 li gp,7 + 80002b54: 4fdf1063 bne t5,t4,80003034 + +0000000080002b58 : + 80002b58: fff00093 li ra,-1 + 80002b5c: 00100113 li sp,1 + 80002b60: 00209f3b sllw t5,ra,sp + 80002b64: ffe00e93 li t4,-2 + 80002b68: 00800193 li gp,8 + 80002b6c: 4ddf1463 bne t5,t4,80003034 + +0000000080002b70 : + 80002b70: fff00093 li ra,-1 + 80002b74: 00700113 li sp,7 + 80002b78: 00209f3b sllw t5,ra,sp + 80002b7c: f8000e93 li t4,-128 + 80002b80: 00900193 li gp,9 + 80002b84: 4bdf1863 bne t5,t4,80003034 + +0000000080002b88 : + 80002b88: fff00093 li ra,-1 + 80002b8c: 00e00113 li sp,14 + 80002b90: 00209f3b sllw t5,ra,sp + 80002b94: ffffceb7 lui t4,0xffffc + 80002b98: 00a00193 li gp,10 + 80002b9c: 49df1c63 bne t5,t4,80003034 + +0000000080002ba0 : + 80002ba0: fff00093 li ra,-1 + 80002ba4: 01f00113 li sp,31 + 80002ba8: 00209f3b sllw t5,ra,sp + 80002bac: 80000eb7 lui t4,0x80000 + 80002bb0: 00b00193 li gp,11 + 80002bb4: 49df1063 bne t5,t4,80003034 + +0000000080002bb8 : + 80002bb8: 212120b7 lui ra,0x21212 + 80002bbc: 1210809b addiw ra,ra,289 + 80002bc0: 00000113 li sp,0 + 80002bc4: 00209f3b sllw t5,ra,sp + 80002bc8: 21212eb7 lui t4,0x21212 + 80002bcc: 121e8e9b addiw t4,t4,289 + 80002bd0: 00c00193 li gp,12 + 80002bd4: 47df1063 bne t5,t4,80003034 + +0000000080002bd8 : + 80002bd8: 212120b7 lui ra,0x21212 + 80002bdc: 1210809b addiw ra,ra,289 + 80002be0: 00100113 li sp,1 + 80002be4: 00209f3b sllw t5,ra,sp + 80002be8: 42424eb7 lui t4,0x42424 + 80002bec: 242e8e9b addiw t4,t4,578 + 80002bf0: 00d00193 li gp,13 + 80002bf4: 45df1063 bne t5,t4,80003034 + +0000000080002bf8 : + 80002bf8: 212120b7 lui ra,0x21212 + 80002bfc: 1210809b addiw ra,ra,289 + 80002c00: 00700113 li sp,7 + 80002c04: 00209f3b sllw t5,ra,sp + 80002c08: 90909eb7 lui t4,0x90909 + 80002c0c: 080e8e9b addiw t4,t4,128 + 80002c10: 00e00193 li gp,14 + 80002c14: 43df1063 bne t5,t4,80003034 + +0000000080002c18 : + 80002c18: 212120b7 lui ra,0x21212 + 80002c1c: 1210809b addiw ra,ra,289 + 80002c20: 00e00113 li sp,14 + 80002c24: 00209f3b sllw t5,ra,sp + 80002c28: 48484eb7 lui t4,0x48484 + 80002c2c: 00f00193 li gp,15 + 80002c30: 41df1263 bne t5,t4,80003034 + +0000000080002c34 : + 80002c34: 212120b7 lui ra,0x21212 + 80002c38: 1210809b addiw ra,ra,289 + 80002c3c: 01f00113 li sp,31 + 80002c40: 00209f3b sllw t5,ra,sp + 80002c44: 80000eb7 lui t4,0x80000 + 80002c48: 01000193 li gp,16 + 80002c4c: 3fdf1463 bne t5,t4,80003034 + +0000000080002c50 : + 80002c50: 212120b7 lui ra,0x21212 + 80002c54: 1210809b addiw ra,ra,289 + 80002c58: fe000113 li sp,-32 + 80002c5c: 00209f3b sllw t5,ra,sp + 80002c60: 21212eb7 lui t4,0x21212 + 80002c64: 121e8e9b addiw t4,t4,289 + 80002c68: 01100193 li gp,17 + 80002c6c: 3ddf1463 bne t5,t4,80003034 + +0000000080002c70 : + 80002c70: 212120b7 lui ra,0x21212 + 80002c74: 1210809b addiw ra,ra,289 + 80002c78: fe100113 li sp,-31 + 80002c7c: 00209f3b sllw t5,ra,sp + 80002c80: 42424eb7 lui t4,0x42424 + 80002c84: 242e8e9b addiw t4,t4,578 + 80002c88: 01200193 li gp,18 + 80002c8c: 3bdf1463 bne t5,t4,80003034 + +0000000080002c90 : + 80002c90: 212120b7 lui ra,0x21212 + 80002c94: 1210809b addiw ra,ra,289 + 80002c98: fe700113 li sp,-25 + 80002c9c: 00209f3b sllw t5,ra,sp + 80002ca0: 90909eb7 lui t4,0x90909 + 80002ca4: 080e8e9b addiw t4,t4,128 + 80002ca8: 01300193 li gp,19 + 80002cac: 39df1463 bne t5,t4,80003034 + +0000000080002cb0 : + 80002cb0: 212120b7 lui ra,0x21212 + 80002cb4: 1210809b addiw ra,ra,289 + 80002cb8: fee00113 li sp,-18 + 80002cbc: 00209f3b sllw t5,ra,sp + 80002cc0: 48484eb7 lui t4,0x48484 + 80002cc4: 01400193 li gp,20 + 80002cc8: 37df1663 bne t5,t4,80003034 + +0000000080002ccc : + 80002ccc: 212120b7 lui ra,0x21212 + 80002cd0: 1210809b addiw ra,ra,289 + 80002cd4: fff00113 li sp,-1 + 80002cd8: 00209f3b sllw t5,ra,sp + 80002cdc: 80000eb7 lui t4,0x80000 + 80002ce0: 01500193 li gp,21 + 80002ce4: 35df1863 bne t5,t4,80003034 + +0000000080002ce8 : + 80002ce8: 00100093 li ra,1 + 80002cec: 00700113 li sp,7 + 80002cf0: 002090bb sllw ra,ra,sp + 80002cf4: 08000e93 li t4,128 + 80002cf8: 01600193 li gp,22 + 80002cfc: 33d09c63 bne ra,t4,80003034 + +0000000080002d00 : + 80002d00: 00100093 li ra,1 + 80002d04: 00e00113 li sp,14 + 80002d08: 0020913b sllw sp,ra,sp + 80002d0c: 00004eb7 lui t4,0x4 + 80002d10: 01700193 li gp,23 + 80002d14: 33d11063 bne sp,t4,80003034 + +0000000080002d18 : + 80002d18: 00300093 li ra,3 + 80002d1c: 001090bb sllw ra,ra,ra + 80002d20: 01800e93 li t4,24 + 80002d24: 01800193 li gp,24 + 80002d28: 31d09663 bne ra,t4,80003034 + +0000000080002d2c : + 80002d2c: 00000213 li tp,0 + 80002d30: 00100093 li ra,1 + 80002d34: 00700113 li sp,7 + 80002d38: 00209f3b sllw t5,ra,sp + 80002d3c: 000f0313 mv t1,t5 + 80002d40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d44: 00200293 li t0,2 + 80002d48: fe5214e3 bne tp,t0,80002d30 + 80002d4c: 08000e93 li t4,128 + 80002d50: 01900193 li gp,25 + 80002d54: 2fd31063 bne t1,t4,80003034 + +0000000080002d58 : + 80002d58: 00000213 li tp,0 + 80002d5c: 00100093 li ra,1 + 80002d60: 00e00113 li sp,14 + 80002d64: 00209f3b sllw t5,ra,sp + 80002d68: 00000013 nop + 80002d6c: 000f0313 mv t1,t5 + 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d74: 00200293 li t0,2 + 80002d78: fe5212e3 bne tp,t0,80002d5c + 80002d7c: 00004eb7 lui t4,0x4 + 80002d80: 01a00193 li gp,26 + 80002d84: 2bd31863 bne t1,t4,80003034 + +0000000080002d88 : + 80002d88: 00000213 li tp,0 + 80002d8c: 00100093 li ra,1 + 80002d90: 01f00113 li sp,31 + 80002d94: 00209f3b sllw t5,ra,sp + 80002d98: 00000013 nop + 80002d9c: 00000013 nop + 80002da0: 000f0313 mv t1,t5 + 80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da8: 00200293 li t0,2 + 80002dac: fe5210e3 bne tp,t0,80002d8c + 80002db0: 80000eb7 lui t4,0x80000 + 80002db4: 01b00193 li gp,27 + 80002db8: 27d31e63 bne t1,t4,80003034 + +0000000080002dbc : + 80002dbc: 00000213 li tp,0 + 80002dc0: 00100093 li ra,1 + 80002dc4: 00700113 li sp,7 + 80002dc8: 00209f3b sllw t5,ra,sp + 80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd0: 00200293 li t0,2 + 80002dd4: fe5216e3 bne tp,t0,80002dc0 + 80002dd8: 08000e93 li t4,128 + 80002ddc: 01c00193 li gp,28 + 80002de0: 25df1a63 bne t5,t4,80003034 + +0000000080002de4 : + 80002de4: 00000213 li tp,0 + 80002de8: 00100093 li ra,1 + 80002dec: 00e00113 li sp,14 + 80002df0: 00000013 nop + 80002df4: 00209f3b sllw t5,ra,sp + 80002df8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dfc: 00200293 li t0,2 + 80002e00: fe5214e3 bne tp,t0,80002de8 + 80002e04: 00004eb7 lui t4,0x4 + 80002e08: 01d00193 li gp,29 + 80002e0c: 23df1463 bne t5,t4,80003034 + +0000000080002e10 : + 80002e10: 00000213 li tp,0 + 80002e14: 00100093 li ra,1 + 80002e18: 01f00113 li sp,31 + 80002e1c: 00000013 nop + 80002e20: 00000013 nop + 80002e24: 00209f3b sllw t5,ra,sp + 80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e2c: 00200293 li t0,2 + 80002e30: fe5212e3 bne tp,t0,80002e14 + 80002e34: 80000eb7 lui t4,0x80000 + 80002e38: 01e00193 li gp,30 + 80002e3c: 1fdf1c63 bne t5,t4,80003034 + +0000000080002e40 : + 80002e40: 00000213 li tp,0 + 80002e44: 00100093 li ra,1 + 80002e48: 00000013 nop + 80002e4c: 00700113 li sp,7 + 80002e50: 00209f3b sllw t5,ra,sp + 80002e54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e58: 00200293 li t0,2 + 80002e5c: fe5214e3 bne tp,t0,80002e44 + 80002e60: 08000e93 li t4,128 + 80002e64: 01f00193 li gp,31 + 80002e68: 1ddf1663 bne t5,t4,80003034 + +0000000080002e6c : + 80002e6c: 00000213 li tp,0 + 80002e70: 00100093 li ra,1 + 80002e74: 00000013 nop + 80002e78: 00e00113 li sp,14 + 80002e7c: 00000013 nop + 80002e80: 00209f3b sllw t5,ra,sp + 80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e88: 00200293 li t0,2 + 80002e8c: fe5212e3 bne tp,t0,80002e70 + 80002e90: 00004eb7 lui t4,0x4 + 80002e94: 02000193 li gp,32 + 80002e98: 19df1e63 bne t5,t4,80003034 + +0000000080002e9c : + 80002e9c: 00000213 li tp,0 + 80002ea0: 00100093 li ra,1 + 80002ea4: 00000013 nop + 80002ea8: 00000013 nop + 80002eac: 01f00113 li sp,31 + 80002eb0: 00209f3b sllw t5,ra,sp + 80002eb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002eb8: 00200293 li t0,2 + 80002ebc: fe5212e3 bne tp,t0,80002ea0 + 80002ec0: 80000eb7 lui t4,0x80000 + 80002ec4: 02100193 li gp,33 + 80002ec8: 17df1663 bne t5,t4,80003034 + +0000000080002ecc : + 80002ecc: 00000213 li tp,0 + 80002ed0: 00700113 li sp,7 + 80002ed4: 00100093 li ra,1 + 80002ed8: 00209f3b sllw t5,ra,sp + 80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ee0: 00200293 li t0,2 + 80002ee4: fe5216e3 bne tp,t0,80002ed0 + 80002ee8: 08000e93 li t4,128 + 80002eec: 02200193 li gp,34 + 80002ef0: 15df1263 bne t5,t4,80003034 + +0000000080002ef4 : + 80002ef4: 00000213 li tp,0 + 80002ef8: 00e00113 li sp,14 + 80002efc: 00100093 li ra,1 + 80002f00: 00000013 nop + 80002f04: 00209f3b sllw t5,ra,sp + 80002f08: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f0c: 00200293 li t0,2 + 80002f10: fe5214e3 bne tp,t0,80002ef8 + 80002f14: 00004eb7 lui t4,0x4 + 80002f18: 02300193 li gp,35 + 80002f1c: 11df1c63 bne t5,t4,80003034 + +0000000080002f20 : + 80002f20: 00000213 li tp,0 + 80002f24: 01f00113 li sp,31 + 80002f28: 00100093 li ra,1 + 80002f2c: 00000013 nop + 80002f30: 00000013 nop + 80002f34: 00209f3b sllw t5,ra,sp + 80002f38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f3c: 00200293 li t0,2 + 80002f40: fe5212e3 bne tp,t0,80002f24 + 80002f44: 80000eb7 lui t4,0x80000 + 80002f48: 02400193 li gp,36 + 80002f4c: 0fdf1463 bne t5,t4,80003034 + +0000000080002f50 : + 80002f50: 00000213 li tp,0 + 80002f54: 00700113 li sp,7 + 80002f58: 00000013 nop + 80002f5c: 00100093 li ra,1 + 80002f60: 00209f3b sllw t5,ra,sp + 80002f64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f68: 00200293 li t0,2 + 80002f6c: fe5214e3 bne tp,t0,80002f54 + 80002f70: 08000e93 li t4,128 + 80002f74: 02500193 li gp,37 + 80002f78: 0bdf1e63 bne t5,t4,80003034 + +0000000080002f7c : + 80002f7c: 00000213 li tp,0 + 80002f80: 00e00113 li sp,14 + 80002f84: 00000013 nop + 80002f88: 00100093 li ra,1 + 80002f8c: 00000013 nop + 80002f90: 00209f3b sllw t5,ra,sp + 80002f94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f98: 00200293 li t0,2 + 80002f9c: fe5212e3 bne tp,t0,80002f80 + 80002fa0: 00004eb7 lui t4,0x4 + 80002fa4: 02600193 li gp,38 + 80002fa8: 09df1663 bne t5,t4,80003034 + +0000000080002fac : + 80002fac: 00000213 li tp,0 + 80002fb0: 01f00113 li sp,31 + 80002fb4: 00000013 nop + 80002fb8: 00000013 nop + 80002fbc: 00100093 li ra,1 + 80002fc0: 00209f3b sllw t5,ra,sp + 80002fc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fc8: 00200293 li t0,2 + 80002fcc: fe5212e3 bne tp,t0,80002fb0 + 80002fd0: 80000eb7 lui t4,0x80000 + 80002fd4: 02700193 li gp,39 + 80002fd8: 05df1e63 bne t5,t4,80003034 + +0000000080002fdc : + 80002fdc: 00f00093 li ra,15 + 80002fe0: 0010113b sllw sp,zero,ra + 80002fe4: 00000e93 li t4,0 + 80002fe8: 02800193 li gp,40 + 80002fec: 05d11463 bne sp,t4,80003034 + +0000000080002ff0 : + 80002ff0: 02000093 li ra,32 + 80002ff4: 0000913b sllw sp,ra,zero + 80002ff8: 02000e93 li t4,32 + 80002ffc: 02900193 li gp,41 + 80003000: 03d11a63 bne sp,t4,80003034 + +0000000080003004 : + 80003004: 000010bb sllw ra,zero,zero + 80003008: 00000e93 li t4,0 + 8000300c: 02a00193 li gp,42 + 80003010: 03d09263 bne ra,t4,80003034 + +0000000080003014 : + 80003014: 40000093 li ra,1024 + 80003018: 00001137 lui sp,0x1 + 8000301c: 8001011b addiw sp,sp,-2048 + 80003020: 0020903b sllw zero,ra,sp + 80003024: 00000e93 li t4,0 + 80003028: 02b00193 li gp,43 + 8000302c: 01d01463 bne zero,t4,80003034 + 80003030: 00301a63 bne zero,gp,80003044 + +0000000080003034 : + 80003034: 00119513 slli a0,gp,0x1 + 80003038: 00050063 beqz a0,80003038 + 8000303c: 00156513 ori a0,a0,1 + 80003040: 00000073 ecall + +0000000080003044 : + 80003044: 00100513 li a0,1 + 80003048: 00000073 ecall + 8000304c: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-slt b/Tests/isa/rv64ui-v-slt new file mode 100644 index 0000000..4eb6c2f Binary files /dev/null and b/Tests/isa/rv64ui-v-slt differ diff --git a/Tests/isa/rv64ui-v-slt.dump b/Tests/isa/rv64ui-v-slt.dump new file mode 100644 index 0000000..dd39ae7 --- /dev/null +++ b/Tests/isa/rv64ui-v-slt.dump @@ -0,0 +1,1218 @@ + +rv64ui-v-slt: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b5868693 addi a3,a3,-1192 # 80002fb0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b8c60613 addi a2,a2,-1140 # 80003040 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b5460613 addi a2,a2,-1196 # 80003058 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: aa468693 addi a3,a3,-1372 # 80002ff8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: ac068693 addi a3,a3,-1344 # 80003130 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a4060613 addi a2,a2,-1472 # 80003108 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 97468693 addi a3,a3,-1676 # 80003160 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 89468693 addi a3,a3,-1900 # 800030d0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 82468693 addi a3,a3,-2012 # 80003098 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00300793 li a5,3 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0c8c27b7 lui a5,0xc8c2 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: a2878793 addi a5,a5,-1496 # c8c1a28 <_start-0x7373e5d8> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 0020af33 slt t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 4bdf1a63 bne t5,t4,80002f90 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 0020af33 slt t5,ra,sp + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 49df1e63 bne t5,t4,80002f90 + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 0020af33 slt t5,ra,sp + 80002b04: 00100e93 li t4,1 + 80002b08: 00400193 li gp,4 + 80002b0c: 49df1263 bne t5,t4,80002f90 + +0000000080002b10 : + 80002b10: 00700093 li ra,7 + 80002b14: 00300113 li sp,3 + 80002b18: 0020af33 slt t5,ra,sp + 80002b1c: 00000e93 li t4,0 + 80002b20: 00500193 li gp,5 + 80002b24: 47df1663 bne t5,t4,80002f90 + +0000000080002b28 : + 80002b28: 00000093 li ra,0 + 80002b2c: ffff8137 lui sp,0xffff8 + 80002b30: 0020af33 slt t5,ra,sp + 80002b34: 00000e93 li t4,0 + 80002b38: 00600193 li gp,6 + 80002b3c: 45df1a63 bne t5,t4,80002f90 + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: 00000113 li sp,0 + 80002b48: 0020af33 slt t5,ra,sp + 80002b4c: 00100e93 li t4,1 + 80002b50: 00700193 li gp,7 + 80002b54: 43df1e63 bne t5,t4,80002f90 + +0000000080002b58 : + 80002b58: 800000b7 lui ra,0x80000 + 80002b5c: ffff8137 lui sp,0xffff8 + 80002b60: 0020af33 slt t5,ra,sp + 80002b64: 00100e93 li t4,1 + 80002b68: 00800193 li gp,8 + 80002b6c: 43df1263 bne t5,t4,80002f90 + +0000000080002b70 : + 80002b70: 00000093 li ra,0 + 80002b74: 00008137 lui sp,0x8 + 80002b78: fff1011b addiw sp,sp,-1 + 80002b7c: 0020af33 slt t5,ra,sp + 80002b80: 00100e93 li t4,1 + 80002b84: 00900193 li gp,9 + 80002b88: 41df1463 bne t5,t4,80002f90 + +0000000080002b8c : + 80002b8c: 800000b7 lui ra,0x80000 + 80002b90: fff0809b addiw ra,ra,-1 + 80002b94: 00000113 li sp,0 + 80002b98: 0020af33 slt t5,ra,sp + 80002b9c: 00000e93 li t4,0 + 80002ba0: 00a00193 li gp,10 + 80002ba4: 3fdf1663 bne t5,t4,80002f90 + +0000000080002ba8 : + 80002ba8: 800000b7 lui ra,0x80000 + 80002bac: fff0809b addiw ra,ra,-1 + 80002bb0: 00008137 lui sp,0x8 + 80002bb4: fff1011b addiw sp,sp,-1 + 80002bb8: 0020af33 slt t5,ra,sp + 80002bbc: 00000e93 li t4,0 + 80002bc0: 00b00193 li gp,11 + 80002bc4: 3ddf1663 bne t5,t4,80002f90 + +0000000080002bc8 : + 80002bc8: 800000b7 lui ra,0x80000 + 80002bcc: 00008137 lui sp,0x8 + 80002bd0: fff1011b addiw sp,sp,-1 + 80002bd4: 0020af33 slt t5,ra,sp + 80002bd8: 00100e93 li t4,1 + 80002bdc: 00c00193 li gp,12 + 80002be0: 3bdf1863 bne t5,t4,80002f90 + +0000000080002be4 : + 80002be4: 800000b7 lui ra,0x80000 + 80002be8: fff0809b addiw ra,ra,-1 + 80002bec: ffff8137 lui sp,0xffff8 + 80002bf0: 0020af33 slt t5,ra,sp + 80002bf4: 00000e93 li t4,0 + 80002bf8: 00d00193 li gp,13 + 80002bfc: 39df1a63 bne t5,t4,80002f90 + +0000000080002c00 : + 80002c00: 00000093 li ra,0 + 80002c04: fff00113 li sp,-1 + 80002c08: 0020af33 slt t5,ra,sp + 80002c0c: 00000e93 li t4,0 + 80002c10: 00e00193 li gp,14 + 80002c14: 37df1e63 bne t5,t4,80002f90 + +0000000080002c18 : + 80002c18: fff00093 li ra,-1 + 80002c1c: 00100113 li sp,1 + 80002c20: 0020af33 slt t5,ra,sp + 80002c24: 00100e93 li t4,1 + 80002c28: 00f00193 li gp,15 + 80002c2c: 37df1263 bne t5,t4,80002f90 + +0000000080002c30 : + 80002c30: fff00093 li ra,-1 + 80002c34: fff00113 li sp,-1 + 80002c38: 0020af33 slt t5,ra,sp + 80002c3c: 00000e93 li t4,0 + 80002c40: 01000193 li gp,16 + 80002c44: 35df1663 bne t5,t4,80002f90 + +0000000080002c48 : + 80002c48: 00e00093 li ra,14 + 80002c4c: 00d00113 li sp,13 + 80002c50: 0020a0b3 slt ra,ra,sp + 80002c54: 00000e93 li t4,0 + 80002c58: 01100193 li gp,17 + 80002c5c: 33d09a63 bne ra,t4,80002f90 + +0000000080002c60 : + 80002c60: 00b00093 li ra,11 + 80002c64: 00d00113 li sp,13 + 80002c68: 0020a133 slt sp,ra,sp + 80002c6c: 00100e93 li t4,1 + 80002c70: 01200193 li gp,18 + 80002c74: 31d11e63 bne sp,t4,80002f90 + +0000000080002c78 : + 80002c78: 00d00093 li ra,13 + 80002c7c: 0010a0b3 slt ra,ra,ra + 80002c80: 00000e93 li t4,0 + 80002c84: 01300193 li gp,19 + 80002c88: 31d09463 bne ra,t4,80002f90 + +0000000080002c8c : + 80002c8c: 00000213 li tp,0 + 80002c90: 00b00093 li ra,11 + 80002c94: 00d00113 li sp,13 + 80002c98: 0020af33 slt t5,ra,sp + 80002c9c: 000f0313 mv t1,t5 + 80002ca0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca4: 00200293 li t0,2 + 80002ca8: fe5214e3 bne tp,t0,80002c90 + 80002cac: 00100e93 li t4,1 + 80002cb0: 01400193 li gp,20 + 80002cb4: 2dd31e63 bne t1,t4,80002f90 + +0000000080002cb8 : + 80002cb8: 00000213 li tp,0 + 80002cbc: 00e00093 li ra,14 + 80002cc0: 00d00113 li sp,13 + 80002cc4: 0020af33 slt t5,ra,sp + 80002cc8: 00000013 nop + 80002ccc: 000f0313 mv t1,t5 + 80002cd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd4: 00200293 li t0,2 + 80002cd8: fe5212e3 bne tp,t0,80002cbc + 80002cdc: 00000e93 li t4,0 + 80002ce0: 01500193 li gp,21 + 80002ce4: 2bd31663 bne t1,t4,80002f90 + +0000000080002ce8 : + 80002ce8: 00000213 li tp,0 + 80002cec: 00c00093 li ra,12 + 80002cf0: 00d00113 li sp,13 + 80002cf4: 0020af33 slt t5,ra,sp + 80002cf8: 00000013 nop + 80002cfc: 00000013 nop + 80002d00: 000f0313 mv t1,t5 + 80002d04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d08: 00200293 li t0,2 + 80002d0c: fe5210e3 bne tp,t0,80002cec + 80002d10: 00100e93 li t4,1 + 80002d14: 01600193 li gp,22 + 80002d18: 27d31c63 bne t1,t4,80002f90 + +0000000080002d1c : + 80002d1c: 00000213 li tp,0 + 80002d20: 00e00093 li ra,14 + 80002d24: 00d00113 li sp,13 + 80002d28: 0020af33 slt t5,ra,sp + 80002d2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d30: 00200293 li t0,2 + 80002d34: fe5216e3 bne tp,t0,80002d20 + 80002d38: 00000e93 li t4,0 + 80002d3c: 01700193 li gp,23 + 80002d40: 25df1863 bne t5,t4,80002f90 + +0000000080002d44 : + 80002d44: 00000213 li tp,0 + 80002d48: 00b00093 li ra,11 + 80002d4c: 00d00113 li sp,13 + 80002d50: 00000013 nop + 80002d54: 0020af33 slt t5,ra,sp + 80002d58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d5c: 00200293 li t0,2 + 80002d60: fe5214e3 bne tp,t0,80002d48 + 80002d64: 00100e93 li t4,1 + 80002d68: 01800193 li gp,24 + 80002d6c: 23df1263 bne t5,t4,80002f90 + +0000000080002d70 : + 80002d70: 00000213 li tp,0 + 80002d74: 00f00093 li ra,15 + 80002d78: 00d00113 li sp,13 + 80002d7c: 00000013 nop + 80002d80: 00000013 nop + 80002d84: 0020af33 slt t5,ra,sp + 80002d88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d8c: 00200293 li t0,2 + 80002d90: fe5212e3 bne tp,t0,80002d74 + 80002d94: 00000e93 li t4,0 + 80002d98: 01900193 li gp,25 + 80002d9c: 1fdf1a63 bne t5,t4,80002f90 + +0000000080002da0 : + 80002da0: 00000213 li tp,0 + 80002da4: 00a00093 li ra,10 + 80002da8: 00000013 nop + 80002dac: 00d00113 li sp,13 + 80002db0: 0020af33 slt t5,ra,sp + 80002db4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002db8: 00200293 li t0,2 + 80002dbc: fe5214e3 bne tp,t0,80002da4 + 80002dc0: 00100e93 li t4,1 + 80002dc4: 01a00193 li gp,26 + 80002dc8: 1ddf1463 bne t5,t4,80002f90 + +0000000080002dcc : + 80002dcc: 00000213 li tp,0 + 80002dd0: 01000093 li ra,16 + 80002dd4: 00000013 nop + 80002dd8: 00d00113 li sp,13 + 80002ddc: 00000013 nop + 80002de0: 0020af33 slt t5,ra,sp + 80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de8: 00200293 li t0,2 + 80002dec: fe5212e3 bne tp,t0,80002dd0 + 80002df0: 00000e93 li t4,0 + 80002df4: 01b00193 li gp,27 + 80002df8: 19df1c63 bne t5,t4,80002f90 + +0000000080002dfc : + 80002dfc: 00000213 li tp,0 + 80002e00: 00900093 li ra,9 + 80002e04: 00000013 nop + 80002e08: 00000013 nop + 80002e0c: 00d00113 li sp,13 + 80002e10: 0020af33 slt t5,ra,sp + 80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e18: 00200293 li t0,2 + 80002e1c: fe5212e3 bne tp,t0,80002e00 + 80002e20: 00100e93 li t4,1 + 80002e24: 01c00193 li gp,28 + 80002e28: 17df1463 bne t5,t4,80002f90 + +0000000080002e2c : + 80002e2c: 00000213 li tp,0 + 80002e30: 00d00113 li sp,13 + 80002e34: 01100093 li ra,17 + 80002e38: 0020af33 slt t5,ra,sp + 80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e40: 00200293 li t0,2 + 80002e44: fe5216e3 bne tp,t0,80002e30 + 80002e48: 00000e93 li t4,0 + 80002e4c: 01d00193 li gp,29 + 80002e50: 15df1063 bne t5,t4,80002f90 + +0000000080002e54 : + 80002e54: 00000213 li tp,0 + 80002e58: 00d00113 li sp,13 + 80002e5c: 00800093 li ra,8 + 80002e60: 00000013 nop + 80002e64: 0020af33 slt t5,ra,sp + 80002e68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e6c: 00200293 li t0,2 + 80002e70: fe5214e3 bne tp,t0,80002e58 + 80002e74: 00100e93 li t4,1 + 80002e78: 01e00193 li gp,30 + 80002e7c: 11df1a63 bne t5,t4,80002f90 + +0000000080002e80 : + 80002e80: 00000213 li tp,0 + 80002e84: 00d00113 li sp,13 + 80002e88: 01200093 li ra,18 + 80002e8c: 00000013 nop + 80002e90: 00000013 nop + 80002e94: 0020af33 slt t5,ra,sp + 80002e98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e9c: 00200293 li t0,2 + 80002ea0: fe5212e3 bne tp,t0,80002e84 + 80002ea4: 00000e93 li t4,0 + 80002ea8: 01f00193 li gp,31 + 80002eac: 0fdf1263 bne t5,t4,80002f90 + +0000000080002eb0 : + 80002eb0: 00000213 li tp,0 + 80002eb4: 00d00113 li sp,13 + 80002eb8: 00000013 nop + 80002ebc: 00700093 li ra,7 + 80002ec0: 0020af33 slt t5,ra,sp + 80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ec8: 00200293 li t0,2 + 80002ecc: fe5214e3 bne tp,t0,80002eb4 + 80002ed0: 00100e93 li t4,1 + 80002ed4: 02000193 li gp,32 + 80002ed8: 0bdf1c63 bne t5,t4,80002f90 + +0000000080002edc : + 80002edc: 00000213 li tp,0 + 80002ee0: 00d00113 li sp,13 + 80002ee4: 00000013 nop + 80002ee8: 01300093 li ra,19 + 80002eec: 00000013 nop + 80002ef0: 0020af33 slt t5,ra,sp + 80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ef8: 00200293 li t0,2 + 80002efc: fe5212e3 bne tp,t0,80002ee0 + 80002f00: 00000e93 li t4,0 + 80002f04: 02100193 li gp,33 + 80002f08: 09df1463 bne t5,t4,80002f90 + +0000000080002f0c : + 80002f0c: 00000213 li tp,0 + 80002f10: 00d00113 li sp,13 + 80002f14: 00000013 nop + 80002f18: 00000013 nop + 80002f1c: 00600093 li ra,6 + 80002f20: 0020af33 slt t5,ra,sp + 80002f24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f28: 00200293 li t0,2 + 80002f2c: fe5212e3 bne tp,t0,80002f10 + 80002f30: 00100e93 li t4,1 + 80002f34: 02200193 li gp,34 + 80002f38: 05df1c63 bne t5,t4,80002f90 + +0000000080002f3c : + 80002f3c: fff00093 li ra,-1 + 80002f40: 00102133 sgtz sp,ra + 80002f44: 00000e93 li t4,0 + 80002f48: 02300193 li gp,35 + 80002f4c: 05d11263 bne sp,t4,80002f90 + +0000000080002f50 : + 80002f50: fff00093 li ra,-1 + 80002f54: 0000a133 sltz sp,ra + 80002f58: 00100e93 li t4,1 + 80002f5c: 02400193 li gp,36 + 80002f60: 03d11863 bne sp,t4,80002f90 + +0000000080002f64 : + 80002f64: 000020b3 sltz ra,zero + 80002f68: 00000e93 li t4,0 + 80002f6c: 02500193 li gp,37 + 80002f70: 03d09063 bne ra,t4,80002f90 + +0000000080002f74 : + 80002f74: 01000093 li ra,16 + 80002f78: 01e00113 li sp,30 + 80002f7c: 0020a033 slt zero,ra,sp + 80002f80: 00000e93 li t4,0 + 80002f84: 02600193 li gp,38 + 80002f88: 01d01463 bne zero,t4,80002f90 + 80002f8c: 00301a63 bne zero,gp,80002fa0 + +0000000080002f90 : + 80002f90: 00119513 slli a0,gp,0x1 + 80002f94: 00050063 beqz a0,80002f94 + 80002f98: 00156513 ori a0,a0,1 + 80002f9c: 00000073 ecall + +0000000080002fa0 : + 80002fa0: 00100513 li a0,1 + 80002fa4: 00000073 ecall + 80002fa8: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-slti b/Tests/isa/rv64ui-v-slti new file mode 100644 index 0000000..e6f0300 Binary files /dev/null and b/Tests/isa/rv64ui-v-slti differ diff --git a/Tests/isa/rv64ui-v-slti.dump b/Tests/isa/rv64ui-v-slti.dump new file mode 100644 index 0000000..56b3965 --- /dev/null +++ b/Tests/isa/rv64ui-v-slti.dump @@ -0,0 +1,1043 @@ + +rv64ui-v-slti: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 90068693 addi a3,a3,-1792 # 80002d58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 93460613 addi a2,a2,-1740 # 80002de8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 8fc60613 addi a2,a2,-1796 # 80002e00 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 84c68693 addi a3,a3,-1972 # 80002da0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 86868693 addi a3,a3,-1944 # 80002ed8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7e860613 addi a2,a2,2024 # 80002eb0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 71c68693 addi a3,a3,1820 # 80002f08 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 63c68693 addi a3,a3,1596 # 80002e78 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5cc68693 addi a3,a3,1484 # 80002e40 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 00800793 li a5,8 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 01e147b7 lui a5,0x1e14 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 4e578793 addi a5,a5,1253 # 1e144e5 <_start-0x7e1ebb1b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 0000af13 slti t5,ra,0 + 80002ad0: 00000e93 li t4,0 + 80002ad4: 00200193 li gp,2 + 80002ad8: 27df1263 bne t5,t4,80002d3c + +0000000080002adc : + 80002adc: 00100093 li ra,1 + 80002ae0: 0010af13 slti t5,ra,1 + 80002ae4: 00000e93 li t4,0 + 80002ae8: 00300193 li gp,3 + 80002aec: 25df1863 bne t5,t4,80002d3c + +0000000080002af0 : + 80002af0: 00300093 li ra,3 + 80002af4: 0070af13 slti t5,ra,7 + 80002af8: 00100e93 li t4,1 + 80002afc: 00400193 li gp,4 + 80002b00: 23df1e63 bne t5,t4,80002d3c + +0000000080002b04 : + 80002b04: 00700093 li ra,7 + 80002b08: 0030af13 slti t5,ra,3 + 80002b0c: 00000e93 li t4,0 + 80002b10: 00500193 li gp,5 + 80002b14: 23df1463 bne t5,t4,80002d3c + +0000000080002b18 : + 80002b18: 00000093 li ra,0 + 80002b1c: 8000af13 slti t5,ra,-2048 + 80002b20: 00000e93 li t4,0 + 80002b24: 00600193 li gp,6 + 80002b28: 21df1a63 bne t5,t4,80002d3c + +0000000080002b2c : + 80002b2c: 800000b7 lui ra,0x80000 + 80002b30: 0000af13 slti t5,ra,0 + 80002b34: 00100e93 li t4,1 + 80002b38: 00700193 li gp,7 + 80002b3c: 21df1063 bne t5,t4,80002d3c + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: 8000af13 slti t5,ra,-2048 + 80002b48: 00100e93 li t4,1 + 80002b4c: 00800193 li gp,8 + 80002b50: 1fdf1663 bne t5,t4,80002d3c + +0000000080002b54 : + 80002b54: 00000093 li ra,0 + 80002b58: 7ff0af13 slti t5,ra,2047 + 80002b5c: 00100e93 li t4,1 + 80002b60: 00900193 li gp,9 + 80002b64: 1ddf1c63 bne t5,t4,80002d3c + +0000000080002b68 : + 80002b68: 800000b7 lui ra,0x80000 + 80002b6c: fff0809b addiw ra,ra,-1 + 80002b70: 0000af13 slti t5,ra,0 + 80002b74: 00000e93 li t4,0 + 80002b78: 00a00193 li gp,10 + 80002b7c: 1ddf1063 bne t5,t4,80002d3c + +0000000080002b80 : + 80002b80: 800000b7 lui ra,0x80000 + 80002b84: fff0809b addiw ra,ra,-1 + 80002b88: 7ff0af13 slti t5,ra,2047 + 80002b8c: 00000e93 li t4,0 + 80002b90: 00b00193 li gp,11 + 80002b94: 1bdf1463 bne t5,t4,80002d3c + +0000000080002b98 : + 80002b98: 800000b7 lui ra,0x80000 + 80002b9c: 7ff0af13 slti t5,ra,2047 + 80002ba0: 00100e93 li t4,1 + 80002ba4: 00c00193 li gp,12 + 80002ba8: 19df1a63 bne t5,t4,80002d3c + +0000000080002bac : + 80002bac: 800000b7 lui ra,0x80000 + 80002bb0: fff0809b addiw ra,ra,-1 + 80002bb4: 8000af13 slti t5,ra,-2048 + 80002bb8: 00000e93 li t4,0 + 80002bbc: 00d00193 li gp,13 + 80002bc0: 17df1e63 bne t5,t4,80002d3c + +0000000080002bc4 : + 80002bc4: 00000093 li ra,0 + 80002bc8: fff0af13 slti t5,ra,-1 + 80002bcc: 00000e93 li t4,0 + 80002bd0: 00e00193 li gp,14 + 80002bd4: 17df1463 bne t5,t4,80002d3c + +0000000080002bd8 : + 80002bd8: fff00093 li ra,-1 + 80002bdc: 0010af13 slti t5,ra,1 + 80002be0: 00100e93 li t4,1 + 80002be4: 00f00193 li gp,15 + 80002be8: 15df1a63 bne t5,t4,80002d3c + +0000000080002bec : + 80002bec: fff00093 li ra,-1 + 80002bf0: fff0af13 slti t5,ra,-1 + 80002bf4: 00000e93 li t4,0 + 80002bf8: 01000193 li gp,16 + 80002bfc: 15df1063 bne t5,t4,80002d3c + +0000000080002c00 : + 80002c00: 00b00093 li ra,11 + 80002c04: 00d0a093 slti ra,ra,13 + 80002c08: 00100e93 li t4,1 + 80002c0c: 01100193 li gp,17 + 80002c10: 13d09663 bne ra,t4,80002d3c + +0000000080002c14 : + 80002c14: 00000213 li tp,0 + 80002c18: 00f00093 li ra,15 + 80002c1c: 00a0af13 slti t5,ra,10 + 80002c20: 000f0313 mv t1,t5 + 80002c24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c28: 00200293 li t0,2 + 80002c2c: fe5216e3 bne tp,t0,80002c18 + 80002c30: 00000e93 li t4,0 + 80002c34: 01200193 li gp,18 + 80002c38: 11d31263 bne t1,t4,80002d3c + +0000000080002c3c : + 80002c3c: 00000213 li tp,0 + 80002c40: 00a00093 li ra,10 + 80002c44: 0100af13 slti t5,ra,16 + 80002c48: 00000013 nop + 80002c4c: 000f0313 mv t1,t5 + 80002c50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c54: 00200293 li t0,2 + 80002c58: fe5214e3 bne tp,t0,80002c40 + 80002c5c: 00100e93 li t4,1 + 80002c60: 01300193 li gp,19 + 80002c64: 0dd31c63 bne t1,t4,80002d3c + +0000000080002c68 : + 80002c68: 00000213 li tp,0 + 80002c6c: 01000093 li ra,16 + 80002c70: 0090af13 slti t5,ra,9 + 80002c74: 00000013 nop + 80002c78: 00000013 nop + 80002c7c: 000f0313 mv t1,t5 + 80002c80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c84: 00200293 li t0,2 + 80002c88: fe5212e3 bne tp,t0,80002c6c + 80002c8c: 00000e93 li t4,0 + 80002c90: 01400193 li gp,20 + 80002c94: 0bd31463 bne t1,t4,80002d3c + +0000000080002c98 : + 80002c98: 00000213 li tp,0 + 80002c9c: 00b00093 li ra,11 + 80002ca0: 00f0af13 slti t5,ra,15 + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5218e3 bne tp,t0,80002c9c + 80002cb0: 00100e93 li t4,1 + 80002cb4: 01500193 li gp,21 + 80002cb8: 09df1263 bne t5,t4,80002d3c + +0000000080002cbc : + 80002cbc: 00000213 li tp,0 + 80002cc0: 01100093 li ra,17 + 80002cc4: 00000013 nop + 80002cc8: 0080af13 slti t5,ra,8 + 80002ccc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd0: 00200293 li t0,2 + 80002cd4: fe5216e3 bne tp,t0,80002cc0 + 80002cd8: 00000e93 li t4,0 + 80002cdc: 01600193 li gp,22 + 80002ce0: 05df1e63 bne t5,t4,80002d3c + +0000000080002ce4 : + 80002ce4: 00000213 li tp,0 + 80002ce8: 00c00093 li ra,12 + 80002cec: 00000013 nop + 80002cf0: 00000013 nop + 80002cf4: 00e0af13 slti t5,ra,14 + 80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cfc: 00200293 li t0,2 + 80002d00: fe5214e3 bne tp,t0,80002ce8 + 80002d04: 00100e93 li t4,1 + 80002d08: 01700193 li gp,23 + 80002d0c: 03df1863 bne t5,t4,80002d3c + +0000000080002d10 : + 80002d10: fff02093 slti ra,zero,-1 + 80002d14: 00000e93 li t4,0 + 80002d18: 01800193 li gp,24 + 80002d1c: 03d09063 bne ra,t4,80002d3c + +0000000080002d20 : + 80002d20: 00ff00b7 lui ra,0xff0 + 80002d24: 0ff0809b addiw ra,ra,255 + 80002d28: fff0a013 slti zero,ra,-1 + 80002d2c: 00000e93 li t4,0 + 80002d30: 01900193 li gp,25 + 80002d34: 01d01463 bne zero,t4,80002d3c + 80002d38: 00301a63 bne zero,gp,80002d4c + +0000000080002d3c : + 80002d3c: 00119513 slli a0,gp,0x1 + 80002d40: 00050063 beqz a0,80002d40 + 80002d44: 00156513 ori a0,a0,1 + 80002d48: 00000073 ecall + +0000000080002d4c : + 80002d4c: 00100513 li a0,1 + 80002d50: 00000073 ecall + 80002d54: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sltiu b/Tests/isa/rv64ui-v-sltiu new file mode 100644 index 0000000..2d6ec8f Binary files /dev/null and b/Tests/isa/rv64ui-v-sltiu differ diff --git a/Tests/isa/rv64ui-v-sltiu.dump b/Tests/isa/rv64ui-v-sltiu.dump new file mode 100644 index 0000000..98f8b1a --- /dev/null +++ b/Tests/isa/rv64ui-v-sltiu.dump @@ -0,0 +1,1043 @@ + +rv64ui-v-sltiu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 90068693 addi a3,a3,-1792 # 80002d58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 93460613 addi a2,a2,-1740 # 80002de8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 8fc60613 addi a2,a2,-1796 # 80002e00 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 84c68693 addi a3,a3,-1972 # 80002da0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 86868693 addi a3,a3,-1944 # 80002ed8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 7e860613 addi a2,a2,2024 # 80002eb0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 71c68693 addi a3,a3,1820 # 80002f08 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 63c68693 addi a3,a3,1596 # 80002e78 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5cc68693 addi a3,a3,1484 # 80002e40 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02100793 li a5,33 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 04ec47b7 lui a5,0x4ec4 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: b3078793 addi a5,a5,-1232 # 4ec3b30 <_start-0x7b13c4d0> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 0000bf13 sltiu t5,ra,0 + 80002ad0: 00000e93 li t4,0 + 80002ad4: 00200193 li gp,2 + 80002ad8: 27df1263 bne t5,t4,80002d3c + +0000000080002adc : + 80002adc: 00100093 li ra,1 + 80002ae0: 0010bf13 seqz t5,ra + 80002ae4: 00000e93 li t4,0 + 80002ae8: 00300193 li gp,3 + 80002aec: 25df1863 bne t5,t4,80002d3c + +0000000080002af0 : + 80002af0: 00300093 li ra,3 + 80002af4: 0070bf13 sltiu t5,ra,7 + 80002af8: 00100e93 li t4,1 + 80002afc: 00400193 li gp,4 + 80002b00: 23df1e63 bne t5,t4,80002d3c + +0000000080002b04 : + 80002b04: 00700093 li ra,7 + 80002b08: 0030bf13 sltiu t5,ra,3 + 80002b0c: 00000e93 li t4,0 + 80002b10: 00500193 li gp,5 + 80002b14: 23df1463 bne t5,t4,80002d3c + +0000000080002b18 : + 80002b18: 00000093 li ra,0 + 80002b1c: 8000bf13 sltiu t5,ra,-2048 + 80002b20: 00100e93 li t4,1 + 80002b24: 00600193 li gp,6 + 80002b28: 21df1a63 bne t5,t4,80002d3c + +0000000080002b2c : + 80002b2c: 800000b7 lui ra,0x80000 + 80002b30: 0000bf13 sltiu t5,ra,0 + 80002b34: 00000e93 li t4,0 + 80002b38: 00700193 li gp,7 + 80002b3c: 21df1063 bne t5,t4,80002d3c + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: 8000bf13 sltiu t5,ra,-2048 + 80002b48: 00100e93 li t4,1 + 80002b4c: 00800193 li gp,8 + 80002b50: 1fdf1663 bne t5,t4,80002d3c + +0000000080002b54 : + 80002b54: 00000093 li ra,0 + 80002b58: 7ff0bf13 sltiu t5,ra,2047 + 80002b5c: 00100e93 li t4,1 + 80002b60: 00900193 li gp,9 + 80002b64: 1ddf1c63 bne t5,t4,80002d3c + +0000000080002b68 : + 80002b68: 800000b7 lui ra,0x80000 + 80002b6c: fff0809b addiw ra,ra,-1 + 80002b70: 0000bf13 sltiu t5,ra,0 + 80002b74: 00000e93 li t4,0 + 80002b78: 00a00193 li gp,10 + 80002b7c: 1ddf1063 bne t5,t4,80002d3c + +0000000080002b80 : + 80002b80: 800000b7 lui ra,0x80000 + 80002b84: fff0809b addiw ra,ra,-1 + 80002b88: 7ff0bf13 sltiu t5,ra,2047 + 80002b8c: 00000e93 li t4,0 + 80002b90: 00b00193 li gp,11 + 80002b94: 1bdf1463 bne t5,t4,80002d3c + +0000000080002b98 : + 80002b98: 800000b7 lui ra,0x80000 + 80002b9c: 7ff0bf13 sltiu t5,ra,2047 + 80002ba0: 00000e93 li t4,0 + 80002ba4: 00c00193 li gp,12 + 80002ba8: 19df1a63 bne t5,t4,80002d3c + +0000000080002bac : + 80002bac: 800000b7 lui ra,0x80000 + 80002bb0: fff0809b addiw ra,ra,-1 + 80002bb4: 8000bf13 sltiu t5,ra,-2048 + 80002bb8: 00100e93 li t4,1 + 80002bbc: 00d00193 li gp,13 + 80002bc0: 17df1e63 bne t5,t4,80002d3c + +0000000080002bc4 : + 80002bc4: 00000093 li ra,0 + 80002bc8: fff0bf13 sltiu t5,ra,-1 + 80002bcc: 00100e93 li t4,1 + 80002bd0: 00e00193 li gp,14 + 80002bd4: 17df1463 bne t5,t4,80002d3c + +0000000080002bd8 : + 80002bd8: fff00093 li ra,-1 + 80002bdc: 0010bf13 seqz t5,ra + 80002be0: 00000e93 li t4,0 + 80002be4: 00f00193 li gp,15 + 80002be8: 15df1a63 bne t5,t4,80002d3c + +0000000080002bec : + 80002bec: fff00093 li ra,-1 + 80002bf0: fff0bf13 sltiu t5,ra,-1 + 80002bf4: 00000e93 li t4,0 + 80002bf8: 01000193 li gp,16 + 80002bfc: 15df1063 bne t5,t4,80002d3c + +0000000080002c00 : + 80002c00: 00b00093 li ra,11 + 80002c04: 00d0b093 sltiu ra,ra,13 + 80002c08: 00100e93 li t4,1 + 80002c0c: 01100193 li gp,17 + 80002c10: 13d09663 bne ra,t4,80002d3c + +0000000080002c14 : + 80002c14: 00000213 li tp,0 + 80002c18: 00f00093 li ra,15 + 80002c1c: 00a0bf13 sltiu t5,ra,10 + 80002c20: 000f0313 mv t1,t5 + 80002c24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c28: 00200293 li t0,2 + 80002c2c: fe5216e3 bne tp,t0,80002c18 + 80002c30: 00000e93 li t4,0 + 80002c34: 01200193 li gp,18 + 80002c38: 11d31263 bne t1,t4,80002d3c + +0000000080002c3c : + 80002c3c: 00000213 li tp,0 + 80002c40: 00a00093 li ra,10 + 80002c44: 0100bf13 sltiu t5,ra,16 + 80002c48: 00000013 nop + 80002c4c: 000f0313 mv t1,t5 + 80002c50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c54: 00200293 li t0,2 + 80002c58: fe5214e3 bne tp,t0,80002c40 + 80002c5c: 00100e93 li t4,1 + 80002c60: 01300193 li gp,19 + 80002c64: 0dd31c63 bne t1,t4,80002d3c + +0000000080002c68 : + 80002c68: 00000213 li tp,0 + 80002c6c: 01000093 li ra,16 + 80002c70: 0090bf13 sltiu t5,ra,9 + 80002c74: 00000013 nop + 80002c78: 00000013 nop + 80002c7c: 000f0313 mv t1,t5 + 80002c80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c84: 00200293 li t0,2 + 80002c88: fe5212e3 bne tp,t0,80002c6c + 80002c8c: 00000e93 li t4,0 + 80002c90: 01400193 li gp,20 + 80002c94: 0bd31463 bne t1,t4,80002d3c + +0000000080002c98 : + 80002c98: 00000213 li tp,0 + 80002c9c: 00b00093 li ra,11 + 80002ca0: 00f0bf13 sltiu t5,ra,15 + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5218e3 bne tp,t0,80002c9c + 80002cb0: 00100e93 li t4,1 + 80002cb4: 01500193 li gp,21 + 80002cb8: 09df1263 bne t5,t4,80002d3c + +0000000080002cbc : + 80002cbc: 00000213 li tp,0 + 80002cc0: 01100093 li ra,17 + 80002cc4: 00000013 nop + 80002cc8: 0080bf13 sltiu t5,ra,8 + 80002ccc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd0: 00200293 li t0,2 + 80002cd4: fe5216e3 bne tp,t0,80002cc0 + 80002cd8: 00000e93 li t4,0 + 80002cdc: 01600193 li gp,22 + 80002ce0: 05df1e63 bne t5,t4,80002d3c + +0000000080002ce4 : + 80002ce4: 00000213 li tp,0 + 80002ce8: 00c00093 li ra,12 + 80002cec: 00000013 nop + 80002cf0: 00000013 nop + 80002cf4: 00e0bf13 sltiu t5,ra,14 + 80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cfc: 00200293 li t0,2 + 80002d00: fe5214e3 bne tp,t0,80002ce8 + 80002d04: 00100e93 li t4,1 + 80002d08: 01700193 li gp,23 + 80002d0c: 03df1863 bne t5,t4,80002d3c + +0000000080002d10 : + 80002d10: fff03093 sltiu ra,zero,-1 + 80002d14: 00100e93 li t4,1 + 80002d18: 01800193 li gp,24 + 80002d1c: 03d09063 bne ra,t4,80002d3c + +0000000080002d20 : + 80002d20: 00ff00b7 lui ra,0xff0 + 80002d24: 0ff0809b addiw ra,ra,255 + 80002d28: fff0b013 sltiu zero,ra,-1 + 80002d2c: 00000e93 li t4,0 + 80002d30: 01900193 li gp,25 + 80002d34: 01d01463 bne zero,t4,80002d3c + 80002d38: 00301a63 bne zero,gp,80002d4c + +0000000080002d3c : + 80002d3c: 00119513 slli a0,gp,0x1 + 80002d40: 00050063 beqz a0,80002d40 + 80002d44: 00156513 ori a0,a0,1 + 80002d48: 00000073 ecall + +0000000080002d4c : + 80002d4c: 00100513 li a0,1 + 80002d50: 00000073 ecall + 80002d54: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sltu b/Tests/isa/rv64ui-v-sltu new file mode 100644 index 0000000..16c5a71 Binary files /dev/null and b/Tests/isa/rv64ui-v-sltu differ diff --git a/Tests/isa/rv64ui-v-sltu.dump b/Tests/isa/rv64ui-v-sltu.dump new file mode 100644 index 0000000..281d657 --- /dev/null +++ b/Tests/isa/rv64ui-v-sltu.dump @@ -0,0 +1,1235 @@ + +rv64ui-v-sltu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b9868693 addi a3,a3,-1128 # 80002ff0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: bcc60613 addi a2,a2,-1076 # 80003080 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b9460613 addi a2,a2,-1132 # 80003098 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: ae468693 addi a3,a3,-1308 # 80003038 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: b0068693 addi a3,a3,-1280 # 80003170 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a8060613 addi a2,a2,-1408 # 80003148 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 9b468693 addi a3,a3,-1612 # 800031a0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 8d468693 addi a3,a3,-1836 # 80003110 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 86468693 addi a3,a3,-1948 # 800030d8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00c00793 li a5,12 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 069e57b7 lui a5,0x69e5 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 8d578793 addi a5,a5,-1835 # 69e48d5 <_start-0x7961b72b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 0020bf33 sltu t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 4fdf1c63 bne t5,t4,80002fd4 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 0020bf33 sltu t5,ra,sp + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 4fdf1063 bne t5,t4,80002fd4 + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 0020bf33 sltu t5,ra,sp + 80002b04: 00100e93 li t4,1 + 80002b08: 00400193 li gp,4 + 80002b0c: 4ddf1463 bne t5,t4,80002fd4 + +0000000080002b10 : + 80002b10: 00700093 li ra,7 + 80002b14: 00300113 li sp,3 + 80002b18: 0020bf33 sltu t5,ra,sp + 80002b1c: 00000e93 li t4,0 + 80002b20: 00500193 li gp,5 + 80002b24: 4bdf1863 bne t5,t4,80002fd4 + +0000000080002b28 : + 80002b28: 00000093 li ra,0 + 80002b2c: 00020137 lui sp,0x20 + 80002b30: fff1011b addiw sp,sp,-1 + 80002b34: 00f11113 slli sp,sp,0xf + 80002b38: 0020bf33 sltu t5,ra,sp + 80002b3c: 00100e93 li t4,1 + 80002b40: 00600193 li gp,6 + 80002b44: 49df1863 bne t5,t4,80002fd4 + +0000000080002b48 : + 80002b48: 0010009b addiw ra,zero,1 + 80002b4c: 01f09093 slli ra,ra,0x1f + 80002b50: 00000113 li sp,0 + 80002b54: 0020bf33 sltu t5,ra,sp + 80002b58: 00000e93 li t4,0 + 80002b5c: 00700193 li gp,7 + 80002b60: 47df1a63 bne t5,t4,80002fd4 + +0000000080002b64 : + 80002b64: 0010009b addiw ra,zero,1 + 80002b68: 01f09093 slli ra,ra,0x1f + 80002b6c: 00020137 lui sp,0x20 + 80002b70: fff1011b addiw sp,sp,-1 + 80002b74: 00f11113 slli sp,sp,0xf + 80002b78: 0020bf33 sltu t5,ra,sp + 80002b7c: 00100e93 li t4,1 + 80002b80: 00800193 li gp,8 + 80002b84: 45df1863 bne t5,t4,80002fd4 + +0000000080002b88 : + 80002b88: 00000093 li ra,0 + 80002b8c: 00008137 lui sp,0x8 + 80002b90: fff1011b addiw sp,sp,-1 + 80002b94: 0020bf33 sltu t5,ra,sp + 80002b98: 00100e93 li t4,1 + 80002b9c: 00900193 li gp,9 + 80002ba0: 43df1a63 bne t5,t4,80002fd4 + +0000000080002ba4 : + 80002ba4: 800000b7 lui ra,0x80000 + 80002ba8: fff0809b addiw ra,ra,-1 + 80002bac: 00000113 li sp,0 + 80002bb0: 0020bf33 sltu t5,ra,sp + 80002bb4: 00000e93 li t4,0 + 80002bb8: 00a00193 li gp,10 + 80002bbc: 41df1c63 bne t5,t4,80002fd4 + +0000000080002bc0 : + 80002bc0: 800000b7 lui ra,0x80000 + 80002bc4: fff0809b addiw ra,ra,-1 + 80002bc8: 00008137 lui sp,0x8 + 80002bcc: fff1011b addiw sp,sp,-1 + 80002bd0: 0020bf33 sltu t5,ra,sp + 80002bd4: 00000e93 li t4,0 + 80002bd8: 00b00193 li gp,11 + 80002bdc: 3fdf1c63 bne t5,t4,80002fd4 + +0000000080002be0 : + 80002be0: 0010009b addiw ra,zero,1 + 80002be4: 01f09093 slli ra,ra,0x1f + 80002be8: 00008137 lui sp,0x8 + 80002bec: fff1011b addiw sp,sp,-1 + 80002bf0: 0020bf33 sltu t5,ra,sp + 80002bf4: 00000e93 li t4,0 + 80002bf8: 00c00193 li gp,12 + 80002bfc: 3ddf1c63 bne t5,t4,80002fd4 + +0000000080002c00 : + 80002c00: 800000b7 lui ra,0x80000 + 80002c04: fff0809b addiw ra,ra,-1 + 80002c08: 00020137 lui sp,0x20 + 80002c0c: fff1011b addiw sp,sp,-1 + 80002c10: 00f11113 slli sp,sp,0xf + 80002c14: 0020bf33 sltu t5,ra,sp + 80002c18: 00100e93 li t4,1 + 80002c1c: 00d00193 li gp,13 + 80002c20: 3bdf1a63 bne t5,t4,80002fd4 + +0000000080002c24 : + 80002c24: 00000093 li ra,0 + 80002c28: 0010011b addiw sp,zero,1 + 80002c2c: 02011113 slli sp,sp,0x20 + 80002c30: fff10113 addi sp,sp,-1 # 1ffff <_start-0x7ffe0001> + 80002c34: 0020bf33 sltu t5,ra,sp + 80002c38: 00100e93 li t4,1 + 80002c3c: 00e00193 li gp,14 + 80002c40: 39df1a63 bne t5,t4,80002fd4 + +0000000080002c44 : + 80002c44: 0010009b addiw ra,zero,1 + 80002c48: 02009093 slli ra,ra,0x20 + 80002c4c: fff08093 addi ra,ra,-1 # ffffffff7fffffff <_end+0xfffffffeffff780f> + 80002c50: 00100113 li sp,1 + 80002c54: 0020bf33 sltu t5,ra,sp + 80002c58: 00000e93 li t4,0 + 80002c5c: 00f00193 li gp,15 + 80002c60: 37df1a63 bne t5,t4,80002fd4 + +0000000080002c64 : + 80002c64: 0010009b addiw ra,zero,1 + 80002c68: 02009093 slli ra,ra,0x20 + 80002c6c: fff08093 addi ra,ra,-1 + 80002c70: 0010011b addiw sp,zero,1 + 80002c74: 02011113 slli sp,sp,0x20 + 80002c78: fff10113 addi sp,sp,-1 + 80002c7c: 0020bf33 sltu t5,ra,sp + 80002c80: 00000e93 li t4,0 + 80002c84: 01000193 li gp,16 + 80002c88: 35df1663 bne t5,t4,80002fd4 + +0000000080002c8c : + 80002c8c: 00e00093 li ra,14 + 80002c90: 00d00113 li sp,13 + 80002c94: 0020b0b3 sltu ra,ra,sp + 80002c98: 00000e93 li t4,0 + 80002c9c: 01100193 li gp,17 + 80002ca0: 33d09a63 bne ra,t4,80002fd4 + +0000000080002ca4 : + 80002ca4: 00b00093 li ra,11 + 80002ca8: 00d00113 li sp,13 + 80002cac: 0020b133 sltu sp,ra,sp + 80002cb0: 00100e93 li t4,1 + 80002cb4: 01200193 li gp,18 + 80002cb8: 31d11e63 bne sp,t4,80002fd4 + +0000000080002cbc : + 80002cbc: 00d00093 li ra,13 + 80002cc0: 0010b0b3 sltu ra,ra,ra + 80002cc4: 00000e93 li t4,0 + 80002cc8: 01300193 li gp,19 + 80002ccc: 31d09463 bne ra,t4,80002fd4 + +0000000080002cd0 : + 80002cd0: 00000213 li tp,0 + 80002cd4: 00b00093 li ra,11 + 80002cd8: 00d00113 li sp,13 + 80002cdc: 0020bf33 sltu t5,ra,sp + 80002ce0: 000f0313 mv t1,t5 + 80002ce4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce8: 00200293 li t0,2 + 80002cec: fe5214e3 bne tp,t0,80002cd4 + 80002cf0: 00100e93 li t4,1 + 80002cf4: 01400193 li gp,20 + 80002cf8: 2dd31e63 bne t1,t4,80002fd4 + +0000000080002cfc : + 80002cfc: 00000213 li tp,0 + 80002d00: 00e00093 li ra,14 + 80002d04: 00d00113 li sp,13 + 80002d08: 0020bf33 sltu t5,ra,sp + 80002d0c: 00000013 nop + 80002d10: 000f0313 mv t1,t5 + 80002d14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d18: 00200293 li t0,2 + 80002d1c: fe5212e3 bne tp,t0,80002d00 + 80002d20: 00000e93 li t4,0 + 80002d24: 01500193 li gp,21 + 80002d28: 2bd31663 bne t1,t4,80002fd4 + +0000000080002d2c : + 80002d2c: 00000213 li tp,0 + 80002d30: 00c00093 li ra,12 + 80002d34: 00d00113 li sp,13 + 80002d38: 0020bf33 sltu t5,ra,sp + 80002d3c: 00000013 nop + 80002d40: 00000013 nop + 80002d44: 000f0313 mv t1,t5 + 80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d4c: 00200293 li t0,2 + 80002d50: fe5210e3 bne tp,t0,80002d30 + 80002d54: 00100e93 li t4,1 + 80002d58: 01600193 li gp,22 + 80002d5c: 27d31c63 bne t1,t4,80002fd4 + +0000000080002d60 : + 80002d60: 00000213 li tp,0 + 80002d64: 00e00093 li ra,14 + 80002d68: 00d00113 li sp,13 + 80002d6c: 0020bf33 sltu t5,ra,sp + 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d74: 00200293 li t0,2 + 80002d78: fe5216e3 bne tp,t0,80002d64 + 80002d7c: 00000e93 li t4,0 + 80002d80: 01700193 li gp,23 + 80002d84: 25df1863 bne t5,t4,80002fd4 + +0000000080002d88 : + 80002d88: 00000213 li tp,0 + 80002d8c: 00b00093 li ra,11 + 80002d90: 00d00113 li sp,13 + 80002d94: 00000013 nop + 80002d98: 0020bf33 sltu t5,ra,sp + 80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da0: 00200293 li t0,2 + 80002da4: fe5214e3 bne tp,t0,80002d8c + 80002da8: 00100e93 li t4,1 + 80002dac: 01800193 li gp,24 + 80002db0: 23df1263 bne t5,t4,80002fd4 + +0000000080002db4 : + 80002db4: 00000213 li tp,0 + 80002db8: 00f00093 li ra,15 + 80002dbc: 00d00113 li sp,13 + 80002dc0: 00000013 nop + 80002dc4: 00000013 nop + 80002dc8: 0020bf33 sltu t5,ra,sp + 80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd0: 00200293 li t0,2 + 80002dd4: fe5212e3 bne tp,t0,80002db8 + 80002dd8: 00000e93 li t4,0 + 80002ddc: 01900193 li gp,25 + 80002de0: 1fdf1a63 bne t5,t4,80002fd4 + +0000000080002de4 : + 80002de4: 00000213 li tp,0 + 80002de8: 00a00093 li ra,10 + 80002dec: 00000013 nop + 80002df0: 00d00113 li sp,13 + 80002df4: 0020bf33 sltu t5,ra,sp + 80002df8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dfc: 00200293 li t0,2 + 80002e00: fe5214e3 bne tp,t0,80002de8 + 80002e04: 00100e93 li t4,1 + 80002e08: 01a00193 li gp,26 + 80002e0c: 1ddf1463 bne t5,t4,80002fd4 + +0000000080002e10 : + 80002e10: 00000213 li tp,0 + 80002e14: 01000093 li ra,16 + 80002e18: 00000013 nop + 80002e1c: 00d00113 li sp,13 + 80002e20: 00000013 nop + 80002e24: 0020bf33 sltu t5,ra,sp + 80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e2c: 00200293 li t0,2 + 80002e30: fe5212e3 bne tp,t0,80002e14 + 80002e34: 00000e93 li t4,0 + 80002e38: 01b00193 li gp,27 + 80002e3c: 19df1c63 bne t5,t4,80002fd4 + +0000000080002e40 : + 80002e40: 00000213 li tp,0 + 80002e44: 00900093 li ra,9 + 80002e48: 00000013 nop + 80002e4c: 00000013 nop + 80002e50: 00d00113 li sp,13 + 80002e54: 0020bf33 sltu t5,ra,sp + 80002e58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e5c: 00200293 li t0,2 + 80002e60: fe5212e3 bne tp,t0,80002e44 + 80002e64: 00100e93 li t4,1 + 80002e68: 01c00193 li gp,28 + 80002e6c: 17df1463 bne t5,t4,80002fd4 + +0000000080002e70 : + 80002e70: 00000213 li tp,0 + 80002e74: 00d00113 li sp,13 + 80002e78: 01100093 li ra,17 + 80002e7c: 0020bf33 sltu t5,ra,sp + 80002e80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e84: 00200293 li t0,2 + 80002e88: fe5216e3 bne tp,t0,80002e74 + 80002e8c: 00000e93 li t4,0 + 80002e90: 01d00193 li gp,29 + 80002e94: 15df1063 bne t5,t4,80002fd4 + +0000000080002e98 : + 80002e98: 00000213 li tp,0 + 80002e9c: 00d00113 li sp,13 + 80002ea0: 00800093 li ra,8 + 80002ea4: 00000013 nop + 80002ea8: 0020bf33 sltu t5,ra,sp + 80002eac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002eb0: 00200293 li t0,2 + 80002eb4: fe5214e3 bne tp,t0,80002e9c + 80002eb8: 00100e93 li t4,1 + 80002ebc: 01e00193 li gp,30 + 80002ec0: 11df1a63 bne t5,t4,80002fd4 + +0000000080002ec4 : + 80002ec4: 00000213 li tp,0 + 80002ec8: 00d00113 li sp,13 + 80002ecc: 01200093 li ra,18 + 80002ed0: 00000013 nop + 80002ed4: 00000013 nop + 80002ed8: 0020bf33 sltu t5,ra,sp + 80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ee0: 00200293 li t0,2 + 80002ee4: fe5212e3 bne tp,t0,80002ec8 + 80002ee8: 00000e93 li t4,0 + 80002eec: 01f00193 li gp,31 + 80002ef0: 0fdf1263 bne t5,t4,80002fd4 + +0000000080002ef4 : + 80002ef4: 00000213 li tp,0 + 80002ef8: 00d00113 li sp,13 + 80002efc: 00000013 nop + 80002f00: 00700093 li ra,7 + 80002f04: 0020bf33 sltu t5,ra,sp + 80002f08: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f0c: 00200293 li t0,2 + 80002f10: fe5214e3 bne tp,t0,80002ef8 + 80002f14: 00100e93 li t4,1 + 80002f18: 02000193 li gp,32 + 80002f1c: 0bdf1c63 bne t5,t4,80002fd4 + +0000000080002f20 : + 80002f20: 00000213 li tp,0 + 80002f24: 00d00113 li sp,13 + 80002f28: 00000013 nop + 80002f2c: 01300093 li ra,19 + 80002f30: 00000013 nop + 80002f34: 0020bf33 sltu t5,ra,sp + 80002f38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f3c: 00200293 li t0,2 + 80002f40: fe5212e3 bne tp,t0,80002f24 + 80002f44: 00000e93 li t4,0 + 80002f48: 02100193 li gp,33 + 80002f4c: 09df1463 bne t5,t4,80002fd4 + +0000000080002f50 : + 80002f50: 00000213 li tp,0 + 80002f54: 00d00113 li sp,13 + 80002f58: 00000013 nop + 80002f5c: 00000013 nop + 80002f60: 00600093 li ra,6 + 80002f64: 0020bf33 sltu t5,ra,sp + 80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f6c: 00200293 li t0,2 + 80002f70: fe5212e3 bne tp,t0,80002f54 + 80002f74: 00100e93 li t4,1 + 80002f78: 02200193 li gp,34 + 80002f7c: 05df1c63 bne t5,t4,80002fd4 + +0000000080002f80 : + 80002f80: fff00093 li ra,-1 + 80002f84: 00103133 snez sp,ra + 80002f88: 00100e93 li t4,1 + 80002f8c: 02300193 li gp,35 + 80002f90: 05d11263 bne sp,t4,80002fd4 + +0000000080002f94 : + 80002f94: fff00093 li ra,-1 + 80002f98: 0000b133 sltu sp,ra,zero + 80002f9c: 00000e93 li t4,0 + 80002fa0: 02400193 li gp,36 + 80002fa4: 03d11863 bne sp,t4,80002fd4 + +0000000080002fa8 : + 80002fa8: 000030b3 snez ra,zero + 80002fac: 00000e93 li t4,0 + 80002fb0: 02500193 li gp,37 + 80002fb4: 03d09063 bne ra,t4,80002fd4 + +0000000080002fb8 : + 80002fb8: 01000093 li ra,16 + 80002fbc: 01e00113 li sp,30 + 80002fc0: 0020b033 sltu zero,ra,sp + 80002fc4: 00000e93 li t4,0 + 80002fc8: 02600193 li gp,38 + 80002fcc: 01d01463 bne zero,t4,80002fd4 + 80002fd0: 00301a63 bne zero,gp,80002fe4 + +0000000080002fd4 : + 80002fd4: 00119513 slli a0,gp,0x1 + 80002fd8: 00050063 beqz a0,80002fd8 + 80002fdc: 00156513 ori a0,a0,1 + 80002fe0: 00000073 ecall + +0000000080002fe4 : + 80002fe4: 00100513 li a0,1 + 80002fe8: 00000073 ecall + 80002fec: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sra b/Tests/isa/rv64ui-v-sra new file mode 100644 index 0000000..c293642 Binary files /dev/null and b/Tests/isa/rv64ui-v-sra differ diff --git a/Tests/isa/rv64ui-v-sra.dump b/Tests/isa/rv64ui-v-sra.dump new file mode 100644 index 0000000..37705cb --- /dev/null +++ b/Tests/isa/rv64ui-v-sra.dump @@ -0,0 +1,1281 @@ + +rv64ui-v-sra: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: c2868693 addi a3,a3,-984 # 80003080 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: c5c60613 addi a2,a2,-932 # 80003110 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: c2460613 addi a2,a2,-988 # 80003128 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: b7468693 addi a3,a3,-1164 # 800030c8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: b9068693 addi a3,a3,-1136 # 80003200 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: b1060613 addi a2,a2,-1264 # 800031d8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: a4468693 addi a3,a3,-1468 # 80003230 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 96468693 addi a3,a3,-1692 # 800031a0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 8f468693 addi a3,a3,-1804 # 80003168 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02e00793 li a5,46 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a2f77b7 lui a5,0xa2f7 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 09e78793 addi a5,a5,158 # a2f709e <_start-0x75d08f62> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 800000b7 lui ra,0x80000 + 80002acc: 00000113 li sp,0 + 80002ad0: 4020df33 sra t5,ra,sp + 80002ad4: 80000eb7 lui t4,0x80000 + 80002ad8: 00200193 li gp,2 + 80002adc: 59df1463 bne t5,t4,80003064 + +0000000080002ae0 : + 80002ae0: 800000b7 lui ra,0x80000 + 80002ae4: 00100113 li sp,1 + 80002ae8: 4020df33 sra t5,ra,sp + 80002aec: c0000eb7 lui t4,0xc0000 + 80002af0: 00300193 li gp,3 + 80002af4: 57df1863 bne t5,t4,80003064 + +0000000080002af8 : + 80002af8: 800000b7 lui ra,0x80000 + 80002afc: 00700113 li sp,7 + 80002b00: 4020df33 sra t5,ra,sp + 80002b04: ff000eb7 lui t4,0xff000 + 80002b08: 00400193 li gp,4 + 80002b0c: 55df1c63 bne t5,t4,80003064 + +0000000080002b10 : + 80002b10: 800000b7 lui ra,0x80000 + 80002b14: 00e00113 li sp,14 + 80002b18: 4020df33 sra t5,ra,sp + 80002b1c: fffe0eb7 lui t4,0xfffe0 + 80002b20: 00500193 li gp,5 + 80002b24: 55df1063 bne t5,t4,80003064 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 0010809b addiw ra,ra,1 + 80002b30: 01f00113 li sp,31 + 80002b34: 4020df33 sra t5,ra,sp + 80002b38: fff00e93 li t4,-1 + 80002b3c: 00600193 li gp,6 + 80002b40: 53df1263 bne t5,t4,80003064 + +0000000080002b44 : + 80002b44: 800000b7 lui ra,0x80000 + 80002b48: fff0809b addiw ra,ra,-1 + 80002b4c: 00000113 li sp,0 + 80002b50: 4020df33 sra t5,ra,sp + 80002b54: 80000eb7 lui t4,0x80000 + 80002b58: fffe8e9b addiw t4,t4,-1 + 80002b5c: 00700193 li gp,7 + 80002b60: 51df1263 bne t5,t4,80003064 + +0000000080002b64 : + 80002b64: 800000b7 lui ra,0x80000 + 80002b68: fff0809b addiw ra,ra,-1 + 80002b6c: 00100113 li sp,1 + 80002b70: 4020df33 sra t5,ra,sp + 80002b74: 40000eb7 lui t4,0x40000 + 80002b78: fffe8e9b addiw t4,t4,-1 + 80002b7c: 00800193 li gp,8 + 80002b80: 4fdf1263 bne t5,t4,80003064 + +0000000080002b84 : + 80002b84: 800000b7 lui ra,0x80000 + 80002b88: fff0809b addiw ra,ra,-1 + 80002b8c: 00700113 li sp,7 + 80002b90: 4020df33 sra t5,ra,sp + 80002b94: 01000eb7 lui t4,0x1000 + 80002b98: fffe8e9b addiw t4,t4,-1 + 80002b9c: 00900193 li gp,9 + 80002ba0: 4ddf1263 bne t5,t4,80003064 + +0000000080002ba4 : + 80002ba4: 800000b7 lui ra,0x80000 + 80002ba8: fff0809b addiw ra,ra,-1 + 80002bac: 00e00113 li sp,14 + 80002bb0: 4020df33 sra t5,ra,sp + 80002bb4: 00020eb7 lui t4,0x20 + 80002bb8: fffe8e9b addiw t4,t4,-1 + 80002bbc: 00a00193 li gp,10 + 80002bc0: 4bdf1263 bne t5,t4,80003064 + +0000000080002bc4 : + 80002bc4: 800000b7 lui ra,0x80000 + 80002bc8: fff0809b addiw ra,ra,-1 + 80002bcc: 01f00113 li sp,31 + 80002bd0: 4020df33 sra t5,ra,sp + 80002bd4: 00000e93 li t4,0 + 80002bd8: 00b00193 li gp,11 + 80002bdc: 49df1463 bne t5,t4,80003064 + +0000000080002be0 : + 80002be0: 818180b7 lui ra,0x81818 + 80002be4: 1810809b addiw ra,ra,385 + 80002be8: 00000113 li sp,0 + 80002bec: 4020df33 sra t5,ra,sp + 80002bf0: 81818eb7 lui t4,0x81818 + 80002bf4: 181e8e9b addiw t4,t4,385 + 80002bf8: 00c00193 li gp,12 + 80002bfc: 47df1463 bne t5,t4,80003064 + +0000000080002c00 : + 80002c00: 818180b7 lui ra,0x81818 + 80002c04: 1810809b addiw ra,ra,385 + 80002c08: 00100113 li sp,1 + 80002c0c: 4020df33 sra t5,ra,sp + 80002c10: c0c0ceb7 lui t4,0xc0c0c + 80002c14: 0c0e8e9b addiw t4,t4,192 + 80002c18: 00d00193 li gp,13 + 80002c1c: 45df1463 bne t5,t4,80003064 + +0000000080002c20 : + 80002c20: 818180b7 lui ra,0x81818 + 80002c24: 1810809b addiw ra,ra,385 + 80002c28: 00700113 li sp,7 + 80002c2c: 4020df33 sra t5,ra,sp + 80002c30: ff030eb7 lui t4,0xff030 + 80002c34: 303e8e9b addiw t4,t4,771 + 80002c38: 00e00193 li gp,14 + 80002c3c: 43df1463 bne t5,t4,80003064 + +0000000080002c40 : + 80002c40: 818180b7 lui ra,0x81818 + 80002c44: 1810809b addiw ra,ra,385 + 80002c48: 00e00113 li sp,14 + 80002c4c: 4020df33 sra t5,ra,sp + 80002c50: fffe0eb7 lui t4,0xfffe0 + 80002c54: 606e8e9b addiw t4,t4,1542 + 80002c58: 00f00193 li gp,15 + 80002c5c: 41df1463 bne t5,t4,80003064 + +0000000080002c60 : + 80002c60: 818180b7 lui ra,0x81818 + 80002c64: 1810809b addiw ra,ra,385 + 80002c68: 01f00113 li sp,31 + 80002c6c: 4020df33 sra t5,ra,sp + 80002c70: fff00e93 li t4,-1 + 80002c74: 01000193 li gp,16 + 80002c78: 3fdf1663 bne t5,t4,80003064 + +0000000080002c7c : + 80002c7c: 818180b7 lui ra,0x81818 + 80002c80: 1810809b addiw ra,ra,385 + 80002c84: fc000113 li sp,-64 + 80002c88: 4020df33 sra t5,ra,sp + 80002c8c: 81818eb7 lui t4,0x81818 + 80002c90: 181e8e9b addiw t4,t4,385 + 80002c94: 01100193 li gp,17 + 80002c98: 3ddf1663 bne t5,t4,80003064 + +0000000080002c9c : + 80002c9c: 818180b7 lui ra,0x81818 + 80002ca0: 1810809b addiw ra,ra,385 + 80002ca4: fc100113 li sp,-63 + 80002ca8: 4020df33 sra t5,ra,sp + 80002cac: c0c0ceb7 lui t4,0xc0c0c + 80002cb0: 0c0e8e9b addiw t4,t4,192 + 80002cb4: 01200193 li gp,18 + 80002cb8: 3bdf1663 bne t5,t4,80003064 + +0000000080002cbc : + 80002cbc: 818180b7 lui ra,0x81818 + 80002cc0: 1810809b addiw ra,ra,385 + 80002cc4: fc700113 li sp,-57 + 80002cc8: 4020df33 sra t5,ra,sp + 80002ccc: ff030eb7 lui t4,0xff030 + 80002cd0: 303e8e9b addiw t4,t4,771 + 80002cd4: 01300193 li gp,19 + 80002cd8: 39df1663 bne t5,t4,80003064 + +0000000080002cdc : + 80002cdc: 818180b7 lui ra,0x81818 + 80002ce0: 1810809b addiw ra,ra,385 + 80002ce4: fce00113 li sp,-50 + 80002ce8: 4020df33 sra t5,ra,sp + 80002cec: fffe0eb7 lui t4,0xfffe0 + 80002cf0: 606e8e9b addiw t4,t4,1542 + 80002cf4: 01400193 li gp,20 + 80002cf8: 37df1663 bne t5,t4,80003064 + +0000000080002cfc : + 80002cfc: 818180b7 lui ra,0x81818 + 80002d00: 1810809b addiw ra,ra,385 + 80002d04: fff00113 li sp,-1 + 80002d08: 4020df33 sra t5,ra,sp + 80002d0c: fff00e93 li t4,-1 + 80002d10: 01500193 li gp,21 + 80002d14: 35df1863 bne t5,t4,80003064 + +0000000080002d18 : + 80002d18: 800000b7 lui ra,0x80000 + 80002d1c: 00700113 li sp,7 + 80002d20: 4020d0b3 sra ra,ra,sp + 80002d24: ff000eb7 lui t4,0xff000 + 80002d28: 01600193 li gp,22 + 80002d2c: 33d09c63 bne ra,t4,80003064 + +0000000080002d30 : + 80002d30: 800000b7 lui ra,0x80000 + 80002d34: 00e00113 li sp,14 + 80002d38: 4020d133 sra sp,ra,sp + 80002d3c: fffe0eb7 lui t4,0xfffe0 + 80002d40: 01700193 li gp,23 + 80002d44: 33d11063 bne sp,t4,80003064 + +0000000080002d48 : + 80002d48: 00700093 li ra,7 + 80002d4c: 4010d0b3 sra ra,ra,ra + 80002d50: 00000e93 li t4,0 + 80002d54: 01800193 li gp,24 + 80002d58: 31d09663 bne ra,t4,80003064 + +0000000080002d5c : + 80002d5c: 00000213 li tp,0 + 80002d60: 800000b7 lui ra,0x80000 + 80002d64: 00700113 li sp,7 + 80002d68: 4020df33 sra t5,ra,sp + 80002d6c: 000f0313 mv t1,t5 + 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d74: 00200293 li t0,2 + 80002d78: fe5214e3 bne tp,t0,80002d60 + 80002d7c: ff000eb7 lui t4,0xff000 + 80002d80: 01900193 li gp,25 + 80002d84: 2fd31063 bne t1,t4,80003064 + +0000000080002d88 : + 80002d88: 00000213 li tp,0 + 80002d8c: 800000b7 lui ra,0x80000 + 80002d90: 00e00113 li sp,14 + 80002d94: 4020df33 sra t5,ra,sp + 80002d98: 00000013 nop + 80002d9c: 000f0313 mv t1,t5 + 80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da4: 00200293 li t0,2 + 80002da8: fe5212e3 bne tp,t0,80002d8c + 80002dac: fffe0eb7 lui t4,0xfffe0 + 80002db0: 01a00193 li gp,26 + 80002db4: 2bd31863 bne t1,t4,80003064 + +0000000080002db8 : + 80002db8: 00000213 li tp,0 + 80002dbc: 800000b7 lui ra,0x80000 + 80002dc0: 01f00113 li sp,31 + 80002dc4: 4020df33 sra t5,ra,sp + 80002dc8: 00000013 nop + 80002dcc: 00000013 nop + 80002dd0: 000f0313 mv t1,t5 + 80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd8: 00200293 li t0,2 + 80002ddc: fe5210e3 bne tp,t0,80002dbc + 80002de0: fff00e93 li t4,-1 + 80002de4: 01b00193 li gp,27 + 80002de8: 27d31e63 bne t1,t4,80003064 + +0000000080002dec : + 80002dec: 00000213 li tp,0 + 80002df0: 800000b7 lui ra,0x80000 + 80002df4: 00700113 li sp,7 + 80002df8: 4020df33 sra t5,ra,sp + 80002dfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e00: 00200293 li t0,2 + 80002e04: fe5216e3 bne tp,t0,80002df0 + 80002e08: ff000eb7 lui t4,0xff000 + 80002e0c: 01c00193 li gp,28 + 80002e10: 25df1a63 bne t5,t4,80003064 + +0000000080002e14 : + 80002e14: 00000213 li tp,0 + 80002e18: 800000b7 lui ra,0x80000 + 80002e1c: 00e00113 li sp,14 + 80002e20: 00000013 nop + 80002e24: 4020df33 sra t5,ra,sp + 80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e2c: 00200293 li t0,2 + 80002e30: fe5214e3 bne tp,t0,80002e18 + 80002e34: fffe0eb7 lui t4,0xfffe0 + 80002e38: 01d00193 li gp,29 + 80002e3c: 23df1463 bne t5,t4,80003064 + +0000000080002e40 : + 80002e40: 00000213 li tp,0 + 80002e44: 800000b7 lui ra,0x80000 + 80002e48: 01f00113 li sp,31 + 80002e4c: 00000013 nop + 80002e50: 00000013 nop + 80002e54: 4020df33 sra t5,ra,sp + 80002e58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e5c: 00200293 li t0,2 + 80002e60: fe5212e3 bne tp,t0,80002e44 + 80002e64: fff00e93 li t4,-1 + 80002e68: 01e00193 li gp,30 + 80002e6c: 1fdf1c63 bne t5,t4,80003064 + +0000000080002e70 : + 80002e70: 00000213 li tp,0 + 80002e74: 800000b7 lui ra,0x80000 + 80002e78: 00000013 nop + 80002e7c: 00700113 li sp,7 + 80002e80: 4020df33 sra t5,ra,sp + 80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e88: 00200293 li t0,2 + 80002e8c: fe5214e3 bne tp,t0,80002e74 + 80002e90: ff000eb7 lui t4,0xff000 + 80002e94: 01f00193 li gp,31 + 80002e98: 1ddf1663 bne t5,t4,80003064 + +0000000080002e9c : + 80002e9c: 00000213 li tp,0 + 80002ea0: 800000b7 lui ra,0x80000 + 80002ea4: 00000013 nop + 80002ea8: 00e00113 li sp,14 + 80002eac: 00000013 nop + 80002eb0: 4020df33 sra t5,ra,sp + 80002eb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002eb8: 00200293 li t0,2 + 80002ebc: fe5212e3 bne tp,t0,80002ea0 + 80002ec0: fffe0eb7 lui t4,0xfffe0 + 80002ec4: 02000193 li gp,32 + 80002ec8: 19df1e63 bne t5,t4,80003064 + +0000000080002ecc : + 80002ecc: 00000213 li tp,0 + 80002ed0: 800000b7 lui ra,0x80000 + 80002ed4: 00000013 nop + 80002ed8: 00000013 nop + 80002edc: 01f00113 li sp,31 + 80002ee0: 4020df33 sra t5,ra,sp + 80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ee8: 00200293 li t0,2 + 80002eec: fe5212e3 bne tp,t0,80002ed0 + 80002ef0: fff00e93 li t4,-1 + 80002ef4: 02100193 li gp,33 + 80002ef8: 17df1663 bne t5,t4,80003064 + +0000000080002efc : + 80002efc: 00000213 li tp,0 + 80002f00: 00700113 li sp,7 + 80002f04: 800000b7 lui ra,0x80000 + 80002f08: 4020df33 sra t5,ra,sp + 80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f10: 00200293 li t0,2 + 80002f14: fe5216e3 bne tp,t0,80002f00 + 80002f18: ff000eb7 lui t4,0xff000 + 80002f1c: 02200193 li gp,34 + 80002f20: 15df1263 bne t5,t4,80003064 + +0000000080002f24 : + 80002f24: 00000213 li tp,0 + 80002f28: 00e00113 li sp,14 + 80002f2c: 800000b7 lui ra,0x80000 + 80002f30: 00000013 nop + 80002f34: 4020df33 sra t5,ra,sp + 80002f38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f3c: 00200293 li t0,2 + 80002f40: fe5214e3 bne tp,t0,80002f28 + 80002f44: fffe0eb7 lui t4,0xfffe0 + 80002f48: 02300193 li gp,35 + 80002f4c: 11df1c63 bne t5,t4,80003064 + +0000000080002f50 : + 80002f50: 00000213 li tp,0 + 80002f54: 01f00113 li sp,31 + 80002f58: 800000b7 lui ra,0x80000 + 80002f5c: 00000013 nop + 80002f60: 00000013 nop + 80002f64: 4020df33 sra t5,ra,sp + 80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f6c: 00200293 li t0,2 + 80002f70: fe5212e3 bne tp,t0,80002f54 + 80002f74: fff00e93 li t4,-1 + 80002f78: 02400193 li gp,36 + 80002f7c: 0fdf1463 bne t5,t4,80003064 + +0000000080002f80 : + 80002f80: 00000213 li tp,0 + 80002f84: 00700113 li sp,7 + 80002f88: 00000013 nop + 80002f8c: 800000b7 lui ra,0x80000 + 80002f90: 4020df33 sra t5,ra,sp + 80002f94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f98: 00200293 li t0,2 + 80002f9c: fe5214e3 bne tp,t0,80002f84 + 80002fa0: ff000eb7 lui t4,0xff000 + 80002fa4: 02500193 li gp,37 + 80002fa8: 0bdf1e63 bne t5,t4,80003064 + +0000000080002fac : + 80002fac: 00000213 li tp,0 + 80002fb0: 00e00113 li sp,14 + 80002fb4: 00000013 nop + 80002fb8: 800000b7 lui ra,0x80000 + 80002fbc: 00000013 nop + 80002fc0: 4020df33 sra t5,ra,sp + 80002fc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fc8: 00200293 li t0,2 + 80002fcc: fe5212e3 bne tp,t0,80002fb0 + 80002fd0: fffe0eb7 lui t4,0xfffe0 + 80002fd4: 02600193 li gp,38 + 80002fd8: 09df1663 bne t5,t4,80003064 + +0000000080002fdc : + 80002fdc: 00000213 li tp,0 + 80002fe0: 01f00113 li sp,31 + 80002fe4: 00000013 nop + 80002fe8: 00000013 nop + 80002fec: 800000b7 lui ra,0x80000 + 80002ff0: 4020df33 sra t5,ra,sp + 80002ff4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ff8: 00200293 li t0,2 + 80002ffc: fe5212e3 bne tp,t0,80002fe0 + 80003000: fff00e93 li t4,-1 + 80003004: 02700193 li gp,39 + 80003008: 05df1e63 bne t5,t4,80003064 + +000000008000300c : + 8000300c: 00f00093 li ra,15 + 80003010: 40105133 sra sp,zero,ra + 80003014: 00000e93 li t4,0 + 80003018: 02800193 li gp,40 + 8000301c: 05d11463 bne sp,t4,80003064 + +0000000080003020 : + 80003020: 02000093 li ra,32 + 80003024: 4000d133 sra sp,ra,zero + 80003028: 02000e93 li t4,32 + 8000302c: 02900193 li gp,41 + 80003030: 03d11a63 bne sp,t4,80003064 + +0000000080003034 : + 80003034: 400050b3 sra ra,zero,zero + 80003038: 00000e93 li t4,0 + 8000303c: 02a00193 li gp,42 + 80003040: 03d09263 bne ra,t4,80003064 + +0000000080003044 : + 80003044: 40000093 li ra,1024 + 80003048: 00001137 lui sp,0x1 + 8000304c: 8001011b addiw sp,sp,-2048 + 80003050: 4020d033 sra zero,ra,sp + 80003054: 00000e93 li t4,0 + 80003058: 02b00193 li gp,43 + 8000305c: 01d01463 bne zero,t4,80003064 + 80003060: 00301a63 bne zero,gp,80003074 + +0000000080003064 : + 80003064: 00119513 slli a0,gp,0x1 + 80003068: 00050063 beqz a0,80003068 + 8000306c: 00156513 ori a0,a0,1 + 80003070: 00000073 ecall + +0000000080003074 : + 80003074: 00100513 li a0,1 + 80003078: 00000073 ecall + 8000307c: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-srai b/Tests/isa/rv64ui-v-srai new file mode 100644 index 0000000..8fca152 Binary files /dev/null and b/Tests/isa/rv64ui-v-srai differ diff --git a/Tests/isa/rv64ui-v-srai.dump b/Tests/isa/rv64ui-v-srai.dump new file mode 100644 index 0000000..8926e55 --- /dev/null +++ b/Tests/isa/rv64ui-v-srai.dump @@ -0,0 +1,1062 @@ + +rv64ui-v-srai: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 95068693 addi a3,a3,-1712 # 80002da8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 98460613 addi a2,a2,-1660 # 80002e38 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 94c60613 addi a2,a2,-1716 # 80002e50 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 89c68693 addi a3,a3,-1892 # 80002df0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8b868693 addi a3,a3,-1864 # 80002f28 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 83860613 addi a2,a2,-1992 # 80002f00 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 76c68693 addi a3,a3,1900 # 80002f58 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 68c68693 addi a3,a3,1676 # 80002ec8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 61c68693 addi a3,a3,1564 # 80002e90 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 00400793 li a5,4 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 00a547b7 lui a5,0xa54 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: f8778793 addi a5,a5,-121 # a53f87 <_start-0x7f5ac079> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: fff0009b addiw ra,zero,-1 + 80002acc: 02709093 slli ra,ra,0x27 + 80002ad0: 4000df13 srai t5,ra,0x0 + 80002ad4: fff00e9b addiw t4,zero,-1 + 80002ad8: 027e9e93 slli t4,t4,0x27 + 80002adc: 00200193 li gp,2 + 80002ae0: 2bdf1463 bne t5,t4,80002d88 + +0000000080002ae4 : + 80002ae4: 800000b7 lui ra,0x80000 + 80002ae8: 4010df13 srai t5,ra,0x1 + 80002aec: c0000eb7 lui t4,0xc0000 + 80002af0: 00300193 li gp,3 + 80002af4: 29df1a63 bne t5,t4,80002d88 + +0000000080002af8 : + 80002af8: 800000b7 lui ra,0x80000 + 80002afc: 4070df13 srai t5,ra,0x7 + 80002b00: ff000eb7 lui t4,0xff000 + 80002b04: 00400193 li gp,4 + 80002b08: 29df1063 bne t5,t4,80002d88 + +0000000080002b0c : + 80002b0c: 800000b7 lui ra,0x80000 + 80002b10: 40e0df13 srai t5,ra,0xe + 80002b14: fffe0eb7 lui t4,0xfffe0 + 80002b18: 00500193 li gp,5 + 80002b1c: 27df1663 bne t5,t4,80002d88 + +0000000080002b20 : + 80002b20: 800000b7 lui ra,0x80000 + 80002b24: 0010809b addiw ra,ra,1 + 80002b28: 41f0df13 srai t5,ra,0x1f + 80002b2c: fff00e93 li t4,-1 + 80002b30: 00600193 li gp,6 + 80002b34: 25df1a63 bne t5,t4,80002d88 + +0000000080002b38 : + 80002b38: 800000b7 lui ra,0x80000 + 80002b3c: fff0809b addiw ra,ra,-1 + 80002b40: 4000df13 srai t5,ra,0x0 + 80002b44: 80000eb7 lui t4,0x80000 + 80002b48: fffe8e9b addiw t4,t4,-1 + 80002b4c: 00700193 li gp,7 + 80002b50: 23df1c63 bne t5,t4,80002d88 + +0000000080002b54 : + 80002b54: 800000b7 lui ra,0x80000 + 80002b58: fff0809b addiw ra,ra,-1 + 80002b5c: 4010df13 srai t5,ra,0x1 + 80002b60: 40000eb7 lui t4,0x40000 + 80002b64: fffe8e9b addiw t4,t4,-1 + 80002b68: 00800193 li gp,8 + 80002b6c: 21df1e63 bne t5,t4,80002d88 + +0000000080002b70 : + 80002b70: 800000b7 lui ra,0x80000 + 80002b74: fff0809b addiw ra,ra,-1 + 80002b78: 4070df13 srai t5,ra,0x7 + 80002b7c: 01000eb7 lui t4,0x1000 + 80002b80: fffe8e9b addiw t4,t4,-1 + 80002b84: 00900193 li gp,9 + 80002b88: 21df1063 bne t5,t4,80002d88 + +0000000080002b8c : + 80002b8c: 800000b7 lui ra,0x80000 + 80002b90: fff0809b addiw ra,ra,-1 + 80002b94: 40e0df13 srai t5,ra,0xe + 80002b98: 00020eb7 lui t4,0x20 + 80002b9c: fffe8e9b addiw t4,t4,-1 + 80002ba0: 00a00193 li gp,10 + 80002ba4: 1fdf1263 bne t5,t4,80002d88 + +0000000080002ba8 : + 80002ba8: 800000b7 lui ra,0x80000 + 80002bac: fff0809b addiw ra,ra,-1 + 80002bb0: 41f0df13 srai t5,ra,0x1f + 80002bb4: 00000e93 li t4,0 + 80002bb8: 00b00193 li gp,11 + 80002bbc: 1ddf1663 bne t5,t4,80002d88 + +0000000080002bc0 : + 80002bc0: 818180b7 lui ra,0x81818 + 80002bc4: 1810809b addiw ra,ra,385 + 80002bc8: 4000df13 srai t5,ra,0x0 + 80002bcc: 81818eb7 lui t4,0x81818 + 80002bd0: 181e8e9b addiw t4,t4,385 + 80002bd4: 00c00193 li gp,12 + 80002bd8: 1bdf1863 bne t5,t4,80002d88 + +0000000080002bdc : + 80002bdc: 818180b7 lui ra,0x81818 + 80002be0: 1810809b addiw ra,ra,385 + 80002be4: 4010df13 srai t5,ra,0x1 + 80002be8: c0c0ceb7 lui t4,0xc0c0c + 80002bec: 0c0e8e9b addiw t4,t4,192 + 80002bf0: 00d00193 li gp,13 + 80002bf4: 19df1a63 bne t5,t4,80002d88 + +0000000080002bf8 : + 80002bf8: 818180b7 lui ra,0x81818 + 80002bfc: 1810809b addiw ra,ra,385 + 80002c00: 4070df13 srai t5,ra,0x7 + 80002c04: ff030eb7 lui t4,0xff030 + 80002c08: 303e8e9b addiw t4,t4,771 + 80002c0c: 00e00193 li gp,14 + 80002c10: 17df1c63 bne t5,t4,80002d88 + +0000000080002c14 : + 80002c14: 818180b7 lui ra,0x81818 + 80002c18: 1810809b addiw ra,ra,385 + 80002c1c: 40e0df13 srai t5,ra,0xe + 80002c20: fffe0eb7 lui t4,0xfffe0 + 80002c24: 606e8e9b addiw t4,t4,1542 + 80002c28: 00f00193 li gp,15 + 80002c2c: 15df1e63 bne t5,t4,80002d88 + +0000000080002c30 : + 80002c30: 818180b7 lui ra,0x81818 + 80002c34: 1810809b addiw ra,ra,385 + 80002c38: 41f0df13 srai t5,ra,0x1f + 80002c3c: fff00e93 li t4,-1 + 80002c40: 01000193 li gp,16 + 80002c44: 15df1263 bne t5,t4,80002d88 + +0000000080002c48 : + 80002c48: 800000b7 lui ra,0x80000 + 80002c4c: 4070d093 srai ra,ra,0x7 + 80002c50: ff000eb7 lui t4,0xff000 + 80002c54: 01100193 li gp,17 + 80002c58: 13d09863 bne ra,t4,80002d88 + +0000000080002c5c : + 80002c5c: 00000213 li tp,0 + 80002c60: 800000b7 lui ra,0x80000 + 80002c64: 4070df13 srai t5,ra,0x7 + 80002c68: 000f0313 mv t1,t5 + 80002c6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c70: 00200293 li t0,2 + 80002c74: fe5216e3 bne tp,t0,80002c60 + 80002c78: ff000eb7 lui t4,0xff000 + 80002c7c: 01200193 li gp,18 + 80002c80: 11d31463 bne t1,t4,80002d88 + +0000000080002c84 : + 80002c84: 00000213 li tp,0 + 80002c88: 800000b7 lui ra,0x80000 + 80002c8c: 40e0df13 srai t5,ra,0xe + 80002c90: 00000013 nop + 80002c94: 000f0313 mv t1,t5 + 80002c98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c9c: 00200293 li t0,2 + 80002ca0: fe5214e3 bne tp,t0,80002c88 + 80002ca4: fffe0eb7 lui t4,0xfffe0 + 80002ca8: 01300193 li gp,19 + 80002cac: 0dd31e63 bne t1,t4,80002d88 + +0000000080002cb0 : + 80002cb0: 00000213 li tp,0 + 80002cb4: 800000b7 lui ra,0x80000 + 80002cb8: 0010809b addiw ra,ra,1 + 80002cbc: 41f0df13 srai t5,ra,0x1f + 80002cc0: 00000013 nop + 80002cc4: 00000013 nop + 80002cc8: 000f0313 mv t1,t5 + 80002ccc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd0: 00200293 li t0,2 + 80002cd4: fe5210e3 bne tp,t0,80002cb4 + 80002cd8: fff00e93 li t4,-1 + 80002cdc: 01400193 li gp,20 + 80002ce0: 0bd31463 bne t1,t4,80002d88 + +0000000080002ce4 : + 80002ce4: 00000213 li tp,0 + 80002ce8: 800000b7 lui ra,0x80000 + 80002cec: 4070df13 srai t5,ra,0x7 + 80002cf0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf4: 00200293 li t0,2 + 80002cf8: fe5218e3 bne tp,t0,80002ce8 + 80002cfc: ff000eb7 lui t4,0xff000 + 80002d00: 01500193 li gp,21 + 80002d04: 09df1263 bne t5,t4,80002d88 + +0000000080002d08 : + 80002d08: 00000213 li tp,0 + 80002d0c: 800000b7 lui ra,0x80000 + 80002d10: 00000013 nop + 80002d14: 40e0df13 srai t5,ra,0xe + 80002d18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d1c: 00200293 li t0,2 + 80002d20: fe5216e3 bne tp,t0,80002d0c + 80002d24: fffe0eb7 lui t4,0xfffe0 + 80002d28: 01600193 li gp,22 + 80002d2c: 05df1e63 bne t5,t4,80002d88 + +0000000080002d30 : + 80002d30: 00000213 li tp,0 + 80002d34: 800000b7 lui ra,0x80000 + 80002d38: 0010809b addiw ra,ra,1 + 80002d3c: 00000013 nop + 80002d40: 00000013 nop + 80002d44: 41f0df13 srai t5,ra,0x1f + 80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d4c: 00200293 li t0,2 + 80002d50: fe5212e3 bne tp,t0,80002d34 + 80002d54: fff00e93 li t4,-1 + 80002d58: 01700193 li gp,23 + 80002d5c: 03df1663 bne t5,t4,80002d88 + +0000000080002d60 : + 80002d60: 40405093 srai ra,zero,0x4 + 80002d64: 00000e93 li t4,0 + 80002d68: 01800193 li gp,24 + 80002d6c: 01d09e63 bne ra,t4,80002d88 + +0000000080002d70 : + 80002d70: 02100093 li ra,33 + 80002d74: 40a0d013 srai zero,ra,0xa + 80002d78: 00000e93 li t4,0 + 80002d7c: 01900193 li gp,25 + 80002d80: 01d01463 bne zero,t4,80002d88 + 80002d84: 00301a63 bne zero,gp,80002d98 + +0000000080002d88 : + 80002d88: 00119513 slli a0,gp,0x1 + 80002d8c: 00050063 beqz a0,80002d8c + 80002d90: 00156513 ori a0,a0,1 + 80002d94: 00000073 ecall + +0000000080002d98 : + 80002d98: 00100513 li a0,1 + 80002d9c: 00000073 ecall + 80002da0: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sraiw b/Tests/isa/rv64ui-v-sraiw new file mode 100644 index 0000000..d5c63a4 Binary files /dev/null and b/Tests/isa/rv64ui-v-sraiw differ diff --git a/Tests/isa/rv64ui-v-sraiw.dump b/Tests/isa/rv64ui-v-sraiw.dump new file mode 100644 index 0000000..276de6b --- /dev/null +++ b/Tests/isa/rv64ui-v-sraiw.dump @@ -0,0 +1,1076 @@ + +rv64ui-v-sraiw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 97868693 addi a3,a3,-1672 # 80002dd0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 9ac60613 addi a2,a2,-1620 # 80002e60 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 97460613 addi a2,a2,-1676 # 80002e78 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 8c468693 addi a3,a3,-1852 # 80002e18 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8e068693 addi a3,a3,-1824 # 80002f50 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 86060613 addi a2,a2,-1952 # 80002f28 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 79468693 addi a3,a3,1940 # 80002f80 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 6b468693 addi a3,a3,1716 # 80002ef0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 64468693 addi a3,a3,1604 # 80002eb8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 00800793 li a5,8 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0e8fe7b7 lui a5,0xe8fe + 80002a70: 000805b7 lui a1,0x80 + 80002a74: ca478793 addi a5,a5,-860 # e8fdca4 <_start-0x7170235c> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 800000b7 lui ra,0x80000 + 80002acc: 4000df1b sraiw t5,ra,0x0 + 80002ad0: 80000eb7 lui t4,0x80000 + 80002ad4: 00200193 li gp,2 + 80002ad8: 2ddf1c63 bne t5,t4,80002db0 + +0000000080002adc : + 80002adc: 800000b7 lui ra,0x80000 + 80002ae0: 4010df1b sraiw t5,ra,0x1 + 80002ae4: c0000eb7 lui t4,0xc0000 + 80002ae8: 00300193 li gp,3 + 80002aec: 2ddf1263 bne t5,t4,80002db0 + +0000000080002af0 : + 80002af0: 800000b7 lui ra,0x80000 + 80002af4: 4070df1b sraiw t5,ra,0x7 + 80002af8: ff000eb7 lui t4,0xff000 + 80002afc: 00400193 li gp,4 + 80002b00: 2bdf1863 bne t5,t4,80002db0 + +0000000080002b04 : + 80002b04: 800000b7 lui ra,0x80000 + 80002b08: 40e0df1b sraiw t5,ra,0xe + 80002b0c: fffe0eb7 lui t4,0xfffe0 + 80002b10: 00500193 li gp,5 + 80002b14: 29df1e63 bne t5,t4,80002db0 + +0000000080002b18 : + 80002b18: 800000b7 lui ra,0x80000 + 80002b1c: 0010809b addiw ra,ra,1 + 80002b20: 41f0df1b sraiw t5,ra,0x1f + 80002b24: fff00e93 li t4,-1 + 80002b28: 00600193 li gp,6 + 80002b2c: 29df1263 bne t5,t4,80002db0 + +0000000080002b30 : + 80002b30: 800000b7 lui ra,0x80000 + 80002b34: fff0809b addiw ra,ra,-1 + 80002b38: 4000df1b sraiw t5,ra,0x0 + 80002b3c: 80000eb7 lui t4,0x80000 + 80002b40: fffe8e9b addiw t4,t4,-1 + 80002b44: 00700193 li gp,7 + 80002b48: 27df1463 bne t5,t4,80002db0 + +0000000080002b4c : + 80002b4c: 800000b7 lui ra,0x80000 + 80002b50: fff0809b addiw ra,ra,-1 + 80002b54: 4010df1b sraiw t5,ra,0x1 + 80002b58: 40000eb7 lui t4,0x40000 + 80002b5c: fffe8e9b addiw t4,t4,-1 + 80002b60: 00800193 li gp,8 + 80002b64: 25df1663 bne t5,t4,80002db0 + +0000000080002b68 : + 80002b68: 800000b7 lui ra,0x80000 + 80002b6c: fff0809b addiw ra,ra,-1 + 80002b70: 4070df1b sraiw t5,ra,0x7 + 80002b74: 01000eb7 lui t4,0x1000 + 80002b78: fffe8e9b addiw t4,t4,-1 + 80002b7c: 00900193 li gp,9 + 80002b80: 23df1863 bne t5,t4,80002db0 + +0000000080002b84 : + 80002b84: 800000b7 lui ra,0x80000 + 80002b88: fff0809b addiw ra,ra,-1 + 80002b8c: 40e0df1b sraiw t5,ra,0xe + 80002b90: 00020eb7 lui t4,0x20 + 80002b94: fffe8e9b addiw t4,t4,-1 + 80002b98: 00a00193 li gp,10 + 80002b9c: 21df1a63 bne t5,t4,80002db0 + +0000000080002ba0 : + 80002ba0: 800000b7 lui ra,0x80000 + 80002ba4: fff0809b addiw ra,ra,-1 + 80002ba8: 41f0df1b sraiw t5,ra,0x1f + 80002bac: 00000e93 li t4,0 + 80002bb0: 00b00193 li gp,11 + 80002bb4: 1fdf1e63 bne t5,t4,80002db0 + +0000000080002bb8 : + 80002bb8: 818180b7 lui ra,0x81818 + 80002bbc: 1810809b addiw ra,ra,385 + 80002bc0: 4000df1b sraiw t5,ra,0x0 + 80002bc4: 81818eb7 lui t4,0x81818 + 80002bc8: 181e8e9b addiw t4,t4,385 + 80002bcc: 00c00193 li gp,12 + 80002bd0: 1fdf1063 bne t5,t4,80002db0 + +0000000080002bd4 : + 80002bd4: 818180b7 lui ra,0x81818 + 80002bd8: 1810809b addiw ra,ra,385 + 80002bdc: 4010df1b sraiw t5,ra,0x1 + 80002be0: c0c0ceb7 lui t4,0xc0c0c + 80002be4: 0c0e8e9b addiw t4,t4,192 + 80002be8: 00d00193 li gp,13 + 80002bec: 1ddf1263 bne t5,t4,80002db0 + +0000000080002bf0 : + 80002bf0: 818180b7 lui ra,0x81818 + 80002bf4: 1810809b addiw ra,ra,385 + 80002bf8: 4070df1b sraiw t5,ra,0x7 + 80002bfc: ff030eb7 lui t4,0xff030 + 80002c00: 303e8e9b addiw t4,t4,771 + 80002c04: 00e00193 li gp,14 + 80002c08: 1bdf1463 bne t5,t4,80002db0 + +0000000080002c0c : + 80002c0c: 818180b7 lui ra,0x81818 + 80002c10: 1810809b addiw ra,ra,385 + 80002c14: 40e0df1b sraiw t5,ra,0xe + 80002c18: fffe0eb7 lui t4,0xfffe0 + 80002c1c: 606e8e9b addiw t4,t4,1542 + 80002c20: 00f00193 li gp,15 + 80002c24: 19df1663 bne t5,t4,80002db0 + +0000000080002c28 : + 80002c28: 818180b7 lui ra,0x81818 + 80002c2c: 1810809b addiw ra,ra,385 + 80002c30: 41f0df1b sraiw t5,ra,0x1f + 80002c34: fff00e93 li t4,-1 + 80002c38: 01000193 li gp,16 + 80002c3c: 17df1a63 bne t5,t4,80002db0 + +0000000080002c40 : + 80002c40: 800000b7 lui ra,0x80000 + 80002c44: 4070d09b sraiw ra,ra,0x7 + 80002c48: ff000eb7 lui t4,0xff000 + 80002c4c: 01100193 li gp,17 + 80002c50: 17d09063 bne ra,t4,80002db0 + +0000000080002c54 : + 80002c54: 00000213 li tp,0 + 80002c58: 800000b7 lui ra,0x80000 + 80002c5c: 4070df1b sraiw t5,ra,0x7 + 80002c60: 000f0313 mv t1,t5 + 80002c64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c68: 00200293 li t0,2 + 80002c6c: fe5216e3 bne tp,t0,80002c58 + 80002c70: ff000eb7 lui t4,0xff000 + 80002c74: 01200193 li gp,18 + 80002c78: 13d31c63 bne t1,t4,80002db0 + +0000000080002c7c : + 80002c7c: 00000213 li tp,0 + 80002c80: 800000b7 lui ra,0x80000 + 80002c84: 40e0df1b sraiw t5,ra,0xe + 80002c88: 00000013 nop + 80002c8c: 000f0313 mv t1,t5 + 80002c90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c94: 00200293 li t0,2 + 80002c98: fe5214e3 bne tp,t0,80002c80 + 80002c9c: fffe0eb7 lui t4,0xfffe0 + 80002ca0: 01300193 li gp,19 + 80002ca4: 11d31663 bne t1,t4,80002db0 + +0000000080002ca8 : + 80002ca8: 00000213 li tp,0 + 80002cac: 800000b7 lui ra,0x80000 + 80002cb0: 0010809b addiw ra,ra,1 + 80002cb4: 41f0df1b sraiw t5,ra,0x1f + 80002cb8: 00000013 nop + 80002cbc: 00000013 nop + 80002cc0: 000f0313 mv t1,t5 + 80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cc8: 00200293 li t0,2 + 80002ccc: fe5210e3 bne tp,t0,80002cac + 80002cd0: fff00e93 li t4,-1 + 80002cd4: 01400193 li gp,20 + 80002cd8: 0dd31c63 bne t1,t4,80002db0 + +0000000080002cdc : + 80002cdc: 00000213 li tp,0 + 80002ce0: 800000b7 lui ra,0x80000 + 80002ce4: 4070df1b sraiw t5,ra,0x7 + 80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cec: 00200293 li t0,2 + 80002cf0: fe5218e3 bne tp,t0,80002ce0 + 80002cf4: ff000eb7 lui t4,0xff000 + 80002cf8: 01500193 li gp,21 + 80002cfc: 0bdf1a63 bne t5,t4,80002db0 + +0000000080002d00 : + 80002d00: 00000213 li tp,0 + 80002d04: 800000b7 lui ra,0x80000 + 80002d08: 00000013 nop + 80002d0c: 40e0df1b sraiw t5,ra,0xe + 80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d14: 00200293 li t0,2 + 80002d18: fe5216e3 bne tp,t0,80002d04 + 80002d1c: fffe0eb7 lui t4,0xfffe0 + 80002d20: 01600193 li gp,22 + 80002d24: 09df1663 bne t5,t4,80002db0 + +0000000080002d28 : + 80002d28: 00000213 li tp,0 + 80002d2c: 800000b7 lui ra,0x80000 + 80002d30: 0010809b addiw ra,ra,1 + 80002d34: 00000013 nop + 80002d38: 00000013 nop + 80002d3c: 41f0df1b sraiw t5,ra,0x1f + 80002d40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d44: 00200293 li t0,2 + 80002d48: fe5212e3 bne tp,t0,80002d2c + 80002d4c: fff00e93 li t4,-1 + 80002d50: 01700193 li gp,23 + 80002d54: 05df1e63 bne t5,t4,80002db0 + +0000000080002d58 : + 80002d58: 41f0509b sraiw ra,zero,0x1f + 80002d5c: 00000e93 li t4,0 + 80002d60: 01800193 li gp,24 + 80002d64: 05d09663 bne ra,t4,80002db0 + +0000000080002d68 : + 80002d68: 01f00093 li ra,31 + 80002d6c: 41c0d01b sraiw zero,ra,0x1c + 80002d70: 00000e93 li t4,0 + 80002d74: 01900193 li gp,25 + 80002d78: 03d01c63 bne zero,t4,80002db0 + +0000000080002d7c : + 80002d7c: 0070009b addiw ra,zero,7 + 80002d80: 03509093 slli ra,ra,0x35 + 80002d84: 41c0df1b sraiw t5,ra,0x1c + 80002d88: 00000e93 li t4,0 + 80002d8c: 01a00193 li gp,26 + 80002d90: 03df1063 bne t5,t4,80002db0 + +0000000080002d94 : + 80002d94: 00f0009b addiw ra,zero,15 + 80002d98: 01c09093 slli ra,ra,0x1c + 80002d9c: 4040df1b sraiw t5,ra,0x4 + 80002da0: ff000eb7 lui t4,0xff000 + 80002da4: 01b00193 li gp,27 + 80002da8: 01df1463 bne t5,t4,80002db0 + 80002dac: 00301a63 bne zero,gp,80002dc0 + +0000000080002db0 : + 80002db0: 00119513 slli a0,gp,0x1 + 80002db4: 00050063 beqz a0,80002db4 + 80002db8: 00156513 ori a0,a0,1 + 80002dbc: 00000073 ecall + +0000000080002dc0 : + 80002dc0: 00100513 li a0,1 + 80002dc4: 00000073 ecall + 80002dc8: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sraw b/Tests/isa/rv64ui-v-sraw new file mode 100644 index 0000000..53f15a5 Binary files /dev/null and b/Tests/isa/rv64ui-v-sraw differ diff --git a/Tests/isa/rv64ui-v-sraw.dump b/Tests/isa/rv64ui-v-sraw.dump new file mode 100644 index 0000000..a2eaf36 --- /dev/null +++ b/Tests/isa/rv64ui-v-sraw.dump @@ -0,0 +1,1281 @@ + +rv64ui-v-sraw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: c2868693 addi a3,a3,-984 # 80003080 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: c5c60613 addi a2,a2,-932 # 80003110 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: c2460613 addi a2,a2,-988 # 80003128 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: b7468693 addi a3,a3,-1164 # 800030c8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: b9068693 addi a3,a3,-1136 # 80003200 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: b1060613 addi a2,a2,-1264 # 800031d8 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: a4468693 addi a3,a3,-1468 # 80003230 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 96468693 addi a3,a3,-1692 # 800031a0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 8f468693 addi a3,a3,-1804 # 80003168 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03400793 li a5,52 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 077137b7 lui a5,0x7713 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 07b78793 addi a5,a5,123 # 771307b <_start-0x788ecf85> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 800000b7 lui ra,0x80000 + 80002acc: 00000113 li sp,0 + 80002ad0: 4020df3b sraw t5,ra,sp + 80002ad4: 80000eb7 lui t4,0x80000 + 80002ad8: 00200193 li gp,2 + 80002adc: 59df1463 bne t5,t4,80003064 + +0000000080002ae0 : + 80002ae0: 800000b7 lui ra,0x80000 + 80002ae4: 00100113 li sp,1 + 80002ae8: 4020df3b sraw t5,ra,sp + 80002aec: c0000eb7 lui t4,0xc0000 + 80002af0: 00300193 li gp,3 + 80002af4: 57df1863 bne t5,t4,80003064 + +0000000080002af8 : + 80002af8: 800000b7 lui ra,0x80000 + 80002afc: 00700113 li sp,7 + 80002b00: 4020df3b sraw t5,ra,sp + 80002b04: ff000eb7 lui t4,0xff000 + 80002b08: 00400193 li gp,4 + 80002b0c: 55df1c63 bne t5,t4,80003064 + +0000000080002b10 : + 80002b10: 800000b7 lui ra,0x80000 + 80002b14: 00e00113 li sp,14 + 80002b18: 4020df3b sraw t5,ra,sp + 80002b1c: fffe0eb7 lui t4,0xfffe0 + 80002b20: 00500193 li gp,5 + 80002b24: 55df1063 bne t5,t4,80003064 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 0010809b addiw ra,ra,1 + 80002b30: 01f00113 li sp,31 + 80002b34: 4020df3b sraw t5,ra,sp + 80002b38: fff00e93 li t4,-1 + 80002b3c: 00600193 li gp,6 + 80002b40: 53df1263 bne t5,t4,80003064 + +0000000080002b44 : + 80002b44: 800000b7 lui ra,0x80000 + 80002b48: fff0809b addiw ra,ra,-1 + 80002b4c: 00000113 li sp,0 + 80002b50: 4020df3b sraw t5,ra,sp + 80002b54: 80000eb7 lui t4,0x80000 + 80002b58: fffe8e9b addiw t4,t4,-1 + 80002b5c: 00700193 li gp,7 + 80002b60: 51df1263 bne t5,t4,80003064 + +0000000080002b64 : + 80002b64: 800000b7 lui ra,0x80000 + 80002b68: fff0809b addiw ra,ra,-1 + 80002b6c: 00100113 li sp,1 + 80002b70: 4020df3b sraw t5,ra,sp + 80002b74: 40000eb7 lui t4,0x40000 + 80002b78: fffe8e9b addiw t4,t4,-1 + 80002b7c: 00800193 li gp,8 + 80002b80: 4fdf1263 bne t5,t4,80003064 + +0000000080002b84 : + 80002b84: 800000b7 lui ra,0x80000 + 80002b88: fff0809b addiw ra,ra,-1 + 80002b8c: 00700113 li sp,7 + 80002b90: 4020df3b sraw t5,ra,sp + 80002b94: 01000eb7 lui t4,0x1000 + 80002b98: fffe8e9b addiw t4,t4,-1 + 80002b9c: 00900193 li gp,9 + 80002ba0: 4ddf1263 bne t5,t4,80003064 + +0000000080002ba4 : + 80002ba4: 800000b7 lui ra,0x80000 + 80002ba8: fff0809b addiw ra,ra,-1 + 80002bac: 00e00113 li sp,14 + 80002bb0: 4020df3b sraw t5,ra,sp + 80002bb4: 00020eb7 lui t4,0x20 + 80002bb8: fffe8e9b addiw t4,t4,-1 + 80002bbc: 00a00193 li gp,10 + 80002bc0: 4bdf1263 bne t5,t4,80003064 + +0000000080002bc4 : + 80002bc4: 800000b7 lui ra,0x80000 + 80002bc8: fff0809b addiw ra,ra,-1 + 80002bcc: 01f00113 li sp,31 + 80002bd0: 4020df3b sraw t5,ra,sp + 80002bd4: 00000e93 li t4,0 + 80002bd8: 00b00193 li gp,11 + 80002bdc: 49df1463 bne t5,t4,80003064 + +0000000080002be0 : + 80002be0: 818180b7 lui ra,0x81818 + 80002be4: 1810809b addiw ra,ra,385 + 80002be8: 00000113 li sp,0 + 80002bec: 4020df3b sraw t5,ra,sp + 80002bf0: 81818eb7 lui t4,0x81818 + 80002bf4: 181e8e9b addiw t4,t4,385 + 80002bf8: 00c00193 li gp,12 + 80002bfc: 47df1463 bne t5,t4,80003064 + +0000000080002c00 : + 80002c00: 818180b7 lui ra,0x81818 + 80002c04: 1810809b addiw ra,ra,385 + 80002c08: 00100113 li sp,1 + 80002c0c: 4020df3b sraw t5,ra,sp + 80002c10: c0c0ceb7 lui t4,0xc0c0c + 80002c14: 0c0e8e9b addiw t4,t4,192 + 80002c18: 00d00193 li gp,13 + 80002c1c: 45df1463 bne t5,t4,80003064 + +0000000080002c20 : + 80002c20: 818180b7 lui ra,0x81818 + 80002c24: 1810809b addiw ra,ra,385 + 80002c28: 00700113 li sp,7 + 80002c2c: 4020df3b sraw t5,ra,sp + 80002c30: ff030eb7 lui t4,0xff030 + 80002c34: 303e8e9b addiw t4,t4,771 + 80002c38: 00e00193 li gp,14 + 80002c3c: 43df1463 bne t5,t4,80003064 + +0000000080002c40 : + 80002c40: 818180b7 lui ra,0x81818 + 80002c44: 1810809b addiw ra,ra,385 + 80002c48: 00e00113 li sp,14 + 80002c4c: 4020df3b sraw t5,ra,sp + 80002c50: fffe0eb7 lui t4,0xfffe0 + 80002c54: 606e8e9b addiw t4,t4,1542 + 80002c58: 00f00193 li gp,15 + 80002c5c: 41df1463 bne t5,t4,80003064 + +0000000080002c60 : + 80002c60: 818180b7 lui ra,0x81818 + 80002c64: 1810809b addiw ra,ra,385 + 80002c68: 01f00113 li sp,31 + 80002c6c: 4020df3b sraw t5,ra,sp + 80002c70: fff00e93 li t4,-1 + 80002c74: 01000193 li gp,16 + 80002c78: 3fdf1663 bne t5,t4,80003064 + +0000000080002c7c : + 80002c7c: 818180b7 lui ra,0x81818 + 80002c80: 1810809b addiw ra,ra,385 + 80002c84: fe000113 li sp,-32 + 80002c88: 4020df3b sraw t5,ra,sp + 80002c8c: 81818eb7 lui t4,0x81818 + 80002c90: 181e8e9b addiw t4,t4,385 + 80002c94: 01100193 li gp,17 + 80002c98: 3ddf1663 bne t5,t4,80003064 + +0000000080002c9c : + 80002c9c: 818180b7 lui ra,0x81818 + 80002ca0: 1810809b addiw ra,ra,385 + 80002ca4: fe100113 li sp,-31 + 80002ca8: 4020df3b sraw t5,ra,sp + 80002cac: c0c0ceb7 lui t4,0xc0c0c + 80002cb0: 0c0e8e9b addiw t4,t4,192 + 80002cb4: 01200193 li gp,18 + 80002cb8: 3bdf1663 bne t5,t4,80003064 + +0000000080002cbc : + 80002cbc: 818180b7 lui ra,0x81818 + 80002cc0: 1810809b addiw ra,ra,385 + 80002cc4: fe700113 li sp,-25 + 80002cc8: 4020df3b sraw t5,ra,sp + 80002ccc: ff030eb7 lui t4,0xff030 + 80002cd0: 303e8e9b addiw t4,t4,771 + 80002cd4: 01300193 li gp,19 + 80002cd8: 39df1663 bne t5,t4,80003064 + +0000000080002cdc : + 80002cdc: 818180b7 lui ra,0x81818 + 80002ce0: 1810809b addiw ra,ra,385 + 80002ce4: fee00113 li sp,-18 + 80002ce8: 4020df3b sraw t5,ra,sp + 80002cec: fffe0eb7 lui t4,0xfffe0 + 80002cf0: 606e8e9b addiw t4,t4,1542 + 80002cf4: 01400193 li gp,20 + 80002cf8: 37df1663 bne t5,t4,80003064 + +0000000080002cfc : + 80002cfc: 818180b7 lui ra,0x81818 + 80002d00: 1810809b addiw ra,ra,385 + 80002d04: fff00113 li sp,-1 + 80002d08: 4020df3b sraw t5,ra,sp + 80002d0c: fff00e93 li t4,-1 + 80002d10: 01500193 li gp,21 + 80002d14: 35df1863 bne t5,t4,80003064 + +0000000080002d18 : + 80002d18: 800000b7 lui ra,0x80000 + 80002d1c: 00700113 li sp,7 + 80002d20: 4020d0bb sraw ra,ra,sp + 80002d24: ff000eb7 lui t4,0xff000 + 80002d28: 01600193 li gp,22 + 80002d2c: 33d09c63 bne ra,t4,80003064 + +0000000080002d30 : + 80002d30: 800000b7 lui ra,0x80000 + 80002d34: 00e00113 li sp,14 + 80002d38: 4020d13b sraw sp,ra,sp + 80002d3c: fffe0eb7 lui t4,0xfffe0 + 80002d40: 01700193 li gp,23 + 80002d44: 33d11063 bne sp,t4,80003064 + +0000000080002d48 : + 80002d48: 00700093 li ra,7 + 80002d4c: 4010d0bb sraw ra,ra,ra + 80002d50: 00000e93 li t4,0 + 80002d54: 01800193 li gp,24 + 80002d58: 31d09663 bne ra,t4,80003064 + +0000000080002d5c : + 80002d5c: 00000213 li tp,0 + 80002d60: 800000b7 lui ra,0x80000 + 80002d64: 00700113 li sp,7 + 80002d68: 4020df3b sraw t5,ra,sp + 80002d6c: 000f0313 mv t1,t5 + 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d74: 00200293 li t0,2 + 80002d78: fe5214e3 bne tp,t0,80002d60 + 80002d7c: ff000eb7 lui t4,0xff000 + 80002d80: 01900193 li gp,25 + 80002d84: 2fd31063 bne t1,t4,80003064 + +0000000080002d88 : + 80002d88: 00000213 li tp,0 + 80002d8c: 800000b7 lui ra,0x80000 + 80002d90: 00e00113 li sp,14 + 80002d94: 4020df3b sraw t5,ra,sp + 80002d98: 00000013 nop + 80002d9c: 000f0313 mv t1,t5 + 80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da4: 00200293 li t0,2 + 80002da8: fe5212e3 bne tp,t0,80002d8c + 80002dac: fffe0eb7 lui t4,0xfffe0 + 80002db0: 01a00193 li gp,26 + 80002db4: 2bd31863 bne t1,t4,80003064 + +0000000080002db8 : + 80002db8: 00000213 li tp,0 + 80002dbc: 800000b7 lui ra,0x80000 + 80002dc0: 01f00113 li sp,31 + 80002dc4: 4020df3b sraw t5,ra,sp + 80002dc8: 00000013 nop + 80002dcc: 00000013 nop + 80002dd0: 000f0313 mv t1,t5 + 80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd8: 00200293 li t0,2 + 80002ddc: fe5210e3 bne tp,t0,80002dbc + 80002de0: fff00e93 li t4,-1 + 80002de4: 01b00193 li gp,27 + 80002de8: 27d31e63 bne t1,t4,80003064 + +0000000080002dec : + 80002dec: 00000213 li tp,0 + 80002df0: 800000b7 lui ra,0x80000 + 80002df4: 00700113 li sp,7 + 80002df8: 4020df3b sraw t5,ra,sp + 80002dfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e00: 00200293 li t0,2 + 80002e04: fe5216e3 bne tp,t0,80002df0 + 80002e08: ff000eb7 lui t4,0xff000 + 80002e0c: 01c00193 li gp,28 + 80002e10: 25df1a63 bne t5,t4,80003064 + +0000000080002e14 : + 80002e14: 00000213 li tp,0 + 80002e18: 800000b7 lui ra,0x80000 + 80002e1c: 00e00113 li sp,14 + 80002e20: 00000013 nop + 80002e24: 4020df3b sraw t5,ra,sp + 80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e2c: 00200293 li t0,2 + 80002e30: fe5214e3 bne tp,t0,80002e18 + 80002e34: fffe0eb7 lui t4,0xfffe0 + 80002e38: 01d00193 li gp,29 + 80002e3c: 23df1463 bne t5,t4,80003064 + +0000000080002e40 : + 80002e40: 00000213 li tp,0 + 80002e44: 800000b7 lui ra,0x80000 + 80002e48: 01f00113 li sp,31 + 80002e4c: 00000013 nop + 80002e50: 00000013 nop + 80002e54: 4020df3b sraw t5,ra,sp + 80002e58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e5c: 00200293 li t0,2 + 80002e60: fe5212e3 bne tp,t0,80002e44 + 80002e64: fff00e93 li t4,-1 + 80002e68: 01e00193 li gp,30 + 80002e6c: 1fdf1c63 bne t5,t4,80003064 + +0000000080002e70 : + 80002e70: 00000213 li tp,0 + 80002e74: 800000b7 lui ra,0x80000 + 80002e78: 00000013 nop + 80002e7c: 00700113 li sp,7 + 80002e80: 4020df3b sraw t5,ra,sp + 80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e88: 00200293 li t0,2 + 80002e8c: fe5214e3 bne tp,t0,80002e74 + 80002e90: ff000eb7 lui t4,0xff000 + 80002e94: 01f00193 li gp,31 + 80002e98: 1ddf1663 bne t5,t4,80003064 + +0000000080002e9c : + 80002e9c: 00000213 li tp,0 + 80002ea0: 800000b7 lui ra,0x80000 + 80002ea4: 00000013 nop + 80002ea8: 00e00113 li sp,14 + 80002eac: 00000013 nop + 80002eb0: 4020df3b sraw t5,ra,sp + 80002eb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002eb8: 00200293 li t0,2 + 80002ebc: fe5212e3 bne tp,t0,80002ea0 + 80002ec0: fffe0eb7 lui t4,0xfffe0 + 80002ec4: 02000193 li gp,32 + 80002ec8: 19df1e63 bne t5,t4,80003064 + +0000000080002ecc : + 80002ecc: 00000213 li tp,0 + 80002ed0: 800000b7 lui ra,0x80000 + 80002ed4: 00000013 nop + 80002ed8: 00000013 nop + 80002edc: 01f00113 li sp,31 + 80002ee0: 4020df3b sraw t5,ra,sp + 80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ee8: 00200293 li t0,2 + 80002eec: fe5212e3 bne tp,t0,80002ed0 + 80002ef0: fff00e93 li t4,-1 + 80002ef4: 02100193 li gp,33 + 80002ef8: 17df1663 bne t5,t4,80003064 + +0000000080002efc : + 80002efc: 00000213 li tp,0 + 80002f00: 00700113 li sp,7 + 80002f04: 800000b7 lui ra,0x80000 + 80002f08: 4020df3b sraw t5,ra,sp + 80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f10: 00200293 li t0,2 + 80002f14: fe5216e3 bne tp,t0,80002f00 + 80002f18: ff000eb7 lui t4,0xff000 + 80002f1c: 02200193 li gp,34 + 80002f20: 15df1263 bne t5,t4,80003064 + +0000000080002f24 : + 80002f24: 00000213 li tp,0 + 80002f28: 00e00113 li sp,14 + 80002f2c: 800000b7 lui ra,0x80000 + 80002f30: 00000013 nop + 80002f34: 4020df3b sraw t5,ra,sp + 80002f38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f3c: 00200293 li t0,2 + 80002f40: fe5214e3 bne tp,t0,80002f28 + 80002f44: fffe0eb7 lui t4,0xfffe0 + 80002f48: 02300193 li gp,35 + 80002f4c: 11df1c63 bne t5,t4,80003064 + +0000000080002f50 : + 80002f50: 00000213 li tp,0 + 80002f54: 01f00113 li sp,31 + 80002f58: 800000b7 lui ra,0x80000 + 80002f5c: 00000013 nop + 80002f60: 00000013 nop + 80002f64: 4020df3b sraw t5,ra,sp + 80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f6c: 00200293 li t0,2 + 80002f70: fe5212e3 bne tp,t0,80002f54 + 80002f74: fff00e93 li t4,-1 + 80002f78: 02400193 li gp,36 + 80002f7c: 0fdf1463 bne t5,t4,80003064 + +0000000080002f80 : + 80002f80: 00000213 li tp,0 + 80002f84: 00700113 li sp,7 + 80002f88: 00000013 nop + 80002f8c: 800000b7 lui ra,0x80000 + 80002f90: 4020df3b sraw t5,ra,sp + 80002f94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f98: 00200293 li t0,2 + 80002f9c: fe5214e3 bne tp,t0,80002f84 + 80002fa0: ff000eb7 lui t4,0xff000 + 80002fa4: 02500193 li gp,37 + 80002fa8: 0bdf1e63 bne t5,t4,80003064 + +0000000080002fac : + 80002fac: 00000213 li tp,0 + 80002fb0: 00e00113 li sp,14 + 80002fb4: 00000013 nop + 80002fb8: 800000b7 lui ra,0x80000 + 80002fbc: 00000013 nop + 80002fc0: 4020df3b sraw t5,ra,sp + 80002fc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fc8: 00200293 li t0,2 + 80002fcc: fe5212e3 bne tp,t0,80002fb0 + 80002fd0: fffe0eb7 lui t4,0xfffe0 + 80002fd4: 02600193 li gp,38 + 80002fd8: 09df1663 bne t5,t4,80003064 + +0000000080002fdc : + 80002fdc: 00000213 li tp,0 + 80002fe0: 01f00113 li sp,31 + 80002fe4: 00000013 nop + 80002fe8: 00000013 nop + 80002fec: 800000b7 lui ra,0x80000 + 80002ff0: 4020df3b sraw t5,ra,sp + 80002ff4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ff8: 00200293 li t0,2 + 80002ffc: fe5212e3 bne tp,t0,80002fe0 + 80003000: fff00e93 li t4,-1 + 80003004: 02700193 li gp,39 + 80003008: 05df1e63 bne t5,t4,80003064 + +000000008000300c : + 8000300c: 00f00093 li ra,15 + 80003010: 4010513b sraw sp,zero,ra + 80003014: 00000e93 li t4,0 + 80003018: 02800193 li gp,40 + 8000301c: 05d11463 bne sp,t4,80003064 + +0000000080003020 : + 80003020: 02000093 li ra,32 + 80003024: 4000d13b sraw sp,ra,zero + 80003028: 02000e93 li t4,32 + 8000302c: 02900193 li gp,41 + 80003030: 03d11a63 bne sp,t4,80003064 + +0000000080003034 : + 80003034: 400050bb sraw ra,zero,zero + 80003038: 00000e93 li t4,0 + 8000303c: 02a00193 li gp,42 + 80003040: 03d09263 bne ra,t4,80003064 + +0000000080003044 : + 80003044: 40000093 li ra,1024 + 80003048: 00001137 lui sp,0x1 + 8000304c: 8001011b addiw sp,sp,-2048 + 80003050: 4020d03b sraw zero,ra,sp + 80003054: 00000e93 li t4,0 + 80003058: 02b00193 li gp,43 + 8000305c: 01d01463 bne zero,t4,80003064 + 80003060: 00301a63 bne zero,gp,80003074 + +0000000080003064 : + 80003064: 00119513 slli a0,gp,0x1 + 80003068: 00050063 beqz a0,80003068 + 8000306c: 00156513 ori a0,a0,1 + 80003070: 00000073 ecall + +0000000080003074 : + 80003074: 00100513 li a0,1 + 80003078: 00000073 ecall + 8000307c: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-srl b/Tests/isa/rv64ui-v-srl new file mode 100644 index 0000000..091754a Binary files /dev/null and b/Tests/isa/rv64ui-v-srl differ diff --git a/Tests/isa/rv64ui-v-srl.dump b/Tests/isa/rv64ui-v-srl.dump new file mode 100644 index 0000000..1fb24ac --- /dev/null +++ b/Tests/isa/rv64ui-v-srl.dump @@ -0,0 +1,1308 @@ + +rv64ui-v-srl: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: c9868693 addi a3,a3,-872 # 800030f0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: ccc60613 addi a2,a2,-820 # 80003180 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: c9460613 addi a2,a2,-876 # 80003198 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: be468693 addi a3,a3,-1052 # 80003138 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: c0068693 addi a3,a3,-1024 # 80003270 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: b8060613 addi a2,a2,-1152 # 80003248 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: ab468693 addi a3,a3,-1356 # 800032a0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 9d468693 addi a3,a3,-1580 # 80003210 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 96468693 addi a3,a3,-1692 # 800031d8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02700793 li a5,39 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 01e8a7b7 lui a5,0x1e8a + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 84078793 addi a5,a5,-1984 # 1e89840 <_start-0x7e1767c0> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 800000b7 lui ra,0x80000 + 80002acc: 00000113 li sp,0 + 80002ad0: 0020df33 srl t5,ra,sp + 80002ad4: 80000eb7 lui t4,0x80000 + 80002ad8: 00200193 li gp,2 + 80002adc: 5fdf1a63 bne t5,t4,800030d0 + +0000000080002ae0 : + 80002ae0: 800000b7 lui ra,0x80000 + 80002ae4: 00100113 li sp,1 + 80002ae8: 0020df33 srl t5,ra,sp + 80002aec: 00100e9b addiw t4,zero,1 + 80002af0: 021e9e93 slli t4,t4,0x21 + 80002af4: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffff780f> + 80002af8: 01ee9e93 slli t4,t4,0x1e + 80002afc: 00300193 li gp,3 + 80002b00: 5ddf1863 bne t5,t4,800030d0 + +0000000080002b04 : + 80002b04: 800000b7 lui ra,0x80000 + 80002b08: 00700113 li sp,7 + 80002b0c: 0020df33 srl t5,ra,sp + 80002b10: 00100e9b addiw t4,zero,1 + 80002b14: 021e9e93 slli t4,t4,0x21 + 80002b18: fffe8e93 addi t4,t4,-1 + 80002b1c: 018e9e93 slli t4,t4,0x18 + 80002b20: 00400193 li gp,4 + 80002b24: 5bdf1663 bne t5,t4,800030d0 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00e00113 li sp,14 + 80002b30: 0020df33 srl t5,ra,sp + 80002b34: 00100e9b addiw t4,zero,1 + 80002b38: 021e9e93 slli t4,t4,0x21 + 80002b3c: fffe8e93 addi t4,t4,-1 + 80002b40: 011e9e93 slli t4,t4,0x11 + 80002b44: 00500193 li gp,5 + 80002b48: 59df1463 bne t5,t4,800030d0 + +0000000080002b4c : + 80002b4c: 800000b7 lui ra,0x80000 + 80002b50: 0010809b addiw ra,ra,1 + 80002b54: 01f00113 li sp,31 + 80002b58: 0020df33 srl t5,ra,sp + 80002b5c: 00100e9b addiw t4,zero,1 + 80002b60: 021e9e93 slli t4,t4,0x21 + 80002b64: fffe8e93 addi t4,t4,-1 + 80002b68: 00600193 li gp,6 + 80002b6c: 57df1263 bne t5,t4,800030d0 + +0000000080002b70 : + 80002b70: fff00093 li ra,-1 + 80002b74: 00000113 li sp,0 + 80002b78: 0020df33 srl t5,ra,sp + 80002b7c: fff00e93 li t4,-1 + 80002b80: 00700193 li gp,7 + 80002b84: 55df1663 bne t5,t4,800030d0 + +0000000080002b88 : + 80002b88: fff00093 li ra,-1 + 80002b8c: 00100113 li sp,1 + 80002b90: 0020df33 srl t5,ra,sp + 80002b94: fff00e9b addiw t4,zero,-1 + 80002b98: 03fe9e93 slli t4,t4,0x3f + 80002b9c: fffe8e93 addi t4,t4,-1 + 80002ba0: 00800193 li gp,8 + 80002ba4: 53df1663 bne t5,t4,800030d0 + +0000000080002ba8 : + 80002ba8: fff00093 li ra,-1 + 80002bac: 00700113 li sp,7 + 80002bb0: 0020df33 srl t5,ra,sp + 80002bb4: 00100e9b addiw t4,zero,1 + 80002bb8: 039e9e93 slli t4,t4,0x39 + 80002bbc: fffe8e93 addi t4,t4,-1 + 80002bc0: 00900193 li gp,9 + 80002bc4: 51df1663 bne t5,t4,800030d0 + +0000000080002bc8 : + 80002bc8: fff00093 li ra,-1 + 80002bcc: 00e00113 li sp,14 + 80002bd0: 0020df33 srl t5,ra,sp + 80002bd4: 00100e9b addiw t4,zero,1 + 80002bd8: 032e9e93 slli t4,t4,0x32 + 80002bdc: fffe8e93 addi t4,t4,-1 + 80002be0: 00a00193 li gp,10 + 80002be4: 4fdf1663 bne t5,t4,800030d0 + +0000000080002be8 : + 80002be8: fff00093 li ra,-1 + 80002bec: 01f00113 li sp,31 + 80002bf0: 0020df33 srl t5,ra,sp + 80002bf4: 00100e9b addiw t4,zero,1 + 80002bf8: 021e9e93 slli t4,t4,0x21 + 80002bfc: fffe8e93 addi t4,t4,-1 + 80002c00: 00b00193 li gp,11 + 80002c04: 4ddf1663 bne t5,t4,800030d0 + +0000000080002c08 : + 80002c08: 212120b7 lui ra,0x21212 + 80002c0c: 1210809b addiw ra,ra,289 + 80002c10: 00000113 li sp,0 + 80002c14: 0020df33 srl t5,ra,sp + 80002c18: 21212eb7 lui t4,0x21212 + 80002c1c: 121e8e9b addiw t4,t4,289 + 80002c20: 00c00193 li gp,12 + 80002c24: 4bdf1663 bne t5,t4,800030d0 + +0000000080002c28 : + 80002c28: 212120b7 lui ra,0x21212 + 80002c2c: 1210809b addiw ra,ra,289 + 80002c30: 00100113 li sp,1 + 80002c34: 0020df33 srl t5,ra,sp + 80002c38: 10909eb7 lui t4,0x10909 + 80002c3c: 090e8e9b addiw t4,t4,144 + 80002c40: 00d00193 li gp,13 + 80002c44: 49df1663 bne t5,t4,800030d0 + +0000000080002c48 : + 80002c48: 212120b7 lui ra,0x21212 + 80002c4c: 1210809b addiw ra,ra,289 + 80002c50: 00700113 li sp,7 + 80002c54: 0020df33 srl t5,ra,sp + 80002c58: 00424eb7 lui t4,0x424 + 80002c5c: 242e8e9b addiw t4,t4,578 + 80002c60: 00e00193 li gp,14 + 80002c64: 47df1663 bne t5,t4,800030d0 + +0000000080002c68 : + 80002c68: 212120b7 lui ra,0x21212 + 80002c6c: 1210809b addiw ra,ra,289 + 80002c70: 00e00113 li sp,14 + 80002c74: 0020df33 srl t5,ra,sp + 80002c78: 00008eb7 lui t4,0x8 + 80002c7c: 484e8e9b addiw t4,t4,1156 + 80002c80: 00f00193 li gp,15 + 80002c84: 45df1663 bne t5,t4,800030d0 + +0000000080002c88 : + 80002c88: 212120b7 lui ra,0x21212 + 80002c8c: 1210809b addiw ra,ra,289 + 80002c90: 01f00113 li sp,31 + 80002c94: 0020df33 srl t5,ra,sp + 80002c98: 00000e93 li t4,0 + 80002c9c: 01000193 li gp,16 + 80002ca0: 43df1863 bne t5,t4,800030d0 + +0000000080002ca4 : + 80002ca4: 212120b7 lui ra,0x21212 + 80002ca8: 1210809b addiw ra,ra,289 + 80002cac: fc000113 li sp,-64 + 80002cb0: 0020df33 srl t5,ra,sp + 80002cb4: 21212eb7 lui t4,0x21212 + 80002cb8: 121e8e9b addiw t4,t4,289 + 80002cbc: 01100193 li gp,17 + 80002cc0: 41df1863 bne t5,t4,800030d0 + +0000000080002cc4 : + 80002cc4: 212120b7 lui ra,0x21212 + 80002cc8: 1210809b addiw ra,ra,289 + 80002ccc: fc100113 li sp,-63 + 80002cd0: 0020df33 srl t5,ra,sp + 80002cd4: 10909eb7 lui t4,0x10909 + 80002cd8: 090e8e9b addiw t4,t4,144 + 80002cdc: 01200193 li gp,18 + 80002ce0: 3fdf1863 bne t5,t4,800030d0 + +0000000080002ce4 : + 80002ce4: 212120b7 lui ra,0x21212 + 80002ce8: 1210809b addiw ra,ra,289 + 80002cec: fc700113 li sp,-57 + 80002cf0: 0020df33 srl t5,ra,sp + 80002cf4: 00424eb7 lui t4,0x424 + 80002cf8: 242e8e9b addiw t4,t4,578 + 80002cfc: 01300193 li gp,19 + 80002d00: 3ddf1863 bne t5,t4,800030d0 + +0000000080002d04 : + 80002d04: 212120b7 lui ra,0x21212 + 80002d08: 1210809b addiw ra,ra,289 + 80002d0c: fce00113 li sp,-50 + 80002d10: 0020df33 srl t5,ra,sp + 80002d14: 00008eb7 lui t4,0x8 + 80002d18: 484e8e9b addiw t4,t4,1156 + 80002d1c: 01400193 li gp,20 + 80002d20: 3bdf1863 bne t5,t4,800030d0 + +0000000080002d24 : + 80002d24: 212120b7 lui ra,0x21212 + 80002d28: 1210809b addiw ra,ra,289 + 80002d2c: fff00113 li sp,-1 + 80002d30: 0020df33 srl t5,ra,sp + 80002d34: 00000e93 li t4,0 + 80002d38: 01500193 li gp,21 + 80002d3c: 39df1a63 bne t5,t4,800030d0 + +0000000080002d40 : + 80002d40: 0010009b addiw ra,zero,1 + 80002d44: 01f09093 slli ra,ra,0x1f + 80002d48: 00700113 li sp,7 + 80002d4c: 0020d0b3 srl ra,ra,sp + 80002d50: 01000eb7 lui t4,0x1000 + 80002d54: 01600193 li gp,22 + 80002d58: 37d09c63 bne ra,t4,800030d0 + +0000000080002d5c : + 80002d5c: 0010009b addiw ra,zero,1 + 80002d60: 01f09093 slli ra,ra,0x1f + 80002d64: 00e00113 li sp,14 + 80002d68: 0020d133 srl sp,ra,sp + 80002d6c: 00020eb7 lui t4,0x20 + 80002d70: 01700193 li gp,23 + 80002d74: 35d11e63 bne sp,t4,800030d0 + +0000000080002d78 : + 80002d78: 00700093 li ra,7 + 80002d7c: 0010d0b3 srl ra,ra,ra + 80002d80: 00000e93 li t4,0 + 80002d84: 01800193 li gp,24 + 80002d88: 35d09463 bne ra,t4,800030d0 + +0000000080002d8c : + 80002d8c: 00000213 li tp,0 + 80002d90: 0010009b addiw ra,zero,1 + 80002d94: 01f09093 slli ra,ra,0x1f + 80002d98: 00700113 li sp,7 + 80002d9c: 0020df33 srl t5,ra,sp + 80002da0: 000f0313 mv t1,t5 + 80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002da8: 00200293 li t0,2 + 80002dac: fe5212e3 bne tp,t0,80002d90 + 80002db0: 01000eb7 lui t4,0x1000 + 80002db4: 01900193 li gp,25 + 80002db8: 31d31c63 bne t1,t4,800030d0 + +0000000080002dbc : + 80002dbc: 00000213 li tp,0 + 80002dc0: 0010009b addiw ra,zero,1 + 80002dc4: 01f09093 slli ra,ra,0x1f + 80002dc8: 00e00113 li sp,14 + 80002dcc: 0020df33 srl t5,ra,sp + 80002dd0: 00000013 nop + 80002dd4: 000f0313 mv t1,t5 + 80002dd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ddc: 00200293 li t0,2 + 80002de0: fe5210e3 bne tp,t0,80002dc0 + 80002de4: 00020eb7 lui t4,0x20 + 80002de8: 01a00193 li gp,26 + 80002dec: 2fd31263 bne t1,t4,800030d0 + +0000000080002df0 : + 80002df0: 00000213 li tp,0 + 80002df4: 0010009b addiw ra,zero,1 + 80002df8: 01f09093 slli ra,ra,0x1f + 80002dfc: 01f00113 li sp,31 + 80002e00: 0020df33 srl t5,ra,sp + 80002e04: 00000013 nop + 80002e08: 00000013 nop + 80002e0c: 000f0313 mv t1,t5 + 80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e14: 00200293 li t0,2 + 80002e18: fc521ee3 bne tp,t0,80002df4 + 80002e1c: 00100e93 li t4,1 + 80002e20: 01b00193 li gp,27 + 80002e24: 2bd31663 bne t1,t4,800030d0 + +0000000080002e28 : + 80002e28: 00000213 li tp,0 + 80002e2c: 0010009b addiw ra,zero,1 + 80002e30: 01f09093 slli ra,ra,0x1f + 80002e34: 00700113 li sp,7 + 80002e38: 0020df33 srl t5,ra,sp + 80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e40: 00200293 li t0,2 + 80002e44: fe5214e3 bne tp,t0,80002e2c + 80002e48: 01000eb7 lui t4,0x1000 + 80002e4c: 01c00193 li gp,28 + 80002e50: 29df1063 bne t5,t4,800030d0 + +0000000080002e54 : + 80002e54: 00000213 li tp,0 + 80002e58: 0010009b addiw ra,zero,1 + 80002e5c: 01f09093 slli ra,ra,0x1f + 80002e60: 00e00113 li sp,14 + 80002e64: 00000013 nop + 80002e68: 0020df33 srl t5,ra,sp + 80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e70: 00200293 li t0,2 + 80002e74: fe5212e3 bne tp,t0,80002e58 + 80002e78: 00020eb7 lui t4,0x20 + 80002e7c: 01d00193 li gp,29 + 80002e80: 25df1863 bne t5,t4,800030d0 + +0000000080002e84 : + 80002e84: 00000213 li tp,0 + 80002e88: 0010009b addiw ra,zero,1 + 80002e8c: 01f09093 slli ra,ra,0x1f + 80002e90: 01f00113 li sp,31 + 80002e94: 00000013 nop + 80002e98: 00000013 nop + 80002e9c: 0020df33 srl t5,ra,sp + 80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea4: 00200293 li t0,2 + 80002ea8: fe5210e3 bne tp,t0,80002e88 + 80002eac: 00100e93 li t4,1 + 80002eb0: 01e00193 li gp,30 + 80002eb4: 21df1e63 bne t5,t4,800030d0 + +0000000080002eb8 : + 80002eb8: 00000213 li tp,0 + 80002ebc: 0010009b addiw ra,zero,1 + 80002ec0: 01f09093 slli ra,ra,0x1f + 80002ec4: 00000013 nop + 80002ec8: 00700113 li sp,7 + 80002ecc: 0020df33 srl t5,ra,sp + 80002ed0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ed4: 00200293 li t0,2 + 80002ed8: fe5212e3 bne tp,t0,80002ebc + 80002edc: 01000eb7 lui t4,0x1000 + 80002ee0: 01f00193 li gp,31 + 80002ee4: 1fdf1663 bne t5,t4,800030d0 + +0000000080002ee8 : + 80002ee8: 00000213 li tp,0 + 80002eec: 0010009b addiw ra,zero,1 + 80002ef0: 01f09093 slli ra,ra,0x1f + 80002ef4: 00000013 nop + 80002ef8: 00e00113 li sp,14 + 80002efc: 00000013 nop + 80002f00: 0020df33 srl t5,ra,sp + 80002f04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f08: 00200293 li t0,2 + 80002f0c: fe5210e3 bne tp,t0,80002eec + 80002f10: 00020eb7 lui t4,0x20 + 80002f14: 02000193 li gp,32 + 80002f18: 1bdf1c63 bne t5,t4,800030d0 + +0000000080002f1c : + 80002f1c: 00000213 li tp,0 + 80002f20: 0010009b addiw ra,zero,1 + 80002f24: 01f09093 slli ra,ra,0x1f + 80002f28: 00000013 nop + 80002f2c: 00000013 nop + 80002f30: 01f00113 li sp,31 + 80002f34: 0020df33 srl t5,ra,sp + 80002f38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f3c: 00200293 li t0,2 + 80002f40: fe5210e3 bne tp,t0,80002f20 + 80002f44: 00100e93 li t4,1 + 80002f48: 02100193 li gp,33 + 80002f4c: 19df1263 bne t5,t4,800030d0 + +0000000080002f50 : + 80002f50: 00000213 li tp,0 + 80002f54: 00700113 li sp,7 + 80002f58: 0010009b addiw ra,zero,1 + 80002f5c: 01f09093 slli ra,ra,0x1f + 80002f60: 0020df33 srl t5,ra,sp + 80002f64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f68: 00200293 li t0,2 + 80002f6c: fe5214e3 bne tp,t0,80002f54 + 80002f70: 01000eb7 lui t4,0x1000 + 80002f74: 02200193 li gp,34 + 80002f78: 15df1c63 bne t5,t4,800030d0 + +0000000080002f7c : + 80002f7c: 00000213 li tp,0 + 80002f80: 00e00113 li sp,14 + 80002f84: 0010009b addiw ra,zero,1 + 80002f88: 01f09093 slli ra,ra,0x1f + 80002f8c: 00000013 nop + 80002f90: 0020df33 srl t5,ra,sp + 80002f94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f98: 00200293 li t0,2 + 80002f9c: fe5212e3 bne tp,t0,80002f80 + 80002fa0: 00020eb7 lui t4,0x20 + 80002fa4: 02300193 li gp,35 + 80002fa8: 13df1463 bne t5,t4,800030d0 + +0000000080002fac : + 80002fac: 00000213 li tp,0 + 80002fb0: 01f00113 li sp,31 + 80002fb4: 0010009b addiw ra,zero,1 + 80002fb8: 01f09093 slli ra,ra,0x1f + 80002fbc: 00000013 nop + 80002fc0: 00000013 nop + 80002fc4: 0020df33 srl t5,ra,sp + 80002fc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fcc: 00200293 li t0,2 + 80002fd0: fe5210e3 bne tp,t0,80002fb0 + 80002fd4: 00100e93 li t4,1 + 80002fd8: 02400193 li gp,36 + 80002fdc: 0fdf1a63 bne t5,t4,800030d0 + +0000000080002fe0 : + 80002fe0: 00000213 li tp,0 + 80002fe4: 00700113 li sp,7 + 80002fe8: 00000013 nop + 80002fec: 0010009b addiw ra,zero,1 + 80002ff0: 01f09093 slli ra,ra,0x1f + 80002ff4: 0020df33 srl t5,ra,sp + 80002ff8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ffc: 00200293 li t0,2 + 80003000: fe5212e3 bne tp,t0,80002fe4 + 80003004: 01000eb7 lui t4,0x1000 + 80003008: 02500193 li gp,37 + 8000300c: 0ddf1263 bne t5,t4,800030d0 + +0000000080003010 : + 80003010: 00000213 li tp,0 + 80003014: 00e00113 li sp,14 + 80003018: 00000013 nop + 8000301c: 0010009b addiw ra,zero,1 + 80003020: 01f09093 slli ra,ra,0x1f + 80003024: 00000013 nop + 80003028: 0020df33 srl t5,ra,sp + 8000302c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003030: 00200293 li t0,2 + 80003034: fe5210e3 bne tp,t0,80003014 + 80003038: 00020eb7 lui t4,0x20 + 8000303c: 02600193 li gp,38 + 80003040: 09df1863 bne t5,t4,800030d0 + +0000000080003044 : + 80003044: 00000213 li tp,0 + 80003048: 01f00113 li sp,31 + 8000304c: 00000013 nop + 80003050: 00000013 nop + 80003054: 0010009b addiw ra,zero,1 + 80003058: 01f09093 slli ra,ra,0x1f + 8000305c: 0020df33 srl t5,ra,sp + 80003060: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80003064: 00200293 li t0,2 + 80003068: fe5210e3 bne tp,t0,80003048 + 8000306c: 00100e93 li t4,1 + 80003070: 02700193 li gp,39 + 80003074: 05df1e63 bne t5,t4,800030d0 + +0000000080003078 : + 80003078: 00f00093 li ra,15 + 8000307c: 00105133 srl sp,zero,ra + 80003080: 00000e93 li t4,0 + 80003084: 02800193 li gp,40 + 80003088: 05d11463 bne sp,t4,800030d0 + +000000008000308c : + 8000308c: 02000093 li ra,32 + 80003090: 0000d133 srl sp,ra,zero + 80003094: 02000e93 li t4,32 + 80003098: 02900193 li gp,41 + 8000309c: 03d11a63 bne sp,t4,800030d0 + +00000000800030a0 : + 800030a0: 000050b3 srl ra,zero,zero + 800030a4: 00000e93 li t4,0 + 800030a8: 02a00193 li gp,42 + 800030ac: 03d09263 bne ra,t4,800030d0 + +00000000800030b0 : + 800030b0: 40000093 li ra,1024 + 800030b4: 00001137 lui sp,0x1 + 800030b8: 8001011b addiw sp,sp,-2048 + 800030bc: 0020d033 srl zero,ra,sp + 800030c0: 00000e93 li t4,0 + 800030c4: 02b00193 li gp,43 + 800030c8: 01d01463 bne zero,t4,800030d0 + 800030cc: 00301a63 bne zero,gp,800030e0 + +00000000800030d0 : + 800030d0: 00119513 slli a0,gp,0x1 + 800030d4: 00050063 beqz a0,800030d4 + 800030d8: 00156513 ori a0,a0,1 + 800030dc: 00000073 ecall + +00000000800030e0 : + 800030e0: 00100513 li a0,1 + 800030e4: 00000073 ecall + 800030e8: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-srli b/Tests/isa/rv64ui-v-srli new file mode 100644 index 0000000..c29652b Binary files /dev/null and b/Tests/isa/rv64ui-v-srli differ diff --git a/Tests/isa/rv64ui-v-srli.dump b/Tests/isa/rv64ui-v-srli.dump new file mode 100644 index 0000000..d900518 --- /dev/null +++ b/Tests/isa/rv64ui-v-srli.dump @@ -0,0 +1,1077 @@ + +rv64ui-v-srli: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 98868693 addi a3,a3,-1656 # 80002de0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 9bc60613 addi a2,a2,-1604 # 80002e70 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 98460613 addi a2,a2,-1660 # 80002e88 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 8d468693 addi a3,a3,-1836 # 80002e28 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 8f068693 addi a3,a3,-1808 # 80002f60 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 87060613 addi a2,a2,-1936 # 80002f38 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 7a468693 addi a3,a3,1956 # 80002f90 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 6c468693 addi a3,a3,1732 # 80002f00 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 65468693 addi a3,a3,1620 # 80002ec8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02e00793 li a5,46 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0d3727b7 lui a5,0xd372 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 50c78793 addi a5,a5,1292 # d37250c <_start-0x72c8daf4> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 800000b7 lui ra,0x80000 + 80002acc: 0000df13 srli t5,ra,0x0 + 80002ad0: 80000eb7 lui t4,0x80000 + 80002ad4: 00200193 li gp,2 + 80002ad8: 2fdf1663 bne t5,t4,80002dc4 + +0000000080002adc : + 80002adc: 800000b7 lui ra,0x80000 + 80002ae0: 0010df13 srli t5,ra,0x1 + 80002ae4: 00100e9b addiw t4,zero,1 + 80002ae8: 021e9e93 slli t4,t4,0x21 + 80002aec: fffe8e93 addi t4,t4,-1 # ffffffff7fffffff <_end+0xfffffffeffff880f> + 80002af0: 01ee9e93 slli t4,t4,0x1e + 80002af4: 00300193 li gp,3 + 80002af8: 2ddf1663 bne t5,t4,80002dc4 + +0000000080002afc : + 80002afc: 800000b7 lui ra,0x80000 + 80002b00: 0070df13 srli t5,ra,0x7 + 80002b04: 00100e9b addiw t4,zero,1 + 80002b08: 021e9e93 slli t4,t4,0x21 + 80002b0c: fffe8e93 addi t4,t4,-1 + 80002b10: 018e9e93 slli t4,t4,0x18 + 80002b14: 00400193 li gp,4 + 80002b18: 2bdf1663 bne t5,t4,80002dc4 + +0000000080002b1c : + 80002b1c: 800000b7 lui ra,0x80000 + 80002b20: 00e0df13 srli t5,ra,0xe + 80002b24: 00100e9b addiw t4,zero,1 + 80002b28: 021e9e93 slli t4,t4,0x21 + 80002b2c: fffe8e93 addi t4,t4,-1 + 80002b30: 011e9e93 slli t4,t4,0x11 + 80002b34: 00500193 li gp,5 + 80002b38: 29df1663 bne t5,t4,80002dc4 + +0000000080002b3c : + 80002b3c: 800000b7 lui ra,0x80000 + 80002b40: 0010809b addiw ra,ra,1 + 80002b44: 01f0df13 srli t5,ra,0x1f + 80002b48: 00100e9b addiw t4,zero,1 + 80002b4c: 021e9e93 slli t4,t4,0x21 + 80002b50: fffe8e93 addi t4,t4,-1 + 80002b54: 00600193 li gp,6 + 80002b58: 27df1663 bne t5,t4,80002dc4 + +0000000080002b5c : + 80002b5c: fff00093 li ra,-1 + 80002b60: 0000df13 srli t5,ra,0x0 + 80002b64: fff00e93 li t4,-1 + 80002b68: 00700193 li gp,7 + 80002b6c: 25df1c63 bne t5,t4,80002dc4 + +0000000080002b70 : + 80002b70: fff00093 li ra,-1 + 80002b74: 0010df13 srli t5,ra,0x1 + 80002b78: fff00e9b addiw t4,zero,-1 + 80002b7c: 03fe9e93 slli t4,t4,0x3f + 80002b80: fffe8e93 addi t4,t4,-1 + 80002b84: 00800193 li gp,8 + 80002b88: 23df1e63 bne t5,t4,80002dc4 + +0000000080002b8c : + 80002b8c: fff00093 li ra,-1 + 80002b90: 0070df13 srli t5,ra,0x7 + 80002b94: 00100e9b addiw t4,zero,1 + 80002b98: 039e9e93 slli t4,t4,0x39 + 80002b9c: fffe8e93 addi t4,t4,-1 + 80002ba0: 00900193 li gp,9 + 80002ba4: 23df1063 bne t5,t4,80002dc4 + +0000000080002ba8 : + 80002ba8: fff00093 li ra,-1 + 80002bac: 00e0df13 srli t5,ra,0xe + 80002bb0: 00100e9b addiw t4,zero,1 + 80002bb4: 032e9e93 slli t4,t4,0x32 + 80002bb8: fffe8e93 addi t4,t4,-1 + 80002bbc: 00a00193 li gp,10 + 80002bc0: 21df1263 bne t5,t4,80002dc4 + +0000000080002bc4 : + 80002bc4: fff00093 li ra,-1 + 80002bc8: 01f0df13 srli t5,ra,0x1f + 80002bcc: 00100e9b addiw t4,zero,1 + 80002bd0: 021e9e93 slli t4,t4,0x21 + 80002bd4: fffe8e93 addi t4,t4,-1 + 80002bd8: 00b00193 li gp,11 + 80002bdc: 1fdf1463 bne t5,t4,80002dc4 + +0000000080002be0 : + 80002be0: 212120b7 lui ra,0x21212 + 80002be4: 1210809b addiw ra,ra,289 + 80002be8: 0000df13 srli t5,ra,0x0 + 80002bec: 21212eb7 lui t4,0x21212 + 80002bf0: 121e8e9b addiw t4,t4,289 + 80002bf4: 00c00193 li gp,12 + 80002bf8: 1ddf1663 bne t5,t4,80002dc4 + +0000000080002bfc : + 80002bfc: 212120b7 lui ra,0x21212 + 80002c00: 1210809b addiw ra,ra,289 + 80002c04: 0010df13 srli t5,ra,0x1 + 80002c08: 10909eb7 lui t4,0x10909 + 80002c0c: 090e8e9b addiw t4,t4,144 + 80002c10: 00d00193 li gp,13 + 80002c14: 1bdf1863 bne t5,t4,80002dc4 + +0000000080002c18 : + 80002c18: 212120b7 lui ra,0x21212 + 80002c1c: 1210809b addiw ra,ra,289 + 80002c20: 0070df13 srli t5,ra,0x7 + 80002c24: 00424eb7 lui t4,0x424 + 80002c28: 242e8e9b addiw t4,t4,578 + 80002c2c: 00e00193 li gp,14 + 80002c30: 19df1a63 bne t5,t4,80002dc4 + +0000000080002c34 : + 80002c34: 212120b7 lui ra,0x21212 + 80002c38: 1210809b addiw ra,ra,289 + 80002c3c: 00e0df13 srli t5,ra,0xe + 80002c40: 00008eb7 lui t4,0x8 + 80002c44: 484e8e9b addiw t4,t4,1156 + 80002c48: 00f00193 li gp,15 + 80002c4c: 17df1c63 bne t5,t4,80002dc4 + +0000000080002c50 : + 80002c50: 212120b7 lui ra,0x21212 + 80002c54: 1210809b addiw ra,ra,289 + 80002c58: 01f0df13 srli t5,ra,0x1f + 80002c5c: 00000e93 li t4,0 + 80002c60: 01000193 li gp,16 + 80002c64: 17df1063 bne t5,t4,80002dc4 + +0000000080002c68 : + 80002c68: 0010009b addiw ra,zero,1 + 80002c6c: 01f09093 slli ra,ra,0x1f + 80002c70: 0070d093 srli ra,ra,0x7 + 80002c74: 01000eb7 lui t4,0x1000 + 80002c78: 01100193 li gp,17 + 80002c7c: 15d09463 bne ra,t4,80002dc4 + +0000000080002c80 : + 80002c80: 00000213 li tp,0 + 80002c84: 0010009b addiw ra,zero,1 + 80002c88: 01f09093 slli ra,ra,0x1f + 80002c8c: 0070df13 srli t5,ra,0x7 + 80002c90: 000f0313 mv t1,t5 + 80002c94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c98: 00200293 li t0,2 + 80002c9c: fe5214e3 bne tp,t0,80002c84 + 80002ca0: 01000eb7 lui t4,0x1000 + 80002ca4: 01200193 li gp,18 + 80002ca8: 11d31e63 bne t1,t4,80002dc4 + +0000000080002cac : + 80002cac: 00000213 li tp,0 + 80002cb0: 0010009b addiw ra,zero,1 + 80002cb4: 01f09093 slli ra,ra,0x1f + 80002cb8: 00e0df13 srli t5,ra,0xe + 80002cbc: 00000013 nop + 80002cc0: 000f0313 mv t1,t5 + 80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cc8: 00200293 li t0,2 + 80002ccc: fe5212e3 bne tp,t0,80002cb0 + 80002cd0: 00020eb7 lui t4,0x20 + 80002cd4: 01300193 li gp,19 + 80002cd8: 0fd31663 bne t1,t4,80002dc4 + +0000000080002cdc : + 80002cdc: 00000213 li tp,0 + 80002ce0: 0010009b addiw ra,zero,1 + 80002ce4: 01f09093 slli ra,ra,0x1f + 80002ce8: 00108093 addi ra,ra,1 # 21212001 <_start-0x5ededfff> + 80002cec: 01f0df13 srli t5,ra,0x1f + 80002cf0: 00000013 nop + 80002cf4: 00000013 nop + 80002cf8: 000f0313 mv t1,t5 + 80002cfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d00: 00200293 li t0,2 + 80002d04: fc521ee3 bne tp,t0,80002ce0 + 80002d08: 00100e93 li t4,1 + 80002d0c: 01400193 li gp,20 + 80002d10: 0bd31a63 bne t1,t4,80002dc4 + +0000000080002d14 : + 80002d14: 00000213 li tp,0 + 80002d18: 0010009b addiw ra,zero,1 + 80002d1c: 01f09093 slli ra,ra,0x1f + 80002d20: 0070df13 srli t5,ra,0x7 + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fe5216e3 bne tp,t0,80002d18 + 80002d30: 01000eb7 lui t4,0x1000 + 80002d34: 01500193 li gp,21 + 80002d38: 09df1663 bne t5,t4,80002dc4 + +0000000080002d3c : + 80002d3c: 00000213 li tp,0 + 80002d40: 0010009b addiw ra,zero,1 + 80002d44: 01f09093 slli ra,ra,0x1f + 80002d48: 00000013 nop + 80002d4c: 00e0df13 srli t5,ra,0xe + 80002d50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d54: 00200293 li t0,2 + 80002d58: fe5214e3 bne tp,t0,80002d40 + 80002d5c: 00020eb7 lui t4,0x20 + 80002d60: 01600193 li gp,22 + 80002d64: 07df1063 bne t5,t4,80002dc4 + +0000000080002d68 : + 80002d68: 00000213 li tp,0 + 80002d6c: 0010009b addiw ra,zero,1 + 80002d70: 01f09093 slli ra,ra,0x1f + 80002d74: 00108093 addi ra,ra,1 + 80002d78: 00000013 nop + 80002d7c: 00000013 nop + 80002d80: 01f0df13 srli t5,ra,0x1f + 80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d88: 00200293 li t0,2 + 80002d8c: fe5210e3 bne tp,t0,80002d6c + 80002d90: 00100e93 li t4,1 + 80002d94: 01700193 li gp,23 + 80002d98: 03df1663 bne t5,t4,80002dc4 + +0000000080002d9c : + 80002d9c: 00405093 srli ra,zero,0x4 + 80002da0: 00000e93 li t4,0 + 80002da4: 01800193 li gp,24 + 80002da8: 01d09e63 bne ra,t4,80002dc4 + +0000000080002dac : + 80002dac: 02100093 li ra,33 + 80002db0: 00a0d013 srli zero,ra,0xa + 80002db4: 00000e93 li t4,0 + 80002db8: 01900193 li gp,25 + 80002dbc: 01d01463 bne zero,t4,80002dc4 + 80002dc0: 00301a63 bne zero,gp,80002dd4 + +0000000080002dc4 : + 80002dc4: 00119513 slli a0,gp,0x1 + 80002dc8: 00050063 beqz a0,80002dc8 + 80002dcc: 00156513 ori a0,a0,1 + 80002dd0: 00000073 ecall + +0000000080002dd4 : + 80002dd4: 00100513 li a0,1 + 80002dd8: 00000073 ecall + 80002ddc: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-srliw b/Tests/isa/rv64ui-v-srliw new file mode 100644 index 0000000..62ef372 Binary files /dev/null and b/Tests/isa/rv64ui-v-srliw differ diff --git a/Tests/isa/rv64ui-v-srliw.dump b/Tests/isa/rv64ui-v-srliw.dump new file mode 100644 index 0000000..919e1de --- /dev/null +++ b/Tests/isa/rv64ui-v-srliw.dump @@ -0,0 +1,1054 @@ + +rv64ui-v-srliw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 93068693 addi a3,a3,-1744 # 80002d88 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 96460613 addi a2,a2,-1692 # 80002e18 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 92c60613 addi a2,a2,-1748 # 80002e30 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 87c68693 addi a3,a3,-1924 # 80002dd0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 89868693 addi a3,a3,-1896 # 80002f08 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 81860613 addi a2,a2,-2024 # 80002ee0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 74c68693 addi a3,a3,1868 # 80002f38 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 66c68693 addi a3,a3,1644 # 80002ea8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 5fc68693 addi a3,a3,1532 # 80002e70 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02200793 li a5,34 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 029637b7 lui a5,0x2963 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 15178793 addi a5,a5,337 # 2963151 <_start-0x7d69ceaf> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 800000b7 lui ra,0x80000 + 80002acc: 0000df1b srliw t5,ra,0x0 + 80002ad0: 80000eb7 lui t4,0x80000 + 80002ad4: 00200193 li gp,2 + 80002ad8: 29df1863 bne t5,t4,80002d68 + +0000000080002adc : + 80002adc: 800000b7 lui ra,0x80000 + 80002ae0: 0010df1b srliw t5,ra,0x1 + 80002ae4: 40000eb7 lui t4,0x40000 + 80002ae8: 00300193 li gp,3 + 80002aec: 27df1e63 bne t5,t4,80002d68 + +0000000080002af0 : + 80002af0: 800000b7 lui ra,0x80000 + 80002af4: 0070df1b srliw t5,ra,0x7 + 80002af8: 01000eb7 lui t4,0x1000 + 80002afc: 00400193 li gp,4 + 80002b00: 27df1463 bne t5,t4,80002d68 + +0000000080002b04 : + 80002b04: 800000b7 lui ra,0x80000 + 80002b08: 00e0df1b srliw t5,ra,0xe + 80002b0c: 00020eb7 lui t4,0x20 + 80002b10: 00500193 li gp,5 + 80002b14: 25df1a63 bne t5,t4,80002d68 + +0000000080002b18 : + 80002b18: 800000b7 lui ra,0x80000 + 80002b1c: 0010809b addiw ra,ra,1 + 80002b20: 01f0df1b srliw t5,ra,0x1f + 80002b24: 00100e93 li t4,1 + 80002b28: 00600193 li gp,6 + 80002b2c: 23df1e63 bne t5,t4,80002d68 + +0000000080002b30 : + 80002b30: fff00093 li ra,-1 + 80002b34: 0000df1b srliw t5,ra,0x0 + 80002b38: fff00e93 li t4,-1 + 80002b3c: 00700193 li gp,7 + 80002b40: 23df1463 bne t5,t4,80002d68 + +0000000080002b44 : + 80002b44: fff00093 li ra,-1 + 80002b48: 0010df1b srliw t5,ra,0x1 + 80002b4c: 80000eb7 lui t4,0x80000 + 80002b50: fffe8e9b addiw t4,t4,-1 + 80002b54: 00800193 li gp,8 + 80002b58: 21df1863 bne t5,t4,80002d68 + +0000000080002b5c : + 80002b5c: fff00093 li ra,-1 + 80002b60: 0070df1b srliw t5,ra,0x7 + 80002b64: 02000eb7 lui t4,0x2000 + 80002b68: fffe8e9b addiw t4,t4,-1 + 80002b6c: 00900193 li gp,9 + 80002b70: 1fdf1c63 bne t5,t4,80002d68 + +0000000080002b74 : + 80002b74: fff00093 li ra,-1 + 80002b78: 00e0df1b srliw t5,ra,0xe + 80002b7c: 00040eb7 lui t4,0x40 + 80002b80: fffe8e9b addiw t4,t4,-1 + 80002b84: 00a00193 li gp,10 + 80002b88: 1fdf1063 bne t5,t4,80002d68 + +0000000080002b8c : + 80002b8c: fff00093 li ra,-1 + 80002b90: 01f0df1b srliw t5,ra,0x1f + 80002b94: 00100e93 li t4,1 + 80002b98: 00b00193 li gp,11 + 80002b9c: 1ddf1663 bne t5,t4,80002d68 + +0000000080002ba0 : + 80002ba0: 212120b7 lui ra,0x21212 + 80002ba4: 1210809b addiw ra,ra,289 + 80002ba8: 0000df1b srliw t5,ra,0x0 + 80002bac: 21212eb7 lui t4,0x21212 + 80002bb0: 121e8e9b addiw t4,t4,289 + 80002bb4: 00c00193 li gp,12 + 80002bb8: 1bdf1863 bne t5,t4,80002d68 + +0000000080002bbc : + 80002bbc: 212120b7 lui ra,0x21212 + 80002bc0: 1210809b addiw ra,ra,289 + 80002bc4: 0010df1b srliw t5,ra,0x1 + 80002bc8: 10909eb7 lui t4,0x10909 + 80002bcc: 090e8e9b addiw t4,t4,144 + 80002bd0: 00d00193 li gp,13 + 80002bd4: 19df1a63 bne t5,t4,80002d68 + +0000000080002bd8 : + 80002bd8: 212120b7 lui ra,0x21212 + 80002bdc: 1210809b addiw ra,ra,289 + 80002be0: 0070df1b srliw t5,ra,0x7 + 80002be4: 00424eb7 lui t4,0x424 + 80002be8: 242e8e9b addiw t4,t4,578 + 80002bec: 00e00193 li gp,14 + 80002bf0: 17df1c63 bne t5,t4,80002d68 + +0000000080002bf4 : + 80002bf4: 212120b7 lui ra,0x21212 + 80002bf8: 1210809b addiw ra,ra,289 + 80002bfc: 00e0df1b srliw t5,ra,0xe + 80002c00: 00008eb7 lui t4,0x8 + 80002c04: 484e8e9b addiw t4,t4,1156 + 80002c08: 00f00193 li gp,15 + 80002c0c: 15df1e63 bne t5,t4,80002d68 + +0000000080002c10 : + 80002c10: 212120b7 lui ra,0x21212 + 80002c14: 1210809b addiw ra,ra,289 + 80002c18: 01f0df1b srliw t5,ra,0x1f + 80002c1c: 00000e93 li t4,0 + 80002c20: 01000193 li gp,16 + 80002c24: 15df1263 bne t5,t4,80002d68 + +0000000080002c28 : + 80002c28: 800000b7 lui ra,0x80000 + 80002c2c: 0070d09b srliw ra,ra,0x7 + 80002c30: 01000eb7 lui t4,0x1000 + 80002c34: 01100193 li gp,17 + 80002c38: 13d09863 bne ra,t4,80002d68 + +0000000080002c3c : + 80002c3c: 00000213 li tp,0 + 80002c40: 800000b7 lui ra,0x80000 + 80002c44: 0070df1b srliw t5,ra,0x7 + 80002c48: 000f0313 mv t1,t5 + 80002c4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c50: 00200293 li t0,2 + 80002c54: fe5216e3 bne tp,t0,80002c40 + 80002c58: 01000eb7 lui t4,0x1000 + 80002c5c: 01200193 li gp,18 + 80002c60: 11d31463 bne t1,t4,80002d68 + +0000000080002c64 : + 80002c64: 00000213 li tp,0 + 80002c68: 800000b7 lui ra,0x80000 + 80002c6c: 00e0df1b srliw t5,ra,0xe + 80002c70: 00000013 nop + 80002c74: 000f0313 mv t1,t5 + 80002c78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c7c: 00200293 li t0,2 + 80002c80: fe5214e3 bne tp,t0,80002c68 + 80002c84: 00020eb7 lui t4,0x20 + 80002c88: 01300193 li gp,19 + 80002c8c: 0dd31e63 bne t1,t4,80002d68 + +0000000080002c90 : + 80002c90: 00000213 li tp,0 + 80002c94: 800000b7 lui ra,0x80000 + 80002c98: 0010809b addiw ra,ra,1 + 80002c9c: 01f0df1b srliw t5,ra,0x1f + 80002ca0: 00000013 nop + 80002ca4: 00000013 nop + 80002ca8: 000f0313 mv t1,t5 + 80002cac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cb0: 00200293 li t0,2 + 80002cb4: fe5210e3 bne tp,t0,80002c94 + 80002cb8: 00100e93 li t4,1 + 80002cbc: 01400193 li gp,20 + 80002cc0: 0bd31463 bne t1,t4,80002d68 + +0000000080002cc4 : + 80002cc4: 00000213 li tp,0 + 80002cc8: 800000b7 lui ra,0x80000 + 80002ccc: 0070df1b srliw t5,ra,0x7 + 80002cd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd4: 00200293 li t0,2 + 80002cd8: fe5218e3 bne tp,t0,80002cc8 + 80002cdc: 01000eb7 lui t4,0x1000 + 80002ce0: 01500193 li gp,21 + 80002ce4: 09df1263 bne t5,t4,80002d68 + +0000000080002ce8 : + 80002ce8: 00000213 li tp,0 + 80002cec: 800000b7 lui ra,0x80000 + 80002cf0: 00000013 nop + 80002cf4: 00e0df1b srliw t5,ra,0xe + 80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cfc: 00200293 li t0,2 + 80002d00: fe5216e3 bne tp,t0,80002cec + 80002d04: 00020eb7 lui t4,0x20 + 80002d08: 01600193 li gp,22 + 80002d0c: 05df1e63 bne t5,t4,80002d68 + +0000000080002d10 : + 80002d10: 00000213 li tp,0 + 80002d14: 800000b7 lui ra,0x80000 + 80002d18: 0010809b addiw ra,ra,1 + 80002d1c: 00000013 nop + 80002d20: 00000013 nop + 80002d24: 01f0df1b srliw t5,ra,0x1f + 80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d2c: 00200293 li t0,2 + 80002d30: fe5212e3 bne tp,t0,80002d14 + 80002d34: 00100e93 li t4,1 + 80002d38: 01700193 li gp,23 + 80002d3c: 03df1663 bne t5,t4,80002d68 + +0000000080002d40 : + 80002d40: 01f0509b srliw ra,zero,0x1f + 80002d44: 00000e93 li t4,0 + 80002d48: 01800193 li gp,24 + 80002d4c: 01d09e63 bne ra,t4,80002d68 + +0000000080002d50 : + 80002d50: 01f00093 li ra,31 + 80002d54: 01c0d01b srliw zero,ra,0x1c + 80002d58: 00000e93 li t4,0 + 80002d5c: 01900193 li gp,25 + 80002d60: 01d01463 bne zero,t4,80002d68 + 80002d64: 00301a63 bne zero,gp,80002d78 + +0000000080002d68 : + 80002d68: 00119513 slli a0,gp,0x1 + 80002d6c: 00050063 beqz a0,80002d6c + 80002d70: 00156513 ori a0,a0,1 + 80002d74: 00000073 ecall + +0000000080002d78 : + 80002d78: 00100513 li a0,1 + 80002d7c: 00000073 ecall + 80002d80: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-srlw b/Tests/isa/rv64ui-v-srlw new file mode 100644 index 0000000..10ef0f5 Binary files /dev/null and b/Tests/isa/rv64ui-v-srlw differ diff --git a/Tests/isa/rv64ui-v-srlw.dump b/Tests/isa/rv64ui-v-srlw.dump new file mode 100644 index 0000000..2cbf750 --- /dev/null +++ b/Tests/isa/rv64ui-v-srlw.dump @@ -0,0 +1,1275 @@ + +rv64ui-v-srlw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: c1068693 addi a3,a3,-1008 # 80003068 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: c4460613 addi a2,a2,-956 # 800030f8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: c0c60613 addi a2,a2,-1012 # 80003110 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: b5c68693 addi a3,a3,-1188 # 800030b0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: b7868693 addi a3,a3,-1160 # 800031e8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: af860613 addi a2,a2,-1288 # 800031c0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: a2c68693 addi a3,a3,-1492 # 80003218 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 94c68693 addi a3,a3,-1716 # 80003188 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 8dc68693 addi a3,a3,-1828 # 80003150 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 00800793 li a5,8 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 069877b7 lui a5,0x6987 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: d1f78793 addi a5,a5,-737 # 6986d1f <_start-0x796792e1> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 800000b7 lui ra,0x80000 + 80002acc: 00000113 li sp,0 + 80002ad0: 0020df3b srlw t5,ra,sp + 80002ad4: 80000eb7 lui t4,0x80000 + 80002ad8: 00200193 li gp,2 + 80002adc: 57df1863 bne t5,t4,8000304c + +0000000080002ae0 : + 80002ae0: 800000b7 lui ra,0x80000 + 80002ae4: 00100113 li sp,1 + 80002ae8: 0020df3b srlw t5,ra,sp + 80002aec: 40000eb7 lui t4,0x40000 + 80002af0: 00300193 li gp,3 + 80002af4: 55df1c63 bne t5,t4,8000304c + +0000000080002af8 : + 80002af8: 800000b7 lui ra,0x80000 + 80002afc: 00700113 li sp,7 + 80002b00: 0020df3b srlw t5,ra,sp + 80002b04: 01000eb7 lui t4,0x1000 + 80002b08: 00400193 li gp,4 + 80002b0c: 55df1063 bne t5,t4,8000304c + +0000000080002b10 : + 80002b10: 800000b7 lui ra,0x80000 + 80002b14: 00e00113 li sp,14 + 80002b18: 0020df3b srlw t5,ra,sp + 80002b1c: 00020eb7 lui t4,0x20 + 80002b20: 00500193 li gp,5 + 80002b24: 53df1463 bne t5,t4,8000304c + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 0010809b addiw ra,ra,1 + 80002b30: 01f00113 li sp,31 + 80002b34: 0020df3b srlw t5,ra,sp + 80002b38: 00100e93 li t4,1 + 80002b3c: 00600193 li gp,6 + 80002b40: 51df1663 bne t5,t4,8000304c + +0000000080002b44 : + 80002b44: fff00093 li ra,-1 + 80002b48: 00000113 li sp,0 + 80002b4c: 0020df3b srlw t5,ra,sp + 80002b50: fff00e93 li t4,-1 + 80002b54: 00700193 li gp,7 + 80002b58: 4fdf1a63 bne t5,t4,8000304c + +0000000080002b5c : + 80002b5c: fff00093 li ra,-1 + 80002b60: 00100113 li sp,1 + 80002b64: 0020df3b srlw t5,ra,sp + 80002b68: 80000eb7 lui t4,0x80000 + 80002b6c: fffe8e9b addiw t4,t4,-1 + 80002b70: 00800193 li gp,8 + 80002b74: 4ddf1c63 bne t5,t4,8000304c + +0000000080002b78 : + 80002b78: fff00093 li ra,-1 + 80002b7c: 00700113 li sp,7 + 80002b80: 0020df3b srlw t5,ra,sp + 80002b84: 02000eb7 lui t4,0x2000 + 80002b88: fffe8e9b addiw t4,t4,-1 + 80002b8c: 00900193 li gp,9 + 80002b90: 4bdf1e63 bne t5,t4,8000304c + +0000000080002b94 : + 80002b94: fff00093 li ra,-1 + 80002b98: 00e00113 li sp,14 + 80002b9c: 0020df3b srlw t5,ra,sp + 80002ba0: 00040eb7 lui t4,0x40 + 80002ba4: fffe8e9b addiw t4,t4,-1 + 80002ba8: 00a00193 li gp,10 + 80002bac: 4bdf1063 bne t5,t4,8000304c + +0000000080002bb0 : + 80002bb0: fff00093 li ra,-1 + 80002bb4: 01f00113 li sp,31 + 80002bb8: 0020df3b srlw t5,ra,sp + 80002bbc: 00100e93 li t4,1 + 80002bc0: 00b00193 li gp,11 + 80002bc4: 49df1463 bne t5,t4,8000304c + +0000000080002bc8 : + 80002bc8: 212120b7 lui ra,0x21212 + 80002bcc: 1210809b addiw ra,ra,289 + 80002bd0: 00000113 li sp,0 + 80002bd4: 0020df3b srlw t5,ra,sp + 80002bd8: 21212eb7 lui t4,0x21212 + 80002bdc: 121e8e9b addiw t4,t4,289 + 80002be0: 00c00193 li gp,12 + 80002be4: 47df1463 bne t5,t4,8000304c + +0000000080002be8 : + 80002be8: 212120b7 lui ra,0x21212 + 80002bec: 1210809b addiw ra,ra,289 + 80002bf0: 00100113 li sp,1 + 80002bf4: 0020df3b srlw t5,ra,sp + 80002bf8: 10909eb7 lui t4,0x10909 + 80002bfc: 090e8e9b addiw t4,t4,144 + 80002c00: 00d00193 li gp,13 + 80002c04: 45df1463 bne t5,t4,8000304c + +0000000080002c08 : + 80002c08: 212120b7 lui ra,0x21212 + 80002c0c: 1210809b addiw ra,ra,289 + 80002c10: 00700113 li sp,7 + 80002c14: 0020df3b srlw t5,ra,sp + 80002c18: 00424eb7 lui t4,0x424 + 80002c1c: 242e8e9b addiw t4,t4,578 + 80002c20: 00e00193 li gp,14 + 80002c24: 43df1463 bne t5,t4,8000304c + +0000000080002c28 : + 80002c28: 212120b7 lui ra,0x21212 + 80002c2c: 1210809b addiw ra,ra,289 + 80002c30: 00e00113 li sp,14 + 80002c34: 0020df3b srlw t5,ra,sp + 80002c38: 00008eb7 lui t4,0x8 + 80002c3c: 484e8e9b addiw t4,t4,1156 + 80002c40: 00f00193 li gp,15 + 80002c44: 41df1463 bne t5,t4,8000304c + +0000000080002c48 : + 80002c48: 212120b7 lui ra,0x21212 + 80002c4c: 1210809b addiw ra,ra,289 + 80002c50: 01f00113 li sp,31 + 80002c54: 0020df3b srlw t5,ra,sp + 80002c58: 00000e93 li t4,0 + 80002c5c: 01000193 li gp,16 + 80002c60: 3fdf1663 bne t5,t4,8000304c + +0000000080002c64 : + 80002c64: 212120b7 lui ra,0x21212 + 80002c68: 1210809b addiw ra,ra,289 + 80002c6c: fe000113 li sp,-32 + 80002c70: 0020df3b srlw t5,ra,sp + 80002c74: 21212eb7 lui t4,0x21212 + 80002c78: 121e8e9b addiw t4,t4,289 + 80002c7c: 01100193 li gp,17 + 80002c80: 3ddf1663 bne t5,t4,8000304c + +0000000080002c84 : + 80002c84: 212120b7 lui ra,0x21212 + 80002c88: 1210809b addiw ra,ra,289 + 80002c8c: fe100113 li sp,-31 + 80002c90: 0020df3b srlw t5,ra,sp + 80002c94: 10909eb7 lui t4,0x10909 + 80002c98: 090e8e9b addiw t4,t4,144 + 80002c9c: 01200193 li gp,18 + 80002ca0: 3bdf1663 bne t5,t4,8000304c + +0000000080002ca4 : + 80002ca4: 212120b7 lui ra,0x21212 + 80002ca8: 1210809b addiw ra,ra,289 + 80002cac: fe700113 li sp,-25 + 80002cb0: 0020df3b srlw t5,ra,sp + 80002cb4: 00424eb7 lui t4,0x424 + 80002cb8: 242e8e9b addiw t4,t4,578 + 80002cbc: 01300193 li gp,19 + 80002cc0: 39df1663 bne t5,t4,8000304c + +0000000080002cc4 : + 80002cc4: 212120b7 lui ra,0x21212 + 80002cc8: 1210809b addiw ra,ra,289 + 80002ccc: fee00113 li sp,-18 + 80002cd0: 0020df3b srlw t5,ra,sp + 80002cd4: 00008eb7 lui t4,0x8 + 80002cd8: 484e8e9b addiw t4,t4,1156 + 80002cdc: 01400193 li gp,20 + 80002ce0: 37df1663 bne t5,t4,8000304c + +0000000080002ce4 : + 80002ce4: 212120b7 lui ra,0x21212 + 80002ce8: 1210809b addiw ra,ra,289 + 80002cec: fff00113 li sp,-1 + 80002cf0: 0020df3b srlw t5,ra,sp + 80002cf4: 00000e93 li t4,0 + 80002cf8: 01500193 li gp,21 + 80002cfc: 35df1863 bne t5,t4,8000304c + +0000000080002d00 : + 80002d00: 800000b7 lui ra,0x80000 + 80002d04: 00700113 li sp,7 + 80002d08: 0020d0bb srlw ra,ra,sp + 80002d0c: 01000eb7 lui t4,0x1000 + 80002d10: 01600193 li gp,22 + 80002d14: 33d09c63 bne ra,t4,8000304c + +0000000080002d18 : + 80002d18: 800000b7 lui ra,0x80000 + 80002d1c: 00e00113 li sp,14 + 80002d20: 0020d13b srlw sp,ra,sp + 80002d24: 00020eb7 lui t4,0x20 + 80002d28: 01700193 li gp,23 + 80002d2c: 33d11063 bne sp,t4,8000304c + +0000000080002d30 : + 80002d30: 00700093 li ra,7 + 80002d34: 0010d0bb srlw ra,ra,ra + 80002d38: 00000e93 li t4,0 + 80002d3c: 01800193 li gp,24 + 80002d40: 31d09663 bne ra,t4,8000304c + +0000000080002d44 : + 80002d44: 00000213 li tp,0 + 80002d48: 800000b7 lui ra,0x80000 + 80002d4c: 00700113 li sp,7 + 80002d50: 0020df3b srlw t5,ra,sp + 80002d54: 000f0313 mv t1,t5 + 80002d58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d5c: 00200293 li t0,2 + 80002d60: fe5214e3 bne tp,t0,80002d48 + 80002d64: 01000eb7 lui t4,0x1000 + 80002d68: 01900193 li gp,25 + 80002d6c: 2fd31063 bne t1,t4,8000304c + +0000000080002d70 : + 80002d70: 00000213 li tp,0 + 80002d74: 800000b7 lui ra,0x80000 + 80002d78: 00e00113 li sp,14 + 80002d7c: 0020df3b srlw t5,ra,sp + 80002d80: 00000013 nop + 80002d84: 000f0313 mv t1,t5 + 80002d88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d8c: 00200293 li t0,2 + 80002d90: fe5212e3 bne tp,t0,80002d74 + 80002d94: 00020eb7 lui t4,0x20 + 80002d98: 01a00193 li gp,26 + 80002d9c: 2bd31863 bne t1,t4,8000304c + +0000000080002da0 : + 80002da0: 00000213 li tp,0 + 80002da4: 800000b7 lui ra,0x80000 + 80002da8: 01f00113 li sp,31 + 80002dac: 0020df3b srlw t5,ra,sp + 80002db0: 00000013 nop + 80002db4: 00000013 nop + 80002db8: 000f0313 mv t1,t5 + 80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dc0: 00200293 li t0,2 + 80002dc4: fe5210e3 bne tp,t0,80002da4 + 80002dc8: 00100e93 li t4,1 + 80002dcc: 01b00193 li gp,27 + 80002dd0: 27d31e63 bne t1,t4,8000304c + +0000000080002dd4 : + 80002dd4: 00000213 li tp,0 + 80002dd8: 800000b7 lui ra,0x80000 + 80002ddc: 00700113 li sp,7 + 80002de0: 0020df3b srlw t5,ra,sp + 80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de8: 00200293 li t0,2 + 80002dec: fe5216e3 bne tp,t0,80002dd8 + 80002df0: 01000eb7 lui t4,0x1000 + 80002df4: 01c00193 li gp,28 + 80002df8: 25df1a63 bne t5,t4,8000304c + +0000000080002dfc : + 80002dfc: 00000213 li tp,0 + 80002e00: 800000b7 lui ra,0x80000 + 80002e04: 00e00113 li sp,14 + 80002e08: 00000013 nop + 80002e0c: 0020df3b srlw t5,ra,sp + 80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e14: 00200293 li t0,2 + 80002e18: fe5214e3 bne tp,t0,80002e00 + 80002e1c: 00020eb7 lui t4,0x20 + 80002e20: 01d00193 li gp,29 + 80002e24: 23df1463 bne t5,t4,8000304c + +0000000080002e28 : + 80002e28: 00000213 li tp,0 + 80002e2c: 800000b7 lui ra,0x80000 + 80002e30: 01f00113 li sp,31 + 80002e34: 00000013 nop + 80002e38: 00000013 nop + 80002e3c: 0020df3b srlw t5,ra,sp + 80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e44: 00200293 li t0,2 + 80002e48: fe5212e3 bne tp,t0,80002e2c + 80002e4c: 00100e93 li t4,1 + 80002e50: 01e00193 li gp,30 + 80002e54: 1fdf1c63 bne t5,t4,8000304c + +0000000080002e58 : + 80002e58: 00000213 li tp,0 + 80002e5c: 800000b7 lui ra,0x80000 + 80002e60: 00000013 nop + 80002e64: 00700113 li sp,7 + 80002e68: 0020df3b srlw t5,ra,sp + 80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e70: 00200293 li t0,2 + 80002e74: fe5214e3 bne tp,t0,80002e5c + 80002e78: 01000eb7 lui t4,0x1000 + 80002e7c: 01f00193 li gp,31 + 80002e80: 1ddf1663 bne t5,t4,8000304c + +0000000080002e84 : + 80002e84: 00000213 li tp,0 + 80002e88: 800000b7 lui ra,0x80000 + 80002e8c: 00000013 nop + 80002e90: 00e00113 li sp,14 + 80002e94: 00000013 nop + 80002e98: 0020df3b srlw t5,ra,sp + 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea0: 00200293 li t0,2 + 80002ea4: fe5212e3 bne tp,t0,80002e88 + 80002ea8: 00020eb7 lui t4,0x20 + 80002eac: 02000193 li gp,32 + 80002eb0: 19df1e63 bne t5,t4,8000304c + +0000000080002eb4 : + 80002eb4: 00000213 li tp,0 + 80002eb8: 800000b7 lui ra,0x80000 + 80002ebc: 00000013 nop + 80002ec0: 00000013 nop + 80002ec4: 01f00113 li sp,31 + 80002ec8: 0020df3b srlw t5,ra,sp + 80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ed0: 00200293 li t0,2 + 80002ed4: fe5212e3 bne tp,t0,80002eb8 + 80002ed8: 00100e93 li t4,1 + 80002edc: 02100193 li gp,33 + 80002ee0: 17df1663 bne t5,t4,8000304c + +0000000080002ee4 : + 80002ee4: 00000213 li tp,0 + 80002ee8: 00700113 li sp,7 + 80002eec: 800000b7 lui ra,0x80000 + 80002ef0: 0020df3b srlw t5,ra,sp + 80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ef8: 00200293 li t0,2 + 80002efc: fe5216e3 bne tp,t0,80002ee8 + 80002f00: 01000eb7 lui t4,0x1000 + 80002f04: 02200193 li gp,34 + 80002f08: 15df1263 bne t5,t4,8000304c + +0000000080002f0c : + 80002f0c: 00000213 li tp,0 + 80002f10: 00e00113 li sp,14 + 80002f14: 800000b7 lui ra,0x80000 + 80002f18: 00000013 nop + 80002f1c: 0020df3b srlw t5,ra,sp + 80002f20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f24: 00200293 li t0,2 + 80002f28: fe5214e3 bne tp,t0,80002f10 + 80002f2c: 00020eb7 lui t4,0x20 + 80002f30: 02300193 li gp,35 + 80002f34: 11df1c63 bne t5,t4,8000304c + +0000000080002f38 : + 80002f38: 00000213 li tp,0 + 80002f3c: 01f00113 li sp,31 + 80002f40: 800000b7 lui ra,0x80000 + 80002f44: 00000013 nop + 80002f48: 00000013 nop + 80002f4c: 0020df3b srlw t5,ra,sp + 80002f50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f54: 00200293 li t0,2 + 80002f58: fe5212e3 bne tp,t0,80002f3c + 80002f5c: 00100e93 li t4,1 + 80002f60: 02400193 li gp,36 + 80002f64: 0fdf1463 bne t5,t4,8000304c + +0000000080002f68 : + 80002f68: 00000213 li tp,0 + 80002f6c: 00700113 li sp,7 + 80002f70: 00000013 nop + 80002f74: 800000b7 lui ra,0x80000 + 80002f78: 0020df3b srlw t5,ra,sp + 80002f7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f80: 00200293 li t0,2 + 80002f84: fe5214e3 bne tp,t0,80002f6c + 80002f88: 01000eb7 lui t4,0x1000 + 80002f8c: 02500193 li gp,37 + 80002f90: 0bdf1e63 bne t5,t4,8000304c + +0000000080002f94 : + 80002f94: 00000213 li tp,0 + 80002f98: 00e00113 li sp,14 + 80002f9c: 00000013 nop + 80002fa0: 800000b7 lui ra,0x80000 + 80002fa4: 00000013 nop + 80002fa8: 0020df3b srlw t5,ra,sp + 80002fac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fb0: 00200293 li t0,2 + 80002fb4: fe5212e3 bne tp,t0,80002f98 + 80002fb8: 00020eb7 lui t4,0x20 + 80002fbc: 02600193 li gp,38 + 80002fc0: 09df1663 bne t5,t4,8000304c + +0000000080002fc4 : + 80002fc4: 00000213 li tp,0 + 80002fc8: 01f00113 li sp,31 + 80002fcc: 00000013 nop + 80002fd0: 00000013 nop + 80002fd4: 800000b7 lui ra,0x80000 + 80002fd8: 0020df3b srlw t5,ra,sp + 80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fe0: 00200293 li t0,2 + 80002fe4: fe5212e3 bne tp,t0,80002fc8 + 80002fe8: 00100e93 li t4,1 + 80002fec: 02700193 li gp,39 + 80002ff0: 05df1e63 bne t5,t4,8000304c + +0000000080002ff4 : + 80002ff4: 00f00093 li ra,15 + 80002ff8: 0010513b srlw sp,zero,ra + 80002ffc: 00000e93 li t4,0 + 80003000: 02800193 li gp,40 + 80003004: 05d11463 bne sp,t4,8000304c + +0000000080003008 : + 80003008: 02000093 li ra,32 + 8000300c: 0000d13b srlw sp,ra,zero + 80003010: 02000e93 li t4,32 + 80003014: 02900193 li gp,41 + 80003018: 03d11a63 bne sp,t4,8000304c + +000000008000301c : + 8000301c: 000050bb srlw ra,zero,zero + 80003020: 00000e93 li t4,0 + 80003024: 02a00193 li gp,42 + 80003028: 03d09263 bne ra,t4,8000304c + +000000008000302c : + 8000302c: 40000093 li ra,1024 + 80003030: 00001137 lui sp,0x1 + 80003034: 8001011b addiw sp,sp,-2048 + 80003038: 0020d03b srlw zero,ra,sp + 8000303c: 00000e93 li t4,0 + 80003040: 02b00193 li gp,43 + 80003044: 01d01463 bne zero,t4,8000304c + 80003048: 00301a63 bne zero,gp,8000305c + +000000008000304c : + 8000304c: 00119513 slli a0,gp,0x1 + 80003050: 00050063 beqz a0,80003050 + 80003054: 00156513 ori a0,a0,1 + 80003058: 00000073 ecall + +000000008000305c : + 8000305c: 00100513 li a0,1 + 80003060: 00000073 ecall + 80003064: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sub b/Tests/isa/rv64ui-v-sub new file mode 100644 index 0000000..19a224f Binary files /dev/null and b/Tests/isa/rv64ui-v-sub differ diff --git a/Tests/isa/rv64ui-v-sub.dump b/Tests/isa/rv64ui-v-sub.dump new file mode 100644 index 0000000..1e59e97 --- /dev/null +++ b/Tests/isa/rv64ui-v-sub.dump @@ -0,0 +1,1218 @@ + +rv64ui-v-sub: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b6068693 addi a3,a3,-1184 # 80002fb8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b9460613 addi a2,a2,-1132 # 80003048 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b5c60613 addi a2,a2,-1188 # 80003060 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: aac68693 addi a3,a3,-1364 # 80003000 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: ac868693 addi a3,a3,-1336 # 80003138 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a4860613 addi a2,a2,-1464 # 80003110 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 97c68693 addi a3,a3,-1668 # 80003168 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 89c68693 addi a3,a3,-1892 # 800030d8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 82c68693 addi a3,a3,-2004 # 800030a0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02500793 li a5,37 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0913b7b7 lui a5,0x913b + 80002a70: 000805b7 lui a1,0x80 + 80002a74: a7278793 addi a5,a5,-1422 # 913aa72 <_start-0x76ec558e> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 40208f33 sub t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 4bdf1e63 bne t5,t4,80002f98 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 40208f33 sub t5,ra,sp + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 4bdf1263 bne t5,t4,80002f98 + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 40208f33 sub t5,ra,sp + 80002b04: ffc00e93 li t4,-4 + 80002b08: 00400193 li gp,4 + 80002b0c: 49df1663 bne t5,t4,80002f98 + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 40208f33 sub t5,ra,sp + 80002b1c: 00008eb7 lui t4,0x8 + 80002b20: 00500193 li gp,5 + 80002b24: 47df1a63 bne t5,t4,80002f98 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 40208f33 sub t5,ra,sp + 80002b34: 80000eb7 lui t4,0x80000 + 80002b38: 00600193 li gp,6 + 80002b3c: 45df1e63 bne t5,t4,80002f98 + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 40208f33 sub t5,ra,sp + 80002b4c: 80008eb7 lui t4,0x80008 + 80002b50: 00700193 li gp,7 + 80002b54: 45df1263 bne t5,t4,80002f98 + +0000000080002b58 : + 80002b58: 00000093 li ra,0 + 80002b5c: 00008137 lui sp,0x8 + 80002b60: fff1011b addiw sp,sp,-1 + 80002b64: 40208f33 sub t5,ra,sp + 80002b68: ffff8eb7 lui t4,0xffff8 + 80002b6c: 001e8e9b addiw t4,t4,1 + 80002b70: 00800193 li gp,8 + 80002b74: 43df1263 bne t5,t4,80002f98 + +0000000080002b78 : + 80002b78: 800000b7 lui ra,0x80000 + 80002b7c: fff0809b addiw ra,ra,-1 + 80002b80: 00000113 li sp,0 + 80002b84: 40208f33 sub t5,ra,sp + 80002b88: 80000eb7 lui t4,0x80000 + 80002b8c: fffe8e9b addiw t4,t4,-1 + 80002b90: 00900193 li gp,9 + 80002b94: 41df1263 bne t5,t4,80002f98 + +0000000080002b98 : + 80002b98: 800000b7 lui ra,0x80000 + 80002b9c: fff0809b addiw ra,ra,-1 + 80002ba0: 00008137 lui sp,0x8 + 80002ba4: fff1011b addiw sp,sp,-1 + 80002ba8: 40208f33 sub t5,ra,sp + 80002bac: 7fff8eb7 lui t4,0x7fff8 + 80002bb0: 00a00193 li gp,10 + 80002bb4: 3fdf1263 bne t5,t4,80002f98 + +0000000080002bb8 : + 80002bb8: 800000b7 lui ra,0x80000 + 80002bbc: 00008137 lui sp,0x8 + 80002bc0: fff1011b addiw sp,sp,-1 + 80002bc4: 40208f33 sub t5,ra,sp + 80002bc8: ffff0eb7 lui t4,0xffff0 + 80002bcc: fffe8e9b addiw t4,t4,-1 + 80002bd0: 00fe9e93 slli t4,t4,0xf + 80002bd4: 001e8e93 addi t4,t4,1 # ffffffffffff0001 <_end+0xffffffff7ffe7811> + 80002bd8: 00b00193 li gp,11 + 80002bdc: 3bdf1e63 bne t5,t4,80002f98 + +0000000080002be0 : + 80002be0: 800000b7 lui ra,0x80000 + 80002be4: fff0809b addiw ra,ra,-1 + 80002be8: ffff8137 lui sp,0xffff8 + 80002bec: 40208f33 sub t5,ra,sp + 80002bf0: 00010eb7 lui t4,0x10 + 80002bf4: 001e8e9b addiw t4,t4,1 + 80002bf8: 00fe9e93 slli t4,t4,0xf + 80002bfc: fffe8e93 addi t4,t4,-1 # ffff <_start-0x7fff0001> + 80002c00: 00c00193 li gp,12 + 80002c04: 39df1a63 bne t5,t4,80002f98 + +0000000080002c08 : + 80002c08: 00000093 li ra,0 + 80002c0c: fff00113 li sp,-1 + 80002c10: 40208f33 sub t5,ra,sp + 80002c14: 00100e93 li t4,1 + 80002c18: 00d00193 li gp,13 + 80002c1c: 37df1e63 bne t5,t4,80002f98 + +0000000080002c20 : + 80002c20: fff00093 li ra,-1 + 80002c24: 00100113 li sp,1 + 80002c28: 40208f33 sub t5,ra,sp + 80002c2c: ffe00e93 li t4,-2 + 80002c30: 00e00193 li gp,14 + 80002c34: 37df1263 bne t5,t4,80002f98 + +0000000080002c38 : + 80002c38: fff00093 li ra,-1 + 80002c3c: fff00113 li sp,-1 + 80002c40: 40208f33 sub t5,ra,sp + 80002c44: 00000e93 li t4,0 + 80002c48: 00f00193 li gp,15 + 80002c4c: 35df1663 bne t5,t4,80002f98 + +0000000080002c50 : + 80002c50: 00d00093 li ra,13 + 80002c54: 00b00113 li sp,11 + 80002c58: 402080b3 sub ra,ra,sp + 80002c5c: 00200e93 li t4,2 + 80002c60: 01000193 li gp,16 + 80002c64: 33d09a63 bne ra,t4,80002f98 + +0000000080002c68 : + 80002c68: 00e00093 li ra,14 + 80002c6c: 00b00113 li sp,11 + 80002c70: 40208133 sub sp,ra,sp + 80002c74: 00300e93 li t4,3 + 80002c78: 01100193 li gp,17 + 80002c7c: 31d11e63 bne sp,t4,80002f98 + +0000000080002c80 : + 80002c80: 00d00093 li ra,13 + 80002c84: 401080b3 sub ra,ra,ra + 80002c88: 00000e93 li t4,0 + 80002c8c: 01200193 li gp,18 + 80002c90: 31d09463 bne ra,t4,80002f98 + +0000000080002c94 : + 80002c94: 00000213 li tp,0 + 80002c98: 00d00093 li ra,13 + 80002c9c: 00b00113 li sp,11 + 80002ca0: 40208f33 sub t5,ra,sp + 80002ca4: 000f0313 mv t1,t5 + 80002ca8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cac: 00200293 li t0,2 + 80002cb0: fe5214e3 bne tp,t0,80002c98 + 80002cb4: 00200e93 li t4,2 + 80002cb8: 01300193 li gp,19 + 80002cbc: 2dd31e63 bne t1,t4,80002f98 + +0000000080002cc0 : + 80002cc0: 00000213 li tp,0 + 80002cc4: 00e00093 li ra,14 + 80002cc8: 00b00113 li sp,11 + 80002ccc: 40208f33 sub t5,ra,sp + 80002cd0: 00000013 nop + 80002cd4: 000f0313 mv t1,t5 + 80002cd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cdc: 00200293 li t0,2 + 80002ce0: fe5212e3 bne tp,t0,80002cc4 + 80002ce4: 00300e93 li t4,3 + 80002ce8: 01400193 li gp,20 + 80002cec: 2bd31663 bne t1,t4,80002f98 + +0000000080002cf0 : + 80002cf0: 00000213 li tp,0 + 80002cf4: 00f00093 li ra,15 + 80002cf8: 00b00113 li sp,11 + 80002cfc: 40208f33 sub t5,ra,sp + 80002d00: 00000013 nop + 80002d04: 00000013 nop + 80002d08: 000f0313 mv t1,t5 + 80002d0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d10: 00200293 li t0,2 + 80002d14: fe5210e3 bne tp,t0,80002cf4 + 80002d18: 00400e93 li t4,4 + 80002d1c: 01500193 li gp,21 + 80002d20: 27d31c63 bne t1,t4,80002f98 + +0000000080002d24 : + 80002d24: 00000213 li tp,0 + 80002d28: 00d00093 li ra,13 + 80002d2c: 00b00113 li sp,11 + 80002d30: 40208f33 sub t5,ra,sp + 80002d34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d38: 00200293 li t0,2 + 80002d3c: fe5216e3 bne tp,t0,80002d28 + 80002d40: 00200e93 li t4,2 + 80002d44: 01600193 li gp,22 + 80002d48: 25df1863 bne t5,t4,80002f98 + +0000000080002d4c : + 80002d4c: 00000213 li tp,0 + 80002d50: 00e00093 li ra,14 + 80002d54: 00b00113 li sp,11 + 80002d58: 00000013 nop + 80002d5c: 40208f33 sub t5,ra,sp + 80002d60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d64: 00200293 li t0,2 + 80002d68: fe5214e3 bne tp,t0,80002d50 + 80002d6c: 00300e93 li t4,3 + 80002d70: 01700193 li gp,23 + 80002d74: 23df1263 bne t5,t4,80002f98 + +0000000080002d78 : + 80002d78: 00000213 li tp,0 + 80002d7c: 00f00093 li ra,15 + 80002d80: 00b00113 li sp,11 + 80002d84: 00000013 nop + 80002d88: 00000013 nop + 80002d8c: 40208f33 sub t5,ra,sp + 80002d90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d94: 00200293 li t0,2 + 80002d98: fe5212e3 bne tp,t0,80002d7c + 80002d9c: 00400e93 li t4,4 + 80002da0: 01800193 li gp,24 + 80002da4: 1fdf1a63 bne t5,t4,80002f98 + +0000000080002da8 : + 80002da8: 00000213 li tp,0 + 80002dac: 00d00093 li ra,13 + 80002db0: 00000013 nop + 80002db4: 00b00113 li sp,11 + 80002db8: 40208f33 sub t5,ra,sp + 80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dc0: 00200293 li t0,2 + 80002dc4: fe5214e3 bne tp,t0,80002dac + 80002dc8: 00200e93 li t4,2 + 80002dcc: 01900193 li gp,25 + 80002dd0: 1ddf1463 bne t5,t4,80002f98 + +0000000080002dd4 : + 80002dd4: 00000213 li tp,0 + 80002dd8: 00e00093 li ra,14 + 80002ddc: 00000013 nop + 80002de0: 00b00113 li sp,11 + 80002de4: 00000013 nop + 80002de8: 40208f33 sub t5,ra,sp + 80002dec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002df0: 00200293 li t0,2 + 80002df4: fe5212e3 bne tp,t0,80002dd8 + 80002df8: 00300e93 li t4,3 + 80002dfc: 01a00193 li gp,26 + 80002e00: 19df1c63 bne t5,t4,80002f98 + +0000000080002e04 : + 80002e04: 00000213 li tp,0 + 80002e08: 00f00093 li ra,15 + 80002e0c: 00000013 nop + 80002e10: 00000013 nop + 80002e14: 00b00113 li sp,11 + 80002e18: 40208f33 sub t5,ra,sp + 80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e20: 00200293 li t0,2 + 80002e24: fe5212e3 bne tp,t0,80002e08 + 80002e28: 00400e93 li t4,4 + 80002e2c: 01b00193 li gp,27 + 80002e30: 17df1463 bne t5,t4,80002f98 + +0000000080002e34 : + 80002e34: 00000213 li tp,0 + 80002e38: 00b00113 li sp,11 + 80002e3c: 00d00093 li ra,13 + 80002e40: 40208f33 sub t5,ra,sp + 80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e48: 00200293 li t0,2 + 80002e4c: fe5216e3 bne tp,t0,80002e38 + 80002e50: 00200e93 li t4,2 + 80002e54: 01c00193 li gp,28 + 80002e58: 15df1063 bne t5,t4,80002f98 + +0000000080002e5c : + 80002e5c: 00000213 li tp,0 + 80002e60: 00b00113 li sp,11 + 80002e64: 00e00093 li ra,14 + 80002e68: 00000013 nop + 80002e6c: 40208f33 sub t5,ra,sp + 80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e74: 00200293 li t0,2 + 80002e78: fe5214e3 bne tp,t0,80002e60 + 80002e7c: 00300e93 li t4,3 + 80002e80: 01d00193 li gp,29 + 80002e84: 11df1a63 bne t5,t4,80002f98 + +0000000080002e88 : + 80002e88: 00000213 li tp,0 + 80002e8c: 00b00113 li sp,11 + 80002e90: 00f00093 li ra,15 + 80002e94: 00000013 nop + 80002e98: 00000013 nop + 80002e9c: 40208f33 sub t5,ra,sp + 80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea4: 00200293 li t0,2 + 80002ea8: fe5212e3 bne tp,t0,80002e8c + 80002eac: 00400e93 li t4,4 + 80002eb0: 01e00193 li gp,30 + 80002eb4: 0fdf1263 bne t5,t4,80002f98 + +0000000080002eb8 : + 80002eb8: 00000213 li tp,0 + 80002ebc: 00b00113 li sp,11 + 80002ec0: 00000013 nop + 80002ec4: 00d00093 li ra,13 + 80002ec8: 40208f33 sub t5,ra,sp + 80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ed0: 00200293 li t0,2 + 80002ed4: fe5214e3 bne tp,t0,80002ebc + 80002ed8: 00200e93 li t4,2 + 80002edc: 01f00193 li gp,31 + 80002ee0: 0bdf1c63 bne t5,t4,80002f98 + +0000000080002ee4 : + 80002ee4: 00000213 li tp,0 + 80002ee8: 00b00113 li sp,11 + 80002eec: 00000013 nop + 80002ef0: 00e00093 li ra,14 + 80002ef4: 00000013 nop + 80002ef8: 40208f33 sub t5,ra,sp + 80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f00: 00200293 li t0,2 + 80002f04: fe5212e3 bne tp,t0,80002ee8 + 80002f08: 00300e93 li t4,3 + 80002f0c: 02000193 li gp,32 + 80002f10: 09df1463 bne t5,t4,80002f98 + +0000000080002f14 : + 80002f14: 00000213 li tp,0 + 80002f18: 00b00113 li sp,11 + 80002f1c: 00000013 nop + 80002f20: 00000013 nop + 80002f24: 00f00093 li ra,15 + 80002f28: 40208f33 sub t5,ra,sp + 80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f30: 00200293 li t0,2 + 80002f34: fe5212e3 bne tp,t0,80002f18 + 80002f38: 00400e93 li t4,4 + 80002f3c: 02100193 li gp,33 + 80002f40: 05df1c63 bne t5,t4,80002f98 + +0000000080002f44 : + 80002f44: ff100093 li ra,-15 + 80002f48: 40100133 neg sp,ra + 80002f4c: 00f00e93 li t4,15 + 80002f50: 02200193 li gp,34 + 80002f54: 05d11263 bne sp,t4,80002f98 + +0000000080002f58 : + 80002f58: 02000093 li ra,32 + 80002f5c: 40008133 sub sp,ra,zero + 80002f60: 02000e93 li t4,32 + 80002f64: 02300193 li gp,35 + 80002f68: 03d11863 bne sp,t4,80002f98 + +0000000080002f6c : + 80002f6c: 400000b3 neg ra,zero + 80002f70: 00000e93 li t4,0 + 80002f74: 02400193 li gp,36 + 80002f78: 03d09063 bne ra,t4,80002f98 + +0000000080002f7c : + 80002f7c: 01000093 li ra,16 + 80002f80: 01e00113 li sp,30 + 80002f84: 40208033 sub zero,ra,sp + 80002f88: 00000e93 li t4,0 + 80002f8c: 02500193 li gp,37 + 80002f90: 01d01463 bne zero,t4,80002f98 + 80002f94: 00301a63 bne zero,gp,80002fa8 + +0000000080002f98 : + 80002f98: 00119513 slli a0,gp,0x1 + 80002f9c: 00050063 beqz a0,80002f9c + 80002fa0: 00156513 ori a0,a0,1 + 80002fa4: 00000073 ecall + +0000000080002fa8 : + 80002fa8: 00100513 li a0,1 + 80002fac: 00000073 ecall + 80002fb0: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-subw b/Tests/isa/rv64ui-v-subw new file mode 100644 index 0000000..4ced2d0 Binary files /dev/null and b/Tests/isa/rv64ui-v-subw differ diff --git a/Tests/isa/rv64ui-v-subw.dump b/Tests/isa/rv64ui-v-subw.dump new file mode 100644 index 0000000..8832cb7 --- /dev/null +++ b/Tests/isa/rv64ui-v-subw.dump @@ -0,0 +1,1214 @@ + +rv64ui-v-subw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b5068693 addi a3,a3,-1200 # 80002fa8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b8460613 addi a2,a2,-1148 # 80003038 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b4c60613 addi a2,a2,-1204 # 80003050 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: a9c68693 addi a3,a3,-1380 # 80002ff0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: ab868693 addi a3,a3,-1352 # 80003128 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a3860613 addi a2,a2,-1480 # 80003100 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 96c68693 addi a3,a3,-1684 # 80003158 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 88c68693 addi a3,a3,-1908 # 800030c8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 81c68693 addi a3,a3,-2020 # 80003090 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02a00793 li a5,42 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0accb7b7 lui a5,0xaccb + 80002a70: 000805b7 lui a1,0x80 + 80002a74: c3078793 addi a5,a5,-976 # accac30 <_start-0x753353d0> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 40208f3b subw t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 4bdf1663 bne t5,t4,80002f88 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 40208f3b subw t5,ra,sp + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 49df1a63 bne t5,t4,80002f88 + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 40208f3b subw t5,ra,sp + 80002b04: ffc00e93 li t4,-4 + 80002b08: 00400193 li gp,4 + 80002b0c: 47df1e63 bne t5,t4,80002f88 + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 40208f3b subw t5,ra,sp + 80002b1c: 00008eb7 lui t4,0x8 + 80002b20: 00500193 li gp,5 + 80002b24: 47df1263 bne t5,t4,80002f88 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 40208f3b subw t5,ra,sp + 80002b34: 80000eb7 lui t4,0x80000 + 80002b38: 00600193 li gp,6 + 80002b3c: 45df1663 bne t5,t4,80002f88 + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 40208f3b subw t5,ra,sp + 80002b4c: 80008eb7 lui t4,0x80008 + 80002b50: 00700193 li gp,7 + 80002b54: 43df1a63 bne t5,t4,80002f88 + +0000000080002b58 : + 80002b58: 00000093 li ra,0 + 80002b5c: 00008137 lui sp,0x8 + 80002b60: fff1011b addiw sp,sp,-1 + 80002b64: 40208f3b subw t5,ra,sp + 80002b68: ffff8eb7 lui t4,0xffff8 + 80002b6c: 001e8e9b addiw t4,t4,1 + 80002b70: 00800193 li gp,8 + 80002b74: 41df1a63 bne t5,t4,80002f88 + +0000000080002b78 : + 80002b78: 800000b7 lui ra,0x80000 + 80002b7c: fff0809b addiw ra,ra,-1 + 80002b80: 00000113 li sp,0 + 80002b84: 40208f3b subw t5,ra,sp + 80002b88: 80000eb7 lui t4,0x80000 + 80002b8c: fffe8e9b addiw t4,t4,-1 + 80002b90: 00900193 li gp,9 + 80002b94: 3fdf1a63 bne t5,t4,80002f88 + +0000000080002b98 : + 80002b98: 800000b7 lui ra,0x80000 + 80002b9c: fff0809b addiw ra,ra,-1 + 80002ba0: 00008137 lui sp,0x8 + 80002ba4: fff1011b addiw sp,sp,-1 + 80002ba8: 40208f3b subw t5,ra,sp + 80002bac: 7fff8eb7 lui t4,0x7fff8 + 80002bb0: 00a00193 li gp,10 + 80002bb4: 3ddf1a63 bne t5,t4,80002f88 + +0000000080002bb8 : + 80002bb8: 800000b7 lui ra,0x80000 + 80002bbc: 00008137 lui sp,0x8 + 80002bc0: fff1011b addiw sp,sp,-1 + 80002bc4: 40208f3b subw t5,ra,sp + 80002bc8: 7fff8eb7 lui t4,0x7fff8 + 80002bcc: 001e8e9b addiw t4,t4,1 + 80002bd0: 00b00193 li gp,11 + 80002bd4: 3bdf1a63 bne t5,t4,80002f88 + +0000000080002bd8 : + 80002bd8: 800000b7 lui ra,0x80000 + 80002bdc: fff0809b addiw ra,ra,-1 + 80002be0: ffff8137 lui sp,0xffff8 + 80002be4: 40208f3b subw t5,ra,sp + 80002be8: 80008eb7 lui t4,0x80008 + 80002bec: fffe8e9b addiw t4,t4,-1 + 80002bf0: 00c00193 li gp,12 + 80002bf4: 39df1a63 bne t5,t4,80002f88 + +0000000080002bf8 : + 80002bf8: 00000093 li ra,0 + 80002bfc: fff00113 li sp,-1 + 80002c00: 40208f3b subw t5,ra,sp + 80002c04: 00100e93 li t4,1 + 80002c08: 00d00193 li gp,13 + 80002c0c: 37df1e63 bne t5,t4,80002f88 + +0000000080002c10 : + 80002c10: fff00093 li ra,-1 + 80002c14: 00100113 li sp,1 + 80002c18: 40208f3b subw t5,ra,sp + 80002c1c: ffe00e93 li t4,-2 + 80002c20: 00e00193 li gp,14 + 80002c24: 37df1263 bne t5,t4,80002f88 + +0000000080002c28 : + 80002c28: fff00093 li ra,-1 + 80002c2c: fff00113 li sp,-1 + 80002c30: 40208f3b subw t5,ra,sp + 80002c34: 00000e93 li t4,0 + 80002c38: 00f00193 li gp,15 + 80002c3c: 35df1663 bne t5,t4,80002f88 + +0000000080002c40 : + 80002c40: 00d00093 li ra,13 + 80002c44: 00b00113 li sp,11 + 80002c48: 402080bb subw ra,ra,sp + 80002c4c: 00200e93 li t4,2 + 80002c50: 01000193 li gp,16 + 80002c54: 33d09a63 bne ra,t4,80002f88 + +0000000080002c58 : + 80002c58: 00e00093 li ra,14 + 80002c5c: 00b00113 li sp,11 + 80002c60: 4020813b subw sp,ra,sp + 80002c64: 00300e93 li t4,3 + 80002c68: 01100193 li gp,17 + 80002c6c: 31d11e63 bne sp,t4,80002f88 + +0000000080002c70 : + 80002c70: 00d00093 li ra,13 + 80002c74: 401080bb subw ra,ra,ra + 80002c78: 00000e93 li t4,0 + 80002c7c: 01200193 li gp,18 + 80002c80: 31d09463 bne ra,t4,80002f88 + +0000000080002c84 : + 80002c84: 00000213 li tp,0 + 80002c88: 00d00093 li ra,13 + 80002c8c: 00b00113 li sp,11 + 80002c90: 40208f3b subw t5,ra,sp + 80002c94: 000f0313 mv t1,t5 + 80002c98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c9c: 00200293 li t0,2 + 80002ca0: fe5214e3 bne tp,t0,80002c88 + 80002ca4: 00200e93 li t4,2 + 80002ca8: 01300193 li gp,19 + 80002cac: 2dd31e63 bne t1,t4,80002f88 + +0000000080002cb0 : + 80002cb0: 00000213 li tp,0 + 80002cb4: 00e00093 li ra,14 + 80002cb8: 00b00113 li sp,11 + 80002cbc: 40208f3b subw t5,ra,sp + 80002cc0: 00000013 nop + 80002cc4: 000f0313 mv t1,t5 + 80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ccc: 00200293 li t0,2 + 80002cd0: fe5212e3 bne tp,t0,80002cb4 + 80002cd4: 00300e93 li t4,3 + 80002cd8: 01400193 li gp,20 + 80002cdc: 2bd31663 bne t1,t4,80002f88 + +0000000080002ce0 : + 80002ce0: 00000213 li tp,0 + 80002ce4: 00f00093 li ra,15 + 80002ce8: 00b00113 li sp,11 + 80002cec: 40208f3b subw t5,ra,sp + 80002cf0: 00000013 nop + 80002cf4: 00000013 nop + 80002cf8: 000f0313 mv t1,t5 + 80002cfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d00: 00200293 li t0,2 + 80002d04: fe5210e3 bne tp,t0,80002ce4 + 80002d08: 00400e93 li t4,4 + 80002d0c: 01500193 li gp,21 + 80002d10: 27d31c63 bne t1,t4,80002f88 + +0000000080002d14 : + 80002d14: 00000213 li tp,0 + 80002d18: 00d00093 li ra,13 + 80002d1c: 00b00113 li sp,11 + 80002d20: 40208f3b subw t5,ra,sp + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fe5216e3 bne tp,t0,80002d18 + 80002d30: 00200e93 li t4,2 + 80002d34: 01600193 li gp,22 + 80002d38: 25df1863 bne t5,t4,80002f88 + +0000000080002d3c : + 80002d3c: 00000213 li tp,0 + 80002d40: 00e00093 li ra,14 + 80002d44: 00b00113 li sp,11 + 80002d48: 00000013 nop + 80002d4c: 40208f3b subw t5,ra,sp + 80002d50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d54: 00200293 li t0,2 + 80002d58: fe5214e3 bne tp,t0,80002d40 + 80002d5c: 00300e93 li t4,3 + 80002d60: 01700193 li gp,23 + 80002d64: 23df1263 bne t5,t4,80002f88 + +0000000080002d68 : + 80002d68: 00000213 li tp,0 + 80002d6c: 00f00093 li ra,15 + 80002d70: 00b00113 li sp,11 + 80002d74: 00000013 nop + 80002d78: 00000013 nop + 80002d7c: 40208f3b subw t5,ra,sp + 80002d80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d84: 00200293 li t0,2 + 80002d88: fe5212e3 bne tp,t0,80002d6c + 80002d8c: 00400e93 li t4,4 + 80002d90: 01800193 li gp,24 + 80002d94: 1fdf1a63 bne t5,t4,80002f88 + +0000000080002d98 : + 80002d98: 00000213 li tp,0 + 80002d9c: 00d00093 li ra,13 + 80002da0: 00000013 nop + 80002da4: 00b00113 li sp,11 + 80002da8: 40208f3b subw t5,ra,sp + 80002dac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002db0: 00200293 li t0,2 + 80002db4: fe5214e3 bne tp,t0,80002d9c + 80002db8: 00200e93 li t4,2 + 80002dbc: 01900193 li gp,25 + 80002dc0: 1ddf1463 bne t5,t4,80002f88 + +0000000080002dc4 : + 80002dc4: 00000213 li tp,0 + 80002dc8: 00e00093 li ra,14 + 80002dcc: 00000013 nop + 80002dd0: 00b00113 li sp,11 + 80002dd4: 00000013 nop + 80002dd8: 40208f3b subw t5,ra,sp + 80002ddc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de0: 00200293 li t0,2 + 80002de4: fe5212e3 bne tp,t0,80002dc8 + 80002de8: 00300e93 li t4,3 + 80002dec: 01a00193 li gp,26 + 80002df0: 19df1c63 bne t5,t4,80002f88 + +0000000080002df4 : + 80002df4: 00000213 li tp,0 + 80002df8: 00f00093 li ra,15 + 80002dfc: 00000013 nop + 80002e00: 00000013 nop + 80002e04: 00b00113 li sp,11 + 80002e08: 40208f3b subw t5,ra,sp + 80002e0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e10: 00200293 li t0,2 + 80002e14: fe5212e3 bne tp,t0,80002df8 + 80002e18: 00400e93 li t4,4 + 80002e1c: 01b00193 li gp,27 + 80002e20: 17df1463 bne t5,t4,80002f88 + +0000000080002e24 : + 80002e24: 00000213 li tp,0 + 80002e28: 00b00113 li sp,11 + 80002e2c: 00d00093 li ra,13 + 80002e30: 40208f3b subw t5,ra,sp + 80002e34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e38: 00200293 li t0,2 + 80002e3c: fe5216e3 bne tp,t0,80002e28 + 80002e40: 00200e93 li t4,2 + 80002e44: 01c00193 li gp,28 + 80002e48: 15df1063 bne t5,t4,80002f88 + +0000000080002e4c : + 80002e4c: 00000213 li tp,0 + 80002e50: 00b00113 li sp,11 + 80002e54: 00e00093 li ra,14 + 80002e58: 00000013 nop + 80002e5c: 40208f3b subw t5,ra,sp + 80002e60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e64: 00200293 li t0,2 + 80002e68: fe5214e3 bne tp,t0,80002e50 + 80002e6c: 00300e93 li t4,3 + 80002e70: 01d00193 li gp,29 + 80002e74: 11df1a63 bne t5,t4,80002f88 + +0000000080002e78 : + 80002e78: 00000213 li tp,0 + 80002e7c: 00b00113 li sp,11 + 80002e80: 00f00093 li ra,15 + 80002e84: 00000013 nop + 80002e88: 00000013 nop + 80002e8c: 40208f3b subw t5,ra,sp + 80002e90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e94: 00200293 li t0,2 + 80002e98: fe5212e3 bne tp,t0,80002e7c + 80002e9c: 00400e93 li t4,4 + 80002ea0: 01e00193 li gp,30 + 80002ea4: 0fdf1263 bne t5,t4,80002f88 + +0000000080002ea8 : + 80002ea8: 00000213 li tp,0 + 80002eac: 00b00113 li sp,11 + 80002eb0: 00000013 nop + 80002eb4: 00d00093 li ra,13 + 80002eb8: 40208f3b subw t5,ra,sp + 80002ebc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ec0: 00200293 li t0,2 + 80002ec4: fe5214e3 bne tp,t0,80002eac + 80002ec8: 00200e93 li t4,2 + 80002ecc: 01f00193 li gp,31 + 80002ed0: 0bdf1c63 bne t5,t4,80002f88 + +0000000080002ed4 : + 80002ed4: 00000213 li tp,0 + 80002ed8: 00b00113 li sp,11 + 80002edc: 00000013 nop + 80002ee0: 00e00093 li ra,14 + 80002ee4: 00000013 nop + 80002ee8: 40208f3b subw t5,ra,sp + 80002eec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ef0: 00200293 li t0,2 + 80002ef4: fe5212e3 bne tp,t0,80002ed8 + 80002ef8: 00300e93 li t4,3 + 80002efc: 02000193 li gp,32 + 80002f00: 09df1463 bne t5,t4,80002f88 + +0000000080002f04 : + 80002f04: 00000213 li tp,0 + 80002f08: 00b00113 li sp,11 + 80002f0c: 00000013 nop + 80002f10: 00000013 nop + 80002f14: 00f00093 li ra,15 + 80002f18: 40208f3b subw t5,ra,sp + 80002f1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f20: 00200293 li t0,2 + 80002f24: fe5212e3 bne tp,t0,80002f08 + 80002f28: 00400e93 li t4,4 + 80002f2c: 02100193 li gp,33 + 80002f30: 05df1c63 bne t5,t4,80002f88 + +0000000080002f34 : + 80002f34: ff100093 li ra,-15 + 80002f38: 4010013b negw sp,ra + 80002f3c: 00f00e93 li t4,15 + 80002f40: 02200193 li gp,34 + 80002f44: 05d11263 bne sp,t4,80002f88 + +0000000080002f48 : + 80002f48: 02000093 li ra,32 + 80002f4c: 4000813b subw sp,ra,zero + 80002f50: 02000e93 li t4,32 + 80002f54: 02300193 li gp,35 + 80002f58: 03d11863 bne sp,t4,80002f88 + +0000000080002f5c : + 80002f5c: 400000bb negw ra,zero + 80002f60: 00000e93 li t4,0 + 80002f64: 02400193 li gp,36 + 80002f68: 03d09063 bne ra,t4,80002f88 + +0000000080002f6c : + 80002f6c: 01000093 li ra,16 + 80002f70: 01e00113 li sp,30 + 80002f74: 4020803b subw zero,ra,sp + 80002f78: 00000e93 li t4,0 + 80002f7c: 02500193 li gp,37 + 80002f80: 01d01463 bne zero,t4,80002f88 + 80002f84: 00301a63 bne zero,gp,80002f98 + +0000000080002f88 : + 80002f88: 00119513 slli a0,gp,0x1 + 80002f8c: 00050063 beqz a0,80002f8c + 80002f90: 00156513 ori a0,a0,1 + 80002f94: 00000073 ecall + +0000000080002f98 : + 80002f98: 00100513 li a0,1 + 80002f9c: 00000073 ecall + 80002fa0: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-sw b/Tests/isa/rv64ui-v-sw new file mode 100644 index 0000000..504a70a Binary files /dev/null and b/Tests/isa/rv64ui-v-sw differ diff --git a/Tests/isa/rv64ui-v-sw.dump b/Tests/isa/rv64ui-v-sw.dump new file mode 100644 index 0000000..60671e2 --- /dev/null +++ b/Tests/isa/rv64ui-v-sw.dump @@ -0,0 +1,1203 @@ + +rv64ui-v-sw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 0000a117 auipc sp,0xa + 8000001c: 6b810113 addi sp,sp,1720 # 8000a6d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00003617 auipc a2,0x3 + 80002318: cec60613 addi a2,a2,-788 # 80005000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00007797 auipc a5,0x7 + 80002334: 4b878793 addi a5,a5,1208 # 800097e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00007717 auipc a4,0x7 + 80002348: 49c70713 addi a4,a4,1180 # 800097e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00007897 auipc a7,0x7 + 80002354: 48f8bc23 sd a5,1176(a7) # 800097e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00007797 auipc a5,0x7 + 80002384: 07078793 addi a5,a5,112 # 800093f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf6810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00007797 auipc a5,0x7 + 80002448: 3807be23 sd zero,924(a5) # 800097e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b1068693 addi a3,a3,-1264 # 80002f68 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b4460613 addi a2,a2,-1212 # 80002ff8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b0c60613 addi a2,a2,-1268 # 80003010 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: a5c68693 addi a3,a3,-1444 # 80002fb0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: a7868693 addi a3,a3,-1416 # 800030e8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 9f860613 addi a2,a2,-1544 # 800030c0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00007d17 auipc s10,0x7 + 80002720: cd4d0d13 addi s10,s10,-812 # 800093f0 + 80002724: 00003b97 auipc s7,0x3 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80005000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00007a17 auipc s4,0x7 + 80002738: 0aca0a13 addi s4,s4,172 # 800097e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00007717 auipc a4,0x7 + 8000274c: 08f73c23 sd a5,152(a4) # 800097e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00007717 auipc a4,0x7 + 800027d4: 00f73823 sd a5,16(a4) # 800097e0 + 800027d8: 00007717 auipc a4,0x7 + 800027dc: 00f73823 sd a5,16(a4) # 800097e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 92c68693 addi a3,a3,-1748 # 80003118 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 84c68693 addi a3,a3,-1972 # 80003088 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 7dc68693 addi a3,a3,2012 # 80003050 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00003697 auipc a3,0x3 + 800028e0: 72468693 addi a3,a3,1828 # 80006000 + 800028e4: 00004717 auipc a4,0x4 + 800028e8: 71c70713 addi a4,a4,1820 # 80007000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00005797 auipc a5,0x5 + 800028f8: 70c78793 addi a5,a5,1804 # 80008000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00002897 auipc a7,0x2 + 80002914: 6ed8b823 sd a3,1776(a7) # 80005000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00003697 auipc a3,0x3 + 80002920: 6ce6be23 sd a4,1756(a3) # 80005ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00002617 auipc a2,0x2 + 80002938: 6cc60613 addi a2,a2,1740 # 80005000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00005697 auipc a3,0x5 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80007ff8 + 8000294c: 00003717 auipc a4,0x3 + 80002950: 6af73a23 sd a5,1716(a4) # 80006000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00006697 auipc a3,0x6 + 800029c0: 64468693 addi a3,a3,1604 # 80009000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00007617 auipc a2,0x7 + 800029d0: e0f63e23 sd a5,-484(a2) # 800097e8 + 800029d4: 00007797 auipc a5,0x7 + 800029d8: e0e7b623 sd a4,-500(a5) # 800097e0 + 800029dc: 00007317 auipc t1,0x7 + 800029e0: a1430313 addi t1,t1,-1516 # 800093f0 + 800029e4: 02900793 li a5,41 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00007797 auipc a5,0x7 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800093e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 06fb17b7 lui a5,0x6fb1 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: a0a78793 addi a5,a5,-1526 # 6fb0a0a <_start-0x7904f5f6> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00001097 auipc ra,0x1 + 80002acc: 53808093 addi ra,ra,1336 # 80004000 + 80002ad0: 00aa0137 lui sp,0xaa0 + 80002ad4: 0aa1011b addiw sp,sp,170 + 80002ad8: 0020a023 sw sp,0(ra) + 80002adc: 0000af03 lw t5,0(ra) + 80002ae0: 00aa0eb7 lui t4,0xaa0 + 80002ae4: 0aae8e9b addiw t4,t4,170 + 80002ae8: 00200193 li gp,2 + 80002aec: 47df1063 bne t5,t4,80002f4c + +0000000080002af0 : + 80002af0: 00001097 auipc ra,0x1 + 80002af4: 51008093 addi ra,ra,1296 # 80004000 + 80002af8: aa00b137 lui sp,0xaa00b + 80002afc: a001011b addiw sp,sp,-1536 + 80002b00: 0020a223 sw sp,4(ra) + 80002b04: 0040af03 lw t5,4(ra) + 80002b08: aa00beb7 lui t4,0xaa00b + 80002b0c: a00e8e9b addiw t4,t4,-1536 + 80002b10: 00300193 li gp,3 + 80002b14: 43df1c63 bne t5,t4,80002f4c + +0000000080002b18 : + 80002b18: 00001097 auipc ra,0x1 + 80002b1c: 4e808093 addi ra,ra,1256 # 80004000 + 80002b20: 0aa01137 lui sp,0xaa01 + 80002b24: aa01011b addiw sp,sp,-1376 + 80002b28: 0020a423 sw sp,8(ra) + 80002b2c: 0080af03 lw t5,8(ra) + 80002b30: 0aa01eb7 lui t4,0xaa01 + 80002b34: aa0e8e9b addiw t4,t4,-1376 + 80002b38: 00400193 li gp,4 + 80002b3c: 41df1863 bne t5,t4,80002f4c + +0000000080002b40 : + 80002b40: 00001097 auipc ra,0x1 + 80002b44: 4c008093 addi ra,ra,1216 # 80004000 + 80002b48: a00aa137 lui sp,0xa00aa + 80002b4c: 00a1011b addiw sp,sp,10 + 80002b50: 0020a623 sw sp,12(ra) + 80002b54: 00c0af03 lw t5,12(ra) + 80002b58: a00aaeb7 lui t4,0xa00aa + 80002b5c: 00ae8e9b addiw t4,t4,10 + 80002b60: 00500193 li gp,5 + 80002b64: 3fdf1463 bne t5,t4,80002f4c + +0000000080002b68 : + 80002b68: 00001097 auipc ra,0x1 + 80002b6c: 4b408093 addi ra,ra,1204 # 8000401c + 80002b70: 00aa0137 lui sp,0xaa0 + 80002b74: 0aa1011b addiw sp,sp,170 + 80002b78: fe20aa23 sw sp,-12(ra) + 80002b7c: ff40af03 lw t5,-12(ra) + 80002b80: 00aa0eb7 lui t4,0xaa0 + 80002b84: 0aae8e9b addiw t4,t4,170 + 80002b88: 00600193 li gp,6 + 80002b8c: 3ddf1063 bne t5,t4,80002f4c + +0000000080002b90 : + 80002b90: 00001097 auipc ra,0x1 + 80002b94: 48c08093 addi ra,ra,1164 # 8000401c + 80002b98: aa00b137 lui sp,0xaa00b + 80002b9c: a001011b addiw sp,sp,-1536 + 80002ba0: fe20ac23 sw sp,-8(ra) + 80002ba4: ff80af03 lw t5,-8(ra) + 80002ba8: aa00beb7 lui t4,0xaa00b + 80002bac: a00e8e9b addiw t4,t4,-1536 + 80002bb0: 00700193 li gp,7 + 80002bb4: 39df1c63 bne t5,t4,80002f4c + +0000000080002bb8 : + 80002bb8: 00001097 auipc ra,0x1 + 80002bbc: 46408093 addi ra,ra,1124 # 8000401c + 80002bc0: 0aa01137 lui sp,0xaa01 + 80002bc4: aa01011b addiw sp,sp,-1376 + 80002bc8: fe20ae23 sw sp,-4(ra) + 80002bcc: ffc0af03 lw t5,-4(ra) + 80002bd0: 0aa01eb7 lui t4,0xaa01 + 80002bd4: aa0e8e9b addiw t4,t4,-1376 + 80002bd8: 00800193 li gp,8 + 80002bdc: 37df1863 bne t5,t4,80002f4c + +0000000080002be0 : + 80002be0: 00001097 auipc ra,0x1 + 80002be4: 43c08093 addi ra,ra,1084 # 8000401c + 80002be8: a00aa137 lui sp,0xa00aa + 80002bec: 00a1011b addiw sp,sp,10 + 80002bf0: 0020a023 sw sp,0(ra) + 80002bf4: 0000af03 lw t5,0(ra) + 80002bf8: a00aaeb7 lui t4,0xa00aa + 80002bfc: 00ae8e9b addiw t4,t4,10 + 80002c00: 00900193 li gp,9 + 80002c04: 35df1463 bne t5,t4,80002f4c + +0000000080002c08 : + 80002c08: 00001097 auipc ra,0x1 + 80002c0c: 41808093 addi ra,ra,1048 # 80004020 + 80002c10: 12345137 lui sp,0x12345 + 80002c14: 6781011b addiw sp,sp,1656 + 80002c18: fe008213 addi tp,ra,-32 + 80002c1c: 02222023 sw sp,32(tp) # 20 <_start-0x7fffffe0> + 80002c20: 0000a283 lw t0,0(ra) + 80002c24: 12345eb7 lui t4,0x12345 + 80002c28: 678e8e9b addiw t4,t4,1656 + 80002c2c: 00a00193 li gp,10 + 80002c30: 31d29e63 bne t0,t4,80002f4c + +0000000080002c34 : + 80002c34: 00001097 auipc ra,0x1 + 80002c38: 3ec08093 addi ra,ra,1004 # 80004020 + 80002c3c: 58213137 lui sp,0x58213 + 80002c40: 0981011b addiw sp,sp,152 + 80002c44: ffd08093 addi ra,ra,-3 + 80002c48: 0020a3a3 sw sp,7(ra) + 80002c4c: 00001217 auipc tp,0x1 + 80002c50: 3d820213 addi tp,tp,984 # 80004024 + 80002c54: 00022283 lw t0,0(tp) # 0 <_start-0x80000000> + 80002c58: 58213eb7 lui t4,0x58213 + 80002c5c: 098e8e9b addiw t4,t4,152 + 80002c60: 00b00193 li gp,11 + 80002c64: 2fd29463 bne t0,t4,80002f4c + +0000000080002c68 : + 80002c68: 00c00193 li gp,12 + 80002c6c: 00000213 li tp,0 + 80002c70: aabbd0b7 lui ra,0xaabbd + 80002c74: cdd0809b addiw ra,ra,-803 + 80002c78: 00001117 auipc sp,0x1 + 80002c7c: 38810113 addi sp,sp,904 # 80004000 + 80002c80: 00112023 sw ra,0(sp) + 80002c84: 00012f03 lw t5,0(sp) + 80002c88: aabbdeb7 lui t4,0xaabbd + 80002c8c: cdde8e9b addiw t4,t4,-803 + 80002c90: 2bdf1e63 bne t5,t4,80002f4c + 80002c94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c98: 00200293 li t0,2 + 80002c9c: fc521ae3 bne tp,t0,80002c70 + +0000000080002ca0 : + 80002ca0: 00d00193 li gp,13 + 80002ca4: 00000213 li tp,0 + 80002ca8: daabc0b7 lui ra,0xdaabc + 80002cac: ccd0809b addiw ra,ra,-819 + 80002cb0: 00001117 auipc sp,0x1 + 80002cb4: 35010113 addi sp,sp,848 # 80004000 + 80002cb8: 00000013 nop + 80002cbc: 00112223 sw ra,4(sp) + 80002cc0: 00412f03 lw t5,4(sp) + 80002cc4: daabceb7 lui t4,0xdaabc + 80002cc8: ccde8e9b addiw t4,t4,-819 + 80002ccc: 29df1063 bne t5,t4,80002f4c + 80002cd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd4: 00200293 li t0,2 + 80002cd8: fc5218e3 bne tp,t0,80002ca8 + +0000000080002cdc : + 80002cdc: 00e00193 li gp,14 + 80002ce0: 00000213 li tp,0 + 80002ce4: ddaac0b7 lui ra,0xddaac + 80002ce8: bcc0809b addiw ra,ra,-1076 + 80002cec: 00001117 auipc sp,0x1 + 80002cf0: 31410113 addi sp,sp,788 # 80004000 + 80002cf4: 00000013 nop + 80002cf8: 00000013 nop + 80002cfc: 00112423 sw ra,8(sp) + 80002d00: 00812f03 lw t5,8(sp) + 80002d04: ddaaceb7 lui t4,0xddaac + 80002d08: bcce8e9b addiw t4,t4,-1076 + 80002d0c: 25df1063 bne t5,t4,80002f4c + 80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d14: 00200293 li t0,2 + 80002d18: fc5216e3 bne tp,t0,80002ce4 + +0000000080002d1c : + 80002d1c: 00f00193 li gp,15 + 80002d20: 00000213 li tp,0 + 80002d24: cddab0b7 lui ra,0xcddab + 80002d28: bbc0809b addiw ra,ra,-1092 + 80002d2c: 00000013 nop + 80002d30: 00001117 auipc sp,0x1 + 80002d34: 2d010113 addi sp,sp,720 # 80004000 + 80002d38: 00112623 sw ra,12(sp) + 80002d3c: 00c12f03 lw t5,12(sp) + 80002d40: cddabeb7 lui t4,0xcddab + 80002d44: bbce8e9b addiw t4,t4,-1092 + 80002d48: 21df1263 bne t5,t4,80002f4c + 80002d4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d50: 00200293 li t0,2 + 80002d54: fc5218e3 bne tp,t0,80002d24 + +0000000080002d58 : + 80002d58: 01000193 li gp,16 + 80002d5c: 00000213 li tp,0 + 80002d60: ccddb0b7 lui ra,0xccddb + 80002d64: abb0809b addiw ra,ra,-1349 + 80002d68: 00000013 nop + 80002d6c: 00001117 auipc sp,0x1 + 80002d70: 29410113 addi sp,sp,660 # 80004000 + 80002d74: 00000013 nop + 80002d78: 00112823 sw ra,16(sp) + 80002d7c: 01012f03 lw t5,16(sp) + 80002d80: ccddbeb7 lui t4,0xccddb + 80002d84: abbe8e9b addiw t4,t4,-1349 + 80002d88: 1ddf1263 bne t5,t4,80002f4c + 80002d8c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d90: 00200293 li t0,2 + 80002d94: fc5216e3 bne tp,t0,80002d60 + +0000000080002d98 : + 80002d98: 01100193 li gp,17 + 80002d9c: 00000213 li tp,0 + 80002da0: bccde0b7 lui ra,0xbccde + 80002da4: aab0809b addiw ra,ra,-1365 + 80002da8: 00000013 nop + 80002dac: 00000013 nop + 80002db0: 00001117 auipc sp,0x1 + 80002db4: 25010113 addi sp,sp,592 # 80004000 + 80002db8: 00112a23 sw ra,20(sp) + 80002dbc: 01412f03 lw t5,20(sp) + 80002dc0: bccdeeb7 lui t4,0xbccde + 80002dc4: aabe8e9b addiw t4,t4,-1365 + 80002dc8: 19df1263 bne t5,t4,80002f4c + 80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd0: 00200293 li t0,2 + 80002dd4: fc5216e3 bne tp,t0,80002da0 + +0000000080002dd8 : + 80002dd8: 01200193 li gp,18 + 80002ddc: 00000213 li tp,0 + 80002de0: 00001117 auipc sp,0x1 + 80002de4: 22010113 addi sp,sp,544 # 80004000 + 80002de8: 001120b7 lui ra,0x112 + 80002dec: 2330809b addiw ra,ra,563 + 80002df0: 00112023 sw ra,0(sp) + 80002df4: 00012f03 lw t5,0(sp) + 80002df8: 00112eb7 lui t4,0x112 + 80002dfc: 233e8e9b addiw t4,t4,563 + 80002e00: 15df1663 bne t5,t4,80002f4c + 80002e04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e08: 00200293 li t0,2 + 80002e0c: fc521ae3 bne tp,t0,80002de0 + +0000000080002e10 : + 80002e10: 01300193 li gp,19 + 80002e14: 00000213 li tp,0 + 80002e18: 00001117 auipc sp,0x1 + 80002e1c: 1e810113 addi sp,sp,488 # 80004000 + 80002e20: 300110b7 lui ra,0x30011 + 80002e24: 2230809b addiw ra,ra,547 + 80002e28: 00000013 nop + 80002e2c: 00112223 sw ra,4(sp) + 80002e30: 00412f03 lw t5,4(sp) + 80002e34: 30011eb7 lui t4,0x30011 + 80002e38: 223e8e9b addiw t4,t4,547 + 80002e3c: 11df1863 bne t5,t4,80002f4c + 80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e44: 00200293 li t0,2 + 80002e48: fc5218e3 bne tp,t0,80002e18 + +0000000080002e4c : + 80002e4c: 01400193 li gp,20 + 80002e50: 00000213 li tp,0 + 80002e54: 00001117 auipc sp,0x1 + 80002e58: 1ac10113 addi sp,sp,428 # 80004000 + 80002e5c: 330010b7 lui ra,0x33001 + 80002e60: 1220809b addiw ra,ra,290 + 80002e64: 00000013 nop + 80002e68: 00000013 nop + 80002e6c: 00112423 sw ra,8(sp) + 80002e70: 00812f03 lw t5,8(sp) + 80002e74: 33001eb7 lui t4,0x33001 + 80002e78: 122e8e9b addiw t4,t4,290 + 80002e7c: 0ddf1863 bne t5,t4,80002f4c + 80002e80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e84: 00200293 li t0,2 + 80002e88: fc5216e3 bne tp,t0,80002e54 + +0000000080002e8c : + 80002e8c: 01500193 li gp,21 + 80002e90: 00000213 li tp,0 + 80002e94: 00001117 auipc sp,0x1 + 80002e98: 16c10113 addi sp,sp,364 # 80004000 + 80002e9c: 00000013 nop + 80002ea0: 233000b7 lui ra,0x23300 + 80002ea4: 1120809b addiw ra,ra,274 + 80002ea8: 00112623 sw ra,12(sp) + 80002eac: 00c12f03 lw t5,12(sp) + 80002eb0: 23300eb7 lui t4,0x23300 + 80002eb4: 112e8e9b addiw t4,t4,274 + 80002eb8: 09df1a63 bne t5,t4,80002f4c + 80002ebc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ec0: 00200293 li t0,2 + 80002ec4: fc5218e3 bne tp,t0,80002e94 + +0000000080002ec8 : + 80002ec8: 01600193 li gp,22 + 80002ecc: 00000213 li tp,0 + 80002ed0: 00001117 auipc sp,0x1 + 80002ed4: 13010113 addi sp,sp,304 # 80004000 + 80002ed8: 00000013 nop + 80002edc: 223300b7 lui ra,0x22330 + 80002ee0: 0110809b addiw ra,ra,17 + 80002ee4: 00000013 nop + 80002ee8: 00112823 sw ra,16(sp) + 80002eec: 01012f03 lw t5,16(sp) + 80002ef0: 22330eb7 lui t4,0x22330 + 80002ef4: 011e8e9b addiw t4,t4,17 + 80002ef8: 05df1a63 bne t5,t4,80002f4c + 80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f00: 00200293 li t0,2 + 80002f04: fc5216e3 bne tp,t0,80002ed0 + +0000000080002f08 : + 80002f08: 01700193 li gp,23 + 80002f0c: 00000213 li tp,0 + 80002f10: 00001117 auipc sp,0x1 + 80002f14: 0f010113 addi sp,sp,240 # 80004000 + 80002f18: 00000013 nop + 80002f1c: 00000013 nop + 80002f20: 122330b7 lui ra,0x12233 + 80002f24: 0010809b addiw ra,ra,1 + 80002f28: 00112a23 sw ra,20(sp) + 80002f2c: 01412f03 lw t5,20(sp) + 80002f30: 12233eb7 lui t4,0x12233 + 80002f34: 001e8e9b addiw t4,t4,1 + 80002f38: 01df1a63 bne t5,t4,80002f4c + 80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f40: 00200293 li t0,2 + 80002f44: fc5216e3 bne tp,t0,80002f10 + 80002f48: 00301a63 bne zero,gp,80002f5c + +0000000080002f4c : + 80002f4c: 00119513 slli a0,gp,0x1 + 80002f50: 00050063 beqz a0,80002f50 + 80002f54: 00156513 ori a0,a0,1 + 80002f58: 00000073 ecall + +0000000080002f5c : + 80002f5c: 00100513 li a0,1 + 80002f60: 00000073 ecall + 80002f64: c0001073 unimp + +Disassembly of section .data: + +0000000080004000 : + 80004000: deadbeef jal t4,7ffdf5ea <_start-0x20a16> + +0000000080004004 : + 80004004: deadbeef jal t4,7ffdf5ee <_start-0x20a12> + +0000000080004008 : + 80004008: deadbeef jal t4,7ffdf5f2 <_start-0x20a0e> + +000000008000400c : + 8000400c: deadbeef jal t4,7ffdf5f6 <_start-0x20a0a> + +0000000080004010 : + 80004010: deadbeef jal t4,7ffdf5fa <_start-0x20a06> + +0000000080004014 : + 80004014: deadbeef jal t4,7ffdf5fe <_start-0x20a02> + +0000000080004018 : + 80004018: deadbeef jal t4,7ffdf602 <_start-0x209fe> + +000000008000401c : + 8000401c: deadbeef jal t4,7ffdf606 <_start-0x209fa> + +0000000080004020 : + 80004020: deadbeef jal t4,7ffdf60a <_start-0x209f6> + +0000000080004024 : + 80004024: deadbeef jal t4,7ffdf60e <_start-0x209f2> diff --git a/Tests/isa/rv64ui-v-xor b/Tests/isa/rv64ui-v-xor new file mode 100644 index 0000000..9a17f33 Binary files /dev/null and b/Tests/isa/rv64ui-v-xor differ diff --git a/Tests/isa/rv64ui-v-xor.dump b/Tests/isa/rv64ui-v-xor.dump new file mode 100644 index 0000000..8b95600 --- /dev/null +++ b/Tests/isa/rv64ui-v-xor.dump @@ -0,0 +1,1260 @@ + +rv64ui-v-xor: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: c5868693 addi a3,a3,-936 # 800030b0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: c8c60613 addi a2,a2,-884 # 80003140 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: c5460613 addi a2,a2,-940 # 80003158 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: ba468693 addi a3,a3,-1116 # 800030f8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: bc068693 addi a3,a3,-1088 # 80003230 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: b4060613 addi a2,a2,-1216 # 80003208 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: a7468693 addi a3,a3,-1420 # 80003260 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 99468693 addi a3,a3,-1644 # 800031d0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 92468693 addi a3,a3,-1756 # 80003198 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02900793 li a5,41 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0c2b87b7 lui a5,0xc2b8 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 9f278793 addi a5,a5,-1550 # c2b79f2 <_start-0x73d4860e> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 000100b7 lui ra,0x10 + 80002acc: f010809b addiw ra,ra,-255 + 80002ad0: 01009093 slli ra,ra,0x10 + 80002ad4: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002ad8: 0f0f1137 lui sp,0xf0f1 + 80002adc: f0f1011b addiw sp,sp,-241 + 80002ae0: 0020cf33 xor t5,ra,sp + 80002ae4: 000f0eb7 lui t4,0xf0 + 80002ae8: 0ffe8e9b addiw t4,t4,255 + 80002aec: 00ce9e93 slli t4,t4,0xc + 80002af0: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002af4: 00200193 li gp,2 + 80002af8: 59df1c63 bne t5,t4,80003090 + +0000000080002afc : + 80002afc: 0ff010b7 lui ra,0xff01 + 80002b00: ff00809b addiw ra,ra,-16 + 80002b04: 000f1137 lui sp,0xf1 + 80002b08: f0f1011b addiw sp,sp,-241 + 80002b0c: 00c11113 slli sp,sp,0xc + 80002b10: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002b14: 0020cf33 xor t5,ra,sp + 80002b18: 00010eb7 lui t4,0x10 + 80002b1c: f01e8e9b addiw t4,t4,-255 + 80002b20: 010e9e93 slli t4,t4,0x10 + 80002b24: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002b28: 00300193 li gp,3 + 80002b2c: 57df1263 bne t5,t4,80003090 + +0000000080002b30 : + 80002b30: 00ff00b7 lui ra,0xff0 + 80002b34: 0ff0809b addiw ra,ra,255 + 80002b38: 0f0f1137 lui sp,0xf0f1 + 80002b3c: f0f1011b addiw sp,sp,-241 + 80002b40: 0020cf33 xor t5,ra,sp + 80002b44: 0ff01eb7 lui t4,0xff01 + 80002b48: ff0e8e9b addiw t4,t4,-16 + 80002b4c: 00400193 li gp,4 + 80002b50: 55df1063 bne t5,t4,80003090 + +0000000080002b54 : + 80002b54: 000f00b7 lui ra,0xf0 + 80002b58: 0ff0809b addiw ra,ra,255 + 80002b5c: 00c09093 slli ra,ra,0xc + 80002b60: 00f08093 addi ra,ra,15 # f000f <_start-0x7ff0fff1> + 80002b64: 000f1137 lui sp,0xf1 + 80002b68: f0f1011b addiw sp,sp,-241 + 80002b6c: 00c11113 slli sp,sp,0xc + 80002b70: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002b74: 0020cf33 xor t5,ra,sp + 80002b78: 00ff0eb7 lui t4,0xff0 + 80002b7c: 0ffe8e9b addiw t4,t4,255 + 80002b80: 00500193 li gp,5 + 80002b84: 51df1663 bne t5,t4,80003090 + +0000000080002b88 : + 80002b88: 000100b7 lui ra,0x10 + 80002b8c: f010809b addiw ra,ra,-255 + 80002b90: 01009093 slli ra,ra,0x10 + 80002b94: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002b98: 0f0f1137 lui sp,0xf0f1 + 80002b9c: f0f1011b addiw sp,sp,-241 + 80002ba0: 0020c0b3 xor ra,ra,sp + 80002ba4: 000f0eb7 lui t4,0xf0 + 80002ba8: 0ffe8e9b addiw t4,t4,255 + 80002bac: 00ce9e93 slli t4,t4,0xc + 80002bb0: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002bb4: 00600193 li gp,6 + 80002bb8: 4dd09c63 bne ra,t4,80003090 + +0000000080002bbc : + 80002bbc: 000100b7 lui ra,0x10 + 80002bc0: f010809b addiw ra,ra,-255 + 80002bc4: 01009093 slli ra,ra,0x10 + 80002bc8: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002bcc: 0f0f1137 lui sp,0xf0f1 + 80002bd0: f0f1011b addiw sp,sp,-241 + 80002bd4: 0020c133 xor sp,ra,sp + 80002bd8: 000f0eb7 lui t4,0xf0 + 80002bdc: 0ffe8e9b addiw t4,t4,255 + 80002be0: 00ce9e93 slli t4,t4,0xc + 80002be4: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002be8: 00700193 li gp,7 + 80002bec: 4bd11263 bne sp,t4,80003090 + +0000000080002bf0 : + 80002bf0: 000100b7 lui ra,0x10 + 80002bf4: f010809b addiw ra,ra,-255 + 80002bf8: 01009093 slli ra,ra,0x10 + 80002bfc: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002c00: 0010c0b3 xor ra,ra,ra + 80002c04: 00000e93 li t4,0 + 80002c08: 00800193 li gp,8 + 80002c0c: 49d09263 bne ra,t4,80003090 + +0000000080002c10 : + 80002c10: 00000213 li tp,0 + 80002c14: 000100b7 lui ra,0x10 + 80002c18: f010809b addiw ra,ra,-255 + 80002c1c: 01009093 slli ra,ra,0x10 + 80002c20: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002c24: 0f0f1137 lui sp,0xf0f1 + 80002c28: f0f1011b addiw sp,sp,-241 + 80002c2c: 0020cf33 xor t5,ra,sp + 80002c30: 000f0313 mv t1,t5 + 80002c34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c38: 00200293 li t0,2 + 80002c3c: fc521ce3 bne tp,t0,80002c14 + 80002c40: 000f0eb7 lui t4,0xf0 + 80002c44: 0ffe8e9b addiw t4,t4,255 + 80002c48: 00ce9e93 slli t4,t4,0xc + 80002c4c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002c50: 00900193 li gp,9 + 80002c54: 43d31e63 bne t1,t4,80003090 + +0000000080002c58 : + 80002c58: 00000213 li tp,0 + 80002c5c: 0ff010b7 lui ra,0xff01 + 80002c60: ff00809b addiw ra,ra,-16 + 80002c64: 000f1137 lui sp,0xf1 + 80002c68: f0f1011b addiw sp,sp,-241 + 80002c6c: 00c11113 slli sp,sp,0xc + 80002c70: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002c74: 0020cf33 xor t5,ra,sp + 80002c78: 00000013 nop + 80002c7c: 000f0313 mv t1,t5 + 80002c80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c84: 00200293 li t0,2 + 80002c88: fc521ae3 bne tp,t0,80002c5c + 80002c8c: 00010eb7 lui t4,0x10 + 80002c90: f01e8e9b addiw t4,t4,-255 + 80002c94: 010e9e93 slli t4,t4,0x10 + 80002c98: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002c9c: 00a00193 li gp,10 + 80002ca0: 3fd31863 bne t1,t4,80003090 + +0000000080002ca4 : + 80002ca4: 00000213 li tp,0 + 80002ca8: 00ff00b7 lui ra,0xff0 + 80002cac: 0ff0809b addiw ra,ra,255 + 80002cb0: 0f0f1137 lui sp,0xf0f1 + 80002cb4: f0f1011b addiw sp,sp,-241 + 80002cb8: 0020cf33 xor t5,ra,sp + 80002cbc: 00000013 nop + 80002cc0: 00000013 nop + 80002cc4: 000f0313 mv t1,t5 + 80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ccc: 00200293 li t0,2 + 80002cd0: fc521ce3 bne tp,t0,80002ca8 + 80002cd4: 0ff01eb7 lui t4,0xff01 + 80002cd8: ff0e8e9b addiw t4,t4,-16 + 80002cdc: 00b00193 li gp,11 + 80002ce0: 3bd31863 bne t1,t4,80003090 + +0000000080002ce4 : + 80002ce4: 00000213 li tp,0 + 80002ce8: 000100b7 lui ra,0x10 + 80002cec: f010809b addiw ra,ra,-255 + 80002cf0: 01009093 slli ra,ra,0x10 + 80002cf4: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002cf8: 0f0f1137 lui sp,0xf0f1 + 80002cfc: f0f1011b addiw sp,sp,-241 + 80002d00: 0020cf33 xor t5,ra,sp + 80002d04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d08: 00200293 li t0,2 + 80002d0c: fc521ee3 bne tp,t0,80002ce8 + 80002d10: 000f0eb7 lui t4,0xf0 + 80002d14: 0ffe8e9b addiw t4,t4,255 + 80002d18: 00ce9e93 slli t4,t4,0xc + 80002d1c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002d20: 00c00193 li gp,12 + 80002d24: 37df1663 bne t5,t4,80003090 + +0000000080002d28 : + 80002d28: 00000213 li tp,0 + 80002d2c: 0ff010b7 lui ra,0xff01 + 80002d30: ff00809b addiw ra,ra,-16 + 80002d34: 000f1137 lui sp,0xf1 + 80002d38: f0f1011b addiw sp,sp,-241 + 80002d3c: 00c11113 slli sp,sp,0xc + 80002d40: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002d44: 00000013 nop + 80002d48: 0020cf33 xor t5,ra,sp + 80002d4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d50: 00200293 li t0,2 + 80002d54: fc521ce3 bne tp,t0,80002d2c + 80002d58: 00010eb7 lui t4,0x10 + 80002d5c: f01e8e9b addiw t4,t4,-255 + 80002d60: 010e9e93 slli t4,t4,0x10 + 80002d64: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002d68: 00d00193 li gp,13 + 80002d6c: 33df1263 bne t5,t4,80003090 + +0000000080002d70 : + 80002d70: 00000213 li tp,0 + 80002d74: 00ff00b7 lui ra,0xff0 + 80002d78: 0ff0809b addiw ra,ra,255 + 80002d7c: 0f0f1137 lui sp,0xf0f1 + 80002d80: f0f1011b addiw sp,sp,-241 + 80002d84: 00000013 nop + 80002d88: 00000013 nop + 80002d8c: 0020cf33 xor t5,ra,sp + 80002d90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d94: 00200293 li t0,2 + 80002d98: fc521ee3 bne tp,t0,80002d74 + 80002d9c: 0ff01eb7 lui t4,0xff01 + 80002da0: ff0e8e9b addiw t4,t4,-16 + 80002da4: 00e00193 li gp,14 + 80002da8: 2fdf1463 bne t5,t4,80003090 + +0000000080002dac : + 80002dac: 00000213 li tp,0 + 80002db0: 000100b7 lui ra,0x10 + 80002db4: f010809b addiw ra,ra,-255 + 80002db8: 01009093 slli ra,ra,0x10 + 80002dbc: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002dc0: 00000013 nop + 80002dc4: 0f0f1137 lui sp,0xf0f1 + 80002dc8: f0f1011b addiw sp,sp,-241 + 80002dcc: 0020cf33 xor t5,ra,sp + 80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd4: 00200293 li t0,2 + 80002dd8: fc521ce3 bne tp,t0,80002db0 + 80002ddc: 000f0eb7 lui t4,0xf0 + 80002de0: 0ffe8e9b addiw t4,t4,255 + 80002de4: 00ce9e93 slli t4,t4,0xc + 80002de8: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002dec: 00f00193 li gp,15 + 80002df0: 2bdf1063 bne t5,t4,80003090 + +0000000080002df4 : + 80002df4: 00000213 li tp,0 + 80002df8: 0ff010b7 lui ra,0xff01 + 80002dfc: ff00809b addiw ra,ra,-16 + 80002e00: 00000013 nop + 80002e04: 000f1137 lui sp,0xf1 + 80002e08: f0f1011b addiw sp,sp,-241 + 80002e0c: 00c11113 slli sp,sp,0xc + 80002e10: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002e14: 00000013 nop + 80002e18: 0020cf33 xor t5,ra,sp + 80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e20: 00200293 li t0,2 + 80002e24: fc521ae3 bne tp,t0,80002df8 + 80002e28: 00010eb7 lui t4,0x10 + 80002e2c: f01e8e9b addiw t4,t4,-255 + 80002e30: 010e9e93 slli t4,t4,0x10 + 80002e34: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002e38: 01000193 li gp,16 + 80002e3c: 25df1a63 bne t5,t4,80003090 + +0000000080002e40 : + 80002e40: 00000213 li tp,0 + 80002e44: 00ff00b7 lui ra,0xff0 + 80002e48: 0ff0809b addiw ra,ra,255 + 80002e4c: 00000013 nop + 80002e50: 00000013 nop + 80002e54: 0f0f1137 lui sp,0xf0f1 + 80002e58: f0f1011b addiw sp,sp,-241 + 80002e5c: 0020cf33 xor t5,ra,sp + 80002e60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e64: 00200293 li t0,2 + 80002e68: fc521ee3 bne tp,t0,80002e44 + 80002e6c: 0ff01eb7 lui t4,0xff01 + 80002e70: ff0e8e9b addiw t4,t4,-16 + 80002e74: 01100193 li gp,17 + 80002e78: 21df1c63 bne t5,t4,80003090 + +0000000080002e7c : + 80002e7c: 00000213 li tp,0 + 80002e80: 0f0f1137 lui sp,0xf0f1 + 80002e84: f0f1011b addiw sp,sp,-241 + 80002e88: 000100b7 lui ra,0x10 + 80002e8c: f010809b addiw ra,ra,-255 + 80002e90: 01009093 slli ra,ra,0x10 + 80002e94: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002e98: 0020cf33 xor t5,ra,sp + 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea0: 00200293 li t0,2 + 80002ea4: fc521ee3 bne tp,t0,80002e80 + 80002ea8: 000f0eb7 lui t4,0xf0 + 80002eac: 0ffe8e9b addiw t4,t4,255 + 80002eb0: 00ce9e93 slli t4,t4,0xc + 80002eb4: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002eb8: 01200193 li gp,18 + 80002ebc: 1ddf1a63 bne t5,t4,80003090 + +0000000080002ec0 : + 80002ec0: 00000213 li tp,0 + 80002ec4: 000f1137 lui sp,0xf1 + 80002ec8: f0f1011b addiw sp,sp,-241 + 80002ecc: 00c11113 slli sp,sp,0xc + 80002ed0: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002ed4: 0ff010b7 lui ra,0xff01 + 80002ed8: ff00809b addiw ra,ra,-16 + 80002edc: 00000013 nop + 80002ee0: 0020cf33 xor t5,ra,sp + 80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ee8: 00200293 li t0,2 + 80002eec: fc521ce3 bne tp,t0,80002ec4 + 80002ef0: 00010eb7 lui t4,0x10 + 80002ef4: f01e8e9b addiw t4,t4,-255 + 80002ef8: 010e9e93 slli t4,t4,0x10 + 80002efc: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002f00: 01300193 li gp,19 + 80002f04: 19df1663 bne t5,t4,80003090 + +0000000080002f08 : + 80002f08: 00000213 li tp,0 + 80002f0c: 0f0f1137 lui sp,0xf0f1 + 80002f10: f0f1011b addiw sp,sp,-241 + 80002f14: 00ff00b7 lui ra,0xff0 + 80002f18: 0ff0809b addiw ra,ra,255 + 80002f1c: 00000013 nop + 80002f20: 00000013 nop + 80002f24: 0020cf33 xor t5,ra,sp + 80002f28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f2c: 00200293 li t0,2 + 80002f30: fc521ee3 bne tp,t0,80002f0c + 80002f34: 0ff01eb7 lui t4,0xff01 + 80002f38: ff0e8e9b addiw t4,t4,-16 + 80002f3c: 01400193 li gp,20 + 80002f40: 15df1863 bne t5,t4,80003090 + +0000000080002f44 : + 80002f44: 00000213 li tp,0 + 80002f48: 0f0f1137 lui sp,0xf0f1 + 80002f4c: f0f1011b addiw sp,sp,-241 + 80002f50: 00000013 nop + 80002f54: 000100b7 lui ra,0x10 + 80002f58: f010809b addiw ra,ra,-255 + 80002f5c: 01009093 slli ra,ra,0x10 + 80002f60: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80002f64: 0020cf33 xor t5,ra,sp + 80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f6c: 00200293 li t0,2 + 80002f70: fc521ce3 bne tp,t0,80002f48 + 80002f74: 000f0eb7 lui t4,0xf0 + 80002f78: 0ffe8e9b addiw t4,t4,255 + 80002f7c: 00ce9e93 slli t4,t4,0xc + 80002f80: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1> + 80002f84: 01500193 li gp,21 + 80002f88: 11df1463 bne t5,t4,80003090 + +0000000080002f8c : + 80002f8c: 00000213 li tp,0 + 80002f90: 000f1137 lui sp,0xf1 + 80002f94: f0f1011b addiw sp,sp,-241 + 80002f98: 00c11113 slli sp,sp,0xc + 80002f9c: 0f010113 addi sp,sp,240 # f10f0 <_start-0x7ff0ef10> + 80002fa0: 00000013 nop + 80002fa4: 0ff010b7 lui ra,0xff01 + 80002fa8: ff00809b addiw ra,ra,-16 + 80002fac: 00000013 nop + 80002fb0: 0020cf33 xor t5,ra,sp + 80002fb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002fb8: 00200293 li t0,2 + 80002fbc: fc521ae3 bne tp,t0,80002f90 + 80002fc0: 00010eb7 lui t4,0x10 + 80002fc4: f01e8e9b addiw t4,t4,-255 + 80002fc8: 010e9e93 slli t4,t4,0x10 + 80002fcc: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80002fd0: 01600193 li gp,22 + 80002fd4: 0bdf1e63 bne t5,t4,80003090 + +0000000080002fd8 : + 80002fd8: 00000213 li tp,0 + 80002fdc: 0f0f1137 lui sp,0xf0f1 + 80002fe0: f0f1011b addiw sp,sp,-241 + 80002fe4: 00000013 nop + 80002fe8: 00000013 nop + 80002fec: 00ff00b7 lui ra,0xff0 + 80002ff0: 0ff0809b addiw ra,ra,255 + 80002ff4: 0020cf33 xor t5,ra,sp + 80002ff8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ffc: 00200293 li t0,2 + 80003000: fc521ee3 bne tp,t0,80002fdc + 80003004: 0ff01eb7 lui t4,0xff01 + 80003008: ff0e8e9b addiw t4,t4,-16 + 8000300c: 01700193 li gp,23 + 80003010: 09df1063 bne t5,t4,80003090 + +0000000080003014 : + 80003014: 000100b7 lui ra,0x10 + 80003018: f010809b addiw ra,ra,-255 + 8000301c: 01009093 slli ra,ra,0x10 + 80003020: f0008093 addi ra,ra,-256 # ff00 <_start-0x7fff0100> + 80003024: 00104133 xor sp,zero,ra + 80003028: 00010eb7 lui t4,0x10 + 8000302c: f01e8e9b addiw t4,t4,-255 + 80003030: 010e9e93 slli t4,t4,0x10 + 80003034: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100> + 80003038: 01800193 li gp,24 + 8000303c: 05d11a63 bne sp,t4,80003090 + +0000000080003040 : + 80003040: 00ff00b7 lui ra,0xff0 + 80003044: 0ff0809b addiw ra,ra,255 + 80003048: 0000c133 xor sp,ra,zero + 8000304c: 00ff0eb7 lui t4,0xff0 + 80003050: 0ffe8e9b addiw t4,t4,255 + 80003054: 01900193 li gp,25 + 80003058: 03d11c63 bne sp,t4,80003090 + +000000008000305c : + 8000305c: 000040b3 xor ra,zero,zero + 80003060: 00000e93 li t4,0 + 80003064: 01a00193 li gp,26 + 80003068: 03d09463 bne ra,t4,80003090 + +000000008000306c : + 8000306c: 111110b7 lui ra,0x11111 + 80003070: 1110809b addiw ra,ra,273 + 80003074: 22222137 lui sp,0x22222 + 80003078: 2221011b addiw sp,sp,546 + 8000307c: 0020c033 xor zero,ra,sp + 80003080: 00000e93 li t4,0 + 80003084: 01b00193 li gp,27 + 80003088: 01d01463 bne zero,t4,80003090 + 8000308c: 00301a63 bne zero,gp,800030a0 + +0000000080003090 : + 80003090: 00119513 slli a0,gp,0x1 + 80003094: 00050063 beqz a0,80003094 + 80003098: 00156513 ori a0,a0,1 + 8000309c: 00000073 ecall + +00000000800030a0 : + 800030a0: 00100513 li a0,1 + 800030a4: 00000073 ecall + 800030a8: c0001073 unimp diff --git a/Tests/isa/rv64ui-v-xori b/Tests/isa/rv64ui-v-xori new file mode 100644 index 0000000..554ddd1 Binary files /dev/null and b/Tests/isa/rv64ui-v-xori differ diff --git a/Tests/isa/rv64ui-v-xori.dump b/Tests/isa/rv64ui-v-xori.dump new file mode 100644 index 0000000..cc0d051 --- /dev/null +++ b/Tests/isa/rv64ui-v-xori.dump @@ -0,0 +1,985 @@ + +rv64ui-v-xori: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: 87068693 addi a3,a3,-1936 # 80002cc8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: 8a460613 addi a2,a2,-1884 # 80002d58 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: 86c60613 addi a2,a2,-1940 # 80002d70 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 7bc68693 addi a3,a3,1980 # 80002d10 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 7d868693 addi a3,a3,2008 # 80002e48 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 75860613 addi a2,a2,1880 # 80002e20 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 68c68693 addi a3,a3,1676 # 80002e78 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 5ac68693 addi a3,a3,1452 # 80002de8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 53c68693 addi a3,a3,1340 # 80002db0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02400793 li a5,36 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 08da87b7 lui a5,0x8da8 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: ffc78793 addi a5,a5,-4 # 8da7ffc <_start-0x77258004> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00ff10b7 lui ra,0xff1 + 80002acc: f000809b addiw ra,ra,-256 + 80002ad0: f0f0cf13 xori t5,ra,-241 + 80002ad4: ff00feb7 lui t4,0xff00f + 80002ad8: 00fe8e9b addiw t4,t4,15 + 80002adc: 00200193 li gp,2 + 80002ae0: 1ddf1663 bne t5,t4,80002cac + +0000000080002ae4 : + 80002ae4: 0ff010b7 lui ra,0xff01 + 80002ae8: ff00809b addiw ra,ra,-16 + 80002aec: 0f00cf13 xori t5,ra,240 + 80002af0: 0ff01eb7 lui t4,0xff01 + 80002af4: f00e8e9b addiw t4,t4,-256 + 80002af8: 00300193 li gp,3 + 80002afc: 1bdf1863 bne t5,t4,80002cac + +0000000080002b00 : + 80002b00: 00ff10b7 lui ra,0xff1 + 80002b04: 8ff0809b addiw ra,ra,-1793 + 80002b08: 70f0cf13 xori t5,ra,1807 + 80002b0c: 00ff1eb7 lui t4,0xff1 + 80002b10: ff0e8e9b addiw t4,t4,-16 + 80002b14: 00400193 li gp,4 + 80002b18: 19df1a63 bne t5,t4,80002cac + +0000000080002b1c : + 80002b1c: f00ff0b7 lui ra,0xf00ff + 80002b20: 00f0809b addiw ra,ra,15 + 80002b24: 0f00cf13 xori t5,ra,240 + 80002b28: f00ffeb7 lui t4,0xf00ff + 80002b2c: 0ffe8e9b addiw t4,t4,255 + 80002b30: 00500193 li gp,5 + 80002b34: 17df1c63 bne t5,t4,80002cac + +0000000080002b38 : + 80002b38: ff00f0b7 lui ra,0xff00f + 80002b3c: 7000809b addiw ra,ra,1792 + 80002b40: 70f0c093 xori ra,ra,1807 + 80002b44: ff00feb7 lui t4,0xff00f + 80002b48: 00fe8e9b addiw t4,t4,15 + 80002b4c: 00600193 li gp,6 + 80002b50: 15d09e63 bne ra,t4,80002cac + +0000000080002b54 : + 80002b54: 00000213 li tp,0 + 80002b58: 0ff010b7 lui ra,0xff01 + 80002b5c: ff00809b addiw ra,ra,-16 + 80002b60: 0f00cf13 xori t5,ra,240 + 80002b64: 000f0313 mv t1,t5 + 80002b68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002b6c: 00200293 li t0,2 + 80002b70: fe5214e3 bne tp,t0,80002b58 + 80002b74: 0ff01eb7 lui t4,0xff01 + 80002b78: f00e8e9b addiw t4,t4,-256 + 80002b7c: 00700193 li gp,7 + 80002b80: 13d31663 bne t1,t4,80002cac + +0000000080002b84 : + 80002b84: 00000213 li tp,0 + 80002b88: 00ff10b7 lui ra,0xff1 + 80002b8c: 8ff0809b addiw ra,ra,-1793 + 80002b90: 70f0cf13 xori t5,ra,1807 + 80002b94: 00000013 nop + 80002b98: 000f0313 mv t1,t5 + 80002b9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ba0: 00200293 li t0,2 + 80002ba4: fe5212e3 bne tp,t0,80002b88 + 80002ba8: 00ff1eb7 lui t4,0xff1 + 80002bac: ff0e8e9b addiw t4,t4,-16 + 80002bb0: 00800193 li gp,8 + 80002bb4: 0fd31c63 bne t1,t4,80002cac + +0000000080002bb8 : + 80002bb8: 00000213 li tp,0 + 80002bbc: f00ff0b7 lui ra,0xf00ff + 80002bc0: 00f0809b addiw ra,ra,15 + 80002bc4: 0f00cf13 xori t5,ra,240 + 80002bc8: 00000013 nop + 80002bcc: 00000013 nop + 80002bd0: 000f0313 mv t1,t5 + 80002bd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bd8: 00200293 li t0,2 + 80002bdc: fe5210e3 bne tp,t0,80002bbc + 80002be0: f00ffeb7 lui t4,0xf00ff + 80002be4: 0ffe8e9b addiw t4,t4,255 + 80002be8: 00900193 li gp,9 + 80002bec: 0dd31063 bne t1,t4,80002cac + +0000000080002bf0 : + 80002bf0: 00000213 li tp,0 + 80002bf4: 0ff010b7 lui ra,0xff01 + 80002bf8: ff00809b addiw ra,ra,-16 + 80002bfc: 0f00cf13 xori t5,ra,240 + 80002c00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c04: 00200293 li t0,2 + 80002c08: fe5216e3 bne tp,t0,80002bf4 + 80002c0c: 0ff01eb7 lui t4,0xff01 + 80002c10: f00e8e9b addiw t4,t4,-256 + 80002c14: 00a00193 li gp,10 + 80002c18: 09df1a63 bne t5,t4,80002cac + +0000000080002c1c : + 80002c1c: 00000213 li tp,0 + 80002c20: 00ff10b7 lui ra,0xff1 + 80002c24: fff0809b addiw ra,ra,-1 + 80002c28: 00000013 nop + 80002c2c: 00f0cf13 xori t5,ra,15 + 80002c30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c34: 00200293 li t0,2 + 80002c38: fe5214e3 bne tp,t0,80002c20 + 80002c3c: 00ff1eb7 lui t4,0xff1 + 80002c40: ff0e8e9b addiw t4,t4,-16 + 80002c44: 00b00193 li gp,11 + 80002c48: 07df1263 bne t5,t4,80002cac + +0000000080002c4c : + 80002c4c: 00000213 li tp,0 + 80002c50: f00ff0b7 lui ra,0xf00ff + 80002c54: 00f0809b addiw ra,ra,15 + 80002c58: 00000013 nop + 80002c5c: 00000013 nop + 80002c60: 0f00cf13 xori t5,ra,240 + 80002c64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c68: 00200293 li t0,2 + 80002c6c: fe5212e3 bne tp,t0,80002c50 + 80002c70: f00ffeb7 lui t4,0xf00ff + 80002c74: 0ffe8e9b addiw t4,t4,255 + 80002c78: 00c00193 li gp,12 + 80002c7c: 03df1863 bne t5,t4,80002cac + +0000000080002c80 : + 80002c80: 0f004093 xori ra,zero,240 + 80002c84: 0f000e93 li t4,240 + 80002c88: 00d00193 li gp,13 + 80002c8c: 03d09063 bne ra,t4,80002cac + +0000000080002c90 : + 80002c90: 00ff00b7 lui ra,0xff0 + 80002c94: 0ff0809b addiw ra,ra,255 + 80002c98: 70f0c013 xori zero,ra,1807 + 80002c9c: 00000e93 li t4,0 + 80002ca0: 00e00193 li gp,14 + 80002ca4: 01d01463 bne zero,t4,80002cac + 80002ca8: 00301a63 bne zero,gp,80002cbc + +0000000080002cac : + 80002cac: 00119513 slli a0,gp,0x1 + 80002cb0: 00050063 beqz a0,80002cb0 + 80002cb4: 00156513 ori a0,a0,1 + 80002cb8: 00000073 ecall + +0000000080002cbc : + 80002cbc: 00100513 li a0,1 + 80002cc0: 00000073 ecall + 80002cc4: c0001073 unimp diff --git a/Tests/isa/rv64um-p-div b/Tests/isa/rv64um-p-div new file mode 100644 index 0000000..6ee7be0 Binary files /dev/null and b/Tests/isa/rv64um-p-div differ diff --git a/Tests/isa/rv64um-p-div.dump b/Tests/isa/rv64um-p-div.dump new file mode 100644 index 0000000..b117c5c --- /dev/null +++ b/Tests/isa/rv64um-p-div.dump @@ -0,0 +1,195 @@ + +rv64um-p-div: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220cf33 div t5,ra,sp + 80000108: 00300e93 li t4,3 + 8000010c: 00200193 li gp,2 + 80000110: 0ddf1e63 bne t5,t4,800001ec + +0000000080000114 : + 80000114: fec00093 li ra,-20 + 80000118: 00600113 li sp,6 + 8000011c: 0220cf33 div t5,ra,sp + 80000120: ffd00e93 li t4,-3 + 80000124: 00300193 li gp,3 + 80000128: 0ddf1263 bne t5,t4,800001ec + +000000008000012c : + 8000012c: 01400093 li ra,20 + 80000130: ffa00113 li sp,-6 + 80000134: 0220cf33 div t5,ra,sp + 80000138: ffd00e93 li t4,-3 + 8000013c: 00400193 li gp,4 + 80000140: 0bdf1663 bne t5,t4,800001ec + +0000000080000144 : + 80000144: fec00093 li ra,-20 + 80000148: ffa00113 li sp,-6 + 8000014c: 0220cf33 div t5,ra,sp + 80000150: 00300e93 li t4,3 + 80000154: 00500193 li gp,5 + 80000158: 09df1a63 bne t5,t4,800001ec + +000000008000015c : + 8000015c: fff0009b addiw ra,zero,-1 + 80000160: 03f09093 slli ra,ra,0x3f + 80000164: 00100113 li sp,1 + 80000168: 0220cf33 div t5,ra,sp + 8000016c: fff00e9b addiw t4,zero,-1 + 80000170: 03fe9e93 slli t4,t4,0x3f + 80000174: 00600193 li gp,6 + 80000178: 07df1a63 bne t5,t4,800001ec + +000000008000017c : + 8000017c: fff0009b addiw ra,zero,-1 + 80000180: 03f09093 slli ra,ra,0x3f + 80000184: fff00113 li sp,-1 + 80000188: 0220cf33 div t5,ra,sp + 8000018c: fff00e9b addiw t4,zero,-1 + 80000190: 03fe9e93 slli t4,t4,0x3f + 80000194: 00700193 li gp,7 + 80000198: 05df1a63 bne t5,t4,800001ec + +000000008000019c : + 8000019c: fff0009b addiw ra,zero,-1 + 800001a0: 03f09093 slli ra,ra,0x3f + 800001a4: 00000113 li sp,0 + 800001a8: 0220cf33 div t5,ra,sp + 800001ac: fff00e93 li t4,-1 + 800001b0: 00800193 li gp,8 + 800001b4: 03df1c63 bne t5,t4,800001ec + +00000000800001b8 : + 800001b8: 00100093 li ra,1 + 800001bc: 00000113 li sp,0 + 800001c0: 0220cf33 div t5,ra,sp + 800001c4: fff00e93 li t4,-1 + 800001c8: 00900193 li gp,9 + 800001cc: 03df1063 bne t5,t4,800001ec + +00000000800001d0 : + 800001d0: 00000093 li ra,0 + 800001d4: 00000113 li sp,0 + 800001d8: 0220cf33 div t5,ra,sp + 800001dc: fff00e93 li t4,-1 + 800001e0: 00a00193 li gp,10 + 800001e4: 01df1463 bne t5,t4,800001ec + 800001e8: 00301c63 bne zero,gp,80000200 + +00000000800001ec : + 800001ec: 0ff0000f fence + 800001f0: 00018063 beqz gp,800001f0 + 800001f4: 00119193 slli gp,gp,0x1 + 800001f8: 0011e193 ori gp,gp,1 + 800001fc: 00000073 ecall + +0000000080000200 : + 80000200: 0ff0000f fence + 80000204: 00100193 li gp,1 + 80000208: 00000073 ecall + 8000020c: c0001073 unimp + 80000210: 0000 unimp + 80000212: 0000 unimp + 80000214: 0000 unimp + 80000216: 0000 unimp + 80000218: 0000 unimp + 8000021a: 0000 unimp + 8000021c: 0000 unimp + 8000021e: 0000 unimp + 80000220: 0000 unimp + 80000222: 0000 unimp + 80000224: 0000 unimp + 80000226: 0000 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64um-p-divu b/Tests/isa/rv64um-p-divu new file mode 100644 index 0000000..25d969b Binary files /dev/null and b/Tests/isa/rv64um-p-divu differ diff --git a/Tests/isa/rv64um-p-divu.dump b/Tests/isa/rv64um-p-divu.dump new file mode 100644 index 0000000..f987025 --- /dev/null +++ b/Tests/isa/rv64um-p-divu.dump @@ -0,0 +1,189 @@ + +rv64um-p-divu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220df33 divu t5,ra,sp + 80000108: 00300e93 li t4,3 + 8000010c: 00200193 li gp,2 + 80000110: 0fdf1a63 bne t5,t4,80000204 + +0000000080000114 : + 80000114: fec00093 li ra,-20 + 80000118: 00600113 li sp,6 + 8000011c: 0220df33 divu t5,ra,sp + 80000120: 02aabeb7 lui t4,0x2aab + 80000124: aabe8e9b addiw t4,t4,-1365 + 80000128: 00ce9e93 slli t4,t4,0xc + 8000012c: aabe8e93 addi t4,t4,-1365 # 2aaaaab <_start-0x7d555555> + 80000130: 00ce9e93 slli t4,t4,0xc + 80000134: aabe8e93 addi t4,t4,-1365 + 80000138: 00ce9e93 slli t4,t4,0xc + 8000013c: aa7e8e93 addi t4,t4,-1369 + 80000140: 00300193 li gp,3 + 80000144: 0ddf1063 bne t5,t4,80000204 + +0000000080000148 : + 80000148: 01400093 li ra,20 + 8000014c: ffa00113 li sp,-6 + 80000150: 0220df33 divu t5,ra,sp + 80000154: 00000e93 li t4,0 + 80000158: 00400193 li gp,4 + 8000015c: 0bdf1463 bne t5,t4,80000204 + +0000000080000160 : + 80000160: fec00093 li ra,-20 + 80000164: ffa00113 li sp,-6 + 80000168: 0220df33 divu t5,ra,sp + 8000016c: 00000e93 li t4,0 + 80000170: 00500193 li gp,5 + 80000174: 09df1863 bne t5,t4,80000204 + +0000000080000178 : + 80000178: fff0009b addiw ra,zero,-1 + 8000017c: 03f09093 slli ra,ra,0x3f + 80000180: 00100113 li sp,1 + 80000184: 0220df33 divu t5,ra,sp + 80000188: fff00e9b addiw t4,zero,-1 + 8000018c: 03fe9e93 slli t4,t4,0x3f + 80000190: 00600193 li gp,6 + 80000194: 07df1863 bne t5,t4,80000204 + +0000000080000198 : + 80000198: fff0009b addiw ra,zero,-1 + 8000019c: 03f09093 slli ra,ra,0x3f + 800001a0: fff00113 li sp,-1 + 800001a4: 0220df33 divu t5,ra,sp + 800001a8: 00000e93 li t4,0 + 800001ac: 00700193 li gp,7 + 800001b0: 05df1a63 bne t5,t4,80000204 + +00000000800001b4 : + 800001b4: fff0009b addiw ra,zero,-1 + 800001b8: 03f09093 slli ra,ra,0x3f + 800001bc: 00000113 li sp,0 + 800001c0: 0220df33 divu t5,ra,sp + 800001c4: fff00e93 li t4,-1 + 800001c8: 00800193 li gp,8 + 800001cc: 03df1c63 bne t5,t4,80000204 + +00000000800001d0 : + 800001d0: 00100093 li ra,1 + 800001d4: 00000113 li sp,0 + 800001d8: 0220df33 divu t5,ra,sp + 800001dc: fff00e93 li t4,-1 + 800001e0: 00900193 li gp,9 + 800001e4: 03df1063 bne t5,t4,80000204 + +00000000800001e8 : + 800001e8: 00000093 li ra,0 + 800001ec: 00000113 li sp,0 + 800001f0: 0220df33 divu t5,ra,sp + 800001f4: fff00e93 li t4,-1 + 800001f8: 00a00193 li gp,10 + 800001fc: 01df1463 bne t5,t4,80000204 + 80000200: 00301c63 bne zero,gp,80000218 + +0000000080000204 : + 80000204: 0ff0000f fence + 80000208: 00018063 beqz gp,80000208 + 8000020c: 00119193 slli gp,gp,0x1 + 80000210: 0011e193 ori gp,gp,1 + 80000214: 00000073 ecall + +0000000080000218 : + 80000218: 0ff0000f fence + 8000021c: 00100193 li gp,1 + 80000220: 00000073 ecall + 80000224: c0001073 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64um-p-divuw b/Tests/isa/rv64um-p-divuw new file mode 100644 index 0000000..0c9da25 Binary files /dev/null and b/Tests/isa/rv64um-p-divuw differ diff --git a/Tests/isa/rv64um-p-divuw.dump b/Tests/isa/rv64um-p-divuw.dump new file mode 100644 index 0000000..576f263 --- /dev/null +++ b/Tests/isa/rv64um-p-divuw.dump @@ -0,0 +1,197 @@ + +rv64um-p-divuw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220df3b divuw t5,ra,sp + 80000108: 00300e93 li t4,3 + 8000010c: 00200193 li gp,2 + 80000110: 0ddf1a63 bne t5,t4,800001e4 + +0000000080000114 : + 80000114: 0010009b addiw ra,zero,1 + 80000118: 02009093 slli ra,ra,0x20 + 8000011c: fec08093 addi ra,ra,-20 + 80000120: 00600113 li sp,6 + 80000124: 0220df3b divuw t5,ra,sp + 80000128: 2aaabeb7 lui t4,0x2aaab + 8000012c: aa7e8e9b addiw t4,t4,-1369 + 80000130: 00300193 li gp,3 + 80000134: 0bdf1863 bne t5,t4,800001e4 + +0000000080000138 : + 80000138: 01400093 li ra,20 + 8000013c: ffa00113 li sp,-6 + 80000140: 0220df3b divuw t5,ra,sp + 80000144: 00000e93 li t4,0 + 80000148: 00400193 li gp,4 + 8000014c: 09df1c63 bne t5,t4,800001e4 + +0000000080000150 : + 80000150: fec00093 li ra,-20 + 80000154: ffa00113 li sp,-6 + 80000158: 0220df3b divuw t5,ra,sp + 8000015c: 00000e93 li t4,0 + 80000160: 00500193 li gp,5 + 80000164: 09df1063 bne t5,t4,800001e4 + +0000000080000168 : + 80000168: 800000b7 lui ra,0x80000 + 8000016c: 00100113 li sp,1 + 80000170: 0220df3b divuw t5,ra,sp + 80000174: 80000eb7 lui t4,0x80000 + 80000178: 00600193 li gp,6 + 8000017c: 07df1463 bne t5,t4,800001e4 + +0000000080000180 : + 80000180: 800000b7 lui ra,0x80000 + 80000184: fff00113 li sp,-1 + 80000188: 0220df3b divuw t5,ra,sp + 8000018c: 00000e93 li t4,0 + 80000190: 00700193 li gp,7 + 80000194: 05df1863 bne t5,t4,800001e4 + +0000000080000198 : + 80000198: 800000b7 lui ra,0x80000 + 8000019c: 00000113 li sp,0 + 800001a0: 0220df3b divuw t5,ra,sp + 800001a4: fff00e93 li t4,-1 + 800001a8: 00800193 li gp,8 + 800001ac: 03df1c63 bne t5,t4,800001e4 + +00000000800001b0 : + 800001b0: 00100093 li ra,1 + 800001b4: 00000113 li sp,0 + 800001b8: 0220df3b divuw t5,ra,sp + 800001bc: fff00e93 li t4,-1 + 800001c0: 00900193 li gp,9 + 800001c4: 03df1063 bne t5,t4,800001e4 + +00000000800001c8 : + 800001c8: 00000093 li ra,0 + 800001cc: 00000113 li sp,0 + 800001d0: 0220df3b divuw t5,ra,sp + 800001d4: fff00e93 li t4,-1 + 800001d8: 00a00193 li gp,10 + 800001dc: 01df1463 bne t5,t4,800001e4 + 800001e0: 00301c63 bne zero,gp,800001f8 + +00000000800001e4 : + 800001e4: 0ff0000f fence + 800001e8: 00018063 beqz gp,800001e8 + 800001ec: 00119193 slli gp,gp,0x1 + 800001f0: 0011e193 ori gp,gp,1 + 800001f4: 00000073 ecall + +00000000800001f8 : + 800001f8: 0ff0000f fence + 800001fc: 00100193 li gp,1 + 80000200: 00000073 ecall + 80000204: c0001073 unimp + 80000208: 0000 unimp + 8000020a: 0000 unimp + 8000020c: 0000 unimp + 8000020e: 0000 unimp + 80000210: 0000 unimp + 80000212: 0000 unimp + 80000214: 0000 unimp + 80000216: 0000 unimp + 80000218: 0000 unimp + 8000021a: 0000 unimp + 8000021c: 0000 unimp + 8000021e: 0000 unimp + 80000220: 0000 unimp + 80000222: 0000 unimp + 80000224: 0000 unimp + 80000226: 0000 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64um-p-divw b/Tests/isa/rv64um-p-divw new file mode 100644 index 0000000..1ebdca3 Binary files /dev/null and b/Tests/isa/rv64um-p-divw differ diff --git a/Tests/isa/rv64um-p-divw.dump b/Tests/isa/rv64um-p-divw.dump new file mode 100644 index 0000000..2d331a9 --- /dev/null +++ b/Tests/isa/rv64um-p-divw.dump @@ -0,0 +1,168 @@ + +rv64um-p-divw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220cf3b divw t5,ra,sp + 80000108: 00300e93 li t4,3 + 8000010c: 00200193 li gp,2 + 80000110: 0ddf1463 bne t5,t4,800001d8 + +0000000080000114 : + 80000114: fec00093 li ra,-20 + 80000118: 00600113 li sp,6 + 8000011c: 0220cf3b divw t5,ra,sp + 80000120: ffd00e93 li t4,-3 + 80000124: 00300193 li gp,3 + 80000128: 0bdf1863 bne t5,t4,800001d8 + +000000008000012c : + 8000012c: 01400093 li ra,20 + 80000130: ffa00113 li sp,-6 + 80000134: 0220cf3b divw t5,ra,sp + 80000138: ffd00e93 li t4,-3 + 8000013c: 00400193 li gp,4 + 80000140: 09df1c63 bne t5,t4,800001d8 + +0000000080000144 : + 80000144: fec00093 li ra,-20 + 80000148: ffa00113 li sp,-6 + 8000014c: 0220cf3b divw t5,ra,sp + 80000150: 00300e93 li t4,3 + 80000154: 00500193 li gp,5 + 80000158: 09df1063 bne t5,t4,800001d8 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00100113 li sp,1 + 80000164: 0220cf3b divw t5,ra,sp + 80000168: 80000eb7 lui t4,0x80000 + 8000016c: 00600193 li gp,6 + 80000170: 07df1463 bne t5,t4,800001d8 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: fff00113 li sp,-1 + 8000017c: 0220cf3b divw t5,ra,sp + 80000180: 80000eb7 lui t4,0x80000 + 80000184: 00700193 li gp,7 + 80000188: 05df1863 bne t5,t4,800001d8 + +000000008000018c : + 8000018c: 800000b7 lui ra,0x80000 + 80000190: 00000113 li sp,0 + 80000194: 0220cf3b divw t5,ra,sp + 80000198: fff00e93 li t4,-1 + 8000019c: 00800193 li gp,8 + 800001a0: 03df1c63 bne t5,t4,800001d8 + +00000000800001a4 : + 800001a4: 00100093 li ra,1 + 800001a8: 00000113 li sp,0 + 800001ac: 0220cf3b divw t5,ra,sp + 800001b0: fff00e93 li t4,-1 + 800001b4: 00900193 li gp,9 + 800001b8: 03df1063 bne t5,t4,800001d8 + +00000000800001bc : + 800001bc: 00000093 li ra,0 + 800001c0: 00000113 li sp,0 + 800001c4: 0220cf3b divw t5,ra,sp + 800001c8: fff00e93 li t4,-1 + 800001cc: 00a00193 li gp,10 + 800001d0: 01df1463 bne t5,t4,800001d8 + 800001d4: 00301c63 bne zero,gp,800001ec + +00000000800001d8 : + 800001d8: 0ff0000f fence + 800001dc: 00018063 beqz gp,800001dc + 800001e0: 00119193 slli gp,gp,0x1 + 800001e4: 0011e193 ori gp,gp,1 + 800001e8: 00000073 ecall + +00000000800001ec : + 800001ec: 0ff0000f fence + 800001f0: 00100193 li gp,1 + 800001f4: 00000073 ecall + 800001f8: c0001073 unimp + 800001fc: 0000 unimp + 800001fe: 0000 unimp + 80000200: 0000 unimp + 80000202: 0000 unimp diff --git a/Tests/isa/rv64um-p-mul b/Tests/isa/rv64um-p-mul new file mode 100644 index 0000000..5882dc4 Binary files /dev/null and b/Tests/isa/rv64um-p-mul differ diff --git a/Tests/isa/rv64um-p-mul.dump b/Tests/isa/rv64um-p-mul.dump new file mode 100644 index 0000000..b546f6c --- /dev/null +++ b/Tests/isa/rv64um-p-mul.dump @@ -0,0 +1,474 @@ + +rv64um-p-mul: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 000080b7 lui ra,0x8 + 80000100: e000809b addiw ra,ra,-512 + 80000104: 06db7137 lui sp,0x6db7 + 80000108: db71011b addiw sp,sp,-585 + 8000010c: 00c11113 slli sp,sp,0xc + 80000110: db710113 addi sp,sp,-585 # 6db6db7 <_start-0x79249249> + 80000114: 00c11113 slli sp,sp,0xc + 80000118: db710113 addi sp,sp,-585 + 8000011c: 00c11113 slli sp,sp,0xc + 80000120: db710113 addi sp,sp,-585 + 80000124: 02208f33 mul t5,ra,sp + 80000128: 00001eb7 lui t4,0x1 + 8000012c: 200e8e9b addiw t4,t4,512 + 80000130: 02000193 li gp,32 + 80000134: 49df1a63 bne t5,t4,800005c8 + +0000000080000138 : + 80000138: 000080b7 lui ra,0x8 + 8000013c: fc00809b addiw ra,ra,-64 + 80000140: 06db7137 lui sp,0x6db7 + 80000144: db71011b addiw sp,sp,-585 + 80000148: 00c11113 slli sp,sp,0xc + 8000014c: db710113 addi sp,sp,-585 # 6db6db7 <_start-0x79249249> + 80000150: 00c11113 slli sp,sp,0xc + 80000154: db710113 addi sp,sp,-585 + 80000158: 00c11113 slli sp,sp,0xc + 8000015c: db710113 addi sp,sp,-585 + 80000160: 02208f33 mul t5,ra,sp + 80000164: 00001eb7 lui t4,0x1 + 80000168: 240e8e9b addiw t4,t4,576 + 8000016c: 02100193 li gp,33 + 80000170: 45df1c63 bne t5,t4,800005c8 + +0000000080000174 : + 80000174: 00000093 li ra,0 + 80000178: 00000113 li sp,0 + 8000017c: 02208f33 mul t5,ra,sp + 80000180: 00000e93 li t4,0 + 80000184: 00200193 li gp,2 + 80000188: 45df1063 bne t5,t4,800005c8 + +000000008000018c : + 8000018c: 00100093 li ra,1 + 80000190: 00100113 li sp,1 + 80000194: 02208f33 mul t5,ra,sp + 80000198: 00100e93 li t4,1 + 8000019c: 00300193 li gp,3 + 800001a0: 43df1463 bne t5,t4,800005c8 + +00000000800001a4 : + 800001a4: 00300093 li ra,3 + 800001a8: 00700113 li sp,7 + 800001ac: 02208f33 mul t5,ra,sp + 800001b0: 01500e93 li t4,21 + 800001b4: 00400193 li gp,4 + 800001b8: 41df1863 bne t5,t4,800005c8 + +00000000800001bc : + 800001bc: 00000093 li ra,0 + 800001c0: ffff8137 lui sp,0xffff8 + 800001c4: 02208f33 mul t5,ra,sp + 800001c8: 00000e93 li t4,0 + 800001cc: 00500193 li gp,5 + 800001d0: 3fdf1c63 bne t5,t4,800005c8 + +00000000800001d4 : + 800001d4: 800000b7 lui ra,0x80000 + 800001d8: 00000113 li sp,0 + 800001dc: 02208f33 mul t5,ra,sp + 800001e0: 00000e93 li t4,0 + 800001e4: 00600193 li gp,6 + 800001e8: 3fdf1063 bne t5,t4,800005c8 + +00000000800001ec : + 800001ec: 800000b7 lui ra,0x80000 + 800001f0: ffff8137 lui sp,0xffff8 + 800001f4: 02208f33 mul t5,ra,sp + 800001f8: 00100e9b addiw t4,zero,1 + 800001fc: 02ee9e93 slli t4,t4,0x2e + 80000200: 00700193 li gp,7 + 80000204: 3ddf1263 bne t5,t4,800005c8 + +0000000080000208 : + 80000208: faaab0b7 lui ra,0xfaaab + 8000020c: aab0809b addiw ra,ra,-1365 + 80000210: 00c09093 slli ra,ra,0xc + 80000214: aab08093 addi ra,ra,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa8aab> + 80000218: 00c09093 slli ra,ra,0xc + 8000021c: aab08093 addi ra,ra,-1365 + 80000220: 00c09093 slli ra,ra,0xc + 80000224: aab08093 addi ra,ra,-1365 + 80000228: 00030137 lui sp,0x30 + 8000022c: e7d1011b addiw sp,sp,-387 + 80000230: 02208f33 mul t5,ra,sp + 80000234: 00010eb7 lui t4,0x10 + 80000238: f7fe8e9b addiw t4,t4,-129 + 8000023c: 01e00193 li gp,30 + 80000240: 39df1463 bne t5,t4,800005c8 + +0000000080000244 : + 80000244: 000300b7 lui ra,0x30 + 80000248: e7d0809b addiw ra,ra,-387 + 8000024c: faaab137 lui sp,0xfaaab + 80000250: aab1011b addiw sp,sp,-1365 + 80000254: 00c11113 slli sp,sp,0xc + 80000258: aab10113 addi sp,sp,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa8aab> + 8000025c: 00c11113 slli sp,sp,0xc + 80000260: aab10113 addi sp,sp,-1365 + 80000264: 00c11113 slli sp,sp,0xc + 80000268: aab10113 addi sp,sp,-1365 + 8000026c: 02208f33 mul t5,ra,sp + 80000270: 00010eb7 lui t4,0x10 + 80000274: f7fe8e9b addiw t4,t4,-129 + 80000278: 01f00193 li gp,31 + 8000027c: 35df1663 bne t5,t4,800005c8 + +0000000080000280 : + 80000280: 00d00093 li ra,13 + 80000284: 00b00113 li sp,11 + 80000288: 022080b3 mul ra,ra,sp + 8000028c: 08f00e93 li t4,143 + 80000290: 00800193 li gp,8 + 80000294: 33d09a63 bne ra,t4,800005c8 + +0000000080000298 : + 80000298: 00e00093 li ra,14 + 8000029c: 00b00113 li sp,11 + 800002a0: 02208133 mul sp,ra,sp + 800002a4: 09a00e93 li t4,154 + 800002a8: 00900193 li gp,9 + 800002ac: 31d11e63 bne sp,t4,800005c8 + +00000000800002b0 : + 800002b0: 00d00093 li ra,13 + 800002b4: 021080b3 mul ra,ra,ra + 800002b8: 0a900e93 li t4,169 + 800002bc: 00a00193 li gp,10 + 800002c0: 31d09463 bne ra,t4,800005c8 + +00000000800002c4 : + 800002c4: 00000213 li tp,0 + 800002c8: 00d00093 li ra,13 + 800002cc: 00b00113 li sp,11 + 800002d0: 02208f33 mul t5,ra,sp + 800002d4: 000f0313 mv t1,t5 + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5214e3 bne tp,t0,800002c8 + 800002e4: 08f00e93 li t4,143 + 800002e8: 00b00193 li gp,11 + 800002ec: 2dd31e63 bne t1,t4,800005c8 + +00000000800002f0 : + 800002f0: 00000213 li tp,0 + 800002f4: 00e00093 li ra,14 + 800002f8: 00b00113 li sp,11 + 800002fc: 02208f33 mul t5,ra,sp + 80000300: 00000013 nop + 80000304: 000f0313 mv t1,t5 + 80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000030c: 00200293 li t0,2 + 80000310: fe5212e3 bne tp,t0,800002f4 + 80000314: 09a00e93 li t4,154 + 80000318: 00c00193 li gp,12 + 8000031c: 2bd31663 bne t1,t4,800005c8 + +0000000080000320 : + 80000320: 00000213 li tp,0 + 80000324: 00f00093 li ra,15 + 80000328: 00b00113 li sp,11 + 8000032c: 02208f33 mul t5,ra,sp + 80000330: 00000013 nop + 80000334: 00000013 nop + 80000338: 000f0313 mv t1,t5 + 8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000340: 00200293 li t0,2 + 80000344: fe5210e3 bne tp,t0,80000324 + 80000348: 0a500e93 li t4,165 + 8000034c: 00d00193 li gp,13 + 80000350: 27d31c63 bne t1,t4,800005c8 + +0000000080000354 : + 80000354: 00000213 li tp,0 + 80000358: 00d00093 li ra,13 + 8000035c: 00b00113 li sp,11 + 80000360: 02208f33 mul t5,ra,sp + 80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000368: 00200293 li t0,2 + 8000036c: fe5216e3 bne tp,t0,80000358 + 80000370: 08f00e93 li t4,143 + 80000374: 00e00193 li gp,14 + 80000378: 25df1863 bne t5,t4,800005c8 + +000000008000037c : + 8000037c: 00000213 li tp,0 + 80000380: 00e00093 li ra,14 + 80000384: 00b00113 li sp,11 + 80000388: 00000013 nop + 8000038c: 02208f33 mul t5,ra,sp + 80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000394: 00200293 li t0,2 + 80000398: fe5214e3 bne tp,t0,80000380 + 8000039c: 09a00e93 li t4,154 + 800003a0: 00f00193 li gp,15 + 800003a4: 23df1263 bne t5,t4,800005c8 + +00000000800003a8 : + 800003a8: 00000213 li tp,0 + 800003ac: 00f00093 li ra,15 + 800003b0: 00b00113 li sp,11 + 800003b4: 00000013 nop + 800003b8: 00000013 nop + 800003bc: 02208f33 mul t5,ra,sp + 800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c4: 00200293 li t0,2 + 800003c8: fe5212e3 bne tp,t0,800003ac + 800003cc: 0a500e93 li t4,165 + 800003d0: 01000193 li gp,16 + 800003d4: 1fdf1a63 bne t5,t4,800005c8 + +00000000800003d8 : + 800003d8: 00000213 li tp,0 + 800003dc: 00d00093 li ra,13 + 800003e0: 00000013 nop + 800003e4: 00b00113 li sp,11 + 800003e8: 02208f33 mul t5,ra,sp + 800003ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003f0: 00200293 li t0,2 + 800003f4: fe5214e3 bne tp,t0,800003dc + 800003f8: 08f00e93 li t4,143 + 800003fc: 01100193 li gp,17 + 80000400: 1ddf1463 bne t5,t4,800005c8 + +0000000080000404 : + 80000404: 00000213 li tp,0 + 80000408: 00e00093 li ra,14 + 8000040c: 00000013 nop + 80000410: 00b00113 li sp,11 + 80000414: 00000013 nop + 80000418: 02208f33 mul t5,ra,sp + 8000041c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000420: 00200293 li t0,2 + 80000424: fe5212e3 bne tp,t0,80000408 + 80000428: 09a00e93 li t4,154 + 8000042c: 01200193 li gp,18 + 80000430: 19df1c63 bne t5,t4,800005c8 + +0000000080000434 : + 80000434: 00000213 li tp,0 + 80000438: 00f00093 li ra,15 + 8000043c: 00000013 nop + 80000440: 00000013 nop + 80000444: 00b00113 li sp,11 + 80000448: 02208f33 mul t5,ra,sp + 8000044c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000450: 00200293 li t0,2 + 80000454: fe5212e3 bne tp,t0,80000438 + 80000458: 0a500e93 li t4,165 + 8000045c: 01300193 li gp,19 + 80000460: 17df1463 bne t5,t4,800005c8 + +0000000080000464 : + 80000464: 00000213 li tp,0 + 80000468: 00b00113 li sp,11 + 8000046c: 00d00093 li ra,13 + 80000470: 02208f33 mul t5,ra,sp + 80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000478: 00200293 li t0,2 + 8000047c: fe5216e3 bne tp,t0,80000468 + 80000480: 08f00e93 li t4,143 + 80000484: 01400193 li gp,20 + 80000488: 15df1063 bne t5,t4,800005c8 + +000000008000048c : + 8000048c: 00000213 li tp,0 + 80000490: 00b00113 li sp,11 + 80000494: 00e00093 li ra,14 + 80000498: 00000013 nop + 8000049c: 02208f33 mul t5,ra,sp + 800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004a4: 00200293 li t0,2 + 800004a8: fe5214e3 bne tp,t0,80000490 + 800004ac: 09a00e93 li t4,154 + 800004b0: 01500193 li gp,21 + 800004b4: 11df1a63 bne t5,t4,800005c8 + +00000000800004b8 : + 800004b8: 00000213 li tp,0 + 800004bc: 00b00113 li sp,11 + 800004c0: 00f00093 li ra,15 + 800004c4: 00000013 nop + 800004c8: 00000013 nop + 800004cc: 02208f33 mul t5,ra,sp + 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d4: 00200293 li t0,2 + 800004d8: fe5212e3 bne tp,t0,800004bc + 800004dc: 0a500e93 li t4,165 + 800004e0: 01600193 li gp,22 + 800004e4: 0fdf1263 bne t5,t4,800005c8 + +00000000800004e8 : + 800004e8: 00000213 li tp,0 + 800004ec: 00b00113 li sp,11 + 800004f0: 00000013 nop + 800004f4: 00d00093 li ra,13 + 800004f8: 02208f33 mul t5,ra,sp + 800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000500: 00200293 li t0,2 + 80000504: fe5214e3 bne tp,t0,800004ec + 80000508: 08f00e93 li t4,143 + 8000050c: 01700193 li gp,23 + 80000510: 0bdf1c63 bne t5,t4,800005c8 + +0000000080000514 : + 80000514: 00000213 li tp,0 + 80000518: 00b00113 li sp,11 + 8000051c: 00000013 nop + 80000520: 00e00093 li ra,14 + 80000524: 00000013 nop + 80000528: 02208f33 mul t5,ra,sp + 8000052c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000530: 00200293 li t0,2 + 80000534: fe5212e3 bne tp,t0,80000518 + 80000538: 09a00e93 li t4,154 + 8000053c: 01800193 li gp,24 + 80000540: 09df1463 bne t5,t4,800005c8 + +0000000080000544 : + 80000544: 00000213 li tp,0 + 80000548: 00b00113 li sp,11 + 8000054c: 00000013 nop + 80000550: 00000013 nop + 80000554: 00f00093 li ra,15 + 80000558: 02208f33 mul t5,ra,sp + 8000055c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000560: 00200293 li t0,2 + 80000564: fe5212e3 bne tp,t0,80000548 + 80000568: 0a500e93 li t4,165 + 8000056c: 01900193 li gp,25 + 80000570: 05df1c63 bne t5,t4,800005c8 + +0000000080000574 : + 80000574: 01f00093 li ra,31 + 80000578: 02100133 mul sp,zero,ra + 8000057c: 00000e93 li t4,0 + 80000580: 01a00193 li gp,26 + 80000584: 05d11263 bne sp,t4,800005c8 + +0000000080000588 : + 80000588: 02000093 li ra,32 + 8000058c: 02008133 mul sp,ra,zero + 80000590: 00000e93 li t4,0 + 80000594: 01b00193 li gp,27 + 80000598: 03d11863 bne sp,t4,800005c8 + +000000008000059c : + 8000059c: 020000b3 mul ra,zero,zero + 800005a0: 00000e93 li t4,0 + 800005a4: 01c00193 li gp,28 + 800005a8: 03d09063 bne ra,t4,800005c8 + +00000000800005ac : + 800005ac: 02100093 li ra,33 + 800005b0: 02200113 li sp,34 + 800005b4: 02208033 mul zero,ra,sp + 800005b8: 00000e93 li t4,0 + 800005bc: 01d00193 li gp,29 + 800005c0: 01d01463 bne zero,t4,800005c8 + 800005c4: 00301c63 bne zero,gp,800005dc + +00000000800005c8 : + 800005c8: 0ff0000f fence + 800005cc: 00018063 beqz gp,800005cc + 800005d0: 00119193 slli gp,gp,0x1 + 800005d4: 0011e193 ori gp,gp,1 + 800005d8: 00000073 ecall + +00000000800005dc : + 800005dc: 0ff0000f fence + 800005e0: 00100193 li gp,1 + 800005e4: 00000073 ecall + 800005e8: c0001073 unimp + 800005ec: 0000 unimp + 800005ee: 0000 unimp + 800005f0: 0000 unimp + 800005f2: 0000 unimp + 800005f4: 0000 unimp + 800005f6: 0000 unimp + 800005f8: 0000 unimp + 800005fa: 0000 unimp + 800005fc: 0000 unimp + 800005fe: 0000 unimp + 80000600: 0000 unimp + 80000602: 0000 unimp diff --git a/Tests/isa/rv64um-p-mulh b/Tests/isa/rv64um-p-mulh new file mode 100644 index 0000000..2334593 Binary files /dev/null and b/Tests/isa/rv64um-p-mulh differ diff --git a/Tests/isa/rv64um-p-mulh.dump b/Tests/isa/rv64um-p-mulh.dump new file mode 100644 index 0000000..59475e6 --- /dev/null +++ b/Tests/isa/rv64um-p-mulh.dump @@ -0,0 +1,456 @@ + +rv64um-p-mulh: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 02209f33 mulh t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 47df1063 bne t5,t4,80000570 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 02209f33 mulh t5,ra,sp + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 45df1463 bne t5,t4,80000570 + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 02209f33 mulh t5,ra,sp + 80000138: 00000e93 li t4,0 + 8000013c: 00400193 li gp,4 + 80000140: 43df1863 bne t5,t4,80000570 + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 02209f33 mulh t5,ra,sp + 80000150: 00000e93 li t4,0 + 80000154: 00500193 li gp,5 + 80000158: 41df1c63 bne t5,t4,80000570 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 02209f33 mulh t5,ra,sp + 80000168: 00000e93 li t4,0 + 8000016c: 00600193 li gp,6 + 80000170: 41df1063 bne t5,t4,80000570 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 02209f33 mulh t5,ra,sp + 80000180: 00000e93 li t4,0 + 80000184: 00700193 li gp,7 + 80000188: 3fdf1463 bne t5,t4,80000570 + +000000008000018c : + 8000018c: 00d0009b addiw ra,zero,13 + 80000190: 02009093 slli ra,ra,0x20 + 80000194: 00b0011b addiw sp,zero,11 + 80000198: 02011113 slli sp,sp,0x20 + 8000019c: 022090b3 mulh ra,ra,sp + 800001a0: 08f00e93 li t4,143 + 800001a4: 00800193 li gp,8 + 800001a8: 3dd09463 bne ra,t4,80000570 + +00000000800001ac : + 800001ac: 0070009b addiw ra,zero,7 + 800001b0: 02109093 slli ra,ra,0x21 + 800001b4: 00b0011b addiw sp,zero,11 + 800001b8: 02011113 slli sp,sp,0x20 + 800001bc: 02209133 mulh sp,ra,sp + 800001c0: 09a00e93 li t4,154 + 800001c4: 00900193 li gp,9 + 800001c8: 3bd11463 bne sp,t4,80000570 + +00000000800001cc : + 800001cc: 00d0009b addiw ra,zero,13 + 800001d0: 02009093 slli ra,ra,0x20 + 800001d4: 021090b3 mulh ra,ra,ra + 800001d8: 0a900e93 li t4,169 + 800001dc: 00a00193 li gp,10 + 800001e0: 39d09863 bne ra,t4,80000570 + +00000000800001e4 : + 800001e4: 00000213 li tp,0 + 800001e8: 00d0009b addiw ra,zero,13 + 800001ec: 02009093 slli ra,ra,0x20 + 800001f0: 00b0011b addiw sp,zero,11 + 800001f4: 02011113 slli sp,sp,0x20 + 800001f8: 02209f33 mulh t5,ra,sp + 800001fc: 000f0313 mv t1,t5 + 80000200: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000204: 00200293 li t0,2 + 80000208: fe5210e3 bne tp,t0,800001e8 + 8000020c: 08f00e93 li t4,143 + 80000210: 00b00193 li gp,11 + 80000214: 35d31e63 bne t1,t4,80000570 + +0000000080000218 : + 80000218: 00000213 li tp,0 + 8000021c: 0070009b addiw ra,zero,7 + 80000220: 02109093 slli ra,ra,0x21 + 80000224: 00b0011b addiw sp,zero,11 + 80000228: 02011113 slli sp,sp,0x20 + 8000022c: 02209f33 mulh t5,ra,sp + 80000230: 00000013 nop + 80000234: 000f0313 mv t1,t5 + 80000238: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000023c: 00200293 li t0,2 + 80000240: fc521ee3 bne tp,t0,8000021c + 80000244: 09a00e93 li t4,154 + 80000248: 00c00193 li gp,12 + 8000024c: 33d31263 bne t1,t4,80000570 + +0000000080000250 : + 80000250: 00000213 li tp,0 + 80000254: 00f0009b addiw ra,zero,15 + 80000258: 02009093 slli ra,ra,0x20 + 8000025c: 00b0011b addiw sp,zero,11 + 80000260: 02011113 slli sp,sp,0x20 + 80000264: 02209f33 mulh t5,ra,sp + 80000268: 00000013 nop + 8000026c: 00000013 nop + 80000270: 000f0313 mv t1,t5 + 80000274: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000278: 00200293 li t0,2 + 8000027c: fc521ce3 bne tp,t0,80000254 + 80000280: 0a500e93 li t4,165 + 80000284: 00d00193 li gp,13 + 80000288: 2fd31463 bne t1,t4,80000570 + +000000008000028c : + 8000028c: 00000213 li tp,0 + 80000290: 00d0009b addiw ra,zero,13 + 80000294: 02009093 slli ra,ra,0x20 + 80000298: 00b0011b addiw sp,zero,11 + 8000029c: 02011113 slli sp,sp,0x20 + 800002a0: 02209f33 mulh t5,ra,sp + 800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a8: 00200293 li t0,2 + 800002ac: fe5212e3 bne tp,t0,80000290 + 800002b0: 08f00e93 li t4,143 + 800002b4: 00e00193 li gp,14 + 800002b8: 2bdf1c63 bne t5,t4,80000570 + +00000000800002bc : + 800002bc: 00000213 li tp,0 + 800002c0: 0070009b addiw ra,zero,7 + 800002c4: 02109093 slli ra,ra,0x21 + 800002c8: 00b0011b addiw sp,zero,11 + 800002cc: 02011113 slli sp,sp,0x20 + 800002d0: 00000013 nop + 800002d4: 02209f33 mulh t5,ra,sp + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5210e3 bne tp,t0,800002c0 + 800002e4: 09a00e93 li t4,154 + 800002e8: 00f00193 li gp,15 + 800002ec: 29df1263 bne t5,t4,80000570 + +00000000800002f0 : + 800002f0: 00000213 li tp,0 + 800002f4: 00f0009b addiw ra,zero,15 + 800002f8: 02009093 slli ra,ra,0x20 + 800002fc: 00b0011b addiw sp,zero,11 + 80000300: 02011113 slli sp,sp,0x20 + 80000304: 00000013 nop + 80000308: 00000013 nop + 8000030c: 02209f33 mulh t5,ra,sp + 80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000314: 00200293 li t0,2 + 80000318: fc521ee3 bne tp,t0,800002f4 + 8000031c: 0a500e93 li t4,165 + 80000320: 01000193 li gp,16 + 80000324: 25df1663 bne t5,t4,80000570 + +0000000080000328 : + 80000328: 00000213 li tp,0 + 8000032c: 00d0009b addiw ra,zero,13 + 80000330: 02009093 slli ra,ra,0x20 + 80000334: 00000013 nop + 80000338: 00b0011b addiw sp,zero,11 + 8000033c: 02011113 slli sp,sp,0x20 + 80000340: 02209f33 mulh t5,ra,sp + 80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000348: 00200293 li t0,2 + 8000034c: fe5210e3 bne tp,t0,8000032c + 80000350: 08f00e93 li t4,143 + 80000354: 01100193 li gp,17 + 80000358: 21df1c63 bne t5,t4,80000570 + +000000008000035c : + 8000035c: 00000213 li tp,0 + 80000360: 0070009b addiw ra,zero,7 + 80000364: 02109093 slli ra,ra,0x21 + 80000368: 00000013 nop + 8000036c: 00b0011b addiw sp,zero,11 + 80000370: 02011113 slli sp,sp,0x20 + 80000374: 00000013 nop + 80000378: 02209f33 mulh t5,ra,sp + 8000037c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000380: 00200293 li t0,2 + 80000384: fc521ee3 bne tp,t0,80000360 + 80000388: 09a00e93 li t4,154 + 8000038c: 01200193 li gp,18 + 80000390: 1fdf1063 bne t5,t4,80000570 + +0000000080000394 : + 80000394: 00000213 li tp,0 + 80000398: 00f0009b addiw ra,zero,15 + 8000039c: 02009093 slli ra,ra,0x20 + 800003a0: 00000013 nop + 800003a4: 00000013 nop + 800003a8: 00b0011b addiw sp,zero,11 + 800003ac: 02011113 slli sp,sp,0x20 + 800003b0: 02209f33 mulh t5,ra,sp + 800003b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b8: 00200293 li t0,2 + 800003bc: fc521ee3 bne tp,t0,80000398 + 800003c0: 0a500e93 li t4,165 + 800003c4: 01300193 li gp,19 + 800003c8: 1bdf1463 bne t5,t4,80000570 + +00000000800003cc : + 800003cc: 00000213 li tp,0 + 800003d0: 00b0011b addiw sp,zero,11 + 800003d4: 02011113 slli sp,sp,0x20 + 800003d8: 00d0009b addiw ra,zero,13 + 800003dc: 02009093 slli ra,ra,0x20 + 800003e0: 02209f33 mulh t5,ra,sp + 800003e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003e8: 00200293 li t0,2 + 800003ec: fe5212e3 bne tp,t0,800003d0 + 800003f0: 08f00e93 li t4,143 + 800003f4: 01400193 li gp,20 + 800003f8: 17df1c63 bne t5,t4,80000570 + +00000000800003fc : + 800003fc: 00000213 li tp,0 + 80000400: 00b0011b addiw sp,zero,11 + 80000404: 02011113 slli sp,sp,0x20 + 80000408: 0070009b addiw ra,zero,7 + 8000040c: 02109093 slli ra,ra,0x21 + 80000410: 00000013 nop + 80000414: 02209f33 mulh t5,ra,sp + 80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000041c: 00200293 li t0,2 + 80000420: fe5210e3 bne tp,t0,80000400 + 80000424: 09a00e93 li t4,154 + 80000428: 01500193 li gp,21 + 8000042c: 15df1263 bne t5,t4,80000570 + +0000000080000430 : + 80000430: 00000213 li tp,0 + 80000434: 00b0011b addiw sp,zero,11 + 80000438: 02011113 slli sp,sp,0x20 + 8000043c: 00f0009b addiw ra,zero,15 + 80000440: 02009093 slli ra,ra,0x20 + 80000444: 00000013 nop + 80000448: 00000013 nop + 8000044c: 02209f33 mulh t5,ra,sp + 80000450: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000454: 00200293 li t0,2 + 80000458: fc521ee3 bne tp,t0,80000434 + 8000045c: 0a500e93 li t4,165 + 80000460: 01600193 li gp,22 + 80000464: 11df1663 bne t5,t4,80000570 + +0000000080000468 : + 80000468: 00000213 li tp,0 + 8000046c: 00b0011b addiw sp,zero,11 + 80000470: 02011113 slli sp,sp,0x20 + 80000474: 00000013 nop + 80000478: 00d0009b addiw ra,zero,13 + 8000047c: 02009093 slli ra,ra,0x20 + 80000480: 02209f33 mulh t5,ra,sp + 80000484: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000488: 00200293 li t0,2 + 8000048c: fe5210e3 bne tp,t0,8000046c + 80000490: 08f00e93 li t4,143 + 80000494: 01700193 li gp,23 + 80000498: 0ddf1c63 bne t5,t4,80000570 + +000000008000049c : + 8000049c: 00000213 li tp,0 + 800004a0: 00b0011b addiw sp,zero,11 + 800004a4: 02011113 slli sp,sp,0x20 + 800004a8: 00000013 nop + 800004ac: 0070009b addiw ra,zero,7 + 800004b0: 02109093 slli ra,ra,0x21 + 800004b4: 00000013 nop + 800004b8: 02209f33 mulh t5,ra,sp + 800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004c0: 00200293 li t0,2 + 800004c4: fc521ee3 bne tp,t0,800004a0 + 800004c8: 09a00e93 li t4,154 + 800004cc: 01800193 li gp,24 + 800004d0: 0bdf1063 bne t5,t4,80000570 + +00000000800004d4 : + 800004d4: 00000213 li tp,0 + 800004d8: 00b0011b addiw sp,zero,11 + 800004dc: 02011113 slli sp,sp,0x20 + 800004e0: 00000013 nop + 800004e4: 00000013 nop + 800004e8: 00f0009b addiw ra,zero,15 + 800004ec: 02009093 slli ra,ra,0x20 + 800004f0: 02209f33 mulh t5,ra,sp + 800004f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004f8: 00200293 li t0,2 + 800004fc: fc521ee3 bne tp,t0,800004d8 + 80000500: 0a500e93 li t4,165 + 80000504: 01900193 li gp,25 + 80000508: 07df1463 bne t5,t4,80000570 + +000000008000050c : + 8000050c: 01f0009b addiw ra,zero,31 + 80000510: 02009093 slli ra,ra,0x20 + 80000514: 02101133 mulh sp,zero,ra + 80000518: 00000e93 li t4,0 + 8000051c: 01a00193 li gp,26 + 80000520: 05d11863 bne sp,t4,80000570 + +0000000080000524 : + 80000524: 0010009b addiw ra,zero,1 + 80000528: 02509093 slli ra,ra,0x25 + 8000052c: 02009133 mulh sp,ra,zero + 80000530: 00000e93 li t4,0 + 80000534: 01b00193 li gp,27 + 80000538: 03d11c63 bne sp,t4,80000570 + +000000008000053c : + 8000053c: 020010b3 mulh ra,zero,zero + 80000540: 00000e93 li t4,0 + 80000544: 01c00193 li gp,28 + 80000548: 03d09463 bne ra,t4,80000570 + +000000008000054c : + 8000054c: 0210009b addiw ra,zero,33 + 80000550: 02009093 slli ra,ra,0x20 + 80000554: 0110011b addiw sp,zero,17 + 80000558: 02111113 slli sp,sp,0x21 + 8000055c: 02209033 mulh zero,ra,sp + 80000560: 00000e93 li t4,0 + 80000564: 01d00193 li gp,29 + 80000568: 01d01463 bne zero,t4,80000570 + 8000056c: 00301c63 bne zero,gp,80000584 + +0000000080000570 : + 80000570: 0ff0000f fence + 80000574: 00018063 beqz gp,80000574 + 80000578: 00119193 slli gp,gp,0x1 + 8000057c: 0011e193 ori gp,gp,1 + 80000580: 00000073 ecall + +0000000080000584 : + 80000584: 0ff0000f fence + 80000588: 00100193 li gp,1 + 8000058c: 00000073 ecall + 80000590: c0001073 unimp + 80000594: 0000 unimp + 80000596: 0000 unimp + 80000598: 0000 unimp + 8000059a: 0000 unimp + 8000059c: 0000 unimp + 8000059e: 0000 unimp + 800005a0: 0000 unimp + 800005a2: 0000 unimp + 800005a4: 0000 unimp + 800005a6: 0000 unimp + 800005a8: 0000 unimp + 800005aa: 0000 unimp + 800005ac: 0000 unimp + 800005ae: 0000 unimp + 800005b0: 0000 unimp + 800005b2: 0000 unimp + 800005b4: 0000 unimp + 800005b6: 0000 unimp + 800005b8: 0000 unimp + 800005ba: 0000 unimp + 800005bc: 0000 unimp + 800005be: 0000 unimp + 800005c0: 0000 unimp + 800005c2: 0000 unimp diff --git a/Tests/isa/rv64um-p-mulhsu b/Tests/isa/rv64um-p-mulhsu new file mode 100644 index 0000000..ace7e87 Binary files /dev/null and b/Tests/isa/rv64um-p-mulhsu differ diff --git a/Tests/isa/rv64um-p-mulhsu.dump b/Tests/isa/rv64um-p-mulhsu.dump new file mode 100644 index 0000000..56d5b6d --- /dev/null +++ b/Tests/isa/rv64um-p-mulhsu.dump @@ -0,0 +1,456 @@ + +rv64um-p-mulhsu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 0220af33 mulhsu t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 47df1063 bne t5,t4,80000570 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 0220af33 mulhsu t5,ra,sp + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 45df1463 bne t5,t4,80000570 + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 0220af33 mulhsu t5,ra,sp + 80000138: 00000e93 li t4,0 + 8000013c: 00400193 li gp,4 + 80000140: 43df1863 bne t5,t4,80000570 + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 0220af33 mulhsu t5,ra,sp + 80000150: 00000e93 li t4,0 + 80000154: 00500193 li gp,5 + 80000158: 41df1c63 bne t5,t4,80000570 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 0220af33 mulhsu t5,ra,sp + 80000168: 00000e93 li t4,0 + 8000016c: 00600193 li gp,6 + 80000170: 41df1063 bne t5,t4,80000570 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 0220af33 mulhsu t5,ra,sp + 80000180: 80000eb7 lui t4,0x80000 + 80000184: 00700193 li gp,7 + 80000188: 3fdf1463 bne t5,t4,80000570 + +000000008000018c : + 8000018c: 00d0009b addiw ra,zero,13 + 80000190: 02009093 slli ra,ra,0x20 + 80000194: 00b0011b addiw sp,zero,11 + 80000198: 02011113 slli sp,sp,0x20 + 8000019c: 0220a0b3 mulhsu ra,ra,sp + 800001a0: 08f00e93 li t4,143 + 800001a4: 00800193 li gp,8 + 800001a8: 3dd09463 bne ra,t4,80000570 + +00000000800001ac : + 800001ac: 0070009b addiw ra,zero,7 + 800001b0: 02109093 slli ra,ra,0x21 + 800001b4: 00b0011b addiw sp,zero,11 + 800001b8: 02011113 slli sp,sp,0x20 + 800001bc: 0220a133 mulhsu sp,ra,sp + 800001c0: 09a00e93 li t4,154 + 800001c4: 00900193 li gp,9 + 800001c8: 3bd11463 bne sp,t4,80000570 + +00000000800001cc : + 800001cc: 00d0009b addiw ra,zero,13 + 800001d0: 02009093 slli ra,ra,0x20 + 800001d4: 0210a0b3 mulhsu ra,ra,ra + 800001d8: 0a900e93 li t4,169 + 800001dc: 00a00193 li gp,10 + 800001e0: 39d09863 bne ra,t4,80000570 + +00000000800001e4 : + 800001e4: 00000213 li tp,0 + 800001e8: 00d0009b addiw ra,zero,13 + 800001ec: 02009093 slli ra,ra,0x20 + 800001f0: 00b0011b addiw sp,zero,11 + 800001f4: 02011113 slli sp,sp,0x20 + 800001f8: 0220af33 mulhsu t5,ra,sp + 800001fc: 000f0313 mv t1,t5 + 80000200: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000204: 00200293 li t0,2 + 80000208: fe5210e3 bne tp,t0,800001e8 + 8000020c: 08f00e93 li t4,143 + 80000210: 00b00193 li gp,11 + 80000214: 35d31e63 bne t1,t4,80000570 + +0000000080000218 : + 80000218: 00000213 li tp,0 + 8000021c: 0070009b addiw ra,zero,7 + 80000220: 02109093 slli ra,ra,0x21 + 80000224: 00b0011b addiw sp,zero,11 + 80000228: 02011113 slli sp,sp,0x20 + 8000022c: 0220af33 mulhsu t5,ra,sp + 80000230: 00000013 nop + 80000234: 000f0313 mv t1,t5 + 80000238: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000023c: 00200293 li t0,2 + 80000240: fc521ee3 bne tp,t0,8000021c + 80000244: 09a00e93 li t4,154 + 80000248: 00c00193 li gp,12 + 8000024c: 33d31263 bne t1,t4,80000570 + +0000000080000250 : + 80000250: 00000213 li tp,0 + 80000254: 00f0009b addiw ra,zero,15 + 80000258: 02009093 slli ra,ra,0x20 + 8000025c: 00b0011b addiw sp,zero,11 + 80000260: 02011113 slli sp,sp,0x20 + 80000264: 0220af33 mulhsu t5,ra,sp + 80000268: 00000013 nop + 8000026c: 00000013 nop + 80000270: 000f0313 mv t1,t5 + 80000274: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000278: 00200293 li t0,2 + 8000027c: fc521ce3 bne tp,t0,80000254 + 80000280: 0a500e93 li t4,165 + 80000284: 00d00193 li gp,13 + 80000288: 2fd31463 bne t1,t4,80000570 + +000000008000028c : + 8000028c: 00000213 li tp,0 + 80000290: 00d0009b addiw ra,zero,13 + 80000294: 02009093 slli ra,ra,0x20 + 80000298: 00b0011b addiw sp,zero,11 + 8000029c: 02011113 slli sp,sp,0x20 + 800002a0: 0220af33 mulhsu t5,ra,sp + 800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a8: 00200293 li t0,2 + 800002ac: fe5212e3 bne tp,t0,80000290 + 800002b0: 08f00e93 li t4,143 + 800002b4: 00e00193 li gp,14 + 800002b8: 2bdf1c63 bne t5,t4,80000570 + +00000000800002bc : + 800002bc: 00000213 li tp,0 + 800002c0: 0070009b addiw ra,zero,7 + 800002c4: 02109093 slli ra,ra,0x21 + 800002c8: 00b0011b addiw sp,zero,11 + 800002cc: 02011113 slli sp,sp,0x20 + 800002d0: 00000013 nop + 800002d4: 0220af33 mulhsu t5,ra,sp + 800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002dc: 00200293 li t0,2 + 800002e0: fe5210e3 bne tp,t0,800002c0 + 800002e4: 09a00e93 li t4,154 + 800002e8: 00f00193 li gp,15 + 800002ec: 29df1263 bne t5,t4,80000570 + +00000000800002f0 : + 800002f0: 00000213 li tp,0 + 800002f4: 00f0009b addiw ra,zero,15 + 800002f8: 02009093 slli ra,ra,0x20 + 800002fc: 00b0011b addiw sp,zero,11 + 80000300: 02011113 slli sp,sp,0x20 + 80000304: 00000013 nop + 80000308: 00000013 nop + 8000030c: 0220af33 mulhsu t5,ra,sp + 80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000314: 00200293 li t0,2 + 80000318: fc521ee3 bne tp,t0,800002f4 + 8000031c: 0a500e93 li t4,165 + 80000320: 01000193 li gp,16 + 80000324: 25df1663 bne t5,t4,80000570 + +0000000080000328 : + 80000328: 00000213 li tp,0 + 8000032c: 00d0009b addiw ra,zero,13 + 80000330: 02009093 slli ra,ra,0x20 + 80000334: 00000013 nop + 80000338: 00b0011b addiw sp,zero,11 + 8000033c: 02011113 slli sp,sp,0x20 + 80000340: 0220af33 mulhsu t5,ra,sp + 80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000348: 00200293 li t0,2 + 8000034c: fe5210e3 bne tp,t0,8000032c + 80000350: 08f00e93 li t4,143 + 80000354: 01100193 li gp,17 + 80000358: 21df1c63 bne t5,t4,80000570 + +000000008000035c : + 8000035c: 00000213 li tp,0 + 80000360: 0070009b addiw ra,zero,7 + 80000364: 02109093 slli ra,ra,0x21 + 80000368: 00000013 nop + 8000036c: 00b0011b addiw sp,zero,11 + 80000370: 02011113 slli sp,sp,0x20 + 80000374: 00000013 nop + 80000378: 0220af33 mulhsu t5,ra,sp + 8000037c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000380: 00200293 li t0,2 + 80000384: fc521ee3 bne tp,t0,80000360 + 80000388: 09a00e93 li t4,154 + 8000038c: 01200193 li gp,18 + 80000390: 1fdf1063 bne t5,t4,80000570 + +0000000080000394 : + 80000394: 00000213 li tp,0 + 80000398: 00f0009b addiw ra,zero,15 + 8000039c: 02009093 slli ra,ra,0x20 + 800003a0: 00000013 nop + 800003a4: 00000013 nop + 800003a8: 00b0011b addiw sp,zero,11 + 800003ac: 02011113 slli sp,sp,0x20 + 800003b0: 0220af33 mulhsu t5,ra,sp + 800003b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b8: 00200293 li t0,2 + 800003bc: fc521ee3 bne tp,t0,80000398 + 800003c0: 0a500e93 li t4,165 + 800003c4: 01300193 li gp,19 + 800003c8: 1bdf1463 bne t5,t4,80000570 + +00000000800003cc : + 800003cc: 00000213 li tp,0 + 800003d0: 00b0011b addiw sp,zero,11 + 800003d4: 02011113 slli sp,sp,0x20 + 800003d8: 00d0009b addiw ra,zero,13 + 800003dc: 02009093 slli ra,ra,0x20 + 800003e0: 0220af33 mulhsu t5,ra,sp + 800003e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003e8: 00200293 li t0,2 + 800003ec: fe5212e3 bne tp,t0,800003d0 + 800003f0: 08f00e93 li t4,143 + 800003f4: 01400193 li gp,20 + 800003f8: 17df1c63 bne t5,t4,80000570 + +00000000800003fc : + 800003fc: 00000213 li tp,0 + 80000400: 00b0011b addiw sp,zero,11 + 80000404: 02011113 slli sp,sp,0x20 + 80000408: 0070009b addiw ra,zero,7 + 8000040c: 02109093 slli ra,ra,0x21 + 80000410: 00000013 nop + 80000414: 0220af33 mulhsu t5,ra,sp + 80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000041c: 00200293 li t0,2 + 80000420: fe5210e3 bne tp,t0,80000400 + 80000424: 09a00e93 li t4,154 + 80000428: 01500193 li gp,21 + 8000042c: 15df1263 bne t5,t4,80000570 + +0000000080000430 : + 80000430: 00000213 li tp,0 + 80000434: 00b0011b addiw sp,zero,11 + 80000438: 02011113 slli sp,sp,0x20 + 8000043c: 00f0009b addiw ra,zero,15 + 80000440: 02009093 slli ra,ra,0x20 + 80000444: 00000013 nop + 80000448: 00000013 nop + 8000044c: 0220af33 mulhsu t5,ra,sp + 80000450: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000454: 00200293 li t0,2 + 80000458: fc521ee3 bne tp,t0,80000434 + 8000045c: 0a500e93 li t4,165 + 80000460: 01600193 li gp,22 + 80000464: 11df1663 bne t5,t4,80000570 + +0000000080000468 : + 80000468: 00000213 li tp,0 + 8000046c: 00b0011b addiw sp,zero,11 + 80000470: 02011113 slli sp,sp,0x20 + 80000474: 00000013 nop + 80000478: 00d0009b addiw ra,zero,13 + 8000047c: 02009093 slli ra,ra,0x20 + 80000480: 0220af33 mulhsu t5,ra,sp + 80000484: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000488: 00200293 li t0,2 + 8000048c: fe5210e3 bne tp,t0,8000046c + 80000490: 08f00e93 li t4,143 + 80000494: 01700193 li gp,23 + 80000498: 0ddf1c63 bne t5,t4,80000570 + +000000008000049c : + 8000049c: 00000213 li tp,0 + 800004a0: 00b0011b addiw sp,zero,11 + 800004a4: 02011113 slli sp,sp,0x20 + 800004a8: 00000013 nop + 800004ac: 0070009b addiw ra,zero,7 + 800004b0: 02109093 slli ra,ra,0x21 + 800004b4: 00000013 nop + 800004b8: 0220af33 mulhsu t5,ra,sp + 800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004c0: 00200293 li t0,2 + 800004c4: fc521ee3 bne tp,t0,800004a0 + 800004c8: 09a00e93 li t4,154 + 800004cc: 01800193 li gp,24 + 800004d0: 0bdf1063 bne t5,t4,80000570 + +00000000800004d4 : + 800004d4: 00000213 li tp,0 + 800004d8: 00b0011b addiw sp,zero,11 + 800004dc: 02011113 slli sp,sp,0x20 + 800004e0: 00000013 nop + 800004e4: 00000013 nop + 800004e8: 00f0009b addiw ra,zero,15 + 800004ec: 02009093 slli ra,ra,0x20 + 800004f0: 0220af33 mulhsu t5,ra,sp + 800004f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004f8: 00200293 li t0,2 + 800004fc: fc521ee3 bne tp,t0,800004d8 + 80000500: 0a500e93 li t4,165 + 80000504: 01900193 li gp,25 + 80000508: 07df1463 bne t5,t4,80000570 + +000000008000050c : + 8000050c: 01f0009b addiw ra,zero,31 + 80000510: 02009093 slli ra,ra,0x20 + 80000514: 02102133 mulhsu sp,zero,ra + 80000518: 00000e93 li t4,0 + 8000051c: 01a00193 li gp,26 + 80000520: 05d11863 bne sp,t4,80000570 + +0000000080000524 : + 80000524: 0010009b addiw ra,zero,1 + 80000528: 02509093 slli ra,ra,0x25 + 8000052c: 0200a133 mulhsu sp,ra,zero + 80000530: 00000e93 li t4,0 + 80000534: 01b00193 li gp,27 + 80000538: 03d11c63 bne sp,t4,80000570 + +000000008000053c : + 8000053c: 020020b3 mulhsu ra,zero,zero + 80000540: 00000e93 li t4,0 + 80000544: 01c00193 li gp,28 + 80000548: 03d09463 bne ra,t4,80000570 + +000000008000054c : + 8000054c: 0210009b addiw ra,zero,33 + 80000550: 02009093 slli ra,ra,0x20 + 80000554: 0110011b addiw sp,zero,17 + 80000558: 02111113 slli sp,sp,0x21 + 8000055c: 0220a033 mulhsu zero,ra,sp + 80000560: 00000e93 li t4,0 + 80000564: 01d00193 li gp,29 + 80000568: 01d01463 bne zero,t4,80000570 + 8000056c: 00301c63 bne zero,gp,80000584 + +0000000080000570 : + 80000570: 0ff0000f fence + 80000574: 00018063 beqz gp,80000574 + 80000578: 00119193 slli gp,gp,0x1 + 8000057c: 0011e193 ori gp,gp,1 + 80000580: 00000073 ecall + +0000000080000584 : + 80000584: 0ff0000f fence + 80000588: 00100193 li gp,1 + 8000058c: 00000073 ecall + 80000590: c0001073 unimp + 80000594: 0000 unimp + 80000596: 0000 unimp + 80000598: 0000 unimp + 8000059a: 0000 unimp + 8000059c: 0000 unimp + 8000059e: 0000 unimp + 800005a0: 0000 unimp + 800005a2: 0000 unimp + 800005a4: 0000 unimp + 800005a6: 0000 unimp + 800005a8: 0000 unimp + 800005aa: 0000 unimp + 800005ac: 0000 unimp + 800005ae: 0000 unimp + 800005b0: 0000 unimp + 800005b2: 0000 unimp + 800005b4: 0000 unimp + 800005b6: 0000 unimp + 800005b8: 0000 unimp + 800005ba: 0000 unimp + 800005bc: 0000 unimp + 800005be: 0000 unimp + 800005c0: 0000 unimp + 800005c2: 0000 unimp diff --git a/Tests/isa/rv64um-p-mulhu b/Tests/isa/rv64um-p-mulhu new file mode 100644 index 0000000..08c6cbf Binary files /dev/null and b/Tests/isa/rv64um-p-mulhu differ diff --git a/Tests/isa/rv64um-p-mulhu.dump b/Tests/isa/rv64um-p-mulhu.dump new file mode 100644 index 0000000..82860e1 --- /dev/null +++ b/Tests/isa/rv64um-p-mulhu.dump @@ -0,0 +1,492 @@ + +rv64um-p-mulhu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 0220bf33 mulhu t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 4fdf1063 bne t5,t4,800005f0 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 0220bf33 mulhu t5,ra,sp + 80000120: 00000e93 li t4,0 + 80000124: 00300193 li gp,3 + 80000128: 4ddf1463 bne t5,t4,800005f0 + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 0220bf33 mulhu t5,ra,sp + 80000138: 00000e93 li t4,0 + 8000013c: 00400193 li gp,4 + 80000140: 4bdf1863 bne t5,t4,800005f0 + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 0220bf33 mulhu t5,ra,sp + 80000150: 00000e93 li t4,0 + 80000154: 00500193 li gp,5 + 80000158: 49df1c63 bne t5,t4,800005f0 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 0220bf33 mulhu t5,ra,sp + 80000168: 00000e93 li t4,0 + 8000016c: 00600193 li gp,6 + 80000170: 49df1063 bne t5,t4,800005f0 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 0220bf33 mulhu t5,ra,sp + 80000180: ffff0eb7 lui t4,0xffff0 + 80000184: fffe8e9b addiw t4,t4,-1 + 80000188: 00fe9e93 slli t4,t4,0xf + 8000018c: 00700193 li gp,7 + 80000190: 47df1063 bne t5,t4,800005f0 + +0000000080000194 : + 80000194: faaab0b7 lui ra,0xfaaab + 80000198: aab0809b addiw ra,ra,-1365 + 8000019c: 00c09093 slli ra,ra,0xc + 800001a0: aab08093 addi ra,ra,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa8aab> + 800001a4: 00c09093 slli ra,ra,0xc + 800001a8: aab08093 addi ra,ra,-1365 + 800001ac: 00c09093 slli ra,ra,0xc + 800001b0: aab08093 addi ra,ra,-1365 + 800001b4: 00030137 lui sp,0x30 + 800001b8: e7d1011b addiw sp,sp,-387 + 800001bc: 0220bf33 mulhu t5,ra,sp + 800001c0: 00020eb7 lui t4,0x20 + 800001c4: efee8e9b addiw t4,t4,-258 + 800001c8: 01e00193 li gp,30 + 800001cc: 43df1263 bne t5,t4,800005f0 + +00000000800001d0 : + 800001d0: 000300b7 lui ra,0x30 + 800001d4: e7d0809b addiw ra,ra,-387 + 800001d8: faaab137 lui sp,0xfaaab + 800001dc: aab1011b addiw sp,sp,-1365 + 800001e0: 00c11113 slli sp,sp,0xc + 800001e4: aab10113 addi sp,sp,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa8aab> + 800001e8: 00c11113 slli sp,sp,0xc + 800001ec: aab10113 addi sp,sp,-1365 + 800001f0: 00c11113 slli sp,sp,0xc + 800001f4: aab10113 addi sp,sp,-1365 + 800001f8: 0220bf33 mulhu t5,ra,sp + 800001fc: 00020eb7 lui t4,0x20 + 80000200: efee8e9b addiw t4,t4,-258 + 80000204: 01f00193 li gp,31 + 80000208: 3fdf1463 bne t5,t4,800005f0 + +000000008000020c : + 8000020c: 00d0009b addiw ra,zero,13 + 80000210: 02009093 slli ra,ra,0x20 + 80000214: 00b0011b addiw sp,zero,11 + 80000218: 02011113 slli sp,sp,0x20 + 8000021c: 0220b0b3 mulhu ra,ra,sp + 80000220: 08f00e93 li t4,143 + 80000224: 00800193 li gp,8 + 80000228: 3dd09463 bne ra,t4,800005f0 + +000000008000022c : + 8000022c: 0070009b addiw ra,zero,7 + 80000230: 02109093 slli ra,ra,0x21 + 80000234: 00b0011b addiw sp,zero,11 + 80000238: 02011113 slli sp,sp,0x20 + 8000023c: 0220b133 mulhu sp,ra,sp + 80000240: 09a00e93 li t4,154 + 80000244: 00900193 li gp,9 + 80000248: 3bd11463 bne sp,t4,800005f0 + +000000008000024c : + 8000024c: 00d0009b addiw ra,zero,13 + 80000250: 02009093 slli ra,ra,0x20 + 80000254: 0210b0b3 mulhu ra,ra,ra + 80000258: 0a900e93 li t4,169 + 8000025c: 00a00193 li gp,10 + 80000260: 39d09863 bne ra,t4,800005f0 + +0000000080000264 : + 80000264: 00000213 li tp,0 + 80000268: 00d0009b addiw ra,zero,13 + 8000026c: 02009093 slli ra,ra,0x20 + 80000270: 00b0011b addiw sp,zero,11 + 80000274: 02011113 slli sp,sp,0x20 + 80000278: 0220bf33 mulhu t5,ra,sp + 8000027c: 000f0313 mv t1,t5 + 80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000284: 00200293 li t0,2 + 80000288: fe5210e3 bne tp,t0,80000268 + 8000028c: 08f00e93 li t4,143 + 80000290: 00b00193 li gp,11 + 80000294: 35d31e63 bne t1,t4,800005f0 + +0000000080000298 : + 80000298: 00000213 li tp,0 + 8000029c: 0070009b addiw ra,zero,7 + 800002a0: 02109093 slli ra,ra,0x21 + 800002a4: 00b0011b addiw sp,zero,11 + 800002a8: 02011113 slli sp,sp,0x20 + 800002ac: 0220bf33 mulhu t5,ra,sp + 800002b0: 00000013 nop + 800002b4: 000f0313 mv t1,t5 + 800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002bc: 00200293 li t0,2 + 800002c0: fc521ee3 bne tp,t0,8000029c + 800002c4: 09a00e93 li t4,154 + 800002c8: 00c00193 li gp,12 + 800002cc: 33d31263 bne t1,t4,800005f0 + +00000000800002d0 : + 800002d0: 00000213 li tp,0 + 800002d4: 00f0009b addiw ra,zero,15 + 800002d8: 02009093 slli ra,ra,0x20 + 800002dc: 00b0011b addiw sp,zero,11 + 800002e0: 02011113 slli sp,sp,0x20 + 800002e4: 0220bf33 mulhu t5,ra,sp + 800002e8: 00000013 nop + 800002ec: 00000013 nop + 800002f0: 000f0313 mv t1,t5 + 800002f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002f8: 00200293 li t0,2 + 800002fc: fc521ce3 bne tp,t0,800002d4 + 80000300: 0a500e93 li t4,165 + 80000304: 00d00193 li gp,13 + 80000308: 2fd31463 bne t1,t4,800005f0 + +000000008000030c : + 8000030c: 00000213 li tp,0 + 80000310: 00d0009b addiw ra,zero,13 + 80000314: 02009093 slli ra,ra,0x20 + 80000318: 00b0011b addiw sp,zero,11 + 8000031c: 02011113 slli sp,sp,0x20 + 80000320: 0220bf33 mulhu t5,ra,sp + 80000324: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000328: 00200293 li t0,2 + 8000032c: fe5212e3 bne tp,t0,80000310 + 80000330: 08f00e93 li t4,143 + 80000334: 00e00193 li gp,14 + 80000338: 2bdf1c63 bne t5,t4,800005f0 + +000000008000033c : + 8000033c: 00000213 li tp,0 + 80000340: 0070009b addiw ra,zero,7 + 80000344: 02109093 slli ra,ra,0x21 + 80000348: 00b0011b addiw sp,zero,11 + 8000034c: 02011113 slli sp,sp,0x20 + 80000350: 00000013 nop + 80000354: 0220bf33 mulhu t5,ra,sp + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fe5210e3 bne tp,t0,80000340 + 80000364: 09a00e93 li t4,154 + 80000368: 00f00193 li gp,15 + 8000036c: 29df1263 bne t5,t4,800005f0 + +0000000080000370 : + 80000370: 00000213 li tp,0 + 80000374: 00f0009b addiw ra,zero,15 + 80000378: 02009093 slli ra,ra,0x20 + 8000037c: 00b0011b addiw sp,zero,11 + 80000380: 02011113 slli sp,sp,0x20 + 80000384: 00000013 nop + 80000388: 00000013 nop + 8000038c: 0220bf33 mulhu t5,ra,sp + 80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000394: 00200293 li t0,2 + 80000398: fc521ee3 bne tp,t0,80000374 + 8000039c: 0a500e93 li t4,165 + 800003a0: 01000193 li gp,16 + 800003a4: 25df1663 bne t5,t4,800005f0 + +00000000800003a8 : + 800003a8: 00000213 li tp,0 + 800003ac: 00d0009b addiw ra,zero,13 + 800003b0: 02009093 slli ra,ra,0x20 + 800003b4: 00000013 nop + 800003b8: 00b0011b addiw sp,zero,11 + 800003bc: 02011113 slli sp,sp,0x20 + 800003c0: 0220bf33 mulhu t5,ra,sp + 800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003c8: 00200293 li t0,2 + 800003cc: fe5210e3 bne tp,t0,800003ac + 800003d0: 08f00e93 li t4,143 + 800003d4: 01100193 li gp,17 + 800003d8: 21df1c63 bne t5,t4,800005f0 + +00000000800003dc : + 800003dc: 00000213 li tp,0 + 800003e0: 0070009b addiw ra,zero,7 + 800003e4: 02109093 slli ra,ra,0x21 + 800003e8: 00000013 nop + 800003ec: 00b0011b addiw sp,zero,11 + 800003f0: 02011113 slli sp,sp,0x20 + 800003f4: 00000013 nop + 800003f8: 0220bf33 mulhu t5,ra,sp + 800003fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000400: 00200293 li t0,2 + 80000404: fc521ee3 bne tp,t0,800003e0 + 80000408: 09a00e93 li t4,154 + 8000040c: 01200193 li gp,18 + 80000410: 1fdf1063 bne t5,t4,800005f0 + +0000000080000414 : + 80000414: 00000213 li tp,0 + 80000418: 00f0009b addiw ra,zero,15 + 8000041c: 02009093 slli ra,ra,0x20 + 80000420: 00000013 nop + 80000424: 00000013 nop + 80000428: 00b0011b addiw sp,zero,11 + 8000042c: 02011113 slli sp,sp,0x20 + 80000430: 0220bf33 mulhu t5,ra,sp + 80000434: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000438: 00200293 li t0,2 + 8000043c: fc521ee3 bne tp,t0,80000418 + 80000440: 0a500e93 li t4,165 + 80000444: 01300193 li gp,19 + 80000448: 1bdf1463 bne t5,t4,800005f0 + +000000008000044c : + 8000044c: 00000213 li tp,0 + 80000450: 00b0011b addiw sp,zero,11 + 80000454: 02011113 slli sp,sp,0x20 + 80000458: 00d0009b addiw ra,zero,13 + 8000045c: 02009093 slli ra,ra,0x20 + 80000460: 0220bf33 mulhu t5,ra,sp + 80000464: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000468: 00200293 li t0,2 + 8000046c: fe5212e3 bne tp,t0,80000450 + 80000470: 08f00e93 li t4,143 + 80000474: 01400193 li gp,20 + 80000478: 17df1c63 bne t5,t4,800005f0 + +000000008000047c : + 8000047c: 00000213 li tp,0 + 80000480: 00b0011b addiw sp,zero,11 + 80000484: 02011113 slli sp,sp,0x20 + 80000488: 0070009b addiw ra,zero,7 + 8000048c: 02109093 slli ra,ra,0x21 + 80000490: 00000013 nop + 80000494: 0220bf33 mulhu t5,ra,sp + 80000498: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000049c: 00200293 li t0,2 + 800004a0: fe5210e3 bne tp,t0,80000480 + 800004a4: 09a00e93 li t4,154 + 800004a8: 01500193 li gp,21 + 800004ac: 15df1263 bne t5,t4,800005f0 + +00000000800004b0 : + 800004b0: 00000213 li tp,0 + 800004b4: 00b0011b addiw sp,zero,11 + 800004b8: 02011113 slli sp,sp,0x20 + 800004bc: 00f0009b addiw ra,zero,15 + 800004c0: 02009093 slli ra,ra,0x20 + 800004c4: 00000013 nop + 800004c8: 00000013 nop + 800004cc: 0220bf33 mulhu t5,ra,sp + 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800004d4: 00200293 li t0,2 + 800004d8: fc521ee3 bne tp,t0,800004b4 + 800004dc: 0a500e93 li t4,165 + 800004e0: 01600193 li gp,22 + 800004e4: 11df1663 bne t5,t4,800005f0 + +00000000800004e8 : + 800004e8: 00000213 li tp,0 + 800004ec: 00b0011b addiw sp,zero,11 + 800004f0: 02011113 slli sp,sp,0x20 + 800004f4: 00000013 nop + 800004f8: 00d0009b addiw ra,zero,13 + 800004fc: 02009093 slli ra,ra,0x20 + 80000500: 0220bf33 mulhu t5,ra,sp + 80000504: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000508: 00200293 li t0,2 + 8000050c: fe5210e3 bne tp,t0,800004ec + 80000510: 08f00e93 li t4,143 + 80000514: 01700193 li gp,23 + 80000518: 0ddf1c63 bne t5,t4,800005f0 + +000000008000051c : + 8000051c: 00000213 li tp,0 + 80000520: 00b0011b addiw sp,zero,11 + 80000524: 02011113 slli sp,sp,0x20 + 80000528: 00000013 nop + 8000052c: 0070009b addiw ra,zero,7 + 80000530: 02109093 slli ra,ra,0x21 + 80000534: 00000013 nop + 80000538: 0220bf33 mulhu t5,ra,sp + 8000053c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000540: 00200293 li t0,2 + 80000544: fc521ee3 bne tp,t0,80000520 + 80000548: 09a00e93 li t4,154 + 8000054c: 01800193 li gp,24 + 80000550: 0bdf1063 bne t5,t4,800005f0 + +0000000080000554 : + 80000554: 00000213 li tp,0 + 80000558: 00b0011b addiw sp,zero,11 + 8000055c: 02011113 slli sp,sp,0x20 + 80000560: 00000013 nop + 80000564: 00000013 nop + 80000568: 00f0009b addiw ra,zero,15 + 8000056c: 02009093 slli ra,ra,0x20 + 80000570: 0220bf33 mulhu t5,ra,sp + 80000574: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000578: 00200293 li t0,2 + 8000057c: fc521ee3 bne tp,t0,80000558 + 80000580: 0a500e93 li t4,165 + 80000584: 01900193 li gp,25 + 80000588: 07df1463 bne t5,t4,800005f0 + +000000008000058c : + 8000058c: 01f0009b addiw ra,zero,31 + 80000590: 02009093 slli ra,ra,0x20 + 80000594: 02103133 mulhu sp,zero,ra + 80000598: 00000e93 li t4,0 + 8000059c: 01a00193 li gp,26 + 800005a0: 05d11863 bne sp,t4,800005f0 + +00000000800005a4 : + 800005a4: 0010009b addiw ra,zero,1 + 800005a8: 02509093 slli ra,ra,0x25 + 800005ac: 0200b133 mulhu sp,ra,zero + 800005b0: 00000e93 li t4,0 + 800005b4: 01b00193 li gp,27 + 800005b8: 03d11c63 bne sp,t4,800005f0 + +00000000800005bc : + 800005bc: 020030b3 mulhu ra,zero,zero + 800005c0: 00000e93 li t4,0 + 800005c4: 01c00193 li gp,28 + 800005c8: 03d09463 bne ra,t4,800005f0 + +00000000800005cc : + 800005cc: 0210009b addiw ra,zero,33 + 800005d0: 02009093 slli ra,ra,0x20 + 800005d4: 0110011b addiw sp,zero,17 + 800005d8: 02111113 slli sp,sp,0x21 + 800005dc: 0220b033 mulhu zero,ra,sp + 800005e0: 00000e93 li t4,0 + 800005e4: 01d00193 li gp,29 + 800005e8: 01d01463 bne zero,t4,800005f0 + 800005ec: 00301c63 bne zero,gp,80000604 + +00000000800005f0 : + 800005f0: 0ff0000f fence + 800005f4: 00018063 beqz gp,800005f4 + 800005f8: 00119193 slli gp,gp,0x1 + 800005fc: 0011e193 ori gp,gp,1 + 80000600: 00000073 ecall + +0000000080000604 : + 80000604: 0ff0000f fence + 80000608: 00100193 li gp,1 + 8000060c: 00000073 ecall + 80000610: c0001073 unimp + 80000614: 0000 unimp + 80000616: 0000 unimp + 80000618: 0000 unimp + 8000061a: 0000 unimp + 8000061c: 0000 unimp + 8000061e: 0000 unimp + 80000620: 0000 unimp + 80000622: 0000 unimp + 80000624: 0000 unimp + 80000626: 0000 unimp + 80000628: 0000 unimp + 8000062a: 0000 unimp + 8000062c: 0000 unimp + 8000062e: 0000 unimp + 80000630: 0000 unimp + 80000632: 0000 unimp + 80000634: 0000 unimp + 80000636: 0000 unimp + 80000638: 0000 unimp + 8000063a: 0000 unimp + 8000063c: 0000 unimp + 8000063e: 0000 unimp + 80000640: 0000 unimp + 80000642: 0000 unimp diff --git a/Tests/isa/rv64um-p-mulw b/Tests/isa/rv64um-p-mulw new file mode 100644 index 0000000..5a0cd67 Binary files /dev/null and b/Tests/isa/rv64um-p-mulw differ diff --git a/Tests/isa/rv64um-p-mulw.dump b/Tests/isa/rv64um-p-mulw.dump new file mode 100644 index 0000000..c9c2d8d --- /dev/null +++ b/Tests/isa/rv64um-p-mulw.dump @@ -0,0 +1,399 @@ + +rv64um-p-mulw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 00000093 li ra,0 + 80000100: 00000113 li sp,0 + 80000104: 02208f3b mulw t5,ra,sp + 80000108: 00000e93 li t4,0 + 8000010c: 00200193 li gp,2 + 80000110: 3ddf1263 bne t5,t4,800004d4 + +0000000080000114 : + 80000114: 00100093 li ra,1 + 80000118: 00100113 li sp,1 + 8000011c: 02208f3b mulw t5,ra,sp + 80000120: 00100e93 li t4,1 + 80000124: 00300193 li gp,3 + 80000128: 3bdf1663 bne t5,t4,800004d4 + +000000008000012c : + 8000012c: 00300093 li ra,3 + 80000130: 00700113 li sp,7 + 80000134: 02208f3b mulw t5,ra,sp + 80000138: 01500e93 li t4,21 + 8000013c: 00400193 li gp,4 + 80000140: 39df1a63 bne t5,t4,800004d4 + +0000000080000144 : + 80000144: 00000093 li ra,0 + 80000148: ffff8137 lui sp,0xffff8 + 8000014c: 02208f3b mulw t5,ra,sp + 80000150: 00000e93 li t4,0 + 80000154: 00500193 li gp,5 + 80000158: 37df1e63 bne t5,t4,800004d4 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00000113 li sp,0 + 80000164: 02208f3b mulw t5,ra,sp + 80000168: 00000e93 li t4,0 + 8000016c: 00600193 li gp,6 + 80000170: 37df1263 bne t5,t4,800004d4 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: ffff8137 lui sp,0xffff8 + 8000017c: 02208f3b mulw t5,ra,sp + 80000180: 00000e93 li t4,0 + 80000184: 00700193 li gp,7 + 80000188: 35df1663 bne t5,t4,800004d4 + +000000008000018c : + 8000018c: 00d00093 li ra,13 + 80000190: 00b00113 li sp,11 + 80000194: 022080bb mulw ra,ra,sp + 80000198: 08f00e93 li t4,143 + 8000019c: 00800193 li gp,8 + 800001a0: 33d09a63 bne ra,t4,800004d4 + +00000000800001a4 : + 800001a4: 00e00093 li ra,14 + 800001a8: 00b00113 li sp,11 + 800001ac: 0220813b mulw sp,ra,sp + 800001b0: 09a00e93 li t4,154 + 800001b4: 00900193 li gp,9 + 800001b8: 31d11e63 bne sp,t4,800004d4 + +00000000800001bc : + 800001bc: 00d00093 li ra,13 + 800001c0: 021080bb mulw ra,ra,ra + 800001c4: 0a900e93 li t4,169 + 800001c8: 00a00193 li gp,10 + 800001cc: 31d09463 bne ra,t4,800004d4 + +00000000800001d0 : + 800001d0: 00000213 li tp,0 + 800001d4: 00d00093 li ra,13 + 800001d8: 00b00113 li sp,11 + 800001dc: 02208f3b mulw t5,ra,sp + 800001e0: 000f0313 mv t1,t5 + 800001e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800001e8: 00200293 li t0,2 + 800001ec: fe5214e3 bne tp,t0,800001d4 + 800001f0: 08f00e93 li t4,143 + 800001f4: 00b00193 li gp,11 + 800001f8: 2dd31e63 bne t1,t4,800004d4 + +00000000800001fc : + 800001fc: 00000213 li tp,0 + 80000200: 00e00093 li ra,14 + 80000204: 00b00113 li sp,11 + 80000208: 02208f3b mulw t5,ra,sp + 8000020c: 00000013 nop + 80000210: 000f0313 mv t1,t5 + 80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000218: 00200293 li t0,2 + 8000021c: fe5212e3 bne tp,t0,80000200 + 80000220: 09a00e93 li t4,154 + 80000224: 00c00193 li gp,12 + 80000228: 2bd31663 bne t1,t4,800004d4 + +000000008000022c : + 8000022c: 00000213 li tp,0 + 80000230: 00f00093 li ra,15 + 80000234: 00b00113 li sp,11 + 80000238: 02208f3b mulw t5,ra,sp + 8000023c: 00000013 nop + 80000240: 00000013 nop + 80000244: 000f0313 mv t1,t5 + 80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000024c: 00200293 li t0,2 + 80000250: fe5210e3 bne tp,t0,80000230 + 80000254: 0a500e93 li t4,165 + 80000258: 00d00193 li gp,13 + 8000025c: 27d31c63 bne t1,t4,800004d4 + +0000000080000260 : + 80000260: 00000213 li tp,0 + 80000264: 00d00093 li ra,13 + 80000268: 00b00113 li sp,11 + 8000026c: 02208f3b mulw t5,ra,sp + 80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000274: 00200293 li t0,2 + 80000278: fe5216e3 bne tp,t0,80000264 + 8000027c: 08f00e93 li t4,143 + 80000280: 00e00193 li gp,14 + 80000284: 25df1863 bne t5,t4,800004d4 + +0000000080000288 : + 80000288: 00000213 li tp,0 + 8000028c: 00e00093 li ra,14 + 80000290: 00b00113 li sp,11 + 80000294: 00000013 nop + 80000298: 02208f3b mulw t5,ra,sp + 8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002a0: 00200293 li t0,2 + 800002a4: fe5214e3 bne tp,t0,8000028c + 800002a8: 09a00e93 li t4,154 + 800002ac: 00f00193 li gp,15 + 800002b0: 23df1263 bne t5,t4,800004d4 + +00000000800002b4 : + 800002b4: 00000213 li tp,0 + 800002b8: 00f00093 li ra,15 + 800002bc: 00b00113 li sp,11 + 800002c0: 00000013 nop + 800002c4: 00000013 nop + 800002c8: 02208f3b mulw t5,ra,sp + 800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002d0: 00200293 li t0,2 + 800002d4: fe5212e3 bne tp,t0,800002b8 + 800002d8: 0a500e93 li t4,165 + 800002dc: 01000193 li gp,16 + 800002e0: 1fdf1a63 bne t5,t4,800004d4 + +00000000800002e4 : + 800002e4: 00000213 li tp,0 + 800002e8: 00d00093 li ra,13 + 800002ec: 00000013 nop + 800002f0: 00b00113 li sp,11 + 800002f4: 02208f3b mulw t5,ra,sp + 800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800002fc: 00200293 li t0,2 + 80000300: fe5214e3 bne tp,t0,800002e8 + 80000304: 08f00e93 li t4,143 + 80000308: 01100193 li gp,17 + 8000030c: 1ddf1463 bne t5,t4,800004d4 + +0000000080000310 : + 80000310: 00000213 li tp,0 + 80000314: 00e00093 li ra,14 + 80000318: 00000013 nop + 8000031c: 00b00113 li sp,11 + 80000320: 00000013 nop + 80000324: 02208f3b mulw t5,ra,sp + 80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000032c: 00200293 li t0,2 + 80000330: fe5212e3 bne tp,t0,80000314 + 80000334: 09a00e93 li t4,154 + 80000338: 01200193 li gp,18 + 8000033c: 19df1c63 bne t5,t4,800004d4 + +0000000080000340 : + 80000340: 00000213 li tp,0 + 80000344: 00f00093 li ra,15 + 80000348: 00000013 nop + 8000034c: 00000013 nop + 80000350: 00b00113 li sp,11 + 80000354: 02208f3b mulw t5,ra,sp + 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000035c: 00200293 li t0,2 + 80000360: fe5212e3 bne tp,t0,80000344 + 80000364: 0a500e93 li t4,165 + 80000368: 01300193 li gp,19 + 8000036c: 17df1463 bne t5,t4,800004d4 + +0000000080000370 : + 80000370: 00000213 li tp,0 + 80000374: 00b00113 li sp,11 + 80000378: 00d00093 li ra,13 + 8000037c: 02208f3b mulw t5,ra,sp + 80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80000384: 00200293 li t0,2 + 80000388: fe5216e3 bne tp,t0,80000374 + 8000038c: 08f00e93 li t4,143 + 80000390: 01400193 li gp,20 + 80000394: 15df1063 bne t5,t4,800004d4 + +0000000080000398 : + 80000398: 00000213 li tp,0 + 8000039c: 00b00113 li sp,11 + 800003a0: 00e00093 li ra,14 + 800003a4: 00000013 nop + 800003a8: 02208f3b mulw t5,ra,sp + 800003ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003b0: 00200293 li t0,2 + 800003b4: fe5214e3 bne tp,t0,8000039c + 800003b8: 09a00e93 li t4,154 + 800003bc: 01500193 li gp,21 + 800003c0: 11df1a63 bne t5,t4,800004d4 + +00000000800003c4 : + 800003c4: 00000213 li tp,0 + 800003c8: 00b00113 li sp,11 + 800003cc: 00f00093 li ra,15 + 800003d0: 00000013 nop + 800003d4: 00000013 nop + 800003d8: 02208f3b mulw t5,ra,sp + 800003dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 800003e0: 00200293 li t0,2 + 800003e4: fe5212e3 bne tp,t0,800003c8 + 800003e8: 0a500e93 li t4,165 + 800003ec: 01600193 li gp,22 + 800003f0: 0fdf1263 bne t5,t4,800004d4 + +00000000800003f4 : + 800003f4: 00000213 li tp,0 + 800003f8: 00b00113 li sp,11 + 800003fc: 00000013 nop + 80000400: 00d00093 li ra,13 + 80000404: 02208f3b mulw t5,ra,sp + 80000408: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000040c: 00200293 li t0,2 + 80000410: fe5214e3 bne tp,t0,800003f8 + 80000414: 08f00e93 li t4,143 + 80000418: 01700193 li gp,23 + 8000041c: 0bdf1c63 bne t5,t4,800004d4 + +0000000080000420 : + 80000420: 00000213 li tp,0 + 80000424: 00b00113 li sp,11 + 80000428: 00000013 nop + 8000042c: 00e00093 li ra,14 + 80000430: 00000013 nop + 80000434: 02208f3b mulw t5,ra,sp + 80000438: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000043c: 00200293 li t0,2 + 80000440: fe5212e3 bne tp,t0,80000424 + 80000444: 09a00e93 li t4,154 + 80000448: 01800193 li gp,24 + 8000044c: 09df1463 bne t5,t4,800004d4 + +0000000080000450 : + 80000450: 00000213 li tp,0 + 80000454: 00b00113 li sp,11 + 80000458: 00000013 nop + 8000045c: 00000013 nop + 80000460: 00f00093 li ra,15 + 80000464: 02208f3b mulw t5,ra,sp + 80000468: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 8000046c: 00200293 li t0,2 + 80000470: fe5212e3 bne tp,t0,80000454 + 80000474: 0a500e93 li t4,165 + 80000478: 01900193 li gp,25 + 8000047c: 05df1c63 bne t5,t4,800004d4 + +0000000080000480 : + 80000480: 01f00093 li ra,31 + 80000484: 0210013b mulw sp,zero,ra + 80000488: 00000e93 li t4,0 + 8000048c: 01a00193 li gp,26 + 80000490: 05d11263 bne sp,t4,800004d4 + +0000000080000494 : + 80000494: 02000093 li ra,32 + 80000498: 0200813b mulw sp,ra,zero + 8000049c: 00000e93 li t4,0 + 800004a0: 01b00193 li gp,27 + 800004a4: 03d11863 bne sp,t4,800004d4 + +00000000800004a8 : + 800004a8: 020000bb mulw ra,zero,zero + 800004ac: 00000e93 li t4,0 + 800004b0: 01c00193 li gp,28 + 800004b4: 03d09063 bne ra,t4,800004d4 + +00000000800004b8 : + 800004b8: 02100093 li ra,33 + 800004bc: 02200113 li sp,34 + 800004c0: 0220803b mulw zero,ra,sp + 800004c4: 00000e93 li t4,0 + 800004c8: 01d00193 li gp,29 + 800004cc: 01d01463 bne zero,t4,800004d4 + 800004d0: 00301c63 bne zero,gp,800004e8 + +00000000800004d4 : + 800004d4: 0ff0000f fence + 800004d8: 00018063 beqz gp,800004d8 + 800004dc: 00119193 slli gp,gp,0x1 + 800004e0: 0011e193 ori gp,gp,1 + 800004e4: 00000073 ecall + +00000000800004e8 : + 800004e8: 0ff0000f fence + 800004ec: 00100193 li gp,1 + 800004f0: 00000073 ecall + 800004f4: c0001073 unimp + 800004f8: 0000 unimp + 800004fa: 0000 unimp + 800004fc: 0000 unimp + 800004fe: 0000 unimp + 80000500: 0000 unimp + 80000502: 0000 unimp diff --git a/Tests/isa/rv64um-p-rem b/Tests/isa/rv64um-p-rem new file mode 100644 index 0000000..c2b9a20 Binary files /dev/null and b/Tests/isa/rv64um-p-rem differ diff --git a/Tests/isa/rv64um-p-rem.dump b/Tests/isa/rv64um-p-rem.dump new file mode 100644 index 0000000..a367686 --- /dev/null +++ b/Tests/isa/rv64um-p-rem.dump @@ -0,0 +1,196 @@ + +rv64um-p-rem: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220ef33 rem t5,ra,sp + 80000108: 00200e93 li t4,2 + 8000010c: 00200193 li gp,2 + 80000110: 0ddf1c63 bne t5,t4,800001e8 + +0000000080000114 : + 80000114: fec00093 li ra,-20 + 80000118: 00600113 li sp,6 + 8000011c: 0220ef33 rem t5,ra,sp + 80000120: ffe00e93 li t4,-2 + 80000124: 00300193 li gp,3 + 80000128: 0ddf1063 bne t5,t4,800001e8 + +000000008000012c : + 8000012c: 01400093 li ra,20 + 80000130: ffa00113 li sp,-6 + 80000134: 0220ef33 rem t5,ra,sp + 80000138: 00200e93 li t4,2 + 8000013c: 00400193 li gp,4 + 80000140: 0bdf1463 bne t5,t4,800001e8 + +0000000080000144 : + 80000144: fec00093 li ra,-20 + 80000148: ffa00113 li sp,-6 + 8000014c: 0220ef33 rem t5,ra,sp + 80000150: ffe00e93 li t4,-2 + 80000154: 00500193 li gp,5 + 80000158: 09df1863 bne t5,t4,800001e8 + +000000008000015c : + 8000015c: fff0009b addiw ra,zero,-1 + 80000160: 03f09093 slli ra,ra,0x3f + 80000164: 00100113 li sp,1 + 80000168: 0220ef33 rem t5,ra,sp + 8000016c: 00000e93 li t4,0 + 80000170: 00600193 li gp,6 + 80000174: 07df1a63 bne t5,t4,800001e8 + +0000000080000178 : + 80000178: fff0009b addiw ra,zero,-1 + 8000017c: 03f09093 slli ra,ra,0x3f + 80000180: fff00113 li sp,-1 + 80000184: 0220ef33 rem t5,ra,sp + 80000188: 00000e93 li t4,0 + 8000018c: 00700193 li gp,7 + 80000190: 05df1c63 bne t5,t4,800001e8 + +0000000080000194 : + 80000194: fff0009b addiw ra,zero,-1 + 80000198: 03f09093 slli ra,ra,0x3f + 8000019c: 00000113 li sp,0 + 800001a0: 0220ef33 rem t5,ra,sp + 800001a4: fff00e9b addiw t4,zero,-1 + 800001a8: 03fe9e93 slli t4,t4,0x3f + 800001ac: 00800193 li gp,8 + 800001b0: 03df1c63 bne t5,t4,800001e8 + +00000000800001b4 : + 800001b4: 00100093 li ra,1 + 800001b8: 00000113 li sp,0 + 800001bc: 0220ef33 rem t5,ra,sp + 800001c0: 00100e93 li t4,1 + 800001c4: 00900193 li gp,9 + 800001c8: 03df1063 bne t5,t4,800001e8 + +00000000800001cc : + 800001cc: 00000093 li ra,0 + 800001d0: 00000113 li sp,0 + 800001d4: 0220ef33 rem t5,ra,sp + 800001d8: 00000e93 li t4,0 + 800001dc: 00a00193 li gp,10 + 800001e0: 01df1463 bne t5,t4,800001e8 + 800001e4: 00301c63 bne zero,gp,800001fc + +00000000800001e8 : + 800001e8: 0ff0000f fence + 800001ec: 00018063 beqz gp,800001ec + 800001f0: 00119193 slli gp,gp,0x1 + 800001f4: 0011e193 ori gp,gp,1 + 800001f8: 00000073 ecall + +00000000800001fc : + 800001fc: 0ff0000f fence + 80000200: 00100193 li gp,1 + 80000204: 00000073 ecall + 80000208: c0001073 unimp + 8000020c: 0000 unimp + 8000020e: 0000 unimp + 80000210: 0000 unimp + 80000212: 0000 unimp + 80000214: 0000 unimp + 80000216: 0000 unimp + 80000218: 0000 unimp + 8000021a: 0000 unimp + 8000021c: 0000 unimp + 8000021e: 0000 unimp + 80000220: 0000 unimp + 80000222: 0000 unimp + 80000224: 0000 unimp + 80000226: 0000 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64um-p-remu b/Tests/isa/rv64um-p-remu new file mode 100644 index 0000000..af43c0f Binary files /dev/null and b/Tests/isa/rv64um-p-remu differ diff --git a/Tests/isa/rv64um-p-remu.dump b/Tests/isa/rv64um-p-remu.dump new file mode 100644 index 0000000..f33af39 --- /dev/null +++ b/Tests/isa/rv64um-p-remu.dump @@ -0,0 +1,195 @@ + +rv64um-p-remu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220ff33 remu t5,ra,sp + 80000108: 00200e93 li t4,2 + 8000010c: 00200193 li gp,2 + 80000110: 0ddf1e63 bne t5,t4,800001ec + +0000000080000114 : + 80000114: fec00093 li ra,-20 + 80000118: 00600113 li sp,6 + 8000011c: 0220ff33 remu t5,ra,sp + 80000120: 00200e93 li t4,2 + 80000124: 00300193 li gp,3 + 80000128: 0ddf1263 bne t5,t4,800001ec + +000000008000012c : + 8000012c: 01400093 li ra,20 + 80000130: ffa00113 li sp,-6 + 80000134: 0220ff33 remu t5,ra,sp + 80000138: 01400e93 li t4,20 + 8000013c: 00400193 li gp,4 + 80000140: 0bdf1663 bne t5,t4,800001ec + +0000000080000144 : + 80000144: fec00093 li ra,-20 + 80000148: ffa00113 li sp,-6 + 8000014c: 0220ff33 remu t5,ra,sp + 80000150: fec00e93 li t4,-20 + 80000154: 00500193 li gp,5 + 80000158: 09df1a63 bne t5,t4,800001ec + +000000008000015c : + 8000015c: fff0009b addiw ra,zero,-1 + 80000160: 03f09093 slli ra,ra,0x3f + 80000164: 00100113 li sp,1 + 80000168: 0220ff33 remu t5,ra,sp + 8000016c: 00000e93 li t4,0 + 80000170: 00600193 li gp,6 + 80000174: 07df1c63 bne t5,t4,800001ec + +0000000080000178 : + 80000178: fff0009b addiw ra,zero,-1 + 8000017c: 03f09093 slli ra,ra,0x3f + 80000180: fff00113 li sp,-1 + 80000184: 0220ff33 remu t5,ra,sp + 80000188: fff00e9b addiw t4,zero,-1 + 8000018c: 03fe9e93 slli t4,t4,0x3f + 80000190: 00700193 li gp,7 + 80000194: 05df1c63 bne t5,t4,800001ec + +0000000080000198 : + 80000198: fff0009b addiw ra,zero,-1 + 8000019c: 03f09093 slli ra,ra,0x3f + 800001a0: 00000113 li sp,0 + 800001a4: 0220ff33 remu t5,ra,sp + 800001a8: fff00e9b addiw t4,zero,-1 + 800001ac: 03fe9e93 slli t4,t4,0x3f + 800001b0: 00800193 li gp,8 + 800001b4: 03df1c63 bne t5,t4,800001ec + +00000000800001b8 : + 800001b8: 00100093 li ra,1 + 800001bc: 00000113 li sp,0 + 800001c0: 0220ff33 remu t5,ra,sp + 800001c4: 00100e93 li t4,1 + 800001c8: 00900193 li gp,9 + 800001cc: 03df1063 bne t5,t4,800001ec + +00000000800001d0 : + 800001d0: 00000093 li ra,0 + 800001d4: 00000113 li sp,0 + 800001d8: 0220ff33 remu t5,ra,sp + 800001dc: 00000e93 li t4,0 + 800001e0: 00a00193 li gp,10 + 800001e4: 01df1463 bne t5,t4,800001ec + 800001e8: 00301c63 bne zero,gp,80000200 + +00000000800001ec : + 800001ec: 0ff0000f fence + 800001f0: 00018063 beqz gp,800001f0 + 800001f4: 00119193 slli gp,gp,0x1 + 800001f8: 0011e193 ori gp,gp,1 + 800001fc: 00000073 ecall + +0000000080000200 : + 80000200: 0ff0000f fence + 80000204: 00100193 li gp,1 + 80000208: 00000073 ecall + 8000020c: c0001073 unimp + 80000210: 0000 unimp + 80000212: 0000 unimp + 80000214: 0000 unimp + 80000216: 0000 unimp + 80000218: 0000 unimp + 8000021a: 0000 unimp + 8000021c: 0000 unimp + 8000021e: 0000 unimp + 80000220: 0000 unimp + 80000222: 0000 unimp + 80000224: 0000 unimp + 80000226: 0000 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64um-p-remuw b/Tests/isa/rv64um-p-remuw new file mode 100644 index 0000000..6d4e5b4 Binary files /dev/null and b/Tests/isa/rv64um-p-remuw differ diff --git a/Tests/isa/rv64um-p-remuw.dump b/Tests/isa/rv64um-p-remuw.dump new file mode 100644 index 0000000..43ddd98 --- /dev/null +++ b/Tests/isa/rv64um-p-remuw.dump @@ -0,0 +1,168 @@ + +rv64um-p-remuw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220ff3b remuw t5,ra,sp + 80000108: 00200e93 li t4,2 + 8000010c: 00200193 li gp,2 + 80000110: 0ddf1463 bne t5,t4,800001d8 + +0000000080000114 : + 80000114: fec00093 li ra,-20 + 80000118: 00600113 li sp,6 + 8000011c: 0220ff3b remuw t5,ra,sp + 80000120: 00200e93 li t4,2 + 80000124: 00300193 li gp,3 + 80000128: 0bdf1863 bne t5,t4,800001d8 + +000000008000012c : + 8000012c: 01400093 li ra,20 + 80000130: ffa00113 li sp,-6 + 80000134: 0220ff3b remuw t5,ra,sp + 80000138: 01400e93 li t4,20 + 8000013c: 00400193 li gp,4 + 80000140: 09df1c63 bne t5,t4,800001d8 + +0000000080000144 : + 80000144: fec00093 li ra,-20 + 80000148: ffa00113 li sp,-6 + 8000014c: 0220ff3b remuw t5,ra,sp + 80000150: fec00e93 li t4,-20 + 80000154: 00500193 li gp,5 + 80000158: 09df1063 bne t5,t4,800001d8 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00100113 li sp,1 + 80000164: 0220ff3b remuw t5,ra,sp + 80000168: 00000e93 li t4,0 + 8000016c: 00600193 li gp,6 + 80000170: 07df1463 bne t5,t4,800001d8 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: fff00113 li sp,-1 + 8000017c: 0220ff3b remuw t5,ra,sp + 80000180: 80000eb7 lui t4,0x80000 + 80000184: 00700193 li gp,7 + 80000188: 05df1863 bne t5,t4,800001d8 + +000000008000018c : + 8000018c: 800000b7 lui ra,0x80000 + 80000190: 00000113 li sp,0 + 80000194: 0220ff3b remuw t5,ra,sp + 80000198: 80000eb7 lui t4,0x80000 + 8000019c: 00800193 li gp,8 + 800001a0: 03df1c63 bne t5,t4,800001d8 + +00000000800001a4 : + 800001a4: 00100093 li ra,1 + 800001a8: 00000113 li sp,0 + 800001ac: 0220ff3b remuw t5,ra,sp + 800001b0: 00100e93 li t4,1 + 800001b4: 00900193 li gp,9 + 800001b8: 03df1063 bne t5,t4,800001d8 + +00000000800001bc : + 800001bc: 00000093 li ra,0 + 800001c0: 00000113 li sp,0 + 800001c4: 0220ff3b remuw t5,ra,sp + 800001c8: 00000e93 li t4,0 + 800001cc: 00a00193 li gp,10 + 800001d0: 01df1463 bne t5,t4,800001d8 + 800001d4: 00301c63 bne zero,gp,800001ec + +00000000800001d8 : + 800001d8: 0ff0000f fence + 800001dc: 00018063 beqz gp,800001dc + 800001e0: 00119193 slli gp,gp,0x1 + 800001e4: 0011e193 ori gp,gp,1 + 800001e8: 00000073 ecall + +00000000800001ec : + 800001ec: 0ff0000f fence + 800001f0: 00100193 li gp,1 + 800001f4: 00000073 ecall + 800001f8: c0001073 unimp + 800001fc: 0000 unimp + 800001fe: 0000 unimp + 80000200: 0000 unimp + 80000202: 0000 unimp diff --git a/Tests/isa/rv64um-p-remw b/Tests/isa/rv64um-p-remw new file mode 100644 index 0000000..01e6a68 Binary files /dev/null and b/Tests/isa/rv64um-p-remw differ diff --git a/Tests/isa/rv64um-p-remw.dump b/Tests/isa/rv64um-p-remw.dump new file mode 100644 index 0000000..48fcac9 --- /dev/null +++ b/Tests/isa/rv64um-p-remw.dump @@ -0,0 +1,196 @@ + +rv64um-p-remw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 04c0006f j 8000004c + +0000000080000004 : + 80000004: 34202f73 csrr t5,mcause + 80000008: 00800f93 li t6,8 + 8000000c: 03ff0a63 beq t5,t6,80000040 + 80000010: 00900f93 li t6,9 + 80000014: 03ff0663 beq t5,t6,80000040 + 80000018: 00b00f93 li t6,11 + 8000001c: 03ff0263 beq t5,t6,80000040 + 80000020: 80000f17 auipc t5,0x80000 + 80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> + 80000028: 000f0463 beqz t5,80000030 + 8000002c: 000f0067 jr t5 + 80000030: 34202f73 csrr t5,mcause + 80000034: 000f5463 bgez t5,8000003c + 80000038: 0040006f j 8000003c + +000000008000003c : + 8000003c: 5391e193 ori gp,gp,1337 + +0000000080000040 : + 80000040: 00001f17 auipc t5,0x1 + 80000044: fc3f2023 sw gp,-64(t5) # 80001000 + 80000048: ff9ff06f j 80000040 + +000000008000004c : + 8000004c: f1402573 csrr a0,mhartid + 80000050: 00051063 bnez a0,80000050 + 80000054: 00000297 auipc t0,0x0 + 80000058: 01028293 addi t0,t0,16 # 80000064 + 8000005c: 30529073 csrw mtvec,t0 + 80000060: 18005073 csrwi satp,0 + 80000064: 00000297 auipc t0,0x0 + 80000068: 01c28293 addi t0,t0,28 # 80000080 + 8000006c: 30529073 csrw mtvec,t0 + 80000070: fff00293 li t0,-1 + 80000074: 3b029073 csrw pmpaddr0,t0 + 80000078: 01f00293 li t0,31 + 8000007c: 3a029073 csrw pmpcfg0,t0 + 80000080: 00000297 auipc t0,0x0 + 80000084: 01828293 addi t0,t0,24 # 80000098 + 80000088: 30529073 csrw mtvec,t0 + 8000008c: 30205073 csrwi medeleg,0 + 80000090: 30305073 csrwi mideleg,0 + 80000094: 30405073 csrwi mie,0 + 80000098: 00000193 li gp,0 + 8000009c: 00000297 auipc t0,0x0 + 800000a0: f6828293 addi t0,t0,-152 # 80000004 + 800000a4: 30529073 csrw mtvec,t0 + 800000a8: 00100513 li a0,1 + 800000ac: 01f51513 slli a0,a0,0x1f + 800000b0: 00055863 bgez a0,800000c0 + 800000b4: 0ff0000f fence + 800000b8: 00100193 li gp,1 + 800000bc: 00000073 ecall + 800000c0: 80000297 auipc t0,0x80000 + 800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000> + 800000c8: 00028e63 beqz t0,800000e4 + 800000cc: 10529073 csrw stvec,t0 + 800000d0: 0000b2b7 lui t0,0xb + 800000d4: 1092829b addiw t0,t0,265 + 800000d8: 30229073 csrw medeleg,t0 + 800000dc: 30202373 csrr t1,medeleg + 800000e0: f4629ee3 bne t0,t1,8000003c + 800000e4: 30005073 csrwi mstatus,0 + 800000e8: 00000297 auipc t0,0x0 + 800000ec: 01428293 addi t0,t0,20 # 800000fc + 800000f0: 34129073 csrw mepc,t0 + 800000f4: f1402573 csrr a0,mhartid + 800000f8: 30200073 mret + +00000000800000fc : + 800000fc: 01400093 li ra,20 + 80000100: 00600113 li sp,6 + 80000104: 0220ef3b remw t5,ra,sp + 80000108: 00200e93 li t4,2 + 8000010c: 00200193 li gp,2 + 80000110: 0fdf1063 bne t5,t4,800001f0 + +0000000080000114 : + 80000114: fec00093 li ra,-20 + 80000118: 00600113 li sp,6 + 8000011c: 0220ef3b remw t5,ra,sp + 80000120: ffe00e93 li t4,-2 + 80000124: 00300193 li gp,3 + 80000128: 0ddf1463 bne t5,t4,800001f0 + +000000008000012c : + 8000012c: 01400093 li ra,20 + 80000130: ffa00113 li sp,-6 + 80000134: 0220ef3b remw t5,ra,sp + 80000138: 00200e93 li t4,2 + 8000013c: 00400193 li gp,4 + 80000140: 0bdf1863 bne t5,t4,800001f0 + +0000000080000144 : + 80000144: fec00093 li ra,-20 + 80000148: ffa00113 li sp,-6 + 8000014c: 0220ef3b remw t5,ra,sp + 80000150: ffe00e93 li t4,-2 + 80000154: 00500193 li gp,5 + 80000158: 09df1c63 bne t5,t4,800001f0 + +000000008000015c : + 8000015c: 800000b7 lui ra,0x80000 + 80000160: 00100113 li sp,1 + 80000164: 0220ef3b remw t5,ra,sp + 80000168: 00000e93 li t4,0 + 8000016c: 00600193 li gp,6 + 80000170: 09df1063 bne t5,t4,800001f0 + +0000000080000174 : + 80000174: 800000b7 lui ra,0x80000 + 80000178: fff00113 li sp,-1 + 8000017c: 0220ef3b remw t5,ra,sp + 80000180: 00000e93 li t4,0 + 80000184: 00700193 li gp,7 + 80000188: 07df1463 bne t5,t4,800001f0 + +000000008000018c : + 8000018c: 800000b7 lui ra,0x80000 + 80000190: 00000113 li sp,0 + 80000194: 0220ef3b remw t5,ra,sp + 80000198: 80000eb7 lui t4,0x80000 + 8000019c: 00800193 li gp,8 + 800001a0: 05df1863 bne t5,t4,800001f0 + +00000000800001a4 : + 800001a4: 00100093 li ra,1 + 800001a8: 00000113 li sp,0 + 800001ac: 0220ef3b remw t5,ra,sp + 800001b0: 00100e93 li t4,1 + 800001b4: 00900193 li gp,9 + 800001b8: 03df1c63 bne t5,t4,800001f0 + +00000000800001bc : + 800001bc: 00000093 li ra,0 + 800001c0: 00000113 li sp,0 + 800001c4: 0220ef3b remw t5,ra,sp + 800001c8: 00000e93 li t4,0 + 800001cc: 00a00193 li gp,10 + 800001d0: 03df1063 bne t5,t4,800001f0 + +00000000800001d4 : + 800001d4: 89700093 li ra,-1897 + 800001d8: 00000113 li sp,0 + 800001dc: 0220ef3b remw t5,ra,sp + 800001e0: 89700e93 li t4,-1897 + 800001e4: 00b00193 li gp,11 + 800001e8: 01df1463 bne t5,t4,800001f0 + 800001ec: 00301c63 bne zero,gp,80000204 + +00000000800001f0 : + 800001f0: 0ff0000f fence + 800001f4: 00018063 beqz gp,800001f4 + 800001f8: 00119193 slli gp,gp,0x1 + 800001fc: 0011e193 ori gp,gp,1 + 80000200: 00000073 ecall + +0000000080000204 : + 80000204: 0ff0000f fence + 80000208: 00100193 li gp,1 + 8000020c: 00000073 ecall + 80000210: c0001073 unimp + 80000214: 0000 unimp + 80000216: 0000 unimp + 80000218: 0000 unimp + 8000021a: 0000 unimp + 8000021c: 0000 unimp + 8000021e: 0000 unimp + 80000220: 0000 unimp + 80000222: 0000 unimp + 80000224: 0000 unimp + 80000226: 0000 unimp + 80000228: 0000 unimp + 8000022a: 0000 unimp + 8000022c: 0000 unimp + 8000022e: 0000 unimp + 80000230: 0000 unimp + 80000232: 0000 unimp + 80000234: 0000 unimp + 80000236: 0000 unimp + 80000238: 0000 unimp + 8000023a: 0000 unimp + 8000023c: 0000 unimp + 8000023e: 0000 unimp + 80000240: 0000 unimp + 80000242: 0000 unimp diff --git a/Tests/isa/rv64um-v-div b/Tests/isa/rv64um-v-div new file mode 100644 index 0000000..78f200d Binary files /dev/null and b/Tests/isa/rv64um-v-div differ diff --git a/Tests/isa/rv64um-v-div.dump b/Tests/isa/rv64um-v-div.dump new file mode 100644 index 0000000..bfc4ab1 --- /dev/null +++ b/Tests/isa/rv64um-v-div.dump @@ -0,0 +1,916 @@ + +rv64um-v-div: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 78068693 addi a3,a3,1920 # 80002bd8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7b460613 addi a2,a2,1972 # 80002c68 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 77c60613 addi a2,a2,1916 # 80002c80 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6cc68693 addi a3,a3,1740 # 80002c20 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6e868693 addi a3,a3,1768 # 80002d58 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 66860613 addi a2,a2,1640 # 80002d30 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 59c68693 addi a3,a3,1436 # 80002d88 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4bc68693 addi a3,a3,1212 # 80002cf8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 44c68693 addi a3,a3,1100 # 80002cc0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 03c00793 li a5,60 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 07a167b7 lui a5,0x7a16 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: cc378793 addi a5,a5,-829 # 7a15cc3 <_start-0x785ea33d> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220cf33 div t5,ra,sp + 80002ad4: 00300e93 li t4,3 + 80002ad8: 00200193 li gp,2 + 80002adc: 0ddf1e63 bne t5,t4,80002bb8 + +0000000080002ae0 : + 80002ae0: fec00093 li ra,-20 + 80002ae4: 00600113 li sp,6 + 80002ae8: 0220cf33 div t5,ra,sp + 80002aec: ffd00e93 li t4,-3 + 80002af0: 00300193 li gp,3 + 80002af4: 0ddf1263 bne t5,t4,80002bb8 + +0000000080002af8 : + 80002af8: 01400093 li ra,20 + 80002afc: ffa00113 li sp,-6 + 80002b00: 0220cf33 div t5,ra,sp + 80002b04: ffd00e93 li t4,-3 + 80002b08: 00400193 li gp,4 + 80002b0c: 0bdf1663 bne t5,t4,80002bb8 + +0000000080002b10 : + 80002b10: fec00093 li ra,-20 + 80002b14: ffa00113 li sp,-6 + 80002b18: 0220cf33 div t5,ra,sp + 80002b1c: 00300e93 li t4,3 + 80002b20: 00500193 li gp,5 + 80002b24: 09df1a63 bne t5,t4,80002bb8 + +0000000080002b28 : + 80002b28: fff0009b addiw ra,zero,-1 + 80002b2c: 03f09093 slli ra,ra,0x3f + 80002b30: 00100113 li sp,1 + 80002b34: 0220cf33 div t5,ra,sp + 80002b38: fff00e9b addiw t4,zero,-1 + 80002b3c: 03fe9e93 slli t4,t4,0x3f + 80002b40: 00600193 li gp,6 + 80002b44: 07df1a63 bne t5,t4,80002bb8 + +0000000080002b48 : + 80002b48: fff0009b addiw ra,zero,-1 + 80002b4c: 03f09093 slli ra,ra,0x3f + 80002b50: fff00113 li sp,-1 + 80002b54: 0220cf33 div t5,ra,sp + 80002b58: fff00e9b addiw t4,zero,-1 + 80002b5c: 03fe9e93 slli t4,t4,0x3f + 80002b60: 00700193 li gp,7 + 80002b64: 05df1a63 bne t5,t4,80002bb8 + +0000000080002b68 : + 80002b68: fff0009b addiw ra,zero,-1 + 80002b6c: 03f09093 slli ra,ra,0x3f + 80002b70: 00000113 li sp,0 + 80002b74: 0220cf33 div t5,ra,sp + 80002b78: fff00e93 li t4,-1 + 80002b7c: 00800193 li gp,8 + 80002b80: 03df1c63 bne t5,t4,80002bb8 + +0000000080002b84 : + 80002b84: 00100093 li ra,1 + 80002b88: 00000113 li sp,0 + 80002b8c: 0220cf33 div t5,ra,sp + 80002b90: fff00e93 li t4,-1 + 80002b94: 00900193 li gp,9 + 80002b98: 03df1063 bne t5,t4,80002bb8 + +0000000080002b9c : + 80002b9c: 00000093 li ra,0 + 80002ba0: 00000113 li sp,0 + 80002ba4: 0220cf33 div t5,ra,sp + 80002ba8: fff00e93 li t4,-1 + 80002bac: 00a00193 li gp,10 + 80002bb0: 01df1463 bne t5,t4,80002bb8 + 80002bb4: 00301a63 bne zero,gp,80002bc8 + +0000000080002bb8 : + 80002bb8: 00119513 slli a0,gp,0x1 + 80002bbc: 00050063 beqz a0,80002bbc + 80002bc0: 00156513 ori a0,a0,1 + 80002bc4: 00000073 ecall + +0000000080002bc8 : + 80002bc8: 00100513 li a0,1 + 80002bcc: 00000073 ecall + 80002bd0: c0001073 unimp diff --git a/Tests/isa/rv64um-v-divu b/Tests/isa/rv64um-v-divu new file mode 100644 index 0000000..5179733 Binary files /dev/null and b/Tests/isa/rv64um-v-divu differ diff --git a/Tests/isa/rv64um-v-divu.dump b/Tests/isa/rv64um-v-divu.dump new file mode 100644 index 0000000..68b9aab --- /dev/null +++ b/Tests/isa/rv64um-v-divu.dump @@ -0,0 +1,922 @@ + +rv64um-v-divu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 79868693 addi a3,a3,1944 # 80002bf0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7cc60613 addi a2,a2,1996 # 80002c80 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 79460613 addi a2,a2,1940 # 80002c98 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6e468693 addi a3,a3,1764 # 80002c38 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 70068693 addi a3,a3,1792 # 80002d70 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 68060613 addi a2,a2,1664 # 80002d48 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 5b468693 addi a3,a3,1460 # 80002da0 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4d468693 addi a3,a3,1236 # 80002d10 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 46468693 addi a3,a3,1124 # 80002cd8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01c00793 li a5,28 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0472c7b7 lui a5,0x472c + 80002a70: 000805b7 lui a1,0x80 + 80002a74: f1278793 addi a5,a5,-238 # 472bf12 <_start-0x7b8d40ee> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220df33 divu t5,ra,sp + 80002ad4: 00300e93 li t4,3 + 80002ad8: 00200193 li gp,2 + 80002adc: 0fdf1a63 bne t5,t4,80002bd0 + +0000000080002ae0 : + 80002ae0: fec00093 li ra,-20 + 80002ae4: 00600113 li sp,6 + 80002ae8: 0220df33 divu t5,ra,sp + 80002aec: 02aabeb7 lui t4,0x2aab + 80002af0: aabe8e9b addiw t4,t4,-1365 + 80002af4: 00ce9e93 slli t4,t4,0xc + 80002af8: aabe8e93 addi t4,t4,-1365 # 2aaaaab <_start-0x7d555555> + 80002afc: 00ce9e93 slli t4,t4,0xc + 80002b00: aabe8e93 addi t4,t4,-1365 + 80002b04: 00ce9e93 slli t4,t4,0xc + 80002b08: aa7e8e93 addi t4,t4,-1369 + 80002b0c: 00300193 li gp,3 + 80002b10: 0ddf1063 bne t5,t4,80002bd0 + +0000000080002b14 : + 80002b14: 01400093 li ra,20 + 80002b18: ffa00113 li sp,-6 + 80002b1c: 0220df33 divu t5,ra,sp + 80002b20: 00000e93 li t4,0 + 80002b24: 00400193 li gp,4 + 80002b28: 0bdf1463 bne t5,t4,80002bd0 + +0000000080002b2c : + 80002b2c: fec00093 li ra,-20 + 80002b30: ffa00113 li sp,-6 + 80002b34: 0220df33 divu t5,ra,sp + 80002b38: 00000e93 li t4,0 + 80002b3c: 00500193 li gp,5 + 80002b40: 09df1863 bne t5,t4,80002bd0 + +0000000080002b44 : + 80002b44: fff0009b addiw ra,zero,-1 + 80002b48: 03f09093 slli ra,ra,0x3f + 80002b4c: 00100113 li sp,1 + 80002b50: 0220df33 divu t5,ra,sp + 80002b54: fff00e9b addiw t4,zero,-1 + 80002b58: 03fe9e93 slli t4,t4,0x3f + 80002b5c: 00600193 li gp,6 + 80002b60: 07df1863 bne t5,t4,80002bd0 + +0000000080002b64 : + 80002b64: fff0009b addiw ra,zero,-1 + 80002b68: 03f09093 slli ra,ra,0x3f + 80002b6c: fff00113 li sp,-1 + 80002b70: 0220df33 divu t5,ra,sp + 80002b74: 00000e93 li t4,0 + 80002b78: 00700193 li gp,7 + 80002b7c: 05df1a63 bne t5,t4,80002bd0 + +0000000080002b80 : + 80002b80: fff0009b addiw ra,zero,-1 + 80002b84: 03f09093 slli ra,ra,0x3f + 80002b88: 00000113 li sp,0 + 80002b8c: 0220df33 divu t5,ra,sp + 80002b90: fff00e93 li t4,-1 + 80002b94: 00800193 li gp,8 + 80002b98: 03df1c63 bne t5,t4,80002bd0 + +0000000080002b9c : + 80002b9c: 00100093 li ra,1 + 80002ba0: 00000113 li sp,0 + 80002ba4: 0220df33 divu t5,ra,sp + 80002ba8: fff00e93 li t4,-1 + 80002bac: 00900193 li gp,9 + 80002bb0: 03df1063 bne t5,t4,80002bd0 + +0000000080002bb4 : + 80002bb4: 00000093 li ra,0 + 80002bb8: 00000113 li sp,0 + 80002bbc: 0220df33 divu t5,ra,sp + 80002bc0: fff00e93 li t4,-1 + 80002bc4: 00a00193 li gp,10 + 80002bc8: 01df1463 bne t5,t4,80002bd0 + 80002bcc: 00301a63 bne zero,gp,80002be0 + +0000000080002bd0 : + 80002bd0: 00119513 slli a0,gp,0x1 + 80002bd4: 00050063 beqz a0,80002bd4 + 80002bd8: 00156513 ori a0,a0,1 + 80002bdc: 00000073 ecall + +0000000080002be0 : + 80002be0: 00100513 li a0,1 + 80002be4: 00000073 ecall + 80002be8: c0001073 unimp diff --git a/Tests/isa/rv64um-v-divuw b/Tests/isa/rv64um-v-divuw new file mode 100644 index 0000000..3938d7b Binary files /dev/null and b/Tests/isa/rv64um-v-divuw differ diff --git a/Tests/isa/rv64um-v-divuw.dump b/Tests/isa/rv64um-v-divuw.dump new file mode 100644 index 0000000..644f517 --- /dev/null +++ b/Tests/isa/rv64um-v-divuw.dump @@ -0,0 +1,914 @@ + +rv64um-v-divuw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 77868693 addi a3,a3,1912 # 80002bd0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7ac60613 addi a2,a2,1964 # 80002c60 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 77460613 addi a2,a2,1908 # 80002c78 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6c468693 addi a3,a3,1732 # 80002c18 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6e068693 addi a3,a3,1760 # 80002d50 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 66060613 addi a2,a2,1632 # 80002d28 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 59468693 addi a3,a3,1428 # 80002d80 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4b468693 addi a3,a3,1204 # 80002cf0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 44468693 addi a3,a3,1092 # 80002cb8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 02f00793 li a5,47 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0a3e47b7 lui a5,0xa3e4 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 49e78793 addi a5,a5,1182 # a3e449e <_start-0x75c1bb62> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220df3b divuw t5,ra,sp + 80002ad4: 00300e93 li t4,3 + 80002ad8: 00200193 li gp,2 + 80002adc: 0ddf1a63 bne t5,t4,80002bb0 + +0000000080002ae0 : + 80002ae0: 0010009b addiw ra,zero,1 + 80002ae4: 02009093 slli ra,ra,0x20 + 80002ae8: fec08093 addi ra,ra,-20 + 80002aec: 00600113 li sp,6 + 80002af0: 0220df3b divuw t5,ra,sp + 80002af4: 2aaabeb7 lui t4,0x2aaab + 80002af8: aa7e8e9b addiw t4,t4,-1369 + 80002afc: 00300193 li gp,3 + 80002b00: 0bdf1863 bne t5,t4,80002bb0 + +0000000080002b04 : + 80002b04: 01400093 li ra,20 + 80002b08: ffa00113 li sp,-6 + 80002b0c: 0220df3b divuw t5,ra,sp + 80002b10: 00000e93 li t4,0 + 80002b14: 00400193 li gp,4 + 80002b18: 09df1c63 bne t5,t4,80002bb0 + +0000000080002b1c : + 80002b1c: fec00093 li ra,-20 + 80002b20: ffa00113 li sp,-6 + 80002b24: 0220df3b divuw t5,ra,sp + 80002b28: 00000e93 li t4,0 + 80002b2c: 00500193 li gp,5 + 80002b30: 09df1063 bne t5,t4,80002bb0 + +0000000080002b34 : + 80002b34: 800000b7 lui ra,0x80000 + 80002b38: 00100113 li sp,1 + 80002b3c: 0220df3b divuw t5,ra,sp + 80002b40: 80000eb7 lui t4,0x80000 + 80002b44: 00600193 li gp,6 + 80002b48: 07df1463 bne t5,t4,80002bb0 + +0000000080002b4c : + 80002b4c: 800000b7 lui ra,0x80000 + 80002b50: fff00113 li sp,-1 + 80002b54: 0220df3b divuw t5,ra,sp + 80002b58: 00000e93 li t4,0 + 80002b5c: 00700193 li gp,7 + 80002b60: 05df1863 bne t5,t4,80002bb0 + +0000000080002b64 : + 80002b64: 800000b7 lui ra,0x80000 + 80002b68: 00000113 li sp,0 + 80002b6c: 0220df3b divuw t5,ra,sp + 80002b70: fff00e93 li t4,-1 + 80002b74: 00800193 li gp,8 + 80002b78: 03df1c63 bne t5,t4,80002bb0 + +0000000080002b7c : + 80002b7c: 00100093 li ra,1 + 80002b80: 00000113 li sp,0 + 80002b84: 0220df3b divuw t5,ra,sp + 80002b88: fff00e93 li t4,-1 + 80002b8c: 00900193 li gp,9 + 80002b90: 03df1063 bne t5,t4,80002bb0 + +0000000080002b94 : + 80002b94: 00000093 li ra,0 + 80002b98: 00000113 li sp,0 + 80002b9c: 0220df3b divuw t5,ra,sp + 80002ba0: fff00e93 li t4,-1 + 80002ba4: 00a00193 li gp,10 + 80002ba8: 01df1463 bne t5,t4,80002bb0 + 80002bac: 00301a63 bne zero,gp,80002bc0 + +0000000080002bb0 : + 80002bb0: 00119513 slli a0,gp,0x1 + 80002bb4: 00050063 beqz a0,80002bb4 + 80002bb8: 00156513 ori a0,a0,1 + 80002bbc: 00000073 ecall + +0000000080002bc0 : + 80002bc0: 00100513 li a0,1 + 80002bc4: 00000073 ecall + 80002bc8: c0001073 unimp diff --git a/Tests/isa/rv64um-v-divw b/Tests/isa/rv64um-v-divw new file mode 100644 index 0000000..4f05e2f Binary files /dev/null and b/Tests/isa/rv64um-v-divw differ diff --git a/Tests/isa/rv64um-v-divw.dump b/Tests/isa/rv64um-v-divw.dump new file mode 100644 index 0000000..e2ba647 --- /dev/null +++ b/Tests/isa/rv64um-v-divw.dump @@ -0,0 +1,911 @@ + +rv64um-v-divw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 76868693 addi a3,a3,1896 # 80002bc0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 79c60613 addi a2,a2,1948 # 80002c50 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 76460613 addi a2,a2,1892 # 80002c68 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6b468693 addi a3,a3,1716 # 80002c08 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6d068693 addi a3,a3,1744 # 80002d40 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 65060613 addi a2,a2,1616 # 80002d18 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 58468693 addi a3,a3,1412 # 80002d70 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4a468693 addi a3,a3,1188 # 80002ce0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 43468693 addi a3,a3,1076 # 80002ca8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01700793 li a5,23 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 026ec7b7 lui a5,0x26ec + 80002a70: 000805b7 lui a1,0x80 + 80002a74: f8e78793 addi a5,a5,-114 # 26ebf8e <_start-0x7d914072> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220cf3b divw t5,ra,sp + 80002ad4: 00300e93 li t4,3 + 80002ad8: 00200193 li gp,2 + 80002adc: 0ddf1463 bne t5,t4,80002ba4 + +0000000080002ae0 : + 80002ae0: fec00093 li ra,-20 + 80002ae4: 00600113 li sp,6 + 80002ae8: 0220cf3b divw t5,ra,sp + 80002aec: ffd00e93 li t4,-3 + 80002af0: 00300193 li gp,3 + 80002af4: 0bdf1863 bne t5,t4,80002ba4 + +0000000080002af8 : + 80002af8: 01400093 li ra,20 + 80002afc: ffa00113 li sp,-6 + 80002b00: 0220cf3b divw t5,ra,sp + 80002b04: ffd00e93 li t4,-3 + 80002b08: 00400193 li gp,4 + 80002b0c: 09df1c63 bne t5,t4,80002ba4 + +0000000080002b10 : + 80002b10: fec00093 li ra,-20 + 80002b14: ffa00113 li sp,-6 + 80002b18: 0220cf3b divw t5,ra,sp + 80002b1c: 00300e93 li t4,3 + 80002b20: 00500193 li gp,5 + 80002b24: 09df1063 bne t5,t4,80002ba4 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00100113 li sp,1 + 80002b30: 0220cf3b divw t5,ra,sp + 80002b34: 80000eb7 lui t4,0x80000 + 80002b38: 00600193 li gp,6 + 80002b3c: 07df1463 bne t5,t4,80002ba4 + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: fff00113 li sp,-1 + 80002b48: 0220cf3b divw t5,ra,sp + 80002b4c: 80000eb7 lui t4,0x80000 + 80002b50: 00700193 li gp,7 + 80002b54: 05df1863 bne t5,t4,80002ba4 + +0000000080002b58 : + 80002b58: 800000b7 lui ra,0x80000 + 80002b5c: 00000113 li sp,0 + 80002b60: 0220cf3b divw t5,ra,sp + 80002b64: fff00e93 li t4,-1 + 80002b68: 00800193 li gp,8 + 80002b6c: 03df1c63 bne t5,t4,80002ba4 + +0000000080002b70 : + 80002b70: 00100093 li ra,1 + 80002b74: 00000113 li sp,0 + 80002b78: 0220cf3b divw t5,ra,sp + 80002b7c: fff00e93 li t4,-1 + 80002b80: 00900193 li gp,9 + 80002b84: 03df1063 bne t5,t4,80002ba4 + +0000000080002b88 : + 80002b88: 00000093 li ra,0 + 80002b8c: 00000113 li sp,0 + 80002b90: 0220cf3b divw t5,ra,sp + 80002b94: fff00e93 li t4,-1 + 80002b98: 00a00193 li gp,10 + 80002b9c: 01df1463 bne t5,t4,80002ba4 + 80002ba0: 00301a63 bne zero,gp,80002bb4 + +0000000080002ba4 : + 80002ba4: 00119513 slli a0,gp,0x1 + 80002ba8: 00050063 beqz a0,80002ba8 + 80002bac: 00156513 ori a0,a0,1 + 80002bb0: 00000073 ecall + +0000000080002bb4 : + 80002bb4: 00100513 li a0,1 + 80002bb8: 00000073 ecall + 80002bbc: c0001073 unimp diff --git a/Tests/isa/rv64um-v-mul b/Tests/isa/rv64um-v-mul new file mode 100644 index 0000000..03556e7 Binary files /dev/null and b/Tests/isa/rv64um-v-mul differ diff --git a/Tests/isa/rv64um-v-mul.dump b/Tests/isa/rv64um-v-mul.dump new file mode 100644 index 0000000..784ee41 --- /dev/null +++ b/Tests/isa/rv64um-v-mul.dump @@ -0,0 +1,1209 @@ + +rv64um-v-mul: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b5868693 addi a3,a3,-1192 # 80002fb0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b8c60613 addi a2,a2,-1140 # 80003040 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b5460613 addi a2,a2,-1196 # 80003058 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: aa468693 addi a3,a3,-1372 # 80002ff8 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: ac068693 addi a3,a3,-1344 # 80003130 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a4060613 addi a2,a2,-1472 # 80003108 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 97468693 addi a3,a3,-1676 # 80003160 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 89468693 addi a3,a3,-1900 # 800030d0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 82468693 addi a3,a3,-2012 # 80003098 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 02600793 li a5,38 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 054df7b7 lui a5,0x54df + 80002a70: 000805b7 lui a1,0x80 + 80002a74: b0278793 addi a5,a5,-1278 # 54deb02 <_start-0x7ab214fe> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 000080b7 lui ra,0x8 + 80002acc: e000809b addiw ra,ra,-512 + 80002ad0: 06db7137 lui sp,0x6db7 + 80002ad4: db71011b addiw sp,sp,-585 + 80002ad8: 00c11113 slli sp,sp,0xc + 80002adc: db710113 addi sp,sp,-585 # 6db6db7 <_start-0x79249249> + 80002ae0: 00c11113 slli sp,sp,0xc + 80002ae4: db710113 addi sp,sp,-585 + 80002ae8: 00c11113 slli sp,sp,0xc + 80002aec: db710113 addi sp,sp,-585 + 80002af0: 02208f33 mul t5,ra,sp + 80002af4: 00001eb7 lui t4,0x1 + 80002af8: 200e8e9b addiw t4,t4,512 + 80002afc: 02000193 li gp,32 + 80002b00: 49df1a63 bne t5,t4,80002f94 + +0000000080002b04 : + 80002b04: 000080b7 lui ra,0x8 + 80002b08: fc00809b addiw ra,ra,-64 + 80002b0c: 06db7137 lui sp,0x6db7 + 80002b10: db71011b addiw sp,sp,-585 + 80002b14: 00c11113 slli sp,sp,0xc + 80002b18: db710113 addi sp,sp,-585 # 6db6db7 <_start-0x79249249> + 80002b1c: 00c11113 slli sp,sp,0xc + 80002b20: db710113 addi sp,sp,-585 + 80002b24: 00c11113 slli sp,sp,0xc + 80002b28: db710113 addi sp,sp,-585 + 80002b2c: 02208f33 mul t5,ra,sp + 80002b30: 00001eb7 lui t4,0x1 + 80002b34: 240e8e9b addiw t4,t4,576 + 80002b38: 02100193 li gp,33 + 80002b3c: 45df1c63 bne t5,t4,80002f94 + +0000000080002b40 : + 80002b40: 00000093 li ra,0 + 80002b44: 00000113 li sp,0 + 80002b48: 02208f33 mul t5,ra,sp + 80002b4c: 00000e93 li t4,0 + 80002b50: 00200193 li gp,2 + 80002b54: 45df1063 bne t5,t4,80002f94 + +0000000080002b58 : + 80002b58: 00100093 li ra,1 + 80002b5c: 00100113 li sp,1 + 80002b60: 02208f33 mul t5,ra,sp + 80002b64: 00100e93 li t4,1 + 80002b68: 00300193 li gp,3 + 80002b6c: 43df1463 bne t5,t4,80002f94 + +0000000080002b70 : + 80002b70: 00300093 li ra,3 + 80002b74: 00700113 li sp,7 + 80002b78: 02208f33 mul t5,ra,sp + 80002b7c: 01500e93 li t4,21 + 80002b80: 00400193 li gp,4 + 80002b84: 41df1863 bne t5,t4,80002f94 + +0000000080002b88 : + 80002b88: 00000093 li ra,0 + 80002b8c: ffff8137 lui sp,0xffff8 + 80002b90: 02208f33 mul t5,ra,sp + 80002b94: 00000e93 li t4,0 + 80002b98: 00500193 li gp,5 + 80002b9c: 3fdf1c63 bne t5,t4,80002f94 + +0000000080002ba0 : + 80002ba0: 800000b7 lui ra,0x80000 + 80002ba4: 00000113 li sp,0 + 80002ba8: 02208f33 mul t5,ra,sp + 80002bac: 00000e93 li t4,0 + 80002bb0: 00600193 li gp,6 + 80002bb4: 3fdf1063 bne t5,t4,80002f94 + +0000000080002bb8 : + 80002bb8: 800000b7 lui ra,0x80000 + 80002bbc: ffff8137 lui sp,0xffff8 + 80002bc0: 02208f33 mul t5,ra,sp + 80002bc4: 00100e9b addiw t4,zero,1 + 80002bc8: 02ee9e93 slli t4,t4,0x2e + 80002bcc: 00700193 li gp,7 + 80002bd0: 3ddf1263 bne t5,t4,80002f94 + +0000000080002bd4 : + 80002bd4: faaab0b7 lui ra,0xfaaab + 80002bd8: aab0809b addiw ra,ra,-1365 + 80002bdc: 00c09093 slli ra,ra,0xc + 80002be0: aab08093 addi ra,ra,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa22bb> + 80002be4: 00c09093 slli ra,ra,0xc + 80002be8: aab08093 addi ra,ra,-1365 + 80002bec: 00c09093 slli ra,ra,0xc + 80002bf0: aab08093 addi ra,ra,-1365 + 80002bf4: 00030137 lui sp,0x30 + 80002bf8: e7d1011b addiw sp,sp,-387 + 80002bfc: 02208f33 mul t5,ra,sp + 80002c00: 00010eb7 lui t4,0x10 + 80002c04: f7fe8e9b addiw t4,t4,-129 + 80002c08: 01e00193 li gp,30 + 80002c0c: 39df1463 bne t5,t4,80002f94 + +0000000080002c10 : + 80002c10: 000300b7 lui ra,0x30 + 80002c14: e7d0809b addiw ra,ra,-387 + 80002c18: faaab137 lui sp,0xfaaab + 80002c1c: aab1011b addiw sp,sp,-1365 + 80002c20: 00c11113 slli sp,sp,0xc + 80002c24: aab10113 addi sp,sp,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa22bb> + 80002c28: 00c11113 slli sp,sp,0xc + 80002c2c: aab10113 addi sp,sp,-1365 + 80002c30: 00c11113 slli sp,sp,0xc + 80002c34: aab10113 addi sp,sp,-1365 + 80002c38: 02208f33 mul t5,ra,sp + 80002c3c: 00010eb7 lui t4,0x10 + 80002c40: f7fe8e9b addiw t4,t4,-129 + 80002c44: 01f00193 li gp,31 + 80002c48: 35df1663 bne t5,t4,80002f94 + +0000000080002c4c : + 80002c4c: 00d00093 li ra,13 + 80002c50: 00b00113 li sp,11 + 80002c54: 022080b3 mul ra,ra,sp + 80002c58: 08f00e93 li t4,143 + 80002c5c: 00800193 li gp,8 + 80002c60: 33d09a63 bne ra,t4,80002f94 + +0000000080002c64 : + 80002c64: 00e00093 li ra,14 + 80002c68: 00b00113 li sp,11 + 80002c6c: 02208133 mul sp,ra,sp + 80002c70: 09a00e93 li t4,154 + 80002c74: 00900193 li gp,9 + 80002c78: 31d11e63 bne sp,t4,80002f94 + +0000000080002c7c : + 80002c7c: 00d00093 li ra,13 + 80002c80: 021080b3 mul ra,ra,ra + 80002c84: 0a900e93 li t4,169 + 80002c88: 00a00193 li gp,10 + 80002c8c: 31d09463 bne ra,t4,80002f94 + +0000000080002c90 : + 80002c90: 00000213 li tp,0 + 80002c94: 00d00093 li ra,13 + 80002c98: 00b00113 li sp,11 + 80002c9c: 02208f33 mul t5,ra,sp + 80002ca0: 000f0313 mv t1,t5 + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5214e3 bne tp,t0,80002c94 + 80002cb0: 08f00e93 li t4,143 + 80002cb4: 00b00193 li gp,11 + 80002cb8: 2dd31e63 bne t1,t4,80002f94 + +0000000080002cbc : + 80002cbc: 00000213 li tp,0 + 80002cc0: 00e00093 li ra,14 + 80002cc4: 00b00113 li sp,11 + 80002cc8: 02208f33 mul t5,ra,sp + 80002ccc: 00000013 nop + 80002cd0: 000f0313 mv t1,t5 + 80002cd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cd8: 00200293 li t0,2 + 80002cdc: fe5212e3 bne tp,t0,80002cc0 + 80002ce0: 09a00e93 li t4,154 + 80002ce4: 00c00193 li gp,12 + 80002ce8: 2bd31663 bne t1,t4,80002f94 + +0000000080002cec : + 80002cec: 00000213 li tp,0 + 80002cf0: 00f00093 li ra,15 + 80002cf4: 00b00113 li sp,11 + 80002cf8: 02208f33 mul t5,ra,sp + 80002cfc: 00000013 nop + 80002d00: 00000013 nop + 80002d04: 000f0313 mv t1,t5 + 80002d08: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d0c: 00200293 li t0,2 + 80002d10: fe5210e3 bne tp,t0,80002cf0 + 80002d14: 0a500e93 li t4,165 + 80002d18: 00d00193 li gp,13 + 80002d1c: 27d31c63 bne t1,t4,80002f94 + +0000000080002d20 : + 80002d20: 00000213 li tp,0 + 80002d24: 00d00093 li ra,13 + 80002d28: 00b00113 li sp,11 + 80002d2c: 02208f33 mul t5,ra,sp + 80002d30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d34: 00200293 li t0,2 + 80002d38: fe5216e3 bne tp,t0,80002d24 + 80002d3c: 08f00e93 li t4,143 + 80002d40: 00e00193 li gp,14 + 80002d44: 25df1863 bne t5,t4,80002f94 + +0000000080002d48 : + 80002d48: 00000213 li tp,0 + 80002d4c: 00e00093 li ra,14 + 80002d50: 00b00113 li sp,11 + 80002d54: 00000013 nop + 80002d58: 02208f33 mul t5,ra,sp + 80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d60: 00200293 li t0,2 + 80002d64: fe5214e3 bne tp,t0,80002d4c + 80002d68: 09a00e93 li t4,154 + 80002d6c: 00f00193 li gp,15 + 80002d70: 23df1263 bne t5,t4,80002f94 + +0000000080002d74 : + 80002d74: 00000213 li tp,0 + 80002d78: 00f00093 li ra,15 + 80002d7c: 00b00113 li sp,11 + 80002d80: 00000013 nop + 80002d84: 00000013 nop + 80002d88: 02208f33 mul t5,ra,sp + 80002d8c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d90: 00200293 li t0,2 + 80002d94: fe5212e3 bne tp,t0,80002d78 + 80002d98: 0a500e93 li t4,165 + 80002d9c: 01000193 li gp,16 + 80002da0: 1fdf1a63 bne t5,t4,80002f94 + +0000000080002da4 : + 80002da4: 00000213 li tp,0 + 80002da8: 00d00093 li ra,13 + 80002dac: 00000013 nop + 80002db0: 00b00113 li sp,11 + 80002db4: 02208f33 mul t5,ra,sp + 80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dbc: 00200293 li t0,2 + 80002dc0: fe5214e3 bne tp,t0,80002da8 + 80002dc4: 08f00e93 li t4,143 + 80002dc8: 01100193 li gp,17 + 80002dcc: 1ddf1463 bne t5,t4,80002f94 + +0000000080002dd0 : + 80002dd0: 00000213 li tp,0 + 80002dd4: 00e00093 li ra,14 + 80002dd8: 00000013 nop + 80002ddc: 00b00113 li sp,11 + 80002de0: 00000013 nop + 80002de4: 02208f33 mul t5,ra,sp + 80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dec: 00200293 li t0,2 + 80002df0: fe5212e3 bne tp,t0,80002dd4 + 80002df4: 09a00e93 li t4,154 + 80002df8: 01200193 li gp,18 + 80002dfc: 19df1c63 bne t5,t4,80002f94 + +0000000080002e00 : + 80002e00: 00000213 li tp,0 + 80002e04: 00f00093 li ra,15 + 80002e08: 00000013 nop + 80002e0c: 00000013 nop + 80002e10: 00b00113 li sp,11 + 80002e14: 02208f33 mul t5,ra,sp + 80002e18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e1c: 00200293 li t0,2 + 80002e20: fe5212e3 bne tp,t0,80002e04 + 80002e24: 0a500e93 li t4,165 + 80002e28: 01300193 li gp,19 + 80002e2c: 17df1463 bne t5,t4,80002f94 + +0000000080002e30 : + 80002e30: 00000213 li tp,0 + 80002e34: 00b00113 li sp,11 + 80002e38: 00d00093 li ra,13 + 80002e3c: 02208f33 mul t5,ra,sp + 80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e44: 00200293 li t0,2 + 80002e48: fe5216e3 bne tp,t0,80002e34 + 80002e4c: 08f00e93 li t4,143 + 80002e50: 01400193 li gp,20 + 80002e54: 15df1063 bne t5,t4,80002f94 + +0000000080002e58 : + 80002e58: 00000213 li tp,0 + 80002e5c: 00b00113 li sp,11 + 80002e60: 00e00093 li ra,14 + 80002e64: 00000013 nop + 80002e68: 02208f33 mul t5,ra,sp + 80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e70: 00200293 li t0,2 + 80002e74: fe5214e3 bne tp,t0,80002e5c + 80002e78: 09a00e93 li t4,154 + 80002e7c: 01500193 li gp,21 + 80002e80: 11df1a63 bne t5,t4,80002f94 + +0000000080002e84 : + 80002e84: 00000213 li tp,0 + 80002e88: 00b00113 li sp,11 + 80002e8c: 00f00093 li ra,15 + 80002e90: 00000013 nop + 80002e94: 00000013 nop + 80002e98: 02208f33 mul t5,ra,sp + 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea0: 00200293 li t0,2 + 80002ea4: fe5212e3 bne tp,t0,80002e88 + 80002ea8: 0a500e93 li t4,165 + 80002eac: 01600193 li gp,22 + 80002eb0: 0fdf1263 bne t5,t4,80002f94 + +0000000080002eb4 : + 80002eb4: 00000213 li tp,0 + 80002eb8: 00b00113 li sp,11 + 80002ebc: 00000013 nop + 80002ec0: 00d00093 li ra,13 + 80002ec4: 02208f33 mul t5,ra,sp + 80002ec8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ecc: 00200293 li t0,2 + 80002ed0: fe5214e3 bne tp,t0,80002eb8 + 80002ed4: 08f00e93 li t4,143 + 80002ed8: 01700193 li gp,23 + 80002edc: 0bdf1c63 bne t5,t4,80002f94 + +0000000080002ee0 : + 80002ee0: 00000213 li tp,0 + 80002ee4: 00b00113 li sp,11 + 80002ee8: 00000013 nop + 80002eec: 00e00093 li ra,14 + 80002ef0: 00000013 nop + 80002ef4: 02208f33 mul t5,ra,sp + 80002ef8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002efc: 00200293 li t0,2 + 80002f00: fe5212e3 bne tp,t0,80002ee4 + 80002f04: 09a00e93 li t4,154 + 80002f08: 01800193 li gp,24 + 80002f0c: 09df1463 bne t5,t4,80002f94 + +0000000080002f10 : + 80002f10: 00000213 li tp,0 + 80002f14: 00b00113 li sp,11 + 80002f18: 00000013 nop + 80002f1c: 00000013 nop + 80002f20: 00f00093 li ra,15 + 80002f24: 02208f33 mul t5,ra,sp + 80002f28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f2c: 00200293 li t0,2 + 80002f30: fe5212e3 bne tp,t0,80002f14 + 80002f34: 0a500e93 li t4,165 + 80002f38: 01900193 li gp,25 + 80002f3c: 05df1c63 bne t5,t4,80002f94 + +0000000080002f40 : + 80002f40: 01f00093 li ra,31 + 80002f44: 02100133 mul sp,zero,ra + 80002f48: 00000e93 li t4,0 + 80002f4c: 01a00193 li gp,26 + 80002f50: 05d11263 bne sp,t4,80002f94 + +0000000080002f54 : + 80002f54: 02000093 li ra,32 + 80002f58: 02008133 mul sp,ra,zero + 80002f5c: 00000e93 li t4,0 + 80002f60: 01b00193 li gp,27 + 80002f64: 03d11863 bne sp,t4,80002f94 + +0000000080002f68 : + 80002f68: 020000b3 mul ra,zero,zero + 80002f6c: 00000e93 li t4,0 + 80002f70: 01c00193 li gp,28 + 80002f74: 03d09063 bne ra,t4,80002f94 + +0000000080002f78 : + 80002f78: 02100093 li ra,33 + 80002f7c: 02200113 li sp,34 + 80002f80: 02208033 mul zero,ra,sp + 80002f84: 00000e93 li t4,0 + 80002f88: 01d00193 li gp,29 + 80002f8c: 01d01463 bne zero,t4,80002f94 + 80002f90: 00301a63 bne zero,gp,80002fa4 + +0000000080002f94 : + 80002f94: 00119513 slli a0,gp,0x1 + 80002f98: 00050063 beqz a0,80002f98 + 80002f9c: 00156513 ori a0,a0,1 + 80002fa0: 00000073 ecall + +0000000080002fa4 : + 80002fa4: 00100513 li a0,1 + 80002fa8: 00000073 ecall + 80002fac: c0001073 unimp diff --git a/Tests/isa/rv64um-v-mulh b/Tests/isa/rv64um-v-mulh new file mode 100644 index 0000000..1b49231 Binary files /dev/null and b/Tests/isa/rv64um-v-mulh differ diff --git a/Tests/isa/rv64um-v-mulh.dump b/Tests/isa/rv64um-v-mulh.dump new file mode 100644 index 0000000..17befcd --- /dev/null +++ b/Tests/isa/rv64um-v-mulh.dump @@ -0,0 +1,1179 @@ + +rv64um-v-mulh: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b0068693 addi a3,a3,-1280 # 80002f58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b3460613 addi a2,a2,-1228 # 80002fe8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: afc60613 addi a2,a2,-1284 # 80003000 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: a4c68693 addi a3,a3,-1460 # 80002fa0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: a6868693 addi a3,a3,-1432 # 800030d8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 9e860613 addi a2,a2,-1560 # 800030b0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 91c68693 addi a3,a3,-1764 # 80003108 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 83c68693 addi a3,a3,-1988 # 80003078 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 7cc68693 addi a3,a3,1996 # 80003040 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01700793 li a5,23 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0cb6d7b7 lui a5,0xcb6d + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 32278793 addi a5,a5,802 # cb6d322 <_start-0x73492cde> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 02209f33 mulh t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 47df1063 bne t5,t4,80002f3c + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 02209f33 mulh t5,ra,sp + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 45df1463 bne t5,t4,80002f3c + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 02209f33 mulh t5,ra,sp + 80002b04: 00000e93 li t4,0 + 80002b08: 00400193 li gp,4 + 80002b0c: 43df1863 bne t5,t4,80002f3c + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 02209f33 mulh t5,ra,sp + 80002b1c: 00000e93 li t4,0 + 80002b20: 00500193 li gp,5 + 80002b24: 41df1c63 bne t5,t4,80002f3c + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 02209f33 mulh t5,ra,sp + 80002b34: 00000e93 li t4,0 + 80002b38: 00600193 li gp,6 + 80002b3c: 41df1063 bne t5,t4,80002f3c + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 02209f33 mulh t5,ra,sp + 80002b4c: 00000e93 li t4,0 + 80002b50: 00700193 li gp,7 + 80002b54: 3fdf1463 bne t5,t4,80002f3c + +0000000080002b58 : + 80002b58: 00d0009b addiw ra,zero,13 + 80002b5c: 02009093 slli ra,ra,0x20 + 80002b60: 00b0011b addiw sp,zero,11 + 80002b64: 02011113 slli sp,sp,0x20 + 80002b68: 022090b3 mulh ra,ra,sp + 80002b6c: 08f00e93 li t4,143 + 80002b70: 00800193 li gp,8 + 80002b74: 3dd09463 bne ra,t4,80002f3c + +0000000080002b78 : + 80002b78: 0070009b addiw ra,zero,7 + 80002b7c: 02109093 slli ra,ra,0x21 + 80002b80: 00b0011b addiw sp,zero,11 + 80002b84: 02011113 slli sp,sp,0x20 + 80002b88: 02209133 mulh sp,ra,sp + 80002b8c: 09a00e93 li t4,154 + 80002b90: 00900193 li gp,9 + 80002b94: 3bd11463 bne sp,t4,80002f3c + +0000000080002b98 : + 80002b98: 00d0009b addiw ra,zero,13 + 80002b9c: 02009093 slli ra,ra,0x20 + 80002ba0: 021090b3 mulh ra,ra,ra + 80002ba4: 0a900e93 li t4,169 + 80002ba8: 00a00193 li gp,10 + 80002bac: 39d09863 bne ra,t4,80002f3c + +0000000080002bb0 : + 80002bb0: 00000213 li tp,0 + 80002bb4: 00d0009b addiw ra,zero,13 + 80002bb8: 02009093 slli ra,ra,0x20 + 80002bbc: 00b0011b addiw sp,zero,11 + 80002bc0: 02011113 slli sp,sp,0x20 + 80002bc4: 02209f33 mulh t5,ra,sp + 80002bc8: 000f0313 mv t1,t5 + 80002bcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bd0: 00200293 li t0,2 + 80002bd4: fe5210e3 bne tp,t0,80002bb4 + 80002bd8: 08f00e93 li t4,143 + 80002bdc: 00b00193 li gp,11 + 80002be0: 35d31e63 bne t1,t4,80002f3c + +0000000080002be4 : + 80002be4: 00000213 li tp,0 + 80002be8: 0070009b addiw ra,zero,7 + 80002bec: 02109093 slli ra,ra,0x21 + 80002bf0: 00b0011b addiw sp,zero,11 + 80002bf4: 02011113 slli sp,sp,0x20 + 80002bf8: 02209f33 mulh t5,ra,sp + 80002bfc: 00000013 nop + 80002c00: 000f0313 mv t1,t5 + 80002c04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c08: 00200293 li t0,2 + 80002c0c: fc521ee3 bne tp,t0,80002be8 + 80002c10: 09a00e93 li t4,154 + 80002c14: 00c00193 li gp,12 + 80002c18: 33d31263 bne t1,t4,80002f3c + +0000000080002c1c : + 80002c1c: 00000213 li tp,0 + 80002c20: 00f0009b addiw ra,zero,15 + 80002c24: 02009093 slli ra,ra,0x20 + 80002c28: 00b0011b addiw sp,zero,11 + 80002c2c: 02011113 slli sp,sp,0x20 + 80002c30: 02209f33 mulh t5,ra,sp + 80002c34: 00000013 nop + 80002c38: 00000013 nop + 80002c3c: 000f0313 mv t1,t5 + 80002c40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c44: 00200293 li t0,2 + 80002c48: fc521ce3 bne tp,t0,80002c20 + 80002c4c: 0a500e93 li t4,165 + 80002c50: 00d00193 li gp,13 + 80002c54: 2fd31463 bne t1,t4,80002f3c + +0000000080002c58 : + 80002c58: 00000213 li tp,0 + 80002c5c: 00d0009b addiw ra,zero,13 + 80002c60: 02009093 slli ra,ra,0x20 + 80002c64: 00b0011b addiw sp,zero,11 + 80002c68: 02011113 slli sp,sp,0x20 + 80002c6c: 02209f33 mulh t5,ra,sp + 80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c74: 00200293 li t0,2 + 80002c78: fe5212e3 bne tp,t0,80002c5c + 80002c7c: 08f00e93 li t4,143 + 80002c80: 00e00193 li gp,14 + 80002c84: 2bdf1c63 bne t5,t4,80002f3c + +0000000080002c88 : + 80002c88: 00000213 li tp,0 + 80002c8c: 0070009b addiw ra,zero,7 + 80002c90: 02109093 slli ra,ra,0x21 + 80002c94: 00b0011b addiw sp,zero,11 + 80002c98: 02011113 slli sp,sp,0x20 + 80002c9c: 00000013 nop + 80002ca0: 02209f33 mulh t5,ra,sp + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5210e3 bne tp,t0,80002c8c + 80002cb0: 09a00e93 li t4,154 + 80002cb4: 00f00193 li gp,15 + 80002cb8: 29df1263 bne t5,t4,80002f3c + +0000000080002cbc : + 80002cbc: 00000213 li tp,0 + 80002cc0: 00f0009b addiw ra,zero,15 + 80002cc4: 02009093 slli ra,ra,0x20 + 80002cc8: 00b0011b addiw sp,zero,11 + 80002ccc: 02011113 slli sp,sp,0x20 + 80002cd0: 00000013 nop + 80002cd4: 00000013 nop + 80002cd8: 02209f33 mulh t5,ra,sp + 80002cdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce0: 00200293 li t0,2 + 80002ce4: fc521ee3 bne tp,t0,80002cc0 + 80002ce8: 0a500e93 li t4,165 + 80002cec: 01000193 li gp,16 + 80002cf0: 25df1663 bne t5,t4,80002f3c + +0000000080002cf4 : + 80002cf4: 00000213 li tp,0 + 80002cf8: 00d0009b addiw ra,zero,13 + 80002cfc: 02009093 slli ra,ra,0x20 + 80002d00: 00000013 nop + 80002d04: 00b0011b addiw sp,zero,11 + 80002d08: 02011113 slli sp,sp,0x20 + 80002d0c: 02209f33 mulh t5,ra,sp + 80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d14: 00200293 li t0,2 + 80002d18: fe5210e3 bne tp,t0,80002cf8 + 80002d1c: 08f00e93 li t4,143 + 80002d20: 01100193 li gp,17 + 80002d24: 21df1c63 bne t5,t4,80002f3c + +0000000080002d28 : + 80002d28: 00000213 li tp,0 + 80002d2c: 0070009b addiw ra,zero,7 + 80002d30: 02109093 slli ra,ra,0x21 + 80002d34: 00000013 nop + 80002d38: 00b0011b addiw sp,zero,11 + 80002d3c: 02011113 slli sp,sp,0x20 + 80002d40: 00000013 nop + 80002d44: 02209f33 mulh t5,ra,sp + 80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d4c: 00200293 li t0,2 + 80002d50: fc521ee3 bne tp,t0,80002d2c + 80002d54: 09a00e93 li t4,154 + 80002d58: 01200193 li gp,18 + 80002d5c: 1fdf1063 bne t5,t4,80002f3c + +0000000080002d60 : + 80002d60: 00000213 li tp,0 + 80002d64: 00f0009b addiw ra,zero,15 + 80002d68: 02009093 slli ra,ra,0x20 + 80002d6c: 00000013 nop + 80002d70: 00000013 nop + 80002d74: 00b0011b addiw sp,zero,11 + 80002d78: 02011113 slli sp,sp,0x20 + 80002d7c: 02209f33 mulh t5,ra,sp + 80002d80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d84: 00200293 li t0,2 + 80002d88: fc521ee3 bne tp,t0,80002d64 + 80002d8c: 0a500e93 li t4,165 + 80002d90: 01300193 li gp,19 + 80002d94: 1bdf1463 bne t5,t4,80002f3c + +0000000080002d98 : + 80002d98: 00000213 li tp,0 + 80002d9c: 00b0011b addiw sp,zero,11 + 80002da0: 02011113 slli sp,sp,0x20 + 80002da4: 00d0009b addiw ra,zero,13 + 80002da8: 02009093 slli ra,ra,0x20 + 80002dac: 02209f33 mulh t5,ra,sp + 80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002db4: 00200293 li t0,2 + 80002db8: fe5212e3 bne tp,t0,80002d9c + 80002dbc: 08f00e93 li t4,143 + 80002dc0: 01400193 li gp,20 + 80002dc4: 17df1c63 bne t5,t4,80002f3c + +0000000080002dc8 : + 80002dc8: 00000213 li tp,0 + 80002dcc: 00b0011b addiw sp,zero,11 + 80002dd0: 02011113 slli sp,sp,0x20 + 80002dd4: 0070009b addiw ra,zero,7 + 80002dd8: 02109093 slli ra,ra,0x21 + 80002ddc: 00000013 nop + 80002de0: 02209f33 mulh t5,ra,sp + 80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de8: 00200293 li t0,2 + 80002dec: fe5210e3 bne tp,t0,80002dcc + 80002df0: 09a00e93 li t4,154 + 80002df4: 01500193 li gp,21 + 80002df8: 15df1263 bne t5,t4,80002f3c + +0000000080002dfc : + 80002dfc: 00000213 li tp,0 + 80002e00: 00b0011b addiw sp,zero,11 + 80002e04: 02011113 slli sp,sp,0x20 + 80002e08: 00f0009b addiw ra,zero,15 + 80002e0c: 02009093 slli ra,ra,0x20 + 80002e10: 00000013 nop + 80002e14: 00000013 nop + 80002e18: 02209f33 mulh t5,ra,sp + 80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e20: 00200293 li t0,2 + 80002e24: fc521ee3 bne tp,t0,80002e00 + 80002e28: 0a500e93 li t4,165 + 80002e2c: 01600193 li gp,22 + 80002e30: 11df1663 bne t5,t4,80002f3c + +0000000080002e34 : + 80002e34: 00000213 li tp,0 + 80002e38: 00b0011b addiw sp,zero,11 + 80002e3c: 02011113 slli sp,sp,0x20 + 80002e40: 00000013 nop + 80002e44: 00d0009b addiw ra,zero,13 + 80002e48: 02009093 slli ra,ra,0x20 + 80002e4c: 02209f33 mulh t5,ra,sp + 80002e50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e54: 00200293 li t0,2 + 80002e58: fe5210e3 bne tp,t0,80002e38 + 80002e5c: 08f00e93 li t4,143 + 80002e60: 01700193 li gp,23 + 80002e64: 0ddf1c63 bne t5,t4,80002f3c + +0000000080002e68 : + 80002e68: 00000213 li tp,0 + 80002e6c: 00b0011b addiw sp,zero,11 + 80002e70: 02011113 slli sp,sp,0x20 + 80002e74: 00000013 nop + 80002e78: 0070009b addiw ra,zero,7 + 80002e7c: 02109093 slli ra,ra,0x21 + 80002e80: 00000013 nop + 80002e84: 02209f33 mulh t5,ra,sp + 80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e8c: 00200293 li t0,2 + 80002e90: fc521ee3 bne tp,t0,80002e6c + 80002e94: 09a00e93 li t4,154 + 80002e98: 01800193 li gp,24 + 80002e9c: 0bdf1063 bne t5,t4,80002f3c + +0000000080002ea0 : + 80002ea0: 00000213 li tp,0 + 80002ea4: 00b0011b addiw sp,zero,11 + 80002ea8: 02011113 slli sp,sp,0x20 + 80002eac: 00000013 nop + 80002eb0: 00000013 nop + 80002eb4: 00f0009b addiw ra,zero,15 + 80002eb8: 02009093 slli ra,ra,0x20 + 80002ebc: 02209f33 mulh t5,ra,sp + 80002ec0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ec4: 00200293 li t0,2 + 80002ec8: fc521ee3 bne tp,t0,80002ea4 + 80002ecc: 0a500e93 li t4,165 + 80002ed0: 01900193 li gp,25 + 80002ed4: 07df1463 bne t5,t4,80002f3c + +0000000080002ed8 : + 80002ed8: 01f0009b addiw ra,zero,31 + 80002edc: 02009093 slli ra,ra,0x20 + 80002ee0: 02101133 mulh sp,zero,ra + 80002ee4: 00000e93 li t4,0 + 80002ee8: 01a00193 li gp,26 + 80002eec: 05d11863 bne sp,t4,80002f3c + +0000000080002ef0 : + 80002ef0: 0010009b addiw ra,zero,1 + 80002ef4: 02509093 slli ra,ra,0x25 + 80002ef8: 02009133 mulh sp,ra,zero + 80002efc: 00000e93 li t4,0 + 80002f00: 01b00193 li gp,27 + 80002f04: 03d11c63 bne sp,t4,80002f3c + +0000000080002f08 : + 80002f08: 020010b3 mulh ra,zero,zero + 80002f0c: 00000e93 li t4,0 + 80002f10: 01c00193 li gp,28 + 80002f14: 03d09463 bne ra,t4,80002f3c + +0000000080002f18 : + 80002f18: 0210009b addiw ra,zero,33 + 80002f1c: 02009093 slli ra,ra,0x20 + 80002f20: 0110011b addiw sp,zero,17 + 80002f24: 02111113 slli sp,sp,0x21 + 80002f28: 02209033 mulh zero,ra,sp + 80002f2c: 00000e93 li t4,0 + 80002f30: 01d00193 li gp,29 + 80002f34: 01d01463 bne zero,t4,80002f3c + 80002f38: 00301a63 bne zero,gp,80002f4c + +0000000080002f3c : + 80002f3c: 00119513 slli a0,gp,0x1 + 80002f40: 00050063 beqz a0,80002f40 + 80002f44: 00156513 ori a0,a0,1 + 80002f48: 00000073 ecall + +0000000080002f4c : + 80002f4c: 00100513 li a0,1 + 80002f50: 00000073 ecall + 80002f54: c0001073 unimp diff --git a/Tests/isa/rv64um-v-mulhsu b/Tests/isa/rv64um-v-mulhsu new file mode 100644 index 0000000..1bf8145 Binary files /dev/null and b/Tests/isa/rv64um-v-mulhsu differ diff --git a/Tests/isa/rv64um-v-mulhsu.dump b/Tests/isa/rv64um-v-mulhsu.dump new file mode 100644 index 0000000..061224b --- /dev/null +++ b/Tests/isa/rv64um-v-mulhsu.dump @@ -0,0 +1,1179 @@ + +rv64um-v-mulhsu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b0068693 addi a3,a3,-1280 # 80002f58 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: b3460613 addi a2,a2,-1228 # 80002fe8 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: afc60613 addi a2,a2,-1284 # 80003000 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: a4c68693 addi a3,a3,-1460 # 80002fa0 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: a6868693 addi a3,a3,-1432 # 800030d8 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 9e860613 addi a2,a2,-1560 # 800030b0 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 91c68693 addi a3,a3,-1764 # 80003108 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 83c68693 addi a3,a3,-1988 # 80003078 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 7cc68693 addi a3,a3,1996 # 80003040 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01000793 li a5,16 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 09a677b7 lui a5,0x9a67 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: d4078793 addi a5,a5,-704 # 9a66d40 <_start-0x765992c0> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 0220af33 mulhsu t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 47df1063 bne t5,t4,80002f3c + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 0220af33 mulhsu t5,ra,sp + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 45df1463 bne t5,t4,80002f3c + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 0220af33 mulhsu t5,ra,sp + 80002b04: 00000e93 li t4,0 + 80002b08: 00400193 li gp,4 + 80002b0c: 43df1863 bne t5,t4,80002f3c + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 0220af33 mulhsu t5,ra,sp + 80002b1c: 00000e93 li t4,0 + 80002b20: 00500193 li gp,5 + 80002b24: 41df1c63 bne t5,t4,80002f3c + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 0220af33 mulhsu t5,ra,sp + 80002b34: 00000e93 li t4,0 + 80002b38: 00600193 li gp,6 + 80002b3c: 41df1063 bne t5,t4,80002f3c + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 0220af33 mulhsu t5,ra,sp + 80002b4c: 80000eb7 lui t4,0x80000 + 80002b50: 00700193 li gp,7 + 80002b54: 3fdf1463 bne t5,t4,80002f3c + +0000000080002b58 : + 80002b58: 00d0009b addiw ra,zero,13 + 80002b5c: 02009093 slli ra,ra,0x20 + 80002b60: 00b0011b addiw sp,zero,11 + 80002b64: 02011113 slli sp,sp,0x20 + 80002b68: 0220a0b3 mulhsu ra,ra,sp + 80002b6c: 08f00e93 li t4,143 + 80002b70: 00800193 li gp,8 + 80002b74: 3dd09463 bne ra,t4,80002f3c + +0000000080002b78 : + 80002b78: 0070009b addiw ra,zero,7 + 80002b7c: 02109093 slli ra,ra,0x21 + 80002b80: 00b0011b addiw sp,zero,11 + 80002b84: 02011113 slli sp,sp,0x20 + 80002b88: 0220a133 mulhsu sp,ra,sp + 80002b8c: 09a00e93 li t4,154 + 80002b90: 00900193 li gp,9 + 80002b94: 3bd11463 bne sp,t4,80002f3c + +0000000080002b98 : + 80002b98: 00d0009b addiw ra,zero,13 + 80002b9c: 02009093 slli ra,ra,0x20 + 80002ba0: 0210a0b3 mulhsu ra,ra,ra + 80002ba4: 0a900e93 li t4,169 + 80002ba8: 00a00193 li gp,10 + 80002bac: 39d09863 bne ra,t4,80002f3c + +0000000080002bb0 : + 80002bb0: 00000213 li tp,0 + 80002bb4: 00d0009b addiw ra,zero,13 + 80002bb8: 02009093 slli ra,ra,0x20 + 80002bbc: 00b0011b addiw sp,zero,11 + 80002bc0: 02011113 slli sp,sp,0x20 + 80002bc4: 0220af33 mulhsu t5,ra,sp + 80002bc8: 000f0313 mv t1,t5 + 80002bcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bd0: 00200293 li t0,2 + 80002bd4: fe5210e3 bne tp,t0,80002bb4 + 80002bd8: 08f00e93 li t4,143 + 80002bdc: 00b00193 li gp,11 + 80002be0: 35d31e63 bne t1,t4,80002f3c + +0000000080002be4 : + 80002be4: 00000213 li tp,0 + 80002be8: 0070009b addiw ra,zero,7 + 80002bec: 02109093 slli ra,ra,0x21 + 80002bf0: 00b0011b addiw sp,zero,11 + 80002bf4: 02011113 slli sp,sp,0x20 + 80002bf8: 0220af33 mulhsu t5,ra,sp + 80002bfc: 00000013 nop + 80002c00: 000f0313 mv t1,t5 + 80002c04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c08: 00200293 li t0,2 + 80002c0c: fc521ee3 bne tp,t0,80002be8 + 80002c10: 09a00e93 li t4,154 + 80002c14: 00c00193 li gp,12 + 80002c18: 33d31263 bne t1,t4,80002f3c + +0000000080002c1c : + 80002c1c: 00000213 li tp,0 + 80002c20: 00f0009b addiw ra,zero,15 + 80002c24: 02009093 slli ra,ra,0x20 + 80002c28: 00b0011b addiw sp,zero,11 + 80002c2c: 02011113 slli sp,sp,0x20 + 80002c30: 0220af33 mulhsu t5,ra,sp + 80002c34: 00000013 nop + 80002c38: 00000013 nop + 80002c3c: 000f0313 mv t1,t5 + 80002c40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c44: 00200293 li t0,2 + 80002c48: fc521ce3 bne tp,t0,80002c20 + 80002c4c: 0a500e93 li t4,165 + 80002c50: 00d00193 li gp,13 + 80002c54: 2fd31463 bne t1,t4,80002f3c + +0000000080002c58 : + 80002c58: 00000213 li tp,0 + 80002c5c: 00d0009b addiw ra,zero,13 + 80002c60: 02009093 slli ra,ra,0x20 + 80002c64: 00b0011b addiw sp,zero,11 + 80002c68: 02011113 slli sp,sp,0x20 + 80002c6c: 0220af33 mulhsu t5,ra,sp + 80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c74: 00200293 li t0,2 + 80002c78: fe5212e3 bne tp,t0,80002c5c + 80002c7c: 08f00e93 li t4,143 + 80002c80: 00e00193 li gp,14 + 80002c84: 2bdf1c63 bne t5,t4,80002f3c + +0000000080002c88 : + 80002c88: 00000213 li tp,0 + 80002c8c: 0070009b addiw ra,zero,7 + 80002c90: 02109093 slli ra,ra,0x21 + 80002c94: 00b0011b addiw sp,zero,11 + 80002c98: 02011113 slli sp,sp,0x20 + 80002c9c: 00000013 nop + 80002ca0: 0220af33 mulhsu t5,ra,sp + 80002ca4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ca8: 00200293 li t0,2 + 80002cac: fe5210e3 bne tp,t0,80002c8c + 80002cb0: 09a00e93 li t4,154 + 80002cb4: 00f00193 li gp,15 + 80002cb8: 29df1263 bne t5,t4,80002f3c + +0000000080002cbc : + 80002cbc: 00000213 li tp,0 + 80002cc0: 00f0009b addiw ra,zero,15 + 80002cc4: 02009093 slli ra,ra,0x20 + 80002cc8: 00b0011b addiw sp,zero,11 + 80002ccc: 02011113 slli sp,sp,0x20 + 80002cd0: 00000013 nop + 80002cd4: 00000013 nop + 80002cd8: 0220af33 mulhsu t5,ra,sp + 80002cdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ce0: 00200293 li t0,2 + 80002ce4: fc521ee3 bne tp,t0,80002cc0 + 80002ce8: 0a500e93 li t4,165 + 80002cec: 01000193 li gp,16 + 80002cf0: 25df1663 bne t5,t4,80002f3c + +0000000080002cf4 : + 80002cf4: 00000213 li tp,0 + 80002cf8: 00d0009b addiw ra,zero,13 + 80002cfc: 02009093 slli ra,ra,0x20 + 80002d00: 00000013 nop + 80002d04: 00b0011b addiw sp,zero,11 + 80002d08: 02011113 slli sp,sp,0x20 + 80002d0c: 0220af33 mulhsu t5,ra,sp + 80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d14: 00200293 li t0,2 + 80002d18: fe5210e3 bne tp,t0,80002cf8 + 80002d1c: 08f00e93 li t4,143 + 80002d20: 01100193 li gp,17 + 80002d24: 21df1c63 bne t5,t4,80002f3c + +0000000080002d28 : + 80002d28: 00000213 li tp,0 + 80002d2c: 0070009b addiw ra,zero,7 + 80002d30: 02109093 slli ra,ra,0x21 + 80002d34: 00000013 nop + 80002d38: 00b0011b addiw sp,zero,11 + 80002d3c: 02011113 slli sp,sp,0x20 + 80002d40: 00000013 nop + 80002d44: 0220af33 mulhsu t5,ra,sp + 80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d4c: 00200293 li t0,2 + 80002d50: fc521ee3 bne tp,t0,80002d2c + 80002d54: 09a00e93 li t4,154 + 80002d58: 01200193 li gp,18 + 80002d5c: 1fdf1063 bne t5,t4,80002f3c + +0000000080002d60 : + 80002d60: 00000213 li tp,0 + 80002d64: 00f0009b addiw ra,zero,15 + 80002d68: 02009093 slli ra,ra,0x20 + 80002d6c: 00000013 nop + 80002d70: 00000013 nop + 80002d74: 00b0011b addiw sp,zero,11 + 80002d78: 02011113 slli sp,sp,0x20 + 80002d7c: 0220af33 mulhsu t5,ra,sp + 80002d80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d84: 00200293 li t0,2 + 80002d88: fc521ee3 bne tp,t0,80002d64 + 80002d8c: 0a500e93 li t4,165 + 80002d90: 01300193 li gp,19 + 80002d94: 1bdf1463 bne t5,t4,80002f3c + +0000000080002d98 : + 80002d98: 00000213 li tp,0 + 80002d9c: 00b0011b addiw sp,zero,11 + 80002da0: 02011113 slli sp,sp,0x20 + 80002da4: 00d0009b addiw ra,zero,13 + 80002da8: 02009093 slli ra,ra,0x20 + 80002dac: 0220af33 mulhsu t5,ra,sp + 80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002db4: 00200293 li t0,2 + 80002db8: fe5212e3 bne tp,t0,80002d9c + 80002dbc: 08f00e93 li t4,143 + 80002dc0: 01400193 li gp,20 + 80002dc4: 17df1c63 bne t5,t4,80002f3c + +0000000080002dc8 : + 80002dc8: 00000213 li tp,0 + 80002dcc: 00b0011b addiw sp,zero,11 + 80002dd0: 02011113 slli sp,sp,0x20 + 80002dd4: 0070009b addiw ra,zero,7 + 80002dd8: 02109093 slli ra,ra,0x21 + 80002ddc: 00000013 nop + 80002de0: 0220af33 mulhsu t5,ra,sp + 80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002de8: 00200293 li t0,2 + 80002dec: fe5210e3 bne tp,t0,80002dcc + 80002df0: 09a00e93 li t4,154 + 80002df4: 01500193 li gp,21 + 80002df8: 15df1263 bne t5,t4,80002f3c + +0000000080002dfc : + 80002dfc: 00000213 li tp,0 + 80002e00: 00b0011b addiw sp,zero,11 + 80002e04: 02011113 slli sp,sp,0x20 + 80002e08: 00f0009b addiw ra,zero,15 + 80002e0c: 02009093 slli ra,ra,0x20 + 80002e10: 00000013 nop + 80002e14: 00000013 nop + 80002e18: 0220af33 mulhsu t5,ra,sp + 80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e20: 00200293 li t0,2 + 80002e24: fc521ee3 bne tp,t0,80002e00 + 80002e28: 0a500e93 li t4,165 + 80002e2c: 01600193 li gp,22 + 80002e30: 11df1663 bne t5,t4,80002f3c + +0000000080002e34 : + 80002e34: 00000213 li tp,0 + 80002e38: 00b0011b addiw sp,zero,11 + 80002e3c: 02011113 slli sp,sp,0x20 + 80002e40: 00000013 nop + 80002e44: 00d0009b addiw ra,zero,13 + 80002e48: 02009093 slli ra,ra,0x20 + 80002e4c: 0220af33 mulhsu t5,ra,sp + 80002e50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e54: 00200293 li t0,2 + 80002e58: fe5210e3 bne tp,t0,80002e38 + 80002e5c: 08f00e93 li t4,143 + 80002e60: 01700193 li gp,23 + 80002e64: 0ddf1c63 bne t5,t4,80002f3c + +0000000080002e68 : + 80002e68: 00000213 li tp,0 + 80002e6c: 00b0011b addiw sp,zero,11 + 80002e70: 02011113 slli sp,sp,0x20 + 80002e74: 00000013 nop + 80002e78: 0070009b addiw ra,zero,7 + 80002e7c: 02109093 slli ra,ra,0x21 + 80002e80: 00000013 nop + 80002e84: 0220af33 mulhsu t5,ra,sp + 80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e8c: 00200293 li t0,2 + 80002e90: fc521ee3 bne tp,t0,80002e6c + 80002e94: 09a00e93 li t4,154 + 80002e98: 01800193 li gp,24 + 80002e9c: 0bdf1063 bne t5,t4,80002f3c + +0000000080002ea0 : + 80002ea0: 00000213 li tp,0 + 80002ea4: 00b0011b addiw sp,zero,11 + 80002ea8: 02011113 slli sp,sp,0x20 + 80002eac: 00000013 nop + 80002eb0: 00000013 nop + 80002eb4: 00f0009b addiw ra,zero,15 + 80002eb8: 02009093 slli ra,ra,0x20 + 80002ebc: 0220af33 mulhsu t5,ra,sp + 80002ec0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ec4: 00200293 li t0,2 + 80002ec8: fc521ee3 bne tp,t0,80002ea4 + 80002ecc: 0a500e93 li t4,165 + 80002ed0: 01900193 li gp,25 + 80002ed4: 07df1463 bne t5,t4,80002f3c + +0000000080002ed8 : + 80002ed8: 01f0009b addiw ra,zero,31 + 80002edc: 02009093 slli ra,ra,0x20 + 80002ee0: 02102133 mulhsu sp,zero,ra + 80002ee4: 00000e93 li t4,0 + 80002ee8: 01a00193 li gp,26 + 80002eec: 05d11863 bne sp,t4,80002f3c + +0000000080002ef0 : + 80002ef0: 0010009b addiw ra,zero,1 + 80002ef4: 02509093 slli ra,ra,0x25 + 80002ef8: 0200a133 mulhsu sp,ra,zero + 80002efc: 00000e93 li t4,0 + 80002f00: 01b00193 li gp,27 + 80002f04: 03d11c63 bne sp,t4,80002f3c + +0000000080002f08 : + 80002f08: 020020b3 mulhsu ra,zero,zero + 80002f0c: 00000e93 li t4,0 + 80002f10: 01c00193 li gp,28 + 80002f14: 03d09463 bne ra,t4,80002f3c + +0000000080002f18 : + 80002f18: 0210009b addiw ra,zero,33 + 80002f1c: 02009093 slli ra,ra,0x20 + 80002f20: 0110011b addiw sp,zero,17 + 80002f24: 02111113 slli sp,sp,0x21 + 80002f28: 0220a033 mulhsu zero,ra,sp + 80002f2c: 00000e93 li t4,0 + 80002f30: 01d00193 li gp,29 + 80002f34: 01d01463 bne zero,t4,80002f3c + 80002f38: 00301a63 bne zero,gp,80002f4c + +0000000080002f3c : + 80002f3c: 00119513 slli a0,gp,0x1 + 80002f40: 00050063 beqz a0,80002f40 + 80002f44: 00156513 ori a0,a0,1 + 80002f48: 00000073 ecall + +0000000080002f4c : + 80002f4c: 00100513 li a0,1 + 80002f50: 00000073 ecall + 80002f54: c0001073 unimp diff --git a/Tests/isa/rv64um-v-mulhu b/Tests/isa/rv64um-v-mulhu new file mode 100644 index 0000000..04c018b Binary files /dev/null and b/Tests/isa/rv64um-v-mulhu differ diff --git a/Tests/isa/rv64um-v-mulhu.dump b/Tests/isa/rv64um-v-mulhu.dump new file mode 100644 index 0000000..85b66d0 --- /dev/null +++ b/Tests/isa/rv64um-v-mulhu.dump @@ -0,0 +1,1215 @@ + +rv64um-v-mulhu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: b8068693 addi a3,a3,-1152 # 80002fd8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: bb460613 addi a2,a2,-1100 # 80003068 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: b7c60613 addi a2,a2,-1156 # 80003080 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: acc68693 addi a3,a3,-1332 # 80003020 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: ae868693 addi a3,a3,-1304 # 80003158 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: a6860613 addi a2,a2,-1432 # 80003130 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 99c68693 addi a3,a3,-1636 # 80003188 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00001697 auipc a3,0x1 + 80002840: 8bc68693 addi a3,a3,-1860 # 800030f8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00001697 auipc a3,0x1 + 80002878: 84c68693 addi a3,a3,-1972 # 800030c0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 03200793 li a5,50 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0c0917b7 lui a5,0xc091 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 24978793 addi a5,a5,585 # c091249 <_start-0x73f6edb7> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 0220bf33 mulhu t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 4fdf1063 bne t5,t4,80002fbc + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 0220bf33 mulhu t5,ra,sp + 80002aec: 00000e93 li t4,0 + 80002af0: 00300193 li gp,3 + 80002af4: 4ddf1463 bne t5,t4,80002fbc + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 0220bf33 mulhu t5,ra,sp + 80002b04: 00000e93 li t4,0 + 80002b08: 00400193 li gp,4 + 80002b0c: 4bdf1863 bne t5,t4,80002fbc + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 0220bf33 mulhu t5,ra,sp + 80002b1c: 00000e93 li t4,0 + 80002b20: 00500193 li gp,5 + 80002b24: 49df1c63 bne t5,t4,80002fbc + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 0220bf33 mulhu t5,ra,sp + 80002b34: 00000e93 li t4,0 + 80002b38: 00600193 li gp,6 + 80002b3c: 49df1063 bne t5,t4,80002fbc + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 0220bf33 mulhu t5,ra,sp + 80002b4c: ffff0eb7 lui t4,0xffff0 + 80002b50: fffe8e9b addiw t4,t4,-1 + 80002b54: 00fe9e93 slli t4,t4,0xf + 80002b58: 00700193 li gp,7 + 80002b5c: 47df1063 bne t5,t4,80002fbc + +0000000080002b60 : + 80002b60: faaab0b7 lui ra,0xfaaab + 80002b64: aab0809b addiw ra,ra,-1365 + 80002b68: 00c09093 slli ra,ra,0xc + 80002b6c: aab08093 addi ra,ra,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa22bb> + 80002b70: 00c09093 slli ra,ra,0xc + 80002b74: aab08093 addi ra,ra,-1365 + 80002b78: 00c09093 slli ra,ra,0xc + 80002b7c: aab08093 addi ra,ra,-1365 + 80002b80: 00030137 lui sp,0x30 + 80002b84: e7d1011b addiw sp,sp,-387 + 80002b88: 0220bf33 mulhu t5,ra,sp + 80002b8c: 00020eb7 lui t4,0x20 + 80002b90: efee8e9b addiw t4,t4,-258 + 80002b94: 01e00193 li gp,30 + 80002b98: 43df1263 bne t5,t4,80002fbc + +0000000080002b9c : + 80002b9c: 000300b7 lui ra,0x30 + 80002ba0: e7d0809b addiw ra,ra,-387 + 80002ba4: faaab137 lui sp,0xfaaab + 80002ba8: aab1011b addiw sp,sp,-1365 + 80002bac: 00c11113 slli sp,sp,0xc + 80002bb0: aab10113 addi sp,sp,-1365 # fffffffffaaaaaab <_end+0xffffffff7aaa22bb> + 80002bb4: 00c11113 slli sp,sp,0xc + 80002bb8: aab10113 addi sp,sp,-1365 + 80002bbc: 00c11113 slli sp,sp,0xc + 80002bc0: aab10113 addi sp,sp,-1365 + 80002bc4: 0220bf33 mulhu t5,ra,sp + 80002bc8: 00020eb7 lui t4,0x20 + 80002bcc: efee8e9b addiw t4,t4,-258 + 80002bd0: 01f00193 li gp,31 + 80002bd4: 3fdf1463 bne t5,t4,80002fbc + +0000000080002bd8 : + 80002bd8: 00d0009b addiw ra,zero,13 + 80002bdc: 02009093 slli ra,ra,0x20 + 80002be0: 00b0011b addiw sp,zero,11 + 80002be4: 02011113 slli sp,sp,0x20 + 80002be8: 0220b0b3 mulhu ra,ra,sp + 80002bec: 08f00e93 li t4,143 + 80002bf0: 00800193 li gp,8 + 80002bf4: 3dd09463 bne ra,t4,80002fbc + +0000000080002bf8 : + 80002bf8: 0070009b addiw ra,zero,7 + 80002bfc: 02109093 slli ra,ra,0x21 + 80002c00: 00b0011b addiw sp,zero,11 + 80002c04: 02011113 slli sp,sp,0x20 + 80002c08: 0220b133 mulhu sp,ra,sp + 80002c0c: 09a00e93 li t4,154 + 80002c10: 00900193 li gp,9 + 80002c14: 3bd11463 bne sp,t4,80002fbc + +0000000080002c18 : + 80002c18: 00d0009b addiw ra,zero,13 + 80002c1c: 02009093 slli ra,ra,0x20 + 80002c20: 0210b0b3 mulhu ra,ra,ra + 80002c24: 0a900e93 li t4,169 + 80002c28: 00a00193 li gp,10 + 80002c2c: 39d09863 bne ra,t4,80002fbc + +0000000080002c30 : + 80002c30: 00000213 li tp,0 + 80002c34: 00d0009b addiw ra,zero,13 + 80002c38: 02009093 slli ra,ra,0x20 + 80002c3c: 00b0011b addiw sp,zero,11 + 80002c40: 02011113 slli sp,sp,0x20 + 80002c44: 0220bf33 mulhu t5,ra,sp + 80002c48: 000f0313 mv t1,t5 + 80002c4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c50: 00200293 li t0,2 + 80002c54: fe5210e3 bne tp,t0,80002c34 + 80002c58: 08f00e93 li t4,143 + 80002c5c: 00b00193 li gp,11 + 80002c60: 35d31e63 bne t1,t4,80002fbc + +0000000080002c64 : + 80002c64: 00000213 li tp,0 + 80002c68: 0070009b addiw ra,zero,7 + 80002c6c: 02109093 slli ra,ra,0x21 + 80002c70: 00b0011b addiw sp,zero,11 + 80002c74: 02011113 slli sp,sp,0x20 + 80002c78: 0220bf33 mulhu t5,ra,sp + 80002c7c: 00000013 nop + 80002c80: 000f0313 mv t1,t5 + 80002c84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c88: 00200293 li t0,2 + 80002c8c: fc521ee3 bne tp,t0,80002c68 + 80002c90: 09a00e93 li t4,154 + 80002c94: 00c00193 li gp,12 + 80002c98: 33d31263 bne t1,t4,80002fbc + +0000000080002c9c : + 80002c9c: 00000213 li tp,0 + 80002ca0: 00f0009b addiw ra,zero,15 + 80002ca4: 02009093 slli ra,ra,0x20 + 80002ca8: 00b0011b addiw sp,zero,11 + 80002cac: 02011113 slli sp,sp,0x20 + 80002cb0: 0220bf33 mulhu t5,ra,sp + 80002cb4: 00000013 nop + 80002cb8: 00000013 nop + 80002cbc: 000f0313 mv t1,t5 + 80002cc0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cc4: 00200293 li t0,2 + 80002cc8: fc521ce3 bne tp,t0,80002ca0 + 80002ccc: 0a500e93 li t4,165 + 80002cd0: 00d00193 li gp,13 + 80002cd4: 2fd31463 bne t1,t4,80002fbc + +0000000080002cd8 : + 80002cd8: 00000213 li tp,0 + 80002cdc: 00d0009b addiw ra,zero,13 + 80002ce0: 02009093 slli ra,ra,0x20 + 80002ce4: 00b0011b addiw sp,zero,11 + 80002ce8: 02011113 slli sp,sp,0x20 + 80002cec: 0220bf33 mulhu t5,ra,sp + 80002cf0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf4: 00200293 li t0,2 + 80002cf8: fe5212e3 bne tp,t0,80002cdc + 80002cfc: 08f00e93 li t4,143 + 80002d00: 00e00193 li gp,14 + 80002d04: 2bdf1c63 bne t5,t4,80002fbc + +0000000080002d08 : + 80002d08: 00000213 li tp,0 + 80002d0c: 0070009b addiw ra,zero,7 + 80002d10: 02109093 slli ra,ra,0x21 + 80002d14: 00b0011b addiw sp,zero,11 + 80002d18: 02011113 slli sp,sp,0x20 + 80002d1c: 00000013 nop + 80002d20: 0220bf33 mulhu t5,ra,sp + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fe5210e3 bne tp,t0,80002d0c + 80002d30: 09a00e93 li t4,154 + 80002d34: 00f00193 li gp,15 + 80002d38: 29df1263 bne t5,t4,80002fbc + +0000000080002d3c : + 80002d3c: 00000213 li tp,0 + 80002d40: 00f0009b addiw ra,zero,15 + 80002d44: 02009093 slli ra,ra,0x20 + 80002d48: 00b0011b addiw sp,zero,11 + 80002d4c: 02011113 slli sp,sp,0x20 + 80002d50: 00000013 nop + 80002d54: 00000013 nop + 80002d58: 0220bf33 mulhu t5,ra,sp + 80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d60: 00200293 li t0,2 + 80002d64: fc521ee3 bne tp,t0,80002d40 + 80002d68: 0a500e93 li t4,165 + 80002d6c: 01000193 li gp,16 + 80002d70: 25df1663 bne t5,t4,80002fbc + +0000000080002d74 : + 80002d74: 00000213 li tp,0 + 80002d78: 00d0009b addiw ra,zero,13 + 80002d7c: 02009093 slli ra,ra,0x20 + 80002d80: 00000013 nop + 80002d84: 00b0011b addiw sp,zero,11 + 80002d88: 02011113 slli sp,sp,0x20 + 80002d8c: 0220bf33 mulhu t5,ra,sp + 80002d90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d94: 00200293 li t0,2 + 80002d98: fe5210e3 bne tp,t0,80002d78 + 80002d9c: 08f00e93 li t4,143 + 80002da0: 01100193 li gp,17 + 80002da4: 21df1c63 bne t5,t4,80002fbc + +0000000080002da8 : + 80002da8: 00000213 li tp,0 + 80002dac: 0070009b addiw ra,zero,7 + 80002db0: 02109093 slli ra,ra,0x21 + 80002db4: 00000013 nop + 80002db8: 00b0011b addiw sp,zero,11 + 80002dbc: 02011113 slli sp,sp,0x20 + 80002dc0: 00000013 nop + 80002dc4: 0220bf33 mulhu t5,ra,sp + 80002dc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dcc: 00200293 li t0,2 + 80002dd0: fc521ee3 bne tp,t0,80002dac + 80002dd4: 09a00e93 li t4,154 + 80002dd8: 01200193 li gp,18 + 80002ddc: 1fdf1063 bne t5,t4,80002fbc + +0000000080002de0 : + 80002de0: 00000213 li tp,0 + 80002de4: 00f0009b addiw ra,zero,15 + 80002de8: 02009093 slli ra,ra,0x20 + 80002dec: 00000013 nop + 80002df0: 00000013 nop + 80002df4: 00b0011b addiw sp,zero,11 + 80002df8: 02011113 slli sp,sp,0x20 + 80002dfc: 0220bf33 mulhu t5,ra,sp + 80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e04: 00200293 li t0,2 + 80002e08: fc521ee3 bne tp,t0,80002de4 + 80002e0c: 0a500e93 li t4,165 + 80002e10: 01300193 li gp,19 + 80002e14: 1bdf1463 bne t5,t4,80002fbc + +0000000080002e18 : + 80002e18: 00000213 li tp,0 + 80002e1c: 00b0011b addiw sp,zero,11 + 80002e20: 02011113 slli sp,sp,0x20 + 80002e24: 00d0009b addiw ra,zero,13 + 80002e28: 02009093 slli ra,ra,0x20 + 80002e2c: 0220bf33 mulhu t5,ra,sp + 80002e30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e34: 00200293 li t0,2 + 80002e38: fe5212e3 bne tp,t0,80002e1c + 80002e3c: 08f00e93 li t4,143 + 80002e40: 01400193 li gp,20 + 80002e44: 17df1c63 bne t5,t4,80002fbc + +0000000080002e48 : + 80002e48: 00000213 li tp,0 + 80002e4c: 00b0011b addiw sp,zero,11 + 80002e50: 02011113 slli sp,sp,0x20 + 80002e54: 0070009b addiw ra,zero,7 + 80002e58: 02109093 slli ra,ra,0x21 + 80002e5c: 00000013 nop + 80002e60: 0220bf33 mulhu t5,ra,sp + 80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e68: 00200293 li t0,2 + 80002e6c: fe5210e3 bne tp,t0,80002e4c + 80002e70: 09a00e93 li t4,154 + 80002e74: 01500193 li gp,21 + 80002e78: 15df1263 bne t5,t4,80002fbc + +0000000080002e7c : + 80002e7c: 00000213 li tp,0 + 80002e80: 00b0011b addiw sp,zero,11 + 80002e84: 02011113 slli sp,sp,0x20 + 80002e88: 00f0009b addiw ra,zero,15 + 80002e8c: 02009093 slli ra,ra,0x20 + 80002e90: 00000013 nop + 80002e94: 00000013 nop + 80002e98: 0220bf33 mulhu t5,ra,sp + 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ea0: 00200293 li t0,2 + 80002ea4: fc521ee3 bne tp,t0,80002e80 + 80002ea8: 0a500e93 li t4,165 + 80002eac: 01600193 li gp,22 + 80002eb0: 11df1663 bne t5,t4,80002fbc + +0000000080002eb4 : + 80002eb4: 00000213 li tp,0 + 80002eb8: 00b0011b addiw sp,zero,11 + 80002ebc: 02011113 slli sp,sp,0x20 + 80002ec0: 00000013 nop + 80002ec4: 00d0009b addiw ra,zero,13 + 80002ec8: 02009093 slli ra,ra,0x20 + 80002ecc: 0220bf33 mulhu t5,ra,sp + 80002ed0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002ed4: 00200293 li t0,2 + 80002ed8: fe5210e3 bne tp,t0,80002eb8 + 80002edc: 08f00e93 li t4,143 + 80002ee0: 01700193 li gp,23 + 80002ee4: 0ddf1c63 bne t5,t4,80002fbc + +0000000080002ee8 : + 80002ee8: 00000213 li tp,0 + 80002eec: 00b0011b addiw sp,zero,11 + 80002ef0: 02011113 slli sp,sp,0x20 + 80002ef4: 00000013 nop + 80002ef8: 0070009b addiw ra,zero,7 + 80002efc: 02109093 slli ra,ra,0x21 + 80002f00: 00000013 nop + 80002f04: 0220bf33 mulhu t5,ra,sp + 80002f08: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f0c: 00200293 li t0,2 + 80002f10: fc521ee3 bne tp,t0,80002eec + 80002f14: 09a00e93 li t4,154 + 80002f18: 01800193 li gp,24 + 80002f1c: 0bdf1063 bne t5,t4,80002fbc + +0000000080002f20 : + 80002f20: 00000213 li tp,0 + 80002f24: 00b0011b addiw sp,zero,11 + 80002f28: 02011113 slli sp,sp,0x20 + 80002f2c: 00000013 nop + 80002f30: 00000013 nop + 80002f34: 00f0009b addiw ra,zero,15 + 80002f38: 02009093 slli ra,ra,0x20 + 80002f3c: 0220bf33 mulhu t5,ra,sp + 80002f40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002f44: 00200293 li t0,2 + 80002f48: fc521ee3 bne tp,t0,80002f24 + 80002f4c: 0a500e93 li t4,165 + 80002f50: 01900193 li gp,25 + 80002f54: 07df1463 bne t5,t4,80002fbc + +0000000080002f58 : + 80002f58: 01f0009b addiw ra,zero,31 + 80002f5c: 02009093 slli ra,ra,0x20 + 80002f60: 02103133 mulhu sp,zero,ra + 80002f64: 00000e93 li t4,0 + 80002f68: 01a00193 li gp,26 + 80002f6c: 05d11863 bne sp,t4,80002fbc + +0000000080002f70 : + 80002f70: 0010009b addiw ra,zero,1 + 80002f74: 02509093 slli ra,ra,0x25 + 80002f78: 0200b133 mulhu sp,ra,zero + 80002f7c: 00000e93 li t4,0 + 80002f80: 01b00193 li gp,27 + 80002f84: 03d11c63 bne sp,t4,80002fbc + +0000000080002f88 : + 80002f88: 020030b3 mulhu ra,zero,zero + 80002f8c: 00000e93 li t4,0 + 80002f90: 01c00193 li gp,28 + 80002f94: 03d09463 bne ra,t4,80002fbc + +0000000080002f98 : + 80002f98: 0210009b addiw ra,zero,33 + 80002f9c: 02009093 slli ra,ra,0x20 + 80002fa0: 0110011b addiw sp,zero,17 + 80002fa4: 02111113 slli sp,sp,0x21 + 80002fa8: 0220b033 mulhu zero,ra,sp + 80002fac: 00000e93 li t4,0 + 80002fb0: 01d00193 li gp,29 + 80002fb4: 01d01463 bne zero,t4,80002fbc + 80002fb8: 00301a63 bne zero,gp,80002fcc + +0000000080002fbc : + 80002fbc: 00119513 slli a0,gp,0x1 + 80002fc0: 00050063 beqz a0,80002fc0 + 80002fc4: 00156513 ori a0,a0,1 + 80002fc8: 00000073 ecall + +0000000080002fcc : + 80002fcc: 00100513 li a0,1 + 80002fd0: 00000073 ecall + 80002fd4: c0001073 unimp diff --git a/Tests/isa/rv64um-v-mulw b/Tests/isa/rv64um-v-mulw new file mode 100644 index 0000000..f6e33c6 Binary files /dev/null and b/Tests/isa/rv64um-v-mulw differ diff --git a/Tests/isa/rv64um-v-mulw.dump b/Tests/isa/rv64um-v-mulw.dump new file mode 100644 index 0000000..0d3598f --- /dev/null +++ b/Tests/isa/rv64um-v-mulw.dump @@ -0,0 +1,1140 @@ + +rv64um-v-mulw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00009117 auipc sp,0x9 + 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00002617 auipc a2,0x2 + 80002318: cec60613 addi a2,a2,-788 # 80004000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00006797 auipc a5,0x6 + 80002334: 4b878793 addi a5,a5,1208 # 800087e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00006717 auipc a4,0x6 + 80002348: 49c70713 addi a4,a4,1180 # 800087e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00006897 auipc a7,0x6 + 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00006797 auipc a5,0x6 + 80002384: 07078793 addi a5,a5,112 # 800083f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00006797 auipc a5,0x6 + 80002448: 3807be23 sd zero,924(a5) # 800087e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00001697 auipc a3,0x1 + 8000245c: a6868693 addi a3,a3,-1432 # 80002ec0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00001617 auipc a2,0x1 + 800024b8: a9c60613 addi a2,a2,-1380 # 80002f50 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00001617 auipc a2,0x1 + 80002508: a6460613 addi a2,a2,-1436 # 80002f68 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00001697 auipc a3,0x1 + 80002558: 9b468693 addi a3,a3,-1612 # 80002f08 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00001697 auipc a3,0x1 + 80002674: 9d068693 addi a3,a3,-1584 # 80003040 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00001617 auipc a2,0x1 + 800026cc: 95060613 addi a2,a2,-1712 # 80003018 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00006d17 auipc s10,0x6 + 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 + 80002724: 00002b97 auipc s7,0x2 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00006a17 auipc s4,0x6 + 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00006717 auipc a4,0x6 + 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00006717 auipc a4,0x6 + 800027d4: 00f73823 sd a5,16(a4) # 800087e0 + 800027d8: 00006717 auipc a4,0x6 + 800027dc: 00f73823 sd a5,16(a4) # 800087e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00001697 auipc a3,0x1 + 800027f0: 88468693 addi a3,a3,-1916 # 80003070 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 7a468693 addi a3,a3,1956 # 80002fe0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 73468693 addi a3,a3,1844 # 80002fa8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00002697 auipc a3,0x2 + 800028e0: 72468693 addi a3,a3,1828 # 80005000 + 800028e4: 00003717 auipc a4,0x3 + 800028e8: 71c70713 addi a4,a4,1820 # 80006000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00004797 auipc a5,0x4 + 800028f8: 70c78793 addi a5,a5,1804 # 80007000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00001897 auipc a7,0x1 + 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00002697 auipc a3,0x2 + 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00001617 auipc a2,0x1 + 80002938: 6cc60613 addi a2,a2,1740 # 80004000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00004697 auipc a3,0x4 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 + 8000294c: 00002717 auipc a4,0x2 + 80002950: 6af73a23 sd a5,1716(a4) # 80005000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00005697 auipc a3,0x5 + 800029c0: 64468693 addi a3,a3,1604 # 80008000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00006617 auipc a2,0x6 + 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 + 800029d4: 00006797 auipc a5,0x6 + 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 + 800029dc: 00006317 auipc t1,0x6 + 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 + 800029e4: 01100793 li a5,17 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00006797 auipc a5,0x6 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0e99b7b7 lui a5,0xe99b + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 1b978793 addi a5,a5,441 # e99b1b9 <_start-0x71664e47> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 00000093 li ra,0 + 80002acc: 00000113 li sp,0 + 80002ad0: 02208f3b mulw t5,ra,sp + 80002ad4: 00000e93 li t4,0 + 80002ad8: 00200193 li gp,2 + 80002adc: 3ddf1263 bne t5,t4,80002ea0 + +0000000080002ae0 : + 80002ae0: 00100093 li ra,1 + 80002ae4: 00100113 li sp,1 + 80002ae8: 02208f3b mulw t5,ra,sp + 80002aec: 00100e93 li t4,1 + 80002af0: 00300193 li gp,3 + 80002af4: 3bdf1663 bne t5,t4,80002ea0 + +0000000080002af8 : + 80002af8: 00300093 li ra,3 + 80002afc: 00700113 li sp,7 + 80002b00: 02208f3b mulw t5,ra,sp + 80002b04: 01500e93 li t4,21 + 80002b08: 00400193 li gp,4 + 80002b0c: 39df1a63 bne t5,t4,80002ea0 + +0000000080002b10 : + 80002b10: 00000093 li ra,0 + 80002b14: ffff8137 lui sp,0xffff8 + 80002b18: 02208f3b mulw t5,ra,sp + 80002b1c: 00000e93 li t4,0 + 80002b20: 00500193 li gp,5 + 80002b24: 37df1e63 bne t5,t4,80002ea0 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00000113 li sp,0 + 80002b30: 02208f3b mulw t5,ra,sp + 80002b34: 00000e93 li t4,0 + 80002b38: 00600193 li gp,6 + 80002b3c: 37df1263 bne t5,t4,80002ea0 + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: ffff8137 lui sp,0xffff8 + 80002b48: 02208f3b mulw t5,ra,sp + 80002b4c: 00000e93 li t4,0 + 80002b50: 00700193 li gp,7 + 80002b54: 35df1663 bne t5,t4,80002ea0 + +0000000080002b58 : + 80002b58: 00d00093 li ra,13 + 80002b5c: 00b00113 li sp,11 + 80002b60: 022080bb mulw ra,ra,sp + 80002b64: 08f00e93 li t4,143 + 80002b68: 00800193 li gp,8 + 80002b6c: 33d09a63 bne ra,t4,80002ea0 + +0000000080002b70 : + 80002b70: 00e00093 li ra,14 + 80002b74: 00b00113 li sp,11 + 80002b78: 0220813b mulw sp,ra,sp + 80002b7c: 09a00e93 li t4,154 + 80002b80: 00900193 li gp,9 + 80002b84: 31d11e63 bne sp,t4,80002ea0 + +0000000080002b88 : + 80002b88: 00d00093 li ra,13 + 80002b8c: 021080bb mulw ra,ra,ra + 80002b90: 0a900e93 li t4,169 + 80002b94: 00a00193 li gp,10 + 80002b98: 31d09463 bne ra,t4,80002ea0 + +0000000080002b9c : + 80002b9c: 00000213 li tp,0 + 80002ba0: 00d00093 li ra,13 + 80002ba4: 00b00113 li sp,11 + 80002ba8: 02208f3b mulw t5,ra,sp + 80002bac: 000f0313 mv t1,t5 + 80002bb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002bb4: 00200293 li t0,2 + 80002bb8: fe5214e3 bne tp,t0,80002ba0 + 80002bbc: 08f00e93 li t4,143 + 80002bc0: 00b00193 li gp,11 + 80002bc4: 2dd31e63 bne t1,t4,80002ea0 + +0000000080002bc8 : + 80002bc8: 00000213 li tp,0 + 80002bcc: 00e00093 li ra,14 + 80002bd0: 00b00113 li sp,11 + 80002bd4: 02208f3b mulw t5,ra,sp + 80002bd8: 00000013 nop + 80002bdc: 000f0313 mv t1,t5 + 80002be0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002be4: 00200293 li t0,2 + 80002be8: fe5212e3 bne tp,t0,80002bcc + 80002bec: 09a00e93 li t4,154 + 80002bf0: 00c00193 li gp,12 + 80002bf4: 2bd31663 bne t1,t4,80002ea0 + +0000000080002bf8 : + 80002bf8: 00000213 li tp,0 + 80002bfc: 00f00093 li ra,15 + 80002c00: 00b00113 li sp,11 + 80002c04: 02208f3b mulw t5,ra,sp + 80002c08: 00000013 nop + 80002c0c: 00000013 nop + 80002c10: 000f0313 mv t1,t5 + 80002c14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c18: 00200293 li t0,2 + 80002c1c: fe5210e3 bne tp,t0,80002bfc + 80002c20: 0a500e93 li t4,165 + 80002c24: 00d00193 li gp,13 + 80002c28: 27d31c63 bne t1,t4,80002ea0 + +0000000080002c2c : + 80002c2c: 00000213 li tp,0 + 80002c30: 00d00093 li ra,13 + 80002c34: 00b00113 li sp,11 + 80002c38: 02208f3b mulw t5,ra,sp + 80002c3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c40: 00200293 li t0,2 + 80002c44: fe5216e3 bne tp,t0,80002c30 + 80002c48: 08f00e93 li t4,143 + 80002c4c: 00e00193 li gp,14 + 80002c50: 25df1863 bne t5,t4,80002ea0 + +0000000080002c54 : + 80002c54: 00000213 li tp,0 + 80002c58: 00e00093 li ra,14 + 80002c5c: 00b00113 li sp,11 + 80002c60: 00000013 nop + 80002c64: 02208f3b mulw t5,ra,sp + 80002c68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c6c: 00200293 li t0,2 + 80002c70: fe5214e3 bne tp,t0,80002c58 + 80002c74: 09a00e93 li t4,154 + 80002c78: 00f00193 li gp,15 + 80002c7c: 23df1263 bne t5,t4,80002ea0 + +0000000080002c80 : + 80002c80: 00000213 li tp,0 + 80002c84: 00f00093 li ra,15 + 80002c88: 00b00113 li sp,11 + 80002c8c: 00000013 nop + 80002c90: 00000013 nop + 80002c94: 02208f3b mulw t5,ra,sp + 80002c98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002c9c: 00200293 li t0,2 + 80002ca0: fe5212e3 bne tp,t0,80002c84 + 80002ca4: 0a500e93 li t4,165 + 80002ca8: 01000193 li gp,16 + 80002cac: 1fdf1a63 bne t5,t4,80002ea0 + +0000000080002cb0 : + 80002cb0: 00000213 li tp,0 + 80002cb4: 00d00093 li ra,13 + 80002cb8: 00000013 nop + 80002cbc: 00b00113 li sp,11 + 80002cc0: 02208f3b mulw t5,ra,sp + 80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cc8: 00200293 li t0,2 + 80002ccc: fe5214e3 bne tp,t0,80002cb4 + 80002cd0: 08f00e93 li t4,143 + 80002cd4: 01100193 li gp,17 + 80002cd8: 1ddf1463 bne t5,t4,80002ea0 + +0000000080002cdc : + 80002cdc: 00000213 li tp,0 + 80002ce0: 00e00093 li ra,14 + 80002ce4: 00000013 nop + 80002ce8: 00b00113 li sp,11 + 80002cec: 00000013 nop + 80002cf0: 02208f3b mulw t5,ra,sp + 80002cf4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002cf8: 00200293 li t0,2 + 80002cfc: fe5212e3 bne tp,t0,80002ce0 + 80002d00: 09a00e93 li t4,154 + 80002d04: 01200193 li gp,18 + 80002d08: 19df1c63 bne t5,t4,80002ea0 + +0000000080002d0c : + 80002d0c: 00000213 li tp,0 + 80002d10: 00f00093 li ra,15 + 80002d14: 00000013 nop + 80002d18: 00000013 nop + 80002d1c: 00b00113 li sp,11 + 80002d20: 02208f3b mulw t5,ra,sp + 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d28: 00200293 li t0,2 + 80002d2c: fe5212e3 bne tp,t0,80002d10 + 80002d30: 0a500e93 li t4,165 + 80002d34: 01300193 li gp,19 + 80002d38: 17df1463 bne t5,t4,80002ea0 + +0000000080002d3c : + 80002d3c: 00000213 li tp,0 + 80002d40: 00b00113 li sp,11 + 80002d44: 00d00093 li ra,13 + 80002d48: 02208f3b mulw t5,ra,sp + 80002d4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d50: 00200293 li t0,2 + 80002d54: fe5216e3 bne tp,t0,80002d40 + 80002d58: 08f00e93 li t4,143 + 80002d5c: 01400193 li gp,20 + 80002d60: 15df1063 bne t5,t4,80002ea0 + +0000000080002d64 : + 80002d64: 00000213 li tp,0 + 80002d68: 00b00113 li sp,11 + 80002d6c: 00e00093 li ra,14 + 80002d70: 00000013 nop + 80002d74: 02208f3b mulw t5,ra,sp + 80002d78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002d7c: 00200293 li t0,2 + 80002d80: fe5214e3 bne tp,t0,80002d68 + 80002d84: 09a00e93 li t4,154 + 80002d88: 01500193 li gp,21 + 80002d8c: 11df1a63 bne t5,t4,80002ea0 + +0000000080002d90 : + 80002d90: 00000213 li tp,0 + 80002d94: 00b00113 li sp,11 + 80002d98: 00f00093 li ra,15 + 80002d9c: 00000013 nop + 80002da0: 00000013 nop + 80002da4: 02208f3b mulw t5,ra,sp + 80002da8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dac: 00200293 li t0,2 + 80002db0: fe5212e3 bne tp,t0,80002d94 + 80002db4: 0a500e93 li t4,165 + 80002db8: 01600193 li gp,22 + 80002dbc: 0fdf1263 bne t5,t4,80002ea0 + +0000000080002dc0 : + 80002dc0: 00000213 li tp,0 + 80002dc4: 00b00113 li sp,11 + 80002dc8: 00000013 nop + 80002dcc: 00d00093 li ra,13 + 80002dd0: 02208f3b mulw t5,ra,sp + 80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002dd8: 00200293 li t0,2 + 80002ddc: fe5214e3 bne tp,t0,80002dc4 + 80002de0: 08f00e93 li t4,143 + 80002de4: 01700193 li gp,23 + 80002de8: 0bdf1c63 bne t5,t4,80002ea0 + +0000000080002dec : + 80002dec: 00000213 li tp,0 + 80002df0: 00b00113 li sp,11 + 80002df4: 00000013 nop + 80002df8: 00e00093 li ra,14 + 80002dfc: 00000013 nop + 80002e00: 02208f3b mulw t5,ra,sp + 80002e04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e08: 00200293 li t0,2 + 80002e0c: fe5212e3 bne tp,t0,80002df0 + 80002e10: 09a00e93 li t4,154 + 80002e14: 01800193 li gp,24 + 80002e18: 09df1463 bne t5,t4,80002ea0 + +0000000080002e1c : + 80002e1c: 00000213 li tp,0 + 80002e20: 00b00113 li sp,11 + 80002e24: 00000013 nop + 80002e28: 00000013 nop + 80002e2c: 00f00093 li ra,15 + 80002e30: 02208f3b mulw t5,ra,sp + 80002e34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff> + 80002e38: 00200293 li t0,2 + 80002e3c: fe5212e3 bne tp,t0,80002e20 + 80002e40: 0a500e93 li t4,165 + 80002e44: 01900193 li gp,25 + 80002e48: 05df1c63 bne t5,t4,80002ea0 + +0000000080002e4c : + 80002e4c: 01f00093 li ra,31 + 80002e50: 0210013b mulw sp,zero,ra + 80002e54: 00000e93 li t4,0 + 80002e58: 01a00193 li gp,26 + 80002e5c: 05d11263 bne sp,t4,80002ea0 + +0000000080002e60 : + 80002e60: 02000093 li ra,32 + 80002e64: 0200813b mulw sp,ra,zero + 80002e68: 00000e93 li t4,0 + 80002e6c: 01b00193 li gp,27 + 80002e70: 03d11863 bne sp,t4,80002ea0 + +0000000080002e74 : + 80002e74: 020000bb mulw ra,zero,zero + 80002e78: 00000e93 li t4,0 + 80002e7c: 01c00193 li gp,28 + 80002e80: 03d09063 bne ra,t4,80002ea0 + +0000000080002e84 : + 80002e84: 02100093 li ra,33 + 80002e88: 02200113 li sp,34 + 80002e8c: 0220803b mulw zero,ra,sp + 80002e90: 00000e93 li t4,0 + 80002e94: 01d00193 li gp,29 + 80002e98: 01d01463 bne zero,t4,80002ea0 + 80002e9c: 00301a63 bne zero,gp,80002eb0 + +0000000080002ea0 : + 80002ea0: 00119513 slli a0,gp,0x1 + 80002ea4: 00050063 beqz a0,80002ea4 + 80002ea8: 00156513 ori a0,a0,1 + 80002eac: 00000073 ecall + +0000000080002eb0 : + 80002eb0: 00100513 li a0,1 + 80002eb4: 00000073 ecall + 80002eb8: c0001073 unimp diff --git a/Tests/isa/rv64um-v-rem b/Tests/isa/rv64um-v-rem new file mode 100644 index 0000000..0317ee1 Binary files /dev/null and b/Tests/isa/rv64um-v-rem differ diff --git a/Tests/isa/rv64um-v-rem.dump b/Tests/isa/rv64um-v-rem.dump new file mode 100644 index 0000000..8c29a0c --- /dev/null +++ b/Tests/isa/rv64um-v-rem.dump @@ -0,0 +1,915 @@ + +rv64um-v-rem: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 77868693 addi a3,a3,1912 # 80002bd0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7ac60613 addi a2,a2,1964 # 80002c60 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 77460613 addi a2,a2,1908 # 80002c78 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6c468693 addi a3,a3,1732 # 80002c18 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6e068693 addi a3,a3,1760 # 80002d50 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 66060613 addi a2,a2,1632 # 80002d28 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 59468693 addi a3,a3,1428 # 80002d80 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4b468693 addi a3,a3,1204 # 80002cf0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 44468693 addi a3,a3,1092 # 80002cb8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 03100793 li a5,49 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 03a277b7 lui a5,0x3a27 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: ea378793 addi a5,a5,-349 # 3a26ea3 <_start-0x7c5d915d> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220ef33 rem t5,ra,sp + 80002ad4: 00200e93 li t4,2 + 80002ad8: 00200193 li gp,2 + 80002adc: 0ddf1c63 bne t5,t4,80002bb4 + +0000000080002ae0 : + 80002ae0: fec00093 li ra,-20 + 80002ae4: 00600113 li sp,6 + 80002ae8: 0220ef33 rem t5,ra,sp + 80002aec: ffe00e93 li t4,-2 + 80002af0: 00300193 li gp,3 + 80002af4: 0ddf1063 bne t5,t4,80002bb4 + +0000000080002af8 : + 80002af8: 01400093 li ra,20 + 80002afc: ffa00113 li sp,-6 + 80002b00: 0220ef33 rem t5,ra,sp + 80002b04: 00200e93 li t4,2 + 80002b08: 00400193 li gp,4 + 80002b0c: 0bdf1463 bne t5,t4,80002bb4 + +0000000080002b10 : + 80002b10: fec00093 li ra,-20 + 80002b14: ffa00113 li sp,-6 + 80002b18: 0220ef33 rem t5,ra,sp + 80002b1c: ffe00e93 li t4,-2 + 80002b20: 00500193 li gp,5 + 80002b24: 09df1863 bne t5,t4,80002bb4 + +0000000080002b28 : + 80002b28: fff0009b addiw ra,zero,-1 + 80002b2c: 03f09093 slli ra,ra,0x3f + 80002b30: 00100113 li sp,1 + 80002b34: 0220ef33 rem t5,ra,sp + 80002b38: 00000e93 li t4,0 + 80002b3c: 00600193 li gp,6 + 80002b40: 07df1a63 bne t5,t4,80002bb4 + +0000000080002b44 : + 80002b44: fff0009b addiw ra,zero,-1 + 80002b48: 03f09093 slli ra,ra,0x3f + 80002b4c: fff00113 li sp,-1 + 80002b50: 0220ef33 rem t5,ra,sp + 80002b54: 00000e93 li t4,0 + 80002b58: 00700193 li gp,7 + 80002b5c: 05df1c63 bne t5,t4,80002bb4 + +0000000080002b60 : + 80002b60: fff0009b addiw ra,zero,-1 + 80002b64: 03f09093 slli ra,ra,0x3f + 80002b68: 00000113 li sp,0 + 80002b6c: 0220ef33 rem t5,ra,sp + 80002b70: fff00e9b addiw t4,zero,-1 + 80002b74: 03fe9e93 slli t4,t4,0x3f + 80002b78: 00800193 li gp,8 + 80002b7c: 03df1c63 bne t5,t4,80002bb4 + +0000000080002b80 : + 80002b80: 00100093 li ra,1 + 80002b84: 00000113 li sp,0 + 80002b88: 0220ef33 rem t5,ra,sp + 80002b8c: 00100e93 li t4,1 + 80002b90: 00900193 li gp,9 + 80002b94: 03df1063 bne t5,t4,80002bb4 + +0000000080002b98 : + 80002b98: 00000093 li ra,0 + 80002b9c: 00000113 li sp,0 + 80002ba0: 0220ef33 rem t5,ra,sp + 80002ba4: 00000e93 li t4,0 + 80002ba8: 00a00193 li gp,10 + 80002bac: 01df1463 bne t5,t4,80002bb4 + 80002bb0: 00301a63 bne zero,gp,80002bc4 + +0000000080002bb4 : + 80002bb4: 00119513 slli a0,gp,0x1 + 80002bb8: 00050063 beqz a0,80002bb8 + 80002bbc: 00156513 ori a0,a0,1 + 80002bc0: 00000073 ecall + +0000000080002bc4 : + 80002bc4: 00100513 li a0,1 + 80002bc8: 00000073 ecall + 80002bcc: c0001073 unimp diff --git a/Tests/isa/rv64um-v-remu b/Tests/isa/rv64um-v-remu new file mode 100644 index 0000000..5fdcfbe Binary files /dev/null and b/Tests/isa/rv64um-v-remu differ diff --git a/Tests/isa/rv64um-v-remu.dump b/Tests/isa/rv64um-v-remu.dump new file mode 100644 index 0000000..01d50ac --- /dev/null +++ b/Tests/isa/rv64um-v-remu.dump @@ -0,0 +1,916 @@ + +rv64um-v-remu: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 78068693 addi a3,a3,1920 # 80002bd8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7b460613 addi a2,a2,1972 # 80002c68 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 77c60613 addi a2,a2,1916 # 80002c80 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6cc68693 addi a3,a3,1740 # 80002c20 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6e868693 addi a3,a3,1768 # 80002d58 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 66860613 addi a2,a2,1640 # 80002d30 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 59c68693 addi a3,a3,1436 # 80002d88 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4bc68693 addi a3,a3,1212 # 80002cf8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 44c68693 addi a3,a3,1100 # 80002cc0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 03e00793 li a5,62 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 05d337b7 lui a5,0x5d33 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 2c578793 addi a5,a5,709 # 5d332c5 <_start-0x7a2ccd3b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220ff33 remu t5,ra,sp + 80002ad4: 00200e93 li t4,2 + 80002ad8: 00200193 li gp,2 + 80002adc: 0ddf1e63 bne t5,t4,80002bb8 + +0000000080002ae0 : + 80002ae0: fec00093 li ra,-20 + 80002ae4: 00600113 li sp,6 + 80002ae8: 0220ff33 remu t5,ra,sp + 80002aec: 00200e93 li t4,2 + 80002af0: 00300193 li gp,3 + 80002af4: 0ddf1263 bne t5,t4,80002bb8 + +0000000080002af8 : + 80002af8: 01400093 li ra,20 + 80002afc: ffa00113 li sp,-6 + 80002b00: 0220ff33 remu t5,ra,sp + 80002b04: 01400e93 li t4,20 + 80002b08: 00400193 li gp,4 + 80002b0c: 0bdf1663 bne t5,t4,80002bb8 + +0000000080002b10 : + 80002b10: fec00093 li ra,-20 + 80002b14: ffa00113 li sp,-6 + 80002b18: 0220ff33 remu t5,ra,sp + 80002b1c: fec00e93 li t4,-20 + 80002b20: 00500193 li gp,5 + 80002b24: 09df1a63 bne t5,t4,80002bb8 + +0000000080002b28 : + 80002b28: fff0009b addiw ra,zero,-1 + 80002b2c: 03f09093 slli ra,ra,0x3f + 80002b30: 00100113 li sp,1 + 80002b34: 0220ff33 remu t5,ra,sp + 80002b38: 00000e93 li t4,0 + 80002b3c: 00600193 li gp,6 + 80002b40: 07df1c63 bne t5,t4,80002bb8 + +0000000080002b44 : + 80002b44: fff0009b addiw ra,zero,-1 + 80002b48: 03f09093 slli ra,ra,0x3f + 80002b4c: fff00113 li sp,-1 + 80002b50: 0220ff33 remu t5,ra,sp + 80002b54: fff00e9b addiw t4,zero,-1 + 80002b58: 03fe9e93 slli t4,t4,0x3f + 80002b5c: 00700193 li gp,7 + 80002b60: 05df1c63 bne t5,t4,80002bb8 + +0000000080002b64 : + 80002b64: fff0009b addiw ra,zero,-1 + 80002b68: 03f09093 slli ra,ra,0x3f + 80002b6c: 00000113 li sp,0 + 80002b70: 0220ff33 remu t5,ra,sp + 80002b74: fff00e9b addiw t4,zero,-1 + 80002b78: 03fe9e93 slli t4,t4,0x3f + 80002b7c: 00800193 li gp,8 + 80002b80: 03df1c63 bne t5,t4,80002bb8 + +0000000080002b84 : + 80002b84: 00100093 li ra,1 + 80002b88: 00000113 li sp,0 + 80002b8c: 0220ff33 remu t5,ra,sp + 80002b90: 00100e93 li t4,1 + 80002b94: 00900193 li gp,9 + 80002b98: 03df1063 bne t5,t4,80002bb8 + +0000000080002b9c : + 80002b9c: 00000093 li ra,0 + 80002ba0: 00000113 li sp,0 + 80002ba4: 0220ff33 remu t5,ra,sp + 80002ba8: 00000e93 li t4,0 + 80002bac: 00a00193 li gp,10 + 80002bb0: 01df1463 bne t5,t4,80002bb8 + 80002bb4: 00301a63 bne zero,gp,80002bc8 + +0000000080002bb8 : + 80002bb8: 00119513 slli a0,gp,0x1 + 80002bbc: 00050063 beqz a0,80002bbc + 80002bc0: 00156513 ori a0,a0,1 + 80002bc4: 00000073 ecall + +0000000080002bc8 : + 80002bc8: 00100513 li a0,1 + 80002bcc: 00000073 ecall + 80002bd0: c0001073 unimp diff --git a/Tests/isa/rv64um-v-remuw b/Tests/isa/rv64um-v-remuw new file mode 100644 index 0000000..fffc39d Binary files /dev/null and b/Tests/isa/rv64um-v-remuw differ diff --git a/Tests/isa/rv64um-v-remuw.dump b/Tests/isa/rv64um-v-remuw.dump new file mode 100644 index 0000000..f0688a4 --- /dev/null +++ b/Tests/isa/rv64um-v-remuw.dump @@ -0,0 +1,911 @@ + +rv64um-v-remuw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 76868693 addi a3,a3,1896 # 80002bc0 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 79c60613 addi a2,a2,1948 # 80002c50 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 76460613 addi a2,a2,1892 # 80002c68 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6b468693 addi a3,a3,1716 # 80002c08 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6d068693 addi a3,a3,1744 # 80002d40 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 65060613 addi a2,a2,1616 # 80002d18 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 58468693 addi a3,a3,1412 # 80002d70 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4a468693 addi a3,a3,1188 # 80002ce0 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 43468693 addi a3,a3,1076 # 80002ca8 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 01700793 li a5,23 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 01bd87b7 lui a5,0x1bd8 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 7ed78793 addi a5,a5,2029 # 1bd87ed <_start-0x7e427813> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220ff3b remuw t5,ra,sp + 80002ad4: 00200e93 li t4,2 + 80002ad8: 00200193 li gp,2 + 80002adc: 0ddf1463 bne t5,t4,80002ba4 + +0000000080002ae0 : + 80002ae0: fec00093 li ra,-20 + 80002ae4: 00600113 li sp,6 + 80002ae8: 0220ff3b remuw t5,ra,sp + 80002aec: 00200e93 li t4,2 + 80002af0: 00300193 li gp,3 + 80002af4: 0bdf1863 bne t5,t4,80002ba4 + +0000000080002af8 : + 80002af8: 01400093 li ra,20 + 80002afc: ffa00113 li sp,-6 + 80002b00: 0220ff3b remuw t5,ra,sp + 80002b04: 01400e93 li t4,20 + 80002b08: 00400193 li gp,4 + 80002b0c: 09df1c63 bne t5,t4,80002ba4 + +0000000080002b10 : + 80002b10: fec00093 li ra,-20 + 80002b14: ffa00113 li sp,-6 + 80002b18: 0220ff3b remuw t5,ra,sp + 80002b1c: fec00e93 li t4,-20 + 80002b20: 00500193 li gp,5 + 80002b24: 09df1063 bne t5,t4,80002ba4 + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00100113 li sp,1 + 80002b30: 0220ff3b remuw t5,ra,sp + 80002b34: 00000e93 li t4,0 + 80002b38: 00600193 li gp,6 + 80002b3c: 07df1463 bne t5,t4,80002ba4 + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: fff00113 li sp,-1 + 80002b48: 0220ff3b remuw t5,ra,sp + 80002b4c: 80000eb7 lui t4,0x80000 + 80002b50: 00700193 li gp,7 + 80002b54: 05df1863 bne t5,t4,80002ba4 + +0000000080002b58 : + 80002b58: 800000b7 lui ra,0x80000 + 80002b5c: 00000113 li sp,0 + 80002b60: 0220ff3b remuw t5,ra,sp + 80002b64: 80000eb7 lui t4,0x80000 + 80002b68: 00800193 li gp,8 + 80002b6c: 03df1c63 bne t5,t4,80002ba4 + +0000000080002b70 : + 80002b70: 00100093 li ra,1 + 80002b74: 00000113 li sp,0 + 80002b78: 0220ff3b remuw t5,ra,sp + 80002b7c: 00100e93 li t4,1 + 80002b80: 00900193 li gp,9 + 80002b84: 03df1063 bne t5,t4,80002ba4 + +0000000080002b88 : + 80002b88: 00000093 li ra,0 + 80002b8c: 00000113 li sp,0 + 80002b90: 0220ff3b remuw t5,ra,sp + 80002b94: 00000e93 li t4,0 + 80002b98: 00a00193 li gp,10 + 80002b9c: 01df1463 bne t5,t4,80002ba4 + 80002ba0: 00301a63 bne zero,gp,80002bb4 + +0000000080002ba4 : + 80002ba4: 00119513 slli a0,gp,0x1 + 80002ba8: 00050063 beqz a0,80002ba8 + 80002bac: 00156513 ori a0,a0,1 + 80002bb0: 00000073 ecall + +0000000080002bb4 : + 80002bb4: 00100513 li a0,1 + 80002bb8: 00000073 ecall + 80002bbc: c0001073 unimp diff --git a/Tests/isa/rv64um-v-remw b/Tests/isa/rv64um-v-remw new file mode 100644 index 0000000..4e11d39 Binary files /dev/null and b/Tests/isa/rv64um-v-remw differ diff --git a/Tests/isa/rv64um-v-remw.dump b/Tests/isa/rv64um-v-remw.dump new file mode 100644 index 0000000..659d882 --- /dev/null +++ b/Tests/isa/rv64um-v-remw.dump @@ -0,0 +1,919 @@ + +rv64um-v-remw: file format elf64-littleriscv + + +Disassembly of section .text.init: + +0000000080000000 <_start>: + 80000000: 00c0006f j 8000000c + +0000000080000004 : + 80000004: 2580206f j 8000225c + +0000000080000008 : + 80000008: 2540206f j 8000225c + +000000008000000c : + 8000000c: 00000297 auipc t0,0x0 + 80000010: ffc28293 addi t0,t0,-4 # 80000008 + 80000014: 30529073 csrw mtvec,t0 + 80000018: 00008117 auipc sp,0x8 + 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0> + 80000020: f14022f3 csrr t0,mhartid + 80000024: 00c29293 slli t0,t0,0xc + 80000028: 00510133 add sp,sp,t0 + 8000002c: 34011073 csrw mscratch,sp + 80000030: 00003517 auipc a0,0x3 + 80000034: a9850513 addi a0,a0,-1384 # 80002ac8 + 80000038: 09d0206f j 800028d4 + +000000008000003c : + 8000003c: 10853283 ld t0,264(a0) + 80000040: 14129073 csrw sepc,t0 + 80000044: 00853083 ld ra,8(a0) + 80000048: 01053103 ld sp,16(a0) + 8000004c: 01853183 ld gp,24(a0) + 80000050: 02053203 ld tp,32(a0) + 80000054: 02853283 ld t0,40(a0) + 80000058: 03053303 ld t1,48(a0) + 8000005c: 03853383 ld t2,56(a0) + 80000060: 04053403 ld s0,64(a0) + 80000064: 04853483 ld s1,72(a0) + 80000068: 05853583 ld a1,88(a0) + 8000006c: 06053603 ld a2,96(a0) + 80000070: 06853683 ld a3,104(a0) + 80000074: 07053703 ld a4,112(a0) + 80000078: 07853783 ld a5,120(a0) + 8000007c: 08053803 ld a6,128(a0) + 80000080: 08853883 ld a7,136(a0) + 80000084: 09053903 ld s2,144(a0) + 80000088: 09853983 ld s3,152(a0) + 8000008c: 0a053a03 ld s4,160(a0) + 80000090: 0a853a83 ld s5,168(a0) + 80000094: 0b053b03 ld s6,176(a0) + 80000098: 0b853b83 ld s7,184(a0) + 8000009c: 0c053c03 ld s8,192(a0) + 800000a0: 0c853c83 ld s9,200(a0) + 800000a4: 0d053d03 ld s10,208(a0) + 800000a8: 0d853d83 ld s11,216(a0) + 800000ac: 0e053e03 ld t3,224(a0) + 800000b0: 0e853e83 ld t4,232(a0) + 800000b4: 0f053f03 ld t5,240(a0) + 800000b8: 0f853f83 ld t6,248(a0) + 800000bc: 05053503 ld a0,80(a0) + 800000c0: 10200073 sret + +00000000800000c4 : + 800000c4: 14011173 csrrw sp,sscratch,sp + 800000c8: 00113423 sd ra,8(sp) + 800000cc: 00313c23 sd gp,24(sp) + 800000d0: 02413023 sd tp,32(sp) + 800000d4: 02513423 sd t0,40(sp) + 800000d8: 02613823 sd t1,48(sp) + 800000dc: 02713c23 sd t2,56(sp) + 800000e0: 04813023 sd s0,64(sp) + 800000e4: 04913423 sd s1,72(sp) + 800000e8: 04a13823 sd a0,80(sp) + 800000ec: 04b13c23 sd a1,88(sp) + 800000f0: 06c13023 sd a2,96(sp) + 800000f4: 06d13423 sd a3,104(sp) + 800000f8: 06e13823 sd a4,112(sp) + 800000fc: 06f13c23 sd a5,120(sp) + 80000100: 09013023 sd a6,128(sp) + 80000104: 09113423 sd a7,136(sp) + 80000108: 09213823 sd s2,144(sp) + 8000010c: 09313c23 sd s3,152(sp) + 80000110: 0b413023 sd s4,160(sp) + 80000114: 0b513423 sd s5,168(sp) + 80000118: 0b613823 sd s6,176(sp) + 8000011c: 0b713c23 sd s7,184(sp) + 80000120: 0d813023 sd s8,192(sp) + 80000124: 0d913423 sd s9,200(sp) + 80000128: 0da13823 sd s10,208(sp) + 8000012c: 0db13c23 sd s11,216(sp) + 80000130: 0fc13023 sd t3,224(sp) + 80000134: 0fd13423 sd t4,232(sp) + 80000138: 0fe13823 sd t5,240(sp) + 8000013c: 0ff13c23 sd t6,248(sp) + 80000140: 140112f3 csrrw t0,sscratch,sp + 80000144: 00513823 sd t0,16(sp) + 80000148: 100022f3 csrr t0,sstatus + 8000014c: 10513023 sd t0,256(sp) + 80000150: 141022f3 csrr t0,sepc + 80000154: 10513423 sd t0,264(sp) + 80000158: 143022f3 csrr t0,sbadaddr + 8000015c: 10513823 sd t0,272(sp) + 80000160: 142022f3 csrr t0,scause + 80000164: 10513c23 sd t0,280(sp) + 80000168: 00010513 mv a0,sp + 8000016c: 4300206f j 8000259c + +Disassembly of section .text: + +0000000080002000 : + 80002000: 00c5e7b3 or a5,a1,a2 + 80002004: 00f567b3 or a5,a0,a5 + 80002008: 0077f793 andi a5,a5,7 + 8000200c: 00c506b3 add a3,a0,a2 + 80002010: 02078463 beqz a5,80002038 + 80002014: 00c58633 add a2,a1,a2 + 80002018: 00050793 mv a5,a0 + 8000201c: 02d57e63 bleu a3,a0,80002058 + 80002020: 00158593 addi a1,a1,1 + 80002024: fff5c703 lbu a4,-1(a1) + 80002028: 00178793 addi a5,a5,1 + 8000202c: fee78fa3 sb a4,-1(a5) + 80002030: feb618e3 bne a2,a1,80002020 + 80002034: 00008067 ret + 80002038: fed57ee3 bleu a3,a0,80002034 + 8000203c: 00050793 mv a5,a0 + 80002040: 00858593 addi a1,a1,8 + 80002044: ff85b703 ld a4,-8(a1) + 80002048: 00878793 addi a5,a5,8 + 8000204c: fee7bc23 sd a4,-8(a5) + 80002050: fed7e8e3 bltu a5,a3,80002040 + 80002054: 00008067 ret + 80002058: 00008067 ret + +000000008000205c : + 8000205c: 00c567b3 or a5,a0,a2 + 80002060: 0077f793 andi a5,a5,7 + 80002064: 00c50633 add a2,a0,a2 + 80002068: 0ff5f593 andi a1,a1,255 + 8000206c: 00078e63 beqz a5,80002088 + 80002070: 00050793 mv a5,a0 + 80002074: 04c57263 bleu a2,a0,800020b8 + 80002078: 00178793 addi a5,a5,1 + 8000207c: feb78fa3 sb a1,-1(a5) + 80002080: fef61ce3 bne a2,a5,80002078 + 80002084: 00008067 ret + 80002088: 00859793 slli a5,a1,0x8 + 8000208c: 00b7e5b3 or a1,a5,a1 + 80002090: 01059793 slli a5,a1,0x10 + 80002094: 00b7e7b3 or a5,a5,a1 + 80002098: 02079593 slli a1,a5,0x20 + 8000209c: 00f5e5b3 or a1,a1,a5 + 800020a0: fec572e3 bleu a2,a0,80002084 + 800020a4: 00050793 mv a5,a0 + 800020a8: 00878793 addi a5,a5,8 + 800020ac: feb7bc23 sd a1,-8(a5) + 800020b0: fec7ece3 bltu a5,a2,800020a8 + 800020b4: 00008067 ret + 800020b8: 00008067 ret + +00000000800020bc : + 800020bc: 00054783 lbu a5,0(a0) + 800020c0: 00050713 mv a4,a0 + 800020c4: 00078c63 beqz a5,800020dc + 800020c8: 00150513 addi a0,a0,1 + 800020cc: 00054783 lbu a5,0(a0) + 800020d0: fe079ce3 bnez a5,800020c8 + 800020d4: 40e50533 sub a0,a0,a4 + 800020d8: 00008067 ret + 800020dc: 00000513 li a0,0 + 800020e0: 00008067 ret + +00000000800020e4 : + 800020e4: 00150513 addi a0,a0,1 + 800020e8: fff54783 lbu a5,-1(a0) + 800020ec: 00158593 addi a1,a1,1 + 800020f0: fff5c703 lbu a4,-1(a1) + 800020f4: 00078a63 beqz a5,80002108 + 800020f8: fee786e3 beq a5,a4,800020e4 + 800020fc: 0007851b sext.w a0,a5 + 80002100: 40e5053b subw a0,a0,a4 + 80002104: 00008067 ret + 80002108: 00000513 li a0,0 + 8000210c: ff5ff06f j 80002100 + +0000000080002110 : + 80002110: 00b567b3 or a5,a0,a1 + 80002114: 0077f793 andi a5,a5,7 + 80002118: 04079263 bnez a5,8000215c + 8000211c: ff867693 andi a3,a2,-8 + 80002120: 00d506b3 add a3,a0,a3 + 80002124: 00050813 mv a6,a0 + 80002128: 02d57a63 bleu a3,a0,8000215c + 8000212c: 00053703 ld a4,0(a0) + 80002130: 0005b783 ld a5,0(a1) + 80002134: 00f70a63 beq a4,a5,80002148 + 80002138: 0240006f j 8000215c + 8000213c: 00053703 ld a4,0(a0) + 80002140: 0005b783 ld a5,0(a1) + 80002144: 00f71863 bne a4,a5,80002154 + 80002148: 00850513 addi a0,a0,8 + 8000214c: 00858593 addi a1,a1,8 + 80002150: fed566e3 bltu a0,a3,8000213c + 80002154: 41050833 sub a6,a0,a6 + 80002158: 41060633 sub a2,a2,a6 + 8000215c: 00c58633 add a2,a1,a2 + 80002160: 0140006f j 80002174 + 80002164: 00158593 addi a1,a1,1 + 80002168: fff54783 lbu a5,-1(a0) + 8000216c: fff5c703 lbu a4,-1(a1) + 80002170: 00e79a63 bne a5,a4,80002184 + 80002174: 00150513 addi a0,a0,1 + 80002178: fec596e3 bne a1,a2,80002164 + 8000217c: 00000513 li a0,0 + 80002180: 00008067 ret + 80002184: 40e7853b subw a0,a5,a4 + 80002188: 00008067 ret + +000000008000218c : + 8000218c: 00050793 mv a5,a0 + 80002190: 00158593 addi a1,a1,1 + 80002194: fff5c703 lbu a4,-1(a1) + 80002198: 00178793 addi a5,a5,1 + 8000219c: fee78fa3 sb a4,-1(a5) + 800021a0: fe0718e3 bnez a4,80002190 + 800021a4: 00008067 ret + +00000000800021a8 : + 800021a8: 00054783 lbu a5,0(a0) + 800021ac: 02000713 li a4,32 + 800021b0: 00e79863 bne a5,a4,800021c0 + 800021b4: 00150513 addi a0,a0,1 + 800021b8: 00054783 lbu a5,0(a0) + 800021bc: fee78ce3 beq a5,a4,800021b4 + 800021c0: fd57871b addiw a4,a5,-43 + 800021c4: 0fd77713 andi a4,a4,253 + 800021c8: 04070263 beqz a4,8000220c + 800021cc: 00054683 lbu a3,0(a0) + 800021d0: 00050793 mv a5,a0 + 800021d4: 00000613 li a2,0 + 800021d8: 04068863 beqz a3,80002228 + 800021dc: 00000513 li a0,0 + 800021e0: 00178793 addi a5,a5,1 + 800021e4: fd06859b addiw a1,a3,-48 + 800021e8: 00251713 slli a4,a0,0x2 + 800021ec: 0007c683 lbu a3,0(a5) + 800021f0: 00a70533 add a0,a4,a0 + 800021f4: 00151513 slli a0,a0,0x1 + 800021f8: 00a58533 add a0,a1,a0 + 800021fc: fe0692e3 bnez a3,800021e0 + 80002200: 00060463 beqz a2,80002208 + 80002204: 40a00533 neg a0,a0 + 80002208: 00008067 ret + 8000220c: 00154683 lbu a3,1(a0) + 80002210: fd378793 addi a5,a5,-45 + 80002214: 0017b613 seqz a2,a5 + 80002218: 00150793 addi a5,a0,1 + 8000221c: fc0690e3 bnez a3,800021dc + 80002220: 00000513 li a0,0 + 80002224: fddff06f j 80002200 + 80002228: 00000513 li a0,0 + 8000222c: 00008067 ret + +0000000080002230 : + 80002230: fffff797 auipc a5,0xfffff + 80002234: dd078793 addi a5,a5,-560 # 80001000 + 80002238: 0007b703 ld a4,0(a5) + 8000223c: 00070a63 beqz a4,80002250 + 80002240: fffff717 auipc a4,0xfffff + 80002244: e0073023 sd zero,-512(a4) # 80001040 + 80002248: 0007b703 ld a4,0(a5) + 8000224c: fe071ae3 bnez a4,80002240 + 80002250: fffff797 auipc a5,0xfffff + 80002254: daa7b823 sd a0,-592(a5) # 80001000 + 80002258: 0000006f j 80002258 + +000000008000225c : + 8000225c: ff010113 addi sp,sp,-16 + 80002260: 34900513 li a0,841 + 80002264: 00113423 sd ra,8(sp) + 80002268: fc9ff0ef jal ra,80002230 + +000000008000226c : + 8000226c: fe010113 addi sp,sp,-32 + 80002270: 01710713 addi a4,sp,23 + 80002274: 00710813 addi a6,sp,7 + 80002278: 00900593 li a1,9 + 8000227c: 00f57793 andi a5,a0,15 + 80002280: 03000613 li a2,48 + 80002284: 0ff7f693 andi a3,a5,255 + 80002288: 00f5f463 bleu a5,a1,80002290 + 8000228c: 05700613 li a2,87 + 80002290: 00c687bb addw a5,a3,a2 + 80002294: 00f70023 sb a5,0(a4) + 80002298: fff70713 addi a4,a4,-1 + 8000229c: 00455513 srli a0,a0,0x4 + 800022a0: fd071ee3 bne a4,a6,8000227c + 800022a4: 00814783 lbu a5,8(sp) + 800022a8: 00010c23 sb zero,24(sp) + 800022ac: 04078463 beqz a5,800022f4 + 800022b0: 10100513 li a0,257 + 800022b4: 00810693 addi a3,sp,8 + 800022b8: fffff717 auipc a4,0xfffff + 800022bc: d4870713 addi a4,a4,-696 # 80001000 + 800022c0: 03051513 slli a0,a0,0x30 + 800022c4: 00073583 ld a1,0(a4) + 800022c8: 00168693 addi a3,a3,1 + 800022cc: 00a7e633 or a2,a5,a0 + 800022d0: 00058a63 beqz a1,800022e4 + 800022d4: fffff797 auipc a5,0xfffff + 800022d8: d607b623 sd zero,-660(a5) # 80001040 + 800022dc: 00073783 ld a5,0(a4) + 800022e0: fe079ae3 bnez a5,800022d4 + 800022e4: 0006c783 lbu a5,0(a3) + 800022e8: fffff597 auipc a1,0xfffff + 800022ec: d0c5bc23 sd a2,-744(a1) # 80001000 + 800022f0: fc079ae3 bnez a5,800022c4 + 800022f4: 02010113 addi sp,sp,32 + 800022f8: 00008067 ret + +00000000800022fc : + 800022fc: fffff8b7 lui a7,0xfffff + 80002300: 01150733 add a4,a0,a7 + 80002304: 0003e7b7 lui a5,0x3e + 80002308: 14f77463 bleu a5,a4,80002450 + 8000230c: 00c55693 srli a3,a0,0xc + 80002310: 60068813 addi a6,a3,1536 + 80002314: 00001617 auipc a2,0x1 + 80002318: cec60613 addi a2,a2,-788 # 80003000 + 8000231c: 00381793 slli a5,a6,0x3 + 80002320: 00f607b3 add a5,a2,a5 + 80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000> + 80002328: 01157533 and a0,a0,a7 + 8000232c: 0e071063 bnez a4,8000240c + 80002330: 00005797 auipc a5,0x5 + 80002334: 4b878793 addi a5,a5,1208 # 800077e8 + 80002338: 0007b583 ld a1,0(a5) + 8000233c: 16058863 beqz a1,800024ac + 80002340: 0085b783 ld a5,8(a1) + 80002344: 00005717 auipc a4,0x5 + 80002348: 49c70713 addi a4,a4,1180 # 800077e0 + 8000234c: 00073703 ld a4,0(a4) + 80002350: 00005897 auipc a7,0x5 + 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 + 80002358: 0ee78663 beq a5,a4,80002444 + 8000235c: 0005b783 ld a5,0(a1) + 80002360: 00381893 slli a7,a6,0x3 + 80002364: 011608b3 add a7,a2,a7 + 80002368: 00c7d793 srli a5,a5,0xc + 8000236c: 00a79793 slli a5,a5,0xa + 80002370: 0df7e313 ori t1,a5,223 + 80002374: 01f7e713 ori a4,a5,31 + 80002378: 0068b023 sd t1,0(a7) + 8000237c: 12050073 sfence.vma a0 + 80002380: 00005797 auipc a5,0x5 + 80002384: 07078793 addi a5,a5,112 # 800073f0 + 80002388: 00469693 slli a3,a3,0x4 + 8000238c: 00d786b3 add a3,a5,a3 + 80002390: 0006b783 ld a5,0(a3) + 80002394: 16079463 bnez a5,800024fc + 80002398: 0005b783 ld a5,0(a1) + 8000239c: 00f6b023 sd a5,0(a3) + 800023a0: 0085b783 ld a5,8(a1) + 800023a4: 00f6b423 sd a5,8(a3) + 800023a8: 000407b7 lui a5,0x40 + 800023ac: 1007a8f3 csrrs a7,sstatus,a5 + 800023b0: ffe007b7 lui a5,0xffe00 + 800023b4: 00f507b3 add a5,a0,a5 + 800023b8: 000015b7 lui a1,0x1 + 800023bc: 00050693 mv a3,a0 + 800023c0: 00b785b3 add a1,a5,a1 + 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810> + 800023c8: 0087be83 ld t4,8(a5) + 800023cc: 0107be03 ld t3,16(a5) + 800023d0: 0187b303 ld t1,24(a5) + 800023d4: 01e6b023 sd t5,0(a3) + 800023d8: 01d6b423 sd t4,8(a3) + 800023dc: 01c6b823 sd t3,16(a3) + 800023e0: 0066bc23 sd t1,24(a3) + 800023e4: 02078793 addi a5,a5,32 + 800023e8: 02068693 addi a3,a3,32 + 800023ec: fcb79ce3 bne a5,a1,800023c4 + 800023f0: 10089073 csrw sstatus,a7 + 800023f4: 00381813 slli a6,a6,0x3 + 800023f8: 01060633 add a2,a2,a6 + 800023fc: 00e63023 sd a4,0(a2) + 80002400: 12050073 sfence.vma a0 + 80002404: 0000100f fence.i + 80002408: 00008067 ret + 8000240c: 04077693 andi a3,a4,64 + 80002410: 00069a63 bnez a3,80002424 + 80002414: 04076713 ori a4,a4,64 + 80002418: 00e7b023 sd a4,0(a5) + 8000241c: 12050073 sfence.vma a0 + 80002420: 00008067 ret + 80002424: 08077693 andi a3,a4,128 + 80002428: 12069263 bnez a3,8000254c + 8000242c: 00f00693 li a3,15 + 80002430: 10d59e63 bne a1,a3,8000254c + 80002434: 08076713 ori a4,a4,128 + 80002438: 00e7b023 sd a4,0(a5) + 8000243c: 12050073 sfence.vma a0 + 80002440: 00008067 ret + 80002444: 00005797 auipc a5,0x5 + 80002448: 3807be23 sd zero,924(a5) # 800077e0 + 8000244c: f11ff06f j 8000235c + 80002450: 10100613 li a2,257 + 80002454: 04100713 li a4,65 + 80002458: 00000697 auipc a3,0x0 + 8000245c: 78068693 addi a3,a3,1920 # 80002bd8 + 80002460: fffff797 auipc a5,0xfffff + 80002464: ba078793 addi a5,a5,-1120 # 80001000 + 80002468: 03061613 slli a2,a2,0x30 + 8000246c: 0007b503 ld a0,0(a5) + 80002470: 00168693 addi a3,a3,1 + 80002474: 00c765b3 or a1,a4,a2 + 80002478: 00050a63 beqz a0,8000248c + 8000247c: fffff717 auipc a4,0xfffff + 80002480: bc073223 sd zero,-1084(a4) # 80001040 + 80002484: 0007b703 ld a4,0(a5) + 80002488: fe071ae3 bnez a4,8000247c + 8000248c: 0006c703 lbu a4,0(a3) + 80002490: fffff517 auipc a0,0xfffff + 80002494: b6b53823 sd a1,-1168(a0) # 80001000 + 80002498: fc071ae3 bnez a4,8000246c + 8000249c: ff010113 addi sp,sp,-16 + 800024a0: 00300513 li a0,3 + 800024a4: 00113423 sd ra,8(sp) + 800024a8: d89ff0ef jal ra,80002230 + 800024ac: 10100693 li a3,257 + 800024b0: 04100713 li a4,65 + 800024b4: 00000617 auipc a2,0x0 + 800024b8: 7b460613 addi a2,a2,1972 # 80002c68 + 800024bc: fffff797 auipc a5,0xfffff + 800024c0: b4478793 addi a5,a5,-1212 # 80001000 + 800024c4: 03069693 slli a3,a3,0x30 + 800024c8: 0007b503 ld a0,0(a5) + 800024cc: 00160613 addi a2,a2,1 + 800024d0: 00d765b3 or a1,a4,a3 + 800024d4: 00050a63 beqz a0,800024e8 + 800024d8: fffff717 auipc a4,0xfffff + 800024dc: b6073423 sd zero,-1176(a4) # 80001040 + 800024e0: 0007b703 ld a4,0(a5) + 800024e4: fe071ae3 bnez a4,800024d8 + 800024e8: 00064703 lbu a4,0(a2) + 800024ec: fffff517 auipc a0,0xfffff + 800024f0: b0b53a23 sd a1,-1260(a0) # 80001000 + 800024f4: fc071ae3 bnez a4,800024c8 + 800024f8: fa5ff06f j 8000249c + 800024fc: 10100693 li a3,257 + 80002500: 04100713 li a4,65 + 80002504: 00000617 auipc a2,0x0 + 80002508: 77c60613 addi a2,a2,1916 # 80002c80 + 8000250c: fffff797 auipc a5,0xfffff + 80002510: af478793 addi a5,a5,-1292 # 80001000 + 80002514: 03069693 slli a3,a3,0x30 + 80002518: 0007b503 ld a0,0(a5) + 8000251c: 00160613 addi a2,a2,1 + 80002520: 00d765b3 or a1,a4,a3 + 80002524: 00050a63 beqz a0,80002538 + 80002528: fffff717 auipc a4,0xfffff + 8000252c: b0073c23 sd zero,-1256(a4) # 80001040 + 80002530: 0007b703 ld a4,0(a5) + 80002534: fe071ae3 bnez a4,80002528 + 80002538: 00064703 lbu a4,0(a2) + 8000253c: fffff517 auipc a0,0xfffff + 80002540: acb53223 sd a1,-1340(a0) # 80001000 + 80002544: fc071ae3 bnez a4,80002518 + 80002548: f55ff06f j 8000249c + 8000254c: 10100613 li a2,257 + 80002550: 04100713 li a4,65 + 80002554: 00000697 auipc a3,0x0 + 80002558: 6cc68693 addi a3,a3,1740 # 80002c20 + 8000255c: fffff797 auipc a5,0xfffff + 80002560: aa478793 addi a5,a5,-1372 # 80001000 + 80002564: 03061613 slli a2,a2,0x30 + 80002568: 0007b503 ld a0,0(a5) + 8000256c: 00168693 addi a3,a3,1 + 80002570: 00c765b3 or a1,a4,a2 + 80002574: 00050a63 beqz a0,80002588 + 80002578: fffff717 auipc a4,0xfffff + 8000257c: ac073423 sd zero,-1336(a4) # 80001040 + 80002580: 0007b703 ld a4,0(a5) + 80002584: fe071ae3 bnez a4,80002578 + 80002588: 0006c703 lbu a4,0(a3) + 8000258c: fffff517 auipc a0,0xfffff + 80002590: a6b53a23 sd a1,-1420(a0) # 80001000 + 80002594: fc071ae3 bnez a4,80002568 + 80002598: f05ff06f j 8000249c + +000000008000259c : + 8000259c: 11853583 ld a1,280(a0) + 800025a0: f9010113 addi sp,sp,-112 + 800025a4: 06813023 sd s0,96(sp) + 800025a8: 06113423 sd ra,104(sp) + 800025ac: 04913c23 sd s1,88(sp) + 800025b0: 05213823 sd s2,80(sp) + 800025b4: 05313423 sd s3,72(sp) + 800025b8: 05413023 sd s4,64(sp) + 800025bc: 03513c23 sd s5,56(sp) + 800025c0: 03613823 sd s6,48(sp) + 800025c4: 03713423 sd s7,40(sp) + 800025c8: 03813023 sd s8,32(sp) + 800025cc: 01913c23 sd s9,24(sp) + 800025d0: 01a13823 sd s10,16(sp) + 800025d4: 01b13423 sd s11,8(sp) + 800025d8: 00800793 li a5,8 + 800025dc: 00050413 mv s0,a0 + 800025e0: 12f58a63 beq a1,a5,80002714 + 800025e4: 00200793 li a5,2 + 800025e8: 06f58063 beq a1,a5,80002648 + 800025ec: ff458793 addi a5,a1,-12 # ff4 <_start-0x7ffff00c> + 800025f0: 00100713 li a4,1 + 800025f4: 00f77663 bleu a5,a4,80002600 + 800025f8: 00f00793 li a5,15 + 800025fc: 1ef59463 bne a1,a5,800027e4 + 80002600: 11043503 ld a0,272(s0) + 80002604: cf9ff0ef jal ra,800022fc + 80002608: 00040513 mv a0,s0 + 8000260c: 06013403 ld s0,96(sp) + 80002610: 06813083 ld ra,104(sp) + 80002614: 05813483 ld s1,88(sp) + 80002618: 05013903 ld s2,80(sp) + 8000261c: 04813983 ld s3,72(sp) + 80002620: 04013a03 ld s4,64(sp) + 80002624: 03813a83 ld s5,56(sp) + 80002628: 03013b03 ld s6,48(sp) + 8000262c: 02813b83 ld s7,40(sp) + 80002630: 02013c03 ld s8,32(sp) + 80002634: 01813c83 ld s9,24(sp) + 80002638: 01013d03 ld s10,16(sp) + 8000263c: 00813d83 ld s11,8(sp) + 80002640: 07010113 addi sp,sp,112 + 80002644: 9f9fd06f j 8000003c + 80002648: 10853703 ld a4,264(a0) + 8000264c: 00377793 andi a5,a4,3 + 80002650: 06079a63 bnez a5,800026c4 + 80002654: 008007ef jal a5,8000265c + 80002658: 00301073 fssr zero + 8000265c: 00072703 lw a4,0(a4) + 80002660: 0007a783 lw a5,0(a5) + 80002664: 04f70c63 beq a4,a5,800026bc + 80002668: 10100513 li a0,257 + 8000266c: 04100793 li a5,65 + 80002670: 00000697 auipc a3,0x0 + 80002674: 6e868693 addi a3,a3,1768 # 80002d58 + 80002678: fffff717 auipc a4,0xfffff + 8000267c: 98870713 addi a4,a4,-1656 # 80001000 + 80002680: 03051513 slli a0,a0,0x30 + 80002684: 00073583 ld a1,0(a4) + 80002688: 00168693 addi a3,a3,1 + 8000268c: 00a7e633 or a2,a5,a0 + 80002690: 00058a63 beqz a1,800026a4 + 80002694: fffff797 auipc a5,0xfffff + 80002698: 9a07b623 sd zero,-1620(a5) # 80001040 + 8000269c: 00073783 ld a5,0(a4) + 800026a0: fe079ae3 bnez a5,80002694 + 800026a4: 0006c783 lbu a5,0(a3) + 800026a8: fffff597 auipc a1,0xfffff + 800026ac: 94c5bc23 sd a2,-1704(a1) # 80001000 + 800026b0: fc079ae3 bnez a5,80002684 + 800026b4: 00300513 li a0,3 + 800026b8: b79ff0ef jal ra,80002230 + 800026bc: 00100513 li a0,1 + 800026c0: b71ff0ef jal ra,80002230 + 800026c4: 10100793 li a5,257 + 800026c8: 00000617 auipc a2,0x0 + 800026cc: 66860613 addi a2,a2,1640 # 80002d30 + 800026d0: 04100693 li a3,65 + 800026d4: fffff717 auipc a4,0xfffff + 800026d8: 92c70713 addi a4,a4,-1748 # 80001000 + 800026dc: 03079793 slli a5,a5,0x30 + 800026e0: 00073503 ld a0,0(a4) + 800026e4: 00160613 addi a2,a2,1 + 800026e8: 00f6e5b3 or a1,a3,a5 + 800026ec: 00050a63 beqz a0,80002700 + 800026f0: fffff697 auipc a3,0xfffff + 800026f4: 9406b823 sd zero,-1712(a3) # 80001040 + 800026f8: 00073683 ld a3,0(a4) + 800026fc: fe069ae3 bnez a3,800026f0 + 80002700: 00064683 lbu a3,0(a2) + 80002704: fffff517 auipc a0,0xfffff + 80002708: 8eb53e23 sd a1,-1796(a0) # 80001000 + 8000270c: fc069ae3 bnez a3,800026e0 + 80002710: fa5ff06f j 800026b4 + 80002714: 05052983 lw s3,80(a0) + 80002718: 00001437 lui s0,0x1 + 8000271c: 00005d17 auipc s10,0x5 + 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 + 80002724: 00001b97 auipc s7,0x1 + 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 + 8000272c: 00040b37 lui s6,0x40 + 80002730: ffe00ab7 lui s5,0xffe00 + 80002734: 00005a17 auipc s4,0x5 + 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 + 8000273c: 0003f937 lui s2,0x3f + 80002740: 01c0006f j 8000275c + 80002744: 00f73423 sd a5,8(a4) + 80002748: 00005717 auipc a4,0x5 + 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 + 80002750: 000017b7 lui a5,0x1 + 80002754: 00f40433 add s0,s0,a5 + 80002758: 15240663 beq s0,s2,800028a4 + 8000275c: 00c45793 srli a5,s0,0xc + 80002760: 00479493 slli s1,a5,0x4 + 80002764: 009d0733 add a4,s10,s1 + 80002768: 00073703 ld a4,0(a4) + 8000276c: fe0702e3 beqz a4,80002750 + 80002770: 60078793 addi a5,a5,1536 # 1600 <_start-0x7fffea00> + 80002774: 00379793 slli a5,a5,0x3 + 80002778: 00fb87b3 add a5,s7,a5 + 8000277c: 0007bc03 ld s8,0(a5) + 80002780: 040c7793 andi a5,s8,64 + 80002784: 0e078463 beqz a5,8000286c + 80002788: 100b2cf3 csrrs s9,sstatus,s6 + 8000278c: 01540db3 add s11,s0,s5 + 80002790: 00001637 lui a2,0x1 + 80002794: 000d8593 mv a1,s11 + 80002798: 00040513 mv a0,s0 + 8000279c: 975ff0ef jal ra,80002110 + 800027a0: 00050e63 beqz a0,800027bc + 800027a4: 080c7c13 andi s8,s8,128 + 800027a8: 080c0663 beqz s8,80002834 + 800027ac: 00001637 lui a2,0x1 + 800027b0: 000d8593 mv a1,s11 + 800027b4: 00040513 mv a0,s0 + 800027b8: 849ff0ef jal ra,80002000 + 800027bc: 009d07b3 add a5,s10,s1 + 800027c0: 100c9073 csrw sstatus,s9 + 800027c4: 000a3703 ld a4,0(s4) + 800027c8: 0007b023 sd zero,0(a5) + 800027cc: f6071ce3 bnez a4,80002744 + 800027d0: 00005717 auipc a4,0x5 + 800027d4: 00f73823 sd a5,16(a4) # 800077e0 + 800027d8: 00005717 auipc a4,0x5 + 800027dc: 00f73823 sd a5,16(a4) # 800077e8 + 800027e0: f71ff06f j 80002750 + 800027e4: 10100793 li a5,257 + 800027e8: 04100613 li a2,65 + 800027ec: 00000697 auipc a3,0x0 + 800027f0: 59c68693 addi a3,a3,1436 # 80002d88 + 800027f4: fffff717 auipc a4,0xfffff + 800027f8: 80c70713 addi a4,a4,-2036 # 80001000 + 800027fc: 03079793 slli a5,a5,0x30 + 80002800: 00073503 ld a0,0(a4) + 80002804: 00168693 addi a3,a3,1 + 80002808: 00f665b3 or a1,a2,a5 + 8000280c: 00050a63 beqz a0,80002820 + 80002810: fffff617 auipc a2,0xfffff + 80002814: 82063823 sd zero,-2000(a2) # 80001040 + 80002818: 00073603 ld a2,0(a4) + 8000281c: fe061ae3 bnez a2,80002810 + 80002820: 0006c603 lbu a2,0(a3) + 80002824: ffffe517 auipc a0,0xffffe + 80002828: 7cb53e23 sd a1,2012(a0) # 80001000 + 8000282c: fc061ae3 bnez a2,80002800 + 80002830: e85ff06f j 800026b4 + 80002834: 10100793 li a5,257 + 80002838: 04100613 li a2,65 + 8000283c: 00000697 auipc a3,0x0 + 80002840: 4bc68693 addi a3,a3,1212 # 80002cf8 + 80002844: ffffe717 auipc a4,0xffffe + 80002848: 7bc70713 addi a4,a4,1980 # 80001000 + 8000284c: 03079793 slli a5,a5,0x30 + 80002850: 00168693 addi a3,a3,1 + 80002854: 00f665b3 or a1,a2,a5 + 80002858: 00073603 ld a2,0(a4) + 8000285c: 04060863 beqz a2,800028ac + 80002860: ffffe617 auipc a2,0xffffe + 80002864: 7e063023 sd zero,2016(a2) # 80001040 + 80002868: ff1ff06f j 80002858 + 8000286c: 10100793 li a5,257 + 80002870: 04100613 li a2,65 + 80002874: 00000697 auipc a3,0x0 + 80002878: 44c68693 addi a3,a3,1100 # 80002cc0 + 8000287c: ffffe717 auipc a4,0xffffe + 80002880: 78470713 addi a4,a4,1924 # 80001000 + 80002884: 03079793 slli a5,a5,0x30 + 80002888: 00168693 addi a3,a3,1 + 8000288c: 00f665b3 or a1,a2,a5 + 80002890: 00073603 ld a2,0(a4) + 80002894: 02060663 beqz a2,800028c0 + 80002898: ffffe617 auipc a2,0xffffe + 8000289c: 7a063423 sd zero,1960(a2) # 80001040 + 800028a0: ff1ff06f j 80002890 + 800028a4: 00098513 mv a0,s3 + 800028a8: 989ff0ef jal ra,80002230 + 800028ac: 0006c603 lbu a2,0(a3) + 800028b0: ffffe517 auipc a0,0xffffe + 800028b4: 74b53823 sd a1,1872(a0) # 80001000 + 800028b8: f8061ce3 bnez a2,80002850 + 800028bc: df9ff06f j 800026b4 + 800028c0: 0006c603 lbu a2,0(a3) + 800028c4: ffffe517 auipc a0,0xffffe + 800028c8: 72b53e23 sd a1,1852(a0) # 80001000 + 800028cc: fa061ee3 bnez a2,80002888 + 800028d0: de5ff06f j 800026b4 + +00000000800028d4 : + 800028d4: f14027f3 csrr a5,mhartid + 800028d8: 18079a63 bnez a5,80002a6c + 800028dc: 00001697 auipc a3,0x1 + 800028e0: 72468693 addi a3,a3,1828 # 80004000 + 800028e4: 00002717 auipc a4,0x2 + 800028e8: 71c70713 addi a4,a4,1820 # 80005000 + 800028ec: 00c6d693 srli a3,a3,0xc + 800028f0: 00c75713 srli a4,a4,0xc + 800028f4: 00003797 auipc a5,0x3 + 800028f8: 70c78793 addi a5,a5,1804 # 80006000 + 800028fc: 00a69693 slli a3,a3,0xa + 80002900: 00a71713 slli a4,a4,0xa + 80002904: 0016e693 ori a3,a3,1 + 80002908: 00176713 ori a4,a4,1 + 8000290c: 00c7d793 srli a5,a5,0xc + 80002910: 00000897 auipc a7,0x0 + 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 + 80002918: 00a79793 slli a5,a5,0xa + 8000291c: 00001697 auipc a3,0x1 + 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 + 80002924: 20000737 lui a4,0x20000 + 80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31> + 8000292c: fff00593 li a1,-1 + 80002930: 0017e793 ori a5,a5,1 + 80002934: 00000617 auipc a2,0x0 + 80002938: 6cc60613 addi a2,a2,1740 # 80003000 + 8000293c: ed010113 addi sp,sp,-304 + 80002940: 03f59813 slli a6,a1,0x3f + 80002944: 00003697 auipc a3,0x3 + 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 + 8000294c: 00001717 auipc a4,0x1 + 80002950: 6af73a23 sd a5,1716(a4) # 80004000 + 80002954: 00c65793 srli a5,a2,0xc + 80002958: 12113423 sd ra,296(sp) + 8000295c: 12813023 sd s0,288(sp) + 80002960: 0107e7b3 or a5,a5,a6 + 80002964: 18079073 csrw satp,a5 + 80002968: 01f00793 li a5,31 + 8000296c: 00000297 auipc t0,0x0 + 80002970: 01428293 addi t0,t0,20 # 80002980 + 80002974: 305292f3 csrrw t0,mtvec,t0 + 80002978: 3b059073 csrw pmpaddr0,a1 + 8000297c: 3a079073 csrw pmpcfg0,a5 + 80002980: bff00813 li a6,-1025 + 80002984: 01581813 slli a6,a6,0x15 + 80002988: ffffd797 auipc a5,0xffffd + 8000298c: 73c78793 addi a5,a5,1852 # 800000c4 + 80002990: 010787b3 add a5,a5,a6 + 80002994: 10579073 csrw stvec,a5 + 80002998: 340027f3 csrr a5,mscratch + 8000299c: 010787b3 add a5,a5,a6 + 800029a0: 14079073 csrw sscratch,a5 + 800029a4: 0000b7b7 lui a5,0xb + 800029a8: 1007879b addiw a5,a5,256 + 800029ac: 30279073 csrw medeleg,a5 + 800029b0: 0001e7b7 lui a5,0x1e + 800029b4: 30079073 csrw mstatus,a5 + 800029b8: 30405073 csrwi mie,0 + 800029bc: 00004697 auipc a3,0x4 + 800029c0: 64468693 addi a3,a3,1604 # 80007000 + 800029c4: 010687b3 add a5,a3,a6 + 800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20> + 800029cc: 00005617 auipc a2,0x5 + 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 + 800029d4: 00005797 auipc a5,0x5 + 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 + 800029dc: 00005317 auipc t1,0x5 + 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 + 800029e4: 03d00793 li a5,61 + 800029e8: 000808b7 lui a7,0x80 + 800029ec: 01080813 addi a6,a6,16 + 800029f0: 03f7871b addiw a4,a5,63 + 800029f4: 02071713 slli a4,a4,0x20 + 800029f8: 0017d61b srliw a2,a5,0x1 + 800029fc: 02075713 srli a4,a4,0x20 + 80002a00: 00c7c7b3 xor a5,a5,a2 + 80002a04: 01170733 add a4,a4,a7 + 80002a08: 010685b3 add a1,a3,a6 + 80002a0c: 00c71713 slli a4,a4,0xc + 80002a10: 0057979b slliw a5,a5,0x5 + 80002a14: 00e6b023 sd a4,0(a3) + 80002a18: 00b6b423 sd a1,8(a3) + 80002a1c: 0207f793 andi a5,a5,32 + 80002a20: 01068693 addi a3,a3,16 + 80002a24: 00c7e7b3 or a5,a5,a2 + 80002a28: fcd314e3 bne t1,a3,800029f0 + 80002a2c: 00050413 mv s0,a0 + 80002a30: 12000613 li a2,288 + 80002a34: 00000593 li a1,0 + 80002a38: 00010513 mv a0,sp + 80002a3c: 00005797 auipc a5,0x5 + 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 + 80002a44: e18ff0ef jal ra,8000205c + 80002a48: 800007b7 lui a5,0x80000 + 80002a4c: 00f40433 add s0,s0,a5 + 80002a50: 00010513 mv a0,sp + 80002a54: 10813423 sd s0,264(sp) + 80002a58: de4fd0ef jal ra,8000003c + 80002a5c: 12813083 ld ra,296(sp) + 80002a60: 12013403 ld s0,288(sp) + 80002a64: 13010113 addi sp,sp,304 + 80002a68: 00008067 ret + 80002a6c: 0ffa37b7 lui a5,0xffa3 + 80002a70: 000805b7 lui a1,0x80 + 80002a74: 57578793 addi a5,a5,1397 # ffa3575 <_start-0x7005ca8b> + 80002a78: ffc58593 addi a1,a1,-4 # 7fffc <_start-0x7ff80004> + 80002a7c: 00100613 li a2,1 + 80002a80: 00b7f733 and a4,a5,a1 + 80002a84: 01f61613 slli a2,a2,0x1f + 80002a88: 0017f693 andi a3,a5,1 + 80002a8c: 02079793 slli a5,a5,0x20 + 80002a90: 0207d793 srli a5,a5,0x20 + 80002a94: 00c70733 add a4,a4,a2 + 80002a98: 02068263 beqz a3,80002abc + 80002a9c: 0007202f amoadd.w zero,zero,(a4) + 80002aa0: 0017d793 srli a5,a5,0x1 + 80002aa4: 00b7f733 and a4,a5,a1 + 80002aa8: 0017f693 andi a3,a5,1 + 80002aac: 02079793 slli a5,a5,0x20 + 80002ab0: 0207d793 srli a5,a5,0x20 + 80002ab4: 00c70733 add a4,a4,a2 + 80002ab8: fe0692e3 bnez a3,80002a9c + 80002abc: 00072003 lw zero,0(a4) + 80002ac0: 0017d793 srli a5,a5,0x1 + 80002ac4: fe1ff06f j 80002aa4 + +0000000080002ac8 : + 80002ac8: 01400093 li ra,20 + 80002acc: 00600113 li sp,6 + 80002ad0: 0220ef3b remw t5,ra,sp + 80002ad4: 00200e93 li t4,2 + 80002ad8: 00200193 li gp,2 + 80002adc: 0fdf1063 bne t5,t4,80002bbc + +0000000080002ae0 : + 80002ae0: fec00093 li ra,-20 + 80002ae4: 00600113 li sp,6 + 80002ae8: 0220ef3b remw t5,ra,sp + 80002aec: ffe00e93 li t4,-2 + 80002af0: 00300193 li gp,3 + 80002af4: 0ddf1463 bne t5,t4,80002bbc + +0000000080002af8 : + 80002af8: 01400093 li ra,20 + 80002afc: ffa00113 li sp,-6 + 80002b00: 0220ef3b remw t5,ra,sp + 80002b04: 00200e93 li t4,2 + 80002b08: 00400193 li gp,4 + 80002b0c: 0bdf1863 bne t5,t4,80002bbc + +0000000080002b10 : + 80002b10: fec00093 li ra,-20 + 80002b14: ffa00113 li sp,-6 + 80002b18: 0220ef3b remw t5,ra,sp + 80002b1c: ffe00e93 li t4,-2 + 80002b20: 00500193 li gp,5 + 80002b24: 09df1c63 bne t5,t4,80002bbc + +0000000080002b28 : + 80002b28: 800000b7 lui ra,0x80000 + 80002b2c: 00100113 li sp,1 + 80002b30: 0220ef3b remw t5,ra,sp + 80002b34: 00000e93 li t4,0 + 80002b38: 00600193 li gp,6 + 80002b3c: 09df1063 bne t5,t4,80002bbc + +0000000080002b40 : + 80002b40: 800000b7 lui ra,0x80000 + 80002b44: fff00113 li sp,-1 + 80002b48: 0220ef3b remw t5,ra,sp + 80002b4c: 00000e93 li t4,0 + 80002b50: 00700193 li gp,7 + 80002b54: 07df1463 bne t5,t4,80002bbc + +0000000080002b58 : + 80002b58: 800000b7 lui ra,0x80000 + 80002b5c: 00000113 li sp,0 + 80002b60: 0220ef3b remw t5,ra,sp + 80002b64: 80000eb7 lui t4,0x80000 + 80002b68: 00800193 li gp,8 + 80002b6c: 05df1863 bne t5,t4,80002bbc + +0000000080002b70 : + 80002b70: 00100093 li ra,1 + 80002b74: 00000113 li sp,0 + 80002b78: 0220ef3b remw t5,ra,sp + 80002b7c: 00100e93 li t4,1 + 80002b80: 00900193 li gp,9 + 80002b84: 03df1c63 bne t5,t4,80002bbc + +0000000080002b88 : + 80002b88: 00000093 li ra,0 + 80002b8c: 00000113 li sp,0 + 80002b90: 0220ef3b remw t5,ra,sp + 80002b94: 00000e93 li t4,0 + 80002b98: 00a00193 li gp,10 + 80002b9c: 03df1063 bne t5,t4,80002bbc + +0000000080002ba0 : + 80002ba0: 89700093 li ra,-1897 + 80002ba4: 00000113 li sp,0 + 80002ba8: 0220ef3b remw t5,ra,sp + 80002bac: 89700e93 li t4,-1897 + 80002bb0: 00b00193 li gp,11 + 80002bb4: 01df1463 bne t5,t4,80002bbc + 80002bb8: 00301a63 bne zero,gp,80002bcc + +0000000080002bbc : + 80002bbc: 00119513 slli a0,gp,0x1 + 80002bc0: 00050063 beqz a0,80002bc0 + 80002bc4: 00156513 ori a0,a0,1 + 80002bc8: 00000073 ecall + +0000000080002bcc : + 80002bcc: 00100513 li a0,1 + 80002bd0: 00000073 ecall + 80002bd4: c0001073 unimp diff --git a/builds/RV64ADFIMSU_Tuba_verilator/Makefile b/builds/RV64ADFIMSU_Tuba_verilator/Makefile new file mode 100644 index 0000000..9f7c798 --- /dev/null +++ b/builds/RV64ADFIMSU_Tuba_verilator/Makefile @@ -0,0 +1,52 @@ +### -*-Makefile-*- + +# ================================================================ +# Path to RISCY-OOO sources + +RISCY_HOME ?= ../../src_Core/RISCY_OOO +# RISCY_HOME ?= $(HOME)/Projects/RISCV/MIT-riscy/riscy-OOO + +RISCY_DIRS = $(RISCY_HOME)/procs/RV64G_OOO:$(RISCY_HOME)/procs/lib:$(RISCY_HOME)/coherence/src:$(RISCY_HOME)/fpgautils/lib + +CONNECTAL_DIRS = $(RISCY_HOME)/connectal/bsv:$(RISCY_HOME)/connectal/tests/spi:$(RISCY_HOME)/connectal/lib/bsv + +# ALL_RISCY_DIRS = $(RISCY_DIRS) +ALL_RISCY_DIRS = $(RISCY_DIRS):$(CONNECTAL_DIRS) + +# ================================================================ + +REPO ?= ../.. +ARCH ?= RV64ADFIMSU + +# ================================================================ +# RISC-V config macros passed into Bluespec 'bsc' compiler + +BSC_COMPILATION_FLAGS += \ + -D RV64 \ + -D ISA_PRIV_M -D ISA_PRIV_U -D ISA_PRIV_S \ + -D SV39 \ + -D ISA_I -D ISA_M -D ISA_A -D ISA_F -D ISA_D -D ISA_FD_DIV -D ISA_C \ + -D SHIFT_BARREL \ + -D MULT_SYNTH \ + -D Near_Mem_Caches \ + -D FABRIC64 \ + + +# Default ISA test + +TEST ?= rv64ui-p-add + +#================================================================ +# Parameter settings for MIT RISCY + +include $(REPO)/builds/Resources/Include_RISCY_Config.mk + +#================================================================ +# Common boilerplate rules + +include $(REPO)/builds/Resources/Include_Common.mk + +#================================================================ +# Makefile rules for building for specific simulator: verilator + +include $(REPO)/builds/Resources/Include_verilator.mk diff --git a/builds/Resources/Include_Common.mk b/builds/Resources/Include_Common.mk new file mode 100644 index 0000000..d03270c --- /dev/null +++ b/builds/Resources/Include_Common.mk @@ -0,0 +1,100 @@ +### -*-Makefile-*- + +# Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +# This file is not a standalone Makefile, but 'include'd by other Makefiles + +# It contains common defs used by Makefiles generated for specific +# RISC-V implementations that differ in RISC-V architectural-feature +# choices, hardware implementation choices and simulator choices. + +# ================================================================ + +.PHONY: help +help: + @echo ' make compile Recompile Core (CPU, caches)' + @echo ' NOTE: needs Bluespec bsc compiler' + @echo ' For Bluesim: generates Bluesim intermediate files' + @echo ' For Verilog simulation: generates RTL' + @echo ' make simulator Compiles and links intermediate files/RTL to create simulation executable' + @echo ' (Bluesim, verilator or iverilog)' + @echo ' make all = make compile simulator' + @echo '' + @echo ' make run_example Runs simulation executable on ELF given by EXAMPLE' + @echo '' + @echo ' make test Runs simulation executable on rv32ui-p-add or rv64ui-p-add' + @echo ' make isa_tests Runs simulation executable on all relevant standard RISC-V ISA tests' + @echo '' + @echo ' make clean Remove intermediate build-files unnecessary for execution' + @echo ' make full_clean Restore to pristine state (pre-building anything)' + +.PHONY: all +all: compile simulator + +# ================================================================ +# Search path for bsc for .bsv files + +CORE_DIRS = $(REPO)/src_Core/CPU:$(REPO)/src_Core/ISA:$(REPO)/src_Core/Core:$(REPO)/src_Core/PLIC:$(REPO)/src_Core/Debug_Module:$(REPO)/src_Core/BSV_Additional_Libs + +TESTBENCH_DIRS = $(REPO)/src_Testbench/Top:$(REPO)/src_Testbench/SoC:$(REPO)/src_Testbench/Fabrics/AXI4 + +BSC_PATH = -p $(ALL_RISCY_DIRS):$(CORE_DIRS):$(TESTBENCH_DIRS):+ + +# ---------------- +# Top-level file and module + +TOPFILE ?= $(REPO)/src_Testbench/Top/Top_HW_Side.bsv +TOPMODULE ?= mkTop_HW_Side + +# ================================================================ +# bsc compilation flags + +BSC_COMPILATION_FLAGS += \ + -keep-fires -aggressive-conditions -no-warn-action-shadowing -no-show-timestamps -check-assert \ + -suppress-warnings G0020 \ + +RTS -K128M -RTS -show-range-conflict + +# ================================================================ +# Runs simulation executable on ELF given by EXAMPLE + +EXAMPLE ?= PLEASE_DEFINE_EXAMPLE_PATH_TO_ELF + +.PHONY: run_example +run_example: + make -C $(TESTS_DIR)/elf_to_hex + $(TESTS_DIR)/elf_to_hex/elf_to_hex $(EXAMPLE) Mem.hex + ./exe_HW_sim $(VERBOSITY) +exit + +# ================================================================ +# Test: run the executable on the standard RISCV ISA test specified in TEST + +TESTS_DIR ?= $(REPO)/Tests + +VERBOSITY ?= +v1 + +.PHONY: test +test: + make -C $(TESTS_DIR)/elf_to_hex + $(TESTS_DIR)/elf_to_hex/elf_to_hex $(TESTS_DIR)/isa/$(TEST) Mem.hex + ./exe_HW_sim $(VERBOSITY) +tohost + +# ================================================================ +# ISA Regression testing + +.PHONY: isa_tests +isa_tests: + @echo "Running regressions on ISA tests; saving logs in Logs/" + $(REPO)/Tests/Run_regression.py ./exe_HW_sim $(REPO) ./Logs $(ARCH) + @echo "Finished running regressions; saved logs in Logs/" + +# ================================================================ + +.PHONY: clean +clean: + rm -r -f *~ Makefile_* symbol_table.txt build_dir obj_dir + +.PHONY: full_clean +full_clean: clean + rm -r -f $(SIM_EXE_FILE)* *.log *.vcd *.hex Logs/ + +# ================================================================ diff --git a/builds/Resources/Include_RISCY_Config.mk b/builds/Resources/Include_RISCY_Config.mk new file mode 100644 index 0000000..7fc485e --- /dev/null +++ b/builds/Resources/Include_RISCY_Config.mk @@ -0,0 +1,92 @@ +### -*-Makefile-*- + +# Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +# ================================================================ +# Macros from RISCY_HOME/procs/RV64G_OOO/Makefile + +PROC := RV64G_OOO + +# core size +CORE_SIZE ?= SMALL +# cache size +CACHE_SIZE ?= LARGE +# always include perf counter +PERF_COUNT := true +# dram type in simulation: VC707 or AWSF1 +SIM_DRAM_TYPE := AWSF1 +# use Xilinx FPU IP cores +USE_XILINX_FPU ?= true + +# default 1 core +CORE_NUM ?= 1 +# TSO or WEAK +TSO_MM ?= false +# Lr upgrades line to E (no forward progress guarantee) +LR_UP_TO_E ?= false +# Forbid LLC from respoding a load (toS) request with E state +NO_LOAD_RESP_E ?= false +# Use self inv cache? (only for WEAK mm), value is the max hits in D$ +SELF_INV_CACHE ?= +# self inv D$ in case of system inst or trap +SYSTEM_SELF_INV_L1D ?= false +# security +SECURITY ?= false +SECURE_LLC ?= false +SECURE_FLUSH ?= false +SECURE_NONE ?= false +SECURE_MSHR ?= false +SECURE_ARBITER ?= false +DISABLE_SECURE_BW ?= false +SIM_LOG_LLC_PARTITION_NUM ?= +SIM_LOG_LLC_MSHR_BANK_NUM ?= +SIM_LLC_ARBITER_NUM ?= +SIM_LLC_ARBITER_LAT ?= +# default check cache deadlock and rename error +CHECK_DEADLOCK ?= true +RENAME_DEBUG ?= false + +# clk frequency depends on core size +ifneq (,$(filter $(CORE_SIZE),TINY SMALL BOOM MEDIUM)) +USER_CLK_PERIOD ?= 24 +else ifneq (,$(filter $(CORE_SIZE),SMALL_WIDE LARGE)) +USER_CLK_PERIOD ?= 32 +else ifneq (,$(filter $(CORE_SIZE),LARGE_WIDE)) +USER_CLK_PERIOD ?= 40 +else +$(error unsupported CORE_SIZE) +endif + +ifeq (,$(filter $(CACHE_SIZE),SMALL LARGE MC_1MB MC_2MB)) +$(error unsupported CACHE_SIZE) +endif + + +# ================================================================ +# These are taken from: RISCY_HOME/procs/scripts/Makefile.common + +XILINX_FP_FMA_LATENCY = 3 +XILINX_INT_MUL_LATENCY = 2 + + +BSC_COMPILATION_FLAGS += \ + -D BSIM \ + -D CORE_$(CORE_SIZE) \ + -D NUM_CORES=$(CORE_NUM) \ + -D CACHE_$(CACHE_SIZE) \ + -D USE_XILINX_FPU \ + -D XILINX_FP_FMA_LATENCY=$(XILINX_FP_FMA_LATENCY) \ + -D XILINX_INT_MUL_LATENCY=$(XILINX_INT_MUL_LATENCY) \ + -D USE_BSV_BRAM_SYNC_FIFO \ + +# TODO: +# -D SELF_INV_CACHE -D L1D_MAX_HITS=$(SELF_INV_CACHE) +# -D SYSTEM_SELF_INV_L1D +# -D LR_UP_TO_E +# -D NO_LOAD_RESP_E +# various SECURITY related flags +# -D PERF_COUNT -D CHECK_DEADLOCK -D RENAME_DEBUG ... + +# +RTS -K1G -RTS " --bscflags=" -steps-max-intervals 200 -check-assert + +# ================================================================ diff --git a/builds/Resources/Include_verilator.mk b/builds/Resources/Include_verilator.mk new file mode 100644 index 0000000..7779335 --- /dev/null +++ b/builds/Resources/Include_verilator.mk @@ -0,0 +1,72 @@ +### -*-Makefile-*- + +# Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +# This file is not a standalone Makefile, but 'include'd by other Makefiles + +# ================================================================ +# Generate Verilog RTL from BSV sources (needs Bluespec 'bsc' compiler) + +RTL_GEN_DIRS = -vdir Verilog_RTL -bdir build_dir -info-dir build_dir + +build_dir: + mkdir -p $@ + +Verilog_RTL: + mkdir -p $@ + +.PHONY: compile +compile: build_dir Verilog_RTL + @echo "INFO: Verilog RTL generation ..." + bsc -u -elab -verilog $(RTL_GEN_DIRS) $(BSC_COMPILATION_FLAGS) $(BSC_PATH) $(TOPFILE) + @echo "INFO: Verilog RTL generation finished" + +# ================================================================ +# Compile and link Verilog RTL sources into an verilator executable + +SIM_EXE_FILE = exe_HW_sim + +# Verilator flags: notes +# stats Dump stats on the design, in file {prefix}__stats.txt +# -O3 Verilator optimization level +# -CFLAGS -O3 C++ optimization level +# --x-assign fast Optimize X value +# --x-initial fast Optimize uninitialized value +# --noassert Disable all assertions + +VERILATOR_FLAGS = --stats -LDFLAGS -static --x-assign fast --x-initial fast --noassert +# VERILATOR_FLAGS = --stats -O3 -CFLAGS -O3 -LDFLAGS -static --x-assign fast --x-initial fast --noassert + +# Verilator flags: use the following to include code to generate VCDs +# Select trace-depth according to your module hierarchy +# VERILATOR_FLAGS += --trace --trace-depth 2 -CFLAGS -DVM_TRACE + +VTOP = V$(TOPMODULE)_edited +VERILATOR_RESOURCES = $(REPO)/builds/Resources/Verilator_resources + +.PHONY: simulator +simulator: + @echo "INFO: Verilating Verilog files (in newly created obj_dir)" + sed -f $(VERILATOR_RESOURCES)/sed_script.txt Verilog_RTL/$(TOPMODULE).v > tmp1.v + cat $(VERILATOR_RESOURCES)/verilator_config.vlt \ + $(VERILATOR_RESOURCES)/import_DPI_C_decls.v \ + tmp1.v > Verilog_RTL/$(TOPMODULE)_edited.v + rm -f tmp1.v + verilator \ + -IVerilog_RTL \ + -I$(RISCY_HOME)/fpgautils/xilinx/fpu \ + -I$(RISCY_HOME)/fpgautils/xilinx/reset_regs \ + -I$(RISCY_HOME)/procs/asic/bluespec_verilog \ + -I$(REPO)/src_bsc_lib_RTL \ + $(VERILATOR_FLAGS) \ + --cc $(TOPMODULE)_edited.v \ + --exe sim_main.cpp \ + $(REPO)/src_Testbench/Top/C_Imported_Functions.c + @echo "INFO: Linking verilated files" + cp -p $(VERILATOR_RESOURCES)/sim_main.cpp obj_dir/sim_main.cpp + cd obj_dir; \ + make -j -f V$(TOPMODULE)_edited.mk $(VTOP); \ + cp -p $(VTOP) ../$(SIM_EXE_FILE) + @echo "INFO: Created verilator executable: $(SIM_EXE_FILE)" + +# ================================================================ diff --git a/builds/Resources/Verilator_resources/import_DPI_C_decls.v b/builds/Resources/Verilator_resources/import_DPI_C_decls.v new file mode 100644 index 0000000..906bbfd --- /dev/null +++ b/builds/Resources/Verilator_resources/import_DPI_C_decls.v @@ -0,0 +1,68 @@ +// Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +// Hand-written System Verilog import statements for imported C functions + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for console I/O + +// ================================================================ + +import "DPI-C" +function byte unsigned c_trygetchar (byte unsigned dummy); + +import "DPI-C" +function int unsigned c_putchar (byte unsigned ch); + +// ================================================================ +// Symbol table +// Reads the whole symbol-table file on each call, +// which is ok if it's not called often and the file is small. + +import "DPI-C" +function longint unsigned c_get_symbol_val (string symbol); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for Tandem Verification trace file output. + +// ================================================================ + +import "DPI-C" +function int unsigned c_trace_file_open (byte unsigned dummy); + +import "DPI-C" +function int unsigned c_trace_file_load_byte_in_buffer (int unsigned j, byte unsigned data); + +import "DPI-C" +function int unsigned c_trace_file_load_word64_in_buffer (int unsigned byte_offset, longint unsigned data); + +import "DPI-C" +function int unsigned c_trace_file_write_buffer (int unsigned n); + +import "DPI-C" +function int unsigned c_trace_file_close (byte unsigned dummy); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// ================================================================ + +import "DPI-C" +function byte unsigned c_debug_client_connect (shortint tcp_port); + +import "DPI-C" +function byte unsigned c_debug_client_disconnect (byte unsigned dummy); + +import "DPI-C" +function longint unsigned c_debug_client_request_recv (byte unsigned dummy); + +import "DPI-C" +function byte unsigned c_debug_client_response_send (int unsigned data); + +// ================================================================ diff --git a/builds/Resources/Verilator_resources/sed_script.txt b/builds/Resources/Verilator_resources/sed_script.txt new file mode 100644 index 0000000..3dd8472 --- /dev/null +++ b/builds/Resources/Verilator_resources/sed_script.txt @@ -0,0 +1 @@ +s/\$imported_// diff --git a/builds/Resources/Verilator_resources/sim_main.cpp b/builds/Resources/Verilator_resources/sim_main.cpp new file mode 100644 index 0000000..dd104af --- /dev/null +++ b/builds/Resources/Verilator_resources/sim_main.cpp @@ -0,0 +1,84 @@ +// Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +// Top-level driver for "verilated" objects (Verilog compiled with verilator) + +#include + +#include // for 'mkdir' + +#include "VmkTop_HW_Side_edited.h" + +// If "verilator --trace" is used, include the tracing class +#if VM_TRACE +# include +#endif + +vluint64_t main_time = 0; // Current simulation time + +double sc_time_stamp () { // Called by $time in Verilog + return main_time; +} + +int main (int argc, char **argv, char **env) { + Verilated::commandArgs (argc, argv); // remember args + + VmkTop_HW_Side_edited* mkTop_HW_Side = new VmkTop_HW_Side_edited; // create instance of model + +#if VM_TRACE + // If verilator was invoked with --trace argument, + // and if at run time passed the +trace argument, turn on tracing + VerilatedVcdC* tfp = NULL; + const char* flag = Verilated::commandArgsPlusMatch("trace"); + if (flag && 0==strcmp(flag, "+trace")) { + Verilated::traceEverOn(true); // Verilator must compute traced signals + VL_PRINTF("Enabling waves into vcd/vlt_dump.vcd...\n"); + tfp = new VerilatedVcdC; + mkTop_HW_Side->trace(tfp, 99); // Trace 99 levels of hierarchy + mkdir("vcd", 0777); + tfp->open("vcd/vlt_dump.vcd"); // Open the dump file + } +#endif + + // initial conditions in order to generate appropriate edges on + // reset + mkTop_HW_Side->RST_N = 1; + mkTop_HW_Side->CLK = 0; + + while (! Verilated::gotFinish ()) { + + if (main_time == 2) { + mkTop_HW_Side->RST_N = 0; // assert reset + } + else if (main_time == 7) { + mkTop_HW_Side->RST_N = 1; // Deassert reset + } + + // Toggle clock + if ((main_time % 10) == 5) { + mkTop_HW_Side->CLK = 1; + } + else if ((main_time % 10) == 0) { + mkTop_HW_Side->CLK = 0; + } + +#if VM_TRACE + if (tfp) + tfp->dump(main_time); +#endif + + mkTop_HW_Side->eval (); + main_time++; + } + + mkTop_HW_Side->final (); // Done simulating + + // Close trace if opened +#if VM_TRACE + if (tfp) { tfp->close(); } +#endif + + delete mkTop_HW_Side; + mkTop_HW_Side = NULL; + + exit (0); +} diff --git a/builds/Resources/Verilator_resources/verilator_config.vlt b/builds/Resources/Verilator_resources/verilator_config.vlt new file mode 100644 index 0000000..c0e8c0e --- /dev/null +++ b/builds/Resources/Verilator_resources/verilator_config.vlt @@ -0,0 +1,12 @@ +// Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +// Flags for verilator + +`verilator_config +lint_off -msg WIDTH +lint_off -msg CASEINCOMPLETE +lint_off -msg STMTDLY +lint_off -msg INITIALDLY +lint_off -msg UNSIGNED +lint_off -msg CMPCONST +`verilog diff --git a/src_Core/BSV_Additional_Libs/ByteLane.bsv b/src_Core/BSV_Additional_Libs/ByteLane.bsv new file mode 100644 index 0000000..9deb526 --- /dev/null +++ b/src_Core/BSV_Additional_Libs/ByteLane.bsv @@ -0,0 +1,218 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved + +package ByteLane; + +// ================================================================ +// Library for 'adjusting/unadjusting' bytes on a wider bus + +// Example: a 64b bit bus can be regarded as 8 "byte lanes" +// with each lane selected by the lower 3 bits of an address. +// Such a bus typically carries data of 1, 2, 4 or 8 bytes. +// For 1,2, and 4, different apps use one of two representations: +// - carry the data on contiguous lower-order bytes, with a separate +// indication of how many bytes are being carried (1,2,4) +// - carry the data bytes on the lanes corresponding to the byte addresses, +// along with a 'mask' indicating which bytes are valid: +// Lane: 7 6 5 4 3 2 1 0 +// x x x x D D D D 4-byte data, address lsbs = 3'b000 +// D D D D x x x x 4-byte data, address lsbs = 3'b100 +// +// x x x x x x D D 2-byte data, address lsbs = 3'b000 +// x x x x D D x x 2-byte data, address lsbs = 3'b010 +// ... +// D D x x x x x x 2-byte data, address lsbs = 3'b110 +// +// x x x x x x x D 1-byte data, address lsbs = 3'b000 +// x x x x x x D x 1-byte data, address lsbs = 3'b001 +// ... +// D x x x x x x x 1-byte data, address lsbs = 3'b111 +// Only 1 bit/lane is needed for the 'mask' (a.k.a. 'byte-enable' or 'strobe') + +// ================================================================ +// BSV library imports + +import Vector :: *; + +// ================================================================ +// Expand each bit in 'strobe' to a byte, creating a full-width mask. + +function Bit #(TMul #(n,8)) fn_strobe_to_mask (Bit #(n) strobe); + function Bit #(8) fn_bit_j_to_byte_j (Integer j); + return signExtend (strobe [j]); + endfunction + + Vector #(n, Bit #(8)) v = genWith (fn_bit_j_to_byte_j); + return pack (v); +endfunction + +// ================================================================ +// Update an n-byte word taking into account an n-bit strobe + +function Bit# (TMul #(n,8)) fn_update_strobed_bytes (Bit# (TMul #(n,8)) old_data, + Bit# (TMul #(n,8)) new_data, + Bit #(n) strobe); + Bit# (TMul #(n,8)) mask = fn_strobe_to_mask (strobe); + return ((old_data & (~ mask)) | (new_data & mask)); +endfunction + +// ================================================================ +// Lane-adjust a data word according to the byte-address and data width +// Args: addr: only bottom few bits are relevant +// width: # of relevant bytes: 1, 2, 4, 8 +// data_in: lsb-justified data +// Results: Bool err: misaligned, or bad data_width +// strobe: bit vector showing which lanes are active +// data_out: data shifted to be in-lane + +// ---------------- +// 32b version + +function Tuple3 #(Bool, // + Bit #(4), // strobe + Bit #(32)) // lane-adjusted data + fn_lane_adjust_32b (Bit #(32) addr, Bit #(3) dw, Bit #(32) data); + + Bit #(4) strobe = 0; + Bool err = False; + + case (dw) + 1: case (addr [1:0]) + 2'b00: begin strobe = 'b_0001; end + 2'b01: begin strobe = 'b_0010; data = (data << 8); end + 2'b10: begin strobe = 'b_0100; data = (data << 16); end + 2'b11: begin strobe = 'b_1000; data = (data << 24); end + endcase + 2: case (addr [1:0]) + 2'b00: begin strobe = 'b_0011; end + 2'b10: begin strobe = 'b_1100; data = (data << 16); end + default: err = True; + endcase + 4: case (addr [1:0]) + 2'b00: strobe = 'b_1111; + default: err = True; + endcase + default: err = True; + endcase + return tuple3 (err, strobe, data); +endfunction + +// ---------------- +// 64b version + +function Tuple3 #(Bool, // err: misaligned, or bad data_width + Bit #(8), // strobe + Bit #(64)) // lane-adjusted data + fn_lane_adjust_64b (Bit #(64) addr, Bit #(4) dw, Bit #(64) data); + + Bit #(8) strobe = 0; + Bool err = False; + + case (dw) + 1: case (addr [2:0]) + 3'b000: begin strobe = 'b_0000_0001; end + 3'b001: begin strobe = 'b_0000_0010; data = (data << 8); end + 3'b010: begin strobe = 'b_0000_0100; data = (data << 16); end + 3'b011: begin strobe = 'b_0000_1000; data = (data << 24); end + 3'b100: begin strobe = 'b_0001_0000; data = (data << 32); end + 3'b101: begin strobe = 'b_0010_0000; data = (data << 40); end + 3'b110: begin strobe = 'b_0100_0000; data = (data << 48); end + 3'b111: begin strobe = 'b_1000_0000; data = (data << 56); end + endcase + 2: case (addr [2:0]) + 3'b000: begin strobe = 'b_0000_0011; end + 3'b010: begin strobe = 'b_0000_1100; data = (data << 16); end + 3'b100: begin strobe = 'b_0011_0000; data = (data << 32); end + 3'b110: begin strobe = 'b_1100_0000; data = (data << 48); end + default: err = True; + endcase + 3: case (addr [2:0]) + 3'b000: begin strobe = 'b_0000_1111; end + 3'b100: begin strobe = 'b_1111_0000; data = (data << 32); end + default: err = True; + endcase + 4: case (addr [2:0]) + 3'b000: begin strobe = 'b_1111_1111; end + default: err = True; + endcase + default: err = True; + endcase + return tuple3 (err, strobe, data); +endfunction + +// ================================================================ +// Lane-unadjust a data word according to the byte-address and data width + +// ---------------- +// 32b version + +function Tuple2 #(Bool, // err: misaligned, or bad data_width + Bit #(32)) // lane-unadjusted data + fn_lane_unadjust_32b (Bit #(32) addr, Bit #(3) dw, Bit #(32) data); + + Bool err = False; + + case (dw) + 1: case (addr [1:0]) + 2'b00: data = (data >> 0); + 2'b01: data = (data >> 8); + 2'b10: data = (data >> 16); + 2'b11: data = (data >> 24); + endcase + 2: case (addr [1:0]) + 2'b00: data = (data >> 0); + 2'b10: data = (data >> 16); + default: err = True; + endcase + 4: case (addr [1:0]) + 2'b00: data = (data >> 0); + default: err = True; + endcase + default: err = True; + endcase + return tuple2 (err, data); +endfunction + +// ---------------- +// 64b version + +function Tuple2 #(Bool, // err: misaligned, or bad data_width + Bit #(64)) // lane-unadjusted data + fn_lane_unadjust_64b (Bit #(64) addr, Bit #(4) dw, Bit #(64) data); + + Bool err = False; + + case (dw) + 1: case (addr [2:0]) + 3'b000: data = (data >> 0); + 3'b001: data = (data >> 8); + 3'b010: data = (data >> 16); + 3'b011: data = (data >> 24); + 3'b100: data = (data >> 32); + 3'b101: data = (data >> 40); + 3'b110: data = (data >> 48); + 3'b111: data = (data >> 56); + endcase + 2: case (addr [2:0]) + 3'b000: data = (data >> 0); + 3'b010: data = (data >> 16); + 3'b100: data = (data >> 32); + 3'b110: data = (data >> 48); + default: err = True; + endcase + 4: case (addr [2:0]) + 3'b000: data = (data >> 0); + 3'b100: data = (data >> 32); + default: err = True; + endcase + 8: case (addr [2:0]) + 3'b000: data = (data >> 0); + default: err = True; + endcase + default: err = True; + endcase + return tuple2 (err, data); +endfunction + +// ================================================================ + +endpackage diff --git a/src_Core/BSV_Additional_Libs/CreditCounter.bsv b/src_Core/BSV_Additional_Libs/CreditCounter.bsv new file mode 100644 index 0000000..f6cc8b9 --- /dev/null +++ b/src_Core/BSV_Additional_Libs/CreditCounter.bsv @@ -0,0 +1,63 @@ +// Copyright (c) 2015-2019 Bluespec, Inc., All Rights Reserved +// Author: Rishiyur S. Nikhil + +// A "credit counter" which can be incremented and decremented concurrently. + +package CreditCounter; + +// ================================================================ +// BSV library imports + +import Cur_Cycle :: *; + +// ================================================================ +// Interface + +interface CreditCounter_IFC #(numeric type w); + // Current value of internal count + method UInt #(w) value; + + // Increment internal count + method Action incr; + + // Decrement internal count + method Action decr; + + // Clear internal count to 0 + method Action clear; +endinterface + +// ================================================================ +// Module implementation +// Scheduling: value < incr < decr < clear + +module mkCreditCounter (CreditCounter_IFC #(w)); + + Reg #(UInt #(w)) crg [3] <- mkCReg (3, 0); + + method UInt #(w) value = crg [1]; + + method Action incr; + if (crg [0] == maxBound) begin + $display ("%0d: ERROR: CreditCounter: overflow", cur_cycle); + $finish (1); // Assertion failure + end + crg [0] <= crg [0] + 1; + endmethod + + method Action decr () if (crg [1] != 0); + if (crg [1] == 0) begin + $display ("%0d: ERROR: CreditCounter: underflow", cur_cycle); + $finish (1); // Assertion failure + end + crg [1] <= crg [1] - 1; + endmethod + + method Action clear; + crg [2] <= 0; + endmethod +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/BSV_Additional_Libs/Cur_Cycle.bsv b/src_Core/BSV_Additional_Libs/Cur_Cycle.bsv new file mode 100644 index 0000000..cb40c65 --- /dev/null +++ b/src_Core/BSV_Additional_Libs/Cur_Cycle.bsv @@ -0,0 +1,15 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved. + +package Cur_Cycle; + +// ================================================================ +// A convenience function to return the current cycle number during BSV simulations + +ActionValue #(Bit #(32)) cur_cycle = actionvalue + Bit #(32) t <- $stime; + return t / 10; + endactionvalue; + +// ================================================================ + +endpackage diff --git a/src_Core/BSV_Additional_Libs/EdgeFIFOFs.bsv b/src_Core/BSV_Additional_Libs/EdgeFIFOFs.bsv new file mode 100644 index 0000000..28f05d3 --- /dev/null +++ b/src_Core/BSV_Additional_Libs/EdgeFIFOFs.bsv @@ -0,0 +1,119 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved. + +// EdgeFIFOFs are 1-element FIFOFs used as generic interfaces by IPs +// where they connect to interconnect fabrics. The overall interface +// is a standard FIFOF interface. The IP-side is guarded. The +// Fabric-side is unguarded, so that it's easy to attach transactors +// for some particular bus interface such as AXI4-Lite, AHB-Lite, etc. + + +package EdgeFIFOFs; + +// ================================================================ +// BSV library imports + +import FIFOF :: *; + +// ================================================================ +// FIFOFs for Master IPs. +// enq (IP-side) is guarded, deq (Fabric-side) is not. + +module mkMaster_EdgeFIFOF (FIFOF #(t)) + provisos (Bits #(t, tsz)); + + Integer port_deq = 0; + Integer port_enq = 1; + Integer port_clear = 2; + + Array #(Reg #(Bool)) crg_full <- mkCReg (3, False); + Reg #(t) rg_payload <- mkRegU; + + // ---------------- + // Clear + + method Action clear; + crg_full [port_clear] <= False; + endmethod + + // ---------------- + // Enq side (IP-side; guarded) + + method Bool notFull (); + return (! crg_full [port_enq]); + endmethod + + method Action enq (t x) if (! crg_full [port_enq]); + crg_full [port_enq] <= True; + rg_payload <= x; + endmethod + + // ---------------- + // Deq side (Fabric-side; unguarded) + + method Bool notEmpty (); + return crg_full [port_deq]; + endmethod + + method t first (); // unguarded + return rg_payload; + endmethod + + method Action deq (); // unguarded + crg_full [port_deq] <= False; + endmethod + +endmodule + +// ================================================================ +// For Slave IPs. +// enq (Fabric-side) is unguarded, deq (IP-side) is guarded. + +module mkSlave_EdgeFIFOF (FIFOF #(t)) + provisos (Bits #(t, tsz)); + + Integer port_deq = 0; + Integer port_enq = 1; + Integer port_clear = 2; + + Array #(Reg #(Bool)) crg_full <- mkCReg (3, False); + Reg #(t) rg_payload <- mkRegU; + + // ---------------- + // Clear + + method Action clear; + crg_full [port_clear] <= False; + endmethod + + // ---------------- + // Enq side (IP-side; unguarded) + + method Bool notFull (); + return (! crg_full [port_enq]); + endmethod + + method Action enq (t x); // unguarded + crg_full [port_enq] <= True; + rg_payload <= x; + endmethod + + // ---------------- + // Deq side (Fabric-side; guarded) + + method Bool notEmpty (); + return crg_full [port_deq]; + endmethod + + method t first () if (crg_full [port_deq]); + return rg_payload; + endmethod + + method Action deq () if (crg_full [port_deq]); + crg_full [port_deq] <= False; + endmethod + +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/BSV_Additional_Libs/GetPut_Aux.bsv b/src_Core/BSV_Additional_Libs/GetPut_Aux.bsv new file mode 100644 index 0000000..e2087ef --- /dev/null +++ b/src_Core/BSV_Additional_Libs/GetPut_Aux.bsv @@ -0,0 +1,126 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved. + +package GetPut_Aux; + +// ================================================================ +// Misc. additional useful definitions on FIFOs, Gets and Puts + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; + +// ================================================================ +// A convenience function to 'pop' a value from a FIFO, FIFOF, ... + +function ActionValue #(t) pop (ifc f) + provisos (ToGet #(ifc, t)); + return toGet (f).get; +endfunction + +// ================================================================ +// No-op stubs for Get, Put, Client and Server interfaces. +// 'get' is never enabled. +// 'put' is always enabled and just discards its argument. + +Get #(t) getstub = interface Get; + method ActionValue #(t) get () if (False); + return ?; + endmethod + endinterface; + +Put #(t) putstub = interface Put; + method Action put (t x) if (True); + noAction; + endmethod + endinterface; + +Client #(t1,t2) client_stub = interface Client; + interface request = getstub; + interface response = putstub; + endinterface; + +Server #(t1,t2) server_stub = interface Server; + interface request = putstub; + interface response = getstub; + endinterface; + +// ================================================================ +// For debugging, a convenience function to display full/empty status of a FIFO + +function Action fa_show_FIFOF_state (String s, FIFOF #(t) f); + action + $write ("%s:", s); + if (! f.notEmpty) $display (" Empty"); + else if (! f.notFull) $display (" Full"); + else $display (" neither empty nor full"); + endaction +endfunction + +// ================================================================ +// DiscardFIFOF +// enqueue side: always ready, and discards everything +// dequeue side: always empty, never returns anything + +module mkDiscardFIFOF (FIFOF #(t)); + method Action enq (t x); + noAction; + endmethod + + method Bool notFull; + return True; + endmethod + + method t first () if (False); + return ?; + endmethod + + method Action deq () if (False); + noAction; + endmethod + + method Bool notEmpty; + return False; + endmethod + + method Action clear; + noAction; + endmethod +endmodule + +// ================================================================ +// dummy_FIFO interface +// enqueue side: never ready; +// dequeue side: never ready + +FIFOF #(t) dummy_FIFOF = interface FIFOF; + method Action enq (x) if (False); + noAction; + endmethod + + method notFull; + return False; + endmethod + + method first () if (False); + return ?; + endmethod + + method Action deq () if (False); + noAction; + endmethod + + method notEmpty; + return False; + endmethod + + method Action clear; + noAction; + endmethod + endinterface; + +// ================================================================ + +endpackage diff --git a/src_Core/BSV_Additional_Libs/Semi_FIFOF.bsv b/src_Core/BSV_Additional_Libs/Semi_FIFOF.bsv new file mode 100644 index 0000000..f52f504 --- /dev/null +++ b/src_Core/BSV_Additional_Libs/Semi_FIFOF.bsv @@ -0,0 +1,137 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved + +package Semi_FIFOF; + +// ================================================================ +// Separate interfaces for input-side and output-side of FIFOF. +// Conversion functions to these, from FIFOF interfaces. + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import Connectable :: *; + +// ================================================================ +// Semi-FIFOF interfaces + +interface FIFOF_I #(type t); + method Action enq (t x); + method Bool notFull (); +endinterface + +interface FIFOF_O #(type t); + method t first (); + method Action deq (); + method Bool notEmpty (); +endinterface + +// ================================================================ +// Converters from FIFOF + +function FIFOF_I #(t) to_FIFOF_I (FIFOF #(t) f); + return interface FIFOF_I; + method enq (x) = f.enq (x); + method notFull = f.notFull; + endinterface; +endfunction + +function FIFOF_O #(t) to_FIFOF_O (FIFOF #(t) f); + return interface FIFOF_O; + method first = f.first; + method deq = f.deq; + method notEmpty = f.notEmpty; + endinterface; +endfunction + +// ================================================================ +// Connections + +// ---------------- +// FIFOF_O to FIFOF_I + +instance Connectable #(FIFOF_O #(t), FIFOF_I #(t)); + module mkConnection #(FIFOF_O #(t) fo, FIFOF_I #(t) fi) (Empty); + rule rl_connect; + fi.enq (fo.first); + fo.deq; + endrule + endmodule +endinstance + +// ---------------- +// FIFOF_I to FIFOF_O + +instance Connectable #(FIFOF_I #(t), FIFOF_O #(t)); + module mkConnection #(FIFOF_I #(t) fi, FIFOF_O #(t) fo) (Empty); + mkConnection (fo, fi); + endmodule +endinstance + +// ---------------- +// FIFOF_O to FIFOF + +instance Connectable #(FIFOF_O #(t), FIFOF #(t)); + module mkConnection #(FIFOF_O #(t) fo, FIFOF #(t) fi) (Empty); + rule rl_connect; + fi.enq (fo.first); + fo.deq; + endrule + endmodule +endinstance + +// ---------------- +// FIFOF to FIFOF_I + +instance Connectable #(FIFOF #(t), FIFOF_I #(t)); + module mkConnection #(FIFOF #(t) fo, FIFOF_I #(t) fi) (Empty); + rule rl_connect; + fi.enq (fo.first); + fo.deq; + endrule + endmodule +endinstance + +// ================================================================ +// Convenience function combining first/enq + +function ActionValue #(t) pop_o (FIFOF_O #(t) f); + actionvalue + f.deq; + return f.first; + endactionvalue +endfunction + +// ================================================================ +// Dummy tie-off interfaces + +// dummy_FIFO_I that never accepts anything (always "full") + +FIFOF_I #(t) dummy_FIFOF_I = interface FIFOF_I; + method Action enq (x) if (False); + noAction; + endmethod + method notFull; + return False; + endmethod + endinterface; + +// Dummy FIFO_O that never yields anything (always "empty") + +FIFOF_O #(t) dummy_FIFOF_O = interface FIFOF_O; + method first () if (False); + return ?; + endmethod + + method Action deq () if (False); + noAction; + endmethod + + method notEmpty; + return False; + endmethod + endinterface; + +// ================================================================ + +endpackage diff --git a/src_Core/CPU/Core.bsv b/src_Core/CPU/Core.bsv new file mode 100644 index 0000000..6333c91 --- /dev/null +++ b/src_Core/CPU/Core.bsv @@ -0,0 +1,977 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// Portions Copyright (c) Bluespec, Inc. + +`include "ProcConfig.bsv" + +import Vector::*; +import BuildVector::*; +import DefaultValue::*; +import ClientServer::*; +import GetPut::*; +import Assert::*; +import Cntrs::*; +import ConfigReg::*; +import FIFO::*; +import Fifo::*; +import Ehr::*; +import Connectable::*; + +import Types::*; +import ProcTypes::*; +import CacheUtils::*; +import TlbTypes::*; +import SynthParam::*; +import VerificationPacket::*; +import Performance::*; +import HasSpecBits::*; +import Exec::*; +import FetchStage::*; +import ITlb::*; +import DTlb::*; +import L2Tlb::*; +import TlbConnect::*; +import EpochManager::*; +import PhysRFile::*; +import RFileSynth::*; +import RenamingTable::*; +import ReorderBuffer::*; +import ReorderBufferSynth::*; +import Scoreboard::*; +import ScoreboardSynth::*; +import SpecTagManager::*; +import Fpu::*; +import MulDiv::*; +import ReservationStationEhr::*; +import ReservationStationAlu::*; +import ReservationStationMem::*; +import ReservationStationFpuMulDiv::*; +import AluExePipeline::*; +import FpuMulDivExePipeline::*; +import MemExePipeline::*; +import SplitLSQ::*; +import StoreBuffer::*; +import GlobalSpecUpdate::*; +import CCTypes::*; +import L1CoCache::*; +import L1Bank::*; +import IBank::*; +import MMIOCore::*; +import RenameStage::*; +import CommitStage::*; +import Bypass::*; + +import CsrFile :: *; + +interface CoreReq; + method Action start( + Addr startpc, + Addr toHostAddr, Addr fromHostAddr + ); + method Action perfReq(PerfLocation loc, PerfType t); +endinterface + +interface CoreIndInv; + method ActionValue#(ProcPerfResp) perfResp; + method ActionValue#(void) terminate; +endinterface + +interface CoreDeadlock; + interface Get#(L1DCRqStuck) dCacheCRqStuck; + interface Get#(L1DPRqStuck) dCachePRqStuck; + interface Get#(L1ICRqStuck) iCacheCRqStuck; + interface Get#(L1IPRqStuck) iCachePRqStuck; + interface Get#(RenameStuck) renameInstStuck; + interface Get#(RenameStuck) renameCorrectPathStuck; + interface Get#(CommitStuck) commitInstStuck; + interface Get#(CommitStuck) commitUserInstStuck; + interface Get#(void) checkStarted; +endinterface + +interface CoreRenameDebug; + interface Get#(RenameErrInfo) renameErr; +endinterface + +interface Core; + // core request & indication + interface CoreReq coreReq; + interface CoreIndInv coreIndInv; + // coherent caches to LLC + interface ChildCacheToParent#(L1Way, void) dCacheToParent; + interface ChildCacheToParent#(L1Way, void) iCacheToParent; + // DMA to LLC + interface TlbMemClient tlbToMem; + // MMIO + interface MMIOCoreToPlatform mmioToPlatform; + // stats enable + method ActionValue#(Bool) sendDoStats; + method Action recvDoStats(Bool x); + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface CoreDeadlock deadlock; + // debug rename + interface CoreRenameDebug renameDebug; + + // Bluespec: external interrupt requests targeting Machine and Supervisor modes + method Action setMEIP (Bit #(1) v); + method Action setSEIP (Bit #(1) v); +endinterface + +// fixpoint to instantiate modules +interface CoreFixPoint; + interface Vector#(AluExeNum, AluExePipeline) aluExeIfc; + interface Vector#(FpuMulDivExeNum, FpuMulDivExePipeline) fpuMulDivExeIfc; + interface MemExePipeline memExeIfc; + method Action killAll; // kill everything: used by commit stage + interface Reg#(Bool) doStatsIfc; +endinterface + +(* synthesize *) +module mkCore#(CoreId coreId)(Core); + let verbose = True; + Reg#(Bool) outOfReset <- mkReg(False); + rule rl_outOfReset if (!outOfReset); + $fwrite(stderr, "mkProc came out of reset\n"); + outOfReset <= True; + endrule + + Reg#(Bool) started <- mkReg(False); + + // front end + FetchStage fetchStage <- mkFetchStage; + ITlb iTlb = fetchStage.iTlbIfc; + ICoCache iMem = fetchStage.iMemIfc; + + // back end + RFileSynth rf <- mkRFileSynth; + + // Bluespec: CsrFile including external interrupt request methods + CsrFile csrf <- mkCsrFile(zeroExtend(coreId)); // hartid in CSRF should be core id + + RegRenamingTable regRenamingTable <- mkRegRenamingTable; + EpochManager epochManager <- mkEpochManager; + SpecTagManager specTagManager <- mkSpecTagManager; + ReorderBufferSynth rob <- mkReorderBufferSynth; + + // We have two scoreboards: one conservative and other aggressive + // - Aggressive sb is checked at rename stage, so inst after rename may be issued early + // - Conservative sb is checked at reg read stage, to ensure correctness + // Every pipeline should set both sb if it needs to write reg + // - Conservative sb is set when data is written into rf + // - Aggressive sb is set when pipeline sends out wakeup for reservation staion + // Note that wakeup can be sent early if it knows when the data will be produced + ScoreboardCons sbCons <- mkScoreboardCons; // conservative sb + ScoreboardAggr sbAggr <- mkScoreboardAggr; // aggressive sb + + // MMIO: need to track in flight CSR inst or interrupt; note we can at most + // 1 CSR inst or 1 interrupt in ROB, so just use 1 bit track it. Commit + // stage use port 0 to reset this, and Rename stage use port 1 to set this. + Ehr#(2, Bool) csrInstOrInterruptInflight <- mkEhr(False); + Reg#(Bool) csrInstOrInterruptInflight_commit = csrInstOrInterruptInflight[0]; + Reg#(Bool) csrInstOrInterruptInflight_rename = csrInstOrInterruptInflight[1]; + MMIOCoreInput mmioInIfc = (interface MMIOCoreInput; + interface fetch = fetchStage.mmioIfc; + method getMSIP = csrf.getMSIP; + method setMSIP = csrf.setMSIP; + method setMTIP = csrf.setMTIP; + method noInflightCSRInstOrInterrupt = !csrInstOrInterruptInflight[0]; + method setTime = csrf.setTime; + endinterface); + MMIOCore mmio <- mkMMIOCore(mmioInIfc); + + // fix point module to instantiate other function units + module mkCoreFixPoint#(CoreFixPoint fix)(CoreFixPoint); + // spec update + Vector#(AluExeNum, SpeculationUpdate) aluSpecUpdate; + for(Integer i = 0; i < valueof(AluExeNum); i = i+1) begin + aluSpecUpdate[i] = fix.aluExeIfc[i].specUpdate; + end + Vector#(FpuMulDivExeNum, SpeculationUpdate) fpuMulDivSpecUpdate; + for(Integer i = 0; i < valueof(FpuMulDivExeNum); i = i+1) begin + fpuMulDivSpecUpdate[i] = fix.fpuMulDivExeIfc[i].specUpdate; + end + GlobalSpecUpdate#(CorrectSpecPortNum, ConflictWrongSpecPortNum) globalSpecUpdate <- mkGlobalSpecUpdate( + joinSpeculationUpdate( + append(append(vec(regRenamingTable.specUpdate, + specTagManager.specUpdate, + fix.memExeIfc.specUpdate), aluSpecUpdate), fpuMulDivSpecUpdate) + ), + rob.specUpdate + ); + + // whether perf data is collected + Reg#(Bool) doStatsReg <- mkConfigReg(False); + + // redirect func + //function Action redirectFunc(Addr trap_pc, Maybe#(SpecTag) spec_tag, InstTag inst_tag ); + //action + // if (verbose) $fdisplay(stdout, "[redirect_action] new pc = 0x%8x, spec_tag = ", trap_pc, fshow(spec_tag)); + // epochManager.redirect; + // fetchStage.redirect(trap_pc); + // if (spec_tag matches tagged Valid .valid_spec_tag) begin + // globalSpecUpdate.incorrectSpec(valid_spec_tag, inst_tag); + // end + //endaction + //endfunction + + // write aggressive elements + wakupe reservation stations + function Action writeAggr(Integer wrAggrPort, PhyRIndx dst); + action + sbAggr.setReady[wrAggrPort].put(dst); + for(Integer i = 0; i < valueof(AluExeNum); i = i+1) begin + fix.aluExeIfc[i].rsAluIfc.setRegReady[wrAggrPort].put(Valid (dst)); + end + for(Integer i = 0; i < valueof(FpuMulDivExeNum); i = i+1) begin + fix.fpuMulDivExeIfc[i].rsFpuMulDivIfc.setRegReady[wrAggrPort].put(Valid (dst)); + end + fix.memExeIfc.rsMemIfc.setRegReady[wrAggrPort].put(Valid (dst)); + endaction + endfunction + + // write conservative elements + function Action writeCons(Integer wrConsPort, PhyRIndx dst, Data data); + action + rf.write[wrConsPort].wr(dst, data); + sbCons.setReady[wrConsPort].put(dst); + endaction + endfunction + + Vector#(AluExeNum, FIFO#(FetchTrainBP)) trainBPQ <- replicateM(mkFIFO); + Vector#(AluExeNum, AluExePipeline) aluExe; + for(Integer i = 0; i < valueof(AluExeNum); i = i+1) begin + Vector#(2, SendBypass) sendBypassIfc; // exe and finish + for(Integer sendPort = 0; sendPort < 2; sendPort = sendPort + 1) begin + sendBypassIfc[sendPort] = (interface SendBypass; + method Action send(PhyRIndx dst, Data data); + // broadcast bypass + Integer recvPort = valueof(AluExeNum) * sendPort + i; + for(Integer j = 0; j < valueof(FpuMulDivExeNum); j = j+1) begin + fix.fpuMulDivExeIfc[j].recvBypass[recvPort].recv(dst, data); + end + fix.memExeIfc.recvBypass[recvPort].recv(dst, data); + for(Integer j = 0; j < valueof(AluExeNum); j = j+1) begin + fix.aluExeIfc[j].recvBypass[recvPort].recv(dst, data); + end + endmethod + endinterface); + end + let aluExeInput = (interface AluExeInput; + method sbCons_lazyLookup = sbCons.lazyLookup[aluRdPort(i)].get; + method rf_rd1 = rf.read[aluRdPort(i)].rd1; + method rf_rd2 = rf.read[aluRdPort(i)].rd2; + method csrf_rd = csrf.rd; + method rob_getPC = rob.getOrigPC[i].get; + method rob_getPredPC = rob.getOrigPredPC[i].get; + method rob_setExecuted = rob.setExecuted_doFinishAlu[i].set; + method fetch_train_predictors = toPut(trainBPQ[i]).put; + method setRegReadyAggr = writeAggr(aluWrAggrPort(i)); + interface sendBypass = sendBypassIfc; + method writeRegFile = writeCons(aluWrConsPort(i)); + method Action redirect(Addr new_pc, SpecTag spec_tag, InstTag inst_tag); + if (verbose) begin + $display("[ALU redirect - %d] ", i, fshow(new_pc), + "; ", fshow(spec_tag), "; ", fshow(inst_tag)); + end + epochManager.incrementEpoch; + fetchStage.redirect(new_pc); + globalSpecUpdate.incorrectSpec(False, spec_tag, inst_tag); + endmethod + method correctSpec = globalSpecUpdate.correctSpec[finishAluCorrectSpecPort(i)].put; + method doStats = doStatsReg._read; + endinterface); + aluExe[i] <- mkAluExePipeline(aluExeInput); + // truly call fetch method to train branch predictor + rule doFetchTrainBP; + let train <- toGet(trainBPQ[i]).get; + fetchStage.train_predictors( + train.pc, train.nextPc, train.iType, train.taken, + train.dpTrain, train.mispred + ); + endrule + end + + Vector#(FpuMulDivExeNum, FpuMulDivExePipeline) fpuMulDivExe; + for(Integer i = 0; i < valueof(FpuMulDivExeNum); i = i+1) begin + let fpuMulDivExeInput = (interface FpuMulDivExeInput; + method sbCons_lazyLookup = sbCons.lazyLookup[fpuMulDivRdPort(i)].get; + method rf_rd1 = rf.read[fpuMulDivRdPort(i)].rd1; + method rf_rd2 = rf.read[fpuMulDivRdPort(i)].rd2; + method rf_rd3 = rf.read[fpuMulDivRdPort(i)].rd3; + method csrf_rd = csrf.rd; + method rob_setExecuted = rob.setExecuted_doFinishFpuMulDiv[i].set; + method Action writeRegFile(PhyRIndx dst, Data data); + writeAggr(fpuMulDivWrAggrPort(i), dst); + writeCons(fpuMulDivWrConsPort(i), dst, data); + endmethod + method conflictWrongSpec = globalSpecUpdate.conflictWrongSpec[finishFpuMulDivConflictWrongSpecPort(i)].put(?); + method doStats = doStatsReg._read; + endinterface); + fpuMulDivExe[i] <- mkFpuMulDivExePipeline(fpuMulDivExeInput); + end + + let memExeInput = (interface MemExeInput; + method sbCons_lazyLookup = sbCons.lazyLookup[memRdPort].get; + method rf_rd1 = rf.read[memRdPort].rd1; + method rf_rd2 = rf.read[memRdPort].rd2; + method csrf_rd = csrf.rd; + method rob_getPC = rob.getOrigPC[valueof(AluExeNum)].get; // last getPC port + method rob_setExecuted_doFinishMem = rob.setExecuted_doFinishMem; + method rob_setExecuted_deqLSQ = rob.setExecuted_deqLSQ; + method isMMIOAddr = mmio.isMMIOAddr; + method mmioReq = mmio.dataReq; + method mmioRespVal = mmio.dataRespVal; + method mmioRespDeq = mmio.dataRespDeq; + method setRegReadyAggr_mem = writeAggr(memWrAggrPort); + method setRegReadyAggr_forward = writeAggr(forwardWrAggrPort); + method writeRegFile = writeCons(memWrConsPort); + method doStats = doStatsReg._read; + endinterface); + let memExe <- mkMemExePipeline(memExeInput); + + interface aluExeIfc = aluExe; + interface fpuMulDivExeIfc = fpuMulDivExe; + interface memExeIfc = memExe; + method Action killAll; + globalSpecUpdate.incorrectSpec(True, ?, ?); + endmethod + interface doStatsIfc = doStatsReg; + endmodule + CoreFixPoint coreFix <- moduleFix(mkCoreFixPoint); + + Vector#(AluExeNum, ReservationStationAlu) reservationStationAlu; + for(Integer i = 0; i < valueof(AluExeNum); i = i+1) begin + reservationStationAlu[i] = coreFix.aluExeIfc[i].rsAluIfc; + end + Vector#(FpuMulDivExeNum, ReservationStationFpuMulDiv) reservationStationFpuMulDiv; + for(Integer i = 0; i < valueof(FpuMulDivExeNum); i = i+1) begin + reservationStationFpuMulDiv[i] = coreFix.fpuMulDivExeIfc[i].rsFpuMulDivIfc; + end + ReservationStationMem reservationStationMem = coreFix.memExeIfc.rsMemIfc; + DTlbSynth dTlb = coreFix.memExeIfc.dTlbIfc; + SplitLSQ lsq = coreFix.memExeIfc.lsqIfc; + StoreBuffer stb = coreFix.memExeIfc.stbIfc; + DCoCache dMem = coreFix.memExeIfc.dMemIfc; + + // L2 TLB + L2Tlb l2Tlb <- mkL2Tlb; + mkTlbConnect(iTlb.toParent, dTlb.toParent, l2Tlb.toChildren); + + // flags to flush + Reg#(Bool) flush_tlbs <- mkReg(False); + Reg#(Bool) update_vm_info <- mkReg(False); + Reg#(Bool) flush_reservation <- mkReg(False); +`ifdef SECURITY + Reg#(Bool) flush_caches <- mkReg(False); + Reg#(Bool) flush_brpred <- mkReg(False); +`else + Reg#(Bool) flush_caches <- mkReadOnlyReg(False); + Reg#(Bool) flush_brpred <- mkReadOnlyReg(False); +`endif +`ifdef SELF_INV_CACHE + Reg#(Bool) reconcile_i <- mkReg(False); +`else + Reg#(Bool) reconcile_i <- mkReadOnlyReg(False); +`endif +`ifdef SELF_INV_CACHE +`ifdef SYSTEM_SELF_INV_L1D + Reg#(Bool) reconcile_d <- mkReg(False); +`else // !SYSTEM_SELF_INV_L1D + Reg#(Bool) reconcile_d <- mkReadOnlyReg(False); +`endif // SYSTEM_SELF_INV_L1D +`else // !SELF_INV_CACHE + Reg#(Bool) reconcile_d <- mkReadOnlyReg(False); +`endif // SELF_INV_CACHE + + // performance counters + Reg#(Bool) doStats = coreFix.doStatsIfc; // whether data is collected +`ifdef PERF_COUNT + // OOO execute stag (in AluExePipeline and MemExePipeline) + + // commit stage (many in CommitStage.bsv) + // cycle + Count#(Data) cycleCnt <- mkCount(0); + + // buffer/tags size + Count#(Data) ldqFullCycles <- mkCount(0); + Count#(Data) stqFullCycles <- mkCount(0); + Count#(Data) robFullCycles <- mkCount(0); + Count#(Data) aluRS0FullCycles <- mkCount(0); + Count#(Data) aluRS1FullCycles <- mkCount(0); + Count#(Data) fpuMulDivRSFullCycles <- mkCount(0); + Count#(Data) memRSFullCycles <- mkCount(0); + Count#(Data) epochFullCycles <- mkCount(0); + Count#(Data) specTagFullCycles <- mkCount(0); + + // FIFOs to connect performance counters + FIFO#(ExeStagePerfType) exePerfReqQ <- mkFIFO1; + FIFO#(ComStagePerfType) comPerfReqQ <- mkFIFO1; + FIFO#(CoreSizePerfType) sizePerfReqQ <- mkFIFO1; + Fifo#(1, PerfResp#(ExeStagePerfType)) exePerfRespQ <- mkCFFifo; + Fifo#(1, PerfResp#(ComStagePerfType)) comPerfRespQ <- mkCFFifo; + Fifo#(1, PerfResp#(CoreSizePerfType)) sizePerfRespQ <- mkCFFifo; + + // FIFO of perf resp + FIFO#(ProcPerfResp) perfRespQ <- mkFIFO1; +`endif + // FIFO of perf req + FIFO#(ProcPerfReq) perfReqQ <- mkFIFO1; + + // -- End of performance counters + +`ifdef CHECK_DEADLOCK + // when to start deadlock checking + Reg#(Bool) startDeadlockCheck <- mkReg(False); + FIFO#(void) deadlockCheckStartedQ <- mkFIFO; + + rule doStartDeadlockCheck(!startDeadlockCheck && started); + startDeadlockCheck <= True; + deadlockCheckStartedQ.enq(?); + endrule +`endif + + // Rename stage + let renameInput = (interface RenameInput; + interface fetchIfc = fetchStage; + interface robIfc = rob; + interface rtIfc = regRenamingTable; + interface sbConsIfc = sbCons; + interface sbAggrIfc = sbAggr; + interface csrfIfc = csrf; + interface emIfc = epochManager; + interface smIfc = specTagManager; + interface rsAluIfc = reservationStationAlu; + interface rsFpuMulDivIfc = reservationStationFpuMulDiv; + interface rsMemIfc = reservationStationMem; + interface lsqIfc = lsq; + method pendingMMIOPRq = mmio.hasPendingPRq; + method issueCsrInstOrInterrupt = csrInstOrInterruptInflight_rename._write(True); + method Bool checkDeadlock; +`ifdef CHECK_DEADLOCK + return startDeadlockCheck; +`else + return False; +`endif + endmethod + method doStats = coreFix.doStatsIfc._read; + endinterface); + RenameStage renameStage <- mkRenameStage(renameInput); + + // commit stage + let commitInput = (interface CommitInput; + interface robIfc = rob; + interface rtIfc = regRenamingTable; + interface csrfIfc = csrf; + method stbEmpty = stb.isEmpty; + method stqEmpty = lsq.stqEmpty; + method lsqSetAtCommit = lsq.setAtCommit; + method tlbNoPendingReq = iTlb.noPendingReq && dTlb.noPendingReq; + method setFlushTlbs = flush_tlbs._write(True); + method setUpdateVMInfo = update_vm_info._write(True); + method setFlushReservation = flush_reservation._write(True); + method setFlushBrPred = flush_brpred._write(True); + method setFlushCaches = flush_caches._write(True); + method setReconcileI = reconcile_i._write(True); + method setReconcileD = reconcile_d._write(True); + method killAll = coreFix.killAll; + method redirectPc = fetchStage.redirect; + method setFetchWaitRedirect = fetchStage.setWaitRedirect; + method incrementEpoch = epochManager.incrementEpoch; + method commitCsrInstOrInterrupt = csrInstOrInterruptInflight_commit._write(False); + method doStats = coreFix.doStatsIfc._read; + method Bool checkDeadlock; +`ifdef CHECK_DEADLOCK + return startDeadlockCheck; +`else + return False; +`endif + endmethod + endinterface); + CommitStage commitStage <- mkCommitStage(commitInput); + + // send rob enq time to reservation stations + (* fire_when_enabled, no_implicit_conditions *) + rule sendRobEnqTime; + InstTime t = rob.getEnqTime; + reservationStationMem.setRobEnqTime(t); + for(Integer i = 0; i < valueof(FpuMulDivExeNum); i = i+1) begin + reservationStationFpuMulDiv[i].setRobEnqTime(t); + end + for(Integer i = 0; i < valueof(AluExeNum); i = i+1) begin + reservationStationAlu[i].setRobEnqTime(t); + end + endrule + + // preempt has 2 functions here + // 1. break scheduling cycles + // 2. XXX since csrf is configReg now, we should not let this rule fire together with doCommit + // because we read csrf here and write csrf in doCommit + + // TODO We can use wires to catch flush / updateVM enable sigals, because + // there cannot be any instruction in pipeline (there can be poisoned inst + // which cannot change CSR or link reg in D$), so doCommit cannot fire. + // MMIO manager may change pending interrupt bits, but will not affect VM + // info. + (* preempts = "prepareCachesAndTlbs, commitStage.doCommitTrap_handle" *) + (* preempts = "prepareCachesAndTlbs, commitStage.doCommitSystemInst" *) + rule prepareCachesAndTlbs(flush_reservation || flush_tlbs || update_vm_info); + if (flush_reservation) begin + flush_reservation <= False; + dMem.resetLinkAddr; + end + if (flush_tlbs) begin + flush_tlbs <= False; + iTlb.flush; + dTlb.flush; + end + if (update_vm_info) begin + update_vm_info <= False; + let vmI = csrf.vmI; + let vmD = csrf.vmD; + iTlb.updateVMInfo(vmI); + dTlb.updateVMInfo(vmD); + l2Tlb.updateVMInfo(vmI, vmD); + end + endrule + +`ifdef SECURITY + // Use wires to capture flush regs and empty signals. This is ok because + // there cannot be any activity to make empty -> not-empty or need-flush -> + // no-need-flush when we are trying to flush. + PulseWire doFlushCaches <- mkPulseWire; + PulseWire doFlushBrPred <- mkPulseWire; + + rule setDoFlushCaches(flush_caches && fetchStage.emptyForFlush && lsq.noWrongPathLoads); + doFlushCaches.send; + endrule + + rule setDoFlushBrPred(flush_brpred && fetchStage.emptyForFlush); + doFlushBrPred.send; + endrule + + // security flush cache: need to wait for wrong path loads or inst fetches + // to finish + rule flushCaches(doFlushCaches); + flush_caches <= False; + iMem.flush; + dMem.flush; + endrule + + // security flush branch predictors: wait for wrong path inst fetches to + // finish + rule flushBrPred(doFlushBrPred); + flush_brpred <= False; + fetchStage.flush_predictors; + endrule +`endif + +`ifdef SELF_INV_CACHE + // Use wires to capture flush regs and empty signals. This is ok because + // there cannot be any activity to make empty -> not-empty or need-flush -> + // no-need-flush when we are trying to flush. + PulseWire doReconcileI <- mkPulseWire; + + // We don't really need to wait for fetch to be empty, but just in case we + // back pressure I TLB because I$ is reconciling. + rule setDoReconcileI(reconcile_i && fetchStage.emptyForFlush); + doReconcileI.send; + endrule + + rule reconcileI(doReconcileI); + reconcile_i <= False; + iMem.reconcile; + endrule + +`ifdef SYSTEM_SELF_INV_L1D + PulseWire doReconcileD <- mkPulseWire; + + Reg#(Bool) waitReconcileD <- mkReg(False); + + // We don't really need to wait for lsq empty, but just in case + rule setDoReconcileD(reconcile_d && lsq.noWrongPathLoads); + doReconcileD.send; + endrule + + rule startReconcileD(doReconcileD && !waitReconcileD); + coreFix.memExeIfc.reconcile.request.put(?); + waitReconcileD <= True; + endrule + + rule completeReconcileD(waitReconcileD); + let unused <- coreFix.memExeIfc.reconcile.response.get; + waitReconcileD <= False; + reconcile_d <= False; + endrule +`endif // SYSTEM_SELF_INV_L1D +`endif // SELF_INV_CACHE + + rule readyToFetch( + !flush_reservation && !flush_tlbs && !update_vm_info + && iTlb.flush_done && dTlb.flush_done +`ifdef SECURITY + && !flush_caches && !flush_brpred + && iMem.flush_done && dMem.flush_done + && fetchStage.flush_predictors_done +`endif +`ifdef SELF_INV_CACHE + && !reconcile_i && iMem.reconcile_done +`ifdef SYSTEM_SELF_INV_L1D + && !reconcile_d +`endif +`endif + ); + fetchStage.done_flushing(); + endrule + +`ifdef PERF_COUNT + // incr cycle count + (* fire_when_enabled, no_implicit_conditions *) + rule incCycleCnt(doStats); + cycleCnt.incr(1); + endrule + + // incr buffer full cycles + (* fire_when_enabled, no_implicit_conditions *) + rule incLdQFull(doStats && lsq.ldqFull_ehrPort0); + ldqFullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incStQFull(doStats && lsq.stqFull_ehrPort0); + stqFullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incROBFull(doStats && rob.isFull_ehrPort0); + robFullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incAluRS0Full(doStats && reservationStationAlu[0].isFull_ehrPort0); + aluRS0FullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incAluRS1Full(doStats && reservationStationAlu[1].isFull_ehrPort0); + aluRS1FullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incFpuMulDivRSFull(doStats && reservationStationFpuMulDiv[0].isFull_ehrPort0); + fpuMulDivRSFullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incMemRSFull(doStats && reservationStationMem.isFull_ehrPort0); + memRSFullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incEpochFull(doStats && epochManager.isFull_ehrPort0); + epochFullCycles.incr(1); + endrule + (* fire_when_enabled, no_implicit_conditions *) + rule incSpecTagFull(doStats && specTagManager.isFull_ehrPort0); + specTagFullCycles.incr(1); + endrule + + // broadcast whether we should collect data + rule broadcastDoStats; + let stats = csrf.doPerfStats; + doStats <= stats; + iMem.perf.setStatus(stats); + dMem.perf.setStatus(stats); + iTlb.perf.setStatus(stats); + dTlb.perf.setStatus(stats); + l2Tlb.perf.setStatus(stats); + fetchStage.perf.setStatus(stats); + + if(stats && !doStats) begin + $display("[stats] enabled"); + end + else if(!stats && doStats) begin + $display("[stats] disabled"); + end + endrule + + // dispatch perf req + rule dispathPerfReq; + perfReqQ.deq; + let r = perfReqQ.first; + case(r.loc) + ICache: begin + iMem.perf.req(unpack(truncate(r.pType))); + end + DCache: begin + dMem.perf.req(unpack(truncate(r.pType))); + end + ITlb: begin + iTlb.perf.req(unpack(truncate(r.pType))); + end + DTlb: begin + dTlb.perf.req(unpack(truncate(r.pType))); + end + L2Tlb: begin + l2Tlb.perf.req(unpack(truncate(r.pType))); + end + DecStage: begin + fetchStage.perf.req(unpack(truncate(r.pType))); + end + ExeStage: begin + exePerfReqQ.enq(unpack(truncate(r.pType))); + end + ComStage: begin + comPerfReqQ.enq(unpack(truncate(r.pType))); + end + CoreSize: begin + sizePerfReqQ.enq(unpack(truncate(r.pType))); + end + default: begin + $fwrite(stderr, "[WARNING] unrecognzied perf req location ", fshow(r.loc), "\n"); + doAssert(False, "unknown perf location"); + end + endcase + endrule + + // handle perf req: exe stage + rule readPerfCnt_Exe; + function Data getAluCnt(ExeStagePerfType pType); + Data cnt = 0; + for(Integer i = 0; i < valueof(AluExeNum); i = i+1) begin + cnt = cnt + coreFix.aluExeIfc[i].getPerf(pType); + end + return cnt; + endfunction + + function Data getFpuMulDivCnt(ExeStagePerfType pType); + Data cnt = 0; + for(Integer i = 0; i < valueof(FpuMulDivExeNum); i = i+1) begin + cnt = cnt + coreFix.fpuMulDivExeIfc[i].getPerf(pType); + end + return cnt; + endfunction + + let pType <- toGet(exePerfReqQ).get; + Data data = (case(pType) + SupRenameCnt, SpecNoneCycles, SpecNonMemCycles: renameStage.getPerf(pType); + ExeRedirectBr, ExeRedirectJr, ExeRedirectOther: getAluCnt(pType); + ExeTlbExcep, ExeScSuccessCnt, + ExeLrScAmoAcqCnt, ExeLrScAmoRelCnt, + ExeFenceAcqCnt, ExeFenceRelCnt, ExeFenceCnt, + ExeLdStallByLd, ExeLdStallBySt, ExeLdStallBySB, + ExeLdForward, ExeLdMemLat, ExeStMemLat, + ExeLdToUseLat, ExeLdToUseCnt: coreFix.memExeIfc.getPerf(pType); + ExeIntMulCnt, ExeIntDivCnt, + ExeFpFmaCnt, ExeFpDivCnt, ExeFpSqrtCnt: getFpuMulDivCnt(pType); + default: 0; + endcase); + exePerfRespQ.enq(PerfResp { + pType: pType, + data: data + }); + endrule + + // handle perf req: com stage + rule readPerfCnt_Com; + let pType <- toGet(comPerfReqQ).get; + Data data = (case(pType) + CycleCnt: cycleCnt; + default: commitStage.getPerf(pType); + endcase); + comPerfRespQ.enq(PerfResp { + pType: pType, + data: data + }); + endrule + + // handle perf req: core size + rule readPerfCnt_Size; + let pType <- toGet(sizePerfReqQ).get; + Data data = (case(pType) + LdQFullCycles: ldqFullCycles; + StQFullCycles: stqFullCycles; + ROBFullCycles: robFullCycles; + AluRS0FullCycles: aluRS0FullCycles; + AluRS1FullCycles: aluRS1FullCycles; + FpuMulDivRSFullCycles: fpuMulDivRSFullCycles; + MemRSFullCycles: memRSFullCycles; + EpochFullCycles: epochFullCycles; + SpecTagFullCycles: specTagFullCycles; + default: 0; + endcase); + sizePerfRespQ.enq(PerfResp { + pType: pType, + data: data + }); + endrule + + // gather perf resp + rule gatherPerfResp; + Maybe#(ProcPerfResp) resp = Invalid; + if(iMem.perf.respValid) begin + let r <- iMem.perf.resp; + resp = Valid(ProcPerfResp { + loc: ICache, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(dMem.perf.respValid) begin + let r <- dMem.perf.resp; + resp = Valid(ProcPerfResp { + loc: DCache, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(iTlb.perf.respValid) begin + let r <- iTlb.perf.resp; + resp = Valid(ProcPerfResp { + loc: ITlb, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(dTlb.perf.respValid) begin + let r <- dTlb.perf.resp; + resp = Valid(ProcPerfResp { + loc: DTlb, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(l2Tlb.perf.respValid) begin + let r <- l2Tlb.perf.resp; + resp = Valid(ProcPerfResp { + loc: L2Tlb, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(fetchStage.perf.respValid) begin + let r <- fetchStage.perf.resp; + resp = Valid(ProcPerfResp { + loc: DecStage, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(exePerfRespQ.notEmpty) begin + let r <- toGet(exePerfRespQ).get; + resp = Valid(ProcPerfResp { + loc: ExeStage, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(comPerfRespQ.notEmpty) begin + let r <- toGet(comPerfRespQ).get; + resp = Valid(ProcPerfResp { + loc: ComStage, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + else if(sizePerfRespQ.notEmpty) begin + let r <- toGet(sizePerfRespQ).get; + resp = Valid (ProcPerfResp { + loc: CoreSize, + pType: zeroExtend(pack(r.pType)), + data: r.data + }); + end + // enq to resp Q + if(resp matches tagged Valid .r) begin + perfRespQ.enq(r); + end + endrule +`endif + + interface CoreReq coreReq; + method Action start( + Bit#(64) startpc, + Addr toHostAddr, Addr fromHostAddr + ); + fetchStage.start(startpc); + started <= True; + mmio.setHtifAddrs(toHostAddr, fromHostAddr); + // start rename debug + commitStage.startRenameDebug; + endmethod + + method Action perfReq(PerfLocation loc, PerfType t); + perfReqQ.enq(ProcPerfReq { + loc: loc, + pType: t + }); + endmethod + endinterface + + interface CoreIndInv coreIndInv; + method ActionValue#(ProcPerfResp) perfResp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + let r = perfReqQ.first; + return ProcPerfResp { + loc: r.loc, + pType: r.pType, + data: 0 + }; +`endif + endmethod + + method terminate = csrf.terminate; + endinterface + + interface dCacheToParent = dMem.to_parent; + interface iCacheToParent = iMem.to_parent; + + interface tlbToMem = l2Tlb.toMem; + + interface mmioToPlatform = mmio.toP; + + method sendDoStats = csrf.sendDoStats; + method recvDoStats = csrf.recvDoStats; + + // deadlock check + interface CoreDeadlock deadlock; + interface dCacheCRqStuck = dMem.cRqStuck; + interface dCachePRqStuck = dMem.pRqStuck; + interface iCacheCRqStuck = iMem.cRqStuck; + interface iCachePRqStuck = iMem.pRqStuck; + interface renameInstStuck = renameStage.renameInstStuck; + interface renameCorrectPathStuck = renameStage.renameCorrectPathStuck; + interface commitInstStuck = commitStage.commitInstStuck; + interface commitUserInstStuck = commitStage.commitUserInstStuck; +`ifdef CHECK_DEADLOCK + interface checkStarted = toGet(deadlockCheckStartedQ); +`else + interface checkStarted = nullGet; +`endif + endinterface + + // rename debug + interface CoreRenameDebug renameDebug; + interface renameErr = commitStage.renameErr; + endinterface + + // Bluespec: external interrupt requests targeting Machine and Supervisor modes + method Action setMEIP (v) = csrf.setMEIP (v); + method Action setSEIP (v) = csrf.setSEIP (v); +endmodule + diff --git a/src_Core/CPU/CsrFile.bsv b/src_Core/CPU/CsrFile.bsv new file mode 100644 index 0000000..69ae2e5 --- /dev/null +++ b/src_Core/CPU/CsrFile.bsv @@ -0,0 +1,842 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// Portions Copyright (c) Bluespec, Inc. + +`include "ProcConfig.bsv" +import Types::*; +import ProcTypes::*; +import DefaultValue::*; +import ConcatReg::*; +import ConfigReg::*; +import Ehr::*; +import Fifo::*; +import Vector::*; +import FIFO::*; +import GetPut::*; +import BuildVector::*; +//import TRNG::*; + +interface CsrFile; + // Read + method Data rd(CSR csr); + // normal write by CSRXXX inst to any CSR + method Action csrInstWr(CSR csr, Data x); + // normal write by FPU inst to FPU CSR + method Bool fpuInstNeedWr(Bit#(5) fflags, Bool fpu_dirty); + method Action fpuInstWr(Bit#(5) fflags); // FPU must become dirty + + // Methods for handling traps + method Maybe#(Interrupt) pending_interrupt; + method ActionValue#(Addr) trap(Trap t, Addr pc, Addr faultAddr); + method ActionValue#(Addr) sret; + method ActionValue#(Addr) mret; + + // Outputs for CSRs that the rest of the processor needs to know about + method VMInfo vmI; + method VMInfo vmD; + method CsrDecodeInfo decodeInfo; + + // Updating minstret CSR outside of normal CSR write instructions. This + // increment will see the effect of normal CSR write. + method Action incInstret(SupCnt x); + + // update copy of mtime + method Action setTime(Data t); + + // MSIP/MTIP bits for external world (e.g., for MMIO and timer interrupt). + // XXX These methods should only be called when the processor backend + // pipeline does not contain any CSRXXX inst or corresponding interrupt + // inst (the inst which is turned into an interrupt). This ensures that + // CSRXXX and interrupt are handled atomically. MSIP/MTIP should not + // affect other insts (e.g., address translation of loads/stores), + // synchronous exceptions and other types of interrupts. + method Bit#(1) getMSIP; + method Action setMSIP(Bit#(1) v); + method Action setMTIP(Bit#(1) v); + + // Bluespec: external interrupts targeting machine and supervisor modes + method Action setMEIP (Bit #(1) v); + method Action setSEIP (Bit #(1) v); + + // performance stats is collected or not + method Bool doPerfStats; + // send/recv updates on stats CSR globally + method ActionValue#(Bool) sendDoStats; + method Action recvDoStats(Bool s); + + // terminate + method ActionValue#(void) terminate; +endinterface + +// Fancy Reg functions +function Reg#(Bit#(n)) truncateReg(Reg#(Bit#(m)) r) provisos (Add#(a__,n,m)); + return (interface Reg; + method Bit#(n) _read = truncate(r._read); + method Action _write(Bit#(n) x) = r._write({truncateLSB(r._read), x}); + endinterface); +endfunction + +function Reg#(Bit#(n)) truncateRegLSB(Reg#(Bit#(m)) r) provisos (Add#(a__,n,m)); + return (interface Reg; + method Bit#(n) _read = truncateLSB(r._read); + method Action _write(Bit#(n) x) = r._write({x, truncate(r._read)}); + endinterface); +endfunction + +function Reg#(Bit#(n)) zeroExtendReg(Reg#(Bit#(m)) r) provisos (Add#(a__,m,n)); + return (interface Reg; + method Bit#(n) _read = zeroExtend(r._read); + method Action _write(Bit#(n) x) = r._write(truncate(x)); + endinterface); +endfunction + +function Reg#(t) readOnlyReg(t r); + return (interface Reg; + method t _read = r; + method Action _write(t x) = noAction; + endinterface); +endfunction +// module version of readOnlyReg for convenience +module mkReadOnlyReg#(t x)(Reg#(t)); + return readOnlyReg(x); +endmodule + +function Reg#(t) regFromReadOnly(ReadOnly#(t) r); + return (interface Reg; + method t _read = r._read; + method Action _write(t x); + noAction; + endmethod + endinterface); +endfunction + +function Reg#(t) addWriteSideEffect(Reg#(t) r, Action a); + return (interface Reg; + method t _read = r._read; + method Action _write(t x); + r._write(x); + a; + endmethod + endinterface); +endfunction + +function Bool has_csr_permission(CSR csr, Bit#(2) prv, Bool write); + Bit#(12) csr_index = pack(csr); + return ((prv >= csr_index[9:8]) && (!write || (csr_index[11:10] != 2'b11))); +endfunction + +// non-standard terminate CSR +interface Terminate; + interface Reg#(Data) reg_ifc; + method ActionValue#(void) terminate; +endinterface + +module mkTerminate(Terminate); + FIFO#(void) terminateQ <- mkFIFO1; + + interface Reg reg_ifc; + method Action _write(Data x); + terminateQ.enq(?); + $display( + "[Terminate CSR] being written (val = %x), ", + "send terminate signal to host", x + ); + endmethod + method Data _read = 0; + endinterface + + method terminate = toGet(terminateQ).get; +endmodule + +// stats CSR: there is only one copy in the whole multiprocessor, so any write +// to stats CSR will be broadcasted +interface StatsCsr; + interface Reg#(Data) reg_ifc; + method Bool doPerfStats; + // send/recv updates on stats CSR globally + method ActionValue#(Bool) sendDoStats; + method Action recvDoStats(Bool s); +endinterface + +module mkStatsCsr(StatsCsr); + Reg#(Bool) doStats <- mkConfigReg(False); + + FIFO#(Bool) writeQ <- mkFIFO1; + + interface Reg reg_ifc; + method Data _read = zeroExtend(pack(doStats)); + method Action _write(Data x); + writeQ.enq(unpack(truncate(x))); + endmethod + endinterface + + method Bool doPerfStats = doStats; + + method ActionValue#(Bool) sendDoStats; + writeQ.deq; + return writeQ.first; + endmethod + + method Action recvDoStats(Bool s); + doStats <= s; + endmethod +endmodule + +// same as EHR except that read port 0 is not ordered with other methods. Read +// port 1 will still get bypassing from write port 0. +module mkConfigEhr#(t init)(Ehr#(n, t)) provisos(Bits#(t, w)); + Ehr#(n, t) data <- mkEhr(init); + Wire#(t) read <- mkBypassWire; + + (* fire_when_enabled, no_implicit_conditions *) + rule setRead; + read <= data[0]; + endrule + + Ehr#(n, t) ifc = ?; + ifc[0] = (interface Reg; + method _read = read._read; + method _write = data[0]._write; + endinterface); + for(Integer i = 1; i < valueOf(n); i = i+1) begin + ifc[i] = (interface Reg; + method _read = data[i]._read; + method _write = data[i]._write; + endinterface); + end + return ifc; +endmodule + +module mkCsrFile #(Data hartid)(CsrFile); + RiscVISASubset isa = defaultValue; + + // To save from bypassing logic, CSR reads will get stale value + let mkCsrReg = mkConfigReg; + let mkCsrEhr = mkConfigEhr; + + // current prv level (this is not a csr...) + Reg#(Bit#(2)) prv_reg <- mkCsrReg(prvM); + + // Machine level CSRs + // mstatus + Reg#(Bit#(2)) xs_reg <- mkReadOnlyReg(0); // XXX no extension + Reg#(Bit#(2)) fs_reg <- (isa.f || isa.d) ? mkCsrReg(0) : mkReadOnlyReg(0); + Reg#(Bit#(1)) sd_reg = readOnlyReg( + ((xs_reg == 2'b11) || (fs_reg == 2'b11)) ? 1 : 0 + ); + Reg#(Bit#(2)) sxl_reg = readOnlyReg(getXLBits); + Reg#(Bit#(2)) uxl_reg = readOnlyReg(getXLBits); + Reg#(Bit#(1)) tsr_reg <- mkCsrReg(0); + Reg#(Bit#(1)) tw_reg <- mkCsrReg(0); + Reg#(Bit#(1)) tvm_reg <- mkCsrReg(0); + Reg#(Bit#(1)) mxr_reg <- mkCsrReg(0); + Reg#(Bit#(1)) sum_reg <- mkCsrReg(0); + Reg#(Bit#(1)) mprv_reg <- mkCsrReg(0); + Reg#(Bit#(2)) mpp_reg <- mkCsrReg(0); + Reg#(Bit#(1)) spp_reg <- mkCsrReg(0); + Vector#(4, Reg#(Bit#(2))) prev_prv_vec = vec( + // prev_prv_vec[x]: privilege mode before trapping into mode x + readOnlyReg(prvU), // upp + concatReg2(readOnlyReg(1'b0), spp_reg), // spp + readOnlyReg(2'b0), // reserved + mpp_reg + ); + Vector#(4, Reg#(Bit#(1))) ie_vec = replicate( + readOnlyReg(0) // ie_vec[x]: interrupt enable for mode x + ); + ie_vec[prvU] <- mkCsrReg(0); + ie_vec[prvS] <- mkCsrReg(0); + ie_vec[prvM] <- mkCsrReg(0); + Vector#(4, Reg#(Bit#(1))) prev_ie_vec = replicate( + readOnlyReg(0) // prev_ie_vec[x]: ie_vec[x] before trapping into mode x + ); + prev_ie_vec[prvU] <- mkCsrReg(0); + prev_ie_vec[prvS] <- mkCsrReg(0); + prev_ie_vec[prvM] <- mkCsrReg(0); + Reg#(Data) mstatus_csr = concatReg24( + sd_reg, readOnlyReg(27'b0), sxl_reg, uxl_reg, readOnlyReg(9'b0), + tsr_reg, tw_reg, tvm_reg, mxr_reg, sum_reg, mprv_reg, xs_reg, fs_reg, + mpp_reg, readOnlyReg(2'b0), spp_reg, + prev_ie_vec[prvM], readOnlyReg(1'b0), + prev_ie_vec[prvS], prev_ie_vec[prvU], + ie_vec[prvM], readOnlyReg(1'b0), + ie_vec[prvS], ie_vec[prvU] + ); + // misa + Reg#(Data) misa_csr = readOnlyReg({getXLBits, 36'b0, getExtensionBits(isa)}); + // medeleg: some exceptions don't exist, fix corresponding bits to 0 + Reg#(Bit#(1)) medeleg_15_reg <- mkCsrReg(0); // cause 15 + Reg#(Bit#(3)) medeleg_13_11_reg <- mkCsrReg(0); // case 13-11 + Reg#(Bit#(10)) medeleg_9_0_reg <- mkCsrReg(0); // cause 9-0 + Reg#(Data) medeleg_csr = concatReg6( + readOnlyReg(48'b0), medeleg_15_reg, + readOnlyReg(1'b0), medeleg_13_11_reg, + readOnlyReg(1'b0), medeleg_9_0_reg + ); + // mideleg: some interrupts don't exist, fix corresponding bits to 0 + Reg#(Bit#(1)) mideleg_11_reg <- mkCsrReg(0); + Reg#(Bit#(3)) mideleg_9_7_reg <- mkCsrReg(0); + Reg#(Bit#(3)) mideleg_5_3_reg <- mkCsrReg(0); + Reg#(Bit#(2)) mideleg_1_0_reg <- mkCsrReg(0); + Reg#(Data) mideleg_csr = concatReg8( + readOnlyReg(52'b0), mideleg_11_reg, + readOnlyReg(1'b0), mideleg_9_7_reg, + readOnlyReg(1'b0), mideleg_5_3_reg, + readOnlyReg(1'b0), mideleg_1_0_reg + ); + // mie + Vector#(4, Reg#(Bit#(1))) external_int_en_vec = replicate(readOnlyReg(0)); + external_int_en_vec[prvU] <- mkCsrReg(0); + external_int_en_vec[prvS] <- mkCsrReg(0); + external_int_en_vec[prvM] <- mkCsrReg(0); + Vector#(4, Reg#(Bit#(1))) timer_int_en_vec = replicate(readOnlyReg(0)); + timer_int_en_vec[prvU] <- mkCsrReg(0); + timer_int_en_vec[prvS] <- mkCsrReg(0); + timer_int_en_vec[prvM] <- mkCsrReg(0); + Vector#(4, Reg#(Bit#(1))) software_int_en_vec = replicate(readOnlyReg(0)); + software_int_en_vec[prvU] <- mkCsrReg(0); + software_int_en_vec[prvS] <- mkCsrReg(0); + software_int_en_vec[prvM] <- mkCsrReg(0); + Reg#(Data) mie_csr = concatReg13( + readOnlyReg(52'b0), + external_int_en_vec[prvM], readOnlyReg(1'b0), + external_int_en_vec[prvS], external_int_en_vec[prvU], + timer_int_en_vec[prvM], readOnlyReg(1'b0), + timer_int_en_vec[prvS], timer_int_en_vec[prvU], + software_int_en_vec[prvM], readOnlyReg(1'b0), + software_int_en_vec[prvS], software_int_en_vec[prvU] + ); + // mtvec + Reg#(Bit#(62)) mtvec_base_hi_reg <- mkCsrReg(0); // this is BASE[63:2] + Reg#(Bit#(1)) mtvec_mode_low_reg <- mkCsrReg(0); // this is MODE[0] + Reg#(Data) mtvec_csr = concatReg3( + mtvec_base_hi_reg, readOnlyReg(1'b0), mtvec_mode_low_reg + ); + // mcounteren + Reg#(Bit#(1)) mcounteren_ir_reg <- mkCsrReg(0); + Reg#(Bit#(1)) mcounteren_tm_reg <- mkCsrReg(0); + Reg#(Bit#(1)) mcounteren_cy_reg <- mkCsrReg(0); + Reg#(Data) mcounteren_csr = concatReg5( + readOnlyReg(32'b0), + readOnlyReg(29'b0), // hpmcounter 3-31 not accessible in S mode + mcounteren_ir_reg, mcounteren_tm_reg, mcounteren_cy_reg + ); + // mscratch + Reg#(Data) mscratch_csr <- mkCsrReg(0); + // mepc: FIXME Since we don't have C extension, mepc should be 4-byte + // aligned. However, spike is not checking this, so we don't implement it. + Reg#(Data) mepc_csr <- mkCsrReg(0); + // mcause + Reg#(Bit#(1)) mcause_interrupt_reg <- mkCsrReg(0); + Reg#(Bit#(4)) mcause_code_reg <- mkCsrReg(0); + Reg#(Data) mcause_csr = concatReg3( + mcause_interrupt_reg, readOnlyReg(59'b0), mcause_code_reg + ); + // mtval (mbadaddr in spike) + Reg#(Data) mtval_csr <- mkCsrReg(0); + // mip + Vector#(4, Reg#(Bit#(1))) external_int_pend_vec = replicate(readOnlyReg(0)); + external_int_pend_vec[prvU] <- mkCsrReg(0); + external_int_pend_vec[prvS] <- mkCsrReg(0); + external_int_pend_vec[prvM] <- mkCsrReg(0); + Vector#(4, Reg#(Bit#(1))) timer_int_pend_vec = replicate(readOnlyReg(0)); + timer_int_pend_vec[prvU] <- mkCsrReg(0); + timer_int_pend_vec[prvS] <- mkCsrReg(0); + timer_int_pend_vec[prvM] <- mkCsrReg(0); + Vector#(4, Reg#(Bit#(1))) software_int_pend_vec = replicate(readOnlyReg(0)); + software_int_pend_vec[prvU] <- mkCsrReg(0); + software_int_pend_vec[prvS] <- mkCsrReg(0); + software_int_pend_vec[prvM] <- mkCsrReg(0); + Reg#(Data) mip_csr = concatReg13( + readOnlyReg(52'b0), + external_int_pend_vec[prvM], readOnlyReg(1'b0), + external_int_pend_vec[prvS], external_int_pend_vec[prvU], + readOnlyReg(timer_int_pend_vec[prvM]), // MTIP is read-only to software + readOnlyReg(1'b0), + timer_int_pend_vec[prvS], timer_int_pend_vec[prvU], + software_int_pend_vec[prvM], readOnlyReg(1'b0), + software_int_pend_vec[prvS], software_int_pend_vec[prvU] + ); + // minstret + Ehr#(2, Data) minstret_ehr <- mkCsrEhr(0); + Reg#(Data) minstret_csr = minstret_ehr[0]; + // mcycle + Ehr#(2, Data) mcycle_ehr <- mkCsrEhr(0); + Reg#(Data) mcycle_csr = mcycle_ehr[0]; + // mvendorid + Reg#(Data) mvendorid_csr = readOnlyReg(0); + // marchid + Reg#(Data) marchid_csr = readOnlyReg(0); + // mimpid + Reg#(Data) mimpid_csr = readOnlyReg(0); + // mhartid + Reg#(Data) mhartid_csr = readOnlyReg(hartid); + + // Supervisor level CSRs + // sstatus: restricted view of mstatus + Reg#(Data) sstatus_csr = concatReg17( + sd_reg, readOnlyReg(29'b0), uxl_reg, readOnlyReg(12'b0), + mxr_reg, sum_reg, readOnlyReg(1'b0), xs_reg, fs_reg, + readOnlyReg(4'b0), spp_reg, + readOnlyReg(2'b0), prev_ie_vec[prvS], prev_ie_vec[prvU], + readOnlyReg(2'b0), ie_vec[prvS], ie_vec[prvU] + ); + // sie: restricted view of mie + Reg#(Data) sie_csr = concatReg9( + readOnlyReg(54'b0), + external_int_en_vec[prvS], external_int_en_vec[prvU], + readOnlyReg(2'b0), + timer_int_en_vec[prvS], timer_int_en_vec[prvU], + readOnlyReg(2'b0), + software_int_en_vec[prvS], software_int_en_vec[prvU] + ); + // stvec + Reg#(Bit#(62)) stvec_base_hi_reg <- mkCsrReg(0); // BASE[63:2] + Reg#(Bit#(1)) stvec_mode_low_reg <- mkCsrReg(0); // MODE[0] + Reg#(Data) stvec_csr = concatReg3( + stvec_base_hi_reg, readOnlyReg(1'b0), stvec_mode_low_reg + ); + // scounteren + Reg#(Bit#(1)) scounteren_ir_reg <- mkCsrReg(0); + Reg#(Bit#(1)) scounteren_tm_reg <- mkCsrReg(0); + Reg#(Bit#(1)) scounteren_cy_reg <- mkCsrReg(0); + Reg#(Data) scounteren_csr = concatReg5( + readOnlyReg(32'b0), + readOnlyReg(29'b0), // hpmcounter 3-31 not accessible in U mode + scounteren_ir_reg, scounteren_tm_reg, scounteren_cy_reg + ); + // sscratch + Reg#(Data) sscratch_csr <- mkCsrReg(0); + // sepc: FIXME Since we don't have C extension, sepc should be 4-byte + // aligned. However, spike is not checking this, so we don't implement it. + Reg#(Data) sepc_csr <- mkCsrReg(0); + // scause + Reg#(Bit#(1)) scause_interrupt_reg <- mkCsrReg(0); + Reg#(Bit#(4)) scause_code_reg <- mkCsrReg(0); + Reg#(Data) scause_csr = concatReg3( + scause_interrupt_reg, readOnlyReg(59'b0), scause_code_reg + ); + // stval (sbadaddr in spike) + Reg#(Data) stval_csr <- mkCsrReg(0); + // sip: restricted view of mip + Reg#(Data) sip_csr = concatReg9( + readOnlyReg(54'b0), + external_int_pend_vec[prvS], external_int_pend_vec[prvU], + readOnlyReg(2'b0), + timer_int_pend_vec[prvS], timer_int_pend_vec[prvU], + readOnlyReg(2'b0), + software_int_pend_vec[prvS], software_int_pend_vec[prvU] + ); + // satp (sptbr in spike): FIXME we only support Bare and Sv39, so we hack + // the encoding of mode[3:0] field. Only mode[3] is relevant, other bits + // are always 0 + Reg#(Bit#(1)) vm_mode_sv39_reg <- mkCsrReg(0); + Reg#(Bit#(4)) vm_mode_reg = concatReg2(vm_mode_sv39_reg, readOnlyReg(3'b0)); + Reg#(Asid) asid_reg <- mkCsrReg(0); + Reg#(Bit#(16)) full_asid_reg = zeroExtendReg(asid_reg); + Reg#(Bit#(44)) ppn_reg <- mkCsrReg(0); + Reg#(Data) satp_csr = concatReg3(vm_mode_reg, full_asid_reg, ppn_reg); + + // User level CSRs + // According to spike, any write to fflags/frm/fcsr will set fs_reg as + // dirty, regardless of whether the write truly changes value or not. + // Besides, any non-zero FP exception flags will also make fs_reg dirty. + // fflags: if we directly change fflags_reg (instead of fflags_csr), then + // we must set fs_reg manually + Reg#(Bit#(5)) fflags_reg <- mkCsrReg(0); + Reg#(Data) fflags_csr = addWriteSideEffect( + zeroExtendReg(fflags_reg), fs_reg._write(2'b11) + ); + // frm: if we directly change frm_reg (instead of frm_csr), then we must + // set fs_reg manually + Reg#(Bit#(3)) frm_reg <- mkCsrReg(0); + Reg#(Data) frm_csr = addWriteSideEffect( + zeroExtendReg(frm_reg), fs_reg._write(2'b11) + ); + // fcsr + Reg#(Data) fcsr_csr = addWriteSideEffect( + zeroExtendReg(concatReg2(frm_reg, fflags_reg)), fs_reg._write(2'b11) + ); + // cycle + Reg#(Data) cycle_csr = readOnlyReg(mcycle_csr); + // time + Reg#(Data) time_reg <- mkCsrReg(0); + Reg#(Data) time_csr = readOnlyReg(time_reg); + // instret + Reg#(Data) instret_csr = readOnlyReg(minstret_csr); + // terminate (non-standard) + Terminate terminate_module <- mkTerminate; + Reg#(Data) terminate_csr = terminate_module.reg_ifc; + // whether performance stats is collected + StatsCsr stats_module <- mkStatsCsr; + Reg#(Data) stats_csr = stats_module.reg_ifc; + +`ifdef SECURITY + // sanctum machine CSRs + + // ### Enclave virtual base and mask + // (per-core) registers + // ( defines a virtual region for which enclave page tables are used in + // place of OS-controlled page tables) + // (machine-mode non-standard read/write) + Reg#(Data) mevbase_csr <- mkCsrReg(maxBound); // impossible base & mask, + Reg#(Data) mevmask_csr <- mkCsrReg(0); // so no enclave accesses are possible + + // ### Enclave page table base + // (per core) register + // ( pointer to a separate page table data structure used to translate enclave + // virtual addresses) + // (machine-mode non-standard read/write) + Reg#(Bit#(44)) eppn_reg <- mkCsrReg(0); + Reg#(Data) meatp_csr = zeroExtendReg(eppn_reg); + + // ### DRAM bitmap + // (per core) registers (OS and Enclave) + // ( white-lists the DRAM regions the core is allowed to access via OS and + // enclave virtual addresses) + // (machine-mode non-standard read/write) + Reg#(Data) mmrbm_csr <- mkCsrReg(maxBound); + Reg#(Data) memrbm_csr <- mkCsrReg(0); + + // ### Protected region base and mask + // (per core) registers (OS and Enclave) + // ( these are used to prevent address translation into a specific range of + // physical addresses, for example to protect the security monitor from all software) + // (machine-mode non-standard read/write) + Reg#(Data) mparbase_csr <- mkCsrReg(maxBound); + Reg#(Data) mparmask_csr <- mkCsrReg(0); + Reg#(Data) meparbase_csr <- mkCsrReg(0); + Reg#(Data) meparmask_csr <- mkCsrReg(0); + + // ### Turn on/off speculation + Reg#(Bit#(2)) mspec_reg <- mkCsrReg(mSpecAll); + Reg#(Data) mspec_csr = zeroExtendReg(mspec_reg); + + // sanctum user CSR + // ### true random number + // For now, we skip secure boot, keep TRNG = 0 + Reg#(Data) trng_csr <- mkReadOnlyReg(0); //mkTRNG; +`endif + + rule incCycle; + mcycle_ehr[1] <= mcycle_ehr[1] + 1; + endrule + + // Function for getting a csr given an index + function Reg#(Data) get_csr(CSR csr); + return (case (csr) + // User CSRs + CSRfflags: fflags_csr; + CSRfrm: frm_csr; + CSRfcsr: fcsr_csr; + CSRcycle: cycle_csr; + CSRtime: time_csr; + CSRinstret: instret_csr; + CSRterminate: terminate_csr; + CSRstats: stats_csr; + // Supervisor CSRs + CSRsstatus: sstatus_csr; + CSRsie: sie_csr; + CSRstvec: stvec_csr; + CSRscounteren: scounteren_csr; + CSRsscratch: sscratch_csr; + CSRsepc: sepc_csr; + CSRscause: scause_csr; + CSRstval: stval_csr; + CSRsip: sip_csr; + CSRsatp: satp_csr; + // Machine CSRs + CSRmstatus: mstatus_csr; + CSRmisa: misa_csr; + CSRmedeleg: medeleg_csr; + CSRmideleg: mideleg_csr; + CSRmie: mie_csr; + CSRmtvec: mtvec_csr; + CSRmcounteren: mcounteren_csr; + CSRmscratch: mscratch_csr; + CSRmepc: mepc_csr; + CSRmcause: mcause_csr; + CSRmtval: mtval_csr; + CSRmip: mip_csr; + CSRmcycle: mcycle_csr; + CSRminstret: minstret_csr; + CSRmvendorid: mvendorid_csr; + CSRmarchid: marchid_csr; + CSRmimpid: mimpid_csr; + CSRmhartid: mhartid_csr; +`ifdef SECURITY + CSRmevbase: mevbase_csr; + CSRmevmask: mevmask_csr; + CSRmeatp: meatp_csr; + CSRmmrbm: mmrbm_csr; + CSRmemrbm: memrbm_csr; + CSRmparbase: mparbase_csr; + CSRmparmask: mparmask_csr; + CSRmeparbase: meparbase_csr; + CSRmeparmask: meparmask_csr; + CSRmspec: mspec_csr; + CSRtrng: trng_csr; +`endif + default: readOnlyReg(64'b0); + endcase); + endfunction + + method Data rd(CSR csr); + return get_csr(csr)._read; + endmethod + + method Action csrInstWr(CSR csr, Data x); + get_csr(csr)._write(x); + endmethod + + method Bool fpuInstNeedWr(Bit#(5) fflags, Bool fpu_dirty); + Bool fflags_change = (fflags & fflags_reg) != fflags; + // we need to set fs_reg as dirty in two cases + // 1. FP reg is written (i.e., fpu_dirty) + // 2. FP exception (i.e., fflags) is non-zero (try to match spike) + Bool need_set_dirty = fs_reg != 2'b11 && (fpu_dirty || fflags != 0); + return fflags_change || need_set_dirty; + endmethod + + method Action fpuInstWr(Bit#(5) fflags); + fs_reg <= 2'b11; // FPU must be dirty + fflags_reg <= fflags_reg | fflags; + endmethod + + method Maybe#(Interrupt) pending_interrupt; + // first get all the pending interrupts + Bit#(InterruptNum) pend_ints = truncate(mie_csr & mip_csr); + // now find out all the truly enabled interrupts (that needs handling) + Bit#(InterruptNum) enabled_ints = 0; + // check interrupts that needs to be handled at M mode: all interrupts + // are by default handled at M mode unless it is delegated in + // mideleg_csr, we just need to ignore those interrupts + if(prv_reg < prvM || (prv_reg == prvM && ie_vec[prvM] == 1)) begin + enabled_ints = pend_ints & ~truncate(mideleg_csr); + end + // check interrupts that needs to be handled at S mode only if no + // interrupt needs to be handled at M mode: interrupts handled at S + // mode must be delegated in mideleg_csr + if (enabled_ints == 0 && + (prv_reg < prvS || (prv_reg == prvS && ie_vec[prvS] == 1))) begin + enabled_ints = pend_ints & truncate(mideleg_csr); + end + // According to spike, return the interrupt bit at LSB + function Bool isEnabled(Integer i) = (enabled_ints[i] == 1); + Vector#(InterruptNum, Integer) idxVec = genVector; + if(find(isEnabled, idxVec) matches tagged Valid .i) begin + return Valid (unpack(fromInteger(i))); + end + else begin + return Invalid; + end + endmethod + + method ActionValue#(Addr) trap(Trap t, Addr pc, Addr addr); + // figure out trap cause & trap val + Bit#(1) cause_interrupt = 0; + Bit#(4) cause_code = 0; + Data trap_val = 0; + case(t) matches + tagged Exception .e: begin + cause_code = pack(e); + trap_val = (case(e) + InstAddrMisaligned, InstAccessFault, + Breakpoint, InstPageFault: return pc; + LoadAddrMisaligned, LoadAccessFault, + StoreAddrMisaligned, StoreAccessFault, + LoadPageFault, StorePageFault: return addr; + default: return 0; + endcase); + end + tagged Interrupt .i: begin + cause_code = pack(i); + cause_interrupt = 1; + end + endcase + // function to figure out next PC + function Addr getNextPc(Bit#(1) mode_low, Bit#(62) base_hi); + Addr base = {base_hi, 2'b0}; + if(mode_low == 1 && cause_interrupt == 1) begin + // vector jump: only for interrupt + return base + zeroExtend({cause_code, 2'b0}); + end + else begin // direct jump + return base; + end + endfunction + // check if trap is delegated + Bool deleg = prv_reg <= prvS && (case(t) matches + tagged Exception .e: return medeleg_csr[pack(e)] == 1; + tagged Interrupt .i: return mideleg_csr[pack(i)] == 1; + default: return False; + endcase); + // handle the trap + if(deleg) begin // handle in S mode + // ie/prv stack + prev_prv_vec[prvS] <= prv_reg; + prv_reg <= prvS; + prev_ie_vec[prvS] <= ie_vec[prvS]; + ie_vec[prvS] <= 0; + // record trap info + sepc_csr <= pc; + scause_interrupt_reg <= cause_interrupt; + scause_code_reg <= cause_code; + stval_csr <= trap_val; + // return next pc + return getNextPc(stvec_mode_low_reg, stvec_base_hi_reg); + end + else begin + // ie/prv stack + prev_prv_vec[prvM] <= prv_reg; + prv_reg <= prvM; + prev_ie_vec[prvM] <= ie_vec[prvM]; + ie_vec[prvM] <= 0; + // record trap info + mepc_csr <= pc; + mcause_interrupt_reg <= cause_interrupt; + mcause_code_reg <= cause_code; + mtval_csr <= trap_val; + // return next pc + return getNextPc(mtvec_mode_low_reg, mtvec_base_hi_reg); + end + // XXX yield load reservation should be done outside this method + endmethod + + method ActionValue#(Addr) mret; + prv_reg <= prev_prv_vec[prvM]; + prev_prv_vec[prvM] <= prvU; + ie_vec[prvM] <= prev_ie_vec[prvM]; + prev_ie_vec[prvM] <= 1; + return mepc_csr; + endmethod + + method ActionValue#(Addr) sret; + prv_reg <= prev_prv_vec[prvS]; + prev_prv_vec[prvS] <= prvU; + ie_vec[prvS] <= prev_ie_vec[prvS]; + prev_ie_vec[prvS] <= 1; + return sepc_csr; + endmethod + + method VMInfo vmI; + // for inst fetch, NO need to consider MPRV + Bit#(2) prv = prv_reg; + return VMInfo { + prv: prv, + asid: asid_reg, + sv39: prv < prvM && vm_mode_sv39_reg == 1, + exeReadable: mxr_reg == 1, + userAccessibleByS: sum_reg == 1, + basePPN: ppn_reg +`ifdef SECURITY + , sanctum_evbase: mevbase_csr, + sanctum_evmask: mevmask_csr, + sanctum_ebasePPN: eppn_reg, + sanctum_mrbm: mmrbm_csr, + sanctum_emrbm: memrbm_csr, + sanctum_parbase: mparbase_csr, + sanctum_parmask: mparmask_csr, + sanctum_eparbase: meparbase_csr, + sanctum_eparmask: meparmask_csr, + // enclave / security monitor should never execute instructions + // from untrusted shared region + sanctum_authShared: False +`endif + }; + endmethod + + method VMInfo vmD; + // for load/store, need to consider MPRV + Bit#(2) prv = (mprv_reg == 1) ? prev_prv_vec[prvM] : prv_reg; + return VMInfo { + prv: prv, + asid: asid_reg, + sv39: prv < prvM && vm_mode_sv39_reg == 1, + exeReadable: mxr_reg == 1, + userAccessibleByS: sum_reg == 1, + basePPN: ppn_reg +`ifdef SECURITY + , sanctum_evbase: mevbase_csr, + sanctum_evmask: mevmask_csr, + sanctum_ebasePPN: eppn_reg, + sanctum_mrbm: mmrbm_csr, + sanctum_emrbm: memrbm_csr, + sanctum_parbase: mparbase_csr, + sanctum_parmask: mparmask_csr, + sanctum_eparbase: meparbase_csr, + sanctum_eparmask: meparmask_csr, + // enclave / security monitor can read/write untrusted shared + // region when speculation is off (either by mspec CSR or in M + // mode) + // XXX Because of the effects of mprv, we have to use prv_reg here + // instead of prv. Otherwise, we may be in M mode, but prv=S, and + // still forbid shared accesses + sanctum_authShared: mspec_reg != mSpecAll || prv_reg == prvM +`endif + }; + endmethod + + method CsrDecodeInfo decodeInfo = CsrDecodeInfo { + frm: frm_reg, + fEnabled: fs_reg != 0, + prv: prv_reg, + trapVM: tvm_reg == 1, + timeoutWait: tw_reg == 1, + trapSret: tsr_reg == 1, + cycleReadableByS: mcounteren_cy_reg == 1, + cycleReadableByU: mcounteren_cy_reg == 1 && scounteren_cy_reg == 1, + instretReadableByS: mcounteren_ir_reg == 1, + instretReadableByU: mcounteren_ir_reg == 1 && scounteren_ir_reg == 1, + timeReadableByS: mcounteren_tm_reg == 1, + timeReadableByU: mcounteren_tm_reg == 1 && scounteren_tm_reg == 1 + }; + + method Action incInstret(SupCnt x); + minstret_ehr[1] <= minstret_ehr[1] + zeroExtend(x); + endmethod + + method Action setTime(Data t); + time_reg <= t; + endmethod + + method getMSIP = software_int_pend_vec[prvM]._read; + method setMSIP = software_int_pend_vec[prvM]._write; + method setMTIP = timer_int_pend_vec[prvM]._write; + + // Bluespec: external interrupts targeting machine and supervisor modes + method Action setMEIP (Bit #(1) v); + external_int_pend_vec[prvM] <= v; + endmethod + method Action setSEIP (Bit #(1) v); + external_int_pend_vec[prvS] <= v; + endmethod + + method terminate = terminate_module.terminate; + + // performance stats + method doPerfStats = stats_module.doPerfStats; + method sendDoStats = stats_module.sendDoStats; + method recvDoStats = stats_module.recvDoStats; +endmodule diff --git a/src_Core/CPU/LLC_AXI4_Adapter.bsv b/src_Core/CPU/LLC_AXI4_Adapter.bsv new file mode 100644 index 0000000..405dcef --- /dev/null +++ b/src_Core/CPU/LLC_AXI4_Adapter.bsv @@ -0,0 +1,277 @@ +package LLC_AXI4_Adapter; + +// ================================================================ +// BSV lib imports + +import ConfigReg :: *; +import Assert :: *; +import FIFOF :: *; +import Vector :: *; + +// ---------------- +// BSV additional libs + +import GetPut_Aux :: *; +import Cur_Cycle :: *; +import Semi_FIFOF :: *; +import CreditCounter :: *; + +// ================================================================ +// Project imports + +// ---------------- +// From MIT RISCY-OOO + +import Types :: *; +import CacheUtils :: *; +import CCTypes :: *; + +// ---------------- +// From Bluespec Pipes + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// ================================================================ + +interface LLC_AXI4_Adapter_IFC; + method Action reset; + + // Fabric master interface for memory + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) mem_master; +endinterface + +// ================================================================ + +module mkLLC_AXi4_Adapter #(MemFifoClient #(idT, childT) llc) + (LLC_AXI4_Adapter_IFC) + provisos(Bits#(idT, a__), + Bits#(childT, b__), + FShow#(ToMemMsg#(idT, childT)), + FShow#(MemRsMsg#(idT, childT)), + Add#(SizeOf#(Line), 0, 512)); // assert Line sz = 512 + + // Verbosity: 0: quiet; 1: LLC transactions; 2: loop detail + Integer verbosity = 2; + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (fromInteger (verbosity)); + + // ================================================================ + // Fabric request/response + + AXI4_Master_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master_xactor <- mkAXI4_Master_Xactor_2; + + // For discarding write-responses + CreditCounter_IFC #(4) ctr_wr_rsps_pending <- mkCreditCounter; // Max 15 writes outstanding + + // ================================================================ + // Functions to interact with the fabric + + // Send a read-request into the fabric + function Action fa_fabric_send_read_req (Fabric_Addr addr); + action + AXI4_Size size = axsize_8; + let mem_req_rd_addr = AXI4_Rd_Addr {arid: fabric_default_id, + araddr: addr, + arlen: 0, // burst len = arlen+1 + arsize: size, + arburst: fabric_default_burst, + arlock: fabric_default_lock, + arcache: fabric_default_arcache, + arprot: fabric_default_prot, + arqos: fabric_default_qos, + arregion: fabric_default_region, + aruser: fabric_default_user}; + + master_xactor.i_rd_addr.enq (mem_req_rd_addr); + + // Debugging + if (cfg_verbosity > 1) begin + $display (" ", fshow (mem_req_rd_addr)); + end + endaction + endfunction + + // Send a write-request into the fabric + function Action fa_fabric_send_write_req (Fabric_Addr addr, Fabric_Strb strb, Bit #(64) st_val); + action + AXI4_Size size = axsize_8; + let mem_req_wr_addr = AXI4_Wr_Addr {awid: fabric_default_id, + awaddr: addr, + awlen: 0, // burst len = awlen+1 + awsize: size, + awburst: fabric_default_burst, + awlock: fabric_default_lock, + awcache: fabric_default_awcache, + awprot: fabric_default_prot, + awqos: fabric_default_qos, + awregion: fabric_default_region, + awuser: fabric_default_user}; + + let mem_req_wr_data = AXI4_Wr_Data {wid: fabric_default_id, + wdata: st_val, + wstrb: strb, + wlast: True, + wuser: fabric_default_user}; + + master_xactor.i_wr_addr.enq (mem_req_wr_addr); + master_xactor.i_wr_data.enq (mem_req_wr_data); + + // Expect a fabric response + ctr_wr_rsps_pending.incr; + + // Debugging + if (cfg_verbosity > 1) begin + $display (" To fabric: ", fshow (mem_req_wr_addr)); + $display (" ", fshow (mem_req_wr_data)); + end + endaction + endfunction + + // ================================================================ + // Handle read requests and responses + // Don't do reads while writes are outstanding. + + // Each 512b cache line takes 8 beats, each handling 64 bits + Reg #(Bit #(3)) rg_rd_req_beat <- mkReg (0); + Reg #(Bit #(3)) rg_rd_rsp_beat <- mkReg (0); + + FIFOF #(LdMemRq #(idT, childT)) f_pending_reads <- mkFIFOF; + Reg #(Bit #(512)) rg_cline <- mkRegU; + + rule rl_handle_read_req (llc.toM.first matches tagged Ld .ld + &&& (ctr_wr_rsps_pending.value == 0)); + if ((cfg_verbosity > 0) && (rg_rd_req_beat == 0)) begin + $display ("%0d: LLC_AXI4_Adapter.rl_handle_read_req: Ld request from LLC to memory: beat %0d", + cur_cycle, rg_rd_req_beat); + $display (" ", fshow (ld)); + end + + Addr line_addr = { ld.addr [63:6], 6'h0 }; // Addr of containing cache line + Addr offset = zeroExtend ( { rg_rd_req_beat, 3'b_000 } ); // Addr offset of 64b word for this beat + fa_fabric_send_read_req (line_addr | offset); + + if (rg_rd_req_beat == 0) + f_pending_reads.enq (ld); + + if (rg_rd_req_beat == 7) + llc.toM.deq; + + rg_rd_req_beat <= rg_rd_req_beat + 1; + endrule + + rule rl_handle_read_rsps; + let mem_rsp <- pop_o (master_xactor.o_rd_data); + + if (cfg_verbosity > 1) begin + $display ("%0d: LLC_AXI4_Adapter.rl_handle_read_rsps: beat %0d ", cur_cycle, rg_rd_rsp_beat); + $display (" ", fshow (mem_rsp)); + end + + if (mem_rsp.rresp != axi4_resp_okay) begin + // TODO: need to raise a non-maskable interrupt (NMI) here + $display ("%0d: LLC_AXI4_Adapter.rl_handle_read_rsp: fabric response error; exit", cur_cycle); + $display (" ", fshow (mem_rsp)); + $finish (1); + end + + // Shift next 64 bits from fabric into the cache line being assembled + let new_cline = { mem_rsp.rdata, rg_cline [511:64] }; + + if (rg_rd_rsp_beat == 7) begin + let ldreq <- pop (f_pending_reads); + MemRsMsg #(idT, childT) resp = MemRsMsg {data: unpack (new_cline), + child: ldreq.child, + id: ldreq.id}; + + llc.rsFromM.enq (resp); + + if (cfg_verbosity > 1) + $display (" Response to LLC: ", fshow (resp)); + end + + rg_cline <= new_cline; + rg_rd_rsp_beat <= rg_rd_rsp_beat + 1; + endrule + + // ================================================================ + // Handle write requests and responses + + // Each 512b cache line takes 8 beats, each handling 64 bits + Reg #(Bit #(3)) rg_wr_req_beat <- mkReg (0); + Reg #(Bit #(3)) rg_wr_rsp_beat <- mkReg (0); + + FIFOF #(WbMemRs) f_pending_writes <- mkFIFOF; + + rule rl_handle_write_req (llc.toM.first matches tagged Wb .wb); + if ((cfg_verbosity > 0) && (rg_wr_req_beat == 0)) begin + $display ("%d: LLC_AXI4_Adapter.rl_handle_write_req: Wb request from LLC to memory:", cur_cycle); + $display (" ", fshow (wb)); + end + + Addr line_addr = { wb.addr [63:6], 6'h0 }; // Addr of containing cache line + Line line_data = wb.data; + Vector #(8, Bit #(8)) line_bes = unpack (pack (wb.byteEn)); + + Addr offset = zeroExtend ( { rg_wr_req_beat, 3'b_000 } ); // Addr offset of 64b word for this beat + Bit #(64) data64 = line_data [rg_wr_req_beat]; + Bit #(8) strb8 = line_bes [rg_wr_req_beat]; + fa_fabric_send_write_req (line_addr | offset, strb8, data64); + + if (rg_wr_req_beat == 0) + f_pending_writes.enq (wb); + + if (rg_wr_req_beat == 7) + llc.toM.deq; + + rg_wr_req_beat <= rg_wr_req_beat + 1; + endrule + + // ---------------- + // Discard write-responses from the fabric + + rule rl_discard_write_rsp; + let wr_resp <- pop_o (master_xactor.o_wr_resp); + + if (cfg_verbosity > 1) begin + $display ("%0d: LLC_AXI4_Adapter.rl_discard_write_rsp: beat %0d ", cur_cycle, rg_wr_rsp_beat); + $display (" ", fshow (wr_resp)); + end + + if (ctr_wr_rsps_pending.value == 0) begin + $display ("%0d: ERROR: LLC_AXI4_Adapter.rl_discard_write_rsp: unexpected Wr response (ctr_wr_rsps_pending.value == 0)", + cur_cycle); + $display (" ", fshow (wr_resp)); + $finish (1); // Assertion failure + end + + ctr_wr_rsps_pending.decr; + + if (wr_resp.bresp != axi4_resp_okay) begin + // TODO: need to raise a non-maskable interrupt (NMI) here + $display ("%0d: LLC_AXI4_Adapter.rl_discard_write_rsp: fabric response error: exit", cur_cycle); + $display (" ", fshow (wr_resp)); + $finish (1); + end + + if (rg_wr_rsp_beat == 7) begin + let wrreq <- pop (f_pending_writes); + // LLC does not expect any response for writes + end + + rg_wr_rsp_beat <= rg_wr_rsp_beat + 1; + endrule + + // ================================================================ + // INTERFACE + + method Action reset; + ctr_wr_rsps_pending.clear; + endmethod + + // Fabric interface for memory + interface mem_master = master_xactor.axi_side; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/CPU/MMIOPlatform.bsv b/src_Core/CPU/MMIOPlatform.bsv new file mode 100644 index 0000000..7e1955a --- /dev/null +++ b/src_Core/CPU/MMIOPlatform.bsv @@ -0,0 +1,1076 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// Portions (c) 2019 Bluespec, Inc. + +// This file is adapted from: MIT-riscy/riscy-OOO/procs/lib/MMIOPlatform.bsv +// Modifications to fit into Bluespec's RISC-V execution environments. + +// ================================================================ +// BSV lib imports + +import Vector::*; +import GetPut::*; +import ClientServer::*; +import Connectable::*; +import FIFOF :: *; +// import BRAMCore::*; + +// ---------------- +// BSV additional libs + +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +// ---------------- +// From MIT RISCY-OOO + +import Fifo::*; +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import MMIOAddrs::*; +import MMIOCore::*; +import CacheUtils::*; +import Amo::*; + +// ---------------- +// From McStriiv + +import MMIO_AXI4_Adapter :: *; + +// ================================================================ +// Extract bytes from raw word read from near-mem. +// The bytes of interest are offset according to LSBs of addr. +// Arguments: +// - a RISC-V LD/ST size (encoding B, H, W, or D) +// - a byte-address +// - a load-word (loaded from cache/mem) +// result: +// - word with correct byte(s) shifted into LSBs and properly extended + +Bit #(2) sz_B = 2'b00; +Bit #(2) sz_H = 2'b01; +Bit #(2) sz_W = 2'b10; +Bit #(2) sz_D = 2'b11; + +function Bit #(64) fn_extract_and_extend_bytes (Bit #(2) sz, Bit #(64) byte_addr, Bit #(64) word64); + Bit #(64) result = 0; + Bit #(3) addr_lsbs = byte_addr [2:0]; + + case (sz) + sz_B: case (addr_lsbs) + 'h0: result = zeroExtend (word64 [ 7: 0]); + 'h1: result = zeroExtend (word64 [15: 8]); + 'h2: result = zeroExtend (word64 [23:16]); + 'h3: result = zeroExtend (word64 [31:24]); + 'h4: result = zeroExtend (word64 [39:32]); + 'h5: result = zeroExtend (word64 [47:40]); + 'h6: result = zeroExtend (word64 [55:48]); + 'h7: result = zeroExtend (word64 [63:56]); + endcase + + sz_H: case (addr_lsbs) + 'h0: result = zeroExtend (word64 [15: 0]); + 'h2: result = zeroExtend (word64 [31:16]); + 'h4: result = zeroExtend (word64 [47:32]); + 'h6: result = zeroExtend (word64 [63:48]); + endcase + + sz_W: case (addr_lsbs) + 'h0: result = zeroExtend (word64 [31: 0]); + 'h4: result = zeroExtend (word64 [63:32]); + endcase + + sz_D: case (addr_lsbs) // D + 'h0: result = word64; + endcase + endcase + return result; +endfunction + +// ================================================================ +// Update relevant bytes of store-value. +// The bytes of interest are offset according to LSBs of addr. +// Arguments: +// - a RISC-V LD/ST size (encoding B, H, W, or D) +// - a byte-address +// - an amo result (relevant bytes are in lower-order bits) +// - original store-val +// result: +// - store-val with relevant byte(s) updated + +function Bit #(64) fn_update_bytes (Bit #(2) sz, Bit #(64) byte_addr, Bit #(64) value, Bit #(64) st_val); + Bit #(64) result = 0; + Bit #(3) addr_lsbs = byte_addr [2:0]; + + case (sz) + sz_B: case (addr_lsbs) + 'h0: result = { st_val [63:8], value [7:0] }; + 'h1: result = { st_val [63:16], value [7:0], st_val [7:0] }; + 'h2: result = { st_val [63:24], value [7:0], st_val [15:0] }; + 'h3: result = { st_val [63:32], value [7:0], st_val [23:0] }; + 'h4: result = { st_val [63:40], value [7:0], st_val [31:0] }; + 'h5: result = { st_val [63:48], value [7:0], st_val [39:0] }; + 'h6: result = { st_val [63:56], value [7:0], st_val [47:0] }; + 'h7: result = { value [7:0], st_val [55:0] }; + endcase + + sz_H: case (addr_lsbs) + 'h0: result = { st_val [63:16], value [15:0] }; + 'h2: result = { st_val [63:32], value [15:0], st_val [15:0] }; + 'h4: result = { st_val [63:48], value [15:0], st_val [31:0] }; + 'h6: result = { value [15:0], st_val [47:0] }; + endcase + + sz_W: case (addr_lsbs) + 'h0: result = { st_val [63:32], value [31:0] }; + 'h4: result = { value [31:0], st_val [31:0] }; + endcase + + sz_D: case (addr_lsbs) // D + 'h0: result = st_val; + endcase + endcase + return result; +endfunction + +// ================================================================ +// AMO op function +// Extracts the relevant bytes from ld_val and st_val, +// Performs the AMO op, +// Updates the relevant bytes of st_val. + +function Bit #(64) fn_amo_op (Bit #(2) sz, // encodes data size (.W or .D) + AmoFunc amofunc, // encodes the AMO op + Bit #(64) addr, // lsbs indicate which 32b W in 64b D (.W) + Bit #(64) ld_val, // 64b value loaded from mem + Bit #(64) st_val); // 64b value from CPU reg Rs2 + // Extract relevant bytes of ld_val and st_val + Bit #(64) w1 = fn_extract_and_extend_bytes (sz, addr, ld_val); + Bit #(64) w2 = fn_extract_and_extend_bytes (sz, addr, st_val); + + + // Do AMO op + Int #(64) i1 = unpack (w1); // Signed, for signed ops + Int #(64) i2 = unpack (w2); // Signed, for signed ops + if (sz == 2'b10) begin + // 32-bit word + w1 = zeroExtend (w1 [31:0]); + w2 = zeroExtend (w2 [31:0]); + i1 = unpack (signExtend (w1 [31:0])); + i2 = unpack (signExtend (w2 [31:0])); + end + Bit #(64) op_result = ?; + case (amofunc) + Swap: op_result = w2; + Add: op_result = pack (i1 + i2); + Xor: op_result = w1 ^ w2; + And: op_result = w1 & w2; + Or: op_result = w1 | w2; + Minu: op_result = ((w1 < w2) ? w1 : w2); + Maxu: op_result = ((w1 > w2) ? w1 : w2); + Min: op_result = ((i1 < i2) ? w1 : w2); + Max: op_result = ((i1 > i2) ? w1 : w2); + endcase + + // Update relevant bytes of st_val + return fn_update_bytes (sz, addr, op_result, st_val); +endfunction: fn_amo_op + +// ================================================================ +// MMIO logic at platform (MMIOPlatform) +// XXX Currently all MMIO requests and posts of timer interrupts are handled +// one by one in a blocking manner. This is extremely conservative. Hopefully +// this may help avoid some kernel-level problems. + +interface MMIOPlatform; + method Action start(Addr toHost, Addr fromHost); + method ActionValue#(Data) to_host; + method Action from_host(Data x); +endinterface + +typedef enum { + Init, + SelectReq, + ProcessReq, + WaitResp +} MMIOPlatformState deriving(Bits, Eq, FShow); + +// MMIO device/reg targed by the core request together with offset within +// reg/device +typedef union tagged { + void Invalid; // invalid req target + void TimerInterrupt; // auto-generated timer interrupt + MSIPDataAlignedOffset MSIP; + MTimCmpDataAlignedOffset MTimeCmp; + void MTime; + void ToHost; + void FromHost; + Addr MMIO_Fabric_Adapter; +} MMIOPlatformReq deriving(Bits, Eq, FShow); + +module mkMMIOPlatform #(Vector#(CoreNum, MMIOCoreToPlatform) cores, + Server #(MMIOCRq, MMIODataPRs) mmio_fabric_adapter_core_side) + (MMIOPlatform) + + provisos (Bits #(Data, 64)); // this module assumes Data is 64-bit wide + + Integer verbosity = 1; + + // mtimecmp + Vector#(CoreNum, Reg#(Data)) mtimecmp <- replicateM(mkReg(0)); + // mtime + Reg#(Data) mtime <- mkReg(0); + // HTIF mem mapped addrs + Fifo#(1, Data) toHostQ <- mkCFFifo; + Fifo#(1, Data) fromHostQ <- mkCFFifo; + Reg#(DataAlignedAddr) toHostAddr <- mkReg(0); + Reg#(DataAlignedAddr) fromHostAddr <- mkReg(0); + + // state machine + Reg#(MMIOPlatformState) state <- mkReg(Init); + + // current req (valid when state != Init && state != SelectReq + Reg #(MMIOPlatformReq) curReq <- mkRegU; + Reg #(CoreId) reqCore <- mkRegU; + Reg #(MMIOFunc) reqFunc <- mkRegU; + Reg #(AmoFunc) reqAmofunc <- mkRegU; + Reg #(ByteEn) reqBE <- mkRegU; + Reg #(Bit #(2)) reqSz <- mkRegU; + Reg #(Data) reqData <- mkRegU; + + // For inst fetch, we need more bookkeepings + // offset of the requested inst within a Data + Reg#(DataInstOffset) instSel <- mkRegU; + // the current superscaler way being fetched + Reg#(SupWaySel) fetchingWay <- mkRegU; + // the already fetched insts + Vector#(TSub#(SupSize, 1), + Reg#(Instruction)) fetchedInsts <- replicateM(mkRegU); + + // we need to wait for resp from cores when we need to change MTIP + Reg#(Vector#(CoreNum, Bool)) waitMTIPCRs <- mkRegU; + + // for MSIP access: lower bits and upper bits of requested memory location + // correspond to two cores. We need to wait resp from these two cores. + Reg#(Maybe#(CoreId)) waitLowerMSIPCRs <- mkRegU; + Reg#(Maybe#(CoreId)) waitUpperMSIPCRs <- mkRegU; + + // in case of AMO on mtime and mtimecmp, resp may be sent after waiting for + // CRs, we record the AMO resp at processing time + Reg#(Data) amoResp <- mkRegU; + + // we increment mtime periodically + Reg#(Bit#(TLog#(CyclesPerTimeInc))) cycle <- mkReg(0); + + // To avoid posting timer interrupt repeatedly, we keep a copy of MTIP + // here. Since each core cannot write MTIP by CSRXXX inst, the only way to + // change MTIP is through here. + Vector#(CoreNum, Reg#(Bool)) mtip <- replicateM(mkReg(False)); + + // pass mtime to each core + rule propagateTime(state != Init); + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + cores[i].setTime(mtime); + end + endrule + + rule incCycle( + state != Init && + cycle < fromInteger(valueof(CyclesPerTimeInc) - 1) + ); + cycle <= cycle + 1; + endrule + + // we don't increment mtime when processing a req + rule incTime( + state == SelectReq && + cycle >= fromInteger(valueof(CyclesPerTimeInc) - 1) + ); + cycle <= 0; + mtime <= mtime + fromInteger(valueof(TicksPerTimeInc)); + endrule + + // since we only process 1 MMIO req or timer interrupt at a time, we can + // enq/deq all FIFOs in one rule + + (* preempts = "incTime, selectReq" *) + rule selectReq(state == SelectReq); + // check for timer interrupt + Vector#(CoreNum, Bool) needTimerInt = replicate(False); + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + if(!mtip[i] && mtimecmp[i] <= mtime) begin + cores[i].pRq.enq(MMIOPRq { + target: MTIP, + func: St, + data: 1 + }); + mtip[i] <= True; + needTimerInt[i] = True; + end + end + if(needTimerInt != replicate(False)) begin + state <= WaitResp; + curReq <= TimerInterrupt; + waitMTIPCRs <= needTimerInt; + if(verbosity > 0) begin + $display("[Platform - SelectReq] timer interrupt", + ", mtime %x", mtime, + ", mtimcmp ", fshow(readVReg(mtimecmp)), + ", old mtip ", fshow(readVReg(mtip)), + ", new interrupts ", fshow(needTimerInt)); + end + end + else begin + // now check for MMIO req from core + function Bool hasReq(Integer i) = cores[i].cRq.notEmpty; + Vector#(CoreNum, Integer) idxVec = genVector; + if(find(hasReq, idxVec) matches tagged Valid .i) begin + cores[i].cRq.deq; + MMIOCRq req = cores[i].cRq.first; + // record req + reqCore <= fromInteger(i); + reqFunc <= req.func; + reqAmofunc <= case (req.func) matches + tagged Amo .f : f; + default: None; + endcase; + reqBE <= req.byteEn; + reqData <= req.data; + reqSz <= sz_D; // TODO: may be sz_H, sz_B or sz_W + // set up bookkeepings in case of inst fetch (other + // bookkeepings are set at processing time) + instSel <= truncate(req.addr >> valueof(LgInstSzBytes)); + fetchingWay <= 0; + // find out which MMIO reg/device is being requested + DataAlignedAddr addr = getDataAlignedAddr(req.addr); + MMIOPlatformReq newReq = Invalid; + + if(addr >= msipBaseAddr && addr < msipBoundAddr) begin + newReq = MSIP (truncate(addr - msipBaseAddr)); + end + else if(addr >= mtimecmpBaseAddr && + addr < mtimecmpBoundAddr) + begin + newReq = MTimeCmp (truncate(addr - mtimecmpBaseAddr)); + end + else if(addr == mtimeBaseAddr) begin + // assume mtime is of size Data + newReq = MTime; + end + else if(addr == toHostAddr) begin + // assume tohost is of size Data + newReq = ToHost; + end + else if(addr == fromHostAddr) begin + // assume fromhost is of size Data + newReq = FromHost; + end + else begin // Send all remaining reqs to the fabric adapter, as is + newReq = MMIO_Fabric_Adapter (req.addr); + end + curReq <= newReq; + + // process valid req + state <= ProcessReq; + if(verbosity > 0) begin + $display("[Platform - SelectReq] new req, core %d, req ", + i, fshow(req), ", type ", fshow(newReq)); + end + end + end + endrule + + // handle new timer interrupt: wait for writes on MTIP to be done + rule waitTimerInterruptDone(state == WaitResp && curReq == TimerInterrupt); + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + if(waitMTIPCRs[i]) begin + cores[i].cRs.deq; + end + end + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - Done] timer interrupt", + ", mtip ", fshow(readVReg(mtip)), + ", waitCRs ", fshow(waitMTIPCRs)); + end + endrule + + // Classify the request + Bool isInstFetch = (reqFunc matches tagged Inst .x ? True : False); + Bool isAmo = (reqFunc matches tagged Amo .amofunc ? True : False); + Bool isLd = (reqFunc matches tagged Ld ? True : False); + Bool isSt = (reqFunc matches tagged St ? True : False); + + // handle MSIP access + rule processMSIP( + curReq matches tagged MSIP .offset &&& state == ProcessReq + ); + // core corresponding to lower bits of requested Data + CoreId lower_core = truncate({offset, 1'b0}); + Bool lower_en = reqBE[0]; + // core corresponding to upper bits of requested Data. Need to check if + // this core truly exists + CoreId upper_core = truncate({offset, 1'b1}); + Bool upper_valid = {offset, 1'b1} <= fromInteger(valueof(CoreNum) - 1); + Bool upper_en = reqBE[4]; + + if(isInstFetch) begin + state <= SelectReq; + cores[reqCore].pRs.enq(InstFetch (replicate(Invalid))); + if(verbosity > 0) begin + $display("[Platform - process msip] cannot do inst fetch"); + end + end + else if(upper_en && !upper_valid) begin + // access invalid core's MSIP, fault + state <= SelectReq; + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: False, data: ? + })); + if(verbosity > 0) begin + $display("[Platform - process msip] access invalid core"); + end + end + else if(reqFunc matches tagged Amo .amoFunc) begin + // AMO req: should only access MSIP of one core. Thus, we always + // treat the accessed core as the lower core to save the shift (AMO + // resp is different from load that valid data is already shifted + // to LSBs). Besides, we only use the lower 32 bits of reqData. + if(lower_en && upper_en) begin + state <= SelectReq; + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: False, data: ? + })); + if(verbosity > 0) begin + $display("[Platform - process msip] ", + "AMO cannot access 2 cores"); + end + end + else if(lower_en) begin + cores[lower_core].pRq.enq(MMIOPRq { + target: MSIP, + func: reqFunc, + data: truncate(reqData) + }); + waitLowerMSIPCRs <= Valid (lower_core); + waitUpperMSIPCRs <= Invalid; + state <= WaitResp; + end + else if(upper_en) begin + cores[upper_core].pRq.enq(MMIOPRq { + target: MSIP, + func: reqFunc, + data: truncate(reqData) + }); + waitLowerMSIPCRs <= Valid (upper_core); + waitUpperMSIPCRs <= Invalid; + state <= WaitResp; + end + else begin + // AMO access nothing: fault + state <= SelectReq; + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: False, data: ? + })); + if(verbosity > 0) begin + $display("[Platform - process msip] access nothing"); + end + end + end + else begin + // normal load and store + if(lower_en) begin + cores[lower_core].pRq.enq(MMIOPRq { + target: MSIP, + func: reqFunc, + data: zeroExtend(reqData[0]) + }); + end + if(upper_en) begin + cores[upper_core].pRq.enq(MMIOPRq { + target: MSIP, + func: reqFunc, + data: zeroExtend(reqData[32]) + }); + end + state <= WaitResp; + waitLowerMSIPCRs <= lower_en ? Valid (lower_core) : Invalid; + waitUpperMSIPCRs <= upper_en ? Valid (upper_core) : Invalid; + end + endrule + + rule waitMSIPDone( + curReq matches tagged MSIP .offset &&& state == WaitResp + ); + Bit#(32) lower_data = 0; + Bit#(32) upper_data = 0; + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + if (waitLowerMSIPCRs matches tagged Valid .c &&& + c == fromInteger(i)) begin + cores[i].cRs.deq; + lower_data = zeroExtend(cores[i].cRs.first.data); + end + else if(waitUpperMSIPCRs matches tagged Valid .c &&& + c == fromInteger(i)) begin + cores[i].cRs.deq; + upper_data = zeroExtend(cores[i].cRs.first.data); + end + end + state <= SelectReq; + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: True, + // for AMO, resp data should be signExtend(lower_data). However, + // lower_data is just 1 or 0, and upper_data is always 0, so we + // don't need to do signExtend. + data: {upper_data, lower_data} + })); + if(verbosity > 0) begin + $display("[Platform - msip done] lower %x, upper %x", + lower_data, upper_data); + end + endrule + + function Data getWriteData(Data orig); + if(reqFunc matches tagged Amo .amoFunc) begin + // amo + Bool doubleWord = reqBE[4] && reqBE[0]; + Bool upper32 = reqBE[4] && !reqBE[0]; + let amoInst = AmoInst { + func: amoFunc, + doubleWord: doubleWord, + aq: False, + rl: False + }; + return amoExec(amoInst, orig, reqData, upper32); + end + else begin + // normal store + Vector#(NumBytes, Bit#(8)) data = unpack(orig); + Vector#(NumBytes, Bit#(8)) wrVec = unpack(reqData); + for(Integer i = 0; i < valueof(NumBytes); i = i+1) begin + if(reqBE[i]) begin + data[i] = wrVec[i]; + end + end + return pack(data); + end + endfunction + + function Data getAmoResp(Data orig); + if(reqBE[4] && reqBE[0]) begin + // double word + return orig; + end + else if(reqBE[4]) begin + // upper 32 bit + return signExtend(orig[63:32]); + end + else begin + // lower 32 bit + return signExtend(orig[31:0]); + end + endfunction + + // handle mtimecmp access + rule processMTimeCmp( + curReq matches tagged MTimeCmp .offset &&& state == ProcessReq + ); + if(isInstFetch) begin + state <= SelectReq; + cores[reqCore].pRs.enq(InstFetch (replicate(Invalid))); + if(verbosity > 0) begin + $display("[Platform - process mtimecmp] cannot do inst fetch"); + end + end + else if(offset > fromInteger(valueof(CoreNum) - 1)) begin + // access invalid core's mtimecmp, fault + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: False, data: ? + })); + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - process mtimecmp] access fault"); + end + end + else begin + let oldMTimeCmp = mtimecmp[offset]; + if(reqFunc == Ld) begin + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: True, + data: oldMTimeCmp + })); + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - process mtimecmp] read done, data %x", + oldMTimeCmp); + end + end + else begin + // do updates for store or AMO + let newData = getWriteData(oldMTimeCmp); + mtimecmp[offset] <= newData; + // get and record amo resp + let respData = getAmoResp(oldMTimeCmp); + amoResp <= respData; + // check changes to MTIP + if(newData <= mtime && !mtip[offset]) begin + // need to post new timer interrupt + mtip[offset] <= True; + cores[offset].pRq.enq(MMIOPRq { + target: MTIP, + func: St, + data: 1 + }); + state <= WaitResp; + end + else if(newData > mtime && mtip[offset]) begin + // need to clear timer interrupt + mtip[offset] <= False; + cores[offset].pRq.enq(MMIOPRq { + target: MTIP, + func: St, + data: 0 + }); + state <= WaitResp; + end + else begin + // nothing happens to mtip, just finish this req + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: True, + // store doesn't need resp data, just fill in AMO resp + data: respData + })); + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - process mtimecmp] ", + "no change to mtip ", fshow(readVReg(mtip)), + ", mtime %x", mtime, + ", old mtimecmp ", fshow(readVReg(mtimecmp)), + ", new mtimecmp[%d] %x", offset, newData); + end + end + end + end + endrule + + rule waitMTimeCmpDone( + curReq matches tagged MTimeCmp .offset &&& state == WaitResp + ); + cores[offset].cRs.deq; + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: True, + // store doesn't need resp data, just fill in AMO resp. We cannot + // recompute AMO resp now, because mtimecmp has changed + data: amoResp + })); + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - mtimecmp done]", + ", mtime %x", mtime, + ", mtimecmp ", fshow(readVReg(mtimecmp)), + ", mtip ", fshow(readVReg(mtip))); + end + endrule + + // handle mtime access + rule processMTime(state == ProcessReq && curReq == MTime); + if(isInstFetch) begin + state <= SelectReq; + cores[reqCore].pRs.enq(InstFetch (replicate(Invalid))); + if(verbosity > 0) begin + $display("[Platform - process mtime] cannot do inst fetch"); + end + end + else if(reqFunc == Ld) begin + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: True, data: mtime + })); + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - process mtime] read done, data %x", + mtime); + end + end + else begin + // do update for store or AMO + let newData = getWriteData(mtime); + mtime <= newData; + // get and record AMO resp + let respData = getAmoResp(mtime); + amoResp <= respData; + // check change in MTIP + Vector#(CoreNum, Bool) changeMTIP = replicate(False); + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + if(mtimecmp[i] <= newData && !mtip[i]) begin + cores[i].pRq.enq(MMIOPRq { + target: MTIP, + func: St, + data: 1 + }); + changeMTIP[i] = True; + end + else if(mtimecmp[i] > newData && mtip[i]) begin + cores[i].pRq.enq(MMIOPRq { + target: MTIP, + func: St, + data: 0 + }); + changeMTIP[i] = True; + end + end + if(changeMTIP != replicate(False)) begin + waitMTIPCRs <= changeMTIP; + state <= WaitResp; + end + else begin + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: True, + data: respData // AMO resp + })); + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - process mtime] ", + "no change to mtip ", fshow(readVReg(mtip)), + ", new mtime %x", newData, + ", mtimecmp ", fshow(readVReg(mtimecmp))); + end + end + end + endrule + + rule waitMTimeDone(state == WaitResp && curReq == MTime); + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + if(waitMTIPCRs[i]) begin + cores[i].cRs.deq; + end + end + cores[reqCore].pRs.enq(DataAccess (MMIODataPRs { + valid: True, + data: amoResp // recorded amo resp + })); + state <= SelectReq; + if(verbosity > 0) begin + $display("[Platform - mtime done]", + ", mtime %x", mtime, + ", mtimecmp ", fshow(readVReg(mtimecmp)), + ", mtip ", fshow(readVReg(mtip))); + end + endrule + + // handle tohost access + rule processToHost(state == ProcessReq && curReq == ToHost); + if(isInstFetch) begin + state <= SelectReq; + cores[reqCore].pRs.enq(InstFetch (replicate(Invalid))); + if(verbosity > 0) begin + $display("[Platform - process tohost] cannot do inst fetch"); + end + end + else begin + let resp = MMIODataPRs {valid: False, data: ?}; + if(reqFunc == St) begin + if(toHostQ.notEmpty) begin + doAssert(False, + "Cannot write tohost when toHostQ not empty"); + // this will raise access fault + end + else begin + let data = getWriteData(0); + if(data != 0) begin // 0 means nothing for tohost + toHostQ.enq(data); + end + resp.valid = True; + end + end + else if(reqFunc == Ld) begin + resp.valid = True; + if(toHostQ.notEmpty) begin + resp.data = toHostQ.first; + end + else begin + resp.data = 0; + end + end + else begin + // amo: access fault + doAssert(False, "Cannot do AMO on toHost"); + end + state <= SelectReq; + cores[reqCore].pRs.enq(DataAccess (resp)); + if(verbosity > 0) begin + $display("[Platform - process tohost] resp ", fshow(resp)); + end + end + endrule + + // handle fromhost access + rule processFromHost(state == ProcessReq && curReq == FromHost); + if(isInstFetch) begin + state <= SelectReq; + cores[reqCore].pRs.enq(InstFetch (replicate(Invalid))); + if(verbosity > 0) begin + $display("[Platform - process fromhost] cannot do inst fetch"); + end + end + else begin + let resp = MMIODataPRs {valid: False, data: ?}; + if(reqFunc == St) begin + if(fromHostQ.notEmpty) begin + if(getWriteData(fromHostQ.first) == 0) begin + fromHostQ.deq; + resp.valid = True; + end + else begin + doAssert(False, "Can only write 0 to fromhost"); + end + end + else begin + if(getWriteData(0) == 0) begin + resp.valid = True; + end + else begin + doAssert(False, "Can only write 0 to fromhost"); + end + end + end + else if(reqFunc == Ld) begin + resp.valid = True; + if(fromHostQ.notEmpty) begin + resp.data = fromHostQ.first; + end + else begin + resp.data = 0; + end + end + else begin + // amo: access fault + doAssert(False, "Cannot do AMO on fromHost"); + end + state <= SelectReq; + cores[reqCore].pRs.enq(DataAccess (resp)); + if(verbosity > 0) begin + $display("[Platform - process fromhost] resp ", fshow(resp)); + end + end + endrule + + // ================================================================ + // ================================================================ + // ================================================================ + // All remaining IO (not MTIMECMP, MSIP, fromHost, toHost) goes to the fabric + // Instruction-fetches are treated specially (collect a superscalar set of instrs) + + // ================================================================ + // MMIO to Fabric: Load/Store (not Instruction Fetch) + + // Forward the request as-is to the fabric adapter. + rule rl_mmio_to_fabric_req (curReq matches tagged MMIO_Fabric_Adapter .addr + &&& (state == ProcessReq) + &&& (isLd || isSt)); + let req = MMIOCRq {addr:addr, func:reqFunc, byteEn:reqBE, data:reqData}; + mmio_fabric_adapter_core_side.request.put (req); + state <= WaitResp; + + if (verbosity > 0) begin + $display ("MMIOPlatform.rl_mmio_to_fabric_req"); + $display (" ", fshow (req)); + end + endrule + + // Forward the fabric-adapter's response as-is to the core. + rule rl_mmio_from_fabric_rsp (curReq matches tagged MMIO_Fabric_Adapter .addr + &&& (state == WaitResp) + &&& (isLd || isSt)); + MMIODataPRs dprs <- mmio_fabric_adapter_core_side.response.get; + let prs = tagged DataAccess dprs; + cores[reqCore].pRs.enq (prs); + state <= SelectReq; + + if (verbosity > 0) begin + $display ("MMIOPlatform.rl_mmio_from_fabric_rsp"); + $display (" ", fshow (prs)); + end + endrule + + // ================================================================ + // MMIO to Fabric: AMO (not Instruction Fetch) + + rule rl_mmio_to_fabric_amo_req (curReq matches tagged MMIO_Fabric_Adapter .addr + &&& (state == ProcessReq) + &&& isAmo); + // Send a load-request to the fabric adapter. + // Align addr to 8-byte boundary (FabricData-aligned) + Addr addr1 = { addr [63:3], 3'b_000 }; + let req = MMIOCRq {addr:addr, func:tagged Ld, byteEn:?, data:?}; + mmio_fabric_adapter_core_side.request.put (req); + state <= WaitResp; + + if (verbosity > 0) begin + $display ("MMIOPlatform.rl_mmio_to_fabric_amo_req: addr 0x%0h", addr); + $display (" ", fshow (req)); + end + endrule + + // Get the Load-response; do the AMO op; send final write back to fabric, and respond to core + rule rl_mmio_from_fabric_amo_rsp (curReq matches tagged MMIO_Fabric_Adapter .addr + &&& (state == WaitResp) + &&& isAmo); + MMIODataPRs dprs <- mmio_fabric_adapter_core_side.response.get; + + if (! dprs.valid) begin + // Access fault + let prs = tagged DataAccess dprs; + cores[reqCore].pRs.enq (prs); + state <= SelectReq; + end + else begin + // Do the AMO op on the loaded value and the store value + let ld_val = dprs.data; + let new_st_val = fn_amo_op (reqSz, reqAmofunc, addr, ld_val, reqData); + + // Write back new st_val to fabric + let req = MMIOCRq {addr:addr, func:tagged St, byteEn:reqBE, data:new_st_val}; + mmio_fabric_adapter_core_side.request.put (req); + + let prs = tagged DataAccess (MMIODataPRs { valid: True, data: ld_val }); + cores[reqCore].pRs.enq (prs); + state <= SelectReq; + + if (verbosity > 1) begin + $display ("MMIO_Platform.rl_mmio_from_fabric_amo_rsp: addr 0x%0h, size %0d, amofunc %0d", + addr, reqSz, reqAmofunc); + $display (" ld_val 0x%0h op st_val 0x%0h => new_st_val 0x%0h", ld_val, reqData, new_st_val); + end + end + endrule + + // ================================================================ + // MMIO to Fabric: Instruction Fetch + // (This code adapted from MMIOPlatform::processBootRomInst and waitBootRomInst) + // Loops, collecting and returning a super-scalar-wide set of instructions (0..maxWay). + // Note: may repeatedly fetch the same Data word as it collects instuctions. + // Expected to be used only for initial boot ROM, so speed is not critical. + // TODO: Candidate for future optimization. + // The original request had func = Inst maxWay + // instSel: initial instruction index in a Data word: truncate(req.addr >> valueof(LgInstSzBytes)) + // fetchingWay: initial 0 + + rule rl_mmio_to_fabric_ifetch_req (curReq matches tagged MMIO_Fabric_Adapter .addr + &&& (state == ProcessReq) + &&& isInstFetch); + // Note: addr may not be FabricData-aligned; result will be Data that contains addr + Addr addr1 = { addr [63:3], 3'b_000 }; + let req = MMIOCRq {addr:addr1, func: tagged Ld, byteEn: ?, data: ? }; + mmio_fabric_adapter_core_side.request.put (req); + state <= WaitResp; + + if (verbosity > 0) begin + $display ("MMIOPlatform.rl_mmio_to_fabric_ifetch_req: addr 0x%0h", addr); + $display (" ", fshow (req)); + end + endrule + + rule rl_mmio_from_fabric_ifetch_rsp (curReq matches tagged MMIO_Fabric_Adapter .addr + &&& (state == WaitResp) + &&& isInstFetch); + MMIODataPRs dprs <- mmio_fabric_adapter_core_side.response.get; + if (! dprs.valid) begin + // Access fault + let prs = tagged DataAccess dprs; + cores[reqCore].pRs.enq (prs); + state <= SelectReq; + end + else begin + let data = dprs.data; + + SupWaySel maxWay = 0; + if(reqFunc matches tagged Inst .w) begin + maxWay = w; + end + + // View Data as a vector of instructions + Vector#(DataSzInst, Instruction) instVec = unpack(data); + // extract inst from resp data + Instruction inst = instVec[instSel]; + // check whether we are done or not + if (fetchingWay >= maxWay) begin + // all 0..maxWay insts are fetched; we can resp now + Vector#(SupSize, Maybe#(Instruction)) resp = replicate(Invalid); + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + if(fromInteger(i) < fetchingWay) begin + resp[i] = Valid (fetchedInsts[i]); + end + else if(fromInteger(i) == fetchingWay) begin + resp[i] = Valid (inst); + end + end + cores[reqCore].pRs.enq (tagged InstFetch (resp)); + state <= SelectReq; + + if (verbosity > 0) begin + $display ("MMIOPlatform.rl_mmio_from_fabric_ifetch_rsp: final resp to core:"); + $display (" ", fshow (resp)); + end + end + else begin + // continue to fetch next inst, save current inst, increment offset + fetchedInsts[fetchingWay] <= inst; + fetchingWay <= fetchingWay + 1; + instSel <= instSel + 1; + curReq <= MMIO_Fabric_Adapter (instSel == maxBound ? addr + 8 : addr); + state <= ProcessReq; + + if (verbosity > 0) begin + $display ("MMIOPlatform.rl_mmio_from_fabric_ifetch_rsp:"); + $display (" fetchingWay %0d instSel %0d inst 0x%0h", fetchingWay, instSel, inst); + end + end + end + endrule + + // ================================================================ + // ================================================================ + // ================================================================ + // INTERFACE + + method Action start(Addr toHost, Addr fromHost) if(state == Init); + toHostAddr <= getDataAlignedAddr(toHost); + fromHostAddr <= getDataAlignedAddr(fromHost); + state <= SelectReq; + $display ("MMIOPlatform.start: tohostAddr = 0x%0h, fromhostAddr = %0h", + toHost, fromHost); + endmethod + + method ActionValue#(Data) to_host; + toHostQ.deq; + return toHostQ.first; + endmethod + + method Action from_host(Data x); + fromHostQ.enq(x); + endmethod +endmodule diff --git a/src_Core/CPU/MMIO_AXI4_Adapter.bsv b/src_Core/CPU/MMIO_AXI4_Adapter.bsv new file mode 100644 index 0000000..bf72ac5 --- /dev/null +++ b/src_Core/CPU/MMIO_AXI4_Adapter.bsv @@ -0,0 +1,253 @@ +package MMIO_AXI4_Adapter; + +// ================================================================ +// BSV lib imports + +import Assert :: *; +import ConfigReg :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; + +// ---------------- +// BSV additional libs + +import GetPut_Aux :: *; +import Cur_Cycle :: *; +import Semi_FIFOF :: *; +import CreditCounter :: *; + +// ================================================================ +// Project imports + +// ---------------- +// From MIT RISCY-OOO + +import ProcTypes :: *; + +// ---------------- +// From Bluespec Pipes + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// ================================================================ + +interface MMIO_AXI4_Adapter_IFC; + method Action reset; + + interface Server #(MMIOCRq, MMIODataPRs) core_side; + + // Fabric master interface for IO + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) mmio_master; +endinterface + +// ================================================================ + +module mkMMIO_AXI4_Adapter (MMIO_AXI4_Adapter_IFC); + + // Verbosity: 0: quiet; 1: transactions + Integer verbosity = 2; + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (fromInteger (verbosity)); + + // ================================================================ + // Requests from and responses to core + + FIFOF #(MMIOCRq) f_reqs_from_core <- mkFIFOF; + FIFOF #(MMIODataPRs) f_rsps_to_core <- mkFIFOF; + + // ================================================================ + // Fabric request/response + + AXI4_Master_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master_xactor <- mkAXI4_Master_Xactor_2; + + // For discarding write-responses + CreditCounter_IFC #(4) ctr_wr_rsps_pending <- mkCreditCounter; // Max 15 writes outstanding + + // ================================================================ + // Functions to interact with the fabric + + // Send a read-request into the fabric + function Action fa_fabric_send_read_req (Fabric_Addr addr); + action + AXI4_Size size = axsize_8; + let mem_req_rd_addr = AXI4_Rd_Addr {arid: fabric_default_id, + araddr: addr, + arlen: 0, // burst len = arlen+1 + arsize: size, + arburst: fabric_default_burst, + arlock: fabric_default_lock, + arcache: fabric_default_arcache, + arprot: fabric_default_prot, + arqos: fabric_default_qos, + arregion: fabric_default_region, + aruser: fabric_default_user}; + + master_xactor.i_rd_addr.enq (mem_req_rd_addr); + + // Debugging + if (cfg_verbosity > 0) begin + $display (" ", fshow (mem_req_rd_addr)); + end + endaction + endfunction + + // Send a write-request into the fabric + function Action fa_fabric_send_write_req (Fabric_Addr addr, Fabric_Strb strb, Bit #(64) st_val); + action + AXI4_Size size = axsize_8; + let mem_req_wr_addr = AXI4_Wr_Addr {awid: fabric_default_id, + awaddr: addr, + awlen: 0, // burst len = awlen+1 + awsize: size, + awburst: fabric_default_burst, + awlock: fabric_default_lock, + awcache: fabric_default_awcache, + awprot: fabric_default_prot, + awqos: fabric_default_qos, + awregion: fabric_default_region, + awuser: fabric_default_user}; + + let mem_req_wr_data = AXI4_Wr_Data {wid: fabric_default_id, + wdata: st_val, + wstrb: strb, + wlast: True, + wuser: fabric_default_user}; + + master_xactor.i_wr_addr.enq (mem_req_wr_addr); + master_xactor.i_wr_data.enq (mem_req_wr_data); + + // Expect a fabric response + ctr_wr_rsps_pending.incr; + + // Debugging + if (cfg_verbosity > 0) begin + $display (" To fabric: ", fshow (mem_req_wr_addr)); + $display (" ", fshow (mem_req_wr_data)); + end + endaction + endfunction + + // ================================================================ + // Handle read requests and responses. + // Don't do a read while a write is outstanding. + // This is just an adapter from MMIOCRq/MMIODataPRs to AXI4 + + rule rl_handle_read_req (f_reqs_from_core.first.func matches Ld + &&& (ctr_wr_rsps_pending.value == 0)); + let req <- pop (f_reqs_from_core); + + if (cfg_verbosity > 0) begin + $display ("%0d: MMIO_AXI4_Adapter.rl_handle_read_req: Ld request", cur_cycle); + $display (" ", fshow (req)); + end + + fa_fabric_send_read_req (req.addr); + endrule + + // ---------------- + + rule rl_handle_read_rsps; + let mem_rsp <- pop_o (master_xactor.o_rd_data); + + if (cfg_verbosity > 0) begin + $display ("%0d: MMIO_AXI4_Adapter.rl_handle_read_rsps ", cur_cycle); + $display (" ", fshow (mem_rsp)); + end + + if (mem_rsp.rresp != axi4_resp_okay) begin + // TODO: need to raise a non-maskable interrupt (NMI) here + $display ("%0d: MMIO_AXI4_Adapter.rl_handle_read_rsp: fabric response error; exit", cur_cycle); + $display (" ", fshow (mem_rsp)); + $finish (1); + end + + let rsp = MMIODataPRs {valid: True, data: mem_rsp.rdata}; + f_rsps_to_core.enq (rsp); + + if (cfg_verbosity > 0) + $display (" Response MMIO to core: ", fshow (rsp)); + endrule + + // ================================================================ + // Handle write requests and responses + + rule rl_handle_write_req (f_reqs_from_core.first.func matches St); + let req <- pop (f_reqs_from_core); + + if (cfg_verbosity > 0) begin + $display ("%d: MMIO_AXI4_Adapter.rl_handle_write_req: St request:", cur_cycle); + $display (" ", fshow (req)); + end + + fa_fabric_send_write_req (req.addr, pack (req.byteEn), req.data); + endrule + + // ---------------- + // Discard write-responses from the fabric + + rule rl_discard_write_rsp; + let wr_resp <- pop_o (master_xactor.o_wr_resp); + + if (cfg_verbosity > 0) begin + $display ("%0d: MMIO_AXI4_Adapter.rl_discard_write_rsp", cur_cycle); + $display (" ", fshow (wr_resp)); + end + + if (ctr_wr_rsps_pending.value == 0) begin + $display ("%0d: ERROR: MMIO_AXI4_Adapter.rl_discard_write_rsp: unexpected Wr response (ctr_wr_rsps_pending.value == 0)", + cur_cycle); + $display (" ", fshow (wr_resp)); + $finish (1); // Assertion failure + end + + ctr_wr_rsps_pending.decr; + + if (wr_resp.bresp != axi4_resp_okay) begin + // TODO: need to raise a non-maskable interrupt (NMI) here + $display ("%0d: MMIO_AXI4_Adapter.rl_discard_write_rsp: fabric response error: exit", cur_cycle); + $display (" ", fshow (wr_resp)); + $finish (1); + end + else begin + let rsp = MMIODataPRs {valid: True, data: 0}; + f_rsps_to_core.enq (rsp); + end + endrule + + // ================================================================ + // This adapter should only receive Ld/St requests, no Inst or AMO reqs. + + function Bool fn_is_Ld_or_St (MMIOCRq req); + return case (req.func) matches + Ld : True; + St : True; + default: False; + endcase; + endfunction + + rule rl_handle_non_Ld_St (! fn_is_Ld_or_St (f_reqs_from_core.first)); + let req <- pop (f_reqs_from_core); + + $display ("%0d: ERROR: MMIO_AXI4_Adapter.rl_handle_non_Ld_St", + cur_cycle); + $display (" ", fshow (req)); + $finish (1); // Assertion failure + endrule + + // ================================================================ + // INTERFACE + + method Action reset; + ctr_wr_rsps_pending.clear; + endmethod + + interface Server core_side = toGPServer (f_reqs_from_core, f_rsps_to_core); + + // Fabric master interface for IO + interface mmio_master = master_xactor.axi_side; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/CPU/Proc.bsv b/src_Core/CPU/Proc.bsv new file mode 100644 index 0000000..87ef24d --- /dev/null +++ b/src_Core/CPU/Proc.bsv @@ -0,0 +1,358 @@ +package Proc; + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// Portions Copyright (c) 2019 Bluespec, Inc. + +// ================================================================ +// BSV lib imports + +import Vector::*; +import GetPut::*; +import ClientServer::*; +import Connectable::*; +import FIFOF :: *; +import ConfigReg :: *; + +// ---------------- +// BSV additional libs + +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +// ---------------- +// From MIT RISCY-OOO + +import Types::*; +import ProcTypes::*; +import L1CoCache::*; +import L2Tlb::*; +import CCTypes::*; +import CacheUtils::*; +import LLCache::*; +import MemLoader::*; +import L1LLConnect::*; +import LLCDmaConnect::*; +import MMIOAddrs::*; +import MMIOCore::*; +import DramCommon::*; +import Performance::*; + +// ---------------- +// From McStriiv + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +import Core :: *; +import Proc_IFC :: *; +import MMIOPlatform :: *; +import LLC_AXI4_Adapter :: *; +import MMIO_AXI4_Adapter :: *; + +// ================================================================ + +(* synthesize *) +module mkProc (Proc_IFC); + // cores + Vector#(CoreNum, Core) core = ?; + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + core[i] <- mkCore(fromInteger(i)); + end + + // ---------------- + // Verbosity control for debugging + + // Verbosity: 0=quiet; 1=instruction trace; 2=more detail + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (0); + + // ---------------- + // Reset requests and responses (TODO: to be implemented) + + FIFOF #(Bit #(0)) f_reset_reqs <- mkFIFOF; + FIFOF #(Bit #(0)) f_reset_rsps <- mkFIFOF; + + // ---------------- + // Communication to/from External debug module (TODO: to be implemented) + +`ifdef INCLUDE_GDB_CONTROL + + // Debugger run-control + FIFOF #(Bool) f_run_halt_reqs <- mkFIFOF; + FIFOF #(Bool) f_run_halt_rsps <- mkFIFOF; + + // Stop-request from debugger (e.g., GDB ^C or Dsharp 'stop') + Reg #(Bool) rg_stop_req <- mkReg (False); + + // Count instrs after step-request from debugger (via dcsr.step) + Reg #(Bit #(1)) rg_step_count <- mkReg (0); + + // Debugger GPR read/write request/response + FIFOF #(MemoryRequest #(5, XLEN)) f_gpr_reqs <- mkFIFOF1; + FIFOF #(MemoryResponse #( XLEN)) f_gpr_rsps <- mkFIFOF1; + +`ifdef ISA_F + // Debugger FPR read/write request/response + FIFOF #(MemoryRequest #(5, FLEN)) f_fpr_reqs <- mkFIFOF1; + FIFOF #(MemoryResponse #( FLEN)) f_fpr_rsps <- mkFIFOF1; +`endif + + // Debugger CSR read/write request/response + FIFOF #(MemoryRequest #(12, XLEN)) f_csr_reqs <- mkFIFOF1; + FIFOF #(MemoryResponse #( XLEN)) f_csr_rsps <- mkFIFOF1; + +`endif + + // ---------------- + // Tandem Verification (TODO: to be implemented) + +`ifdef INCLUDE_TANDEM_VERIF + FIFOF #(Trace_Data) f_trace_data <- mkFIFOF; +`endif + + // ---------------- + // MMIO + + MMIO_AXI4_Adapter_IFC mmio_axi4_adapter <- mkMMIO_AXI4_Adapter; + + // MMIO platform + Vector#(CoreNum, MMIOCoreToPlatform) mmioToP; + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + mmioToP[i] = core[i].mmioToPlatform; + end + MMIOPlatform mmioPlatform <- mkMMIOPlatform (mmioToP, + mmio_axi4_adapter.core_side); + + // last level cache + LLCache llc <- mkLLCache; + + // connect LLC to L1 caches + Vector#(L1Num, ChildCacheToParent#(L1Way, void)) l1 = ?; + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + l1[i] = core[i].dCacheToParent; + l1[i + valueof(CoreNum)] = core[i].iCacheToParent; + end + mkL1LLConnect(llc.to_child, l1); + + // ================================================================ + // LLC's DMA connections + + // Core's tlbToMem + Vector#(CoreNum, TlbMemClient) tlbToMem = ?; + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + tlbToMem[i] = core[i].tlbToMem; + end + + // Stub out memLoader (TODO: can be Debug Module's access) + let memLoaderStub = interface MemLoaderMemClient; + interface memReq = nullFifoDeq; + interface respSt = nullFifoEnq; + endinterface; + + mkLLCDmaConnect(llc.dma, memLoaderStub, tlbToMem); + + // ================================================================ + // interface LLC to AXI4 + + LLC_AXI4_Adapter_IFC llc_axi4_adapter <- mkLLC_AXi4_Adapter (llc.to_mem); + + // ================================================================ + // Connect stats + + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + rule broadcastStats; + Bool doStats <- core[i].sendDoStats; + for(Integer j = 0; j < valueof(CoreNum); j = j+1) begin + core[j].recvDoStats(doStats); + end + llc.perf.setStatus(doStats); + endrule + end + + // ================================================================ + // Stub out deadlock and renameDebug interfaces + + for(Integer j = 0; j < valueof(CoreNum); j = j+1) begin + rule rl_dummy1; + let x <- core[j].deadlock.dCacheCRqStuck.get; + endrule + rule rl_dummy2; + let x <- core[j].deadlock.dCachePRqStuck.get; + endrule + rule rl_dummy3; + let x <- core[j].deadlock.iCacheCRqStuck.get; + endrule + rule rl_dummy4; + let x <- core[j].deadlock.iCachePRqStuck.get; + endrule + rule rl_dummy5; + let x <- core[j].deadlock.renameInstStuck.get; + endrule + rule rl_dummy6; + let x <- core[j].deadlock.renameCorrectPathStuck.get; + endrule + rule rl_dummy7; + let x <- core[j].deadlock.commitInstStuck.get; + endrule + rule rl_dummy8; + let x <- core[j].deadlock.commitUserInstStuck.get; + endrule + rule rl_dummy9; + let x <- core[j].deadlock.checkStarted.get; + endrule + + rule rl_dummy20; + let x <- core[j].renameDebug.renameErr.get; + endrule + end + + // ================================================================ + // Reset + + rule rl_reset; + let x <- pop (f_reset_reqs); + + llc_axi4_adapter.reset; + mmio_axi4_adapter.reset; + + f_reset_rsps.enq (?); + endrule + + // ---------------- + // Termination detection + + for(Integer i = 0; i < valueof(CoreNum); i = i+1) begin + rule rl_terminate; + let x <- core[i].coreIndInv.terminate; + $display ("Core %d terminated", i); + endrule + end + + // Print out values written 'tohost' + rule rl_tohost; + let x <- mmioPlatform.to_host; + $display ("mmioPlatform.rl_tohost: 0x%0x (= %0d)", x, x); + if (x != 0) begin + // Standard RISC-V ISA tests finish by writing a value tohost with x[0]==1. + // Further when x[63:1]==0, all tests within the program pass, + // otherwise x[63:1] = the test within the program that failed. + let failed_testnum = (x >> 1); + if (failed_testnum == 0) + $display ("PASS"); + else + $display ("FAIL %0d", failed_testnum); + $finish (0); + end + endrule + + // ================================================================ + // ================================================================ + // ================================================================ + // INTERFACE + + // Reset + interface Server hart0_server_reset = toGPServer (f_reset_reqs, f_reset_rsps); + + // ---------------- + // Start the cores running + method Action start (Addr startpc, Addr tohostAddr, Addr fromhostAddr); + action + for(Integer i = 0; i < valueof(CoreNum); i = i+1) + core[i].coreReq.start (startpc, tohostAddr, fromhostAddr); + endaction + + mmioPlatform.start (tohostAddr, fromhostAddr); + + $display ("Proc.start: startpc = 0x%0h, tohostAddr = 0x%0h, fromhostAddr = %0h", + startpc, tohostAddr, fromhostAddr); + endmethod + + // ---------------- + // SoC fabric connections + + // Fabric master interface for memory (from LLC) + interface master0 = llc_axi4_adapter.mem_master; + + // Fabric master interface for IO (from MMIOPlatform) + interface master1 = mmio_axi4_adapter.mmio_master; + + // ---------------- + // External interrupts + + method Action m_external_interrupt_req (x); + core[0].setMEIP (pack (x)); + endmethod + + method Action s_external_interrupt_req (x); + core[0].setSEIP (pack (x)); + endmethod + + // ---------------- + // Non-maskable interrupt + + // TODO: fixup: NMIs should send CPU to an NMI vector (TBD in SoC_Map) + method Action non_maskable_interrupt_req (Bool set_not_clear) = noAction; + + // ---------------- + // For tracing + + method Action set_verbosity (Bit #(4) verbosity); + cfg_verbosity <= verbosity; + endmethod + + // ---------------- + // Optional interface to Tandem Verifier + +`ifdef INCLUDE_TANDEM_VERIF + interface Get trace_data_out = toGet (f_trace_data); +`endif + + // ---------------- + // Optional interface to Debug Module + +`ifdef INCLUDE_GDB_CONTROL + // run-control, other + interface Server hart0_server_run_halt = toGPServer (f_run_halt_reqs, f_run_halt_rsps); + + interface Put hart0_put_other_req; + method Action put (Bit #(4) req); + cfg_verbosity <= req; + endmethod + endinterface + + // GPR access + interface MemoryServer hart0_gpr_mem_server = toGPServer (f_gpr_reqs, f_gpr_rsps); + +`ifdef ISA_F + // FPR access + interface MemoryServer hart0_fpr_mem_server = toGPServer (f_fpr_reqs, f_fpr_rsps); +`endif + + // CSR access + interface MemoryServer hart0_csr_mem_server = toGPServer (f_csr_reqs, f_csr_rsps); +`endif +endmodule + +endpackage diff --git a/src_Core/CPU/Proc_IFC.bsv b/src_Core/CPU/Proc_IFC.bsv new file mode 100644 index 0000000..164b99b --- /dev/null +++ b/src_Core/CPU/Proc_IFC.bsv @@ -0,0 +1,99 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +package Proc_IFC; + +// ================================================================ +// BSV library imports + +import Memory :: *; +import GetPut :: *; +import ClientServer :: *; + +// ================================================================ +// Project imports + +import ISA_Decls :: *; + +`ifdef INCLUDE_TANDEM_VERIF +import TV_Info :: *; +`endif + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// ================================================================ +// CPU interface + +// Note: this Proc_IFC is similar, but not identical to CPU_IFC for Piccolo and Flute +// Specifically, it removes interfaces for software and timer, +// because the RISCY-OOO mkProc contains those elements. + +interface Proc_IFC; + // Reset + interface Server #(Token, Token) hart0_server_reset; + + // ---------------- + // Start the cores running + method Action start (Addr startpc, Addr tohostAddr, Addr fromhostAddr); + + // ---------------- + // SoC fabric connections + + // Fabric master interface for memory (from LLC) + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master0; + + // Fabric master interface for IO (from MMIOPlatform) + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master1; + + // ---------------- + // External interrupts + + (* always_ready, always_enabled *) + method Action m_external_interrupt_req (Bool set_not_clear); + + (* always_ready, always_enabled *) + method Action s_external_interrupt_req (Bool set_not_clear); + + // ---------------- + // Non-maskable interrupt + + (* always_ready, always_enabled *) + method Action non_maskable_interrupt_req (Bool set_not_clear); + + // ---------------- + // Set core's verbosity + + method Action set_verbosity (Bit #(4) verbosity); + + // ---------------- + // Optional interface to Tandem Verifier + +`ifdef INCLUDE_TANDEM_VERIF + interface Get #(Trace_Data) trace_data_out; +`endif + + // ---------------- + // Optional interface to Debug Module + +`ifdef INCLUDE_GDB_CONTROL + // run-control, other + interface Server #(Bool, Bool) hart0_server_run_halt; + interface Put #(Bit #(4)) hart0_put_other_req; + + // GPR access + interface MemoryServer #(5, XLEN) hart0_gpr_mem_server; + +`ifdef ISA_F + // FPR access + interface MemoryServer #(5, FLEN) hart0_fpr_mem_server; +`endif + + // CSR access + interface MemoryServer #(12, XLEN) hart0_csr_mem_server; +`endif + +endinterface + +// ================================================================ + +endpackage diff --git a/src_Core/Core/CoreW.bsv b/src_Core/Core/CoreW.bsv new file mode 100644 index 0000000..70b520b --- /dev/null +++ b/src_Core/Core/CoreW.bsv @@ -0,0 +1,464 @@ +// Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved. + +package CoreW; + +// ================================================================ +// This package defines: +// Core_IFC +// mkCore #(Core_IFC) +// mkFabric_2x3 -- specialized AXI4 fabric used inside this core +// +// mkCoreW instantiates: +// - mkProc (the RISC-V CPU, a version of MIT's RISCY-OOO) +// - mkFabric_2x3 +// - mkPLIC_16_2_7 +// - mkTV_Encode (Tandem-Verification logic, optional: INCLUDE_TANDEM_VERIF) +// - mkDebug_Module (RISC-V Debug Module, optional: INCLUDE_GDB_CONTROL) +// and connects them all up. + +// ================================================================ +// BSV library imports + +import Vector :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import Connectable :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +// Main fabric +import AXI4_Types :: *; +import AXI4_Fabric :: *; +import Fabric_Defs :: *; // for Wd_Id, Wd_Addr, Wd_Data, Wd_User +import SoC_Map :: *; + +`ifdef INCLUDE_GDB_CONTROL +import Debug_Module :: *; +`endif + +import Core_IFC :: *; +import PLIC :: *; +import PLIC_16_2_7 :: *; +import Proc_IFC :: *; +import Proc :: *; + +`ifdef INCLUDE_TANDEM_VERIF +import TV_Info :: *; +import TV_Encode :: *; +`endif + +// TV_Taps needed when both GDB_CONTROL and TANDEM_VERIF are present +`ifdef INCLUDE_GDB_CONTROL +`ifdef INCLUDE_TANDEM_VERIF +import TV_Taps :: *; +`endif +`endif + +// ================================================================ +// The Core module + +(* synthesize *) +module mkCoreW (Core_IFC #(N_External_Interrupt_Sources)); + + // ================================================================ + // STATE + + // System address map + SoC_Map_IFC soc_map <- mkSoC_Map; + + // McStriiv processor + Proc_IFC proc <- mkProc; + + // A 2x3 fabric for connecting {CPU, Debug_Module} to {Fabric, PLIC} + Fabric_2x3_IFC fabric_2x3 <- mkFabric_2x3; + + // PLIC (Platform-Level Interrupt Controller) + PLIC_IFC_16_2_7 plic <- mkPLIC_16_2_7; + + // Reset requests from SoC and responses to SoC + FIFOF #(Bit #(0)) f_reset_reqs <- mkFIFOF; + FIFOF #(Bit #(0)) f_reset_rsps <- mkFIFOF; + +`ifdef INCLUDE_TANDEM_VERIF + // The TV encoder transforms Trace_Data structures produced by the CPU and DM + // into encoded byte vectors for transmission to the Tandem Verifier + TV_Encode_IFC tv_encode <- mkTV_Encode; +`endif + +`ifdef INCLUDE_GDB_CONTROL + // Debug Module + Debug_Module_IFC debug_module <- mkDebug_Module; +`endif + + // ================================================================ + // RESET + // There are two sources of reset requests to the CPU: externally + // from the SoC and, optionally, the DM. The SoC requires a + // response, the DM does not. When both requestors are present + // (i.e., DM is present), we merge the reset requests into the CPU, + // and we remember which one was the requestor in + // f_reset_requestor, so that we know whether or not to respond to + // the SoC. + + Bit #(1) reset_requestor_dm = 0; + Bit #(1) reset_requestor_soc = 1; +`ifdef INCLUDE_GDB_CONTROL + FIFOF #(Bit #(1)) f_reset_requestor <- mkFIFOF; +`endif + + // Reset-hart0 request from SoC + rule rl_cpu_hart0_reset_from_soc_start; + let req <- pop (f_reset_reqs); + + proc.hart0_server_reset.request.put (?); // CPU + plic.server_reset.request.put (?); // PLIC + fabric_2x3.reset; // Local 2x3 Fabric + +`ifdef INCLUDE_GDB_CONTROL + // Remember the requestor, so we can respond to it + f_reset_requestor.enq (reset_requestor_soc); +`endif + $display ("%0d: Core.rl_cpu_hart0_reset_from_soc_start", cur_cycle); + endrule + +`ifdef INCLUDE_GDB_CONTROL + // Reset-hart0 from Debug Module + rule rl_cpu_hart0_reset_from_dm_start; + let req <- debug_module.hart0_get_reset_req.get; + + proc.hart0_server_reset.request.put (?); // CPU + plic.server_reset.request.put (?); // PLIC + fabric_2x3.reset; // Local 2x3 fabric + + // Remember the requestor, so we can respond to it + f_reset_requestor.enq (reset_requestor_dm); + $display ("%0d: Core.rl_cpu_hart0_reset_from_dm_start", cur_cycle); + endrule +`endif + + rule rl_cpu_hart0_reset_complete; + let rsp1 <- proc.hart0_server_reset.response.get; // CPU + let rsp3 <- plic.server_reset.response.get; // PLIC + + plic.set_addr_map (zeroExtend (soc_map.m_plic_addr_base), + zeroExtend (soc_map.m_plic_addr_lim)); + + Bit #(1) requestor = reset_requestor_soc; +`ifdef INCLUDE_GDB_CONTROL + requestor <- pop (f_reset_requestor); +`endif + if (requestor == reset_requestor_soc) + f_reset_rsps.enq (?); + + // Start running the cores + Bit #(64) startpc = 'h_0000_1000; // TODO: fixup + Bit #(64) tohostAddr = 'h_8000_1000; // TODO: fixup + Bit #(64) fromhostAddr = 0; + proc.start (startpc, tohostAddr, fromhostAddr); + + $display ("%0d: Core.rl_cpu_hart0_reset_complete; started running proc", cur_cycle); + endrule + + // ================================================================ + // Direct DM-to-CPU connections + +`ifdef INCLUDE_GDB_CONTROL + // DM to CPU connections for run-control and other misc requests + mkConnection (debug_module.hart0_client_run_halt, proc.hart0_server_run_halt); + mkConnection (debug_module.hart0_get_other_req, proc.hart0_put_other_req); +`endif + + // ================================================================ + // Other CPU/DM/TV connections + // (depends on whether DM, TV or both are present) + +`ifdef INCLUDE_GDB_CONTROL +`ifdef INCLUDE_TANDEM_VERIF + // BEGIN SECTION: GDB and TV + // ---------------------------------------------------------------- + // DM and TV both present. We instantiate 'taps' into connections + // where the DM writes CPU GPRs, CPU FPRs, CPU CSRs, and main memory, + // in order to produce corresponding writes for the Tandem Verifier. + // Then, we merge the Trace_Data from these three taps with the + // Trace_Data produced by the PROC. + + FIFOF #(Trace_Data) f_trace_data_merged <- mkFIFOF; + + // Connect merged trace data to trace encoder + mkConnection (toGet (f_trace_data_merged), tv_encode.trace_data_in); + + // Merge-in CPU's trace data. + // This is equivalent to: mkConnection (proc.trace_data_out, toPut (f_trace_data_merged)) + // but using a rule allows us to name it in scheduling attributes. + rule merge_cpu_trace_data; + let tmp <- proc.trace_data_out.get; + f_trace_data_merged.enq (tmp); + endrule + + // Create a tap for DM's memory-writes to the bus, and merge-in the trace data. + DM_Mem_Tap_IFC dm_mem_tap <- mkDM_Mem_Tap; + mkConnection (debug_module.master, dm_mem_tap.slave); + let dm_master_local = dm_mem_tap.master; + + rule merge_dm_mem_trace_data; + let tmp <- dm_mem_tap.trace_data_out.get; + f_trace_data_merged.enq (tmp); + endrule + + // Create a tap for DM's GPR writes to the CPU, and merge-in the trace data. + DM_GPR_Tap_IFC dm_gpr_tap_ifc <- mkDM_GPR_Tap; + mkConnection (debug_module.hart0_gpr_mem_client, dm_gpr_tap_ifc.server); + mkConnection (dm_gpr_tap_ifc.client, proc.hart0_gpr_mem_server); + + rule merge_dm_gpr_trace_data; + let tmp <- dm_gpr_tap_ifc.trace_data_out.get; + f_trace_data_merged.enq (tmp); + endrule + +`ifdef ISA_F_OR_D + // Create a tap for DM's FPR writes to the CPU, and merge-in the trace data. + DM_FPR_Tap_IFC dm_fpr_tap_ifc <- mkDM_FPR_Tap; + mkConnection (debug_module.hart0_fpr_mem_client, dm_fpr_tap_ifc.server); + mkConnection (dm_fpr_tap_ifc.client, proc.hart0_fpr_mem_server); + + rule merge_dm_fpr_trace_data; + let tmp <- dm_fpr_tap_ifc.trace_data_out.get; + f_trace_data_merged.enq (tmp); + endrule +`endif + // for ifdef ISA_F_OR_D + + // Create a tap for DM's CSR writes, and merge-in the trace data. + DM_CSR_Tap_IFC dm_csr_tap <- mkDM_CSR_Tap; + mkConnection(debug_module.hart0_csr_mem_client, dm_csr_tap.server); + mkConnection(dm_csr_tap.client, proc.hart0_csr_mem_server); + +`ifdef ISA_F_OR_D + (* descending_urgency = "merge_dm_fpr_trace_data, merge_dm_gpr_trace_data" *) +`endif + (* descending_urgency = "merge_dm_gpr_trace_data, merge_dm_csr_trace_data" *) + (* descending_urgency = "merge_dm_csr_trace_data, merge_dm_mem_trace_data" *) + (* descending_urgency = "merge_dm_mem_trace_data, merge_cpu_trace_data" *) + rule merge_dm_csr_trace_data; + let tmp <- dm_csr_tap.trace_data_out.get; + f_trace_data_merged.enq(tmp); + endrule + + // END SECTION: GDB and TV +`else + // for ifdef INCLUDE_TANDEM_VERIF + // ---------------------------------------------------------------- + // BEGIN SECTION: GDB and no TV + + // Connect DM's GPR interface directly to CPU + mkConnection (debug_module.hart0_gpr_mem_client, proc.hart0_gpr_mem_server); + +`ifdef ISA_F_OR_D + // Connect DM's FPR interface directly to CPU + mkConnection (debug_module.hart0_fpr_mem_client, proc.hart0_fpr_mem_server); +`endif + + // Connect DM's CSR interface directly to CPU + mkConnection (debug_module.hart0_csr_mem_client, proc.hart0_csr_mem_server); + + // DM's bus master is directly the bus master + let dm_master_local = debug_module.master; + + // END SECTION: GDB and no TV +`endif + // for ifdef INCLUDE_TANDEM_VERIF + +`else + // for ifdef INCLUDE_GDB_CONTROL + // BEGIN SECTION: no GDB + + // No DM, so 'DM bus master' is dummy + AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) + dm_master_local = dummy_AXI4_Master_ifc; + +`ifdef INCLUDE_TANDEM_VERIF + // ---------------------------------------------------------------- + // BEGIN SECTION: no GDB, TV + + // Connect CPU's TV out directly to TV encoder + mkConnection (proc.trace_data_out, tv_encode.trace_data_in); + // END SECTION: no GDB, TV +`endif +`endif + // for ifdef INCLUDE_GDB_CONTROL + + // ================================================================ + // Connect the local 2x3 fabric + + // Masters on the local 2x3 fabric + mkConnection (proc.master1, fabric_2x3.v_from_masters [cpu_dmem_master_num]); + mkConnection (dm_master_local, fabric_2x3.v_from_masters [debug_module_sba_master_num]); + + // Slaves on the local 2x3 fabric + // default slave is taken out directly to the Core interface + mkConnection (fabric_2x3.v_to_slaves [plic_slave_num], plic.axi4_slave); + + // TODO: This slave can be connected to mkLLCDmaConnect for Debug Module System Bus Access + AXI4_Slave_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) dummy_slave = dummy_AXI4_Slave_ifc; + mkConnection (fabric_2x3.v_to_slaves [near_mem_io_slave_num], dummy_slave); + + // ================================================================ + // Connect external interrupt lines from PLIC to CPU + + rule rl_relay_external_interrupts; // from PLIC + Bool meip = plic.v_targets [0].m_eip; + proc.m_external_interrupt_req (meip); + + Bool seip = plic.v_targets [1].m_eip; + proc.s_external_interrupt_req (seip); + + // $display ("%0d: Core.rl_relay_external_interrupts: relaying: %d", cur_cycle, pack (x)); + endrule + + // TODO: fixup. Need to combine NMIs from multiple sources (cache, fabric, devices, ...) + rule rl_relay_non_maskable_interrupt; + proc.non_maskable_interrupt_req (False); + + // $display ("%0d: Core.rl_relay_non_maskable_interrupts: relaying: %d", cur_cycle, pack (x)); + endrule + + // ================================================================ + // INTERFACE + + // ---------------------------------------------------------------- + // Debugging: set core's verbosity + + method Action set_verbosity (Bit #(4) verbosity, Bit #(64) logdelay); + // Warning: ignoring logdelay + proc.set_verbosity (verbosity); + endmethod + + // ---------------------------------------------------------------- + // Soft reset + + interface Server cpu_reset_server = toGPServer (f_reset_reqs, f_reset_rsps); + + // ---------------------------------------------------------------- + // AXI4 Fabric interfaces + + // IMem to Fabric master interface + interface AXI4_Master_IFC cpu_imem_master = proc.master0; + + // DMem to Fabric master interface + interface AXI4_Master_IFC cpu_dmem_master = fabric_2x3.v_to_slaves [default_slave_num]; + + // ---------------------------------------------------------------- + // External interrupt sources + + interface core_external_interrupt_sources = plic.v_sources; + + // ---------------------------------------------------------------- + // Optional TV interface + +`ifdef INCLUDE_TANDEM_VERIF + interface Get tv_verifier_info_get; + method ActionValue #(Info_CPU_to_Verifier) get(); + match { .n, .v } <- tv_encode.tv_vb_out.get; + return (Info_CPU_to_Verifier { num_bytes: n, vec_bytes: v }); + endmethod + endinterface +`endif + + // ---------------------------------------------------------------- + // Optional DM interfaces + +`ifdef INCLUDE_GDB_CONTROL + // ---------------- + // DMI (Debug Module Interface) facing remote debugger + + interface DMI dm_dmi = debug_module.dmi; + + // ---------------- + // Facing Platform + + // Non-Debug-Module Reset (reset all except DM) + interface Get dm_ndm_reset_req_get = debug_module.get_ndm_reset_req; +`endif + +endmodule: mkCoreW + +// ================================================================ +// 2x3 Fabric for this Core +// Masters: CPU DMem, Debug Module System Bus Access, External access + +// ---------------- +// Fabric port numbers for masters + +typedef 2 Num_Masters_2x3; + +typedef Bit #(TLog #(Num_Masters_2x3)) Master_Num_2x3; + +Master_Num_2x3 cpu_dmem_master_num = 0; +Master_Num_2x3 debug_module_sba_master_num = 1; + +// ---------------- +// Fabric port numbers for slaves + +typedef 3 Num_Slaves_2x3; + +typedef Bit #(TLog #(Num_Slaves_2x3)) Slave_Num_2x3; + +Slave_Num_2x3 default_slave_num = 0; +Slave_Num_2x3 plic_slave_num = 1; + +// TODO: repurpose this for Debug Module System Bus Access to connect to mkLLCDramConnect +Slave_Num_2x3 near_mem_io_slave_num = 2; + + +// ---------------- +// Specialization of parameterized AXI4 fabric for 2x3 Core fabric + +typedef AXI4_Fabric_IFC #(Num_Masters_2x3, + Num_Slaves_2x3, + Wd_Id, + Wd_Addr, + Wd_Data, + Wd_User) Fabric_2x3_IFC; + +// ---------------- + +(* synthesize *) +module mkFabric_2x3 (Fabric_2x3_IFC); + + // System address map + SoC_Map_IFC soc_map <- mkSoC_Map; + + // ---------------- + // Slave address decoder + // Any addr is legal, and there is only one slave to service it. + + function Tuple2 #(Bool, Slave_Num_2x3) fn_addr_to_slave_num_2x3 (Fabric_Addr addr); + if ( (soc_map.m_near_mem_io_addr_base <= addr) + && (addr < soc_map.m_near_mem_io_addr_lim)) + return tuple2 (True, near_mem_io_slave_num); + + else if ( (soc_map.m_plic_addr_base <= addr) + && (addr < soc_map.m_plic_addr_lim)) + return tuple2 (True, plic_slave_num); + + else + return tuple2 (True, default_slave_num); + endfunction + + AXI4_Fabric_IFC #(Num_Masters_2x3, Num_Slaves_2x3, Wd_Id, Wd_Addr, Wd_Data, Wd_User) + fabric <- mkAXI4_Fabric (fn_addr_to_slave_num_2x3); + + return fabric; +endmodule: mkFabric_2x3 + +// ================================================================ + +endpackage diff --git a/src_Core/Core/Core_IFC.bsv b/src_Core/Core/Core_IFC.bsv new file mode 100644 index 0000000..878b14f --- /dev/null +++ b/src_Core/Core/Core_IFC.bsv @@ -0,0 +1,97 @@ +// Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved. + +package Core_IFC; + +// ================================================================ +// This package defines the interface of a Core module which +// contains: +// - mkCPU (the RISC-V CPU) +// - mkFabric_2x3 +// - mkNear_Mem_IO_AXI4 +// - mkPLIC_16_2_7 +// - mkTV_Encode (Tandem-Verification logic, optional: INCLUDE_TANDEM_VERIF) +// - mkDebug_Module (RISC-V Debug Module, optional: INCLUDE_GDB_CONTROL) + +// ================================================================ +// BSV library imports + +import Vector :: *; +import GetPut :: *; +import ClientServer :: *; + +// ================================================================ +// Project imports + +// Main fabric +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// External interrupt request interface +import PLIC :: *; + +`ifdef INCLUDE_TANDEM_VERIF +import TV_Info :: *; +`endif + +`ifdef INCLUDE_GDB_CONTROL +import Debug_Module :: *; +`endif + +// ================================================================ +// The Core interface + +interface Core_IFC #(numeric type t_n_interrupt_sources); + + // ---------------------------------------------------------------- + // Debugging: set core's verbosity + + method Action set_verbosity (Bit #(4) verbosity, Bit #(64) logdelay); + + // ---------------------------------------------------------------- + // Soft reset + + interface Server #(Bit #(0), Bit #(0)) cpu_reset_server; + + // ---------------------------------------------------------------- + // AXI4 Fabric interfaces + + // CPU IMem to Fabric master interface + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) cpu_imem_master; + + // CPU DMem to Fabric master interface + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) cpu_dmem_master; + + // ---------------------------------------------------------------- + // External interrupt sources + + interface Vector #(t_n_interrupt_sources, PLIC_Source_IFC) core_external_interrupt_sources; + + // ---------------------------------------------------------------- + // Optional Tandem Verifier interface output tuples (n,vb), + // where 'vb' is a vector of bytes + // with relevant bytes in locations [0]..[n-1] + +`ifdef INCLUDE_TANDEM_VERIF + interface Get #(Info_CPU_to_Verifier) tv_verifier_info_get; +`endif + + // ---------------------------------------------------------------- + // Optional Debug Module interfaces + +`ifdef INCLUDE_GDB_CONTROL + // ---------------- + // DMI (Debug Module Interface) facing remote debugger + + interface DMI dm_dmi; + + // ---------------- + // Facing Platform + // Non-Debug-Module Reset (reset all except DM) + + interface Get #(Bit #(0)) dm_ndm_reset_req_get; +`endif +endinterface + +// ================================================================ + +endpackage diff --git a/src_Core/Core/Fabric_Defs.bsv b/src_Core/Core/Fabric_Defs.bsv new file mode 100644 index 0000000..fd366a4 --- /dev/null +++ b/src_Core/Core/Fabric_Defs.bsv @@ -0,0 +1,88 @@ +// Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved + +package Fabric_Defs; + +// ================================================================ +// Defines key parameters of the AXI4/AXI4-Lite system interconnect +// fabric to which the core connects, such as address bus width, data +// bus width, etc. + +// ***** WARNING! WARNING! WARNING! ***** + +// During system integration, these parameters should be checked to be +// identical to the system interconnect settings. Strong +// type-checking (EXACT match on bus widths) will do this; but some +// languages/tools may silently ignore mismatched widths. + +// ================================================================ +// BSV lib imports + +// None + +// ================================================================ +// Project imports + +import AXI4_Types :: *; + +// ================================================================ +// Fabric parameters + +// ---------------- +// Width of fabric 'id' buses +typedef 4 Wd_Id; +typedef Bit #(Wd_Id) Fabric_Id; + +// ---------------- +// Width of fabric 'addr' buses +`ifdef FABRIC64 +typedef 64 Wd_Addr; +`else +typedef 32 Wd_Addr; +`endif + +typedef Bit #(Wd_Addr) Fabric_Addr; +typedef TDiv #(Wd_Addr, 8) Bytes_per_Fabric_Addr; + +Integer bytes_per_fabric_addr = valueOf (Bytes_per_Fabric_Addr); + +// ---------------- +// Width of fabric 'data' buses +`ifdef FABRIC64 +typedef 64 Wd_Data; +`else +typedef 32 Wd_Data; +`endif + +typedef Bit #(Wd_Data) Fabric_Data; +typedef Bit #(TDiv #(Wd_Data, 8)) Fabric_Strb; + +typedef TDiv #(Wd_Data, 8) Bytes_per_Fabric_Data; +Integer bytes_per_fabric_data = valueOf (Bytes_per_Fabric_Data); + +// ---------------- +// Width of fabric 'user' datapaths +typedef 0 Wd_User; +typedef Bit #(Wd_User) Fabric_User; + +// ---------------- +// Number of zero LSBs in a fabric address aligned to the fabric data width + +typedef TLog #(Bytes_per_Fabric_Data) ZLSBs_Aligned_Fabric_Addr; +Integer zlsbs_aligned_fabric_addr = valueOf (ZLSBs_Aligned_Fabric_Addr); + +// ================================================================ +// AXI4 defaults for this project + +Fabric_Id fabric_default_id = 0; +AXI4_Burst fabric_default_burst = axburst_incr; +AXI4_Lock fabric_default_lock = axlock_normal; +AXI4_Cache fabric_default_arcache = arcache_dev_nonbuf; +AXI4_Cache fabric_default_awcache = awcache_dev_nonbuf; +AXI4_Prot fabric_default_prot = { axprot_2_data, axprot_1_secure, axprot_0_unpriv }; +AXI4_QoS fabric_default_qos = 0; +AXI4_Region fabric_default_region = 0; +Fabric_User fabric_default_user = ?; + +// ================================================================ + +endpackage diff --git a/src_Core/Core/TV_Encode.bsv b/src_Core/Core/TV_Encode.bsv new file mode 100644 index 0000000..66225cd --- /dev/null +++ b/src_Core/Core/TV_Encode.bsv @@ -0,0 +1,736 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved. + +package TV_Encode; + +// ================================================================ +// module mkTV_Encode is a transforming FIFO +// converting Trace_Data into encoded byte vectors + +// ================================================================ +// BSV lib imports + +import Vector :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import Connectable :: *; + +// ---------------- +// BSV additional libs + +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +import ISA_Decls :: *; +import TV_Info :: *; + +// ================================================================ + +interface TV_Encode_IFC; + method Action reset; + + // This module receives Trace_Data structs from the CPU and Debug Module + interface Put #(Trace_Data) trace_data_in; + + // This module produces tuples (n,vb), + // where 'vb' is a vector of bytes + // with relevant bytes in locations [0]..[n-1] + interface Get #(Tuple2 #(Bit #(32), TV_Vec_Bytes)) tv_vb_out; +endinterface + +// ================================================================ + +(* synthesize *) +module mkTV_Encode (TV_Encode_IFC); + + Reg #(Bool) rg_reset_done <- mkReg (True); + + // Keep track of last PC for more efficient encoding of incremented PCs + // TODO: currently always sending full PC + Reg #(WordXL) rg_last_pc <- mkReg (0); + + FIFOF #(Trace_Data) f_trace_data <- mkFIFOF; + FIFOF #(Tuple2 #(Bit #(32), TV_Vec_Bytes)) f_vb <- mkFIFOF; + + // ---------------------------------------------------------------- + // BEHAVIOR + + rule rl_log_trace_RESET (rg_reset_done && (f_trace_data.first.op == TRACE_RESET)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_byte (te_op_hart_reset); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nnN, .xN } = vsubst (nn1, x1, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_GPR_WRITE (rg_reset_done && (f_trace_data.first.op == TRACE_GPR_WRITE)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_byte (te_op_state_init); + match { .n2, .vb2 } = encode_reg (fv_gpr_regnum (td.rd), td.word1); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nnN, .xN } = vsubst (nn2, x2, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_FPR_WRITE (rg_reset_done && (f_trace_data.first.op == TRACE_FPR_WRITE)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_byte (te_op_state_init); + match { .n2, .vb2 } = encode_reg (fv_fpr_regnum (td.rd), td.word1); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nnN, .xN } = vsubst (nn2, x2, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_CSR_WRITE (rg_reset_done && (f_trace_data.first.op == TRACE_CSR_WRITE)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_byte (te_op_state_init); + match { .n2, .vb2 } = encode_reg (fv_csr_regnum (truncate (td.word3)), td.word4); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nnN, .xN } = vsubst (nn2, x2, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_MEM_WRITE (rg_reset_done && (f_trace_data.first.op == TRACE_MEM_WRITE)); + let td <- pop (f_trace_data); + + Bit #(2) mem_req_size = td.word1 [1:0]; + Byte size_and_mem_req_op = { 2'b0, mem_req_size, te_mem_req_op_Store }; + Byte result_and_size = { te_mem_result_success, 2'b0, mem_req_size }; + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_byte (te_op_state_init); + match { .n2, .vb2 } = encode_byte (te_op_mem_req); + match { .n3, .vb3 } = encode_mlen (td.word3); + match { .n4, .vb4 } = encode_byte (size_and_mem_req_op); + match { .n5, .vb5 } = encode_mdata (mem_req_size, td.word2); + //match { .n6, .vb6 } = encode_byte (te_op_mem_rsp); + //match { .n7, .vb7 } = encode_byte (result_and_size); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nn5, .x5 } = vsubst (nn4, x4, n5, vb5); + //match { .nn6, .x6 } = vsubst (nn5, x5, n6, vb6); + //match { .nn7, .x7 } = vsubst (nn6, x6, n7, vb7); + //match { .nnN, .xN } = vsubst (nn7, x7, nN, vbN); + match { .nnN, .xN } = vsubst (nn5, x5, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_OTHER (rg_reset_done && (f_trace_data.first.op == TRACE_OTHER)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nnN, .xN } = vsubst (nn2, x2, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_I_RD (rg_reset_done && (f_trace_data.first.op == TRACE_I_RD)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_reg (fv_gpr_regnum (td.rd), td.word1); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nnN, .xN } = vsubst (nn3, x3, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_F_RD (rg_reset_done && (f_trace_data.first.op == TRACE_F_RD)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_reg (fv_fpr_regnum (td.rd), td.word1); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nnN, .xN } = vsubst (nn2, x2, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_I_LOAD (rg_reset_done && (f_trace_data.first.op == TRACE_I_LOAD)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_reg (fv_gpr_regnum (td.rd), td.word1); + match { .n4, .vb4 } = encode_eaddr (truncate (td.word3)); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nnN, .xN } = vsubst (nn4, x4, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_F_LOAD (rg_reset_done && (f_trace_data.first.op == TRACE_F_LOAD)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_reg (fv_fpr_regnum (td.rd), td.word1); + match { .n4, .vb4 } = encode_eaddr (truncate (td.word3)); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nnN, .xN } = vsubst (nn4, x4, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_STORE (rg_reset_done && (f_trace_data.first.op == TRACE_STORE)); + let td <- pop (f_trace_data); + + let funct3 = instr_funct3 (td.instr); // TODO: what if it's a 16b instr? + let mem_req_size = funct3 [1:0]; + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_stval (mem_req_size, td.word2); + match { .n4, .vb4 } = encode_eaddr (truncate (td.word3)); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nnN, .xN } = vsubst (nn4, x4, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_AMO (rg_reset_done && (f_trace_data.first.op == TRACE_AMO)); + let td <- pop (f_trace_data); + + let funct3 = instr_funct3 (td.instr); // TODO: what if it's a 16b instr? + let mem_req_size = funct3 [1:0]; + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_reg (fv_gpr_regnum (td.rd), td.word1); + match { .n4, .vb4 } = encode_stval (mem_req_size, td.word2); + match { .n5, .vb5 } = encode_eaddr (truncate (td.word3)); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nn5, .x5 } = vsubst (nn4, x4, n5, vb5); + match { .nnN, .xN } = vsubst (nn5, x5, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_CSRRX (rg_reset_done && (f_trace_data.first.op == TRACE_CSRRX)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_reg (fv_gpr_regnum (td.rd), td.word1); + match { .n4, .vb4 } = ((td.word2 == 0) + ? tuple2 (0, ?) // CSR was not written + : encode_reg (fv_csr_regnum (truncate (td.word3)), td.word4)); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nnN, .xN } = vsubst (nn4, x4, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_TRAP (rg_reset_done && (f_trace_data.first.op == TRACE_TRAP)); + let td <- pop (f_trace_data); + + // Use new priv mode to decide which trap regs are updated (M, S or U priv) + Priv_Mode priv = truncate (td.rd); + CSR_Addr csr_addr_status = csr_addr_mstatus; + CSR_Addr csr_addr_cause = csr_addr_mcause; + CSR_Addr csr_addr_epc = csr_addr_mepc; + CSR_Addr csr_addr_tval = csr_addr_mtval; + if (priv == s_Priv_Mode) begin + csr_addr_status = csr_addr_sstatus; + csr_addr_cause = csr_addr_scause; + csr_addr_epc = csr_addr_sepc; + csr_addr_tval = csr_addr_stval; + end + else if (priv == u_Priv_Mode) begin + csr_addr_status = csr_addr_ustatus; + csr_addr_cause = csr_addr_ucause; + csr_addr_epc = csr_addr_uepc; + csr_addr_tval = csr_addr_utval; + end + + // Omit the instruction if cause is instruction fault since the instruction is then bogus + Bool is_instr_fault = ( (truncate (td.word2) == exc_code_INSTR_ACCESS_FAULT) + || (truncate (td.word2) == exc_code_INSTR_PAGE_FAULT)); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = (is_instr_fault + ? tuple2 (0, ?) + : encode_instr (td.instr_sz, td.instr)); + match { .n3, .vb3 } = encode_priv (td.rd); + match { .n4, .vb4 } = encode_reg (fv_csr_regnum (csr_addr_status), td.word1); + match { .n5, .vb5 } = encode_reg (fv_csr_regnum (csr_addr_cause), td.word2); + match { .n6, .vb6 } = encode_reg (fv_csr_regnum (csr_addr_epc), truncate (td.word3)); + match { .n7, .vb7 } = encode_reg (fv_csr_regnum (csr_addr_tval), td.word4); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nn5, .x5 } = vsubst (nn4, x4, n5, vb5); + match { .nn6, .x6 } = vsubst (nn5, x5, n6, vb6); + match { .nn7, .x7 } = vsubst (nn6, x6, n7, vb7); + match { .nnN, .xN } = vsubst (nn7, x7, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_INTR (rg_reset_done && (f_trace_data.first.op == TRACE_INTR)); + let td <- pop (f_trace_data); + + // Use new priv mode to decide which trap regs are updated (M, S or U priv) + Priv_Mode priv = truncate (td.rd); + CSR_Addr csr_addr_status = csr_addr_mstatus; + CSR_Addr csr_addr_cause = csr_addr_mcause; + CSR_Addr csr_addr_epc = csr_addr_mepc; + CSR_Addr csr_addr_tval = csr_addr_mtval; + if (priv == s_Priv_Mode) begin + csr_addr_status = csr_addr_sstatus; + csr_addr_cause = csr_addr_scause; + csr_addr_epc = csr_addr_sepc; + csr_addr_tval = csr_addr_stval; + end + else if (priv == u_Priv_Mode) begin + csr_addr_status = csr_addr_ustatus; + csr_addr_cause = csr_addr_ucause; + csr_addr_epc = csr_addr_uepc; + csr_addr_tval = csr_addr_utval; + end + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_priv (td.rd); + match { .n3, .vb3 } = encode_reg (fv_csr_regnum (csr_addr_status), td.word1); + match { .n4, .vb4 } = encode_reg (fv_csr_regnum (csr_addr_cause), td.word2); + match { .n5, .vb5 } = encode_reg (fv_csr_regnum (csr_addr_epc), truncate (td.word3)); + match { .n6, .vb6 } = encode_reg (fv_csr_regnum (csr_addr_tval), td.word4); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nn5, .x5 } = vsubst (nn4, x4, n5, vb5); + match { .nn6, .x6 } = vsubst (nn5, x5, n6, vb6); + match { .nnN, .xN } = vsubst (nn6, x6, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + rule rl_log_trace_RET (rg_reset_done && (f_trace_data.first.op == TRACE_RET)); + let td <- pop (f_trace_data); + + // Encode components of td into byte vecs + match { .n0, .vb0 } = encode_byte (te_op_begin_group); + match { .n1, .vb1 } = encode_pc (td.pc); + match { .n2, .vb2 } = encode_instr (td.instr_sz, td.instr); + match { .n3, .vb3 } = encode_priv (td.rd); + match { .n4, .vb4 } = encode_reg (fv_csr_regnum (csr_addr_mstatus), td.word1); + match { .nN, .vbN } = encode_byte (te_op_end_group); + + // Concatenate components into a single byte vec + match { .nn0, .x0 } = vsubst ( 0, ?, n0, vb0); + match { .nn1, .x1 } = vsubst (nn0, x0, n1, vb1); + match { .nn2, .x2 } = vsubst (nn1, x1, n2, vb2); + match { .nn3, .x3 } = vsubst (nn2, x2, n3, vb3); + match { .nn4, .x4 } = vsubst (nn3, x3, n4, vb4); + match { .nnN, .xN } = vsubst (nn4, x4, nN, vbN); + + f_vb.enq (tuple2 (nnN, xN)); + endrule + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset (); + endmethod + + interface Put trace_data_in = toPut (f_trace_data); + interface Get tv_vb_out = toGet (f_vb); +endmodule + +// **************************************************************** +// **************************************************************** +// **************************************************************** +// Encoding Trace_Data into Byte vectors + +// ================================================================ +// Encodings +// cf. "Trace Protocol Specification Version 2018-09-12, Darius Rad, Bluespec, Inc." + +Bit #(8) te_op_begin_group = 1; +Bit #(8) te_op_end_group = 2; +Bit #(8) te_op_incr_pc = 3; +Bit #(8) te_op_full_reg = 4; +Bit #(8) te_op_incr_reg = 5; +Bit #(8) te_op_incr_reg_OR = 6; +Bit #(8) te_op_addl_state = 7; +Bit #(8) te_op_mem_req = 8; +Bit #(8) te_op_mem_rsp = 9; +Bit #(8) te_op_hart_reset = 10; +Bit #(8) te_op_state_init = 11; +Bit #(8) te_op_16b_instr = 16; +Bit #(8) te_op_32b_instr = 17; + +Bit #(4) te_mem_req_size_8 = 0; +Bit #(4) te_mem_req_size_16 = 1; +Bit #(4) te_mem_req_size_32 = 2; +Bit #(4) te_mem_req_size_64 = 3; + +Bit #(4) te_mem_req_op_Load = 0; +Bit #(4) te_mem_req_op_Store = 1; +Bit #(4) te_mem_req_op_LR = 2; +Bit #(4) te_mem_req_op_SC = 3; +Bit #(4) te_mem_req_op_AMO_swap = 4; +Bit #(4) te_mem_req_op_AMO_add = 5; +Bit #(4) te_mem_req_op_AMO_xor = 6; +Bit #(4) te_mem_req_op_AMO_and = 7; +Bit #(4) te_mem_req_op_AMO_or = 8; +Bit #(4) te_mem_req_op_AMO_min = 9; +Bit #(4) te_mem_req_op_AMO_max = 10; +Bit #(4) te_mem_req_op_AMO_minu = 11; +Bit #(4) te_mem_req_op_AMO_maxu = 12; +Bit #(4) te_mem_req_op_ifetch = 13; + +Bit #(4) te_mem_result_success = 0; +Bit #(4) te_mem_result_failure = 1; + +Bit #(8) te_op_addl_state_priv = 1; +Bit #(8) te_op_addl_state_paddr = 2; +Bit #(8) te_op_addl_state_eaddr = 3; +Bit #(8) te_op_addl_state_data8 = 4; +Bit #(8) te_op_addl_state_data16 = 5; +Bit #(8) te_op_addl_state_data32 = 6; +Bit #(8) te_op_addl_state_data64 = 7; +Bit #(8) te_op_addl_state_mtime = 8; +Bit #(8) te_op_addl_state_pc_paddr = 9; +Bit #(8) te_op_addl_state_pc = 10; + +// ================================================================ +// Architectural register address encodings +// cf. "RISC-V External Debug Support" +// 2018-10-02_riscv_debug_spec_v0.13_DRAFT_f2873e71 +// "Table 3.3 Abstract Register Numbers" + +function Bit #(16) fv_csr_regnum (CSR_Addr csr_addr); + return zeroExtend (csr_addr); +endfunction + +function Bit #(16) fv_gpr_regnum (RegName gpr_addr); + return 'h1000 + zeroExtend (gpr_addr); +endfunction + +function Bit #(16) fv_fpr_regnum (RegName fpr_addr); + return 'h1020 + zeroExtend (fpr_addr); +endfunction + +// ================================================================ +// vsubst substitutes vb1[j1:j1+j2-1] with vb2[0:j2-1] + +function Tuple2 #(Bit #(32), + Vector #(TV_VB_SIZE, Byte)) + vsubst (Bit #(32) j1, Vector #(TV_VB_SIZE, Byte) vb1, + Bit #(32) j2, Vector #(m, Byte) vb2); + + function Byte f (Integer j); + Byte x = vb1 [j]; + Bit #(32) jj = fromInteger (j); + if ((j1 <= jj) && (jj < j1 + j2)) + x = vb2 [jj - j1]; + return x; + endfunction + + let v = genWith (f); + let n = j1 + j2; + + return tuple2 (n, v); +endfunction + +// ================================================================ +// Encoding of Trace_Data into byte vectors +// Every function below returns: +// (n, vb) :: Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) +// where vb is a vector of bytes with relevant bytes in vb[0]..vb[n-1] + +// ================================================================ + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_byte (Byte x); + return tuple2 (1, replicate (x)); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_mlen (Bit #(64) word); + Vector #(TV_VB_SIZE, Byte) vb = newVector; + Bit #(32) n; + vb [0] = word[7:0]; + vb [1] = word [15:8]; + vb [2] = word [23:16]; + vb [3] = word [31:24]; + vb [4] = word [39:32]; + vb [5] = word [47:40]; + vb [6] = word [55:48]; + vb [7] = word [63:56]; +`ifdef RV32 + n = 4; // MLEN = 32 +`ifdef SV34 + n = 5; // MLEN = 34 +`endif +`else + n = 8; // MLEN = 64 +`endif + return tuple2 (n, vb); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_mdata (MemReqSize mem_req_size, WordXL word); + Vector #(TV_VB_SIZE, Byte) vb = newVector; + Bit #(32) n; + vb [0] = word[7:0]; + vb [1] = word [15:8]; + vb [2] = word [23:16]; + vb [3] = word [31:24]; +`ifdef RV64 + vb [4] = word [39:32]; + vb [5] = word [47:40]; + vb [6] = word [55:48]; + vb [7] = word [63:56]; +`endif + n = case (mem_req_size) + f3_SIZE_B: 1; + f3_SIZE_H: 2; + f3_SIZE_W: 4; + f3_SIZE_D: 8; + endcase; + return tuple2 (n, vb); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_instr (ISize isize, Bit #(32) instr); + + Vector #(TV_VB_SIZE, Byte) vb = newVector; + Bit #(32) n = ((isize == ISIZE16BIT) ? 3 : 5); + vb [0] = ((isize == ISIZE16BIT) ? te_op_16b_instr : te_op_32b_instr); + vb [1] = instr [7:0]; + vb [2] = instr [15:8]; + vb [3] = instr [23:16]; + vb [4] = instr [31:24]; + return tuple2 (n, vb); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_reg (Bit #(16) regnum, WordXL word); + Vector #(TV_VB_SIZE, Byte) vb = newVector; + Bit #(32) n = 0; + vb [0] = te_op_full_reg; + vb [1] = regnum [7:0]; + vb [2] = regnum [15:8]; + vb [3] = word[7:0]; + vb [4] = word [15:8]; + vb [5] = word [23:16]; + vb [6] = word [31:24]; + n = 7; +`ifdef RV64 + vb [7] = word [39:32]; + vb [8] = word [47:40]; + vb [9] = word [55:48]; + vb [10] = word [63:56]; + n = 11; +`endif + if (regnum == fv_gpr_regnum (0)) n = 0; + return tuple2 (n, vb); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_priv (Bit #(5) priv); + Vector #(TV_VB_SIZE, Byte) vb = newVector; + vb [0] = te_op_addl_state; + vb [1] = te_op_addl_state_priv; + vb [2] = zeroExtend (priv); + return tuple2 (3, vb); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_pc (WordXL word); + Vector #(TV_VB_SIZE, Byte) vb = newVector; + Bit #(32) n; + vb [0] = te_op_addl_state; + vb [1] = te_op_addl_state_pc; + vb [2] = word [7:0]; + vb [3] = word [15:8]; + vb [4] = word [23:16]; + vb [5] = word [31:24]; + n = 6; +`ifdef RV64 + vb [6] = word [39:32]; + vb [7] = word [47:40]; + vb [8] = word [55:48]; + vb [9] = word [63:56]; + n = 10; +`endif + return tuple2 (n, vb); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_eaddr (WordXL word); + Vector #(TV_VB_SIZE, Byte) vb = newVector; + Bit #(32) n; + vb [0] = te_op_addl_state; + vb [1] = te_op_addl_state_eaddr; + vb [2] = word [7:0]; + vb [3] = word [15:8]; + vb [4] = word [23:16]; + vb [5] = word [31:24]; + n = 6; +`ifdef RV64 + vb [6] = word [39:32]; + vb [7] = word [47:40]; + vb [8] = word [55:48]; + vb [9] = word [63:56]; + n = 10; +`endif + return tuple2 (n, vb); +endfunction + +function Tuple2 #(Bit #(32), Vector #(TV_VB_SIZE, Byte)) encode_stval (MemReqSize mem_req_size, WordXL word); + Vector #(TV_VB_SIZE, Byte) vb = newVector; + Bit #(32) n; + vb [0] = te_op_addl_state; + vb [1] = case (mem_req_size) + f3_SIZE_B: te_op_addl_state_data8; + f3_SIZE_H: te_op_addl_state_data16; + f3_SIZE_W: te_op_addl_state_data32; + f3_SIZE_D: te_op_addl_state_data64; + endcase; + vb [2] = word [7:0]; + vb [3] = word [15:8]; + vb [4] = word [23:16]; + vb [5] = word [31:24]; +`ifdef RV64 + vb [6] = word [39:32]; + vb [7] = word [47:40]; + vb [8] = word [55:48]; + vb [9] = word [63:56]; +`endif + n = case (mem_req_size) + f3_SIZE_B: 2 + 1; + f3_SIZE_H: 2 + 2; + f3_SIZE_W: 2 + 4; + f3_SIZE_D: 2 + 8; + endcase; + return tuple2 (n, vb); +endfunction + +// ================================================================ + +endpackage diff --git a/src_Core/Core/TV_Taps.bsv b/src_Core/Core/TV_Taps.bsv new file mode 100644 index 0000000..be55fe6 --- /dev/null +++ b/src_Core/Core/TV_Taps.bsv @@ -0,0 +1,239 @@ +// Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved. + +package TV_Taps; + +// ================================================================ +// This package defines 'taps' on connections between +// - DM and CPU, on which DM accesses CPU GPRs, FPRs and CSRs +// - DM and memory bus, on which DM accesses memory +// Each tap snoops 'writes', and produces a corresponsing Trace_Data +// write-memory command for the Tandem Verifier, so that it keeps its +// GPRs, FPRs, CSRs and memories in sync. + +// ================================================================ +// BSV library imports + +import Assert :: *; +import BUtils :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import Connectable :: *; +import Memory :: *; + +// ---------------- +// BSV additional libs + +import Semi_FIFOF :: *; +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +import ISA_Decls :: *; +import TV_Info :: *; + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// ================================================================ +// DM-to-memory tap + +interface DM_Mem_Tap_IFC; + interface AXI4_Slave_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave; + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master; + interface Get #(Trace_Data) trace_data_out; +endinterface + +(* synthesize *) +module mkDM_Mem_Tap (DM_Mem_Tap_IFC); + + // Transactor facing DM + AXI4_Slave_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave_xactor <- mkAXI4_Slave_Xactor; + + // Transactor facing memory bus + AXI4_Master_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master_xactor <- mkAXI4_Master_Xactor; + + // Tap output + FIFOF #(Trace_Data) f_trace_data <- mkFIFOF; + + // ---------------- + // AXI requests + + // Snoop write requests + rule write_reqs; + let wr_addr = slave_xactor.o_wr_addr.first; + slave_xactor.o_wr_addr.deq; + + let wr_data = slave_xactor.o_wr_data.first; + slave_xactor.o_wr_data.deq; + + // Pass-through + master_xactor.i_wr_addr.enq (wr_addr); + master_xactor.i_wr_data.enq (wr_data); + + // Tap + Bit #(64) paddr = ?; + Bit #(64) stval = ?; +`ifdef FABRIC64 + if (wr_data.wstrb == 'h0f) begin + paddr = zeroExtend (wr_addr.awaddr); + stval = (wr_data.wdata & 'h_FFFF_FFFF); + end + else if (wr_data.wstrb == 'hf0) begin + paddr = zeroExtend (wr_addr.awaddr); + stval = ((wr_data.wdata >> 32) & 'h_FFFF_FFFF); + end + else + dynamicAssert(False, "mkDM_Mem_Tap: unsupported byte enables"); +`else + paddr = zeroExtend (wr_addr.awaddr); + stval = zeroExtend (wr_data.wdata); +`endif + Trace_Data td = mkTrace_MEM_WRITE (f3_SIZE_W, truncate (stval), paddr); + f_trace_data.enq (td); + endrule + + // Read requests, write responses and read responses are not snooped + mkConnection (slave_xactor.o_rd_addr, master_xactor.i_rd_addr); + mkConnection (slave_xactor.i_wr_resp, master_xactor.o_wr_resp); + mkConnection (slave_xactor.i_rd_data, master_xactor.o_rd_data); + + // ================================================================ + // INTERFACE + + // Facing DM + interface slave = slave_xactor.axi_side; + // Facing bus + interface master = master_xactor.axi_side; + // Tap towards verifier + interface Get trace_data_out = toGet (f_trace_data); + +endmodule: mkDM_Mem_Tap + +// ================================================================ +// DM-to-CPU GPR tap (for writes to GPRs) + +interface DM_GPR_Tap_IFC; + interface MemoryClient #(5, XLEN) client; + interface MemoryServer #(5, XLEN) server; + interface Get #(Trace_Data) trace_data_out; +endinterface + +(* synthesize *) +module mkDM_GPR_Tap (DM_GPR_Tap_IFC); + // req from DM + FIFOF #(MemoryRequest #(5, XLEN)) f_req_in <- mkFIFOF; + // req to CPU + FIFOF #(MemoryRequest #(5, XLEN)) f_req_out <- mkFIFOF; + // resp CPU->DM + FIFOF #(MemoryResponse #(XLEN)) f_rsp <- mkFIFOF; + // Tap to TV + FIFOF #(Trace_Data) f_trace_data <- mkFIFOF; + + rule request; + let req <- pop (f_req_in); + + // Pass-through to CPU + f_req_out.enq(req); + + // Snoop writes and send trace data to TV + if (req.write) begin + Trace_Data td; + td = mkTrace_GPR_WRITE (req.address, req.data); + f_trace_data.enq (td); + end + endrule + + interface MemoryClient client = toGPClient (f_req_out, f_rsp); + interface MemoryServer server = toGPServer (f_req_in, f_rsp); + + interface Get trace_data_out = toGet (f_trace_data); +endmodule: mkDM_GPR_Tap + +// ================================================================ +// DM-to-CPU FPR tap (for writes to FPRs) + +`ifdef ISA_F_OR_D + +interface DM_FPR_Tap_IFC; + interface MemoryClient #(5, FLEN) client; + interface MemoryServer #(5, FLEN) server; + interface Get #(Trace_Data) trace_data_out; +endinterface + +(* synthesize *) +module mkDM_FPR_Tap (DM_FPR_Tap_IFC); + // req from DM + FIFOF #(MemoryRequest #(5, FLEN)) f_req_in <- mkFIFOF; + // req to CPU + FIFOF #(MemoryRequest #(5, FLEN)) f_req_out <- mkFIFOF; + // resp CPU->DM + FIFOF #(MemoryResponse #(FLEN)) f_rsp <- mkFIFOF; + // Tap to TV + FIFOF #(Trace_Data) f_trace_data <- mkFIFOF; + + rule request; + let req <- pop (f_req_in); + + // Pass-through to CPU + f_req_out.enq(req); + + // Snoop writes and send trace data to TV + if (req.write) begin + Trace_Data td; + td = mkTrace_FPR_WRITE (req.address, req.data); + f_trace_data.enq (td); + end + endrule + + interface MemoryClient client = toGPClient (f_req_out, f_rsp); + interface MemoryServer server = toGPServer (f_req_in, f_rsp); + + interface Get trace_data_out = toGet (f_trace_data); +endmodule: mkDM_FPR_Tap + +`endif + +// ================================================================ +// DM-to-CPU CSR tap (for writes to CSRs) + +interface DM_CSR_Tap_IFC; + interface MemoryClient #(12, XLEN) client; + interface MemoryServer #(12, XLEN) server; + interface Get #(Trace_Data) trace_data_out; +endinterface + +(* synthesize *) +module mkDM_CSR_Tap (DM_CSR_Tap_IFC); + // req from DM + FIFOF #(MemoryRequest #(12, XLEN)) f_req_in <- mkFIFOF; + // req to CPU + FIFOF #(MemoryRequest #(12, XLEN)) f_req_out <- mkFIFOF; + // resp CPU->DM + FIFOF #(MemoryResponse #(XLEN)) f_rsp <- mkFIFOF; + // Tap to TV + FIFOF #(Trace_Data) f_trace_data <- mkFIFOF; + + rule request; + let req <- pop (f_req_in); + + // Pass-through to CPU + f_req_out.enq(req); + + // Snoop writes and send trace data to TV + if (req.write) begin + Trace_Data td = mkTrace_CSR_WRITE (req.address, req.data); + f_trace_data.enq (td); + end + endrule + + interface MemoryClient client = toGPClient (f_req_out, f_rsp); + interface MemoryServer server = toGPServer (f_req_in, f_rsp); + + interface Get trace_data_out = toGet (f_trace_data); +endmodule: mkDM_CSR_Tap + +// ================================================================ + +endpackage diff --git a/src_Core/Debug_Module/DM_Abstract_Commands.bsv b/src_Core/Debug_Module/DM_Abstract_Commands.bsv new file mode 100644 index 0000000..637aa08 --- /dev/null +++ b/src_Core/Debug_Module/DM_Abstract_Commands.bsv @@ -0,0 +1,487 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved. + +package DM_Abstract_Commands; + +// ================================================================ +// This package implements the 'Abstract Command' part of the RISC-V +// Debug Module, i.e., read/write access to RISC-V GPRs, FPRs and CSRs. + +// ================================================================ +// BSV library imports + +import Memory :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; + +// ---------------- +// Other library imports + +import GetPut_Aux :: *; +import Semi_FIFOF :: *; +import Cur_Cycle :: *; + +// ================================================================ + +import ISA_Decls :: *; +import DM_Common :: *; + +// ================================================================ +// Interface + +interface DM_Abstract_Commands_IFC; + method Action reset; + + // ---------------- + // DMI facing GDB/host + method ActionValue #(DM_Word) av_read (DM_Addr dm_addr); + method Action write (DM_Addr dm_addr, DM_Word dm_word); + + // ---------------- + // Facing CPU/hart + interface MemoryClient #(5, XLEN) hart0_gpr_mem_client; + interface MemoryClient #(12, XLEN) hart0_csr_mem_client; +endinterface + +// ================================================================ + +(* synthesize *) +module mkDM_Abstract_Commands (DM_Abstract_Commands_IFC); + + Integer verbosity = 0; // Normally 0; non-zero for debugging + + // ---------------------------------------------------------------- + + Reg #(Bool) rg_start_reg_access <- mkReg (False); + + // FIFOs for request/response to access GPRs + FIFOF #(MemoryRequest #(5, XLEN)) f_hart0_gpr_reqs <- mkFIFOF1; + FIFOF #(MemoryResponse #( XLEN)) f_hart0_gpr_rsps <- mkFIFOF1; + + // FIFOs for request/response to access CSRs + FIFOF #(MemoryRequest #(12, XLEN)) f_hart0_csr_reqs <- mkFIFOF1; + FIFOF #(MemoryResponse #( XLEN)) f_hart0_csr_rsps <- mkFIFOF1; + + // ---------------------------------------------------------------- + // rg_data0 + + Reg #(DM_Word ) rg_data0 <- mkRegU; +`ifdef RV64 + Reg #(DM_Word ) rg_data1 <- mkRegU; +`endif + + // ---------------------------------------------------------------- + // rg_data2..11: not implemented + // rg_abstractauto: not implemented + // rg_progbuf0..15: not implemented + // ---------------------------------------------------------------- + // rg_abstractcs + + Reg #(Bool) rg_abstractcs_busy <- mkRegU; + Reg #(DM_abstractcs_cmderr) rg_abstractcs_cmderr <- mkRegU; + + Bit #(5) abstractcs_progsize = 0; + Bit #(5) abstractcs_datacount = 0; + DM_Word virt_rg_abstractcs = {3'b0, + abstractcs_progsize, + 11'b0, + pack (rg_abstractcs_busy), + 1'b0, + pack (rg_abstractcs_cmderr), + 3'b0, + abstractcs_datacount}; + + function Action fa_rg_abstractcs_write (DM_Word dm_word); + action + if (rg_abstractcs_busy) begin + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_BUSY; + $display ("(%0d): DM_Abstract_Commands.write: [abstractcs] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" DM is busy with a previous abstract command"); + end + else if (fn_abstractcs_cmderr (dm_word) != DM_ABSTRACTCS_CMDERR_NONE) begin + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_NONE; + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write [abstractcs]: clearing cmderr", cur_cycle); + end + else begin + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write [abstractcs]: cmderr unchanged", cur_cycle); + end + endaction + endfunction + + // ---------------------------------------------------------------- + // rg_command + // cmdtype no register, since we only support 'access reg' + // size no register, since we only support 'lower 32b' for RV32 + // and 'lower 64b' for RV64 + // postexec no register, since we don't support Program Buffer + // transfer no register, since we always do transfers + + Reg #(Bool) rg_command_access_reg_write <- mkRegU; + + // regno: we only implement lower 13 bits of this 16-bit field + Reg #(Bit #(13)) rg_command_access_reg_regno <- mkRegU; + + DM_Word virt_rg_command = fn_mk_command_access_reg ( + DM_COMMAND_ACCESS_REG_SIZE_LOWER32 + , False // postexec + , True // transfer + , rg_command_access_reg_write + , zeroExtend (rg_command_access_reg_regno)); + + function Action fa_rg_command_write (DM_Word dm_word); + action + // TODO: check that CPU is halted, else set cmderr = DM_ABSTRACTCS_CMDERR_HALT_RESUME + + DM_abstractcs_cmderr cmderr = rg_abstractcs_cmderr; + let size = fn_command_access_reg_size (dm_word); + + // Ignore if 'cmderr' is non-zero + if (cmderr != DM_ABSTRACTCS_CMDERR_NONE) begin + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" Ignoring since 'cmderr' is 0x%0h", cmderr); + end + else begin + if (rg_abstractcs_busy) begin + cmderr = DM_ABSTRACTCS_CMDERR_BUSY; + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" DM is busy with a previous abstract command"); + end + + // Only 'Access Reg' cmdtype is supported + else if (fn_command_cmdtype (dm_word) != DM_COMMAND_CMDTYPE_ACCESS_REG) begin + cmderr = DM_ABSTRACTCS_CMDERR_NOT_SUPPORTED; + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" ", fshow (fn_command_cmdtype (dm_word)), " not supported"); + end + +`ifdef RV32 + // Only lower 32-bit access is supported + else if (size != DM_COMMAND_ACCESS_REG_SIZE_LOWER32) begin + cmderr = DM_ABSTRACTCS_CMDERR_NOT_SUPPORTED; + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" For DM_COMMAND_CMDTYPE_ACCESS_REG, ", + fshow (fn_command_access_reg_size (dm_word)), " not supported in RV32 mode"); + end +`endif +`ifdef RV64 + // Only lower 32-bit and 64-bit access is supported + else if (size != DM_COMMAND_ACCESS_REG_SIZE_LOWER64) + begin + cmderr = DM_ABSTRACTCS_CMDERR_NOT_SUPPORTED; + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" For DM_COMMAND_CMDTYPE_ACCESS_REG, ", + fshow (fn_command_access_reg_size (dm_word)), " not supported in RV64 mode"); + end +`endif + + // 'postexec' is not supported + else if (fn_command_access_reg_postexec (dm_word) == True) begin + cmderr = DM_ABSTRACTCS_CMDERR_NOT_SUPPORTED; + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" For DM_COMMAND_CMDTYPE_ACCESS_REG, postexec not supported"); + end + + // non-'transfer' is not supported + else if (fn_command_access_reg_transfer (dm_word) == False) begin + cmderr = DM_ABSTRACTCS_CMDERR_NOT_SUPPORTED; + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: ERROR", cur_cycle, dm_word); + $display (" For DM_COMMAND_CMDTYPE_ACCESS_REG, no-transfer not supported"); + end + + else begin + Bool is_write = fn_command_access_reg_write (dm_word); + Bit #(13) regno = truncate (fn_command_access_reg_regno (dm_word)); + + rg_command_access_reg_write <= is_write; + rg_command_access_reg_regno <= regno; + rg_abstractcs_busy <= True; + rg_start_reg_access <= True; + cmderr = DM_ABSTRACTCS_CMDERR_NONE; + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write: [command] <= 0x%08h: OKAY", cur_cycle, dm_word); + end + rg_abstractcs_cmderr <= cmderr; + end + endaction + endfunction + + // ---------------------------------------------------------------- + // Start reads/writes + + Bool is_csr = ( (fromInteger (dm_command_access_reg_regno_csr_0) <= rg_command_access_reg_regno) + && (rg_command_access_reg_regno <= fromInteger (dm_command_access_reg_regno_csr_FFF))); + + Bool is_gpr = ( (fromInteger (dm_command_access_reg_regno_gpr_0) <= rg_command_access_reg_regno) + && (rg_command_access_reg_regno <= fromInteger (dm_command_access_reg_regno_gpr_1F))); + + Bit #(12) csr_addr = truncate (rg_command_access_reg_regno - fromInteger (dm_command_access_reg_regno_csr_0)); + Bit #(5) gpr_addr = truncate (rg_command_access_reg_regno - fromInteger (dm_command_access_reg_regno_gpr_0)); + + // ---------------------------------------------------------------- + // Read/Write CSR + + rule rl_start_write_csr ( rg_abstractcs_busy + && rg_start_reg_access + && rg_command_access_reg_write + && is_csr); + if (verbosity != 0) +`ifdef RV32 + $display ("(%0d): DM_Abstract_Commands.write [command]: write CSR [0x%0h] <= 0x%08h", cur_cycle, + csr_addr, rg_data0); +`endif +`ifdef RV64 + $display ("(%0d): DM_Abstract_Commands.write [command]: write CSR [0x%0h] <= 0x%016h", cur_cycle, + csr_addr, {rg_data1, rg_data0}); +`endif + + let req = MemoryRequest {write: True, byteen: '1, address: csr_addr, +`ifdef RV32 + data: rg_data0 +`endif +`ifdef RV64 + data: {rg_data1, rg_data0} +`endif + }; + f_hart0_csr_reqs.enq (req); + rg_start_reg_access <= False; + rg_abstractcs_busy <= False; + endrule + + rule rl_start_read_csr ( rg_abstractcs_busy + && rg_start_reg_access + && (! rg_command_access_reg_write) + && is_csr); + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write [command]: read CSR [0x%0h]", cur_cycle, csr_addr); + + let req = MemoryRequest {write: False, byteen: '1, address: csr_addr, data: ?}; + f_hart0_csr_reqs.enq (req); + rg_start_reg_access <= False; + endrule + + rule rl_finish_csr_read (rg_abstractcs_busy); + let rsp <- pop (f_hart0_csr_rsps); +`ifdef RV32 + rg_data0 <= rsp.data; +`endif +`ifdef RV64 + rg_data0 <= truncate (rsp.data); + rg_data1 <= rsp.data[63:32]; +`endif + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_NONE; + if (verbosity != 0) +`ifdef RV32 + $display ("(%0d): DM_Abstract_Commands: csr read data is 0x%08h", cur_cycle, rsp.data); +`endif +`ifdef RV64 + $display ("(%0d): DM_Abstract_Commands: csr read data is 0x%016h", cur_cycle, rsp.data); +`endif + + rg_abstractcs_busy <= False; + endrule + + // ---------------------------------------------------------------- + // Read/Write GPR + + rule rl_start_write_gpr ( rg_abstractcs_busy + && rg_start_reg_access + && rg_command_access_reg_write + && is_gpr); + if (verbosity != 0) +`ifdef RV32 + $display ("(%0d): DM_Abstract_Commands.write [command]: write GPR [0x%0h] <= 0x%08h", cur_cycle, + gpr_addr, rg_data0); +`endif +`ifdef RV64 + $display ("(%0d): DM_Abstract_Commands.write [command]: write GPR [0x%0h] <= 0x%016h", cur_cycle, + gpr_addr, {rg_data1, rg_data0}); +`endif + + let req = MemoryRequest {write: True, + byteen: '1, + address: gpr_addr, +`ifdef RV32 + data: rg_data0 +`endif +`ifdef RV64 + data: {rg_data1, rg_data0} +`endif + }; + + f_hart0_gpr_reqs.enq (req); + rg_start_reg_access <= False; + rg_abstractcs_busy <= False; + endrule + + rule rl_start_read_gpr ( rg_abstractcs_busy + && rg_start_reg_access + && (! rg_command_access_reg_write) + && is_gpr); + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write [command]: read GPR [0x%0h]", cur_cycle, gpr_addr); + + let req = MemoryRequest { + write: False + , byteen: '1 + , address: gpr_addr + , data: ? + }; + f_hart0_gpr_reqs.enq (req); + rg_start_reg_access <= False; + endrule + + rule rl_finish_gpr_read (rg_abstractcs_busy); + let rsp <- pop (f_hart0_gpr_rsps); +`ifdef RV32 + rg_data0 <= rsp.data; +`endif +`ifdef RV64 + rg_data0 <= truncate (rsp.data); + rg_data1 <= rsp.data[63:32]; +`endif + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_NONE; + if (verbosity != 0) +`ifdef RV32 + $display ("(%0d): DM_Abstract_Commands: gpr read data is 0x%08h", cur_cycle, rsp.data); +`endif +`ifdef RV64 + $display ("(%0d): DM_Abstract_Commands: gpr read data is 0x%016h", cur_cycle, rsp.data); +`endif + rg_abstractcs_busy <= False; + endrule + + // ---------------- + // Read/Write unknown address + + rule rl_start_write_unknown ( rg_abstractcs_busy + && rg_start_reg_access + && rg_command_access_reg_write + && (! is_csr) && (! is_gpr)); + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write [command]: write unknown RISC-V regno [0x%0h] <= 0x%08h", cur_cycle, + rg_command_access_reg_regno, rg_data0); + + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_OTHER; + rg_start_reg_access <= False; + rg_abstractcs_busy <= False; + endrule + + rule rl_start_read_unknown ( rg_abstractcs_busy + && rg_start_reg_access + && (! rg_command_access_reg_write) + && (! is_csr) && (! is_gpr)); + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write [command]: read unknown RISC-V regno [0x%0h] => ...", cur_cycle, + rg_command_access_reg_regno); + + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_OTHER; + rg_start_reg_access <= False; + rg_abstractcs_busy <= False; + endrule + + // ---------------------------------------------------------------- + // Finish CSR and GPR reads + + // ================================================================ + // INTERFACE + + method Action reset; + rg_start_reg_access <= False; + + f_hart0_gpr_reqs.clear; + f_hart0_gpr_rsps.clear; + f_hart0_csr_reqs.clear; + f_hart0_csr_rsps.clear; + + rg_abstractcs_busy <= False; + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_NONE; + + rg_command_access_reg_write <= False; + rg_command_access_reg_regno <= fromInteger (dm_command_access_reg_regno_gpr_0); + + rg_data0 <= 0; +`ifdef RV64 + rg_data1 <= 0; +`endif + + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands: reset", cur_cycle); + endmethod + + // ---------------- + // Facing DMI/GDB + + method ActionValue #(DM_Word) av_read (DM_Addr dm_addr); + actionvalue + let dm_addr_name = fshow_dm_addr (dm_addr); + DM_Word dm_word = case (dm_addr) + dm_addr_abstractcs: virt_rg_abstractcs; + dm_addr_command: virt_rg_command; + dm_addr_data0: rg_data0; +`ifdef RV64 + dm_addr_data1: rg_data1; +`endif + // dm_addr_data2..data3 + // dm_addr_abstractauto + // dm_addr_progbuf0..15 + endcase; + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.av_read: [", cur_cycle, dm_addr_name, "] => 0x%08h", dm_word); + return dm_word; + endactionvalue + endmethod + + method Action write (DM_Addr dm_addr, DM_Word dm_word); + action + let dm_addr_name = fshow_dm_addr (dm_addr); + + if (dm_addr == dm_addr_abstractcs) + fa_rg_abstractcs_write (dm_word); + + else if (rg_abstractcs_cmderr != DM_ABSTRACTCS_CMDERR_NONE) begin + if (verbosity != 0) begin + $display ("(%0d): DM_Abstract_Commands.write: [", cur_cycle, dm_addr_name, "] <= 0x%08h: ERROR", dm_word); + $display (" Ignoring: previous cmderr ", fshow (rg_abstractcs_cmderr)); + end + end + + else if (dm_addr == dm_addr_command) + fa_rg_command_write (dm_word); + + else if (dm_addr == dm_addr_data0) begin + rg_data0 <= dm_word; + + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write: [", cur_cycle, dm_addr_name, "] <= 0x%08h", dm_word); + end +`ifdef RV64 + else if (dm_addr == dm_addr_data1) begin + rg_data1 <= dm_word; + + if (verbosity != 0) + $display ("(%0d): DM_Abstract_Commands.write: [", cur_cycle, dm_addr_name, "] <= 0x%08h", dm_word); + end +`endif + else begin + // dm_addr_data2..12 + // dm_addr_abstractauto + // dm_addr_progbuf0..15 + rg_abstractcs_cmderr <= DM_ABSTRACTCS_CMDERR_NOT_SUPPORTED; + + $display ("(%0d): DM_Abstract_Commands.write: [", cur_cycle, dm_addr_name, + "] <= 0x%08h: ERROR: not supported", dm_word); + end + endaction + endmethod + + // ---------------- + // Facing CPU/hart + interface MemoryClient hart0_gpr_mem_client = toGPClient (f_hart0_gpr_reqs, f_hart0_gpr_rsps); + interface MemoryClient hart0_csr_mem_client = toGPClient (f_hart0_csr_reqs, f_hart0_csr_rsps); +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/Debug_Module/DM_Common.bsv b/src_Core/Debug_Module/DM_Common.bsv new file mode 100644 index 0000000..45049f2 --- /dev/null +++ b/src_Core/Debug_Module/DM_Common.bsv @@ -0,0 +1,512 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved. + +package DM_Common; + +// ================================================================ +// This package has non-implementation-specific definitions, i.e., +// just encodes things in the spec. + +// ================================================================ +// BSV library imports + +// None + +// ================================================================ +// Project imports + +// None + +// ================================================================ +// Debug Module Interface (DMI) addresses and data. +// Note: data is always 32b, whether the connected CPU is RV32, RV64 or RV128. + +typedef Bit #(7) DM_Addr; + +DM_Addr max_DM_Addr = 'h5F; + +typedef Bit #(32) DM_Word; + +// ================================================================ +// Debug Module address map + +// ---------------- +// Run Control + +DM_Addr dm_addr_dmcontrol = 'h10; +DM_Addr dm_addr_dmstatus = 'h11; +DM_Addr dm_addr_hartinfo = 'h12; +DM_Addr dm_addr_haltsum = 'h13; +DM_Addr dm_addr_hawindowsel = 'h14; +DM_Addr dm_addr_hawindow = 'h15; +DM_Addr dm_addr_devtreeaddr0 = 'h19; +DM_Addr dm_addr_authdata = 'h30; +DM_Addr dm_addr_haltregion0 = 'h40; +DM_Addr dm_addr_haltregion31 = 'h5F; + +DM_Addr dm_addr_verbosity = 'h60; // Non-standard (not in spec) + +// ---------------- +// Abstract commands (read/write RISC-V registers and RISC-V CSRs) + +DM_Addr dm_addr_abstractcs = 'h16; +DM_Addr dm_addr_command = 'h17; + +DM_Addr dm_addr_data0 = 'h04; +DM_Addr dm_addr_data1 = 'h05; +DM_Addr dm_addr_data2 = 'h06; +DM_Addr dm_addr_data3 = 'h07; +DM_Addr dm_addr_data4 = 'h08; +DM_Addr dm_addr_data5 = 'h09; +DM_Addr dm_addr_data6 = 'h0a; +DM_Addr dm_addr_data7 = 'h0b; +DM_Addr dm_addr_data8 = 'h0c; +DM_Addr dm_addr_data9 = 'h0d; +DM_Addr dm_addr_data10 = 'h0d; +DM_Addr dm_addr_data11 = 'h0f; + +DM_Addr dm_addr_abstractauto = 'h18; +DM_Addr dm_addr_progbuf0 = 'h20; + +// ---------------- +// System Bus access (read/write RISC-V memory/devices) + +DM_Addr dm_addr_sbcs = 'h38; +DM_Addr dm_addr_sbaddress0 = 'h39; +DM_Addr dm_addr_sbaddress1 = 'h3a; +DM_Addr dm_addr_sbaddress2 = 'h3b; +DM_Addr dm_addr_sbdata0 = 'h3c; +DM_Addr dm_addr_sbdata1 = 'h3d; +DM_Addr dm_addr_sbdata2 = 'h3e; +DM_Addr dm_addr_sbdata3 = 'h3f; + +// ================================================================ + +function Fmt fshow_dm_addr (DM_Addr dm_addr); + return case (dm_addr) + // Run Control + dm_addr_dmcontrol: $format ("dm_addr_dmcontrol"); + dm_addr_dmstatus: $format ("dm_addr_dmstatus"); + dm_addr_hartinfo: $format ("dm_addr_hartinfo"); + dm_addr_haltsum: $format ("dm_addr_haltsum"); + dm_addr_hawindowsel: $format ("dm_addr_hawindowsel"); + dm_addr_hawindow: $format ("dm_addr_hawindow"); + dm_addr_devtreeaddr0: $format ("dm_addr_devtreeaddr0"); + dm_addr_authdata: $format ("dm_addr_authdata"); + dm_addr_haltregion0: $format ("dm_addr_haltregion0"); + dm_addr_haltregion31: $format ("dm_addr_haltregion31"); + dm_addr_verbosity: $format ("dm_addr_verbosity"); + + // Abstract Commands + dm_addr_abstractcs: $format ("dm_addr_abstractcs"); + dm_addr_command: $format ("dm_addr_command"); + dm_addr_data0: $format ("dm_addr_data0"); + dm_addr_data1: $format ("dm_addr_data1"); + dm_addr_data2: $format ("dm_addr_data2"); + dm_addr_data3: $format ("dm_addr_data3"); + dm_addr_data4: $format ("dm_addr_data4"); + dm_addr_data5: $format ("dm_addr_data5"); + dm_addr_data6: $format ("dm_addr_data6"); + dm_addr_data7: $format ("dm_addr_data7"); + dm_addr_data8: $format ("dm_addr_data8"); + dm_addr_data9: $format ("dm_addr_data9"); + dm_addr_data10: $format ("dm_addr_data10"); + dm_addr_data11: $format ("dm_addr_data11"); + dm_addr_abstractauto: $format ("dm_addr_abstractauto"); + dm_addr_progbuf0: $format ("dm_addr_progbuf0"); + + // System Bus + dm_addr_sbcs: $format ("dm_addr_sbcs"); + dm_addr_sbaddress0: $format ("dm_addr_sbaddress0"); + dm_addr_sbaddress1: $format ("dm_addr_sbaddress1"); + dm_addr_sbaddress2: $format ("dm_addr_sbaddress2"); + dm_addr_sbdata0: $format ("dm_addr_sbdata0"); + dm_addr_sbdata1: $format ("dm_addr_sbdata1"); + dm_addr_sbdata2: $format ("dm_addr_sbdata2"); + dm_addr_sbdata3: $format ("dm_addr_sbdata3"); + + default: $format ("", dm_addr); + endcase; +endfunction + +// ================================================================ +// Run Control DM register fields + +// ---------------------------------------------------------------- +// 'dmcontrol' register + +function DM_Word fn_mk_dmcontrol (Bool haltreq, + Bool resumereq, + Bool hartreset, + Bool hasel, + Bit #(10) hartsel, + Bool ndmreset, + Bool dmactive); + return {pack (haltreq), + pack (resumereq), + pack (hartreset), + 2'b0, + pack (hasel), + hartsel, + 14'b0, + pack (ndmreset), + pack (dmactive)}; +endfunction + +function Bool fn_dmcontrol_haltreq (DM_Word dm_word); + return unpack (dm_word [31]); +endfunction + +function Bool fn_dmcontrol_resumereq (DM_Word dm_word); + return unpack (dm_word [30]); +endfunction + +function Bool fn_dmcontrol_hartreset (DM_Word dm_word); + return unpack (dm_word [29]); +endfunction + +function Bool fn_dmcontrol_hasel (DM_Word dm_word); + return unpack (dm_word [26]); +endfunction + +function Bit #(10) fn_dmcontrol_hartsel (DM_Word dm_word); + return dm_word [25:16]; +endfunction + +function Bool fn_dmcontrol_ndmreset (DM_Word dm_word); + return unpack (dm_word [1]); +endfunction + +function Bool fn_dmcontrol_dmactive (DM_Word dm_word); + return unpack (dm_word [0]); +endfunction + +// ---------------------------------------------------------------- +// 'dmstatus' register + +function Bool fn_dmstatus_allresumeack (DM_Word x); + return unpack (x [17]); +endfunction + +function Bool fn_dmstatus_anyresumeack (DM_Word x); + return unpack (x [16]); +endfunction + +function Bool fn_dmstatus_allnonexistent (DM_Word x); + return unpack (x [15]); +endfunction + +function Bool fn_dmstatus_anynonexistent (DM_Word x); + return unpack (x [14]); +endfunction + +function Bool fn_dmstatus_allunavail (DM_Word x); + return unpack (x [13]); +endfunction + +function Bool fn_dmstatus_anyunavail (DM_Word x); + return unpack (x [12]); +endfunction + +function Bool fn_dmstatus_allrunning (DM_Word x); + return unpack (x [11]); +endfunction + +function Bool fn_dmstatus_anyrunning (DM_Word x); + return unpack (x [10]); +endfunction + +function Bool fn_dmstatus_allhalted (DM_Word x); + return unpack (x [9]); +endfunction + +function Bool fn_dmstatus_anyhalted (DM_Word x); + return unpack (x [8]); +endfunction + +function Bool fn_dmstatus_authenticated (DM_Word x); + return unpack (x [7]); +endfunction + +function Bool fn_dmstatus_authbusy (DM_Word x); + return unpack (x [6]); +endfunction + +function Bool fn_dmstatus_devtreevalid (DM_Word x); + return unpack (x [4]); +endfunction + +function Bit #(4) fn_dmstatus_version (DM_Word x); + return unpack (x [3:0]); +endfunction + +function Fmt fshow_dmstatus (DM_Word x); + Fmt fmt_version = ( (x[3:0] == 0) + ? $format ("v.none") + : ( (x[3:0] == 1) + ? $format ("v0.11") + : ( (x[3:0] == 2) + ? $format ("v0.13") + : $format ("v??")))); + + return ( $format ("(all/any) ") + + $format ("resumeack %0d/%0d ", x[17], x[16]) + + $format ("nonexistent %0d/%0d ", x[15], x[14]) + + $format ("unavail %0d/%0d ", x[13], x[12]) + + $format ("running %0d/%0d ", x[11], x[10]) + + $format ("halted %0d/%0d ", x[9], x[8]) + + $format ("authenticated %0d ", x[7]) + + $format ("authbusy %0d ", x[6]) + + $format ("devtreevalid %0d ", x[4]) + + fmt_version); +endfunction + +// ================================================================ +// Abstract Command register fields + +// ---------------------------------------------------------------- +// 'dm_abstractcs' register + +typedef enum {DM_ABSTRACTCS_CMDERR_NONE, // 0 + DM_ABSTRACTCS_CMDERR_BUSY, // 1 + DM_ABSTRACTCS_CMDERR_NOT_SUPPORTED, // 2 + DM_ABSTRACTCS_CMDERR_EXCEPTION, // 3 + DM_ABSTRACTCS_CMDERR_HALT_RESUME, // 4 + DM_ABSTRACTCS_CMDERR_UNDEF5, // 5 + DM_ABSTRACTCS_CMDERR_UNDEF6, // 6 + DM_ABSTRACTCS_CMDERR_OTHER // 7 + } DM_abstractcs_cmderr +deriving (Bits, Eq, FShow); + +// The following is used in writes, to clear cmderr +DM_abstractcs_cmderr dm_cmderr_w1c = DM_ABSTRACTCS_CMDERR_OTHER; + +function DM_Word fn_mk_abstractcs (DM_abstractcs_cmderr cmderr); + return { 0, pack (cmderr), 8'h0 }; +endfunction + +function Bit #(5) fn_abstractcs_progsize (DM_Word dm_word); + return unpack (dm_word [28:24]); +endfunction + +function Bool fn_abstractcs_busy (DM_Word dm_word); + return unpack (dm_word [12]); +endfunction + +function DM_abstractcs_cmderr fn_abstractcs_cmderr (DM_Word dm_word); + return unpack (dm_word [10:8]); +endfunction + +function Bit #(5) fn_abstractcs_datacount (DM_Word dm_word); + return unpack (dm_word [4:0]); +endfunction + +// ---------------------------------------------------------------- +// 'command' register + +typedef enum {DM_COMMAND_CMDTYPE_ACCESS_REG, + DM_COMMAND_CMDTYPE_QUICK_ACCESS + } DM_command_cmdtype +deriving (Bits, Eq, FShow); + +typedef enum {DM_COMMAND_ACCESS_REG_SIZE_UNDEF0, // 0 + DM_COMMAND_ACCESS_REG_SIZE_UNDEF1, // 1 + DM_COMMAND_ACCESS_REG_SIZE_LOWER32, // 2 + DM_COMMAND_ACCESS_REG_SIZE_LOWER64, // 3 + DM_COMMAND_ACCESS_REG_SIZE_LOWER128, // 4 + DM_COMMAND_ACCESS_REG_SIZE_UNDEF5, // 5 + DM_COMMAND_ACCESS_REG_SIZE_UNDEF6, // 6 + DM_COMMAND_ACCESS_REG_SIZE_UNDEF7 // 7 + } DM_command_access_reg_size +deriving (Bits, Eq, FShow); + +Integer dm_command_access_reg_regno_csr_0 = 'h0000; +Integer dm_command_access_reg_regno_csr_FFF = 'h0FFF; +Integer dm_command_access_reg_regno_gpr_0 = 'h1000; +Integer dm_command_access_reg_regno_gpr_1F = 'h101F; +Integer dm_command_access_reg_regno_fpr_0 = 'h1020; +Integer dm_command_access_reg_regno_fpr_1F = 'h103F; + +function DM_Word fn_mk_command_access_reg (DM_command_access_reg_size size, + Bool postexec, + Bool transfer, + Bool write, + Bit #(16) regno); + Bit #(8) b8_cmdtype = zeroExtend (pack (DM_COMMAND_CMDTYPE_ACCESS_REG)); + Bit #(3) b3_size = pack (size); + return {b8_cmdtype, + 1'b0, + b3_size, + 1'b0, + pack (postexec), + pack (transfer), + pack (write), + regno}; +endfunction + +function DM_command_cmdtype fn_command_cmdtype (DM_Word dm_word); + return unpack (truncate (dm_word [31:24])); +endfunction + +function DM_command_access_reg_size fn_command_access_reg_size (DM_Word dm_word); + return unpack (dm_word [22:20]); +endfunction + +function Bool fn_command_access_reg_postexec (DM_Word dm_word); + return unpack (dm_word [18]); +endfunction + +function Bool fn_command_access_reg_transfer (DM_Word dm_word); + return unpack (dm_word [17]); +endfunction + +function Bool fn_command_access_reg_write (DM_Word dm_word); + return unpack (dm_word [16]); +endfunction + +function Bit #(16) fn_command_access_reg_regno (DM_Word dm_word); + return dm_word [15:0]; +endfunction + +// ================================================================ +// System Bus Access DM register fields + +// ---------------------------------------------------------------- +// 'dm_sbcs' register + +typedef enum {DM_SBACCESS_8_BIT, + DM_SBACCESS_16_BIT, + DM_SBACCESS_32_BIT, + DM_SBACCESS_64_BIT, + DM_SBACCESS_128_BIT + } DM_sbaccess +deriving (Bits, Eq, FShow); + +function Integer fn_sbaccess_to_addr_incr (DM_sbaccess sbaccess); + case (sbaccess) + DM_SBACCESS_8_BIT: return 1; + DM_SBACCESS_16_BIT: return 2; + DM_SBACCESS_32_BIT: return 4; + DM_SBACCESS_64_BIT: return 8; + DM_SBACCESS_128_BIT: return 16; + endcase +endfunction + +typedef enum {DM_SBERROR_NONE, // 0 + DM_SBERROR_TIMEOUT, // 1 + DM_SBERROR_BADADDR, // 2 + DM_SBERROR_OTHER, // 3 + DM_SBERROR_BUSY_STALE, // 4 + DM_SBERROR_UNDEF5, // 5 + DM_SBERROR_UNDEF6, // 6 + DM_SBERROR_UNDEF7_W1C // 7, used in writes, to clear sberror + } DM_sberror +deriving (Bits, Eq, FShow); + +// Constructor + +function DM_Word fn_mk_sbcs_val (Bit #(3) sbversion, + Bool sbbusyerror, + Bool sbbusy, + Bool sbreadonaddr, + DM_sbaccess sbaccess, + Bool sbautoincrement, + Bool sbreadondata, + DM_sberror sberror, + Bit #(7) sbasize, + Bit #(1) sbaccess128, + Bit #(1) sbaccess64, + Bit #(1) sbaccess32, + Bit #(1) sbaccess16, + Bit #(1) sbaccess8); + return {sbversion, + 6'b0, + pack (sbbusyerror), + pack (sbbusy), + pack (sbreadonaddr), + pack (sbaccess), + pack (sbautoincrement), + pack (sbreadondata), + pack (sberror), + sbasize, + sbaccess128, + sbaccess64, + sbaccess32, + sbaccess16, + sbaccess8}; +endfunction + +// Selectors + +function Bit #(3) fn_sbcs_sbversion (DM_Word dm_word); return unpack (dm_word [31:29]); endfunction +function Bool fn_sbcs_sbbusyerror (DM_Word dm_word); return unpack (dm_word [22]); endfunction +function Bool fn_sbcs_sbbusy (DM_Word dm_word); return unpack (dm_word [21]); endfunction +function Bool fn_sbcs_sbreadonaddr (DM_Word dm_word); return unpack (dm_word [20]); endfunction +function DM_sbaccess fn_sbcs_sbaccess (DM_Word dm_word); return unpack (dm_word [19:17]); endfunction +function Bool fn_sbcs_sbautoincrement (DM_Word dm_word); return unpack (dm_word [16]); endfunction +function Bool fn_sbcs_sbreadondata (DM_Word dm_word); return unpack (dm_word [15]); endfunction +function DM_sberror fn_sbcs_sberror (DM_Word dm_word); return unpack (dm_word [14:12]); endfunction +function Bit #(7) fn_sbcs_sbasize (DM_Word dm_word); return dm_word [11:5]; endfunction +function Bool fn_sbcs_sbaccess128 (DM_Word dm_word); return unpack (dm_word [4]); endfunction +function Bool fn_sbcs_sbaccess64 (DM_Word dm_word); return unpack (dm_word [3]); endfunction +function Bool fn_sbcs_sbaccess32 (DM_Word dm_word); return unpack (dm_word [2]); endfunction +function Bool fn_sbcs_sbaccess16 (DM_Word dm_word); return unpack (dm_word [1]); endfunction +function Bool fn_sbcs_sbaccess8 (DM_Word dm_word); return unpack (dm_word [0]); endfunction + +// Debugging + +function Fmt fshow_sbcs (DM_Word dm_word); + return ( $format ("SBCS{") + + $format ("sbversion %0d", fn_sbcs_sbversion (dm_word)) + + $format (" sbbusyerror %0d", fn_sbcs_sbbusyerror (dm_word)) + + $format (" sbbusy %0d", fn_sbcs_sbbusy (dm_word)) + + $format (" sbreadonaddr ") + fshow (fn_sbcs_sbreadonaddr (dm_word)) + + $format (" sbaccess ") + fshow (fn_sbcs_sbaccess (dm_word)) + + $format (" sbautoincrement ") + fshow (fn_sbcs_sbautoincrement (dm_word)) + + $format (" sbreadondata ") + fshow (fn_sbcs_sbreadondata (dm_word)) + + $format (" sberror ") + fshow (fn_sbcs_sberror (dm_word)) + + $format (" sbasize %0d", fn_sbcs_sbasize (dm_word)) + + $format (" sbaccess") + + ((fn_sbcs_sbaccess128 (dm_word)) ? $format ("_128") : $format ("x")) + + ((fn_sbcs_sbaccess64 (dm_word)) ? $format ("_64") : $format ("x")) + + ((fn_sbcs_sbaccess32 (dm_word)) ? $format ("_32") : $format ("x")) + + ((fn_sbcs_sbaccess16 (dm_word)) ? $format ("_16") : $format ("x")) + + ((fn_sbcs_sbaccess8 (dm_word)) ? $format ("_8") : $format ("x")) + + $format ("}")); +endfunction + +// ================================================================ +// DCSR 'cause' field values + +typedef enum {DCSR_CAUSE_RESERVED0, + DCSR_CAUSE_EBREAK, + DCSR_CAUSE_TRIGGER, + DCSR_CAUSE_HALTREQ, + DCSR_CAUSE_STEP, + DCSR_CAUSE_RESERVED5, + DCSR_CAUSE_RESERVED6, + DCSR_CAUSE_RESERVED7 + } DCSR_Cause +deriving (Bits, Eq, FShow); + +// ================================================================ +// Sub-interface of the Debug Module facing the remote debugger (e.g. GDB) + +interface DMI; + method Action read_addr (DM_Addr dm_addr); + method ActionValue #(DM_Word) read_data; + method Action write (DM_Addr dm_addr, DM_Word dm_word); +endinterface + +// A dummy interface to tie off DMI if it is not used. + +DMI dummy_DMI_ifc = interface DMI; + method Action read_addr (DM_Addr dm_addr) = noAction; + method ActionValue #(DM_Word) read_data = actionvalue + return 0; + endactionvalue; + method Action write (DM_Addr dm_addr, DM_Word dm_word) = noAction; + endinterface; + +// ================================================================ + +endpackage diff --git a/src_Core/Debug_Module/DM_Run_Control.bsv b/src_Core/Debug_Module/DM_Run_Control.bsv new file mode 100644 index 0000000..c24d131 --- /dev/null +++ b/src_Core/Debug_Module/DM_Run_Control.bsv @@ -0,0 +1,343 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved. + +package DM_Run_Control; + +// ================================================================ +// This package implements the 'Run Control' part of the RISC-V Debug +// Module, i.e., reset platform, reset hart, run/halt hart + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; + +// ================================================================ +// Project imports + +import ISA_Decls :: *; +import DM_Common :: *; + +// ================================================================ +// Interface + +interface DM_Run_Control_IFC; + method Bool dmactive; + method Action reset; + + // ---------------- + // DMI facing GDB/host + method ActionValue #(DM_Word) av_read (DM_Addr dm_addr); + method Action write (DM_Addr dm_addr, DM_Word dm_word); + + // ---------------- + // Facing a hart: reset and run-control + interface Get #(Token) hart0_get_reset_req; + interface Client #(Bool, Bool) hart0_client_run_halt; + interface Get #(Bit #(4)) hart0_get_other_req; + + // ---------------- + // Facing Platform: Non-Debug-Module Reset (reset all except DM) + interface Get #(Token) get_ndm_reset_req; +endinterface + +// ================================================================ + +(* synthesize *) +module mkDM_Run_Control (DM_Run_Control_IFC); + + Integer verbosity = 0; // Normally 0; non-zero for debugging + + // ---------------------------------------------------------------- + // NDM Reset + + FIFOF #(Token) f_ndm_reset_reqs <- mkFIFOF; + + // ---------------------------------------------------------------- + // Hart0 run control + + Reg #(Bool) rg_hart0_running <- mkRegU; + + // Reset requests to hart + FIFOF #(Token) f_hart0_reset_reqs <- mkFIFOF; + + // Run/halt requests to hart and responses + FIFOF #(Bool) f_hart0_run_halt_reqs <- mkFIFOF; + FIFOF #(Bool) f_hart0_run_halt_rsps <- mkFIFOF; + + // Non-standard requests to hart and responses + // Currently only verbosity + FIFOF #(Bit #(4)) f_hart0_other_reqs <- mkFIFOF; + + // ---------------------------------------------------------------- + + Bit #(32) haltregion0 = { 31'h0, pack (! rg_hart0_running) }; + Bit #(32) haltsum = { 31'h0, pack (! rg_hart0_running) }; + + // ---------------------------------------------------------------- + // rg_dmstatus + // Since we currently support only 1 hart, + // 'anyXX' = 'allXX' + // 'allrunning' = NOT 'allhalted' + + Reg#(Bool) rg_dmstatus_allresumeack <- mkRegU; + + Bool dmstatus_allresumeack = rg_dmstatus_allresumeack; + Bool dmstatus_anyresumeack = rg_dmstatus_allresumeack; + + Bool dmstatus_allnonexistent = False; + Bool dmstatus_anynonexistent = dmstatus_allnonexistent; + + Bool dmstatus_allunavail = False; + Bool dmstatus_anyunavail = dmstatus_allunavail; + + Bool dmstatus_allrunning = rg_hart0_running; + Bool dmstatus_anyrunning = dmstatus_allrunning; + + Bool dmstatus_allhalted = (! rg_hart0_running); + Bool dmstatus_anyhalted = dmstatus_allhalted; + + DM_Word virt_rg_dmstatus = {14'b0, + pack (dmstatus_allresumeack), + pack (dmstatus_anyresumeack), + pack (dmstatus_allnonexistent), + pack (dmstatus_anynonexistent), + pack (dmstatus_allunavail), + pack (dmstatus_anyunavail), + pack (dmstatus_allrunning), + pack (dmstatus_anyrunning), + pack (dmstatus_allhalted), + pack (dmstatus_anyhalted), + pack (True), // authenticated + pack (False), // authbusy + 1'b0, + pack (False), // devtreevalid + 4'h2}; // version + + // ---------------------------------------------------------------- + // rg_dmcontrol + + Reg #(Bool) rg_dmcontrol_haltreq <- mkRegU; + // resumereq is a W1 field, no need for a register + Reg #(Bool) rg_dmcontrol_hartreset <- mkRegU; + Reg #(Bool) rg_dmcontrol_ndmreset <- mkRegU; + Reg #(Bool) rg_dmcontrol_dmactive <- mkReg (False); + + DM_Word virt_rg_dmcontrol = {2'b0, // haltreq, resumereq (w-o) + pack (rg_dmcontrol_hartreset), + 2'b0, + pack (False), // hasel + 10'b0, // hartsel + 14'b0, + pack (rg_dmcontrol_ndmreset), + pack (rg_dmcontrol_dmactive)}; + + function Action fa_rg_dmcontrol_write (DM_Word dm_word); + action + let haltreq = fn_dmcontrol_haltreq (dm_word); + let resumereq = fn_dmcontrol_resumereq (dm_word); + let hartreset = fn_dmcontrol_hartreset (dm_word); + let hasel = fn_dmcontrol_hasel (dm_word); + let hartsel = fn_dmcontrol_hartsel (dm_word); + let ndmreset = fn_dmcontrol_ndmreset (dm_word); + let dmactive = fn_dmcontrol_dmactive (dm_word); + + rg_dmcontrol_haltreq <= haltreq; + rg_dmcontrol_hartreset <= hartreset; + rg_dmcontrol_ndmreset <= ndmreset; + rg_dmcontrol_dmactive <= dmactive; + + // Debug Module reset + if (! dmactive) begin + // Reset the DM module itself + $display ("DM_Run_Control.write: dmcontrol 0x%08h (dmactive=0): resetting Debug Module", + dm_word); + + // Error-checking + if (ndmreset) begin + $display ("DM_Run_Control.write: WARNING: in word written to dmcontrol (0x%08h):", + dm_word); + $display (" [1] (ndmreset) and [0] (dmactive) both asserted"); + $display (" dmactive has priority; ignoring ndmreset"); + end + if (hartreset) begin + $display ("DM_Run_Control.write: WARNING: in word written to dmcontrol (0x%08h):", + dm_word); + $display (" [29] (hartreset) and [0] (dmactive) both asserted"); + $display (" dmactive has priority; ignoring hartreset"); + end + + // No action here; other rules will fire (see method dmactive, Debug_Module.rl_reset) + noAction; + end + + // Platform reset (non-Debug Module) + else if (ndmreset) begin + $display ("DM_Run_Control.write: dmcontrol 0x%08h: ndmreset=1: resetting platform", + dm_word); + f_ndm_reset_reqs.enq (?); + + // Error-checking + if (hartreset) begin + $display ("DM_Run_Control.write: WARNING: in word written to dmcontrol (0x%08h):", + dm_word); + $display (" Both ndmreset (bit 1) and hartreset (bit 29) are asserted"); + $display (" ndmreset has priority; ignoring hartreset"); + end + end + else begin + // Deassert platform reset + if ((verbosity != 0) && rg_dmcontrol_ndmreset) + $display ("DM_Run_Control.write: dmcontrol 0x%08h: clearing ndmreset", dm_word); + + // Hart reset + if (hartreset) begin + if (verbosity != 0) + $display ("DM_Run_Control.write: dmcontrol 0x%08h: hartreset=1: resetting hart", + dm_word); + f_hart0_reset_reqs.enq (?); + end + else begin + // Deassert hart reset + if ((verbosity != 0) && rg_dmcontrol_hartreset) + $display ("DM_Run_Control.write: dmcontrol 0x%08h: clearing hartreset", dm_word); + + if (hasel) + $display ("DM_Run_Control.write: ERROR: dmcontrol 0x%08h: 'hasel' is not supported", + dm_word); + + if (hartsel != 0) + $display ("DM_Run_Control.write: ERROR: dmcontrol 0x%08h: hartsel 0x%0h not supported", + dm_word, hartsel); + + if (haltreq && resumereq) begin + $display ("DM_Run_Control.write: ERROR: dmcontrol 0x%08h: haltreq=1 and resumereq=1", + dm_word); + $display (" This behavior is 'undefined' in the spec; ignoring"); + end + // Resume hart(s) if not running + else if (resumereq && (! rg_hart0_running)) begin + f_hart0_run_halt_reqs.enq (True); + rg_dmstatus_allresumeack <= False; + $display ("DM_Run_Control.write: hart0 resume request"); + end + // Halt hart(s) + else if (haltreq && !rg_dmcontrol_haltreq) begin + f_hart0_run_halt_reqs.enq (False); + $display ("DM_Run_Control.write: hart0 halt request"); + end + end + end + endaction + endfunction + + // ---------------------------------------------------------------- + // Unimplemented + + // dm_addr_hartinfo + // dm_addr_hawindowsel + // dm_addr_hawindow + // dm_addr_devtreeaddr0..3 + // dm_addr_authdata + // dm_addr_haltregion1..31 + + // ---------------------------------------------------------------- + // rg_verbosity: non-standard + + Reg #(Bit #(4)) rg_verbosity <- mkRegU; + + // ---------------------------------------------------------------- + + rule rl_hart0_run_rsp; + let x = f_hart0_run_halt_rsps.first; + f_hart0_run_halt_rsps.deq; + + rg_hart0_running <= x; + if (x) begin + rg_dmstatus_allresumeack <= True; + $display ("DM_Run_Control: hart0 running"); + end + else begin + $display ("DM_Run_Control: hart0 halted"); + end + endrule + + // ---------------------------------------------------------------- + // INTERFACE + + method Bool dmactive; + return rg_dmcontrol_dmactive; + endmethod + + method Action reset; + f_ndm_reset_reqs.clear; + + rg_hart0_running <= False; // Must be same as initial state of CPU + f_hart0_reset_reqs.clear; + f_hart0_run_halt_reqs.clear; + f_hart0_run_halt_rsps.clear; + + rg_dmcontrol_haltreq <= False; + rg_dmcontrol_hartreset <= False; + rg_dmcontrol_ndmreset <= False; + rg_dmcontrol_dmactive <= True; // DM module is now active + + rg_dmstatus_allresumeack <= False; + + rg_verbosity <= 0; + + if (verbosity != 0) + $display ("DM_Run_Control: reset"); + endmethod + + // ---------------- + // DMI facing GDB/host + + method ActionValue #(DM_Word) av_read (DM_Addr dm_addr); + actionvalue + DM_Word dm_word = case (dm_addr) + dm_addr_dmcontrol: virt_rg_dmcontrol; + dm_addr_dmstatus: virt_rg_dmstatus; + dm_addr_haltsum: haltsum; + dm_addr_haltregion0: haltregion0; + dm_addr_verbosity: extend (rg_verbosity); + endcase; + + if (verbosity != 0) + $display ("DM_Run_Control.av_read: [", fshow_dm_addr (dm_addr), "] => 0x%08h", dm_word); + + return dm_word; + endactionvalue + endmethod + + method Action write (DM_Addr dm_addr, DM_Word dm_word); + action + if (verbosity != 0) + $display ("DM_Run_Control.write: [", fshow_dm_addr (dm_addr), "] <= 0x%08h", dm_word); + + case (dm_addr) + dm_addr_dmcontrol: fa_rg_dmcontrol_write (dm_word); + dm_addr_verbosity: begin + rg_verbosity <= truncate (dm_word); + f_hart0_other_reqs.enq (truncate (dm_word)); + end + default: noAction; + endcase + endaction + endmethod + + // ---------------- + // Facing Hart: Reset, Run-control, etc. + interface Get hart0_get_reset_req = toGet (f_hart0_reset_reqs); + interface Client hart0_client_run_halt = toGPClient (f_hart0_run_halt_reqs, f_hart0_run_halt_rsps); + interface Get hart0_get_other_req = toGet (f_hart0_other_reqs); + + // ---------------- + // Facing Platform: Non-Debug-Module Reset (reset all except DM) + interface Get get_ndm_reset_req = toGet (f_ndm_reset_reqs); +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/Debug_Module/DM_System_Bus.bsv b/src_Core/Debug_Module/DM_System_Bus.bsv new file mode 100644 index 0000000..7ed6da6 --- /dev/null +++ b/src_Core/Debug_Module/DM_System_Bus.bsv @@ -0,0 +1,663 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved. + +package DM_System_Bus; + +// ================================================================ +// This package implements the 'System Bus Access' part of the RISC-V +// Debug Module, i.e., read/write access to RISC-V system memory. + +// ================================================================ +// BSV library imports + +import FIFOF :: *; + +// ---------------- +// Other library imports + +import Semi_FIFOF :: *; + +// ================================================================ +// Project Imports + +import ISA_Decls :: *; +import DM_Common :: *; + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// ================================================================ +// Interface + +interface DM_System_Bus_IFC; + method Action reset; + + // ---------------- + // DMI facing GDB/host + method ActionValue #(DM_Word) av_read (DM_Addr dm_addr); + method Action write (DM_Addr dm_addr, DM_Word dm_word); + + // ---------------- + // Facing System + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master; +endinterface + +// ================================================================ +// Local definitions + +// ---------------- +// Convert DM code for access size to AXI4 code for access size + +function AXI4_Size fn_DM_sbaccess_to_AXI4_Size (DM_sbaccess sbaccess); + AXI4_Size axi4_size = case (sbaccess) + DM_SBACCESS_8_BIT: axsize_1; + DM_SBACCESS_16_BIT: axsize_2; + DM_SBACCESS_32_BIT: axsize_4; + DM_SBACCESS_64_BIT: axsize_8; + endcase; + return axi4_size; +endfunction + +// ---------------- +// Extract bytes from raw word read from fabric. +// The bytes of interest are offset according to LSBs of addr. +// Arguments: +// - a DM_sbaccess (indicating size of access) +// - a byte-address +// - a load-word from fabric +// result: +// - word with correct byte(s) shifted into LSBs and zero extended + +function Bit #(64) fn_extract_and_extend_bytes (DM_sbaccess sbaccess, + Bit #(64) read_addr, + Bit #(64) word64); + Bit #(3) addr_lsbs = read_addr [2:0]; + if (valueOf (Wd_Data) == 32) + addr_lsbs = (addr_lsbs & 'h3); + + Bit #(64) result = 0; + case (sbaccess) + DM_SBACCESS_8_BIT: case (addr_lsbs) + 'h0: result = zeroExtend (word64 [ 7: 0]); + 'h1: result = zeroExtend (word64 [15: 8]); + 'h2: result = zeroExtend (word64 [23:16]); + 'h3: result = zeroExtend (word64 [31:24]); + 'h4: result = zeroExtend (word64 [39:32]); + 'h5: result = zeroExtend (word64 [47:40]); + 'h6: result = zeroExtend (word64 [55:48]); + 'h7: result = zeroExtend (word64 [63:56]); + endcase + + DM_SBACCESS_16_BIT: case (addr_lsbs) + 'h0: result = zeroExtend (word64 [15: 0]); + 'h2: result = zeroExtend (word64 [31:16]); + 'h4: result = zeroExtend (word64 [47:32]); + 'h6: result = zeroExtend (word64 [63:48]); + endcase + + DM_SBACCESS_32_BIT: case (addr_lsbs) + 'h0: result = zeroExtend (word64 [31: 0]); + 'h4: result = zeroExtend (word64 [63:32]); + endcase + + DM_SBACCESS_64_BIT: case (addr_lsbs) + 'h0: result = word64; + endcase + endcase + return result; +endfunction + +// ---------------- +// Compute address, data and strobe (byte-enables) for writes to fabric + +function Tuple4 #(Fabric_Addr, // addr is 32b- or 64b-aligned + Fabric_Data, // data is lane-aligned + Fabric_Strb, // strobe + AXI4_Size) // 8 for 8-byte writes, else 4 + fn_to_fabric_write_fields (DM_sbaccess sbaccess, // size of access + Bit #(64) addr, + Bit #(64) word64); // data is in lsbs + + // First compute addr, data and strobe for a 64b-wide fabric + Bit #(8) strobe64 = 0; + Bit #(3) shift_bytes = addr [2:0]; + Bit #(6) shift_bits = { shift_bytes, 3'b0 }; + AXI4_Size axsize = axsize_128; // Will be updated in 'case' below + + case (sbaccess) + DM_SBACCESS_8_BIT: begin + word64 = (word64 << shift_bits); + strobe64 = ('b_1 << shift_bytes); + axsize = axsize_1; + end + DM_SBACCESS_16_BIT: begin + word64 = (word64 << shift_bits); + strobe64 = ('b_11 << shift_bytes); + axsize = axsize_2; + end + DM_SBACCESS_32_BIT: begin + word64 = (word64 << shift_bits); + strobe64 = ('b_1111 << shift_bytes); + axsize = axsize_4; + end + DM_SBACCESS_64_BIT: begin + strobe64 = 'b_1111_1111; + axsize = axsize_8; + end + endcase + + // Adjust for 32b fabrics + if ((valueOf (Wd_Data) == 32) && (addr [2] == 1'b1)) begin + word64 = { 32'h0, word64 [63:32] }; + strobe64 = { 4'h0, strobe64 [7:4] }; + end + + // Finally, create fabric addr/data/strobe + Fabric_Addr fabric_addr = truncate (addr); + Fabric_Data fabric_data = truncate (word64); + Fabric_Strb fabric_strobe = truncate (strobe64); + + return tuple4 (fabric_addr, fabric_data, fabric_strobe, axsize); +endfunction: fn_to_fabric_write_fields + +// ---------------- +// System Bus access states + +typedef enum {SB_NOTBUSY, + SB_READ_FINISH, + SB_WRITE_FINISH + } SB_State +deriving (Bits, Eq, FShow); + +// ================================================================ +// Module implementation + +(* synthesize *) +module mkDM_System_Bus (DM_System_Bus_IFC); + + Integer verbosity = 0; // Normally 0; non-zero for debugging + + // ---------------------------------------------------------------- + + // Interface to memory fabric + AXI4_Master_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master_xactor <- mkAXI4_Master_Xactor_2; + + // ---------------------------------------------------------------- + // System Bus state + + Reg #(SB_State) rg_sb_state <- mkRegU; + Bool sbbusy = (rg_sb_state != SB_NOTBUSY); + + // ---------------------------------------------------------------- + // rg_sbaddress0,1 (2 not implemented) + // rg_sbdata0 (1, 2, 3 not implemented) + // Support for RV64. Instead of defining in terms of XLEN, defining using + // DM_Word which is always Bit#(32). 64-bit addressing supported for RV64 but + // only 32-bit data accesses are supported from debugger + + Reg #(DM_Word) rg_sbaddress0 <- mkReg (0); + Reg #(DM_Word) rg_sbaddress1 <- mkReg (0); // Will always be zero for RV32 + + // Saved address during a read rg_sbaddress0/1 may be autoincremented, + // but we need original addr byte-lane extraction from response + Reg #(Bit #(64)) rg_sbaddress_reading <- mkRegU; + + Bit #(64) sbaddress = { rg_sbaddress1, rg_sbaddress0 }; + + Reg #(DM_Word) rg_sbdata0 <- mkRegU; + + // ---------------------------------------------------------------- + // rg_sbcs + + Reg #(Bool) rg_sbcs_sbbusyerror <- mkRegU; + Reg #(Bool) rg_sbcs_sbreadonaddr <- mkRegU; + Reg #(DM_sbaccess) rg_sbcs_sbaccess <- mkRegU; + Reg #(Bool) rg_sbcs_sbautoincrement <- mkRegU; + Reg #(Bool) rg_sbcs_sbreadondata <- mkRegU; + Reg #(DM_sberror) rg_sbcs_sberror <- mkRegU; + + UInt #(3) sbversion = 1; + + DM_Word virt_rg_sbcs = {pack (sbversion), + 6'b0, + pack (rg_sbcs_sbbusyerror), + pack (sbbusy), + pack (rg_sbcs_sbreadonaddr), + pack (rg_sbcs_sbaccess), + pack (rg_sbcs_sbautoincrement), + pack (rg_sbcs_sbreadondata), + pack (rg_sbcs_sberror), +`ifdef RV64 + 7'd64, // sbasize -- address size +`endif +`ifdef RV32 + 7'd32, // sbasize -- address size +`endif + 1'b0, // sbaccess128 + 1'b0, // sbaccess64 + 1'b1, // sbaccess32 + 1'b1, // sbaccess16 + 1'b1}; // sbaccess8 + + // ---------------- + // Local defs and help functions + + Integer addr_incr = fn_sbaccess_to_addr_incr (rg_sbcs_sbaccess); + + function Action fa_sbaddress_incr (Bit #(64) addr64); + action + Bit #(64) next_sbaddress = addr64 + fromInteger (addr_incr); +`ifdef RV64 + rg_sbaddress1 <= next_sbaddress [63:32]; +`else + rg_sbaddress1 <= 0; +`endif + rg_sbaddress0 <= next_sbaddress [31:0]; + + if (verbosity != 0) + $display (" Increment sbaddr 0x%08h -> 0x%08h", addr64, next_sbaddress); + endaction + endfunction + + // ---------------- + // Construction and sending of fabric read-requests + + function Action fa_fabric_send_read_req (Bit #(64) addr64); + action + Fabric_Addr fabric_addr = truncate (addr64); + let rda = AXI4_Rd_Addr {arid: fabric_default_id, + araddr: fabric_addr, + arlen: 0, // burst len = arlen+1 + arsize: fn_DM_sbaccess_to_AXI4_Size (rg_sbcs_sbaccess), + arburst: fabric_default_burst, + arlock: fabric_default_lock, + arcache: fabric_default_arcache, + arprot: fabric_default_prot, + arqos: fabric_default_qos, + arregion: fabric_default_region, + aruser: fabric_default_user}; + master_xactor.i_rd_addr.enq (rda); + + // Save read-address for byte-lane extraction from later response + // (since rg_sbaddress may be incremented by then). + rg_sbaddress_reading <= addr64; + + rg_sb_state <= SB_READ_FINISH; + + if (verbosity != 0) begin + $display (" DM_System_Bus.fa_fabric_send_read_req, and => SB_READ_FINISH "); + $display (" ", fshow (rda)); + end + endaction + endfunction + + // ---------------- + // Construction and sending of fabric write-requests + + function Action fa_fabric_send_write_req (Bit #(64) data64); + action + match {.fabric_addr, + .fabric_data, + .fabric_strb, + .fabric_size} = fn_to_fabric_write_fields (rg_sbcs_sbaccess, sbaddress, data64); + + // fabric_addr is always fabric-data-width aligned + // fabric_data is properly lane-adjusted + // fabric_strb identifies the lanes to be written + // awsize is always the fabric width + + let wra = AXI4_Wr_Addr {awid: fabric_default_id, + awaddr: fabric_addr, + awlen: 0, // burst len = awlen+1 + awsize: fabric_size, + awburst: fabric_default_burst, + awlock: fabric_default_lock, + awcache: fabric_default_awcache, + awprot: fabric_default_prot, + awqos: fabric_default_qos, + awregion: fabric_default_region, + awuser: fabric_default_user}; + master_xactor.i_wr_addr.enq (wra); + + let wrd = AXI4_Wr_Data {wid: fabric_default_id, + wdata: fabric_data, + wstrb: fabric_strb, + wlast: True, + wuser: fabric_default_user}; + master_xactor.i_wr_data.enq (wrd); + + if (verbosity != 0) begin + $display (" DM_System_Bus.fa_fabric_send_write_req:"); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + end + endaction + endfunction + + // ================================================================ + // Writes to sbcs + + function Action fa_rg_sbcs_write (DM_Word dm_word); + action + Bool sbbusyerror = unpack (dm_word [22]); + Bool sbreadonaddr = unpack (dm_word [20]); + DM_sbaccess sbaccess = unpack (dm_word [19:17]); + Bool sbautoincrement = unpack (dm_word [16]); + Bool sbreadondata = unpack (dm_word [15]); + DM_sberror sberror = unpack (dm_word [14:12]); + + // No-op if not clearing existing sberror + if ((rg_sbcs_sberror != DM_SBERROR_NONE) && (sberror == DM_SBERROR_NONE)) begin + // Existing error is not being cleared + $display ("DM_System_Bus.sbcs_write <= 0x%08h: ERROR", dm_word); + $display (" ERROR: existing sberror (0x%0h) is not being cleared.", rg_sbcs_sberror); + $display (" Must be cleared to re-enable system bus access."); + end + + // No-op if not clearing existing sbbusyerror + else if (rg_sbcs_sbbusyerror && (! sbbusyerror)) begin + $display ("DM_System_Bus.sbcs_write <= 0x%08h: ERROR", dm_word); + $display (" ERROR: existing sbbusyerror (%0d) is not being cleared.", rg_sbcs_sbbusyerror); + $display (" Must be cleared to re-enable system bus access."); + end + + // Check that requested access size is supported + else if ( (sbaccess == DM_SBACCESS_128_BIT) + || (sbaccess == DM_SBACCESS_64_BIT)) + begin + rg_sbcs_sberror <= DM_SBERROR_OTHER; + $display ("DM_System_Bus.sbcs_write <= 0x%08h: ERROR", dm_word); + $display (" ERROR: sbaccess ", fshow (sbaccess), " not supported"); + end + + // Ok + else begin + if (verbosity != 0) begin + $display (" DM_System_Bus.sbcs_write: ", fshow_sbcs (dm_word)); + if (rg_sbcs_sberror != DM_SBERROR_NONE) + $display (" Clearing sbcs.sberror"); + if (rg_sbcs_sbbusyerror) + $display (" Clearing sbcs.sbbusyerror"); + end + + rg_sbcs_sbbusyerror <= False; + rg_sbcs_sbreadonaddr <= sbreadonaddr; + rg_sbcs_sbaccess <= sbaccess; + rg_sbcs_sbautoincrement <= sbautoincrement; + rg_sbcs_sbreadondata <= sbreadondata; + rg_sbcs_sberror <= DM_SBERROR_NONE; + end + endaction + endfunction: fa_rg_sbcs_write + + // ================================================================ + // rg_sbaddress0, rg_sbaddress1 writes + + function Action fa_rg_sbaddress_write (DM_Addr dm_addr, DM_Word dm_word); + action + // Debug announce + if (verbosity != 0) begin + $write ("DM_System_Bus.sbaddress.write: [0x%08h] <= 0x%08h", dm_addr, dm_word); + if (rg_sbcs_sbreadonaddr) begin + $write ("; readonaddr"); + if (rg_sbcs_sbautoincrement) + $write ("; autoincrement"); + end + $display (""); + end + + if (sbbusy) begin + $display ("DM_System_Bus.sbaddress.write: busy, setting sbbusyerror"); + rg_sbcs_sbbusyerror <= True; + end + + else if (rg_sbcs_sbbusyerror) + $display ("DM_System_Bus.sbaddress.write: ignoring due to sbbusyerror"); + + else if (rg_sbcs_sberror != DM_SBERROR_NONE) + $display ("DM_System_Bus.sbaddress.write: ignoring due to sberror = 0x%0h", + rg_sbcs_sberror); + + else if (dm_addr == dm_addr_sbaddress0) begin + Bit #(64) addr64 = { rg_sbaddress1, dm_word }; + if (rg_sbcs_sbreadonaddr) begin + fa_fabric_send_read_req (addr64); + if (rg_sbcs_sbautoincrement) + fa_sbaddress_incr (addr64); + else + rg_sbaddress0 <= dm_word; + end + else + rg_sbaddress0 <= dm_word; + end + + else begin // (dm_addr == dm_addr_sbaddress1) +`ifdef RV32 + rg_sbaddress1 <= 0; + if (verbosity != 0) + $display ("DM_System_Bus.write: [sbaddress1] <= 0 (RV32: ignoring arg value 0x%08h)", + dm_word); +`else + rg_sbaddress1 <= dm_word; + if (verbosity != 0) + $display ("DM_System_Bus.write: [sbaddress1] <= 0x%08h", dm_word); +`endif + end + endaction + endfunction + + // ================================================================ + // rg_sbdata0, rg_sbdata1 reads + + function ActionValue #(DM_Word) fav_rg_sbdata_read (DM_Addr dm_addr); + actionvalue + DM_Word result = 0; + if (sbbusy) begin + $display ("DM_System_Bus.sbdata.read: busy, setting sbbusyerror"); + rg_sbcs_sbbusyerror <= True; + end + + else if (rg_sbcs_sbbusyerror) + $display ("DM_System_Bus.sbdata.read: ignoring due to sbbusyerror"); + + else if (rg_sbcs_sberror != DM_SBERROR_NONE) + $display ("DM_System_Bus.sbdata.read: ignoring due to sberror = 0x%0h", rg_sbcs_sberror); + + else begin + if (dm_addr == dm_addr_sbdata0) + result = rg_sbdata0; + /* FUTURE: when supporting DM_SBACCESS_64_BIT + else if (dm_addr == dm_addr_sbdata1) + result = rg_sbdata1; + */ + + // Increment sbaddress if needed + if (rg_sbcs_sbautoincrement) + fa_sbaddress_incr (sbaddress); + + // Auto-read next data if needed + if (rg_sbcs_sbreadondata && (dm_addr == dm_addr_sbdata0)) + fa_fabric_send_read_req (sbaddress); + end + return result; + endactionvalue + endfunction + + // ---------------- + // Finish read request (handle fabric response) + + (* descending_urgency = "rl_sb_read_finish, reset" *) + (* descending_urgency = "rl_sb_read_finish, write" *) + rule rl_sb_read_finish ( (rg_sb_state == SB_READ_FINISH) + && (rg_sbcs_sberror == DM_SBERROR_NONE)); + let rdr <- pop_o (master_xactor.o_rd_data); + if (verbosity != 0) + $display ("DM_System_Bus.rule_sb_read_finish: rdr = ", fshow (rdr)); + + // Extract relevant bytes from fabric data + Bit #(64) rdata64 = zeroExtend (rdr.rdata); + Bit #(64) data = fn_extract_and_extend_bytes (rg_sbcs_sbaccess, rg_sbaddress_reading, rdata64); + + if (rdr.rresp != axi4_resp_okay) begin + $display ("DM_System_Bus.rule_sb_read_finish: setting rg_sbcs_sberror to DM_SBERROR_OTHER\n"); + $display (" rdr = ", fshow (rdr)); + rg_sbcs_sberror <= DM_SBERROR_OTHER; + end + + rg_sbdata0 <= data [31:0]; + /* FUTURE: when supporting DM_SBACCESS_64_BIT + rg_sbdata1 <= data [63:32]; + */ + + if (verbosity != 0) begin + $display ("DM_System_Bus.rule_sb_read_finish: addr 0x%0h, sbaccess %0d (%0d bytes)", + rg_sbaddress_reading, rg_sbcs_sbaccess, addr_incr); + $display (" rg_sbdata0 <= 0x%0h", data); + $display (" module state => SB_NOTBUSY"); + end + + rg_sb_state <= SB_NOTBUSY; + endrule + + // ================================================================ + // rg_sbdata0, rg_sbdata1 writes + + function Action fa_rg_sbdata_write (DM_Addr dm_addr, DM_Word dm_word); + action + if (sbbusy) begin + $display ("DM_System_Bus.sbdata.write: busy, setting sbbusyerror"); + rg_sbcs_sbbusyerror <= True; + end + + else if (rg_sbcs_sbbusyerror) begin + $display ("DM_System_Bus.sbdata.write: ignoring due to sbbusyerror"); + end + + else if (rg_sbcs_sberror != DM_SBERROR_NONE) begin + $display ("DM_System_Bus.sbdata.write: ignoring due to sberror = 0x%0h", + rg_sbcs_sberror); + end + + else begin + if (verbosity != 0) + $display (" DM_System_Bus.fa_rg_sbdata_write: dm_addr 0x%08h dm_word 0x%08h", + dm_addr, dm_word); + + if (dm_addr == dm_addr_sbdata0) + rg_sbdata0 <= dm_word; + /* FUTURE: when supporting DM_SBACCESS_64_BIT + else if (dm_addr == dm_addr_sbdata1) + rg_sbdata1 <= dm_word; + */ + + // Initiate system bus write if writing to sbdata0 + if (dm_addr == dm_addr_sbdata0) begin + fa_fabric_send_write_req (zeroExtend (dm_word)); + + // Increment sbaddr ifneeded + if (rg_sbcs_sbautoincrement) + fa_sbaddress_incr (sbaddress); + end + end + endaction + endfunction + + // ---------------- + // Consume write-responses + + rule rl_sb_write_response; + let wrr <- pop_o (master_xactor.o_wr_resp); + if (wrr.bresp != axi4_resp_okay) + rg_sbcs_sberror <= DM_SBERROR_OTHER; + endrule + + // ================================================================ + // INTERFACE + + method Action reset; + // master_xactor.reset; // TODO: introduces a scheduling cycle: fix this + + rg_sb_state <= SB_NOTBUSY; + + rg_sbcs_sbbusyerror <= False; + rg_sbcs_sbreadonaddr <= False; + rg_sbcs_sbaccess <= DM_SBACCESS_32_BIT; + rg_sbcs_sbautoincrement <= False; + rg_sbcs_sbreadondata <= False; + rg_sbcs_sberror <= DM_SBERROR_NONE; + + rg_sbaddress0 <= 0; + rg_sbaddress1 <= 0; + rg_sbdata0 <= 0; + + if (verbosity != 0) + $display ("DM_System_Bus: reset"); + endmethod + + // ---------------- + // DMI facing GDB/host + + // The predicate on read allows communication flow control to + // throttle requests. This achieves better performance, but is not + // workable for a true JTAG transport. + method ActionValue #(DM_Word) av_read (DM_Addr dm_addr) if (!sbbusy); + actionvalue + DM_Word dm_word = 0; + + if (dm_addr == dm_addr_sbcs) begin + dm_word = virt_rg_sbcs; + if (verbosity != 0) + $display ("DM_System_Bus.read: [sbcs] => ", fshow_sbcs (dm_word)); + end + + else if (dm_addr == dm_addr_sbaddress0) begin + dm_word = rg_sbaddress0; + if (verbosity != 0) + $display ("DM_System_Bus.read: [sbaddress0] => 0x%08h", dm_word); + end + + else if (dm_addr == dm_addr_sbaddress1) begin + dm_word = rg_sbaddress1; + if (verbosity != 0) + $display ("DM_System_Bus.read: [sbaddress1] => 0x%08h", dm_word); + end + + else if (dm_addr == dm_addr_sbdata0) begin + dm_word <- fav_rg_sbdata_read (dm_addr_sbdata0); + end + + else begin + // Unsupported dm address + dm_word = 0; + $display ("DM_System_Bus.read: [", fshow_dm_addr (dm_addr), "] not supported"); + end + return dm_word; + endactionvalue + endmethod + + method Action write (DM_Addr dm_addr, DM_Word dm_word); + action + if (dm_addr == dm_addr_sbcs) + fa_rg_sbcs_write (dm_word); + + else if ((dm_addr == dm_addr_sbaddress0) || (dm_addr == dm_addr_sbaddress1)) + fa_rg_sbaddress_write (dm_addr, dm_word); + + else if (dm_addr == dm_addr_sbdata0) // FUTURE: || (dm_addr == dm_addr_sbdata1) + fa_rg_sbdata_write (dm_addr, dm_word); + + else begin + // Unsupported dm_addr + let addr_name = fshow_dm_addr (dm_addr); + $display ("DM_System_Bus.write: [", addr_name, "] <= 0x%08h; addr not supported", dm_word); + end + endaction + endmethod + + // ---------------- + // Facing System + interface AXI4_Master_IFC master = master_xactor.axi_side; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/Debug_Module/Debug_Module.bsv b/src_Core/Debug_Module/Debug_Module.bsv new file mode 100644 index 0000000..8ffc04c --- /dev/null +++ b/src_Core/Debug_Module/Debug_Module.bsv @@ -0,0 +1,287 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved. + +package Debug_Module; + +// ================================================================ +// This is the top-level package of a collection that implements the +// "Debug Module" specified in: +// +// "RISC-V External Debug Support" +// Version 0.13 +// 7c760b0151e43523ab3d2180e7852cd6f27d942c +// Mon Jul 3 17:04:59 2017 -0700 + +// Note: the spec actually represents three (almost) completely +// independent functionalities: +// Run Control: to start/stop harts, query their start/stop status, etc. +// Abstract Commands: to read/write RISC-V registers and RISC-V CSRs +// System Bus Access: to read/write RISC-V memory/devices + +// The only exception to complete independence is that the Run Control +// part has a 'reset' for the Debug Module itself, which includes all +// three parts. + +// Unfortunately the spec is not written to make this three-part +// organization clear--aspects of the three parts are completely +// intermingled. Even the address map mixes registers from the three +// parts. + +// Here, this top-level package is merely a wrapper that dispatches +// DMI requests to the three packages that implement the three parts: +// DM_Run_Control +// DM_Abstract_Commands +// DM_System_Bus + +// DM_Common contains common spec-level (implementation-independent) definitions. + +// ================================================================ +// Our Debug Module (DM) has a two sides: +// - GDB/Host-facing +// - CPU/Platform-facing + +// The GDB/Host-facing side is called DMI (Debug Module Interface) in +// the spec, and is a simple memory-like read/write interface, into a +// debug module address space (unrelated to the RISC-V memory address +// space). + +// The CPU/Platform-facing side has request/response interfaces for +// CPU run-control, CPU register/CSR access and RISC-V system memory +// access. + +// ================================================================ +// BSV library imports + +import Memory :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import SpecialFIFOs :: *; + +// ---------------- +// Other library imports + +import Semi_FIFOF :: *; +import Cur_Cycle :: *; + +// ================================================================ +// Project imports + +import ISA_Decls :: *; +import AXI4_Types :: *; +import Fabric_Defs :: *; + +import DM_Common :: *; +import DM_Run_Control :: *; +import DM_Abstract_Commands :: *; +import DM_System_Bus :: *; + +// ================================================================ + +export DM_Common :: *; +export Debug_Module_IFC (..); +export mkDebug_Module; + +// ================================================================ +// Interface to the Debug Module + +interface Debug_Module_IFC; + // ---------------- + // DMI (Debug Module Interface) facing remote debugger + + interface DMI dmi; + + // ---------------- + // Facing CPU + // This section replicated for additional harts. + + // Reset and run-control + interface Get #(Token) hart0_get_reset_req; + interface Client #(Bool, Bool) hart0_client_run_halt; + interface Get #(Bit #(4)) hart0_get_other_req; + + // GPR access + interface MemoryClient #(5, XLEN) hart0_gpr_mem_client; + + // CSR access + interface MemoryClient #(12, XLEN) hart0_csr_mem_client; + + // ---------------- + // Facing Platform + + // Non-Debug-Module Reset (reset all except DM) + interface Get #(Token) get_ndm_reset_req; + + // Read/Write RISC-V memory + interface AXI4_Master_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master; +endinterface + +// ================================================================ + +(* synthesize *) +module mkDebug_Module (Debug_Module_IFC); + + // The three parts + DM_Run_Control_IFC dm_run_control <- mkDM_Run_Control; + DM_Abstract_Commands_IFC dm_abstract_commands <- mkDM_Abstract_Commands; + DM_System_Bus_IFC dm_system_bus <- mkDM_System_Bus; + + FIFOF#(DM_Addr) f_read_addr <- mkBypassFIFOF; + + // ================================================================ + // Reset all three parts when dm_run_control.dmactive is low + + rule rl_reset (! dm_run_control.dmactive); + $display ("%0d: Debug_Module reset", cur_cycle); + dm_run_control.reset; + dm_abstract_commands.reset; + dm_system_bus.reset; + endrule + + // ================================================================ + // INTERFACE + + // ---------------- + // Facing GDB/DMI (Debug Module Interface) + + interface DMI dmi; + method Action read_addr (DM_Addr dm_addr); + f_read_addr.enq(dm_addr); + endmethod + + method ActionValue #(DM_Word) read_data; + let dm_addr = f_read_addr.first; + f_read_addr.deq; + + DM_Word dm_word = ?; + + if ( (dm_addr == dm_addr_dmcontrol) + || (dm_addr == dm_addr_dmstatus) + || (dm_addr == dm_addr_hartinfo) + || (dm_addr == dm_addr_haltsum) + || (dm_addr == dm_addr_hawindowsel) + || (dm_addr == dm_addr_hawindow) + || (dm_addr == dm_addr_devtreeaddr0) + || (dm_addr == dm_addr_authdata) + || (dm_addr == dm_addr_haltregion0) + || (dm_addr == dm_addr_haltregion31) + || (dm_addr == dm_addr_verbosity)) + + dm_word <- dm_run_control.av_read (dm_addr); + + else if ( (dm_addr == dm_addr_abstractcs) + || (dm_addr == dm_addr_command) + || (dm_addr == dm_addr_data0) + || (dm_addr == dm_addr_data1) + || (dm_addr == dm_addr_data2) + || (dm_addr == dm_addr_data3) + || (dm_addr == dm_addr_data4) + || (dm_addr == dm_addr_data5) + || (dm_addr == dm_addr_data6) + || (dm_addr == dm_addr_data7) + || (dm_addr == dm_addr_data8) + || (dm_addr == dm_addr_data9) + || (dm_addr == dm_addr_data10) + || (dm_addr == dm_addr_data11) + || (dm_addr == dm_addr_abstractauto) + || (dm_addr == dm_addr_progbuf0)) + + dm_word <- dm_abstract_commands.av_read (dm_addr); + + else if ( (dm_addr == dm_addr_sbcs) + || (dm_addr == dm_addr_sbaddress0) + || (dm_addr == dm_addr_sbaddress1) + || (dm_addr == dm_addr_sbaddress2) + || (dm_addr == dm_addr_sbdata0) + || (dm_addr == dm_addr_sbdata1) + || (dm_addr == dm_addr_sbdata2) + || (dm_addr == dm_addr_sbdata3)) + + dm_word <- dm_system_bus.av_read (dm_addr); + + else begin + // TODO: set error status? + dm_word = 0; + end + + return dm_word; + endmethod + + method Action write (DM_Addr dm_addr, DM_Word dm_word); + if ( (dm_addr == dm_addr_dmcontrol) + || (dm_addr == dm_addr_dmstatus) + || (dm_addr == dm_addr_hartinfo) + || (dm_addr == dm_addr_haltsum) + || (dm_addr == dm_addr_hawindowsel) + || (dm_addr == dm_addr_hawindow) + || (dm_addr == dm_addr_devtreeaddr0) + || (dm_addr == dm_addr_authdata) + || (dm_addr == dm_addr_haltregion0) + || (dm_addr == dm_addr_haltregion31) + || (dm_addr == dm_addr_verbosity)) + + dm_run_control.write (dm_addr, dm_word); + + else if ( (dm_addr == dm_addr_abstractcs) + || (dm_addr == dm_addr_command) + || (dm_addr == dm_addr_data0) + || (dm_addr == dm_addr_data1) + || (dm_addr == dm_addr_data2) + || (dm_addr == dm_addr_data3) + || (dm_addr == dm_addr_data4) + || (dm_addr == dm_addr_data5) + || (dm_addr == dm_addr_data6) + || (dm_addr == dm_addr_data7) + || (dm_addr == dm_addr_data8) + || (dm_addr == dm_addr_data9) + || (dm_addr == dm_addr_data10) + || (dm_addr == dm_addr_data11) + || (dm_addr == dm_addr_abstractauto) + || (dm_addr == dm_addr_progbuf0)) + + dm_abstract_commands.write (dm_addr, dm_word); + + else if ( (dm_addr == dm_addr_sbcs) + || (dm_addr == dm_addr_sbaddress0) + || (dm_addr == dm_addr_sbaddress1) + || (dm_addr == dm_addr_sbaddress2) + || (dm_addr == dm_addr_sbdata0) + || (dm_addr == dm_addr_sbdata1) + || (dm_addr == dm_addr_sbdata2) + || (dm_addr == dm_addr_sbdata3)) + + dm_system_bus.write (dm_addr, dm_word); + + else begin + // TODO: set error status? + noAction; + end + endmethod + endinterface + + // ---------------- + // Facing CPU/hart0 + + // Reset and run-control + interface Get hart0_get_reset_req = dm_run_control.hart0_get_reset_req; + interface Client hart0_client_run_halt = dm_run_control.hart0_client_run_halt; + interface Get hart0_get_other_req = dm_run_control.hart0_get_other_req; + + // GPR access + interface MemoryClient hart0_gpr_mem_client = dm_abstract_commands.hart0_gpr_mem_client; + + // CSR access + interface MemoryClient hart0_csr_mem_client = dm_abstract_commands.hart0_csr_mem_client; + + // ---------------- + // Facing Platform + + // Non-Debug-Module Reset (reset all except DM) + interface Get get_ndm_reset_req = dm_run_control.get_ndm_reset_req; + + // Read/Write RISC-V memory + interface AXI4_Master_IFC master = dm_system_bus.master; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/Debug_Module/README.txt b/src_Core/Debug_Module/README.txt new file mode 100644 index 0000000..d907344 --- /dev/null +++ b/src_Core/Debug_Module/README.txt @@ -0,0 +1,162 @@ +'Debug_Module' implements a Debug Module for RISC-V processors in +accordance with the RISC-V standard "External Debug Support" spec: + + RISC-V External Debug Support + Version 0.13-DRAFT + dd8d8714184970031fa447a452068223f257b51c + Mon Dec 18 13:54:14 2017 -0800 + +Note: the spec is independent of any particular RISC-V CPU +implementation. It just specifies the standard registers in the Debug +Module that can be read and written by an external debugger (such as +GDB). It specifies the address map of these registers, and the +semantics, i.e., what happens when one reads or writes these +registers. The spec does not say anything about how this spec is +implemented. + +Please see comments in Debug_Module.bsv for more details on our +implementation of the Debug Module spec. This implementation is also +not specific to any particular CPU implementation. We use it in +Bluespec RISC-V CPUs, but it could be used with other CPUs as well. +We use this Debug Module in the Bluespec RISC-V Verification Factory +(BRVF). + +// ================================================================ +What follows is a concise cheat-sheet on the registers in the Debug +Module based on the spec. + +// ---------------- +// Run Control + +DM_Addr dm_addr_dmcontrol = 'h10; + 31.30.29.28| 27.26.25.24| 23.22.21.20| 19.18.17.16| 15.14.13.12| 11.10.9.8| 7.6.5.4| 3.2.1.0| + | | | | |------------10--------------| | |dmactive + | | | | |hartsel |ndmreset + | | | |hasel + | | | 0: Single hart selected (hartsel) + | | | 1: Multiple harts selected (hartsel + hart array mask) + | | |hartreset + | |resumereq + |haltreq + +DM_Addr dm_addr_dmstatus = 'h11; + 31.30.29.28| 27.26.25.24| 23.22.21.20| 19.18.17.16| 15.14.13.12| 11.10.9.8| 7.6.5.4| 3.2.1.0| + | | | | | | | | | | | | | | | | | | | | | | | | |--4--|version + | | | | | | | | | | | | | | | | | | | | | | | | | 0: no DM present + | | | | | | | | | | | | | | | | | | | | | | | | | 1: DM v011 + | | | | | | | | | | | | | | | | | | | | | | | | | 2: DM v013 + | | | | | | | | | | | | | | | | | | | | | | | | | 15: DM vUnknown + | | | | | | | | | | | | | | | | | | | | | | | |devtreevalid + | | | | | | | | | | | | | | | | | | | | | | |0 + | | | | | | | | | | | | | | | | | | | | | |authbusy + | | | | | | | | | | | | | | | | | | | | |authenticated + | | | | | | | | | | | | | | | | | | | |anyhalted + | | | | | | | | | | | | | | | | | | |allhalted + | | | | | | | | | | | | | | | | | |anyrunning + | | | | | | | | | | | | | | | | |allrunning + | | | | | | | | | | | | | | | |anyunavail + | | | | | | | | | | | | | | |allunavail + | | | | | | | | | | | | | |anynonexistent + | | | | | | | | | | | | |allnonexistent + | | | | | | | | | | | |anyresumeack + | | | | | | | | | | |allresumeack + | | | | | | | | | |anyhavereset + | | | | | | | | |allhavereset + | | | | | | |--|0 + | | | | | |impebreak + | | | | | 0 No implicit EBREAK at end of PB + | | | | | 1 Implicit EBREAK at end of PB + | | | | |0 + | | |--3--|dmerr + | | 0 No error + | | 1 bad addr + | | 7 other error + |----- 5-----|0 + +DM_Addr dm_addr_hartinfo = 'h12; +DM_Addr dm_addr_haltsum = 'h13; +DM_Addr dm_addr_hawindowsel = 'h14; +DM_Addr dm_addr_hawindow = 'h15; +DM_Addr dm_addr_devtreeaddr0 = 'h19; +DM_Addr dm_addr_authdata = 'h30; +DM_Addr dm_addr_haltregion0 = 'h40; +DM_Addr dm_addr_haltregion31 = 'h5F; + +// ---------------- +// Abstract commands (read/write RISC-V registers and RISC-V CSRs) + +DM_Addr dm_addr_abstractcs = 'h16; + 31.30.29.28| 27.26.25.24| 23.22.21.20| 19.18.17.16| 15.14.13.12| 11.10.9.8| 7.6.5.4| 3.2.1.0| + |-----5------|progsize |busy |-3-|cmderr |----5---|datacount + +DM_Addr dm_addr_command = 'h17; + 31.30.29.28| 27.26.25.24| 23.22.21.20| 19.18.17.16| 15.14.13.12| 11.10.9.8| 7.6.5.4| 3.2.1.0| + | | | | | |-----------------16------------------|regno + | | | | | | 0x0000-0x0FFF CSRs (dpc => PC) + | | | | | | 0x1000-0x101F GPRs + | | | | | | 0x1020-0x103F Floating Point Regs + | | | | | | 0xC000-0xFFFF Reserved + | | | | |write + | | | | 0: specified reg -> arg0 of data + | | | | 1: specified reg <- arg0 of data + | | | |transfer + | | | 0 Don't do the 'write' op + | | | 1 Do the 'write' op + | | | Allows exec of PB without valid vals in 'size' and 'regno' + | | |postexec + | | 1 exec Program Buffer exactly once after the xfer + | |--3--|size + | 2 Lowest 32b of reg + | 3 Lowest 64b of reg + | 4 Lowest 128b of reg + |---------8-----------|cmdtype + 0 ACCESS_REG + 1 QUICK_ACCESS + +DM_Addr dm_addr_data0 = 'h04; +DM_Addr dm_addr_data1 = 'h05; +DM_Addr dm_addr_data2 = 'h06; +DM_Addr dm_addr_data3 = 'h07; +DM_Addr dm_addr_data4 = 'h08; +DM_Addr dm_addr_data5 = 'h09; +DM_Addr dm_addr_data6 = 'h0a; +DM_Addr dm_addr_data7 = 'h0b; +DM_Addr dm_addr_data8 = 'h0c; +DM_Addr dm_addr_data9 = 'h0d; +DM_Addr dm_addr_data10 = 'h0d; +DM_Addr dm_addr_data11 = 'h0f; + +DM_Addr dm_addr_abstractauto = 'h18; +DM_Addr dm_addr_progbuf0 = 'h20; + +// ---------------- +// System Bus access (read/write RISC-V memory/devices) + +DM_Addr dm_addr_sbcs = 'h38; + 31.30.29.28| 27.26.25.24| 23.22.21.20| 19.18.17.16| 15.14.13.12| 11.10.9.8| 7.6.5.4| 3.2.1.0| + | | | | | | | | | | | |sbaccess8 + | | | | | | | | | | |sbaccess16 + | | | | | | | | | |sbaccess32 + | | | | | | | | |sbaccess64 + | | | | | | | |sbaccess128 + | | | | | | |-----7-------|sbasize + | | | | |--3--|sberror + | | | | | 0: no bus err + | | | | | 1: timeout + | | | | | 2: bad addr + | | | | | 3: other err (e.g., alignment) + | | | | | 4: busy + | | | |sbautoread + | | |sbautoincrement + | |--3--|sbaccess + | | 0:8b, 1:16b, 2:32b, 3:64b, 4:128b + |singleread + 1 triggers single read at sbaddress of size sbaccess + +DM_Addr dm_addr_sbaddress0 = 'h39; +DM_Addr dm_addr_sbaddress1 = 'h3a; +DM_Addr dm_addr_sbaddress2 = 'h3b; +DM_Addr dm_addr_sbdata0 = 'h3c; +DM_Addr dm_addr_sbdata1 = 'h3d; +DM_Addr dm_addr_sbdata2 = 'h3e; +DM_Addr dm_addr_sbdata3 = 'h3f; diff --git a/src_Core/Debug_Module/Test/Makefile b/src_Core/Debug_Module/Test/Makefile new file mode 100644 index 0000000..e78fea0 --- /dev/null +++ b/src_Core/Debug_Module/Test/Makefile @@ -0,0 +1,94 @@ +default: compile link +all: compile link simulate + +TOP = Testbench + +TOPFILE = $(TOP).bsv +TOPMODULE = mk$(TOP) + +# BSCFLAGS = -keep-fires -aggressive-conditions -no-warn-action-shadowing -no-inline-rwire +# BSCFLAGS = -keep-fires -aggressive-conditions -no-inline-rwire -show-range-conflict -show-schedule +BSCFLAGS = -D RV32 \ + -keep-fires \ + -aggressive-conditions \ + -suppress-warnings G0020 \ + -show-schedule + + +# ---------------------------------------------------------------- +# FOR BLUESIM + +ISA_DECLS_DIR = $(HOME)/Projects/RISCV/Bluespec_RISCV/ISA +TRX_DIR = $(HOME)/Projects/RISCV/Bluespec_RISCV/Fabrics/TRX +ADDL_LIBS_DIR = $(HOME)/Projects/RISCV/Bluespec_RISCV/BSV_Additional_Libs/BSV + +BSCDIRS_BSIM = -simdir build_bsim -bdir build -info-dir build +BSCPATH_BSIM = -p .:..:$(ISA_DECLS_DIR):$(TRX_DIR):$(ADDL_LIBS_DIR):%/Prelude:%/Libraries + +build_bsim: + mkdir -p $@ + +build: + mkdir -p $@ + +.PHONY: compile +compile: build_bsim build + @echo Compiling... + bsc -u -sim $(BSCDIRS_BSIM) $(BSCFLAGS) $(BSCPATH_BSIM) $(TOPFILE) + @echo Compilation finished + +.PHONY: link +link: + @echo Linking... + bsc -e $(TOPMODULE) $(BSCFLAGS) -parallel-sim-link 8 -sim -o ./$(TOP)_bsim_exe $(BSCDIRS_BSIM) $(BSCPATH_BSIM) + @echo Linking finished + +.PHONY: simulate +simulate: + @echo Simulation... + logsave bsim.log ./$(TOP)_bsim_exe -V + @echo Simulation finished + +# ---------------------------------------------------------------- +# FOR VERILOG + +BSCDIRS_V = -vdir verilog -bdir build_v -info-dir build_v +BSCPATH_V = -p .:./$(SRC_BSV):%/Prelude:%/Libraries:%/Libraries/TLM3 + +# Set VSIM to desired Verilog simulator +# VSIM = modelsim +VSIM ?= cvc +# VSIM ?= iverilog + +build_v: + mkdir -p $@ + +verilog: + mkdir -p $@ + +.PHONY: rtl +rtl: build_v verilog + @echo Verilog generation ... + bsc -u -elab -verilog $(BSCDIRS_V) $(BSCFLAGS) $(BSCPATH_V) $(TOPFILE) + @echo Verilog generation finished + +.PHONY: vlink +vlink: + bsc -v -e $(TOPMODULE) -verilog -o ./out_v -vdir verilog -vsim $(VSIM) -keep-fires \ + verilog/$(TOPMODULE).v + +.PHONY: vsim +vsim: + @echo Simulation... + ./out_v + @echo Simulation finished + +# ---------------------------------------------------------------- + +.PHONY: clean +clean: + rm -f *~ src_*/*~ src_*/*.o build/* build_bsim/* build_v/* *.cxx *.h *.o + +.PHONY: full_clean +full_clean: clean + rm -r -f *_bsim_exe *.so out_v verilog build build_bsim dump.vcd bsim.log diff --git a/src_Core/Debug_Module/Test/Testbench.bsv b/src_Core/Debug_Module/Test/Testbench.bsv new file mode 100644 index 0000000..45d5475 --- /dev/null +++ b/src_Core/Debug_Module/Test/Testbench.bsv @@ -0,0 +1,597 @@ +package Testbench; + +// ================================================================ +// Testbench for basic sanity-check testing of the Debug Module. + + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import Connectable :: *; +import StmtFSM :: *; + +// ---------------- +// Other library imports + +import Semi_FIFOF :: *; + +// ================================================================ + +import ISA_Decls :: *; +import TRX :: *; + +import Debug_Module :: *; + +// ================================================================ + +Integer csr_addr_dcsr = 'h7b0; +Integer csr_addr_dpc = 'h7b1; +Integer csr_addr_dscratch0 = 'h7b2; +Integer csr_addr_dscratch1 = 'h7b3; + +// ================================================================ + +(* synthesize *) +module mkTestbench (Empty); + + // ================================================================ + // Cycle-counter and cycle-limit termination + + Reg #(Bit #(32)) rg_cycle <- mkReg (0); + + Integer cycle_limit = 100; + + rule rl_count_cycles; + if (rg_cycle == fromInteger (100)) begin + $display ("Testench: stopping at cycle %0d", cycle_limit); + $finish (0); + end + rg_cycle <= rg_cycle +1; + endrule + + // ================================================================ + // The Debug Module + + Debug_Module_IFC dm <- mkDebug_Module; + + // ================================================================ + // Model of a hart, and connections to dm + + Hart_DM_IFC hart0 <- mkHart_Model (0); + + // Reset + mkConnection (dm.hart0_reset_req, hart0.hart_reset_req); + + // Run-control + mkConnection (dm.hart0_run_req_rsp, hart0.hart_run_req_rsp); + + // GPR access + mkConnection (dm.master_for_gprs, hart0.slave_for_gprs); + + // CSR access + mkConnection (dm.master_for_csrs, hart0.slave_for_csrs); + + // ================================================================ + // Over-simplified model of platform reset (all except DM) + + rule rl_ndm_reset; + let x <- dm.ndm_reset_req.get; + $display ("Testbench.rl_ndm_reset: Resetting all platform except Debug Module"); + endrule + + // ================================================================ + // Over-simplified model of system (RISC-V) memory + // On reads, return addr + 2. + + rule rl_mem_read; + let rda <- pop_o (dm.master.fo_rda); + let data = rda.addr + 2; // Bogus data, for now + let rdr = TRX_RdR {trans_id: rda.trans_id, + status : TRX_OKAY, + data : data}; + dm.master.fi_rdr.enq (rdr); + $display ("Testbench: memory read [0x%08h] => 0x%08h", rda.addr, data); + endrule + + rule rl_mem_write; + let wra <- pop_o (dm.master.fo_wra); + let wrd <- pop_o (dm.master.fo_wrd); + let wrr = TRX_WrR {trans_id: wra.trans_id, + status : TRX_OKAY}; + dm.master.fi_wrr.enq (wrr); + $display ("Testbench: memory write [0x%08h] <= 0x%08h", wra.addr, wrd.data); + endrule + + // ================================================================ + // Abstract command sequences (read/write GPR/CSR) + + Reg #(Bit #(32)) rg_abstractcs <- mkRegU; + + // Read a register + function Stmt fn_stmt_read_reg (Bit #(16) regno); + return + seq + $display ("----------------\nRead RISC-V reg"); + // Clear any prior error status + dm.write (dm_addr_abstractcs, fn_mk_abstractcs (dm_cmderr_w1c)); + // Perform the read + dm.write (dm_addr_command, + fn_mk_command_access_reg (DM_COMMAND_ACCESS_REG_SIZE_LOWER32, + False, // postexec + True, // transfer + False, // write + regno)); + // Read status to check no error + action + let x <- dm.av_read (dm_addr_abstractcs); + rg_abstractcs <= x; + endaction + while (fn_abstractcs_busy (rg_abstractcs)) seq + $display ("Testbench: read reg: busy"); + action + let x <- dm.av_read (dm_addr_abstractcs); + rg_abstractcs <= x; + endaction + endseq + if (fn_abstractcs_cmderr (rg_abstractcs) != DM_ABSTRACTCS_CMDERR_NONE) + $display ("Testbench: read reg => ", fshow (fn_abstractcs_cmderr (rg_abstractcs))); + else action + let x <- dm.av_read (dm_addr_data0); + $display ("Testbench: read reg => 0x%08h", x); + endaction + endseq; + endfunction + + // Write a register + function Stmt fn_stmt_write_reg (Bit #(16) regno, Bit #(32) data); + return + seq + $display ("----------------\nWrite RISC-V reg"); + // Clear any prior error status + dm.write (dm_addr_abstractcs, fn_mk_abstractcs (dm_cmderr_w1c)); + // Write data0 + dm.write (dm_addr_data0, data); + // Perform the write + dm.write (dm_addr_command, + fn_mk_command_access_reg (DM_COMMAND_ACCESS_REG_SIZE_LOWER32, + False, // postexec + True, // transfer + True, // write + regno)); + // Read status to check no error + action + let x <- dm.av_read (dm_addr_abstractcs); + rg_abstractcs <= x; + endaction + while (fn_abstractcs_busy (rg_abstractcs)) seq + $display ("Testbench: write reg: busy"); + action + let x <- dm.av_read (dm_addr_abstractcs); + rg_abstractcs <= x; + endaction + endseq + $display ("Testbench: write reg => ", fshow (fn_abstractcs_cmderr (rg_abstractcs))); + endseq; + endfunction + + // ================================================================ + // System Bus access sequences (read/write RISC-V memory) + + Reg #(Bool) rg_busy <- mkRegU; + + Reg #(Bit #(32)) rg_j <- mkRegU; + Reg #(Bit #(32)) rg_addr <- mkRegU; + Reg #(Bit #(32)) rg_data <- mkRegU; + + Stmt stmt_wait_for_sb_nonbusy = ( + seq + rg_busy <= True; + while (rg_busy) seq + delay (1); + action + let x <- dm.av_read (dm_addr_sbcs); + let sberror = fn_sbcs_sberror (x); + rg_busy <= (sberror == DM_SBERROR_BUSY_STALE); + if ( (sberror != DM_SBERROR_NONE) + && (sberror != DM_SBERROR_BUSY_STALE)) + begin + $display ("Testbench: stmt_wait_for_sb_nonbusy: ", fshow (sberror)); + $finish (1); + end + endaction + endseq + endseq); + + // Do a single-read from memory + Stmt stmt_mem_read_1 = ( + seq + dm.write (dm_addr_sbaddress0, 'h1_0000); + dm.write (dm_addr_sbcs, fn_mk_sbcs (True, // sbsingleread + DM_SBACCESS_32_BIT, + False, // sbautoincrement + False, // sbautoread + DM_SBERROR_UNDEF7_W1C)); // clear sberror + stmt_wait_for_sb_nonbusy; + action + let x <- dm.av_read (dm_addr_sbdata0); + $display ("stmt_mem_read_1: read-data = 0x%08h", x); + endaction + endseq); + + // Do a multiple-read from memory + Stmt stmt_mem_read_4 = ( + seq + dm.write (dm_addr_sbaddress0, 'h1_0000); + dm.write (dm_addr_sbcs, fn_mk_sbcs (True, // sbsingleread + DM_SBACCESS_32_BIT, + True, // sbautoincrement + True, // sbautoread + DM_SBERROR_UNDEF7_W1C)); // clear sberror + for (rg_j <= 0; rg_j < 3; rg_j <= rg_j + 1) seq + stmt_wait_for_sb_nonbusy; + action + let x <- dm.av_read (dm_addr_sbdata0); + $display ("stmt_mem_read_4: read-data [%0d] = 0x%08h", rg_j, x); + endaction + endseq + dm.write (dm_addr_sbcs, fn_mk_sbcs (False, // sbsingleread + DM_SBACCESS_32_BIT, + False, // sbautoincrement + False, // sbautoread + DM_SBERROR_UNDEF7_W1C)); // clear sberror + stmt_wait_for_sb_nonbusy; + action + let x <- dm.av_read (dm_addr_sbdata0); + $display ("stmt_mem_read_4: read-data [%0d] = 0x%08h", rg_j, x); + endaction + endseq); + + // Do a single-write to memory + Stmt stmt_mem_write_1 = ( + seq + dm.write (dm_addr_sbcs, fn_mk_sbcs (False, // sbsingleread + DM_SBACCESS_32_BIT, + False, // sbautoincrement + False, // sbautoread + DM_SBERROR_UNDEF7_W1C)); // clear sberror + stmt_wait_for_sb_nonbusy; + dm.write (dm_addr_sbaddress0, 'h1_0000); + dm.write (dm_addr_sbdata0, 'h_BEEF); + endseq); + + // Do a multiple-write to memory + Stmt stmt_mem_write_4 = ( + seq + dm.write (dm_addr_sbcs, fn_mk_sbcs (False, // sbsingleread + DM_SBACCESS_32_BIT, + True, // sbautoincrement + False, // sbautoread + DM_SBERROR_UNDEF7_W1C)); // clear sberror + stmt_wait_for_sb_nonbusy; + action + rg_addr <= 'h_2000; + rg_data <= 'h_DAFA_0000; + endaction + dm.write (dm_addr_sbaddress0, rg_addr); + for (rg_j <= 0; rg_j < 4; rg_j <= rg_j + 1) seq + stmt_wait_for_sb_nonbusy; + action + $display ("stmt_mem_write_4: [0x%08h] x = 0x%08h", rg_addr + rg_j, rg_data); + dm.write (dm_addr_sbdata0, rg_data); + rg_data <= rg_data + 1; + endaction + endseq + endseq); + + // ================================================================ + // Run-control test sequences (reset, run, halt, single-step) + + let dmcontrol_dm_reset + = fn_mk_dmcontrol (False, // haltreq + False, // resumereq + False, // hartreset + False, // hasel + 0, // hartsel, + False, // ndmreset + False); // dmactive; assert reset + + let dmcontrol_ndmreset + = fn_mk_dmcontrol (False, // haltreq + False, // resumereq + False, // hartreset + False, // hasel, + 0, // hartsel + True, // ndmreset + True); // dmactive + + let dmcontrol_err_hasel + = fn_mk_dmcontrol (False, // haltreq + False, // resumereq + False, // hartreset + True, // hasel, + 0, // hartsel + False, // ndmreset + True); // dmactive + + let dmcontrol_err_hartsel + = fn_mk_dmcontrol (False, // haltreq + False, // resumereq + False, // hartreset + False, // hasel, + 3, // hartsel + False, // ndmreset + True); // dmactive + + let dmcontrol_hartreset + = fn_mk_dmcontrol (False, // haltreq + False, // resumereq + True, // hartreset + False, // hasel, + 0, // hartsel + False, // ndmreset + True); // dmactive + + let dmcontrol_err_haltreq_resumereq + = fn_mk_dmcontrol (True, // haltreq + True, // resumereq + False, // hartreset + False, // hasel, + 0, // hartsel + False, // ndmreset + True); // dmactive + + let dmcontrol_haltreq + = fn_mk_dmcontrol (True, // haltreq + False, // resumereq + False, // hartreset + False, // hasel, + 0, // hartsel + False, // ndmreset + True); // dmactive + + let dmcontrol_resumereq + = fn_mk_dmcontrol (False, // haltreq + True, // resumereq + False, // hartreset + False, // hasel, + 0, // hartsel + False, // ndmreset + True); // dmactive + + function Stmt fn_stmt_run_control (DM_Word dm_word); + return seq + dm.write (dm_addr_dmcontrol, dm_word); + delay (5); + // Check and show status + action + let x <- dm.av_read (dm_addr_dmstatus); + $display (" ", fshow_dmstatus (x)); + endaction + endseq; + endfunction + + // ---------------- + // For single-step, set 'step' bit in DCSR, then run + + let dcsr_step = {4'h4, // xdebugver + 12'b0, + 1'b0, // ebreakm + 1'b0, + 1'b0, // ebreaks + 1'b0, // ebreaku + 1'b0, // stepie + 1'b0, // stepcount + 1'b0, // steptime + 3'b0, // cause + 3'b0, + 1'b1, // step + 2'h3}; + + Stmt stmt_single_step = ( + seq + // set 'step' in dcsr + fn_stmt_write_reg (fromInteger (dm_command_access_reg_regno_csr_0 + csr_addr_dcsr), + dcsr_step); // priv + fn_stmt_run_control (dmcontrol_resumereq); + endseq); + + // ================================================================ + // Top-level test. Comment/Uncomment desired parts. + + Stmt test = seq + // Reset DM + $display ("----------------\n'Testbench: Reset DM'"); + fn_stmt_run_control (dmcontrol_dm_reset); + + /* + $display ("----------------\n'Testbench: Reset Platform'"); + fn_stmt_run_control (dmcontrol_ndmreset); + + $display ("----------------\n'Testbench: Err hasel'"); + fn_stmt_run_control (dmcontrol_err_hasel); + + $display ("----------------\n'Testbench: Err hartsel'"); + fn_stmt_run_control (dmcontrol_err_hartsel); + + $display ("----------------\n'Testbench: Reset hart'"); + fn_stmt_run_control (dmcontrol_hartreset); + + $display ("----------------\n'Testbench: Err haltreq and resumereq'"); + fn_stmt_run_control (dmcontrol_err_haltreq_resumereq); + + $display ("----------------\n'Testbench: Continue'"); + fn_stmt_run_control (dmcontrol_resumereq); + + $display ("----------------\n'Testbench: Halt'"); + fn_stmt_run_control (dmcontrol_haltreq); + + $display ("----------------\n'Testbench: Single step'"); + stmt_single_step; + */ + + $display ("----------------\n'Testbench: Read GPR'"); + fn_stmt_read_reg (fromInteger (dm_command_access_reg_regno_gpr_0 + 5)); + $display ("----------------\n'Testbench: Read CSR'"); + fn_stmt_read_reg (fromInteger (dm_command_access_reg_regno_csr_0 + 3)); + + $display ("----------------\n'Testbench: Write GPR'"); + fn_stmt_write_reg (fromInteger (dm_command_access_reg_regno_gpr_0 + 5), 'h_AAAA_0005); + $display ("----------------\n'Testbench: Write CSR'"); + fn_stmt_write_reg (fromInteger (dm_command_access_reg_regno_csr_0 + 3), 'h_CCCC_0003); + + /* + $display ("----------------\n'Testbench: Read 1'"); + stmt_mem_read_1; + + $display ("----------------\n'Testbench: Write 1'"); + stmt_mem_write_1; + + $display ("----------------\n'Testbench: Read 4'"); + stmt_mem_read_4; + + $display ("----------------\n'Testbench: Write 4'"); + stmt_mem_write_4; + */ + + await (False); + endseq; + + mkAutoFSM (test); + +endmodule + +// ================================================================ +// Over-simplified model of a hart (reset, run/halt, read/write GPR/CSR) + +interface Hart_DM_IFC; + // Reset + interface Put #(Token) hart_reset_req; + + // Run-control + interface Server #(Bool, Bool) hart_run_req_rsp; + + // GPR access + interface TRX_Slave_IFC #(5,32,0) slave_for_gprs; + + // CSR access + interface TRX_Slave_IFC #(12,32,0) slave_for_csrs; +endinterface + + +(* synthesize *) +module mkHart_Model #(parameter Bit #(10) hart_id) (Hart_DM_IFC); + + Reg #(Bool) rg_hart_running <- mkReg (False); + + FIFOF #(Token) f_hart_reset_reqs <- mkFIFOF; + + FIFOF #(Bool) f_hart_run_reqs <- mkFIFOF; + FIFOF #(Bool) f_hart_run_rsps <- mkFIFOF; + + // TRX interface to gprs + TRX_Buffer_IFC #(5,32,0) trx_buf_gprs <- mkTRX_Buffer; + + // TRX interface to crs + TRX_Buffer_IFC #(12,32,0) trx_buf_csrs <- mkTRX_Buffer; + + // ---------------------------------------------------------------- + // BEHAVIOR + + // ---------------- + // Reset + + rule rl_hart_reset; + let x = f_hart_reset_reqs.first; + f_hart_reset_reqs.deq; + + $display ("Testbench.hart [%0d]: reset", hart_id); + endrule + + // ---------------- + // Run-control + + rule rl_resume_hart (f_hart_run_reqs.first); + f_hart_run_reqs.deq; + rg_hart_running <= True; + + if (rg_hart_running) + $display ("Testbench.hart [%0d].rl_resume_hart: already running", hart_id); + else + $display ("Testbench.hart [%0d].rl_resume_hart: resuming", hart_id); + + f_hart_run_rsps.enq (True); + endrule + + rule rl_halt_hart (! f_hart_run_reqs.first); + f_hart_run_reqs.deq; + rg_hart_running <= False; + + if (rg_hart_running) + $display ("Testbench.hart [%0d].rl_halt_hart: halting", hart_id); + else + $display ("Testbench.hart [%0d].rl_halt_hart: already halted", hart_id); + + f_hart_run_rsps.enq (False); + endrule + + // ---------------- + // GPR access + + rule rl_read_gpr; + let rda <- pop_o (trx_buf_gprs.master.fo_rda); + Bit #(32) data = extend (rda.addr) + 'h1000; + let rdr = TRX_RdR {trans_id: rda.trans_id, + status: TRX_OKAY, + data: data}; + trx_buf_gprs.master.fi_rdr.enq (rdr); + $display ("Testbench.hart [%0d]: Read GPR [%0h] => 0x%08h", hart_id, rda.addr, data); + endrule + + rule rl_read_csr; + let rda <- pop_o (trx_buf_csrs.master.fo_rda); + Bit #(32) data = extend (rda.addr) + 'h2000; + let rdr = TRX_RdR {trans_id: rda.trans_id, + status: TRX_OKAY, + data: data}; + trx_buf_csrs.master.fi_rdr.enq (rdr); + $display ("Testbench.hart [%0d]: Read CSR [%0h] => 0x%08h", hart_id, rda.addr, data); + endrule + + rule rl_write_gpr; + let wra <- pop_o (trx_buf_gprs.master.fo_wra); + let wrd <- pop_o (trx_buf_gprs.master.fo_wrd); + let wrr = TRX_WrR {trans_id: wra.trans_id, status: TRX_OKAY}; + trx_buf_gprs.master.fi_wrr.enq (wrr); + $display ("Testbench.hart [%0d]: Write GPR [%0h] <= 0x%08h", hart_id, wra.addr, wrd.data); + endrule + + rule rl_write_csr; + let wra <- pop_o (trx_buf_csrs.master.fo_wra); + let wrd <- pop_o (trx_buf_csrs.master.fo_wrd); + let wrr = TRX_WrR {trans_id: wra.trans_id, status: TRX_OKAY}; + trx_buf_csrs.master.fi_wrr.enq (wrr); + $display ("Testbench.hart [%0d]: Write CSR [%0h] <= 0x%08h", hart_id, wra.addr, wrd.data); + endrule + + // ---------------------------------------------------------------- + // INTERFACE + + // Reset + interface Put hart_reset_req = toPut (f_hart_reset_reqs); + + // Run-control + interface Server hart_run_req_rsp = toGPServer (f_hart_run_reqs, f_hart_run_rsps); + + // GPR access + interface TRX_Slave_IFC slave_for_gprs = trx_buf_gprs.slave; + + // CSR access + interface TRX_Slave_IFC slave_for_csrs = trx_buf_csrs.slave; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/ISA/ISA_Decls.bsv b/src_Core/ISA/ISA_Decls.bsv new file mode 100644 index 0000000..7544a12 --- /dev/null +++ b/src_Core/ISA/ISA_Decls.bsv @@ -0,0 +1,1125 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +// ================================================================ +// ISA defs for UC Berkeley RISC V +// +// References (from riscv.org): +// The RISC-V Instruction Set Manual +// Volume I: Unprivileged ISA +// Document Version 20181106-Base-Ratification +// November 6, 2018 +// +// The RISC-V Instruction Set Manual +// Volume II: Privileged Architecture +// Document Version 20181203-Base-Ratification +// December 3, 2018 +// +// ================================================================ + +package ISA_Decls; + +// ================================================================ +// BSV library imports + +import DefaultValue :: *; +import Vector :: *; +import BuildVector :: *; + +// ================================================================ +// BSV project imports + +// None + +// ================================================================ + +typedef 3 NO_OF_PRIVMODES; + +// ================================================================ +// XLEN and related constants + +`ifdef RV32 + +typedef 32 XLEN; + +`elsif RV64 + +typedef 64 XLEN; + +`endif + +typedef TMul #(2, XLEN) XLEN_2; // Double-width for multiplications +typedef TSub #(XLEN, 2) XLEN_MINUS_2;// XLEN-2 for MTVEC base width + +Integer xlen = valueOf (XLEN); + +typedef enum { RV32, RV64 } RV_Version deriving (Eq, Bits); + +RV_Version rv_version = ( (valueOf (XLEN) == 32) ? RV32 : RV64 ); + +// ---------------- +// We're evolving the code to use WordXL/IntXL instead of Word/Word_S +// because of the widespread and inconsistent use of 'word' in the field. +// All existing uses of 'Word/Word_S' should migrate towards WordXL/IntXL. +// All new code should only use WordXL/IntXL +// Eventually, we should remove Word and Word_S + +typedef Bit #(XLEN) WordXL; // Raw (unsigned) register data +typedef Int #(XLEN) IntXL; // Signed register data + +typedef Bit #(XLEN) Word; // Raw (unsigned) register data // OLD: migrate to WordXL +typedef Int #(XLEN) Word_S; // Signed register data // OLD: migrate to IntXL + +typedef WordXL Addr; // addresses/pointers + +// ---------------- + +typedef 8 Bits_per_Byte; +typedef Bit #(Bits_per_Byte) Byte; + +typedef XLEN Bits_per_Word; // REDUNDANT to XLEN + +typedef TDiv #(Bits_per_Word, Bits_per_Byte) Bytes_per_Word; // OLD ('WordXL') +typedef TLog #(Bytes_per_Word) Bits_per_Byte_in_Word; // OLD ('WordXL') +typedef Bit #(Bits_per_Byte_in_Word) Byte_in_Word; // OLD ('WordXL') +typedef Vector #(Bytes_per_Word, Byte) Word_B; // OLD ('WordXL') + +typedef TDiv #(XLEN, Bits_per_Byte) Bytes_per_WordXL; +typedef TLog #(Bytes_per_WordXL) Bits_per_Byte_in_WordXL; +typedef Bit #(Bits_per_Byte_in_WordXL) Byte_in_WordXL; +typedef Vector #(Bytes_per_WordXL, Byte) WordXL_B; + +typedef XLEN Bits_per_Addr; +typedef TDiv #(Bits_per_Addr, Bits_per_Byte) Bytes_per_Addr; + +Integer bits_per_byte = valueOf (Bits_per_Byte); + +Integer bytes_per_wordxl = valueOf (Bytes_per_WordXL); +Integer bits_per_byte_in_wordxl = valueOf (Bits_per_Byte_in_WordXL); + +Integer addr_lo_byte_in_wordxl = 0; +Integer addr_hi_byte_in_wordxl = addr_lo_byte_in_wordxl + bits_per_byte_in_wordxl - 1; + +function Byte_in_Word fn_addr_to_byte_in_wordxl (Addr a); + return a [addr_hi_byte_in_wordxl : addr_lo_byte_in_wordxl ]; +endfunction + +// ================================================================ +// FLEN and related constants, for floating point data +// Can have one or two fpu sizes (should they be merged sooner than later ?). + +// Cannot define ISA_D unless ISA_F is also defined +// ISA_F - 32 bit FPU +// ISA_D - 64 bit FPU + +`ifdef ISA_F + +`ifdef ISA_D // ISA_D precludes ISA_F +typedef 64 FLEN; +Bool hasFpu32 = False; +Bool hasFpu64 = True; +`else +typedef 32 FLEN; +Bool hasFpu32 = True; +Bool hasFpu64 = False; +`endif + +typedef Bit #(FLEN) FP_Value; +typedef Bit #(FLEN) WordFL; // Floating point data + +typedef TDiv #(FLEN, Bits_per_Byte) Bytes_per_WordFL; +typedef TLog #(Bytes_per_WordFL) Bits_per_Byte_in_WordFL; +typedef Bit #(Bits_per_Byte_in_WordFL) Byte_in_WordFL; +typedef Vector #(Bytes_per_WordFL, Byte) WordFL_B; + +`endif + +`ifdef ISA_F +`ifdef ISA_D +`define ISA_F_AND_D +`endif +`endif + +// ================================================================ +// Tokens are used for signalling/synchronization, and have no payload + +typedef Bit #(0) Token; + +// ================================================================ +// Instruction fields + +// This is used for encoding Tandem Verifier traces +typedef enum { ISIZE16BIT, ISIZE32BIT + } ISize deriving (Bits, Eq, FShow); + +typedef Bit #(32) Instr; +typedef Bit #(7) Opcode; +typedef Bit #(5) RegName; // 32 registers, 0..31 +typedef 32 NumRegs; +Integer numRegs = valueOf (NumRegs); + +Instr illegal_instr = 32'h0000_0000; + +function Opcode instr_opcode (Instr x); return x [6:0]; endfunction + +function Bit #(2) instr_funct2 (Instr x); return x [26:25]; endfunction +function Bit #(3) instr_funct3 (Instr x); return x [14:12]; endfunction +function Bit #(5) instr_funct5 (Instr x); return x [31:27]; endfunction +function Bit #(7) instr_funct7 (Instr x); return x [31:25]; endfunction +function Bit #(10) instr_funct10 (Instr x); return { x [31:25], x [14:12] }; endfunction +function Bit #(2) instr_fmt (Instr x); return x [26:25]; endfunction + +function RegName instr_rd (Instr x); return x [11:7]; endfunction +function RegName instr_rs1 (Instr x); return x [19:15]; endfunction +function RegName instr_rs2 (Instr x); return x [24:20]; endfunction +function RegName instr_rs3 (Instr x); return x [31:27]; endfunction +function CSR_Addr instr_csr (Instr x); return unpack(x [31:20]); endfunction + +function Bit #(12) instr_I_imm12 (Instr x); + return x [31:20]; +endfunction + +function Bit #(12) instr_S_imm12 (Instr x); + return { x [31:25], x [11:7] }; +endfunction + +function Bit #(13) instr_SB_imm13 (Instr x); + return { x [31], x [7], x [30:25], x [11:8], 1'b0 }; +endfunction + +function Bit #(20) instr_U_imm20 (Instr x); + return x [31:12]; +endfunction + +function Bit #(21) instr_UJ_imm21 (Instr x); + return { x [31], x [19:12], x [20], x [30:21], 1'b0 }; +endfunction + +// For FENCE decode +function Bit #(4) instr_pred (Instr x); return x [27:24]; endfunction +function Bit #(4) instr_succ (Instr x); return x [23:20]; endfunction + +// For AMO decode +function Bit #(2) instr_aqrl (Instr x); return x [26:25]; endfunction + +// ---------------- +// Decoded instructions + +typedef struct { + Opcode opcode; + + RegName rd; + RegName rs1; + RegName rs2; + RegName rs3; + CSR_Addr csr; + + Bit #(3) funct3; + Bit #(5) funct5; + Bit #(7) funct7; + Bit #(10) funct10; + + Bit #(12) imm12_I; + Bit #(12) imm12_S; + Bit #(13) imm13_SB; + Bit #(20) imm20_U; + Bit #(21) imm21_UJ; + + Bit #(4) pred; + Bit #(4) succ; + + Bit #(2) aqrl; + } Decoded_Instr +deriving (FShow, Bits); + +function Decoded_Instr fv_decode (Instr instr); + return Decoded_Instr {opcode: instr_opcode (instr), + + rd: instr_rd (instr), + rs1: instr_rs1 (instr), + rs2: instr_rs2 (instr), + rs3: instr_rs3 (instr), + csr: instr_csr (instr), + + funct3: instr_funct3 (instr), + funct5: instr_funct5 (instr), + funct7: instr_funct7 (instr), + funct10: instr_funct10 (instr), + + imm12_I: instr_I_imm12 (instr), + imm12_S: instr_S_imm12 (instr), + imm13_SB: instr_SB_imm13 (instr), + imm20_U: instr_U_imm20 (instr), + imm21_UJ: instr_UJ_imm21 (instr), + + pred: instr_pred (instr), + succ: instr_succ (instr), + + aqrl: instr_aqrl (instr) + }; +endfunction + +// Decodes if we need to read the GPR register file. This step becomes necessary +// on integrating the FPU as certain instruction now do not require the GPR +// anymore +// IsFP, GPRRd +// function Tuple2# (Bool, Bool) fv_decode_gpr_read (Decoded_Instr di); +// `ifdef ISA_F +// // FP_LD and FP_ST are treated as non-FP operation as far as GPR reads +// // are concerned +// if (di.opcode != op_FP) begin +// return (tuple2 (False, True)); // Regular op with GPR read +// end +// +// // This is an FP operation. The following f5 values would work for F and +// // D subsets +// else begin +// if ( (di.funct5 == f5_FCVT_F_X) +// || (di.funct5 == f5_FMV_W_X)) +// return (tuple2 (True, True)); // FP op with GPR read +// else +// return (tuple2 (True, False));// FP op with no GPR read +// end +// `else +// return (tuple2 (False, True)); // Regular op with GPR read +// `endif +// endfunction + +// ================================================================ +// Instruction constructors +// Used in 'C' decode to construct equivalent 32-bit instructions + +// R-type +function Instr mkInstr_R_type (Bit #(7) funct7, RegName rs2, RegName rs1, Bit #(3) funct3, RegName rd, Bit #(7) opcode); + let instr = { funct7, rs2, rs1, funct3, rd, opcode }; + return instr; +endfunction + +// I-type +function Instr mkInstr_I_type (Bit #(12) imm12, RegName rs1, Bit #(3) funct3, RegName rd, Bit #(7) opcode); + let instr = { imm12, rs1, funct3, rd, opcode }; + return instr; +endfunction + +// S-type + +function Instr mkInstr_S_type (Bit #(12) imm12, RegName rs2, RegName rs1, Bit #(3) funct3, Bit #(7) opcode); + let instr = { imm12 [11:5], rs2, rs1, funct3, imm12 [4:0], opcode }; + return instr; +endfunction + +// B-type +function Instr mkInstr_B_type (Bit #(13) imm13, RegName rs2, RegName rs1, Bit #(3) funct3, Bit #(7) opcode); + let instr = { imm13 [12], imm13 [10:5], rs2, rs1, funct3, imm13 [4:1], imm13 [11], opcode }; + return instr; +endfunction + +// U-type +function Instr mkInstr_U_type (Bit #(20) imm20, RegName rd, Bit #(7) opcode); + let instr = { imm20, rd, opcode }; + return instr; +endfunction + +// J-type +function Instr mkInstr_J_type (Bit #(21) imm21, RegName rd, Bit #(7) opcode); + let instr = { imm21 [20], imm21 [10:1], imm21 [11], imm21 [19:12], rd, opcode }; + return instr; +endfunction + +// ================================================================ +// Symbolic register names + +RegName x0 = 0; RegName x1 = 1; RegName x2 = 2; RegName x3 = 3; +RegName x4 = 4; RegName x5 = 5; RegName x6 = 6; RegName x7 = 7; +RegName x8 = 8; RegName x9 = 9; RegName x10 = 10; RegName x11 = 11; +RegName x12 = 12; RegName x13 = 13; RegName x14 = 14; RegName x15 = 15; +RegName x16 = 16; RegName x17 = 17; RegName x18 = 18; RegName x19 = 19; +RegName x20 = 20; RegName x21 = 21; RegName x22 = 22; RegName x23 = 23; +RegName x24 = 24; RegName x25 = 25; RegName x26 = 26; RegName x27 = 27; +RegName x28 = 28; RegName x29 = 29; RegName x30 = 30; RegName x31 = 31; + +// Register names used in calling convention + +RegName reg_zero = 0; +RegName reg_ra = 1; +RegName reg_sp = 2; +RegName reg_gp = 3; +RegName reg_tp = 4; + +RegName reg_t0 = 5; RegName reg_t1 = 6; RegName reg_t2 = 7; +RegName reg_fp = 8; +RegName reg_s0 = 8; RegName reg_s1 = 9; + +RegName reg_a0 = 10; RegName reg_a1 = 11; +RegName reg_v0 = 10; RegName reg_v1 = 11; + +RegName reg_a2 = 12; RegName reg_a3 = 13; RegName reg_a4 = 14; RegName reg_a5 = 15; +RegName reg_a6 = 16; RegName reg_a7 = 17; + +RegName reg_s2 = 18; RegName reg_s3 = 19; RegName reg_s4 = 20; RegName reg_s5 = 21; +RegName reg_s6 = 22; RegName reg_s7 = 23; RegName reg_s8 = 24; RegName reg_s9 = 25; +RegName reg_s10 = 26; RegName reg_s11 = 27; + +RegName reg_t3 = 28; RegName reg_t4 = 29; RegName reg_t5 = 30; RegName reg_t6 = 31; + +// ================================================================ +// Data sizes for LOAD/STORE + +typedef enum {BITS8, + BITS16, + BITS32, + BITS64 // Even in RV32, to allow for Double (floating point) + } Mem_Data_Size +deriving (Eq, Bits, FShow); + +// ================================================================ +// LOAD/STORE instructions + +typedef Bit #(2) MemReqSize; + +MemReqSize f3_SIZE_B = 2'b00; +MemReqSize f3_SIZE_H = 2'b01; +MemReqSize f3_SIZE_W = 2'b10; +MemReqSize f3_SIZE_D = 2'b11; + +// ---------------- +// Load instructions + +Opcode op_LOAD = 7'b00_000_11; + +Bit #(3) f3_LB = 3'b000; +Bit #(3) f3_LH = 3'b001; +Bit #(3) f3_LW = 3'b010; +Bit #(3) f3_LD = 3'b011; +Bit #(3) f3_LBU = 3'b100; +Bit #(3) f3_LHU = 3'b101; +Bit #(3) f3_LWU = 3'b110; + +// ---------------- +// Store instructions + +Opcode op_STORE = 7'b01_000_11; + +Bit #(3) f3_SB = 3'b000; +Bit #(3) f3_SH = 3'b001; +Bit #(3) f3_SW = 3'b010; +Bit #(3) f3_SD = 3'b011; + +// ================================================================ +// Memory Model + +Opcode op_MISC_MEM = 7'b00_011_11; + +Bit #(3) f3_FENCE = 3'b000; +Bit #(3) f3_FENCE_I = 3'b001; + +typedef struct { + // Predecessors + Bool pi; // IO reads + Bool po; // IO writes + Bool pr; // Mem reads + Bool pw; // Mem writes + // Successors + Bool si; + Bool so; + Bool sr; + Bool sw; + } Fence_Ordering +deriving (FShow); + +instance Bits #(Fence_Ordering, 8); + function Bit #(8) pack (Fence_Ordering fo); + return {pack (fo.pi), + pack (fo.po), + pack (fo.pr), + pack (fo.pw), + pack (fo.si), + pack (fo.so), + pack (fo.sr), + pack (fo.sw) }; + endfunction + function Fence_Ordering unpack (Bit #(8) b8); + return Fence_Ordering {pi: unpack (b8 [7]), + po: unpack (b8 [6]), + pr: unpack (b8 [5]), + pw: unpack (b8 [4]), + si: unpack (b8 [3]), + so: unpack (b8 [2]), + sr: unpack (b8 [1]), + sw: unpack (b8 [0]) }; + endfunction +endinstance + +// ================================================================ +// Atomic Memory Operation Instructions + +Opcode op_AMO = 7'b01_011_11; + +// NOTE: bit [4] for aq, and [3] for rl, are here set to zero + +Bit #(3) f3_AMO_W = 3'b010; +Bit #(3) f3_AMO_D = 3'b011; + +Bit #(5) f5_AMO_LR = 5'b00010; +Bit #(5) f5_AMO_SC = 5'b00011; +Bit #(5) f5_AMO_ADD = 5'b00000; +Bit #(5) f5_AMO_SWAP = 5'b00001; +Bit #(5) f5_AMO_XOR = 5'b00100; +Bit #(5) f5_AMO_AND = 5'b01100; +Bit #(5) f5_AMO_OR = 5'b01000; +Bit #(5) f5_AMO_MIN = 5'b10000; +Bit #(5) f5_AMO_MAX = 5'b10100; +Bit #(5) f5_AMO_MINU = 5'b11000; +Bit #(5) f5_AMO_MAXU = 5'b11100; + +Bit #(10) f10_LR_W = 10'b00010_00_010; +Bit #(10) f10_SC_W = 10'b00011_00_010; +Bit #(10) f10_AMOADD_W = 10'b00000_00_010; +Bit #(10) f10_AMOSWAP_W = 10'b00001_00_010; +Bit #(10) f10_AMOXOR_W = 10'b00100_00_010; +Bit #(10) f10_AMOAND_W = 10'b01100_00_010; +Bit #(10) f10_AMOOR_W = 10'b01000_00_010; +Bit #(10) f10_AMOMIN_W = 10'b10000_00_010; +Bit #(10) f10_AMOMAX_W = 10'b10100_00_010; +Bit #(10) f10_AMOMINU_W = 10'b11000_00_010; +Bit #(10) f10_AMOMAXU_W = 10'b11100_00_010; + +Bit #(10) f10_LR_D = 10'b00010_00_011; +Bit #(10) f10_SC_D = 10'b00011_00_011; +Bit #(10) f10_AMOADD_D = 10'b00000_00_011; +Bit #(10) f10_AMOSWAP_D = 10'b00001_00_011; +Bit #(10) f10_AMOXOR_D = 10'b00100_00_011; +Bit #(10) f10_AMOAND_D = 10'b01100_00_011; +Bit #(10) f10_AMOOR_D = 10'b01000_00_011; +Bit #(10) f10_AMOMIN_D = 10'b10000_00_011; +Bit #(10) f10_AMOMAX_D = 10'b10100_00_011; +Bit #(10) f10_AMOMINU_D = 10'b11000_00_011; +Bit #(10) f10_AMOMAXU_D = 10'b11100_00_011; + +// ================================================================ +// Integer Register-Immediate Instructions + +Opcode op_OP_IMM = 7'b00_100_11; + +Bit #(3) f3_ADDI = 3'b000; +Bit #(3) f3_SLLI = 3'b001; +Bit #(3) f3_SLTI = 3'b010; +Bit #(3) f3_SLTIU = 3'b011; +Bit #(3) f3_XORI = 3'b100; +Bit #(3) f3_SRxI = 3'b101; Bit #(3) f3_SRLI = 3'b101; Bit #(3) f3_SRAI = 3'b101; +Bit #(3) f3_ORI = 3'b110; +Bit #(3) f3_ANDI = 3'b111; + +// ================================================================ +// Integer Register-Immediate 32b Instructions for RV64 + +Opcode op_OP_IMM_32 = 7'b00_110_11; + +Bit #(3) f3_ADDIW = 3'b000; +Bit #(3) f3_SLLIW = 3'b001; +Bit #(3) f3_SRxIW = 3'b101; Bit #(3) f3_SRLIW = 3'b101; Bit #(3) f3_SRAIW = 3'b101; + +// OP_IMM.SLLI/SRLI/SRAI for RV32 +Bit #(7) msbs7_SLLI = 7'b_000_0000; +Bit #(7) msbs7_SRLI = 7'b_000_0000; +Bit #(7) msbs7_SRAI = 7'b_010_0000; + +// OP_IMM.SLLI/SRLI/SRAI for RV64 +Bit #(6) msbs6_SLLI = 6'b_00_0000; +Bit #(6) msbs6_SRLI = 6'b_00_0000; +Bit #(6) msbs6_SRAI = 6'b_01_0000; + +// ================================================================ +// Integer Register-Register Instructions + +Opcode op_OP = 7'b01_100_11; + +Bit #(10) f10_ADD = 10'b000_0000_000; +Bit #(10) f10_SUB = 10'b010_0000_000; +Bit #(10) f10_SLL = 10'b000_0000_001; +Bit #(10) f10_SLT = 10'b000_0000_010; +Bit #(10) f10_SLTU = 10'b000_0000_011; +Bit #(10) f10_XOR = 10'b000_0000_100; +Bit #(10) f10_SRL = 10'b000_0000_101; +Bit #(10) f10_SRA = 10'b010_0000_101; +Bit #(10) f10_OR = 10'b000_0000_110; +Bit #(10) f10_AND = 10'b000_0000_111; + +Bit #(7) funct7_ADD = 7'b_000_0000; Bit #(3) funct3_ADD = 3'b_000; +Bit #(7) funct7_SUB = 7'b_010_0000; Bit #(3) funct3_SUB = 3'b_000; +Bit #(7) funct7_XOR = 7'b_000_0000; Bit #(3) funct3_XOR = 3'b_100; +Bit #(7) funct7_OR = 7'b_000_0000; Bit #(3) funct3_OR = 3'b_110; +Bit #(7) funct7_AND = 7'b_000_0000; Bit #(3) funct3_AND = 3'b_111; + +// ---------------- +// MUL/DIV/REM family + +Bit #(7) f7_MUL_DIV_REM = 7'b000_0001; + +function Bool f7_is_OP_MUL_DIV_REM (Bit #(7) f7); + return (f7 == f7_MUL_DIV_REM); +endfunction + +Bit #(3) f3_MUL = 3'b000; +Bit #(3) f3_MULH = 3'b001; +Bit #(3) f3_MULHSU = 3'b010; +Bit #(3) f3_MULHU = 3'b011; +Bit #(3) f3_DIV = 3'b100; +Bit #(3) f3_DIVU = 3'b101; +Bit #(3) f3_REM = 3'b110; +Bit #(3) f3_REMU = 3'b111; + +Bit #(10) f10_MUL = 10'b000_0001_000; +Bit #(10) f10_MULH = 10'b000_0001_001; +Bit #(10) f10_MULHSU = 10'b000_0001_010; +Bit #(10) f10_MULHU = 10'b000_0001_011; +Bit #(10) f10_DIV = 10'b000_0001_100; +Bit #(10) f10_DIVU = 10'b000_0001_101; +Bit #(10) f10_REM = 10'b000_0001_110; +Bit #(10) f10_REMU = 10'b000_0001_111; + +// ================================================================ +// Integer Register-Register 32b Instructions for RV64 + +Opcode op_OP_32 = 7'b01_110_11; + +Bit #(10) f10_ADDW = 10'b000_0000_000; +Bit #(10) f10_SUBW = 10'b010_0000_000; +Bit #(10) f10_SLLW = 10'b000_0000_001; +Bit #(10) f10_SRLW = 10'b000_0000_101; +Bit #(10) f10_SRAW = 10'b010_0000_101; + +Bit #(7) funct7_ADDW = 7'b_000_0000; Bit #(3) funct3_ADDW = 3'b_000; +Bit #(7) funct7_SUBW = 7'b_010_0000; Bit #(3) funct3_SUBW = 3'b_000; + +Bit #(10) f10_MULW = 10'b000_0001_000; +Bit #(10) f10_DIVW = 10'b000_0001_100; +Bit #(10) f10_DIVUW = 10'b000_0001_101; +Bit #(10) f10_REMW = 10'b000_0001_110; +Bit #(10) f10_REMUW = 10'b000_0001_111; + +function Bool is_OP_32_MUL_DIV_REM (Bit #(10) f10); + return ( (f10 == f10_MULW) + || (f10 == f10_DIVW) + || (f10 == f10_DIVUW) + || (f10 == f10_REMW) + || (f10 == f10_REMUW)); +endfunction + +// ================================================================ +// LUI, AUIPC + +Opcode op_LUI = 7'b01_101_11; +Opcode op_AUIPC = 7'b00_101_11; + +// ================================================================ +// Control transfer + +Opcode op_BRANCH = 7'b11_000_11; + +Bit #(3) f3_BEQ = 3'b000; +Bit #(3) f3_BNE = 3'b001; +Bit #(3) f3_BLT = 3'b100; +Bit #(3) f3_BGE = 3'b101; +Bit #(3) f3_BLTU = 3'b110; +Bit #(3) f3_BGEU = 3'b111; + +Opcode op_JAL = 7'b11_011_11; + +Opcode op_JALR = 7'b11_001_11; +Bit #(3) funct3_JALR = 3'b000; + +`ifdef ISA_F +// ================================================================ +// Floating Point Instructions +// TODO: these are implementation choices; should not be in ISA_Decls +// Enumeration of floating point opcodes for decode within the FPU +typedef enum { + FPAdd + , FPSub + , FPMul + , FPDiv + , FPSqrt + , FPMAdd + , FPMSub + , FPNMAdd + , FPNMSub } FpuOp deriving (Bits, Eq, FShow); + +// Enumeration of rounding modes +typedef enum { + Rnd_Nearest_Even + , Rnd_Zero + , Rnd_Minus_Inf + , Rnd_Plus_Inf + , Rnd_Nearest_Max_Mag +} RoundMode deriving (Bits, Eq, FShow); + +// Funct2 encoding +Bit #(2) f2_S = 2'b00; +Bit #(2) f2_D = 2'b01; +Bit #(2) f2_Q = 2'b11; + +// Floating point Load-Store +Opcode op_LOAD_FP = 7'b_00_001_11; +Opcode op_STORE_FP = 7'b_01_001_11; +Bit #(3) f3_FSW = 3'b010; +Bit #(3) f3_FSD = 3'b011; +Bit #(3) f3_FLW = 3'b010; +Bit #(3) f3_FLD = 3'b011; + +// Fused FP Multiply Add/Sub instructions +Opcode op_FMADD = 7'b10_00_011; +Opcode op_FMSUB = 7'b10_00_111; +Opcode op_FNMSUB = 7'b10_01_011; +Opcode op_FNMADD = 7'b10_01_111; + +// All other FP intructions +Opcode op_FP = 7'b10_10_011; + +Bit #(7) f7_FADD_D = 7'h1 ; +Bit #(7) f7_FSUB_D = 7'h5 ; +Bit #(7) f7_FMUL_D = 7'h9 ; +Bit #(7) f7_FDIV_D = 7'hD ; +Bit #(7) f7_FSQRT_D = 7'h2D; +Bit #(7) f7_FCMP_D = 7'h51; +Bit #(7) f7_FMIN_D = 7'h15; +Bit #(7) f7_FMAX_D = 7'h15; +Bit #(7) f7_FSGNJ_D = 7'h11; + +Bit #(7) f7_FADD_S = 7'h0 ; +Bit #(7) f7_FSUB_S = 7'h4 ; +Bit #(7) f7_FMUL_S = 7'h8 ; +Bit #(7) f7_FDIV_S = 7'hC ; +Bit #(7) f7_FSQRT_S = 7'h2C; +Bit #(7) f7_FCMP_S = 7'h50; +Bit #(7) f7_FMIN_S = 7'h14; +Bit #(7) f7_FMAX_S = 7'h14; +Bit #(7) f7_FSGNJ_S = 7'h10; + +Bit #(7) f7_FCVT_W_S = 7'h60; +Bit #(7) f7_FCVT_WU_S = 7'h60; +Bit #(7) f7_FCVT_S_W = 7'h68; +Bit #(7) f7_FCVT_S_WU = 7'h68; + +Bit #(7) f7_FCVT_L_S = 7'h60; +Bit #(7) f7_FCVT_LU_S = 7'h60; +Bit #(7) f7_FCVT_S_L = 7'h68; +Bit #(7) f7_FCVT_S_LU = 7'h68; + +Bit #(7) f7_FCVT_S_D = 7'h20; +Bit #(7) f7_FCVT_D_S = 7'h21; +Bit #(7) f7_FCVT_W_D = 7'h61; +Bit #(7) f7_FCVT_WU_D = 7'h61; +Bit #(7) f7_FCVT_D_W = 7'h69; +Bit #(7) f7_FCVT_D_WU = 7'h69; + +Bit #(7) f7_FCVT_L_D = 7'h61; +Bit #(7) f7_FCVT_LU_D = 7'h61; +Bit #(7) f7_FCVT_D_L = 7'h69; +Bit #(7) f7_FCVT_D_LU = 7'h69; + +Bit #(7) f7_FMV_X_D = 7'h71; +Bit #(7) f7_FMV_D_X = 7'h79; +Bit #(7) f7_FCLASS_D = 7'h71; +Bit #(7) f7_FMV_X_W = 7'h70; +Bit #(7) f7_FMV_W_X = 7'h78; +Bit #(7) f7_FCLASS_S = 7'h70; + +// fv_is_rd_in_GPR: Checks if the request generates a result which +// should be written into the GPR +function Bool fv_is_rd_in_GPR (Bit #(7) funct7, RegName rs2); + +`ifdef ISA_D + let is_FCVT_W_D = (funct7 == f7_FCVT_W_D) + && (rs2 == 0); + let is_FCVT_WU_D = (funct7 == f7_FCVT_WU_D) + && (rs2 == 1); +`ifdef RV64 + let is_FCVT_L_D = (funct7 == f7_FCVT_L_D) + && (rs2 == 2); + let is_FCVT_LU_D = (funct7 == f7_FCVT_LU_D) + && (rs2 == 3); + +`endif + // FCLASS.D also maps to this -- both write to GPR + let is_FMV_X_D = (funct7 == f7_FMV_X_D); + // FEQ.D, FLE.D, FLT.D map to this + let is_FCMP_D = (funct7 == f7_FCMP_D); +`endif + + let is_FCVT_W_S = (funct7 == f7_FCVT_W_S) + && (rs2 == 0); + let is_FCVT_WU_S = (funct7 == f7_FCVT_WU_S) + && (rs2 == 1); +`ifdef RV64 + let is_FCVT_L_S = (funct7 == f7_FCVT_L_S) + && (rs2 == 2); + let is_FCVT_LU_S = (funct7 == f7_FCVT_LU_S) + && (rs2 == 3); +`endif + + // FCLASS.S also maps to this -- both write to GPR + let is_FMV_X_W = (funct7 == f7_FMV_X_W); + + // FEQ.S, FLE.S, FLT.S map to this + let is_FCMP_S = (funct7 == f7_FCMP_S); + + return ( + False +`ifdef ISA_D + || is_FCVT_W_D + || is_FCVT_WU_D +`ifdef RV64 + || is_FCVT_L_D + || is_FCVT_LU_D +`endif + || is_FMV_X_D + || is_FCMP_D +`endif +`ifdef RV64 + || is_FCVT_L_S + || is_FCVT_LU_S +`endif + || is_FCVT_W_S + || is_FCVT_WU_S + || is_FMV_X_W + || is_FCMP_S + ); +endfunction + +// Check if a rounding mode value in the FCSR.FRM is valid +function Bool fv_fcsr_frm_valid (Bit #(3) frm); + return ( (frm != 3'b101) + && (frm != 3'b110) + && (frm != 3'b111) + ); +endfunction + +// Check if a rounding mode value in the instr is valid +function Bool fv_inst_frm_valid (Bit #(3) frm); + return ( (frm != 3'b101) + && (frm != 3'b110) + ); +endfunction + +// fv_rounding_mode_check +// Returns the correct rounding mode considering the values in the +// FCSR and the instruction and checks legality +function Tuple2# (Bit #(3), Bool) fv_rmode_check ( + Bit #(3) inst_frm, Bit #(3) fcsr_frm); + let rm = (inst_frm == 3'h7) ? fcsr_frm : inst_frm; + let rm_is_legal = (inst_frm == 3'h7) ? fv_fcsr_frm_valid (fcsr_frm) + : fv_inst_frm_valid (inst_frm); + return (tuple2 (rm, rm_is_legal)); +endfunction + +// A D instruction requires misa.f to be set as well as misa.d +function Bool fv_is_fp_instr_legal ( + Bit #(7) f7, Bit #(3) rm, RegName rs2, Opcode fopc); + Bit #(2) f2 = f7[1:0]; + Bool is_legal = True; + if ( (fopc == op_FMADD ) + || (fopc == op_FMSUB ) + || (fopc == op_FNMADD) + || (fopc == op_FNMSUB)) +`ifdef ISA_D + return ((f2 == f2_S) || (f2 == f2_D)); // Both SP and DP are legal +`else + return (f2 == f2_S); // Only SP is legal +`endif + else + if ( (f7 == f7_FADD_S) + || (f7 == f7_FSUB_S) + || (f7 == f7_FMUL_S) +`ifdef ISA_FD_DIV + || (f7 == f7_FDIV_S) + || (f7 == f7_FSQRT_S) +`endif + || ((f7 == f7_FSGNJ_S) && ( rm == 0)) + || ((f7 == f7_FSGNJ_S) && ( rm == 1)) + || ((f7 == f7_FSGNJ_S) && ( rm == 2)) + || ((f7 == f7_FCVT_W_S) && (rs2 == 0)) + || ((f7 == f7_FCVT_WU_S)&& (rs2 == 1)) +`ifdef RV64 + || ((f7 == f7_FCVT_L_S) && (rs2 == 2)) + || ((f7 == f7_FCVT_LU_S)&& (rs2 == 3)) +`endif + || ((f7 == f7_FCVT_S_W) && (rs2 == 0)) + || ((f7 == f7_FCVT_S_WU)&& (rs2 == 1)) +`ifdef RV64 + || ((f7 == f7_FCVT_S_L) && (rs2 == 2)) + || ((f7 == f7_FCVT_S_LU)&& (rs2 == 3)) +`endif + || ((f7 == f7_FMIN_S) && ( rm == 0)) + || ((f7 == f7_FMAX_S) && ( rm == 1)) + || ((f7 == f7_FCMP_S) && ( rm == 0)) + || ((f7 == f7_FCMP_S) && ( rm == 1)) + || ((f7 == f7_FCMP_S) && ( rm == 2)) + || ((f7 == f7_FMV_X_W) && ( rm == 0)) + || ((f7 == f7_FMV_W_X) && ( rm == 0)) + || ((f7 == f7_FCLASS_S) && ( rm == 1)) +`ifdef ISA_D + || (f7 == f7_FADD_D) + || (f7 == f7_FSUB_D) + || (f7 == f7_FMUL_D) +`ifdef ISA_FD_DIV + || (f7 == f7_FDIV_D) + || (f7 == f7_FSQRT_D) +`endif + || ((f7 == f7_FSGNJ_D) && ( rm == 0)) + || ((f7 == f7_FSGNJ_D) && ( rm == 1)) + || ((f7 == f7_FSGNJ_D) && ( rm == 2)) + || ((f7 == f7_FCVT_W_D) && (rs2 == 0)) + || ((f7 == f7_FCVT_WU_D)&& (rs2 == 1)) +`ifdef RV64 + || ((f7 == f7_FCVT_L_D) && (rs2 == 2)) + || ((f7 == f7_FCVT_LU_D)&& (rs2 == 3)) +`endif + || ((f7 == f7_FCVT_D_W) && (rs2 == 0)) + || ((f7 == f7_FCVT_D_WU)&& (rs2 == 1)) +`ifdef RV64 + || ((f7 == f7_FCVT_D_L) && (rs2 == 2)) + || ((f7 == f7_FCVT_D_LU)&& (rs2 == 3)) +`endif + || ((f7 == f7_FCVT_D_S) && (rs2 == 0)) + || ((f7 == f7_FCVT_S_D) && (rs2 == 1)) + || ((f7 == f7_FMIN_D) && ( rm == 0)) + || ((f7 == f7_FMAX_D) && ( rm == 1)) + || ((f7 == f7_FCMP_D) && ( rm == 0)) + || ((f7 == f7_FCMP_D) && ( rm == 1)) + || ((f7 == f7_FCMP_D) && ( rm == 2)) + || ((f7 == f7_FMV_X_D) && ( rm == 0)) + || ((f7 == f7_FMV_D_X) && ( rm == 0)) + || ((f7 == f7_FCLASS_D) && ( rm == 1)) +`endif + ) return True; + else return False; +endfunction + +// Returns True if the first operand (val1) should be taken from the GPR +// instead of the FPR for a FP opcode +function Bool fv_fp_val1_from_gpr (Opcode opcode, Bit#(7) f7, RegName rs2); + return ( + (opcode == op_FP) + && ( False +`ifdef ISA_D + || ((f7 == f7_FCVT_D_W) && (rs2 == 0)) + || ((f7 == f7_FCVT_D_WU) && (rs2 == 1)) +`ifdef RV64 + || ((f7 == f7_FCVT_D_L) && (rs2 == 2)) + || ((f7 == f7_FCVT_D_LU) && (rs2 == 3)) +`endif + || ((f7 == f7_FMV_D_X)) +`endif + || ((f7 == f7_FCVT_S_W) && (rs2 == 0)) + || ((f7 == f7_FCVT_S_WU) && (rs2 == 1)) +`ifdef RV64 + || ((f7 == f7_FCVT_S_L) && (rs2 == 2)) + || ((f7 == f7_FCVT_S_LU) && (rs2 == 3)) +`endif + || ((f7 == f7_FMV_W_X)) + ) + ); +endfunction +`endif + +// ================================================================ +// System Instructions +Opcode op_SYSTEM = 7'b11_100_11; + +// sub-opcodes: (in funct3 field) +Bit #(3) f3_PRIV = 3'b000; +Bit #(3) f3_CSRRW = 3'b001; +Bit #(3) f3_CSRRS = 3'b010; +Bit #(3) f3_CSRRC = 3'b011; +Bit #(3) f3_SYSTEM_ILLEGAL = 3'b100; +Bit #(3) f3_CSRRWI = 3'b101; +Bit #(3) f3_CSRRSI = 3'b110; +Bit #(3) f3_CSRRCI = 3'b111; + +// sub-sub-opcodes for f3_PRIV + +Bit #(12) f12_ECALL = 12'b_0000_0000_0000; +Bit #(12) f12_EBREAK = 12'b_0000_0000_0001; + +Bit #(12) f12_URET = 12'b_0000_0000_0010; +Bit #(12) f12_SRET = 12'b_0001_0000_0010; +Bit #(12) f12_HRET = 12'b_0010_0000_0010; +Bit #(12) f12_MRET = 12'b_0011_0000_0010; +Bit #(12) f12_WFI = 12'b_0001_0000_0101; + +// v1.10 sub-sub-opcode for SFENCE_VMA +Bit #(7) f7_SFENCE_VMA = 7'b_0001_001; + +Instr break_instr = { f12_EBREAK, 5'b00000, 3'b000, 5'b00000, op_SYSTEM }; + +function Bool fn_instr_is_csrrx (Instr instr); + let decoded_instr = fv_decode (instr); + let opcode = decoded_instr.opcode; + let funct3 = decoded_instr.funct3; + let csr = decoded_instr.csr; + return ((opcode == op_SYSTEM) && f3_is_CSRR_any (funct3)); +endfunction + +function Bool f3_is_CSRR_any (Bit #(3) f3); + return (f3_is_CSRR_W (f3) || f3_is_CSRR_S_or_C (f3)); +endfunction + +function Bool f3_is_CSRR_W (Bit #(3) f3); + return ((f3 == f3_CSRRW) || (f3 == f3_CSRRWI)); +endfunction + +function Bool f3_is_CSRR_S_or_C (Bit #(3) f3); + return ((f3 == f3_CSRRS) || (f3 == f3_CSRRSI) || + (f3 == f3_CSRRC) || (f3 == f3_CSRRCI)); +endfunction + +// ================================================================ +// Privilege Modes + +typedef 4 Num_Priv_Modes; + +typedef Bit #(2) Priv_Mode; + +Priv_Mode u_Priv_Mode = 2'b00; +Priv_Mode s_Priv_Mode = 2'b01; +Priv_Mode reserved_Priv_Mode = 2'b10; +Priv_Mode m_Priv_Mode = 2'b11; + +function Fmt fshow_Priv_Mode (Priv_Mode pm); + return case (pm) + u_Priv_Mode: $format ("U"); + s_Priv_Mode: $format ("S"); + m_Priv_Mode: $format ("M"); + default: $format ("RESERVED"); + endcase; +endfunction + +// ================================================================ +// Control/Status registers + +typedef Bit #(12) CSR_Addr; + +function Bool fn_csr_addr_can_write (CSR_Addr csr_addr); + return (csr_addr [11:10] != 2'b11); +endfunction + +function Bool fn_csr_addr_priv_ok (CSR_Addr csr_addr, Priv_Mode priv_mode); + return (priv_mode >= csr_addr [9:8]); +endfunction + +// ---------------- +// User-level CSR addresses + +CSR_Addr csr_addr_ustatus = 12'h000; // User status +CSR_Addr csr_addr_uie = 12'h004; // User interrupt-enable +CSR_Addr csr_addr_utvec = 12'h005; // User trap handler base address + +CSR_Addr csr_addr_uscratch = 12'h040; // Scratch register for trap handlers +CSR_Addr csr_addr_uepc = 12'h041; // User exception program counter +CSR_Addr csr_addr_ucause = 12'h042; // User trap cause +CSR_Addr csr_addr_utval = 12'h043; // User bad address or instruction +CSR_Addr csr_addr_uip = 12'h044; // User interrupt pending + +CSR_Addr csr_addr_fflags = 12'h001; // Floating-point accrued exceptions +CSR_Addr csr_addr_frm = 12'h002; // Floating-point Dynamic Rounding Mode +CSR_Addr csr_addr_fcsr = 12'h003; // Floating-point Control and Status Register (frm + fflags) + +CSR_Addr csr_addr_cycle = 12'hC00; // Cycle counter for RDCYCLE +CSR_Addr csr_addr_time = 12'hC01; // Timer for RDTIME +CSR_Addr csr_addr_instret = 12'hC02; // Instructions retired counter for RDINSTRET + +CSR_Addr csr_addr_hpmcounter3 = 12'hC03; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter4 = 12'hC04; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter5 = 12'hC05; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter6 = 12'hC06; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter7 = 12'hC07; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter8 = 12'hC08; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter9 = 12'hC09; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter10 = 12'hC0A; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter11 = 12'hC0B; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter12 = 12'hC0C; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter13 = 12'hC0D; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter14 = 12'hC0E; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter15 = 12'hC0F; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter16 = 12'hC10; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter17 = 12'hC11; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter18 = 12'hC12; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter19 = 12'hC13; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter20 = 12'hC14; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter21 = 12'hC15; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter22 = 12'hC16; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter23 = 12'hC17; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter24 = 12'hC18; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter25 = 12'hC19; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter26 = 12'hC1A; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter27 = 12'hC1B; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter28 = 12'hC1C; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter29 = 12'hC1D; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter30 = 12'hC1E; // Performance-monitoring counter +CSR_Addr csr_addr_hpmcounter31 = 12'hC1F; // Performance-monitoring counter + +CSR_Addr csr_addr_cycleh = 12'hC80; // Upper 32 bits of csr_cycle (RV32I only) +CSR_Addr csr_addr_timeh = 12'hC81; // Upper 32 bits of csr_time (RV32I only) +CSR_Addr csr_addr_instreth = 12'hC82; // Upper 32 bits of csr_instret (RV32I only) + +CSR_Addr csr_addr_hpmcounter3h = 12'hC83; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter4h = 12'hC84; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter5h = 12'hC85; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter6h = 12'hC86; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter7h = 12'hC87; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter8h = 12'hC88; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter9h = 12'hC89; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter10h = 12'hC8A; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter11h = 12'hC8B; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter12h = 12'hC8C; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter13h = 12'hC8D; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter14h = 12'hC8E; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter15h = 12'hC8F; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter16h = 12'hC90; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter17h = 12'hC91; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter18h = 12'hC92; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter19h = 12'hC93; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter20h = 12'hC94; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter21h = 12'hC95; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter22h = 12'hC96; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter23h = 12'hC97; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter24h = 12'hC98; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter25h = 12'hC99; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter26h = 12'hC9A; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter27h = 12'hC9B; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter28h = 12'hC9C; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter29h = 12'hC9D; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter30h = 12'hC9E; // Upper 32 bits of performance-monitoring counter +CSR_Addr csr_addr_hpmcounter31h = 12'hC9F; // Upper 32 bits of performance-monitoring counter + +// Information from the CSR on a new trap. +typedef struct { + Addr pc; + WordXL mstatus; + WordXL mcause; + Priv_Mode priv; +} Trap_Info deriving (Bits, Eq, FShow); + +// ================================================================ +// 'C' Extension ("compressed" instructions) + +`include "ISA_Decls_C.bsv" + +// ================================================================ +// Supervisor-Level ISA defs + +`include "ISA_Decls_Priv_S.bsv" + +// ================================================================ +// Hypervisor-Level ISA defs + +// `include "ISA_Decls_Priv_H.bsv" + +// ================================================================ +// Machine-Level ISA defs + +`include "ISA_Decls_Priv_M.bsv" + +// ================================================================ + +endpackage diff --git a/src_Core/ISA/ISA_Decls_C.bsv b/src_Core/ISA/ISA_Decls_C.bsv new file mode 100644 index 0000000..3b05822 --- /dev/null +++ b/src_Core/ISA/ISA_Decls_C.bsv @@ -0,0 +1,179 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +// ================================================================ +// This is an 'include' file, not a separate BSV package +// +// Contains RISC-V ISA defs for the 'C' ("compressed") extension +// i.e., 16-bit instructions +// +// ================================================================ +// Instruction field encodings + +typedef Bit #(16) Instr_C; + +Bit #(2) opcode_C0 = 2'b00; +Bit #(2) opcode_C1 = 2'b01; +Bit #(2) opcode_C2 = 2'b10; + +Bit #(3) funct3_C_LWSP = 3'b_010; +Bit #(3) funct3_C_LDSP = 3'b_011; // RV64 and RV128 +Bit #(3) funct3_C_LQSP = 3'b_001; // RV128 +Bit #(3) funct3_C_FLWSP = 3'b_011; // RV32FC +Bit #(3) funct3_C_FLDSP = 3'b_001; // RV32DC, RV64DC + +Bit #(3) funct3_C_SWSP = 3'b_110; + +Bit #(3) funct3_C_SQSP = 3'b_101; // RV128 +Bit #(3) funct3_C_FSDSP = 3'b_101; // RV32DC, RV64DC + +Bit #(3) funct3_C_SDSP = 3'b_111; // RV64 and RV128 +Bit #(3) funct3_C_FSWSP = 3'b_111; // RV32FC + +Bit #(3) funct3_C_LQ = 3'b_001; // RV128 +Bit #(3) funct3_C_FLD = 3'b_001; // RV32DC, RV64DC + +Bit #(3) funct3_C_LW = 3'b_010; + +Bit #(3) funct3_C_LD = 3'b_011; // RV64 and RV128 +Bit #(3) funct3_C_FLW = 3'b_011; // RV32FC + +Bit #(3) funct3_C_FSD = 3'b_101; // RV32DC, RV64DC +Bit #(3) funct3_C_SQ = 3'b_101; // RV128 + +Bit #(3) funct3_C_SW = 3'b_110; + +Bit #(3) funct3_C_SD = 3'b_111; // RV64 and RV128 +Bit #(3) funct3_C_FSW = 3'b_111; // RV32FC + +Bit #(3) funct3_C_JAL = 3'b_001; // RV32 +Bit #(3) funct3_C_J = 3'b_101; +Bit #(3) funct3_C_BEQZ = 3'b_110; +Bit #(3) funct3_C_BNEZ = 3'b_111; + +Bit #(4) funct4_C_JR = 4'b_1000; +Bit #(4) funct4_C_JALR = 4'b_1001; + +Bit #(3) funct3_C_LI = 3'b_010; +Bit #(3) funct3_C_LUI = 3'b_011; // RV64 and RV128 + +Bit #(3) funct3_C_NOP = 3'b_000; +Bit #(3) funct3_C_ADDI = 3'b_000; +Bit #(3) funct3_C_ADDIW = 3'b_001; +Bit #(3) funct3_C_ADDI16SP = 3'b_011; +Bit #(3) funct3_C_ADDI4SPN = 3'b_000; +Bit #(3) funct3_C_SLLI = 3'b_000; + +Bit #(3) funct3_C_SRLI = 3'b_100; +Bit #(2) funct2_C_SRLI = 2'b_00; + +Bit #(3) funct3_C_SRAI = 3'b_100; +Bit #(2) funct2_C_SRAI = 2'b_01; + +Bit #(3) funct3_C_ANDI = 3'b_100; +Bit #(2) funct2_C_ANDI = 2'b_10; + +Bit #(4) funct4_C_MV = 4'b_1000; +Bit #(4) funct4_C_ADD = 4'b_1001; + +Bit #(6) funct6_C_AND = 6'b_100_0_11; +Bit #(2) funct2_C_AND = 2'b_11; + +Bit #(6) funct6_C_OR = 6'b_100_0_11; +Bit #(2) funct2_C_OR = 2'b_10; + +Bit #(6) funct6_C_XOR = 6'b_100_0_11; +Bit #(2) funct2_C_XOR = 2'b_01; + +Bit #(6) funct6_C_SUB = 6'b_100_0_11; +Bit #(2) funct2_C_SUB = 2'b_00; + +Bit #(6) funct6_C_ADDW = 6'b_100_1_11; +Bit #(2) funct2_C_ADDW = 2'b_01; + +Bit #(6) funct6_C_SUBW = 6'b_100_1_11; +Bit #(2) funct2_C_SUBW = 2'b_00; + +Bit #(4) funct4_C_EBREAK = 4'b_1001; + +// ================================================================ +// Functions to extract instruction fields from 'C' (compressed) instructions + +function Tuple4 #(Bit #(4), RegName, RegName, Bit #(2)) fv_ifields_CR_type (Instr_C instr); + let funct4 = instr [15:12]; + let rd_rs1 = instr [11: 7]; + let rs2 = instr [ 6: 2]; + let op = instr [ 1: 0]; + return tuple4 (funct4, rd_rs1, rs2, op); +endfunction + +function Tuple5 #(Bit #(3), Bit #(1), Bit #(5), Bit #(5), Bit #(2)) fv_ifields_CI_type (Instr_C instr); + let funct3 = instr [15:13]; + let imm_at_12 = instr [12:12]; + let rd_rs1 = instr [11: 7]; + let imm_at_6_2 = instr [ 6: 2]; + let op = instr [ 1: 0]; + return tuple5 (funct3, imm_at_12, rd_rs1, imm_at_6_2, op); +endfunction + +function Tuple4 #(Bit #(3), Bit #(6), RegName, Bit #(2)) fv_ifields_CSS_type (Instr_C instr); + let funct3 = instr [15:13]; + let imm_at_12_7 = instr [12: 7]; + let rs2 = instr [ 6: 2]; + let op = instr [ 1: 0]; + return tuple4 (funct3, imm_at_12_7, rs2, op); +endfunction + +function Tuple4 #(Bit #(3), Bit #(8), RegName, Bit #(2)) fv_ifields_CIW_type (Instr_C instr); + let funct3 = instr [15:13]; + let imm_at_12_5 = instr [12: 5]; + let rd = {2'b01, instr [4:2]}; + let op = instr [ 1: 0]; + return tuple4 (funct3, imm_at_12_5, rd, op); +endfunction + +function Tuple6 #(Bit #(3), Bit #(3), RegName, Bit #(2), RegName, Bit #(2)) fv_ifields_CL_type (Instr_C instr); + let funct3 = instr [15:13]; + let imm_at_12_10 = instr [12:10]; + let rs1 = {2'b01, instr [9:7]}; + let imm_at_6_5 = instr [ 6: 5]; + let rd = {2'b01, instr [4:2]}; + let op = instr [ 1: 0]; + return tuple6 (funct3, imm_at_12_10, rs1, imm_at_6_5, rd, op); +endfunction + +function Tuple6 #(Bit #(3), Bit #(3), RegName, Bit #(2), RegName, Bit #(2)) fv_ifields_CS_type (Instr_C instr); + let funct3 = instr [15:13]; + let imm_at_12_10 = instr [12:10]; + let rs1 = {2'b01, instr [9:7]}; + let imm_at_6_5 = instr [ 6: 5]; + let rs2 = {2'b01, instr [4:2]}; + let op = instr [ 1: 0]; + return tuple6 (funct3, imm_at_12_10, rs1, imm_at_6_5, rs2, op); +endfunction + +function Tuple5 #(Bit #(6), RegName, Bit #(2), RegName, Bit #(2)) fv_ifields_CA_type (Instr_C instr); + let funct6 = instr [15:10]; + let rd_rs1 = {2'b01, instr [9:7]}; + let funct2 = instr [ 6: 5]; + let rs2 = {2'b01, instr [4:2]}; + let op = instr [ 1: 0]; + return tuple5 (funct6, rd_rs1, funct2, rs2, op); +endfunction + +function Tuple5 #(Bit #(3), Bit #(3), RegName, Bit #(5), Bit #(2)) fv_ifields_CB_type (Instr_C instr); + let funct3 = instr [15:13]; + let imm_at_12_10 = instr [12:10]; + let rs1 = {2'b01, instr [9:7]}; + let imm_at_6_2 = instr [ 6: 2]; + let op = instr [ 1: 0]; + return tuple5 (funct3, imm_at_12_10, rs1, imm_at_6_2, op); +endfunction + +function Tuple3 #(Bit #(3), Bit #(11), Bit #(2)) fv_ifields_CJ_type (Instr_C instr); + let funct3 = instr [15:13]; + let imm_at_12_2 = instr [12: 2]; + let op = instr [ 1: 0]; + return tuple3 (funct3, imm_at_12_2, op); +endfunction + +// ================================================================ diff --git a/src_Core/ISA/ISA_Decls_Priv_M.bsv b/src_Core/ISA/ISA_Decls_Priv_M.bsv new file mode 100644 index 0000000..1c00f8f --- /dev/null +++ b/src_Core/ISA/ISA_Decls_Priv_M.bsv @@ -0,0 +1,716 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +// ================================================================ +// This is an 'include' file, not a separate BSV package +// +// Contains RISC-V Machine-Level ISA defs +// +// ================================================================ + +// ================================================================ +// Utility functions + +// In these functions, 'bitpos' is Bit #(6) which is enough to index +// 64-bit words in RV64. + +function Bit #(n) fv_assign_bit (Bit #(n) x, Bit #(6) bitpos, Bit #(1) b) + provisos (Add #(a__, 1, n)); + Bit #(n) mask = (1 << bitpos); + Bit #(n) val = (extend (b) << bitpos); + return ((x & (~ mask)) | val); +endfunction + +function Bit #(n) fv_assign_bits (Bit #(n) x, Bit #(6) bitpos, Bit #(w) bs) + provisos (Add #(a__, w, n)); + Bit #(n) mask = (((1 << valueOf (w)) - 1) << bitpos); + Bit #(n) val = (extend (bs) << bitpos); + return ((x & (~ mask)) | val); +endfunction + +function Bit #(w) fv_get_bits (Bit #(n) x, Bit #(6) bitpos) + provisos (Add #(a__, w, n)); + Bit #(n) mask = ((1 << valueOf (w)) - 1); + return truncate ((x >> bitpos) & mask); +endfunction + +// ================================================================ +// Machine-level CSRs + +CSR_Addr csr_addr_mvendorid = 12'hF11; // Vendor ID +CSR_Addr csr_addr_marchid = 12'hF12; // Architecture ID +CSR_Addr csr_addr_mimpid = 12'hF13; // Implementation ID +CSR_Addr csr_addr_mhartid = 12'hF14; // Hardware thread ID + +CSR_Addr csr_addr_mstatus = 12'h300; // Machine status +CSR_Addr csr_addr_misa = 12'h301; // ISA and extensions +CSR_Addr csr_addr_medeleg = 12'h302; // Machine exception delegation +CSR_Addr csr_addr_mideleg = 12'h303; // Machine interrupt delegation +CSR_Addr csr_addr_mie = 12'h304; // Machine interrupt-enable +CSR_Addr csr_addr_mtvec = 12'h305; // Machine trap handler base address +CSR_Addr csr_addr_mcounteren = 12'h306; // Machine counter enable + +CSR_Addr csr_addr_mscratch = 12'h340; // Scratch reg for machine trap handlers +CSR_Addr csr_addr_mepc = 12'h341; // Machine exception program counter +CSR_Addr csr_addr_mcause = 12'h342; // Machine trap cause +CSR_Addr csr_addr_mtval = 12'h343; // Machine bad address +CSR_Addr csr_addr_mip = 12'h344; // Machine interrupt pending + +CSR_Addr csr_addr_pmpcfg0 = 12'h3A0; // PMP Config +CSR_Addr csr_addr_pmpcfg1 = 12'h3A1; // PMP Config +CSR_Addr csr_addr_pmpcfg2 = 12'h3A2; // PMP Config +CSR_Addr csr_addr_pmpcfg3 = 12'h3A3; // PMP Config +CSR_Addr csr_addr_pmpaddr0 = 12'h3B0; // PMP address register +CSR_Addr csr_addr_pmpaddr1 = 12'h3B1; // PMP address register +CSR_Addr csr_addr_pmpaddr2 = 12'h3B2; // PMP address register +CSR_Addr csr_addr_pmpaddr3 = 12'h3B3; // PMP address register +CSR_Addr csr_addr_pmpaddr4 = 12'h3B4; // PMP address register +CSR_Addr csr_addr_pmpaddr5 = 12'h3B5; // PMP address register +CSR_Addr csr_addr_pmpaddr6 = 12'h3B6; // PMP address register +CSR_Addr csr_addr_pmpaddr7 = 12'h3B7; // PMP address register +CSR_Addr csr_addr_pmpaddr8 = 12'h3B8; // PMP address register +CSR_Addr csr_addr_pmpaddr9 = 12'h3B9; // PMP address register +CSR_Addr csr_addr_pmpaddr10 = 12'h3BA; // PMP address register +CSR_Addr csr_addr_pmpaddr11 = 12'h3BB; // PMP address register +CSR_Addr csr_addr_pmpaddr12 = 12'h3BC; // PMP address register +CSR_Addr csr_addr_pmpaddr13 = 12'h3BD; // PMP address register +CSR_Addr csr_addr_pmpaddr14 = 12'h3BE; // PMP address register +CSR_Addr csr_addr_pmpaddr15 = 12'h3BF; // PMP address register + +CSR_Addr csr_addr_mcycle = 12'hB00; // Machine cycle counter +CSR_Addr csr_addr_minstret = 12'hB02; // Machine Instructions retired counter + +CSR_Addr csr_addr_mhpmcounter3 = 12'hB03; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter4 = 12'hB04; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter5 = 12'hB05; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter6 = 12'hB06; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter7 = 12'hB07; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter8 = 12'hB08; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter9 = 12'hB09; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter10 = 12'hB0A; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter11 = 12'hB0B; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter12 = 12'hB0C; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter13 = 12'hB0D; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter14 = 12'hB0E; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter15 = 12'hB0F; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter16 = 12'hB10; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter17 = 12'hB11; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter18 = 12'hB12; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter19 = 12'hB13; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter20 = 12'hB14; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter21 = 12'hB15; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter22 = 12'hB16; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter23 = 12'hB17; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter24 = 12'hB18; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter25 = 12'hB19; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter26 = 12'hB1A; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter27 = 12'hB1B; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter28 = 12'hB1C; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter29 = 12'hB1D; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter30 = 12'hB1E; // Machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter31 = 12'hB1F; // Machine performance-monitoring counter + +CSR_Addr csr_addr_mcycleh = 12'hB80; // Upper 32 bits of csr_mcycle (RV32I only) +CSR_Addr csr_addr_minstreth = 12'hB82; // Upper 32 bits of csr_minstret (RV32I only) + +CSR_Addr csr_addr_mhpmcounter3h = 12'hB83; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter4h = 12'hB84; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter5h = 12'hB85; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter6h = 12'hB86; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter7h = 12'hB87; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter8h = 12'hB88; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter9h = 12'hB89; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter10h = 12'hB8A; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter11h = 12'hB8B; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter12h = 12'hB8C; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter13h = 12'hB8D; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter14h = 12'hB8E; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter15h = 12'hB8F; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter16h = 12'hB90; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter17h = 12'hB91; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter18h = 12'hB92; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter19h = 12'hB93; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter20h = 12'hB94; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter21h = 12'hB95; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter22h = 12'hB96; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter23h = 12'hB97; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter24h = 12'hB98; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter25h = 12'hB99; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter26h = 12'hB9A; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter27h = 12'hB9B; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter28h = 12'hB9C; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter29h = 12'hB9D; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter30h = 12'hB9E; // Upper 32 bits of machine performance-monitoring counter +CSR_Addr csr_addr_mhpmcounter31h = 12'hB9F; // Upper 32 bits of machine performance-monitoring counter + +CSR_Addr csr_addr_mhpmevent3 = 12'h323; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent4 = 12'h324; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent5 = 12'h325; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent6 = 12'h326; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent7 = 12'h327; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent8 = 12'h328; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent9 = 12'h329; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent10 = 12'h32A; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent11 = 12'h32B; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent12 = 12'h32C; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent13 = 12'h32D; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent14 = 12'h32E; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent15 = 12'h32F; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent16 = 12'h330; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent17 = 12'h331; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent18 = 12'h332; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent19 = 12'h333; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent20 = 12'h334; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent21 = 12'h335; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent22 = 12'h336; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent23 = 12'h337; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent24 = 12'h338; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent25 = 12'h339; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent26 = 12'h33A; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent27 = 12'h33B; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent28 = 12'h33C; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent29 = 12'h33D; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent30 = 12'h33E; // Machine performance-monitoring event selector +CSR_Addr csr_addr_mhpmevent31 = 12'h33F; // Machine performance-monitoring event selector + +CSR_Addr csr_addr_tselect = 12'h7A0; // Debug/Trace trigger register select +CSR_Addr csr_addr_tdata1 = 12'h7A1; // First Debug/Trace trigger data +CSR_Addr csr_addr_tdata2 = 12'h7A2; // Secont Debug/Trace trigger data +CSR_Addr csr_addr_tdata3 = 12'h7A3; // Third Debug/Trace trigger data + +CSR_Addr csr_addr_dcsr = 12'h7B0; // Debug control and status +CSR_Addr csr_addr_dpc = 12'h7B1; // Debug PC +CSR_Addr csr_addr_dscratch0 = 12'h7B2; // Debug scratch0 +CSR_Addr csr_addr_dscratch1 = 12'h7B3; // Debug scratch1 + +// ================================================================ +// MISA + +typedef struct { + Bit #(2) mxl; + Bit #(1) z; Bit #(1) y; + Bit #(1) x; Bit #(1) w; Bit #(1) v; Bit #(1) u; Bit #(1) t; Bit #(1) s; Bit #(1) r; Bit #(1) q; + Bit #(1) p; Bit #(1) o; Bit #(1) n; Bit #(1) m; Bit #(1) l; Bit #(1) k; Bit #(1) j; Bit #(1) i; + Bit #(1) h; Bit #(1) g; Bit #(1) f; Bit #(1) e; Bit #(1) d; Bit #(1) c; Bit #(1) b; Bit #(1) a; + } MISA +deriving (Bits); + +Bit #(2) misa_mxl_zero = 0; +Bit #(2) misa_mxl_32 = 1; +Bit #(2) misa_mxl_64 = 2; +Bit #(2) misa_mxl_128 = 3; + +function WordXL misa_to_word (MISA ms); + return {ms.mxl, + 0, // expands appropriately for RV32 and RV64 + ms.z, ms.y, + ms.x, ms.w, ms.v, ms.u, ms.t, ms.s, ms.r, ms.q, + ms.p, ms.o, ms.n, ms.m, ms.l, ms.k, ms.j, ms.i, + ms.h, ms.g, ms.f, ms.e, ms.d, ms.c, ms.b, ms.a}; +endfunction + +function MISA word_to_misa (WordXL x); + return MISA {mxl: x [xlen-1:xlen-2], + z: x [25], y: x [24], + x: x [23], w: x [22], v: x [21], u: x [20], t: x [19], s: x [18], r: x [17], q: x [16], + p: x [15], o: x [14], n: x [13], m: x [12], l: x [11], k: x [10], j: x [9], i: x [8], + h: x [7], g: x [6], f: x [5], e: x [4], d: x [3], c: x [2], b: x [1], a: x [0]}; +endfunction + +instance FShow #(MISA); + function Fmt fshow (MISA misa); + let fmt_mxl = case (misa.mxl) + 1: $format ("mxl 32"); + 2: $format ("mxl 64"); + 3: $format ("mxl 128"); + default: $format ("mxl unknown %0d", misa.mxl); + endcase; + return ( fmt_mxl + + $format ((misa.z == 1'b1) ? "Z" : "") + + $format ((misa.y == 1'b1) ? "Y" : "") + + $format ((misa.x == 1'b1) ? "X" : "") + + $format ((misa.w == 1'b1) ? "W" : "") + + $format ((misa.v == 1'b1) ? "V" : "") + + $format ((misa.u == 1'b1) ? "U" : "") + + $format ((misa.t == 1'b1) ? "T" : "") + + $format ((misa.s == 1'b1) ? "S" : "") + + $format ((misa.r == 1'b1) ? "R" : "") + + $format ((misa.q == 1'b1) ? "Q" : "") + + $format ((misa.p == 1'b1) ? "P" : "") + + $format ((misa.o == 1'b1) ? "O" : "") + + $format ((misa.n == 1'b1) ? "N" : "") + + $format ((misa.m == 1'b1) ? "M" : "") + + $format ((misa.l == 1'b1) ? "L" : "") + + $format ((misa.k == 1'b1) ? "K" : "") + + $format ((misa.j == 1'b1) ? "J" : "") + + $format ((misa.i == 1'b1) ? "I" : "") + + $format ((misa.h == 1'b1) ? "H" : "") + + $format ((misa.g == 1'b1) ? "G" : "") + + $format ((misa.f == 1'b1) ? "F" : "") + + $format ((misa.d == 1'b1) ? "E" : "") + + $format ((misa.d == 1'b1) ? "D" : "") + + $format ((misa.c == 1'b1) ? "C" : "") + + $format ((misa.b == 1'b1) ? "B" : "") + + $format ((misa.a == 1'b1) ? "A" : "")); + endfunction +endinstance + +// ================================================================ +// MSTATUS + +Integer mstatus_sd_bitpos = xlen - 1; + +Integer mstatus_sxl_bitpos = 34; +Integer mstatus_uxl_bitpos = 32; + +Integer mstatus_tsr_bitpos = 22; +Integer mstatus_tw_bitpos = 21; +Integer mstatus_tvm_bitpos = 20; + +Integer mstatus_mxr_bitpos = 19; +Integer mstatus_sum_bitpos = 18; +Integer mstatus_mprv_bitpos = 17; + +Integer mstatus_xs_bitpos = 15; +Integer mstatus_fs_bitpos = 13; + +Integer mstatus_mpp_bitpos = 11; +Integer mstatus_WPRI_9_bitpos = 9; +Integer mstatus_spp_bitpos = 8; + +Integer mstatus_mpie_bitpos = 7; +Integer mstatus_WPRI_6_bitpos = 6; +Integer mstatus_spie_bitpos = 5; +Integer mstatus_upie_bitpos = 4; + +Integer mstatus_mie_bitpos = 3; +Integer mstatus_WPRI_2_bitpos = 2; +Integer mstatus_sie_bitpos = 1; +Integer mstatus_uie_bitpos = 0; + +// Values for FS and XS + +Bit #(2) fs_xs_off = 2'h0; +Bit #(2) fs_xs_initial = 2'h1; +Bit #(2) fs_xs_clean = 2'h2; +Bit #(2) fs_xs_dirty = 2'h3; + +// Extract MSTATUS.FS field +function Bit #(2) fv_mstatus_fs (WordXL mstatus); + return (fv_get_bits (mstatus, fromInteger (mstatus_fs_bitpos))); +endfunction + +// Virtual field SD is computed from FS and XS +function Bit #(1) fv_mstatus_sd (WordXL mstatus); + Bit #(2) xs = fv_get_bits (mstatus, fromInteger (mstatus_xs_bitpos)); + Bit #(2) fs = fv_get_bits (mstatus, fromInteger (mstatus_fs_bitpos)); + return (((fs == fs_xs_dirty) || (xs == fs_xs_dirty)) ? 1 : 0); +endfunction + +function Fmt fshow_mstatus (MISA misa, WordXL mstatus); + Bit #(2) sxl = ((misa.mxl == misa_mxl_64) ? fv_get_bits (mstatus, fromInteger (mstatus_sxl_bitpos)) : 0); + Bit #(2) uxl = ((misa.mxl == misa_mxl_64) ? fv_get_bits (mstatus, fromInteger (mstatus_uxl_bitpos)) : 0); + Bit #(2) xs = fv_get_bits (mstatus, fromInteger (mstatus_xs_bitpos)); + Bit #(2) fs = fv_get_bits (mstatus, fromInteger (mstatus_fs_bitpos)); + Bit #(2) mpp = fv_get_bits (mstatus, fromInteger (mstatus_mpp_bitpos)); + + return ( $format ("MStatus{") + + $format ("sd:%0d", fv_mstatus_sd (mstatus)) + + + ((misa.mxl == misa_mxl_64) ? $format (" sxl:%0d uxl:%0d", sxl, uxl) : $format ("")) + + + $format (" tsr:%0d", mstatus [mstatus_tsr_bitpos]) + + $format (" tw:%0d", mstatus [mstatus_tw_bitpos]) + + $format (" tvm:%0d", mstatus [mstatus_tvm_bitpos]) + + $format (" mxr:%0d", mstatus [mstatus_mxr_bitpos]) + + $format (" sum:%0d", mstatus [mstatus_sum_bitpos]) + + $format (" mprv:%0d", mstatus [mstatus_mprv_bitpos]) + + + $format (" xs:%0d", xs) + + $format (" fs:%0d", fs) + + + $format (" mpp:%0d", mpp) + + $format (" spp:%0d", mstatus [mstatus_spp_bitpos]) + + + $format (" pies:%0d_%0d%0d", + mstatus [mstatus_mpie_bitpos], mstatus [mstatus_spie_bitpos], mstatus [mstatus_upie_bitpos]) + + + $format (" ies:%0d_%0d%0d", + mstatus [mstatus_mie_bitpos], mstatus [mstatus_sie_bitpos], mstatus [mstatus_uie_bitpos]) + + $format ("}") + ); +endfunction + +// ---------------- +// Help functions to manipulate mstatus on traps and trap-returns + +function Priv_Mode fv_new_priv_on_exception (MISA misa, + Priv_Mode from_priv, + Bool interrupt, + Exc_Code exc_code, + Bit #(16) medeleg, + Bit #(12) mideleg, + Bit #(16) sedeleg, + Bit #(12) sideleg); + Priv_Mode to_priv = m_Priv_Mode; + Bit #(1) deleg_bit = 1'b0; + + // If the current priv mode is M, it cannot be delegated. + if (from_priv < m_Priv_Mode) begin + // If S is supported + if (misa.s == 1'b1) begin + // Look in medeleg/mideleg for the cause bit; if set, delegate. + if (interrupt) + deleg_bit = mideleg [exc_code]; + else + deleg_bit = medeleg [exc_code]; + if (deleg_bit == 1'b1) begin + // If the current priv mode is S, then delegate to S. + to_priv = s_Priv_Mode; + // If the current priv mode is U, and user mode traps are supported, + // then consult sedeleg/sideleg to determine if delegated to U mode. + if ((from_priv == u_Priv_Mode) && (misa.n == 1'b1)) begin + if (interrupt) + deleg_bit = sideleg [exc_code]; + else + deleg_bit = sedeleg [exc_code]; + if (deleg_bit == 1'b1) + to_priv = u_Priv_Mode; + end + end + end + else begin + // S is not supported + // If user mode traps are supported, + // then consult medele/mideleg to determine if delegated to U mode. + if (misa.n == 1'b1) begin + // Look in medeleg/mideleg for the cause bit; if set, delegate. + if (interrupt) + deleg_bit = mideleg [exc_code]; + else + deleg_bit = medeleg [exc_code]; + if (deleg_bit == 1'b1) + to_priv = u_Priv_Mode; + end + end + end + + return to_priv; +endfunction + +function WordXL fv_new_mstatus_on_exception (WordXL mstatus, Priv_Mode from_y, Priv_Mode to_x); + Bit #(6) ie_to_x = extend (to_x); + Bit #(6) pie_to_x = fromInteger (mstatus_upie_bitpos) + extend (to_x); + // xPIE = xIE + mstatus = fv_assign_bit (mstatus, pie_to_x, mstatus [ie_to_x]); + // xIE = 0 + mstatus = fv_assign_bit (mstatus, ie_to_x, 1'b0); + + // xPP = y Assert: (to_x == m_Priv_Mode) || (to_x == s_Priv_Mode) + mstatus = ( (to_x == m_Priv_Mode) + ? fv_assign_bits (mstatus, fromInteger (mstatus_mpp_bitpos), from_y) + : fv_assign_bit (mstatus, fromInteger (mstatus_spp_bitpos), from_y [0])); + return mstatus; +endfunction + +function Tuple2 #(WordXL, Priv_Mode) fv_new_mstatus_on_ret (MISA misa, + WordXL mstatus, + Priv_Mode from_x); + Bit #(6) ie_from_x = extend (from_x); + Bit #(6) pie_from_x = fromInteger (mstatus_upie_bitpos) + extend (from_x); + + // Pop the interrupt-enable stack + // (set xIE = xPIE) + mstatus = fv_assign_bit (mstatus, ie_from_x, mstatus [pie_from_x]); + + // Enable interrupt at from_x + // (set xPIE = 1) + mstatus = fv_assign_bit (mstatus, pie_from_x, 1'b1); + + // Pop the previous privilege mode + // which empties the one-element stack, revealing the default value + // (set xPP to U -- or M if U is not supported) + Priv_Mode to_y; + Priv_Mode default_pp = ((misa.u == 1'b1) ? u_Priv_Mode : m_Priv_Mode); + if (from_x == m_Priv_Mode) begin + to_y = fv_get_bits (mstatus, fromInteger (mstatus_mpp_bitpos)); + mstatus = fv_assign_bits (mstatus, fromInteger (mstatus_mpp_bitpos), default_pp); + end + else begin //if (from_x == s_Priv_Mode) + to_y = {1'b0, mstatus [mstatus_spp_bitpos]}; + mstatus = fv_assign_bit (mstatus, fromInteger (mstatus_spp_bitpos), default_pp [0]); + end + + return tuple2 (mstatus, to_y); +endfunction + +// ================================================================ +// Logical view of csr_mtvec register + +typedef enum {DIRECT, VECTORED} MTVEC_Mode +deriving (Bits, Eq, FShow); + +typedef struct { + Bit #(XLEN_MINUS_2) base; + MTVEC_Mode mode; +} MTVec +deriving (Bits, FShow); + +function WordXL mtvec_to_word (MTVec mv); + return {mv.base, + 1'b0, + pack (mv.mode)}; +endfunction + +function MTVec word_to_mtvec (WordXL x); + return MTVec {base: truncate (x >> 2), + mode: unpack (x[0])}; +endfunction + +// ================================================================ +// Logical view of csr_mcounteren register +typedef struct { + Bit#(1) ir; + Bit#(1) tm; + Bit#(1) cy; +} MCounteren +deriving (Bits, FShow); + +function WordXL mcounteren_to_word (MCounteren mc); + return {0, + mc.ir, + mc.tm, + mc.cy}; +endfunction + +function MCounteren word_to_mcounteren (WordXL x); + return MCounteren {ir: x[2], + tm: x[1], + cy: x[0]}; +endfunction + +function MCounteren mcounteren_reset_value; + return MCounteren {ir: 1'b0, + tm: 1'b0, + cy: 1'b0}; +endfunction + +// ================================================================ +// MIP and MIE fields (interrupt pending, interrupt enable) + +Integer mip_usip_bitpos = 0; +Integer mip_ssip_bitpos = 1; +Integer mip_msip_bitpos = 3; + +Integer mip_utip_bitpos = 4; +Integer mip_stip_bitpos = 5; +Integer mip_mtip_bitpos = 7; + +Integer mip_ueip_bitpos = 8; +Integer mip_seip_bitpos = 9; +Integer mip_meip_bitpos = 11; + +// ================================================================ +// MCAUSE (reason for exception) + +typedef struct { + Bit #(1) interrupt; + Exc_Code exc_code; + } MCause +deriving (Bits); + +instance FShow #(MCause); + function Fmt fshow (MCause mc); + if (mc.interrupt == 1) + return fshow_interrupt_Exc_Code (mc.exc_code); + else + return fshow_trap_Exc_Code (mc.exc_code); + endfunction +endinstance + +function WordXL mcause_to_word (MCause mc); + return {mc.interrupt, 0, mc.exc_code}; +endfunction + +function MCause word_to_mcause (WordXL x); + return MCause {interrupt: msb (x), + exc_code: truncate (x)}; +endfunction + +// Exception Codes in mcause + +typedef Bit #(4) Exc_Code; + +// When Interrupt = 1 (interrupt) + +Exc_Code exc_code_USER_SW_INTERRUPT = 0; +Exc_Code exc_code_SUPERVISOR_SW_INTERRUPT = 1; +Exc_Code exc_code_HYPERVISOR_SW_INTERRUPT = 2; +Exc_Code exc_code_MACHINE_SW_INTERRUPT = 3; + +Exc_Code exc_code_USER_TIMER_INTERRUPT = 4; +Exc_Code exc_code_SUPERVISOR_TIMER_INTERRUPT = 5; +Exc_Code exc_code_HYPERVISOR_TIMER_INTERRUPT = 6; +Exc_Code exc_code_MACHINE_TIMER_INTERRUPT = 7; + +Exc_Code exc_code_USER_EXTERNAL_INTERRUPT = 8; +Exc_Code exc_code_SUPERVISOR_EXTERNAL_INTERRUPT = 9; +Exc_Code exc_code_HYPERVISOR_EXTERNAL_INTERRUPT = 10; +Exc_Code exc_code_MACHINE_EXTERNAL_INTERRUPT = 11; + +// When Interrupt = 0 (trap) + +Exc_Code exc_code_INSTR_ADDR_MISALIGNED = 0; +Exc_Code exc_code_INSTR_ACCESS_FAULT = 1; +Exc_Code exc_code_ILLEGAL_INSTRUCTION = 2; +Exc_Code exc_code_BREAKPOINT = 3; + +Exc_Code exc_code_LOAD_ADDR_MISALIGNED = 4; +Exc_Code exc_code_LOAD_ACCESS_FAULT = 5; + +Exc_Code exc_code_STORE_AMO_ADDR_MISALIGNED = 6; +Exc_Code exc_code_STORE_AMO_ACCESS_FAULT = 7; + +Exc_Code exc_code_ECALL_FROM_U = 8; +Exc_Code exc_code_ECALL_FROM_S = 9; +Exc_Code exc_code_RESERVED_10 = 10; +Exc_Code exc_code_ECALL_FROM_M = 11; + +Exc_Code exc_code_INSTR_PAGE_FAULT = 12; +Exc_Code exc_code_LOAD_PAGE_FAULT = 13; +Exc_Code exc_code_RESERVED_14 = 14; +Exc_Code exc_code_STORE_AMO_PAGE_FAULT = 15; + + +function Fmt fshow_interrupt_Exc_Code (Exc_Code exc_code); + return case (exc_code) + exc_code_USER_SW_INTERRUPT: $format ("USER_SW_INTERRUPT"); + exc_code_SUPERVISOR_SW_INTERRUPT: $format ("SUPERVISOR_SW_INTERRUPT"); + exc_code_HYPERVISOR_SW_INTERRUPT: $format ("HYPERVISOR_SW_INTERRUPT"); + exc_code_MACHINE_SW_INTERRUPT: $format ("MACHINE_SW_INTERRUPT"); + + exc_code_USER_TIMER_INTERRUPT: $format ("USER_TIMER_INTERRUPT"); + exc_code_SUPERVISOR_TIMER_INTERRUPT: $format ("SUPERVISOR_TIMER_INTERRUPT"); + exc_code_HYPERVISOR_TIMER_INTERRUPT: $format ("HYPERVISOR_TIMER_INTERRUPT"); + exc_code_MACHINE_TIMER_INTERRUPT: $format ("MACHINE_TIMER_INTERRUPT"); + + exc_code_USER_EXTERNAL_INTERRUPT: $format ("USER_EXTERNAL_INTERRUPT"); + exc_code_SUPERVISOR_EXTERNAL_INTERRUPT: $format ("SUPERVISOR_EXTERNAL_INTERRUPT"); + exc_code_HYPERVISOR_EXTERNAL_INTERRUPT: $format ("HYPERVISOR_EXTERNAL_INTERRUPT"); + exc_code_MACHINE_EXTERNAL_INTERRUPT: $format ("MACHINE_EXTERNAL_INTERRUPT"); + default: $format ("unknown interrupt Exc_Code %d", exc_code); + endcase; +endfunction + +function Fmt fshow_trap_Exc_Code (Exc_Code exc_code); + return case (exc_code) + exc_code_INSTR_ADDR_MISALIGNED: $format ("INSTRUCTION_ADDR_MISALIGNED"); + exc_code_INSTR_ACCESS_FAULT: $format ("INSTRUCTION_ACCESS_FAULT"); + exc_code_ILLEGAL_INSTRUCTION: $format ("ILLEGAL_INSTRUCTION"); + exc_code_BREAKPOINT: $format ("BREAKPOINT"); + + exc_code_LOAD_ADDR_MISALIGNED: $format ("LOAD_ADDR_MISALIGNED"); + exc_code_LOAD_ACCESS_FAULT: $format ("LOAD_ACCESS_FAULT"); + + exc_code_STORE_AMO_ADDR_MISALIGNED: $format ("STORE_AMO_ADDR_MISALIGNED"); + exc_code_STORE_AMO_ACCESS_FAULT: $format ("STORE_AMO_ACCESS_FAULT"); + + exc_code_ECALL_FROM_U: $format ("ECALL_FROM_U"); + exc_code_ECALL_FROM_S: $format ("ECALL_FROM_S"); + exc_code_ECALL_FROM_M: $format ("ECALL_FROM_M"); + + exc_code_INSTR_PAGE_FAULT: $format ("INSTRUCTION_PAGE_FAULT"); + exc_code_LOAD_PAGE_FAULT: $format ("LOAD_PAGE_FAULT"); + exc_code_STORE_AMO_PAGE_FAULT: $format ("STORE_AMO_PAGE_FAULT"); + + default: $format ("unknown trap Exc_Code %d", exc_code); + endcase; +endfunction + +// ================================================================ +// Function from various CSRs and current privilege to: +// whether or not an interrupt is pending, +// and if so, corresponding exception code + +function Maybe #(Exc_Code) fv_interrupt_pending (MISA misa, + WordXL mstatus, + WordXL mip, + WordXL mie, + Bit #(12) mideleg, + Bit #(12) sideleg, + Priv_Mode cur_priv); + + function Maybe #(Exc_Code) fv_interrupt_i_pending (Exc_Code i); + Bool intr_pending = ((mip [i] == 1) && (mie [i] == 1)); + Priv_Mode handler_priv; + if (mideleg [i] == 1) + if (misa.u == 1) + if (misa.s == 1) + // System with M, S, U + if (sideleg [i] == 1) + if (misa.n == 1) + // M->S->U delegation + handler_priv = u_Priv_Mode; + else + // Error: SIDELEG [i] should not be 1 if MISA.N is 0 + handler_priv = m_Priv_Mode; + else + // M->S delegation + handler_priv = s_Priv_Mode; + else + // System with M, U + if (misa.n == 1) + // M->U delegation + handler_priv = u_Priv_Mode; + else + // Error: MIDELEG [i] should not be 1 if MISA.N is 0 + handler_priv = m_Priv_Mode; + else + // Error: System with M only; MIDELEG [i] should not be 1 + handler_priv = m_Priv_Mode; + else + // no delegation + handler_priv = m_Priv_Mode; + + Bool xie; + if (cur_priv == u_Priv_Mode) + xie = (mstatus [mstatus_uie_bitpos] == 1); + else if (cur_priv == s_Priv_Mode) + xie = (mstatus [mstatus_sie_bitpos] == 1); + else if (cur_priv == m_Priv_Mode) + xie = (mstatus [mstatus_mie_bitpos] == 1); + else + // Error: unexpected mode + xie = False; + + Bool glob_enabled = ( (cur_priv < handler_priv) + || ((cur_priv == handler_priv) && xie)); + + return ((intr_pending && glob_enabled) ? (tagged Valid i) : (tagged Invalid)); + endfunction + + // Check all interrupts in the following decreasing priority order + Maybe #(Exc_Code) m_ec; + m_ec = fv_interrupt_i_pending (exc_code_MACHINE_EXTERNAL_INTERRUPT); + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_MACHINE_SW_INTERRUPT); + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_MACHINE_TIMER_INTERRUPT); + + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_SUPERVISOR_EXTERNAL_INTERRUPT); + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_SUPERVISOR_SW_INTERRUPT); + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_SUPERVISOR_TIMER_INTERRUPT); + + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_USER_EXTERNAL_INTERRUPT); + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_USER_SW_INTERRUPT); + if (m_ec matches tagged Invalid) + m_ec = fv_interrupt_i_pending (exc_code_USER_TIMER_INTERRUPT); + + return m_ec; +endfunction + +// ================================================================ diff --git a/src_Core/ISA/ISA_Decls_Priv_S.bsv b/src_Core/ISA/ISA_Decls_Priv_S.bsv new file mode 100644 index 0000000..3135cf6 --- /dev/null +++ b/src_Core/ISA/ISA_Decls_Priv_S.bsv @@ -0,0 +1,421 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +// ================================================================ +// WARNING: this is an 'include' file, not a separate BSV package! +// +// Contains RISC-V Supervisor-Level ISA defs, based on: +// The RISC-V Instruction Set Manual" +// Volume II: Privileged Architecture +// Privileged Architecture Version 1.10 +// Document Version 1.10 +// May 7, 2017 +// +// ================================================================ + +// Invariants on ifdefs: +// - If RV32 is defined, we assume Sv32 for the VM system +// - If RV64 is defined, one of SV39 or SV48 must also be defined for the VM system + +// ================================================================ +// Supervisor-level CSRs + +CSR_Addr csr_addr_sstatus = 12'h100; // Supervisor status +CSR_Addr csr_addr_sedeleg = 12'h102; // Supervisor exception delegation +CSR_Addr csr_addr_sideleg = 12'h103; // Supervisor interrupt delegation +CSR_Addr csr_addr_sie = 12'h104; // Supervisor interrupt enable +CSR_Addr csr_addr_stvec = 12'h105; // Supervisor trap handler base address +CSR_Addr csr_addr_scounteren = 12'h106; // Supervisor counter enable + +CSR_Addr csr_addr_sscratch = 12'h140; // Scratch reg for supervisor trap handlers +CSR_Addr csr_addr_sepc = 12'h141; // Supervisor exception program counter +CSR_Addr csr_addr_scause = 12'h142; // Supervisor trap cause +CSR_Addr csr_addr_stval = 12'h143; // Supervisor bad address or instruction +CSR_Addr csr_addr_sip = 12'h144; // Supervisor interrupt pending + +CSR_Addr csr_addr_satp = 12'h180; // Supervisor address translation and protection + +// ================================================================ +// SSTATUS + +function Bit #(1) fn_sstatus_sd (WordXL sstatus_val); return sstatus_val [xlen-1]; endfunction + +`ifdef RV64 +function Bit #(2) fn_sstatus_UXL (WordXL sstatus_val); return sstatus_val [33:32]; endfunction +`endif + +function Bit #(1) fn_sstatus_SUM (WordXL sstatus_val); return sstatus_val [19]; endfunction +function Bit #(1) fn_sstatus_MXR (WordXL sstatus_val); return sstatus_val [18]; endfunction + +function Bit #(2) fn_sstatus_xs (WordXL sstatus_val); return sstatus_val [16:15]; endfunction +function Bit #(2) fn_sstatus_fs (WordXL sstatus_val); return sstatus_val [14:13]; endfunction + +function Bit #(1) fn_sstatus_spp (WordXL sstatus_val); return sstatus_val [8]; endfunction + +function Bit #(1) fn_sstatus_spie (WordXL sstatus_val); return sstatus_val [5]; endfunction +function Bit #(1) fn_sstatus_upie (WordXL sstatus_val); return sstatus_val [4]; endfunction + +function Bit #(1) fn_sstatus_sie (WordXL sstatus_val); return sstatus_val [1]; endfunction +function Bit #(1) fn_sstatus_uie (WordXL sstatus_val); return sstatus_val [0]; endfunction + +// ---------------- +// SCAUSE (reason for exception) + +function Bit #(1) scause_interrupt (WordXL scause_val); return scause_val [xlen-1]; endfunction +function Bit #(TSub #(XLEN,1)) scause_exception_code (WordXL scause_val); return scause_val [xlen-2:0]; endfunction + +// ================================================================ + +`ifdef ISA_PRIV_S +// ================================================================ +// SATP (supervisor address translation and protection) + +// ---------------- +`ifdef RV32 + +typedef Bit #(1) VM_Mode; +typedef Bit #(9) ASID; + +function WordXL fn_mk_satp_val (VM_Mode mode, ASID asid, PA pa) = { mode, asid, pa [33:12] }; +function VM_Mode fn_satp_to_VM_Mode (Bit #(32) satp_val); return satp_val [31]; endfunction +function ASID fn_satp_to_ASID (Bit #(32) satp_val); return satp_val [30:22]; endfunction +function PPN fn_satp_to_PPN (Bit #(32) satp_val); return satp_val [21: 0]; endfunction + +Bit #(1) satp_mode_RV32_bare = 1'h_0; +Bit #(1) satp_mode_RV32_sv32 = 1'h_1; + +`elsif RV64 + +typedef Bit #(4) VM_Mode; +typedef Bit #(16) ASID; + +function WordXL fn_mk_satp_val (VM_Mode mode, ASID asid, PA pa) = { mode, asid, pa [55:12] }; +function VM_Mode fn_satp_to_VM_Mode (Bit #(64) satp_val); return satp_val [63:60]; endfunction +function ASID fn_satp_to_ASID (Bit #(64) satp_val); return satp_val [59:44]; endfunction +function PPN fn_satp_to_PPN (Bit #(64) satp_val); return satp_val [43: 0]; endfunction + +Bit #(4) satp_mode_RV64_bare = 4'd__0; +Bit #(4) satp_mode_RV64_sv39 = 4'd__8; +Bit #(4) satp_mode_RV64_sv48 = 4'd__9; +Bit #(4) satp_mode_RV64_sv57 = 4'd_10; +Bit #(4) satp_mode_RV64_sv64 = 4'd_11; + +`endif + +// ---------------------------------------------------------------- +// Virtual and Physical addresses, page numbers, offsets +// Page table (PT) fields and entries (PTEs) +// For Sv32 and Sv39 + + +// ---------------- +// RV32.Sv32 + +`ifdef RV32 + +// Virtual addrs +typedef 32 VA_sz; +typedef 20 VPN_sz; +typedef 10 VPN_J_sz; + +// Physical addrs +typedef 34 PA_sz; +typedef 22 PPN_sz; +typedef 12 PPN_1_sz; +typedef 10 PPN_0_sz; + +// Offsets within a page +typedef 12 Offset_sz; + +// PTNodes (nodes in the page-table tree) +typedef 1024 PTNode_sz; // # of PTEs in a PTNode + +// VAs, VPN selectors +function VA fn_mkVA (VPN_J vpn1, VPN_J vpn0, Bit #(Offset_sz) offset) = { vpn1, vpn0, offset }; +function VPN fn_Addr_to_VPN (Bit #(n) addr) = addr [31:12]; +function VPN_J fn_Addr_to_VPN_1 (Bit #(n) addr) = addr [31:22]; +function VPN_J fn_Addr_to_VPN_0 (Bit #(n) addr) = addr [21:12]; + +// ---------------- +// RV64.Sv39 + +// ifdef RV32 +`elsif RV64 + +// ---------------- +// RV64.Sv39 + +// ifdef RV32 .. elsif RV64 +`ifdef SV39 + +// Virtual addrs +typedef 39 VA_sz; +typedef 27 VPN_sz; +typedef 9 VPN_J_sz; + +// Physical addrs +typedef 64 PA_sz; // need 56b in Sv39 mode and 64b in Bare mode +typedef 44 PPN_sz; +typedef 26 PPN_2_sz; +typedef 9 PPN_1_sz; +typedef 9 PPN_0_sz; + +// Offsets within a page +typedef 12 Offset_sz; + +// PTNodes (nodes in the page-table tree) +typedef 512 PTNode_sz; // # of PTEs in a PTNode + +// VAs, VPN selectors +function VA fn_mkVA (VPN_J vpn2, VPN_J vpn1, VPN_J vpn0, Bit #(Offset_sz) offset) = { vpn2, vpn1, vpn0, offset }; +function VPN fn_Addr_to_VPN (Bit #(n) addr) = addr [38:12]; +function VPN_J fn_Addr_to_VPN_2 (Bit #(n) addr) = addr [38:30]; +function VPN_J fn_Addr_to_VPN_1 (Bit #(n) addr) = addr [29:21]; +function VPN_J fn_Addr_to_VPN_0 (Bit #(n) addr) = addr [20:12]; + +// ifdef RV32 .. elsif RV64 / ifdef SV39 +`else + +// TODO: RV64.SV48 definitions + +// ifdef RV32 .. elsif RV64 / ifdef SV39 .. else +`endif + +// ifdef RV32 .. elsif RV64 +`endif + +// ---------------- +// Derived types and values + +// Physical addrs +Integer pa_sz = valueOf (PA_sz); typedef Bit #(PA_sz) PA; + +function PA fn_WordXL_to_PA (WordXL eaddr); +`ifdef RV32 + return extend (eaddr); +`elsif RV64 + return truncate (eaddr); +`endif +endfunction + +// Virtual addrs -- derived types and values +Integer va_sz = valueOf (VA_sz); typedef Bit #(VA_sz) VA; + +function VA fn_WordXL_to_VA (WordXL eaddr); +`ifdef RV32 + return eaddr; +`elsif RV64 + return truncate (eaddr); +`endif +endfunction + +// Page offsets +function Offset fn_Addr_to_Offset (Bit #(n) addr); + return addr [offset_sz - 1: 0]; +endfunction + +// VPNs +Integer vpn_sz = valueOf (VPN_sz); typedef Bit #(VPN_sz) VPN; +Integer vpn_j_sz = valueOf (VPN_J_sz); typedef Bit #(VPN_J_sz) VPN_J; +Integer offset_sz = valueOf (Offset_sz); typedef Bit #(Offset_sz) Offset; + +// PPNs +Integer ppn_sz = valueOf (PPN_sz); typedef Bit #(PPN_sz) PPN; +`ifdef RV64 +Integer ppn_2_sz = valueOf (PPN_2_sz); typedef Bit #(PPN_2_sz) PPN_2; +`endif +Integer ppn_1_sz = valueOf (PPN_1_sz); typedef Bit #(PPN_1_sz) PPN_1; +Integer ppn_0_sz = valueOf (PPN_0_sz); typedef Bit #(PPN_0_sz) PPN_0; + +`ifdef RV32 +typedef Bit #(PPN_1_sz) PPN_MEGA; +`elsif RV64 +typedef Bit #(TAdd #(PPN_2_sz, PPN_1_sz)) PPN_MEGA; +typedef Bit #(PPN_2_sz) PPN_GIGA; +`endif + +function PPN fn_PA_to_PPN (PA pa); + return pa [ppn_sz + offset_sz - 1: offset_sz]; +endfunction + +function PA fn_PPN_and_Offset_to_PA (PPN ppn, Offset offset); +`ifdef RV32 + return {ppn, offset}; +`elsif RV64 + return zeroExtend ({ppn, offset}); +`endif +endfunction + +// ---------------- +// PTNodes (nodes in the page-table tree) + +Integer ptnode_sz = valueOf (PTNode_sz); // # of PTEs in a PTNode +typedef TLog #(PTNode_sz) PTNode_Index_sz; +typedef Bit #(PTNode_Index_sz) PTNode_Index; +Integer ptnode_index_sz = valueOf (PTNode_Index_sz); + +// ---------------- +// PTEs (Page Table Entries in PTNodes) + +typedef WordXL PTE; + +Integer pte_V_offset = 0; // Valid +Integer pte_R_offset = 1; // Read permission +Integer pte_W_offset = 2; // Write permission +Integer pte_X_offset = 3; // Execute permission +Integer pte_U_offset = 4; // Accessible-to-user-mode +Integer pte_G_offset = 5; // Global mapping +Integer pte_A_offset = 6; // Accessed +Integer pte_D_offset = 7; // Dirty +Integer pte_RSW_offset = 8; // Reserved for supervisor SW + +`ifdef RV32 +Integer pte_PPN_0_offset = 10; +Integer pte_PPN_1_offset = 20; +`elsif RV64 +Integer pte_PPN_0_offset = 10; +Integer pte_PPN_1_offset = 19; +Integer pte_PPN_2_offset = 28; +`endif + +function Bit #(1) fn_PTE_to_V (PTE pte); + return pte [pte_V_offset]; +endfunction + +function Bit #(1) fn_PTE_to_R (PTE pte); + return pte [pte_R_offset]; +endfunction + +function Bit #(1) fn_PTE_to_W (PTE pte); + return pte [pte_W_offset]; +endfunction + +function Bit #(1) fn_PTE_to_X (PTE pte); + return pte [pte_X_offset]; +endfunction + +function Bit #(1) fn_PTE_to_U (PTE pte); + return pte [pte_U_offset]; +endfunction + +function Bit #(1) fn_PTE_to_G (PTE pte); + return pte [pte_G_offset]; +endfunction + +function Bit #(1) fn_PTE_to_A (PTE pte); + return pte [pte_A_offset]; +endfunction + +function Bit #(1) fn_PTE_to_D (PTE pte); + return pte [pte_D_offset]; +endfunction + +function PPN fn_PTE_to_PPN (PTE pte); + return pte [ppn_sz + pte_PPN_0_offset - 1 : pte_PPN_0_offset]; +endfunction + +function PPN_MEGA fn_PTE_to_PPN_mega (PTE pte); + return pte [ppn_sz + pte_PPN_0_offset - 1 : pte_PPN_1_offset]; +endfunction + +`ifdef RV64 +function PPN_GIGA fn_PTE_to_PPN_giga (PTE pte); + return pte [ppn_sz + pte_PPN_0_offset - 1 : pte_PPN_2_offset]; +endfunction +`endif + +function PPN_0 fn_PTE_to_PPN_0 (PTE pte); + return pte [pte_PPN_1_offset - 1 : pte_PPN_0_offset]; +endfunction + +function PPN_1 fn_PTE_to_PPN_1 (PTE pte); + return pte [ppn_1_sz + pte_PPN_1_offset - 1 : pte_PPN_1_offset]; +endfunction + +`ifdef RV64 +function PPN_2 fn_PTE_to_PPN_2 (PTE pte); + return pte [ppn_2_sz + pte_PPN_2_offset - 1 : pte_PPN_2_offset]; +endfunction +`endif + +// ---------------- +// Check if a PTE is invalid (V bit clear, or improper R/W bits) + +function Bool is_invalid_pte (PTE pte); + return ( (fn_PTE_to_V (pte) == 0) + || ( (fn_PTE_to_R (pte) == 0) + && (fn_PTE_to_W (pte) == 1))); +endfunction + +// ---------------- +// Check if PTE bits deny a virtual-mem access + +function Bool is_pte_denial (Bool dmem_not_imem, // load-store or fetch? + Bool read_not_write, + Priv_Mode priv, + Bit #(1) sstatus_SUM, + Bit #(1) mstatus_MXR, + PTE pte); + + let pte_u = fn_PTE_to_U (pte); + let pte_x = fn_PTE_to_X (pte); + let pte_w = fn_PTE_to_W (pte); + let pte_r = fn_PTE_to_R (pte); + + Bool priv_deny = ( ((priv == u_Priv_Mode) && (pte_u == 1'b0)) + || ((priv == s_Priv_Mode) && (pte_u == 1'b1) && (sstatus_SUM == 1'b0))); + + Bool access_fetch = ((! dmem_not_imem) && read_not_write); + Bool access_load = (dmem_not_imem && read_not_write); + Bool access_store = (dmem_not_imem && (! read_not_write)); + + let pte_r_mxr = (pte_r | (mstatus_MXR & pte_x)); + + Bool access_ok = ( (access_fetch && (pte_x == 1'b1)) + || (access_load && (pte_r_mxr == 1'b1)) + || (access_store && (pte_w == 1'b1))); + + + return (priv_deny || (! access_ok)); +endfunction + +// ---------------- +// Check PTE A and D bits + +function Bool is_pte_A_D_fault (Bool read_not_write, PTE pte); + return ( (fn_PTE_to_A (pte) == 0) + || ((! read_not_write) && (fn_PTE_to_D (pte) == 0))); +endfunction + +// ---------------- +// Choose particular kind of page fault + +function Exc_Code fn_page_fault_exc_code (Bool dmem_not_imem, Bool read_not_write); + return ((! dmem_not_imem) ? exc_code_INSTR_PAGE_FAULT + :(read_not_write ? exc_code_LOAD_PAGE_FAULT + : exc_code_STORE_AMO_PAGE_FAULT)); +endfunction + +`else // ifdef ISA_PRIV_S +// The below definitions are valid for cases where there is no VM +// Physical addrs -- without VM, PA is same as WordXL +typedef XLEN PA_sz; + +// Physical addrs +Integer pa_sz = valueOf (PA_sz); typedef Bit #(PA_sz) PA; + +function PA fn_WordXL_to_PA (WordXL eaddr); + return eaddr; +endfunction + +`endif // else-ifdef ISA_PRIV_S + +// ---------------- +// Choose particular kind of access fault + +function Exc_Code fn_access_exc_code (Bool dmem_not_imem, Bool read_not_write); + return ((! dmem_not_imem) ? exc_code_INSTR_ACCESS_FAULT + :(read_not_write ? exc_code_LOAD_ACCESS_FAULT + : exc_code_STORE_AMO_ACCESS_FAULT)); +endfunction + +// ================================================================ diff --git a/src_Core/ISA/TV_Info.bsv b/src_Core/ISA/TV_Info.bsv new file mode 100644 index 0000000..dc3b971 --- /dev/null +++ b/src_Core/ISA/TV_Info.bsv @@ -0,0 +1,362 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +// ================================================================ +// Definition of Tandem Verifier Packets. +// The CPU sends out such a packet for each instruction retired. +// A Tandem Verifier contains a "golden model" simulator of the RISC-V +// ISA, and verifies that the information in the packet is correct, +// instruction by instruction. + +// ================================================================ + +package TV_Info; + +// ================================================================ +// Bluespec library imports + +import DefaultValue :: *; +import Vector :: *; + +// ================================================================ +// Project imports + +import ISA_Decls :: *; + +// ================================================================ + +typedef enum {// These are not from instruction flow and do not have a PC or instruction + TRACE_RESET, + TRACE_GPR_WRITE, + TRACE_FPR_WRITE, + TRACE_CSR_WRITE, + TRACE_MEM_WRITE, + + // These are from instruction flow and have a PC and instruction + TRACE_OTHER, + TRACE_I_RD, TRACE_F_RD, + TRACE_I_LOAD, TRACE_F_LOAD, + TRACE_STORE, + TRACE_AMO, + TRACE_TRAP, + TRACE_RET, + TRACE_CSRRX, + + // These are from an interrupt and has a PC but no instruction + TRACE_INTR + } Trace_Op +deriving (Bits, Eq, FShow); + +typedef struct { + Trace_Op op; + WordXL pc; + ISize instr_sz; + Bit #(32) instr; + RegName rd; + WordXL word1; + WordXL word2; + Bit #(64) word3; // Wider than WordXL because can contain paddr (in RV32, paddr can be 34 bits) + WordXL word4; + } Trace_Data +deriving (Bits); + +// RESET +// op pc instr_sz instr rd word1 word2 word3 word4 +// x +function Trace_Data mkTrace_RESET (); + Trace_Data td = ?; + td.op = TRACE_RESET; + return td; +endfunction + +// GPR_WRITE +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x rdval +function Trace_Data mkTrace_GPR_WRITE (RegName rd, WordXL rdval); + Trace_Data td = ?; + td.op = TRACE_GPR_WRITE; + td.rd = rd; + td.word1 = rdval; + return td; +endfunction + +// FPR_WRITE +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x rdval +function Trace_Data mkTrace_FPR_WRITE (RegName rd, WordXL rdval); + Trace_Data td = ?; + td.op = TRACE_FPR_WRITE; + td.rd = rd; + td.word1 = rdval; + return td; +endfunction + +// CSR_WRITE +// op pc instr_sz instr rd word1 word2 word3 word4 +// x csraddr csrval +function Trace_Data mkTrace_CSR_WRITE (CSR_Addr csraddr, WordXL csrval); + Trace_Data td = ?; + td.op = TRACE_CSR_WRITE; + td.word3 = zeroExtend (csraddr); + td.word4 = csrval; + return td; +endfunction + +// MEM_WRITE +// op pc instr_sz instr rd word1 word2 word3 word4 +// x sz stval paddr +function Trace_Data mkTrace_MEM_WRITE (MemReqSize sz, WordXL stval, Bit #(64) paddr); + Trace_Data td = ?; + td.op = TRACE_MEM_WRITE; + td.word1 = zeroExtend (sz); + td.word2 = stval; + td.word3 = paddr; + return td; +endfunction + +// OTHER +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x +function Trace_Data mkTrace_OTHER (WordXL pc, ISize isize, Bit #(32) instr); + Trace_Data td = ?; + td.op = TRACE_OTHER; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + return td; +endfunction + +// I_RD +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x x rdval +function Trace_Data mkTrace_I_RD (WordXL pc, ISize isize, Bit #(32) instr, RegName rd, WordXL rdval); + Trace_Data td = ?; + td.op = TRACE_I_RD; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = rd; + td.word1 = rdval; + return td; +endfunction + +// F_RD +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x x rdval +function Trace_Data mkTrace_F_RD (WordXL pc, ISize isize, Bit #(32) instr, RegName rd, WordXL rdval); + Trace_Data td = ?; + td.op = TRACE_F_RD; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = rd; + td.word1 = rdval; + return td; +endfunction + +// I_LOAD +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x x rdval eaddr +function Trace_Data mkTrace_I_LOAD (WordXL pc, ISize isize, Bit #(32) instr, RegName rd, WordXL rdval, WordXL eaddr); + Trace_Data td = ?; + td.op = TRACE_I_LOAD; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = rd; + td.word1 = rdval; + td.word3 = zeroExtend (eaddr); + return td; +endfunction + +// F_LOAD +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x x rdval eaddr +function Trace_Data mkTrace_F_LOAD (WordXL pc, ISize isize, Bit #(32) instr, RegName rd, WordXL rdval, WordXL eaddr); + Trace_Data td = ?; + td.op = TRACE_F_LOAD; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = rd; + td.word1 = rdval; + td.word3 = zeroExtend (eaddr); + return td; +endfunction + +// STORE +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x stval eaddr +function Trace_Data mkTrace_STORE (WordXL pc, ISize isize, Bit #(32) instr, WordXL stval, WordXL eaddr); + Trace_Data td = ?; + td.op = TRACE_STORE; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.word2 = stval; + td.word3 = zeroExtend (eaddr); + return td; +endfunction + +// AMO +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x x rdval stval eaddr +function Trace_Data mkTrace_AMO (WordXL pc, ISize isize, Bit #(32) instr, + RegName rd, WordXL rdval, WordXL stval, WordXL eaddr); + Trace_Data td = ?; + td.op = TRACE_AMO; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = rd; + td.word1 = rdval; + td.word2 = stval; + td.word3 = zeroExtend (eaddr); + return td; +endfunction + +// TRAP +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x priv mstatus mcause mepc mtval +function Trace_Data mkTrace_TRAP (WordXL pc, ISize isize, Bit #(32) instr, + Priv_Mode priv, WordXL mstatus, WordXL mcause, WordXL mepc, WordXL mtval); + Trace_Data td = ?; + td.op = TRACE_TRAP; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = zeroExtend (priv); + td.word1 = mstatus; + td.word2 = mcause; + td.word3 = zeroExtend (mepc); + td.word4 = mtval; + return td; +endfunction + +// RET +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x priv mstatus +function Trace_Data mkTrace_RET (WordXL pc, ISize isize, Bit #(32) instr, Priv_Mode priv, WordXL mstatus); + Trace_Data td = ?; + td.op = TRACE_RET; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = zeroExtend (priv); + td.word1 = mstatus; + return td; +endfunction + +// CSRRX +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x x x x rdval csrvalid csraddr csrval +function Trace_Data mkTrace_CSRRX (WordXL pc, ISize isize, Bit #(32) instr, + RegName rd, WordXL rdval, Bool csrvalid, CSR_Addr csraddr, WordXL csrval); + Trace_Data td = ?; + td.op = TRACE_CSRRX; + td.pc = pc; + td.instr_sz = isize; + td.instr = instr; + td.rd = rd; + td.word1 = rdval; + td.word2 = (csrvalid ? 1 : 0); + td.word3 = zeroExtend (csraddr); + td.word4 = csrval; + return td; +endfunction + +// INTR +// op pc instr_sz instr rd word1 word2 word3 word4 +// x x priv mstatus mcause mepc mtval +function Trace_Data mkTrace_INTR (WordXL pc, + Priv_Mode priv, WordXL mstatus, WordXL mcause, WordXL mepc, WordXL mtval); + Trace_Data td = ?; + td.op = TRACE_INTR; + td.pc = pc; + td.rd = zeroExtend (priv); + td.word1 = mstatus; + td.word2 = mcause; + td.word3 = zeroExtend (mepc); + td.word4 = mtval; + return td; +endfunction + +// ================================================================ +// Display of Trace_Data for debugging + +instance FShow #(Trace_Data); + function Fmt fshow (Trace_Data td); + Fmt fmt = $format ("Trace_Data{", fshow (td.op)); + + if (td.op == TRACE_RESET) begin + end + + else if ((td.op == TRACE_GPR_WRITE) || (td.op == TRACE_FPR_WRITE)) + fmt = fmt + $format (" rd %0d rdval %0h", td.rd, td.word1); + + else if (td.op == TRACE_CSR_WRITE) + fmt = fmt + $format (" csraddr %0h csrval %0h", td.word3, td.word4); + + else if (td.op == TRACE_MEM_WRITE) + fmt = fmt + $format (" sz %0d stval %0h paddr %0h", td.word1, td.word2, td.word3); + + else begin + fmt = fmt + $format (" pc %0h", td.pc); + + if (td.op != TRACE_INTR) + fmt = fmt + $format (" instr.%0d %0h:", pack (td.instr_sz), td.instr); + + if ((td.op == TRACE_I_RD) || (td.op == TRACE_F_RD)) + fmt = fmt + $format (" rd %0d rdval %0h", td.rd, td.word1); + + else if ((td.op == TRACE_I_LOAD) || (td.op == TRACE_F_LOAD)) + fmt = fmt + $format (" rd %0d rdval %0h eaddr %0h", + td.rd, td.word1, td.word3); + + else if (td.op == TRACE_STORE) + fmt = fmt + $format (" stval %0h eaddr %0h", td.word2, td.word3); + + else if (td.op == TRACE_AMO) + fmt = fmt + $format (" rd %0d rdval %0h stval %0h eaddr %0h", + td.rd, td.word1, td.word2, td.word3); + + else if (td.op == TRACE_CSRRX) + fmt = fmt + $format (" rd %0d rdval %0h csraddr %0h csrval %0h", + td.rd, td.word1, td.word3, td.word4); + + else if ((td.op == TRACE_TRAP) || (td.op == TRACE_INTR)) + fmt = fmt + $format (" priv %0d mstatus %0h mcause %0h mepc %0h mtval %0h", + td.rd, td.word1, td.word2, td.word3, td.word4); + + else if (td.op == TRACE_RET) + fmt = fmt + $format (" priv %0d mstatus %0h", td.rd, td.word1); + end + + fmt = fmt + $format ("}"); + return fmt; + endfunction +endinstance + +// ================================================================ +// Trace_Data is encoded in module mkTV_Encode into vectors of bytes, +// which are eventually streamed out to an on-line tandem verifier/ +// analyzer (or to a file for off-line tandem-verification/analysis). + +// Various 'transactions' produce a Trace_Data struct (e.g., reset, +// each instruction retirement, each GDB write to registers or memory, +// etc.). Each struct is encoded into a vector of bytes; the number +// of bytes depends on the kind of transaction and various encoding +// choices. + +typedef 72 TV_VB_SIZE; // max bytes needed for each transaction +typedef Vector #(TV_VB_SIZE, Byte) TV_Vec_Bytes; + +// ================================================================ + +typedef struct { + Bit #(32) num_bytes; + TV_Vec_Bytes vec_bytes; +} Info_CPU_to_Verifier deriving (Bits, FShow); + +// ================================================================ + +endpackage diff --git a/src_Core/PLIC/Makefile b/src_Core/PLIC/Makefile new file mode 100644 index 0000000..95127a1 --- /dev/null +++ b/src_Core/PLIC/Makefile @@ -0,0 +1,41 @@ +# Copyright (c) 2019 Bluespec, Inc. All Rights Reserved + +# Makefile to create Test_PLIC and PLIC into a standalone unit-test executable. + +# Edit the StmtFSM in Test_PLIC to create different tests. + +# ---------------- + +REPO = $(HOME)/GitHub/Flute + +# ---------------- +# Top-level file and module + +TOPFILE ?= $(REPO)/src_Core/PLIC/Test_PLIC.bsv +TOPMODULE ?= mkTest_PLIC + +# ================================================================ +# RISC-V config macros passed into Bluespec 'bsc' compiler + +BSC_COMPILATION_FLAGS += \ + -D RV64 \ + -D ISA_PRIV_M -D ISA_PRIV_U -D ISA_PRIV_S \ + -D SV39 \ + -D ISA_I -D ISA_M -D ISA_A \ + -D SHIFT_BARREL \ + -D MULT_SYNTH \ + -D Near_Mem_Caches \ + -D FABRIC64 \ + + +# ================================================================ +# Common boilerplate rules + +include $(REPO)/builds/Resources/Include_Common.mk + +# ================================================================ +# Makefile rules for building for specific simulator: bluesim + +include $(REPO)/builds/Resources/Include_bluesim.mk + +# ================================================================ diff --git a/src_Core/PLIC/PLIC.bsv b/src_Core/PLIC/PLIC.bsv new file mode 100644 index 0000000..5ae7280 --- /dev/null +++ b/src_Core/PLIC/PLIC.bsv @@ -0,0 +1,623 @@ +// Copyright (c) 2019 Bluespec, Inc. All Rights Reserved + +package PLIC; + +// ================================================================ +// This package implements a PLIC (Platform-Level Interrupt Controller) +// conforming to the RISC-V PLIC standard. +// It is parameterized for: +// - # of sources +// - # of targets +// - # of priorities +// +// ================================================================ +// Bluespec lib imports + +import ConfigReg :: *; +import Vector :: *; +import FIFOF :: *; +import ClientServer :: *; +import Assert :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; +import Semi_FIFOF :: *; + +// ================================================================ +// Project imports + +import AXI4_Types :: *; +import AXI4_Fabric :: *; +import Fabric_Defs :: *; // for Wd_Id, Wd_Addr, Wd_Data, Wd_User + +// ================================================================ +// Change bitwidth without requiring < or > constraints. + +function Bit #(m) changeWidth (Bit #(n) x); + Bit #(TAdd #(m, n)) y = zeroExtend (x); + Bit #(m) z = y [valueOf (m)-1 : 0]; + return z; +endfunction + +// ================================================================ +// Maximum supported sources, targets, ... + +typedef 10 T_wd_source_id; // Max 1024 sources (source 0 is reserved for 'no interrupt') +typedef 5 T_wd_target_id; // Max 32 targets + +// ================================================================ +// Interfaces + +// ---------------- +// Individual source interface + +interface PLIC_Source_IFC; + (* always_ready, always_enabled *) + method Action m_interrupt_req (Bool set_not_clear); +endinterface + +// ---------------- +// Individual target interface + +interface PLIC_Target_IFC; + (* always_ready *) + method Bool m_eip; // external interrupt pending +endinterface + +// ---------------- +// PLIC interface + +interface PLIC_IFC #(numeric type t_n_external_sources, + numeric type t_n_targets, + numeric type t_max_priority); + // Debugging + method Action set_verbosity (Bit #(4) verbosity); + method Action show_PLIC_state; + + // Reset + interface Server #(Bit #(0), Bit #(0)) server_reset; + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Bit #(64) addr_base, Bit #(64) addr_lim); + + // Memory-mapped access + interface AXI4_Slave_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) axi4_slave; + + // sources + interface Vector #(t_n_external_sources, PLIC_Source_IFC) v_sources; + + // targets EIPs (External Interrupt Pending) + interface Vector #(t_n_targets, PLIC_Target_IFC) v_targets; +endinterface + +// ================================================================ +// PLIC module implementation + +module mkPLIC (PLIC_IFC #(t_n_external_sources, t_n_targets, t_max_priority)) + provisos (Add #(1, t_n_external_sources, t_n_sources), // source 0 is reserved for 'no source' + Add #(_any_0, TLog #(t_n_sources), T_wd_source_id), + Add #(_any_1, TLog #(t_n_targets), T_wd_target_id), + Log #(TAdd #(t_max_priority, 1), t_wd_priority)); + + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (0); + + // Source_Ids and Priorities are read and written over the memory interface + // and should fit within the data bus width, currently 64 bits. + staticAssert ((valueOf (TLog #(t_n_sources)) <= 64), "PLIC: t_n_sources parameter too large"); + staticAssert ((valueOf (TLog #(TAdd #(t_max_priority, 1))) <= 64), "PLIC: t_max_priority parameter too large"); + + Integer n_sources = valueOf (t_n_sources); + Integer n_targets = valueOf (t_n_targets); + + // ---------------- + // Soft reset requests and responses + FIFOF #(Bit #(0)) f_reset_reqs <- mkFIFOF; + FIFOF #(Bit #(0)) f_reset_rsps <- mkFIFOF; + + // ---------------- + // Memory-mapped access + + // Base and limit addrs for this memory-mapped block. + Reg #(Bit #(64)) rg_addr_base <- mkRegU; + Reg #(Bit #(64)) rg_addr_lim <- mkRegU; + + // Connector to AXI4 fabric + AXI4_Slave_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave_xactor <- mkAXI4_Slave_Xactor; + + // ---------------- + // Per-interrupt source state + + // Interrupt pending from source + Vector #(t_n_sources, Reg #(Bool)) vrg_source_ip <- replicateM (mkConfigReg (False)); + // Interrupt claimed and being serviced by a hart + Vector #(t_n_sources, Reg #(Bool)) vrg_source_busy <- replicateM (mkReg (False)); + // Priority for this source + Vector #(t_n_sources, Reg #(Bit #(t_wd_priority))) vrg_source_prio <- replicateM (mkReg (0)); + + // ---------------- + // Per-target hart context state + + // Threshold: interrupts at or below threshold should be masked out for target + Vector #(t_n_targets, Reg #(Bit #(t_wd_priority))) vrg_target_threshold <- replicateM (mkReg ('1)); + // Target has claimed interrupt for source and is servicing it + Vector #(t_n_targets, Reg #(Bit #(TLog #(t_n_sources)))) vrg_servicing_source <- replicateM (mkReg (0)); + + // ---------------- + // Per-target, per-source state + + // Interrupt enables from source to target + Vector #(t_n_targets, + Vector #(t_n_sources, Reg #(Bool))) vvrg_ie <- replicateM (replicateM (mkReg (False))); + + // ================================================================ + // Compute outputs for each target (combinational) + + function Tuple2 #(Bit #(t_wd_priority), Bit #(TLog #(t_n_sources))) + fn_target_max_prio_and_max_id (Bit #(T_wd_target_id) target_id); + + Bit #(t_wd_priority) max_prio = 0; + Bit #(TLog #(t_n_sources)) max_id = 0; + + // Note: source_ids begin at 1, not 0. + for (Integer source_id = 1; source_id < n_sources; source_id = source_id + 1) + if ( vrg_source_ip [source_id] + && (vrg_source_prio [source_id] > max_prio) + && (vvrg_ie [target_id][source_id])) begin + max_id = fromInteger (source_id); + max_prio = vrg_source_prio [source_id]; + end + // Assert: if any interrupt is pending (max_id > 0), then prio > 0 + return tuple2 (max_prio, max_id); + endfunction + + function Action fa_show_PLIC_state; + action + $display ("----------------"); + $write ("Src IPs :"); + for (Integer source_id = 0; source_id < n_sources; source_id = source_id + 1) + $write (" %0d", pack (vrg_source_ip [source_id])); + $display (""); + + $write ("Src Prios:"); + for (Integer source_id = 0; source_id < n_sources; source_id = source_id + 1) + $write (" %0d", vrg_source_prio [source_id]); + $display (""); + + $write ("Src busy :"); + for (Integer source_id = 0; source_id < n_sources; source_id = source_id + 1) + $write (" %0d", pack (vrg_source_busy [source_id])); + $display (""); + + for (Integer target_id = 0; target_id < n_targets; target_id = target_id + 1) begin + $write ("T %0d IEs :", target_id); + for (Integer source_id = 0; source_id < n_sources; source_id = source_id + 1) + $write (" %0d", vvrg_ie [target_id][source_id]); + match { .max_prio, .max_id } = fn_target_max_prio_and_max_id (fromInteger (target_id)); + $display (" MaxPri %0d, Thresh %0d, MaxId %0d, Svcing %0d", + max_prio, vrg_target_threshold [target_id], max_id, vrg_servicing_source [target_id]); + end + endaction + endfunction + + // ================================================================ + // Soft reset + + rule rl_reset; + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_reset", cur_cycle); + + let x <- pop (f_reset_reqs); + + for (Integer source_id = 0; source_id < n_sources; source_id = source_id + 1) begin + vrg_source_ip [source_id] <= False; + vrg_source_busy [source_id] <= False; + vrg_source_prio [source_id] <= 0; + end + + for (Integer target_id = 0; target_id < n_targets; target_id = target_id + 1) begin + // Mask all interrupts with highest threshold + vrg_target_threshold [target_id] <= '1; + vrg_servicing_source [target_id] <= 0; + end + + for (Integer target_id = 0; target_id < n_targets; target_id = target_id + 1) + for (Integer source_id = 0; source_id < n_sources; source_id = source_id + 1) + vvrg_ie [target_id][source_id] <= False; + + slave_xactor.reset; + + f_reset_rsps.enq (?); + endrule + + // ================================================================ + // Bus interface for reading/writing control/status regs + // Relative-address map is same as 'SiFive U54-MC Core Complex Manual v1p0'. + // Accesses are 4-bytes wide, even though bus may be 64b wide. + + // ---------------------------------------------------------------- + // Handle memory-mapped read requests + + rule rl_process_rd_req (! f_reset_reqs.notEmpty); + + let rda <- pop_o (slave_xactor.o_rd_addr); + if (cfg_verbosity > 1) begin + $display ("%0d: PLIC.rl_process_rd_req:", cur_cycle); + $display (" ", fshow (rda)); + end + + let addr_offset = rda.araddr - rg_addr_base; + Bit #(64) rdata = 0; + AXI4_Resp rresp = axi4_resp_okay; + + if (rda.araddr < rg_addr_base) begin + // Technically this should not happen: the fabric should + // never have delivered such an addr to this IP. + $display ("%0d: ERROR: PLIC.rl_process_rd_req: unrecognized addr", cur_cycle); + $display (" ", fshow (rda)); + rresp = axi4_resp_decerr; + end + + // Source Priority + else if (addr_offset < 'h1000) begin + Bit #(T_wd_source_id) source_id = truncate (addr_offset [11:2]); + if ((0 < source_id) && (source_id <= fromInteger (n_sources - 1))) begin + rdata = changeWidth (vrg_source_prio [source_id]); + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_rd_req: reading Source Priority: source %0d = 0x%0h", + cur_cycle, source_id, rdata); + end + else + rresp = axi4_resp_slverr; + end + + // Source IPs (interrupt pending). + // Return 32 consecutive IP bits starting with addr. + else if (('h1000 <= addr_offset) && (addr_offset < 'h2000)) begin + Bit #(T_wd_source_id) source_id_base = truncate ({ addr_offset [11:0], 5'h0 }); + + function Bool fn_ip_source_id (Integer source_id_offset); + let source_id = source_id_base + fromInteger (source_id_offset); + Bool ip_source_id = ( (source_id <= fromInteger (n_sources - 1)) + ? vrg_source_ip [source_id] + : False); + return ip_source_id; + endfunction + + if (source_id_base <= fromInteger (n_sources - 1)) begin + Bit #(32) v_ip = pack (genWith (fn_ip_source_id)); + rdata = changeWidth (v_ip); + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_rd_req: reading Intr Pending 32 bits from source %0d = 0x%0h", + cur_cycle, source_id_base, rdata); + end + else + rresp = axi4_resp_slverr; + end + + // Source IEs (interrupt enables) for a target + // Return 32 consecutive IE bits starting with addr. + // Target 0 addrs: 2000-207F, Target 1 addrs: 2080-20FF, ... + else if (('h2000 <= addr_offset) && (addr_offset < 'h3000)) begin + Bit #(T_wd_target_id) target_id = truncate (addr_offset [11:7]); + Bit #(T_wd_source_id) source_id_base = truncate ({ addr_offset [6:0], 5'h0 }); + + function Bool fn_ie_source_id (Integer source_id_offset); + let source_id = fromInteger (source_id_offset) + source_id_base; + return ( (source_id <= fromInteger (n_sources - 1)) + ? vvrg_ie [target_id][source_id] + : False); + endfunction + + if ( (source_id_base <= fromInteger (n_sources - 1)) + && (target_id <= fromInteger (n_targets - 1))) begin + Bit #(32) v_ie = pack (genWith (fn_ie_source_id)); + rdata = changeWidth (v_ie); + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_rd_req: reading Intr Enable 32 bits from source %0d = 0x%0h", + cur_cycle, source_id_base, rdata); + end + else + rresp = axi4_resp_slverr; + end + + // Target threshold + else if ((addr_offset [31:0] & 32'hFFFF_0FFF) == 32'h0020_0000) begin + Bit #(T_wd_target_id) target_id = truncate (addr_offset [20:12]); + if (target_id <= fromInteger (n_targets - 1)) begin + rdata = changeWidth (vrg_target_threshold [target_id]); + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_rd_req: reading Threshold for target %0d = 0x%0h", + cur_cycle, target_id, rdata); + end + else + rresp = axi4_resp_slverr; + end + + // Interrupt service claim by target + else if ((addr_offset [31:0] & 32'hFFFF_0FFF) == 32'h0020_0004) begin + Bit #(T_wd_target_id) target_id = truncate (addr_offset [20:12]); + match { .max_prio, .max_id } = fn_target_max_prio_and_max_id (target_id); + Bool eip = (max_prio > vrg_target_threshold [target_id]); + if (target_id <= fromInteger (n_targets - 1)) begin + if (vrg_servicing_source [target_id] != 0) begin + $display ("%0d: ERROR: PLIC: target %0d claiming without prior completion", + cur_cycle, target_id); + $display (" Still servicing interrupt from source %0d", vrg_servicing_source [target_id]); + $display (" Trying to claim service for source %0d", max_id); + $display (" Ignoring."); + rresp = axi4_resp_slverr; + end + else begin + if (max_id != 0) begin + vrg_source_ip [max_id] <= False; + vrg_source_busy [max_id] <= True; + vrg_servicing_source [target_id] <= truncate (max_id); + rdata = changeWidth (max_id); + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_rd_req: reading Claim for target %0d = 0x%0h", + cur_cycle, target_id, rdata); + end + end + end + else + rresp = axi4_resp_slverr; + end + + else + rresp = axi4_resp_slverr; + + if (rresp != axi4_resp_okay) begin + $display ("%0d: ERROR: PLIC.rl_process_rd_req: unrecognized addr", cur_cycle); + $display (" ", fshow (rda)); + end + + if ((valueOf (Wd_Data) == 64) && ((addr_offset & 'h7) == 'h4)) + rdata = { rdata [31:0], 32'h0 }; + + // Send read-response to bus + Fabric_Data x = truncate (rdata); + let rdr = AXI4_Rd_Data {rid: rda.arid, + rdata: x, + rresp: rresp, + rlast: True, + ruser: rda.aruser}; + slave_xactor.i_rd_data.enq (rdr); + + if (cfg_verbosity > 1) begin + $display ("%0d: PLIC.rl_process_rd_req", cur_cycle); + $display (" ", fshow (rda)); + $display (" ", fshow (rdr)); + end + endrule: rl_process_rd_req + + // ---------------------------------------------------------------- + // Handle memory-mapped write requests + + (* descending_urgency = "rl_process_rd_req, rl_process_wr_req" *) // Ad hoc order + + rule rl_process_wr_req (! f_reset_reqs.notEmpty); + + let wra <- pop_o (slave_xactor.o_wr_addr); + let wrd <- pop_o (slave_xactor.o_wr_data); + if (cfg_verbosity > 1) begin + $display ("%0d: PLIC.rl_process_wr_req", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + end + + let addr_offset = wra.awaddr - rg_addr_base; + let wdata32 = (((valueOf (Wd_Data) == 64) && ((addr_offset & 'h7) == 'h4)) + ? wrd.wdata [63:32] + : wrd.wdata [31:0]); + let bresp = axi4_resp_okay; + + if (wra.awaddr < rg_addr_base) begin + // Technically this should not happen: the fabric should + // never have delivered such an addr to this IP. + $display ("%0d: ERROR: PLIC.rl_process_wr_req: unrecognized addr", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + bresp = axi4_resp_decerr; + end + + // Source priority + else if (addr_offset < 'h1000) begin + Bit #(T_wd_source_id) source_id = truncate (addr_offset [11:2]); + if ((0 < source_id) && (source_id <= fromInteger (n_sources - 1))) begin + vrg_source_prio [source_id] <= changeWidth (wdata32); + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_wr_req: writing Source Priority: source %0d = 0x%0h", + cur_cycle, source_id, wdata32); + end + else begin + // Note: write to source_id 0 is error; should it just be ignored? + bresp = axi4_resp_slverr; + end + end + + // Source IPs (interrupt pending). + // Read-only, so ignore write; just check that addr ok. + else if (('h1000 <= addr_offset) && (addr_offset < 'h2000)) begin + Bit #(T_wd_source_id) source_id_base = truncate ({ addr_offset [11:0], 5'h0 }); + + if (source_id_base <= fromInteger (n_sources - 1)) begin + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_wr_req: Ignoring write to Read-only Intr Pending 32 bits from source %0d", + cur_cycle, source_id_base); + end + else + bresp = axi4_resp_slverr; + end + + // Source IEs (interrupt enables) for a target + // Write 32 consecutive IE bits starting with addr. + // Target 0 addrs: 2000-207F, Target 1 addrs: 2080-20FF, ... + else if (('h2000 <= addr_offset) && (addr_offset < 'h3000)) begin + Bit #(T_wd_target_id) target_id = truncate (addr_offset [11:7]); + Bit #(T_wd_source_id) source_id_base = truncate ({ addr_offset [6:0], 5'h0 }); + + if ( (source_id_base <= fromInteger (n_sources - 1)) + && (target_id <= fromInteger (n_targets - 1))) begin + for (Bit #(T_wd_source_id) k = 0; k < 32; k = k + 1) begin + Bit #(T_wd_source_id) source_id = source_id_base + k; + if (source_id <= fromInteger (n_sources - 1)) + vvrg_ie [target_id][source_id] <= unpack (wdata32 [k]); + end + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_wr_req: writing Intr Enable 32 bits for target %0d from source %0d = 0x%0h", + cur_cycle, target_id, source_id_base, wdata32); + end + else + bresp = axi4_resp_slverr; + end + + // Target threshold + else if ((addr_offset [31:0] & 32'hFFFF_0FFF) == 32'h0020_0000) begin + Bit #(T_wd_target_id) target_id = truncate (addr_offset [20:12]); + if (target_id <= fromInteger (n_targets - 1)) begin + vrg_target_threshold [target_id] <= changeWidth (wdata32); + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_wr_req: writing threshold for target %0d = 0x%0h", + cur_cycle, target_id, wdata32); + end + else + bresp = axi4_resp_slverr; + end + + // Interrupt service completion by target + // Actual memory-write-data is irrelevant. + else if ((addr_offset [31:0] & 32'hFFFF_0FFF) == 32'h0020_0004) begin + Bit #(T_wd_target_id) target_id = truncate (addr_offset [20:12]); + Bit #(T_wd_source_id) source_id = zeroExtend (vrg_servicing_source [target_id]); + + if (target_id <= fromInteger (n_targets - 1)) begin + if (vrg_source_busy [source_id]) begin + vrg_source_busy [source_id] <= False; + vrg_servicing_source [target_id] <= 0; + if (cfg_verbosity > 0) + $display ("%0d: PLIC.rl_process_wr_req: writing completion for target %0d for source 0x%0h", + cur_cycle, target_id, source_id); + end + else begin + $display ("%0d: ERROR: PLIC: interrupt completion to source that is not being serviced", + cur_cycle); + $display (" Completion message from target %0d to source %0d", target_id, source_id); + $display (" Ignoring"); + bresp = axi4_resp_slverr; + end + end + else + bresp = axi4_resp_slverr; + end + + else + bresp = axi4_resp_slverr; + + if (bresp != axi4_resp_okay) begin + $display ("%0d: ERROR: PLIC.rl_process_wr_req: unrecognized addr", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + end + + // Send write-response to bus + let wrr = AXI4_Wr_Resp {bid: wra.awid, + bresp: bresp, + buser: wra.awuser}; + slave_xactor.i_wr_resp.enq (wrr); + + if (cfg_verbosity > 1) begin + $display ("%0d: PLIC.AXI4.rl_process_wr_req", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + $display (" ", fshow (wrr)); + end + endrule: rl_process_wr_req + + // ================================================================ + // Creator of each source interface + + function PLIC_Source_IFC fn_mk_PLIC_Source_IFC (Integer source_id); + return interface PLIC_Source_IFC; + method Action m_interrupt_req (Bool set_not_clear); + action + if (! vrg_source_busy [source_id]) begin + vrg_source_ip [source_id] <= set_not_clear; + + if ((cfg_verbosity > 0) && (vrg_source_ip [source_id] != set_not_clear)) + $display ("%0d: Changing vrg_source_ip [%0d] to %0d", + cur_cycle, source_id, pack (set_not_clear)); + end + endaction + endmethod + endinterface; + endfunction + + // ================================================================ + // Creator of each target interface + + function PLIC_Target_IFC fn_mk_PLIC_Target_IFC (Integer target_id); + return interface PLIC_Target_IFC; + method Bool m_eip; // external interrupt pending + match { .max_prio, .max_id } = fn_target_max_prio_and_max_id (fromInteger (target_id)); + Bool eip = (max_prio > vrg_target_threshold [target_id]); + return eip; + endmethod + endinterface; + endfunction + + // ================================================================ + // INTERFACE + + // Debugging + method Action set_verbosity (Bit #(4) verbosity); + cfg_verbosity <= verbosity; + endmethod + + method Action show_PLIC_state; + fa_show_PLIC_state; + endmethod + + // Reset + interface server_reset = toGPServer (f_reset_reqs, f_reset_rsps); + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Bit #(64) addr_base, Bit #(64) addr_lim); + if (addr_base [1:0] != 0) + $display ("%0d: WARNING: PLIC.set_addr_map: addr_base 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_base); + + if (addr_lim [1:0] != 0) + $display ("%0d: WARNING: PLIC.set_addr_map: addr_lim 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_lim); + + rg_addr_base <= addr_base; + rg_addr_lim <= addr_lim; + + if (cfg_verbosity > 0) + $display ("%0d: PLIC.set_addr_map: base 0x%0h limit 0x%0h", cur_cycle, addr_base, addr_lim); + endmethod + + // Memory-mapped access + interface axi4_slave = slave_xactor.axi_side; + + // sources + interface v_sources = genWith (fn_mk_PLIC_Source_IFC); + + // targets + interface v_targets = genWith (fn_mk_PLIC_Target_IFC); +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/PLIC/PLIC_16_2_7.bsv b/src_Core/PLIC/PLIC_16_2_7.bsv new file mode 100644 index 0000000..17e1b35 --- /dev/null +++ b/src_Core/PLIC/PLIC_16_2_7.bsv @@ -0,0 +1,42 @@ +// Copyright (c) 2019 Bluespec, Inc. All Rights Reserved + +package PLIC_16_2_7; + +// ================================================================ +// Instantiation of parameterized PLIC to specific parameter values. +// +// ================================================================ +// Bluespec lib imports + +// None + +// ---------------- +// BSV additional libs + +// None + +// ================================================================ +// Project imports + +import SoC_Map :: *; // For N_External_Interrupt_Sources +import PLIC :: *; // For PLIC_IFC, mkPLIC + +// ================================================================ +// PLIC for this core + +typedef 2 PLIC_N_Targets; +typedef 7 PLIC_Max_Priority; + +typedef PLIC_IFC #(N_External_Interrupt_Sources, + PLIC_N_Targets, + PLIC_Max_Priority) PLIC_IFC_16_2_7; + +(* synthesize *) +module mkPLIC_16_2_7 (PLIC_IFC_16_2_7); + let m <- mkPLIC; + return m; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/PLIC/README_PLIC.txt b/src_Core/PLIC/README_PLIC.txt new file mode 100644 index 0000000..2319d4e --- /dev/null +++ b/src_Core/PLIC/README_PLIC.txt @@ -0,0 +1,134 @@ +The (relative) Memory map for this PLIC follows the one given in: + + SiFive U54-MC Core Complex Manual, v1p0, Oct 4 2017 + Chapter 8 Platform Level Interrupt Controller, pp.32-38. + +>---------------- +Priority registers + +0x0000 Reserved +0x0004 Source 1 priority +0x0008 Source 2 priority +... +0x0800 Source 511 priority + +>---------------- +Reserved + +0x0804 ... 0x0FFF + +>---------------- +IP (Interrupt Pending) array: 32 sources per 32b word + +0x1000 +... +0x103C + +>---------------- +Reserved + +0x1018 ... 0x1FFF + +>---------------- +IE (interrupt enables) array for Hart0 M mode (1 bit per source) + +0x2000 +... +0x2014 + +>---------------- +Reserved + +0x2018 ... 0x207F + +>---------------- +IE (interrupt enables) array for Hart1 M mode (1 bit per source) + +0x2080 +... +0x2094 + +>---------------- +IE (interrupt enables) array for Hart1 S mode (1 bit per source) + +0x2100 +... +0x2114 + +>---------------- +IE (interrupt enables) array for Hart2 M mode (1 bit per source) + +0x2180 +... +0x2194 + +>---------------- +IE (interrupt enables) array for Hart2 S mode (1 bit per source) + +0x2200 +... +0x2214 + +>---------------- +IE (interrupt enables) array for Hart3 M mode (1 bit per source) + +0x2280 +... +0x2294 + +>---------------- +IE (interrupt enables) array for Hart3 S mode (1 bit per source) + +0x2300 +... +0x2314 + +>---------------- +IE (interrupt enables) array for Hart4 M mode (1 bit per source) + +0x2380 +... +0x2394 + +>---------------- +IE (interrupt enables) array for Hart4 S mode (1 bit per source) + +0x2400 +... +0x2414 + +>---------------- +Reserved + +0x0C00 2480 ... 0x0C1F FFFF + +>---------------- +Threshold (of priority) and Claim/Complete registers + +0x0C20 0000 Hart 0 M-mode +0x0C20 0004 Hart 0 M-mode claim/complete +>---------------- +0x0C20 1000 Hart 1 M-mode +0x0C20 1004 Hart 1 M-mode claim/complete +>---------------- +0x0C20 2000 Hart 1 S-mode +0x0C20 2004 Hart 1 S-mode claim/complete +>---------------- +0x0C20 3000 Hart 2 M-mode +0x0C20 3004 Hart 2 M-mode claim/complete +>---------------- +0x0C20 4000 Hart 2 S-mode +0x0C20 4004 Hart 2 S-mode claim/complete +>---------------- +0x0C20 5000 Hart 3 M-mode +0x0C20 5004 Hart 3 M-mode claim/complete +>---------------- +0x0C20 6000 Hart 3 S-mode +0x0C20 6004 Hart 3 S-mode claim/complete +>---------------- +0x0C20 7000 Hart 4 M-mode +0x0C20 7004 Hart 4 M-mode claim/complete +>---------------- +0x0C20 8000 Hart 4 S-mode +0x0C20 8004 Hart 4 S-mode claim/complete +>---------------- diff --git a/src_Core/PLIC/Test_PLIC.bsv b/src_Core/PLIC/Test_PLIC.bsv new file mode 100644 index 0000000..e54b3a5 --- /dev/null +++ b/src_Core/PLIC/Test_PLIC.bsv @@ -0,0 +1,296 @@ +// Copyright (c) 2019 Bluespec, Inc. All Rights Reserved + +package Test_PLIC; + +// ================================================================ +// Standalone unit-test testbench for PLIC. +// +// ================================================================ +// Bluespec lib imports + +import ConfigReg :: *; +import Vector :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import Connectable :: *; +import Assert :: *; +import StmtFSM :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; +import Semi_FIFOF :: *; + +// ================================================================ +// Project imports + +import AXI4_Types :: *; +import AXI4_Fabric :: *; +import Fabric_Defs :: *; // for Wd_Id, Wd_Addr, Wd_Data, Wd_User +import SoC_Map :: *; +import PLIC :: *; +import PLIC_16_2_7 :: *; + +// ================================================================ + +Integer n_external_interrupt_sources = valueOf (N_External_Interrupt_Sources); +typedef TAdd #(1, N_External_Interrupt_Sources) N_Interrupt_Sources; +typedef Bit #(TLog #(N_Interrupt_Sources)) Source_Id; + +Integer plic_n_targets = valueOf (PLIC_N_Targets); +Integer target_0 = 0; +Integer target_1 = 1; + +Integer plic_max_priority = valueOf (PLIC_Max_Priority); +typedef Bit #(TLog #(TAdd #(1, PLIC_Max_Priority))) Priority; + +// ================================================================ +// The Core module + +(* synthesize *) +module mkTest_PLIC (Empty); + + // System address map + SoC_Map_IFC soc_map <- mkSoC_Map; + + // PLIC (Platform-Level Interrupt Controller) + PLIC_IFC_16_2_7 plic <- mkPLIC_16_2_7; + + // Master transactor through which to read/write PLIC regs + AXI4_Master_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) master_xactor <- mkAXI4_Master_Xactor; + + Vector #(N_Interrupt_Sources, Reg #(Bool)) vrg_irqs <- replicateM (mkReg (False)); + + // ================================================================ + // AXI4 interactions + + FIFOF #(Fabric_Addr) f_read_addr <- mkFIFOF; + FIFOF #(Fabric_Data) f_read_data <- mkFIFOF; + + function Action fa_read_req (Integer addr); + action + let fabric_addr = soc_map.m_plic_addr_base + fromInteger (addr); + + let mem_req_rd_addr = AXI4_Rd_Addr {arid: fabric_default_id, + araddr: fabric_addr, + arlen: 0, // burst len = arlen+1 + arsize: zeroExtend (axsize_4), + arburst: fabric_default_burst, + arlock: fabric_default_lock, + arcache: fabric_default_arcache, + arprot: fabric_default_prot, + arqos: fabric_default_qos, + arregion: fabric_default_region, + aruser: fabric_default_user}; + master_xactor.i_rd_addr.enq (mem_req_rd_addr); + f_read_addr.enq (fabric_addr); + endaction + endfunction + + function Action fa_read_rsp; + action + let fabric_addr <- pop (f_read_addr); + let rd_data <- pop_o (master_xactor.o_rd_data); + if (rd_data.rresp != axi4_resp_okay) begin + $display ("ERROR: fa_read_rsp: fabric response error"); + $display (" ", fshow (rd_data)); + end + let x = (((valueOf (Wd_Data) == 64) && ((fabric_addr & 'h7) == 'h4)) + ? (rd_data.rdata >> 32) + : rd_data.rdata); + f_read_data.enq (x); + endaction + endfunction + + function Action fa_write_req (Integer addr, Fabric_Data data); + action + let fabric_addr = soc_map.m_plic_addr_base + fromInteger (addr); + + let mem_req_wr_addr = AXI4_Wr_Addr {awid: fabric_default_id, + awaddr: fabric_addr, + awlen: 0, // burst len = awlen+1 + awsize: zeroExtend (axsize_4), + awburst: fabric_default_burst, + awlock: fabric_default_lock, + awcache: fabric_default_awcache, + awprot: fabric_default_prot, + awqos: fabric_default_qos, + awregion: fabric_default_region, + awuser: fabric_default_user}; + + let x = (((valueOf (Wd_Data) == 64) && ((fabric_addr & 'h7) == 'h4)) + ? (data << 32) + : data); + let mem_req_wr_data = AXI4_Wr_Data {wid: fabric_default_id, + wdata: x, + wstrb: '1, + wlast: True, + wuser: fabric_default_user}; + master_xactor.i_wr_addr.enq (mem_req_wr_addr); + master_xactor.i_wr_data.enq (mem_req_wr_data); + endaction + endfunction + + function Action fa_write_rsp; + action + let wr_resp <- pop_o (master_xactor.o_wr_resp); + + if (wr_resp.bresp != axi4_resp_okay) begin + $display ("ERROR: rl_discard_write_rsp: fabric response error"); + $display (" ", fshow (wr_resp)); + end + endaction + endfunction + + // ================================================================ + // Help functions to interact with PLIC at an "API" level + + function Action fa_print_plic_eips (); + action + $write ("PLIC.v_target eip ="); + $write (" ", fshow (plic.v_targets [0].m_eip)); + $write (" ", fshow (plic.v_targets [1].m_eip)); + $display (""); + endaction + endfunction + + function Stmt fstmt_set_source_priority (Integer src, Priority prio); + return seq + fa_write_req (src * 4, zeroExtend (prio)); + fa_write_rsp; + endseq; + endfunction + + function Stmt fstmt_set_target_ies (Integer target, Bit #(32) ies); + return seq + fa_write_req ('h2000 + (target * 'h80), zeroExtend (ies)); + fa_write_rsp; + endseq; + endfunction + + function Stmt fstmt_set_target_threshold (Integer target, Priority threshold); + return seq + fa_write_req ('h20_0000 + (target * 'h1000), zeroExtend (threshold)); + fa_write_rsp; + endseq; + endfunction + + function Stmt fstmt_claim (Integer target); + return seq + fa_read_req ('h20_0004 + (target * 'h1000)); + fa_read_rsp; + action + let x <- pop (f_read_data); + $display ("fstmt_claim: PLIC returned %0d", x); + endaction + endseq; + endfunction + + function Stmt fstmt_complete (Integer target, Source_Id source_id); + return seq + fa_write_req ('h20_0004 + (target * 'h1000), zeroExtend (source_id)); + fa_write_rsp; + endseq; + endfunction + + // ================================================================ + // BEHAVIOR + + mkConnection (master_xactor.axi_side, plic.axi4_slave); + + // Drive all interrupt requests from local regs + for (Integer j = 0; j < n_external_interrupt_sources; j = j + 1) + rule rl_drive_irq; + plic.v_sources [j].m_interrupt_req (vrg_irqs [j]); + endrule + + // ================================================================ + + Stmt init = seq + action + $display ("Initializing PLIC"); + plic.server_reset.request.put (?); + endaction + action + let rsp <- plic.server_reset.response.get; + plic.set_addr_map (zeroExtend (soc_map.m_plic_addr_base), + zeroExtend (soc_map.m_plic_addr_lim)); + endaction + fstmt_set_source_priority (1, 0); + fstmt_set_source_priority (2, 0); + fstmt_set_source_priority (3, 0); + fstmt_set_source_priority (4, 0); + + fstmt_set_source_priority (5, 0); + fstmt_set_source_priority (6, 0); + fstmt_set_source_priority (7, 0); + fstmt_set_source_priority (8, 0); + + fstmt_set_source_priority (9, 0); + fstmt_set_source_priority (10, 0); + fstmt_set_source_priority (11, 0); + fstmt_set_source_priority (12, 0); + + fstmt_set_source_priority (13, 0); + fstmt_set_source_priority (14, 0); + fstmt_set_source_priority (15, 0); + fstmt_set_source_priority (16, 0); + + fstmt_set_target_ies (target_0, 0); + fstmt_set_target_ies (target_1, 0); + + fstmt_set_target_threshold (target_0, 7); + fstmt_set_target_threshold (target_1, 7); + delay (5); + $display ("Finished Initializing PLIC"); + endseq; + + Stmt test1 = seq + $display (">---------------- TEST 1"); + plic.set_verbosity (1); + fstmt_set_source_priority (5, 4); + + fstmt_set_target_ies (target_0, 'b10_0000); // bit 5 + fstmt_set_target_threshold (target_0, 4); + + fstmt_set_target_ies (target_1, 'b10_0000); // bit 5 + fstmt_set_target_threshold (target_1, 2); + + plic.show_PLIC_state; + fa_print_plic_eips; + + vrg_irqs [5] <= True; + delay (2); + plic.show_PLIC_state; + fa_print_plic_eips; + + fstmt_set_target_threshold (target_0, 3); + plic.show_PLIC_state; + fa_print_plic_eips; + + fstmt_claim (target_1); + plic.show_PLIC_state; + fa_print_plic_eips; + + fstmt_complete (target_1, 5); + plic.show_PLIC_state; + fa_print_plic_eips; + endseq; + + // ================================================================ + + mkAutoFSM (seq + init; + test1; + $finish (0); + endseq); + + +endmodule + +// ================================================================ + +endpackage diff --git a/src_Core/RISCY_OOO/LICENSE_RISCY-OOO b/src_Core/RISCY_OOO/LICENSE_RISCY-OOO new file mode 100644 index 0000000..88882da --- /dev/null +++ b/src_Core/RISCY_OOO/LICENSE_RISCY-OOO @@ -0,0 +1,21 @@ +Copyright (c) 2017, 2018 Massachusetts Institute of Technology + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src_Core/RISCY_OOO/Makefile b/src_Core/RISCY_OOO/Makefile new file mode 100644 index 0000000..54ac990 --- /dev/null +++ b/src_Core/RISCY_OOO/Makefile @@ -0,0 +1,153 @@ +# This Makefile copies source BSV files from the MIT riscy-OOO repo +# for use in the Bluespec environment + +RISCY_HOME = ~/Projects/RISCV/MIT-riscy/riscy-OOO + +copyfiles: copy_RV64_OOO_files copy_procs_lib_files copy_coherence_src_files copy_fpgautils_files copy_connectal_files + +PROCS_RV64G_OOO = procs/RV64G_OOO +.PHONY: copy_RV64_OOO_files +copy_RV64_OOO_files: + mkdir -p $(PROCS_RV64G_OOO) + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/AluExePipeline.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/CommitStage.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/FetchStage.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/FpuMulDivExePipeline.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/MemExePipeline.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/ProcConfig.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/RenameStage.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/ReorderBufferSynth.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/ReservationStationAlu.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/ReservationStationFpuMulDiv.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/ReservationStationMem.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/RFileSynth.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/ScoreboardSynth.bsv ./$(PROCS_RV64G_OOO)/ + cp -p $(RISCY_HOME)/$(PROCS_RV64G_OOO)/SynthParam.bsv ./$(PROCS_RV64G_OOO)/ + +PROCS_LIB = procs/lib +.PHONY: copy_procs_lib_files +copy_procs_lib_files: + mkdir -p $(PROCS_LIB) + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Amo.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Bht.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/BrPred.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Btb.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Bypass.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/CacheUtils.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/ConcatReg.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Decode.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/DirPredictor.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/DTlb.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Ehr.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/EpochManager.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Exec.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Fifo.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Fpu.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/FullAssocTlb.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/GlobalBrHistReg.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/GlobalSpecUpdate.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/GSelectPred.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/GSharePred.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/HasSpecBits.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/ITlb.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/L1CoCache.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/L1LLConnect.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/L2SetAssocTlb.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/L2Tlb.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/LatencyTimer.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/LLCache.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/LLCDmaConnect.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/LLCRqMshrSecureModel.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MemLoader.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MemLoaderIF.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MemoryTypes.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MMIOAddrs.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MMIOCore.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MMIOInst.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MsgFifo.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/MulDiv.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Performance.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/PhysRFile.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/ProcTypes.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Ras.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/RenameDebugIF.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/RenamingTable.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/ReorderBuffer.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/ReservationStationEhr.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/SafeCounter.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Scoreboard.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/SetAssocTlb.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/SpecFifo.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/SpecPoisonFifo.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/SpecTagManager.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/SplitLSQ.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/StoreBuffer.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/TlbConnect.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/TlbTypes.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/TourPred.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/TourPredSecure.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/TranslationCache.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/Types.bsv ./$(PROCS_LIB)/ + cp -p $(RISCY_HOME)/$(PROCS_LIB)/VerificationPacket.bsv ./$(PROCS_LIB)/ + +COHERENCE_SRC = coherence/src +.PHONY: copy_coherence_src_files +copy_coherence_src_files: + mkdir -p $(COHERENCE_SRC) + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/CCPipe.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/CCTypes.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/CrossBar.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/IBank.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/ICRqMshr.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/IPRqMshr.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/L1Bank.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/L1CRqMshr.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/L1Pipe.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/L1PRqMshr.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/LLBank.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/LLCRqMshr.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/LLPipe.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/MshrDeadlockChecker.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/RandomReplace.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/RWBramCore.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/SelfInvIBank.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/SelfInvIPipe.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/SelfInvL1Bank.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/SelfInvL1Pipe.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/SelfInvLLBank.bsv ./$(COHERENCE_SRC)/ + cp -p $(RISCY_HOME)/$(COHERENCE_SRC)/SelfInvLLPipe.bsv ./$(COHERENCE_SRC)/ + +FPGAUTILS_LIB = fpgautils/lib +FPGAUTILS_XILINX_FPU = fpgautils/xilinx/fpu +FPGAUTILS_XILINX_RESET_REGS = fpgautils/xilinx/reset_regs +.PHONY: copy_fpgautils_files +copy_fpgautils_files: + mkdir -p $(FPGAUTILS_LIB) + mkdir -p $(FPGAUTILS_XILINX_FPU) + mkdir -p $(FPGAUTILS_XILINX_RESET_REGS) + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/DramCommon.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/ResetGuard.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/SyncFifo.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/XilinxFpu.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/XilinxIntDiv.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/XilinxIntMul.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/XilinxSyncFifo.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_LIB)/WaitAutoReset.bsv ./$(FPGAUTILS_LIB)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_XILINX_FPU)/fp_sqrt_sim.v ./$(FPGAUTILS_XILINX_FPU)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_XILINX_FPU)/fp_fma_sim.v ./$(FPGAUTILS_XILINX_FPU)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_XILINX_FPU)/fp_div_sim.v ./$(FPGAUTILS_XILINX_FPU)/ + cp -p $(RISCY_HOME)/$(FPGAUTILS_XILINX_RESET_REGS)/reset_guard.v ./$(FPGAUTILS_XILINX_RESET_REGS)/ + +CONNECTAL_BSV = connectal/bsv +CONNECTAL_LIB_BSV = connectal/lib/bsv +CONNECTAL_TESTS_SPI = connectal/tests/spi +.PHONY: copy_connectal_files +copy_connectal_files: + mkdir -p $(CONNECTAL_BSV) + mkdir -p $(CONNECTAL_LIB_BSV) + mkdir -p $(CONNECTAL_TESTS_SPI) + cp -p $(RISCY_HOME)/$(CONNECTAL_BSV)/ConnectalBramFifo.bsv ./$(CONNECTAL_BSV)/ + cp -p $(RISCY_HOME)/$(CONNECTAL_BSV)/ConnectalClocks.bsv ./$(CONNECTAL_BSV)/ + cp -p $(RISCY_HOME)/$(CONNECTAL_LIB_BSV)/Arith.bsv ./$(CONNECTAL_LIB_BSV)/ + cp -p $(RISCY_HOME)/$(CONNECTAL_TESTS_SPI)/ConnectalProjectConfig.bsv ./$(CONNECTAL_TESTS_SPI)/ + tree . diff --git a/src_Core/RISCY_OOO/coherence/src/CCPipe.bsv b/src_Core/RISCY_OOO/coherence/src/CCPipe.bsv new file mode 100644 index 0000000..bb9dede --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/CCPipe.bsv @@ -0,0 +1,408 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Ehr::*; +import Fifo::*; +import Vector::*; +import RWBramCore::*; +import FShow::*; +import Types::*; +import CCTypes::*; + +// general type param ordering: way < index < tag < msi < dir < owner < other < rep < line < pipeCmd + +typedef union tagged { + void Invalid; + msiT DownDir; // cRs downgraded toState + msiT UpCs; // pRs upgraded toState +} RespState#(type msiT) deriving(Bits, Eq, FShow); + +typedef struct { + pipeCmdT cmd; + // tag match & ram output + wayT way; + Bool pRqMiss; // pRq miss, valid only if go through tag match + RamData#(tagT, msiT, dirT, ownerT, otherT, lineT) ram; + // replace info, actually not needed, just output for debug purposes + repT repInfo; +} PipeOut#( + type wayT, + type tagT, + type msiT, + type dirT, + type ownerT, + type otherT, + type repT, + type lineT, + type pipeCmdT +) deriving(Bits, Eq, FShow); + +interface CCPipe#( + numeric type wayNum, + type indexT, + type tagT, + type msiT, + type dirT, + type ownerT, + type otherT, + type repT, + type lineT, + type pipeCmdT +); + method Action enq(pipeCmdT cmd, Maybe#(lineT) respLine, RespState#(msiT) toState); + method Bool notFull; + method PipeOut#(Bit#(TLog#(wayNum)), tagT, msiT, dirT, ownerT, otherT, repT, lineT, pipeCmdT) first; + method PipeOut#(Bit#(TLog#(wayNum)), tagT, msiT, dirT, ownerT, otherT, repT, lineT, pipeCmdT) unguard_first; + method Bool notEmpty; + method Action deqWrite( + Maybe#(pipeCmdT) newCmd, + RamData#(tagT, msiT, dirT, ownerT, otherT, lineT) wrRam, + Bool updateRep // update replacement info + ); + // empty signal when we need to flush self-invalidate cache + method Bool emptyForFlush; +endinterface + +// internal pipeline reg types +// three stages +// 1: enq +// 2: tag match, read data and dir +// 3: output + +typedef struct { + pipeCmdT cmd; + // bypasses + Vector#(wayNum, Maybe#(CacheInfo#(tagT, msiT, dirT, ownerT, otherT))) infoVec; + Maybe#(repT) repInfo; // replacement info for the whole set + // CRs/PRs info + Maybe#(lineT) respLine; + RespState#(msiT) toState; +} Enq2Match#( + numeric type wayNum, + type tagT, + type msiT, + type dirT, + type ownerT, + type otherT, + type repT, + type lineT, + type pipeCmdT +) deriving(Bits, Eq, FShow); + +typedef struct { + pipeCmdT cmd; + // tag match results + wayT way; + Bool pRqMiss; + // RAM outputs + // cs is merged with PRs toState + // dir is merged with CRs toState + CacheInfo#(tagT, msiT, dirT, ownerT, otherT) info; + repT repInfo; + // bypassed or resp line + Maybe#(lineT) line; +} Match2Out#( + type wayT, + type tagT, + type msiT, + type dirT, + type ownerT, + type otherT, + type repT, + type lineT, + type pipeCmdT +) deriving(Bits, Eq, FShow); + +typedef struct { + indexT index; + wayT way; + RamData#(tagT, msiT, dirT, ownerT, otherT, lineT) ram; // data to write into RAM + repT repInfo; // replacement info write into RAM +} BypassInfo#( + type wayT, + type indexT, + type tagT, + type msiT, + type dirT, + type ownerT, + type otherT, + type repT, + type lineT +) deriving(Bits, Eq, FShow); + +typedef struct { + wayT way; + Bool pRqMiss; +} TagMatchResult#(type wayT) deriving(Bits, Eq, FShow); + +typedef struct { + msiT cs; +} UpdateByUpCs#(type msiT) deriving(Bits, Eq, FShow); + +typedef struct { + msiT cs; + dirT dir; +} UpdateByDownDir#(type msiT, type dirT) deriving(Bits, Eq, FShow); + +// index to data ram: {way, normal index} +function dataIndexT getDataRamIndex(wayT w, indexT i) provisos( + Alias#(wayT, Bit#(_waySz)), + Alias#(indexT, Bit#(_indexSz)), + Alias#(dataIndexT, Bit#(TAdd#(_waySz, _indexSz))) +); + return {w, i}; +endfunction + +module mkCCPipe#( + ReadOnly#(Bool) initDone, + function indexT getIndex(pipeCmdT cmd), + function ActionValue#(TagMatchResult#(wayT)) tagMatch( + // actionvalue enable us to do checking inside the function + pipeCmdT cmd, + // below are current RAM outputs, is merged with ram write from final stage + // but is NOT merged with state changes carried in PRs/CRs + Vector#(wayNum, tagT) tagVec, + Vector#(wayNum, msiT) csVec, + Vector#(wayNum, ownerT) ownerVec, + repT repInfo + ), + function ActionValue#(UpdateByUpCs#(msiT)) updateByUpCs( + pipeCmdT cmd, msiT toState, Bool dataValid, msiT oldCs + ), + function ActionValue#(UpdateByDownDir#(msiT, dirT)) updateByDownDir( + pipeCmdT cmd, msiT toState, Bool dataValid, msiT oldCs, dirT oldDir + ), + function ActionValue#(repT) updateRepInfo(repT oldRep, wayT hitWay), + Vector#(wayNum, RWBramCore#(indexT, infoT)) infoRam, + RWBramCore#(indexT, repT) repRam, + RWBramCore#(dataIndexT, lineT) dataRam +)( + CCPipe#(wayNum, indexT, tagT, msiT, dirT, ownerT, otherT, repT, lineT, pipeCmdT) +) provisos ( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(_indexSz)), + Alias#(infoT, CacheInfo#(tagT, msiT, dirT, ownerT, otherT)), + Alias#(ramDataT, RamData#(tagT, msiT, dirT, ownerT, otherT, lineT)), + Alias#(respStateT, RespState#(msiT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, msiT, dirT, ownerT, otherT, repT, lineT, pipeCmdT)), + Alias#(enq2MatchT, Enq2Match#(wayNum, tagT, msiT, dirT, ownerT, otherT, repT, lineT, pipeCmdT)), + Alias#(match2OutT, Match2Out#(wayT, tagT, msiT, dirT, ownerT, otherT, repT, lineT, pipeCmdT)), + Alias#(bypassInfoT, BypassInfo#(wayT, indexT, tagT, msiT, dirT, ownerT, otherT, repT, lineT)), + Bits#(tagT, _tagSz), + Bits#(msiT, _msiSz), + Bits#(dirT, _dirSz), + Bits#(ownerT, _ownerSz), + Bits#(otherT, _otherSz), + Bits#(repT, _repSz), + Bits#(lineT, _lineSz), + Bits#(pipeCmdT, _pipeCmdSz), + // index to data ram: {way, normal index} + Alias#(dataIndexT, Bit#(TAdd#(TLog#(wayNum), _indexSz))) +); + + // pipeline regs + + Ehr#(3, Maybe#(enq2MatchT)) enq2Mat <- mkEhr(Invalid); + // port 0: bypass + Reg#(Maybe#(enq2MatchT)) enq2Mat_bypass = enq2Mat[0]; + // port 1: tag match + Reg#(Maybe#(enq2MatchT)) enq2Mat_match = enq2Mat[1]; + // port 2: enq + Reg#(Maybe#(enq2MatchT)) enq2Mat_enq = enq2Mat[2]; + + Ehr#(2, Maybe#(match2OutT)) mat2Out <- mkEhr(Invalid); + // port 0: out + Reg#(Maybe#(match2OutT)) mat2Out_out = mat2Out[0]; + // port 1: tag match + Reg#(Maybe#(match2OutT)) mat2Out_match = mat2Out[1]; + + // bypass write to ram + RWire#(bypassInfoT) bypass <- mkRWire; + + // stage 2: first get bypass + (* fire_when_enabled, no_implicit_conditions *) + rule doMatch_bypass(isValid(bypass.wget) && isValid(enq2Mat_bypass) && initDone); + bypassInfoT b = fromMaybe(?, bypass.wget); + enq2MatchT e2m = fromMaybe(?, enq2Mat_bypass); + if(b.index == getIndex(e2m.cmd)) begin + e2m.infoVec[b.way] = Valid (b.ram.info); + e2m.repInfo = Valid (b.repInfo); + end + enq2Mat_bypass <= Valid (e2m); + endrule + + rule doTagMatch(isValid(enq2Mat_match) && !isValid(mat2Out_match) && initDone); + enq2MatchT e2m = fromMaybe(?, enq2Mat_match); + // get cache output & merge with bypass + Vector#(wayNum, infoT) infoVec; + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + infoRam[i].deqRdResp; + infoVec[i] = fromMaybe(infoRam[i].rdResp, e2m.infoVec[i]); + end + repRam.deqRdResp; + repT repInfo = fromMaybe(repRam.rdResp, e2m.repInfo); + // do tag match to get way to occupy + Vector#(wayNum, tagT) tagVec; + Vector#(wayNum, msiT) csVec; + Vector#(wayNum, ownerT) ownerVec; + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + tagVec[i] = infoVec[i].tag; + csVec[i] = infoVec[i].cs; + ownerVec[i] = infoVec[i].owner; + end + let tmRes <- tagMatch(e2m.cmd, tagVec, csVec, ownerVec, repInfo); + wayT way = tmRes.way; + Bool pRqMiss = tmRes.pRqMiss; + // read data + indexT index = getIndex(e2m.cmd); + dataRam.rdReq(getDataRamIndex(way, index)); + // set mat2out & merge with CRs/PRs & merge with data bypass + // resp data has higher priority than data bypass + match2OutT m2o = Match2Out { + cmd: e2m.cmd, + way: way, + pRqMiss: pRqMiss, + info: infoVec[way], + repInfo: repInfo, + line: e2m.respLine + }; + if(e2m.toState matches tagged UpCs .s) begin + UpdateByUpCs#(msiT) upd <- updateByUpCs( + e2m.cmd, s, isValid(e2m.respLine), m2o.info.cs + ); + m2o.info.cs = upd.cs; + end + else if(e2m.toState matches tagged DownDir .s) begin + UpdateByDownDir#(msiT, dirT) upd <- updateByDownDir( + e2m.cmd, s, isValid(e2m.respLine), m2o.info.cs, m2o.info.dir + ); + m2o.info.cs = upd.cs; + m2o.info.dir = upd.dir; + end + if(bypass.wget matches tagged Valid .b &&& b.index == index &&& b.way == way &&& !isValid(m2o.line)) begin + // bypass has lower priority than resp data + m2o.line = Valid (b.ram.line); + end + mat2Out_match <= Valid (m2o); + // reset enq2mat + enq2Mat_match <= Invalid; + endrule + + // construct output with bypass/resp data + function pipeOutT firstOut; + match2OutT m2o = fromMaybe(?, mat2Out_out); + return PipeOut { + cmd: m2o.cmd, + way: m2o.way, + pRqMiss: m2o.pRqMiss, + ram: RamData { + info: m2o.info, + line: fromMaybe(dataRam.rdResp, m2o.line) + }, + repInfo: m2o.repInfo + }; + endfunction + + Bool enq_guard = !isValid(enq2Mat_enq) && initDone; + + Bool deq_guard = isValid(mat2Out_out) && initDone; + + // stage 1: enq req to pipeline: access info+rep RAM & bypass + method Action enq(pipeCmdT cmd, Maybe#(lineT) respLine, respStateT toState) if(enq_guard); + // read ram + indexT index = getIndex(cmd); + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + infoRam[i].rdReq(index); + end + repRam.rdReq(index); + // write reg & get bypass + enq2MatchT e2m = Enq2Match { + cmd: cmd, + infoVec: replicate(Invalid), + repInfo: Invalid, + respLine: respLine, + toState: toState + }; + if(bypass.wget matches tagged Valid .b &&& b.index == index) begin + e2m.infoVec[b.way] = Valid (b.ram.info); + e2m.repInfo = Valid (b.repInfo); + end + enq2Mat_enq <= Valid (e2m); + endmethod + + method Bool notFull = enq_guard; + + method pipeOutT first if(deq_guard); + return firstOut; + endmethod + + method pipeOutT unguard_first; + return firstOut; + endmethod + + method Bool notEmpty = deq_guard; + + method Action deqWrite(Maybe#(pipeCmdT) newCmd, ramDataT wrRam, Bool updateRep) if(deq_guard); + match2OutT m2o = fromMaybe(?, mat2Out_out); + wayT way = m2o.way; + indexT index = getIndex(m2o.cmd); + // update replacement info + repT repInfo = m2o.repInfo; + if(updateRep) begin + repInfo <- updateRepInfo(m2o.repInfo, way); + end + // write ram + infoRam[way].wrReq(index, wrRam.info); + repRam.wrReq(index, repInfo); + dataRam.wrReq(getDataRamIndex(way, index), wrRam.line); + // set bypass to Enq and Match stages + bypass.wset(BypassInfo { + index: index, + way: way, + ram: wrRam, + repInfo: repInfo + }); + // change pipeline reg + if(newCmd matches tagged Valid .cmd) begin + // update pipeline reg + mat2Out_out <= Valid (Match2Out { + cmd: cmd, // swapped in new cmd + way: way, // keep way same + pRqMiss: False, // reset (not valid for swapped in pRq) + info: wrRam.info, // get bypass + repInfo: repInfo, // get bypass + line: Valid (wrRam.line) // get bypass + }); + end + else begin + // XXX deq ram resp, I think this should not block + dataRam.deqRdResp; + // reset pipeline reg + mat2Out_out <= Invalid; + end + endmethod + + method Bool emptyForFlush; + return !isValid(mat2Out[0]) && !isValid(enq2Mat[0]); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/CCTypes.bsv b/src_Core/RISCY_OOO/coherence/src/CCTypes.bsv new file mode 100644 index 0000000..f2f5f21 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/CCTypes.bsv @@ -0,0 +1,464 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; // import from RISCY repo +import MemoryTypes::*; // import from RISCY repo +import Vector::*; +import FShow::*; +import CacheUtils::*; +import Assert::*; +import Connectable::*; +import GetPut::*; +import ClientServer::*; + +typedef enum { + I = 2'd0, + S = 2'd1, + E = 2'd2, + M = 2'd3 +} MESI deriving(Bits, Eq, FShow); +typedef MESI Msi; + +instance Ord#(MESI); + function Bool \< ( MESI x, MESI y ); + return pack(x) < pack(y); + endfunction + function Bool \<= ( MESI x, MESI y ); + return pack(x) <= pack(y); + endfunction + function Bool \> ( MESI x, MESI y ); + return pack(x) > pack(y); + endfunction + function Bool \>= ( MESI x, MESI y ); + return pack(x) >= pack(y); + endfunction + function Ordering compare( MESI x, MESI y ); + return compare(pack(x), pack(y)); + endfunction + function MESI min( MESI x, MESI y ); + return x < y ? x : y; + endfunction + function MESI max( MESI x, MESI y ); + return x > y ? x : y; + endfunction +endinstance + +// whether cache state is enough to serice upgrade req, i.e., no +// need to req parent +function Bool enoughCacheState(Msi cs, Msi to); + return cs >= to || cs >= E; +endfunction + +// the maximum dir state that a peer can have so that it will not +// be downgraded to service upgrade req to state x +function Msi toCompat(Msi x); + return x == S ? S : I; +endfunction + +typedef TDiv#(DataSz, 8) DataSzBytes; +typedef TLog#(DataSzBytes) LgDataSzBytes; +typedef Bit#(LgDataSzBytes) DataBytesOffset; + +typedef TDiv#(InstSz, 8) InstSzBytes; +typedef TLog#(InstSzBytes) LgInstSzBytes; + +// 64B cache line -- XXX same with parameters in CacheUtils.bsv +typedef CacheUtils::LogCLineNumData LgLineSzData; +typedef CacheUtils::LogCLineNumBytes LgLineSzBytes; +typedef CacheUtils::CLineAddrSz LineAddrSz; +typedef CacheUtils::CLineAddr LineAddr; + +typedef CacheUtils::CLineNumData LineSzData; +typedef CacheUtils::CLineDataSel LineDataOffset; + +typedef CacheUtils::CLineNumBytes LineSzBytes; +typedef CacheUtils::CLineByteEn LineByteEn; + +typedef TDiv#(LineSzBytes, InstSzBytes) LineSzInst; +typedef Bit#(TLog#(LineSzInst)) LineInstOffset; + +typedef Vector#(LineSzData, Data) Line; + +function LineAddr getLineAddr(Addr addr) = truncateLSB(addr); + +function LineDataOffset getLineDataOffset(Addr a); + return truncate(a >> valueOf(LgDataSzBytes)); +endfunction + +function LineInstOffset getLineInstOffset(Addr a); + return truncate(a >> valueof(LgInstSzBytes)); +endfunction + +function Line getUpdatedLine(Line curLine, LineByteEn wrBE, Line wrLine); + Vector#(LineSzBytes, Bit#(8)) curVec = unpack(pack(curLine)); + Vector#(LineSzBytes, Bit#(8)) wrVec = unpack(pack(wrLine)); + function Bit#(8) getNewByte(Integer i); + return wrBE[i] ? wrVec[i] : curVec[i]; + endfunction + Vector#(LineSzBytes, Bit#(8)) newVec = map(getNewByte, genVector); + return unpack(pack(newVec)); +endfunction + +function Data getUpdatedData(Data curData, ByteEn wrBE, Data wrData); + Vector#(DataSzBytes, Bit#(8)) curVec = unpack(pack(curData)); + Vector#(DataSzBytes, Bit#(8)) wrVec = unpack(pack(wrData)); + function Bit#(8) getNewByte(Integer i); + return wrBE[i] ? wrVec[i] : curVec[i]; + endfunction + Vector#(DataSzBytes, Bit#(8)) newVec = map(getNewByte, genVector); + return pack(newVec); +endfunction + +// calculate tag +typedef TSub#(AddrSz, TAdd#(LgLineSzBytes, TAdd#(lgBankNum, lgSetNum))) + GetTagSz#(numeric type lgBankNum, numeric type lgSetNum); + +// dependency tracking in MSHR +typedef union tagged { + cRqIdxT CRq; + pRqIdxT PRq; +} MshrIndex#(type cRqIdxT, type pRqIdxT) deriving(Bits, Eq, FShow); + +// cache owner +typedef struct { + cRqIdxT mshrIdx; + Bool replacing; +} CRqOwner#(type cRqIdxT) deriving(Bits, Eq, FShow); + +typedef struct { + pRqIdxT mshrIdx; + Bool hasSucc; // has successor in dependency chain +} PRqOwner#(type pRqIdxT) deriving(Bits, Eq, FShow); + +typedef union tagged { + void Invalid; + CRqOwner#(cRqIdxT) CRq; + PRqOwner#(pRqIdxT) PRq; +} CacheOwner#(type cRqIdxT, type pRqIdxT) deriving(Bits, Eq, FShow); + +// cache info: tag, cs, dir, owner, and other +typedef struct { + tagT tag; + msiT cs; + dirT dir; + ownerT owner; + otherT other; +} CacheInfo#( + type tagT, + type msiT, + type dirT, + type ownerT, + type otherT +) deriving(Bits, Eq, FShow); + +// ram output +typedef struct { + CacheInfo#(tagT, msiT, dirT, ownerT, otherT) info; + lineT line; +} RamData#( + type tagT, + type msiT, + type dirT, + type ownerT, + type otherT, + type lineT +) deriving(Bits, Eq, FShow); + +// processor req/resp +typedef struct { + idT id; + Addr addr; + Msi toState; + // below are detailed mem op + MemOp op; // Ld, St, Lr, Sc, Amo + ByteEn byteEn; // valid when op == Sc + Data data; // valid when op == Sc/Amo + AmoInst amoInst; // valid when op == Amo +} ProcRq#(type idT) deriving(Bits, Eq, FShow); + +interface L1ProcReq#(type idT); + method Action req(ProcRq#(idT) r); +endinterface + +interface L1ProcResp#(type idT); + method Action respLd(idT id, Data resp); + method Action respLrScAmo(idT id, Data resp); + method ActionValue#(Tuple2#(LineByteEn, Line)) respSt(idT id); + method Action evict(LineAddr a); // called when cache line is evicted +endinterface + +// RISCV-specific store-cond return values +typedef 0 ScSuccVal; +typedef 1 ScFailVal; + +`ifdef DEBUG_ICACHE +typedef struct { + Bit#(64) id; + Line line; +} DebugICacheResp deriving(Bits, Eq, FShow); +`endif + +// I$ req/resp +interface InstServer#(numeric type supSz); + interface Put#(Addr) req; + interface Get#(Vector#(supSz, Maybe#(Instruction))) resp; +`ifdef DEBUG_ICACHE + interface Get#(DebugICacheResp) done; // the id and cache line of the I$ req that truly performs +`endif +endinterface + +typedef struct { + Addr addr; +`ifdef DEBUG_ICACHE + Bit#(64) id; // incremening id for each incoming I$ req (0,1,...) +`endif +} ProcRqToI deriving(Bits, Eq, FShow); + +// child/parent req/resp +typedef struct { + Addr addr; + Msi fromState; + Msi toState; + Bool canUpToE; // meaningful to upgrade to E if toState is S + idT id; // slot id in child cache + childT child; // from which child +} CRqMsg#(type idT, type childT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + Maybe#(Line) data; + childT child; // from which child +} CRsMsg#(type childT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + childT child; // to which child +} PRqMsg#(type childT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + childT child; // to which child + Maybe#(Line) data; + idT id; // slot id in cache +} PRsMsg#(type idT, type childT) deriving(Bits, Eq, FShow); + +typedef union tagged { + PRqMsg#(childT) PRq; + PRsMsg#(idT, childT) PRs; +} PRqRsMsg#(type idT, type childT) deriving(Bits, Eq, FShow); + +interface ChildCacheToParent#(type cRqIdT, type childT); + interface FifoDeq#(CRsMsg#(childT)) rsToP; + interface FifoDeq#(CRqMsg#(cRqIdT, childT)) rqToP; + interface FifoEnq#(PRqRsMsg#(cRqIdT, childT)) fromP; +endinterface + +interface ParentCacheToChild#(type cRqIdT, type childT); + interface FifoEnq#(CRsMsg#(childT)) rsFromC; + interface FifoEnq#(CRqMsg#(cRqIdT, childT)) rqFromC; + interface FifoDeq#(PRqRsMsg#(cRqIdT, childT)) toC; +endinterface + +// unified child req & dma req +typedef union tagged { + cRqIdT Child; + dmaRqIdT Dma; +} LLRqId#(type cRqIdT, type dmaRqIdT) deriving(Bits, Eq, FShow); + +typedef struct { + // common addr + Addr addr; + // child req stuff + Msi fromState; + Msi toState; + Bool canUpToE; + childT child; + // dma req stuff + LineByteEn byteEn; + // req id: distinguish between child and dma + LLRqId#(cRqIdT, dmaRqIdT) id; +} LLRq#(type cRqIdT, type dmaRqIdT, type childT) deriving(Bits, Eq, FShow); + +// memory msg +typedef struct { + Addr addr; + childT child; // from which LLC/Dir + idT id; // ld req id and other info need encoding +} LdMemRq#(type idT, type childT) deriving(Bits, Eq, FShow); + +typedef struct { // LdMemRq id with more info encoded to handle DMA req in LLC + Bool refill; // the future mem resp will refill LLC cache line + // this is False for DMA read req that miss in LLC (i.e. resp won't refill LLC) + mshrIdxT mshrIdx; // mshr id +} LdMemRqId#(type mshrIdxT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + LineByteEn byteEn; + Line data; +} WbMemRs deriving(Bits, Eq, FShow); + +typedef union tagged { + LdMemRq#(idT, childT) Ld; + WbMemRs Wb; +} ToMemMsg#(type idT, type childT) deriving(Bits, Eq, FShow); + +typedef struct { + Line data; + childT child; // send to which LLC/Dir + idT id; // original Ld req id +} MemRsMsg#(type idT, type childT) deriving(Bits, Eq, FShow); + +// Dma req/resp +typedef struct { + Addr addr; + LineByteEn byteEn; // all False means read + Line data; + idT id; // req id (resp may come out of order, may contain routing info) +} DmaRq#(type idT) deriving(Bits, Eq, FShow); + +typedef struct { + Line data; // meaningless for write + idT id; +} DmaRs#(type idT) deriving(Bits, Eq, FShow); + +interface DmaServer#(type dmaRqIdT); + interface FifoEnq#(DmaRq#(dmaRqIdT)) memReq; + interface FifoDeq#(DmaRs#(dmaRqIdT)) respLd; + interface FifoDeq#(dmaRqIdT) respSt; +`ifdef DEBUG_DMA + // signal when DMA req really takes effect + interface Get#(dmaRqIdT) wrMissResp; + interface Get#(dmaRqIdT) wrHitResp; + interface Get#(dmaRqIdT) rdMissResp; + interface Get#(dmaRqIdT) rdHitResp; +`endif +endinterface + +// memory interface +interface MemFifoServer#(type idT, type childT); + interface FifoEnq#(ToMemMsg#(idT, childT)) fromC; + interface FifoDeq#(MemRsMsg#(idT, childT)) rsToC; +endinterface + +interface MemFifoClient#(type idT, type childT); + interface FifoDeq#(ToMemMsg#(idT, childT)) toM; + interface FifoEnq#(MemRsMsg#(idT, childT)) rsFromM; +endinterface + +instance Connectable#(MemFifoServer#(idT, childT), MemFifoClient#(idT, childT)); + module mkConnection#( + MemFifoServer#(idT, childT) server, + MemFifoClient#(idT, childT) client + )(Empty); + rule doCToM; + client.toM.deq; + server.fromC.enq(client.toM.first); + endrule + rule doMToC; + server.rsToC.deq; + client.rsFromM.enq(server.rsToC.first); + endrule + endmodule +endinstance + +instance Connectable#(MemFifoClient#(idT, childT), MemFifoServer#(idT, childT)); + module mkConnection#( + MemFifoClient#(idT, childT) client, + MemFifoServer#(idT, childT) server + )(Empty); + mkConnection(server, client); + endmodule +endinstance + +// MSHR dir pending bits +typedef union tagged { + void Invalid; + Msi ToSend; // need to send down req to downgrade to some state + Msi Waiting; // waiting for down resp for some state +} DirPend deriving(Bits, Eq, FShow); + +function Vector#(childNum, DirPend) getDirPendInitVal; + return replicate(Invalid); +endfunction + +function Bool getNeedReqChild(Vector#(childNum, DirPend) dirPend); + // function to determine whether we need to send req to some children + function Bool isToSend(DirPend dp); + if(dp matches tagged ToSend .s) begin + return True; + end + else begin + return False; + end + endfunction + return any(isToSend, dirPend); +endfunction + +// Self-inv cache dir pending bits +typedef union tagged { + void Invalid; + childT ToSend; + childT Waiting; +} SelfInvDirPend#(type childT) deriving(Bits, Eq, FShow); + +function SelfInvDirPend#(childT) getSelfInvDirPendInitVal; + return Invalid; +endfunction + +function Bool getSelfInvNeedReqChild(SelfInvDirPend#(childT) dirPend); + return dirPend matches tagged ToSend .c ? True : False; +endfunction + +// useful functions +function Action check(Bool v); +action + when(v, noAction); +endaction +endfunction + +function Maybe#(Bit#(logv)) searchIndex + (function Bool pred(element_type x1), Vector#(vsize, element_type) vect) + provisos (Log#(vsize, logv)); + return case (findIndex(pred, vect)) matches + tagged Valid .idx: return tagged Valid pack(idx); + Invalid: return tagged Invalid; + endcase; +endfunction + +function a readReg(Reg#(a) r) provisos(Bits#(a, aSz)) = r; +function Vector#(n, a) readVector(Vector#(n, Reg#(a)) vr) provisos(Bits#(a, aSz)) = map(readReg, vr); + +// doAssert now defined in Types.bsv +//function Action doAssert(Bool b, String str) = dynamicAssert(b, "%m: " + str); + +function Get#(t) nullGet; + return (interface Get; + method ActionValue#(t) get if(False); + return ?; + endmethod + endinterface); +endfunction diff --git a/src_Core/RISCY_OOO/coherence/src/CrossBar.bsv b/src_Core/RISCY_OOO/coherence/src/CrossBar.bsv new file mode 100644 index 0000000..f9f2b2b --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/CrossBar.bsv @@ -0,0 +1,215 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import GetPut::*; +import Connectable::*; +import CacheUtils::*; +import CCTypes::*; +import Types::*; +import FShow::*; +import Fifo::*; +import Ehr::*; + +typedef struct { + dstIdxT idx; + dstDataT data; +} XBarDstInfo#(type dstIdxT, type dstDataT) deriving(Bits, Eq); + +module mkXBar#( + function XBarDstInfo#(dstIdxT, dstDataT) getDstInfo(srcIdxT idx, srcDataT data), + Vector#(srcNum, Get#(srcDataT)) srcIfc, + Vector#(dstNum, Put#(dstDataT)) dstIfc +)(Empty) provisos( + Alias#(srcIdxT, Bit#(TLog#(srcNum))), + Alias#(dstIdxT, Bit#(TLog#(dstNum))), + Bits#(srcDataT, _srcDataSz), + Bits#(dstDataT, _dstDataSz), + FShow#(dstDataT) +); + // proposed data transfer by each src + Vector#(srcNum, Ehr#(2, Maybe#(dstIdxT))) propDstIdx <- replicateM(mkEhr(Invalid)); + Vector#(srcNum, Ehr#(2, dstDataT)) propDstData <- replicateM(mkEhr(?)); + // enq command that should be carried out + Vector#(dstNum, Ehr#(2, Maybe#(dstDataT))) enqDst <- replicateM(mkEhr(Invalid)); + + // src propose data transfer when src is not empty + // and there is no unfinished src proposal + for(Integer i = 0; i < valueOf(srcNum); i = i+1) begin + rule srcPropose(!isValid(propDstIdx[i][0])); + let d <- srcIfc[i].get; + let info = getDstInfo(fromInteger(i), d); + propDstIdx[i][0] <= Valid (info.idx); + propDstData[i][0] <= info.data; + endrule + end + + // round-robin select src for each dst + Vector#(dstNum, Reg#(srcIdxT)) srcRR <- replicateM(mkReg(0)); + + // do selection for each dst & generate enq commands & deq src proposals + // dst which has unfinished enq command cannot select src + (* fire_when_enabled, no_implicit_conditions *) + rule dstSelectSrc; + // which src to deq (i.e. select) by each dst + Vector#(dstNum, Maybe#(srcIdxT)) deqSrcByDst = replicate(Invalid); + // each dst selects + for(Integer dst = 0; dst < valueOf(dstNum); dst = dst + 1) begin + // only select src to deq when dst has no unfinished enq command + if(!isValid(enqDst[dst][0])) begin + function Bool isFromSrc(srcIdxT src); + // src has proposed data to this dst or not + if(propDstIdx[src][1] matches tagged Valid .dstIdx &&& dstIdx == fromInteger(dst)) begin + return True; + end + else begin + return False; + end + endfunction + Maybe#(srcIdxT) whichSrc = Invalid; // the src to select + if(isFromSrc(srcRR[dst])) begin + // first check the src with priority + whichSrc = Valid (srcRR[dst]); + end + else begin + // otherwise just get one valid src + Vector#(srcNum, srcIdxT) srcIdxVec = genWith(fromInteger); + whichSrc = searchIndex(isFromSrc, srcIdxVec); + end + if(whichSrc matches tagged Valid .src) begin + // can do enq & deq + deqSrcByDst[dst] = whichSrc; + enqDst[dst][0] <= Valid (propDstData[src][1]); // set enq command + // change round robin + srcRR[dst] <= srcRR[dst] == fromInteger(valueOf(srcNum) - 1) ? 0 : srcRR[dst] + 1; + end + end + end + + // deq selected src + function Bool isDeqSrc(srcIdxT src); + function Bool isMatch(Maybe#(srcIdxT) deqIdx); + return deqIdx matches tagged Valid .idx &&& idx == src ? True : False; + endfunction + return any(isMatch, deqSrcByDst); + endfunction + for(Integer i = 0; i < valueOf(srcNum); i = i+1) begin + if(isDeqSrc(fromInteger(i))) begin + propDstIdx[i][1] <= Invalid; + $display("%t XBar %m: deq src %d", $time, i); + doAssert(isValid(propDstIdx[i][1]), "src must be proposing"); + end + end + endrule + + // enq dst & change round robin + for(Integer i = 0; i < valueOf(dstNum); i = i+1) begin + // XXX since dstIfc.put may conflict with other rules + // the following rule should only fire when it can make progress + // otherwise it may prevent other rules from firing forever + rule doEnq(enqDst[i][1] matches tagged Valid .d); + dstIfc[i].put(d); + enqDst[i][1] <= Invalid; // reset enq command + $display("%t XBAR %m: enq dst %d ; ", $time, i, fshow(d)); + endrule + end +endmodule + +// XBar with latency added at src or dst (mainly for model timing) +interface XBarDelay#(numeric type srcLat, numeric type dstLat); +endinterface + +module mkXBarDelay#( + function XBarDstInfo#(dstIdxT, dstDataT) getDstInfo(srcIdxT idx, srcDataT data), + Vector#(srcNum, Get#(srcDataT)) srcIfc, + Vector#(dstNum, Put#(dstDataT)) dstIfc +)(XBarDelay#(srcLat, dstLat)) provisos( + Alias#(srcIdxT, Bit#(TLog#(srcNum))), + Alias#(dstIdxT, Bit#(TLog#(dstNum))), + Bits#(srcDataT, _srcDataSz), + Bits#(dstDataT, _dstDataSz), + FShow#(dstDataT) +); + // Add latency at src side + Vector#(srcNum, Get#(srcDataT)) src = srcIfc; + if(valueof(srcLat) > 0) begin + for(Integer i = 0; i < valueof(srcNum); i = i+1) begin + Vector#(srcLat, Fifo#(2, srcDataT)) delayQ <- replicateM(mkCFFifo); + mkConnection(srcIfc[i], toPut(delayQ[0])); + for(Integer j = 0; j < valueof(srcLat) - 1; j = j+1) begin + mkConnection(toGet(delayQ[j]), toPut(delayQ[j + 1])); + end + src[i] = toGet(delayQ[valueof(srcLat) - 1]); + end + end + + // Add latency at dst side + Vector#(dstNum, Put#(dstDataT)) dst = dstIfc; + if(valueof(dstLat) > 0) begin + for(Integer i = 0; i < valueof(dstNum); i = i+1) begin + Vector#(dstLat, Fifo#(2, dstDataT)) delayQ <- replicateM(mkCFFifo); + mkConnection(toGet(delayQ[0]), dstIfc[i]); + for(Integer j = 0; j < valueof(dstLat) - 1; j = j+1) begin + mkConnection(toGet(delayQ[j + 1]), toPut(delayQ[j])); + end + dst[i] = toPut(delayQ[valueof(dstLat) - 1]); + end + end + + mkXBar(getDstInfo, src, dst); +endmodule + +interface CrossBar#( + numeric type srcNum, + numeric type srcLat, + type srcDataT, + numeric type dstNum, + numeric type dstLat, + type dstDataT +); + interface Vector#(srcNum, FifoEnq#(srcDataT)) srcIfc; + interface Vector#(dstNum, FifoDeq#(dstDataT)) dstIfc; +endinterface + +module mkCrossBar#( + function XBarDstInfo#(dstIdxT, dstDataT) getDstInfo(srcIdxT idx, srcDataT data) +)( + CrossBar#(srcNum, srcLat, srcDataT, dstNum, dstLat, dstDataT) +) provisos( + Alias#(srcIdxT, Bit#(TLog#(srcNum))), + Alias#(dstIdxT, Bit#(TLog#(dstNum))), + Bits#(srcDataT, _srcDataSz), + Bits#(dstDataT, _dstDataSz), + FShow#(dstDataT) +); + + // in/out FIFOs + Vector#(srcNum, Fifo#(2, srcDataT)) srcQ <- replicateM(mkCFFifo); + Vector#(dstNum, Fifo#(2, dstDataT)) dstQ <- replicateM(mkCFFifo); + + XBarDelay#(srcLat, dstLat) xbar <- mkXBarDelay(getDstInfo, map(toGet, srcQ), map(toPut, dstQ)); + + interface srcIfc = map(toFifoEnq, srcQ); + interface dstIfc = map(toFifoDeq, dstQ); +endmodule + diff --git a/src_Core/RISCY_OOO/coherence/src/IBank.bsv b/src_Core/RISCY_OOO/coherence/src/IBank.bsv new file mode 100644 index 0000000..bc56cf0 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/IBank.bsv @@ -0,0 +1,849 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Types::*; +import MemoryTypes::*; +import Amo::*; + +import Cntrs::*; +import Vector::*; +import ConfigReg::*; +import FIFO::*; +import GetPut::*; +import ClientServer::*; +import CCTypes::*; +import ICRqMshr::*; +import IPRqMshr::*; +import CCPipe::*; +import L1Pipe ::*; +import FShow::*; +import DefaultValue::*; +import Fifo::*; +import CacheUtils::*; +import Performance::*; +import LatencyTimer::*; +import RandomReplace::*; + +export ICRqStuck(..); +export IPRqStuck(..); +export IBank(..); +export mkIBank; + +// L1 I$ + +// although pRq never appears in dependency chain +// we still need pRq MSHR to limit the number of pRq +// and thus limit the size of rsToPIndexQ + +typedef struct { + Addr addr; + ICRqState state; + Bool waitP; +} ICRqStuck deriving(Bits, Eq, FShow); + +typedef IPRqMshrStuck IPRqStuck; + +interface IBank#( + numeric type supSz, // superscalar size + numeric type lgBankNum, + numeric type wayNum, + numeric type indexSz, + numeric type tagSz, + numeric type cRqNum, + numeric type pRqNum +); + interface ChildCacheToParent#(Bit#(TLog#(wayNum)), void) to_parent; + interface InstServer#(supSz) to_proc; // to child, i.e. processor + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(ICRqStuck) cRqStuck; + interface Get#(IPRqStuck) pRqStuck; + // security: flush + method Action flush; + method Bool flush_done; + // performance + method Action setPerfStatus(Bool stats); + method Data getPerfData(L1IPerfType t); +endinterface + +module mkIBank#( + Bit#(lgBankNum) bankId, + module#(ICRqMshr#(cRqNum, wayT, tagT, procRqT, resultT)) mkICRqMshrLocal, + module#(IPRqMshr#(pRqNum)) mkIPRqMshrLocal, + module#(L1Pipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT, pRqIdxT)) mkL1Pipeline +)( + IBank#(supSz, lgBankNum, wayNum, indexSz, tagSz, cRqNum, pRqNum) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(TLog#(cRqNum))), + Alias#(pRqIdxT, Bit#(TLog#(pRqNum))), + Alias#(cacheOwnerT, Maybe#(cRqIdxT)), // owner cannot be pRq + Alias#(cacheInfoT, CacheInfo#(tagT, Msi, void, cacheOwnerT, void)), + Alias#(ramDataT, RamData#(tagT, Msi, void, cacheOwnerT, void, Line)), + Alias#(procRqT, ProcRqToI), + Alias#(cRqToPT, CRqMsg#(wayT, void)), + Alias#(cRsToPT, CRsMsg#(void)), + Alias#(pRqFromPT, PRqMsg#(void)), + Alias#(pRsFromPT, PRsMsg#(wayT, void)), + Alias#(pRqRsFromPT, PRqRsMsg#(wayT, void)), + Alias#(cRqSlotT, ICRqSlot#(wayT, tagT)), // cRq MSHR slot + Alias#(l1CmdT, L1Cmd#(indexT, cRqIdxT, pRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, void, cacheOwnerT, void, RandRepInfo, Line, l1CmdT)), + Alias#(resultT, Vector#(supSz, Maybe#(Instruction))), + // requirements + FShow#(pipeOutT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum), + Add#(TAdd#(tagSz, indexSz), TAdd#(lgBankNum, LgLineSzBytes), AddrSz) +); + + ICRqMshr#(cRqNum, wayT, tagT, procRqT, resultT) cRqMshr <- mkICRqMshrLocal; + + IPRqMshr#(pRqNum) pRqMshr <- mkIPRqMshrLocal; + + L1Pipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT, pRqIdxT) pipeline <- mkL1Pipeline; + + Fifo#(1, Addr) rqFromCQ <- mkBypassFifo; + + Fifo#(2, cRsToPT) rsToPQ <- mkCFFifo; + Fifo#(2, cRqToPT) rqToPQ <- mkCFFifo; + Fifo#(2, pRqRsFromPT) fromPQ <- mkCFFifo; + + FIFO#(MshrIndex#(cRqIdxT, pRqIdxT)) rsToPIndexQ <- mkSizedFIFO(valueOf(TAdd#(cRqNum, pRqNum))); + + FIFO#(cRqIdxT) rqToPIndexQ <- mkSizedFIFO(valueOf(cRqNum)); + // temp fifo for pipelineResp & sendRsToP (reduce conflict) + FIFO#(cRqIdxT) rqToPIndexQ_pipelineResp <- mkFIFO; + FIFO#(cRqIdxT) rqToPIndexQ_sendRsToP <- mkFIFO; + + // index Q to order all in flight cRq for in-order resp + FIFO#(cRqIdxT) cRqIndexQ <- mkSizedFIFO(valueof(cRqNum)); + +`ifdef DEBUG_ICACHE + // id for each cRq, incremented when each new req comes + Reg#(Bit#(64)) cRqId <- mkReg(0); + // FIFO to signal the id of cRq that is performed + // FIFO has 0 cycle latency to match L1 D$ resp latency + Fifo#(1, DebugICacheResp) cRqDoneQ <- mkBypassFifo; +`endif + + // security flush +`ifdef SECURITY + Reg#(Bool) flushDone <- mkReg(True); + Reg#(Bool) flushReqStart <- mkReg(False); + Reg#(Bool) flushReqDone <- mkReg(False); + Reg#(Bool) flushRespDone <- mkReg(False); + Reg#(indexT) flushIndex <- mkReg(0); + Reg#(wayT) flushWay <- mkReg(0); +`else + Bool flushDone = True; +`endif + +`ifdef PERF_COUNT + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) ldCnt <- mkCount(0); + Count#(Data) ldMissCnt <- mkCount(0); + Count#(Data) ldMissLat <- mkCount(0); + + LatencyTimer#(cRqNum, 10) latTimer <- mkLatencyTimer; + + function Action incrReqCnt; + action + if(doStats) begin + ldCnt.incr(1); + end + endaction + endfunction + + function Action incrMissCnt(cRqIdxT idx); + action + let lat <- latTimer.done(idx); + if(doStats) begin + ldMissLat.incr(zeroExtend(lat)); + ldMissCnt.incr(1); + end + endaction + endfunction +`endif + + function tagT getTag(Addr a) = truncateLSB(a); + + // XXX since I$ may be requested by processor constantly + // cRq may come at every cycle, so we must make cRq has lower priority than pRq/pRs + // otherwise the whole system may deadlock/livelock + // we stop accepting cRq when we need to flush for security + rule cRqTransfer(flushDone); + Addr addr <- toGet(rqFromCQ).get; +`ifdef DEBUG_ICACHE + procRqT r = ProcRqToI {addr: addr, id: cRqId}; + cRqId <= cRqId + 1; +`else + procRqT r = ProcRqToI {addr: addr}; +`endif + cRqIdxT n <- cRqMshr.getEmptyEntryInit(r); + // send to pipeline + pipeline.send(CRq (L1PipeRqIn { + addr: r.addr, + mshrIdx: n + })); + // enq to indexQ for in order resp + cRqIndexQ.enq(n); +`ifdef PERF_COUNT + // performance counter: cRq type + incrReqCnt; +`endif + $display("%t I %m cRqTransfer: ", $time, + fshow(n), " ; ", + fshow(r) + ); + endrule + + // this descending urgency is necessary to avoid deadlock/livelock + (* descending_urgency = "pRqTransfer, cRqTransfer" *) + rule pRqTransfer(fromPQ.first matches tagged PRq .req); + fromPQ.deq; + pRqIdxT n <- pRqMshr.getEmptyEntryInit(req); + // send to pipeline + pipeline.send(PRq (L1PipeRqIn { + addr: req.addr, + mshrIdx: n + })); + $display("%t I %m pRqTransfer: ", $time, + fshow(n), " ; ", + fshow(req) + ); + endrule + + // this descending urgency is necessary to avoid deadlock/livelock + (* descending_urgency = "pRsTransfer, cRqTransfer" *) + rule pRsTransfer(fromPQ.first matches tagged PRs .resp); + fromPQ.deq; + pipeline.send(PRs (L1PipePRsIn { + addr: resp.addr, + toState: S, + data: resp.data, + way: resp.id + })); + $display("%t I %m pRsTransfer: ", $time, fshow(resp)); + doAssert(resp.toState == S && isValid(resp.data), "I$ must upgrade to S with data"); + endrule + +`ifdef SECURITY + // start flush when cRq MSHR is empty + rule startFlushReq(!flushDone && !flushReqStart && cRqMshr.emptyForFlush); + flushReqStart <= True; + endrule + + (* descending_urgency = "pRsTransfer, flushTransfer" *) + (* descending_urgency = "pRqTransfer, flushTransfer" *) + rule flushTransfer(!flushDone && flushReqStart && !flushReqDone); + // We allocate a pRq MSHR entry for 2 reasons: + // (1) reuse the pRq logic to send resp to parent + // (2) control the number of downgrade resp to avoid stalling the cache + // pipeline + pRqIdxT n <- pRqMshr.getEmptyEntryInit(PRqMsg { + addr: ?, + toState: I, + child: ? + }); + pipeline.send(Flush (L1PipeFlushIn { + index: flushIndex, + way: flushWay, + mshrIdx: n + })); + // increment flush index/way + if (flushWay < fromInteger(valueof(wayNum) - 1)) begin + flushWay <= flushWay + 1; + end + else begin + flushWay <= 0; + flushIndex <= flushIndex + 1; // index num should be power of 2 + if (flushIndex == maxBound) begin + flushReqDone <= True; + end + end + $display("%t I %m flushTransfer: ", $time, fshow(n), " ; ", + fshow(flushIndex), " ; ", fshow(flushWay)); + endrule +`endif + + rule sendRsToP_cRq(rsToPIndexQ.first matches tagged CRq .n); + rsToPIndexQ.deq; + // get cRq replacement info + procRqT req = cRqMshr.sendRsToP_cRq.getRq(n); + cRqSlotT slot = cRqMshr.sendRsToP_cRq.getSlot(n); + // send resp to parent + cRsToPT resp = CRsMsg { + addr: {slot.repTag, truncate(req.addr)}, // get bank id & index from req + toState: I, + data: Invalid, // I$ never downgrade with data to writeback + child: ? + }; + rsToPQ.enq(resp); + // req parent for upgrade now + // (prevent parent resp from coming to release MSHR entry before replace resp is sent) + rqToPIndexQ_sendRsToP.enq(n); + $display("%t I %m sendRsToP: ", $time, + fshow(rsToPIndexQ.first)," ; ", + fshow(req), " ; ", + fshow(slot), " ; ", + fshow(resp) + ); + endrule + + rule sendRsToP_pRq(rsToPIndexQ.first matches tagged PRq .n); + rsToPIndexQ.deq; + // get pRq info & send resp & release MSHR entry + pRqFromPT req = pRqMshr.sendRsToP_pRq.getRq(n); + cRsToPT resp = CRsMsg { + addr: req.addr, + toState: I, // I$ must downgrade to I + data: Invalid, // I$ never downgrade with data to writeback + child: ? + }; + rsToPQ.enq(resp); + pRqMshr.sendRsToP_pRq.releaseEntry(n); // mshr entry released + $display("%t I %m sendRsToP: ", $time, + fshow(rsToPIndexQ.first), " ; ", + fshow(req), " ; ", + fshow(resp) + ); + doAssert(req.toState == I, "I$ only has downgrade req to I"); + endrule + + rule sendRqToP; + rqToPIndexQ.deq; + cRqIdxT n = rqToPIndexQ.first; + procRqT req = cRqMshr.sendRqToP.getRq(n); + cRqSlotT slot = cRqMshr.sendRqToP.getSlot(n); + cRqToPT cRqToP = CRqMsg { + addr: req.addr, + fromState: I, // I$ upgrade from I + toState: S, // I$ upgrade to S + canUpToE: False, + id: slot.way, + child: ? + }; + rqToPQ.enq(cRqToP); + $display("%t I %m sendRqToP: ", $time, + fshow(n), " ; ", + fshow(req), " ; ", + fshow(slot), " ; ", + fshow(cRqToP) + ); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif + endrule + + // last stage of pipeline: process req + + // XXX: in L1, pRq cannot exist in dependency chain + // because there are only two ways to include pRq into chain + // (1) append to a cRq that could finish, but such cRq must have been directly reponded + // (2) overtake cRq (S->M), but such downgrade can be done instaneously without the need of chaining + // (this cannot happen in I$) + // Thus, dependency chain in L1 only contains cRq + + // pipeline outputs + pipeOutT pipeOut = pipeline.first; + ramDataT ram = pipeOut.ram; + // get proc req to select from cRqMshr + procRqT pipeOutCRq = cRqMshr.pipelineResp.getRq( + case(pipeOut.cmd) matches + tagged L1CRq .n: (n); + default: (fromMaybe(0, ram.info.owner)); // L1PRs + endcase + ); + + // function to get superscaler inst read result + function resultT readInst(Line line, Addr addr); + Vector#(LineSzInst, Instruction) instVec = unpack(pack(line)); + // the start offset for reading inst + LineInstOffset startSel = getLineInstOffset(addr); + // calculate the maximum inst count that could be read from line + LineInstOffset maxCntMinusOne = maxBound - startSel; + // read inst superscalaer + resultT val = ?; + for(Integer i = 0; i < valueof(supSz); i = i+1) begin + if(fromInteger(i) <= maxCntMinusOne) begin + LineInstOffset sel = startSel + fromInteger(i); + val[i] = Valid (instVec[sel]); + end + else begin + val[i] = Invalid; + end + end + return val; + endfunction + + // function to process cRq hit (MSHR slot may have garbage) + function Action cRqHit(cRqIdxT n, procRqT req); + action + $display("%t I %m pipelineResp: Hit func: ", $time, + fshow(n), " ; ", + fshow(req) + ); + // check tag & cs: even this function is called by pRs, tag should match, + // because tag is written into cache before sending req to parent + doAssert(ram.info.tag == getTag(req.addr) && ram.info.cs == S, + "cRqHit but tag or cs incorrect" + ); + // deq pipeline or swap in successor + Maybe#(cRqIdxT) succ = cRqMshr.pipelineResp.getSucc(n); + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(req.addr), // should be the same as original tag + cs: ram.info.cs, // use cs in ram + dir: ?, + owner: succ, + other: ? + }, + line: ram.line + }, True); // hit, so update rep info + // process req to get superscalar inst read results + // set MSHR entry as Done & save inst results + let instResult = readInst(ram.line, req.addr); + cRqMshr.pipelineResp.setResult(n, instResult); + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); + $display("%t I %m pipelineResp: Hit func: update ram: ", $time, + fshow(succ), " ; ", fshow(instResult) + ); +`ifdef DEBUG_ICACHE + // signal that this req is performed + cRqDoneQ.enq(DebugICacheResp { + id: req.id, + line: ram.line + }); +`endif + endaction + endfunction + + rule pipelineResp_cRq(pipeOut.cmd matches tagged L1CRq .n); + $display("%t I %m pipelineResp: ", $time, fshow(pipeOut)); + + procRqT procRq = pipeOutCRq; + $display("%t I %m pipelineResp: cRq: ", $time, fshow(n), " ; ", fshow(procRq)); + + // find end of dependency chain + Maybe#(cRqIdxT) cRqEOC = cRqMshr.pipelineResp.searchEndOfChain(procRq.addr); + + // function to process cRq miss without replacement (MSHR slot may have garbage) + function Action cRqMissNoReplacement; + action + cRqSlotT cSlot = cRqMshr.pipelineResp.getSlot(n); + // it is impossible in L1 to have slot.waitP == True in this function + // because cRq is not set to Depend when pRq invalidates it (pRq just directly resp) + // and this func is only called when cs < S (otherwise will hit) + // because L1 has no children to wait for + doAssert(!cSlot.waitP && ram.info.cs == I, "waitP must be false and cs must be I"); + // Thus we must send req to parent + // XXX first send to a temp indexQ to avoid conflict, then merge to rqToPIndexQ later + rqToPIndexQ_pipelineResp.enq(n); + // update mshr + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, ICRqSlot { + way: pipeOut.way, // use way from pipeline + repTag: ?, // no replacement + waitP: True // must fetch from parent + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(procRq.addr), // tag may be garbage if cs == I + cs: ram.info.cs, + dir: ?, + owner: Valid (n), // owner is req itself + other: ? + }, + line: ram.line + }, False); + endaction + endfunction + + // function to do replacement for cRq + function Action cRqReplacement; + action + // deq pipeline + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(procRq.addr), // set to req tag (old tag is replaced right now) + cs: I, + dir: ?, + owner: Valid (n), // owner is req itself + other: ? + }, + line: ? // data is no longer used + }, False); + doAssert(ram.info.cs == S, "I$ replacement only replace S line"); + // update MSHR to save replaced tag + // although we send req to parent later (when resp to parent is sent) + // we set state to WaitSt now, since the req to parent is already on schedule + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, ICRqSlot { + way: pipeOut.way, // use way from pipeline + repTag: ram.info.tag, // tag being replaced for sending rs to parent + waitP: True + }); + // send replacement resp to parent + rsToPIndexQ.enq(CRq (n)); + endaction + endfunction + + // function to set cRq to Depend, and make no further change to cache + function Action cRqSetDepNoCacheChange; + action + cRqMshr.pipelineResp.setStateSlot(n, Depend, defaultValue); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + endaction + endfunction + + if(ram.info.owner matches tagged Valid .cOwner) begin + if(cOwner != n) begin + // owner is another cRq, so must just go through tag match + // tag match must be hit (because replacement algo won't give a way with owner) + doAssert(ram.info.cs == S && ram.info.tag == getTag(procRq.addr), + "cRq should hit in tag match" + ); + // should be added to a cRq in dependency chain & deq from pipeline + doAssert(isValid(cRqEOC), "cRq hit on another cRq, cRqEOC must be true"); + cRqMshr.pipelineResp.setSucc(fromMaybe(?, cRqEOC), Valid (n)); + cRqSetDepNoCacheChange; + $display("%t I %m pipelineResp: cRq: own by other cRq ", $time, + fshow(cOwner), ", depend on cRq ", fshow(cRqEOC) + ); + end + else begin + // owner is myself, so must be swapped in + // tag should match, since always swapped in by cRq, cs = S + doAssert(ram.info.tag == getTag(procRq.addr) && ram.info.cs == S, + "cRq swapped in by previous cRq, tag must match & cs = S" + ); + // Hit + $display("%t I %m pipelineResp: cRq: own by itself, hit", $time); + cRqHit(n, procRq); + end + end + else begin + // cache has no owner, cRq must just go through tag match + // check for cRqEOC to append to dependency chain + if(cRqEOC matches tagged Valid .k) begin + $display("%t I %m pipelineResp: cRq: no owner, depend on cRq ", $time, fshow(k)); + cRqMshr.pipelineResp.setSucc(k, Valid (n)); + cRqSetDepNoCacheChange; + end + else if(ram.info.cs == I || ram.info.tag == getTag(procRq.addr)) begin + // No Replacement necessary + if(ram.info.cs > I) begin + $display("%t I %m pipelineResp: cRq: no owner, hit", $time); + cRqHit(n, procRq); + end + else begin + $display("%t I %m pipelineResp: cRq: no owner, miss no replace", $time); + cRqMissNoReplacement; + end + end + else begin + $display("%t I %m pipelineResp: cRq: no owner, replace", $time); + cRqReplacement; + end + end + endrule + + rule pipelineResp_pRs(pipeOut.cmd == L1PRs); + $display("%t I %m pipelineResp: ", $time, fshow(pipeOut)); + $display("%t I %m pipelineResp: pRs: ", $time); + + if(ram.info.owner matches tagged Valid .cOwner) begin + procRqT procRq = pipeOutCRq; + doAssert(ram.info.cs == S && ram.info.tag == getTag(procRq.addr), + "pRs must be a hit" + ); + cRqHit(cOwner, procRq); +`ifdef PERF_COUNT + // performance counter: miss cRq + incrMissCnt(cOwner); +`endif + end + else begin + doAssert(False, ("pRs owner must match some cRq")); + end + endrule + + rule pipelineResp_pRq(pipeOut.cmd matches tagged L1PRq .n); + pRqFromPT pRq = pRqMshr.pipelineResp.getRq(n); + $display("%t I %m pipelineResp: pRq: ", $time, fshow(n), " ; ", fshow(pRq)); + + doAssert(pRq.toState == I, "I$ pRq only downgrade to I"); + + // pRq is never in dependency chain, so it is never swapped in + // pRq must go through tag match, which either returns a tag matched way or asserts pRqMiss + // In I$ a tag matched way should always be processed since pRq always downgrades to I + // pRq is always directly handled: either dropped or Done + + if(pipeOut.pRqMiss) begin + $display("%t I %m pipelineResp: pRq: drop", $time); + // pRq can be directly dropped, no successor (since just go through pipeline) + pRqMshr.pipelineResp.releaseEntry(n); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + end + else begin + $display("%t I %m pipelineResp: pRq: valid process", $time); + // should process pRq + doAssert(ram.info.cs == S && pRq.toState == I && ram.info.tag == getTag(pRq.addr), + "pRq should be processed" + ); + // line cannot be owned, because + // (1) pRq never own cache line + // (2) if owned by cRq, cRq would have hit and released ownership + doAssert(ram.info.owner == Invalid, "pRq cannot hit on line owned by anyone"); + // write ram: set cs to I + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, + cs: I, // I$ is always downgraded by pRq to I + dir: ?, + owner: Invalid, // no successor + other: ? + }, + line: ? // line is not useful + }, False); + // pRq is done + pRqMshr.pipelineResp.setDone(n); + // send resp to parent + rsToPIndexQ.enq(PRq (n)); + end + endrule + +`ifdef SECURITY + rule pipelineResp_flush( + !flushDone &&& !flushRespDone &&& + pipeOut.cmd matches tagged L1Flush .flush + ); + pRqIdxT n = flush.mshrIdx; + $display("%t I %m pipelineResp: flush: ", $time, fshow(flush)); + + // During flush, cRq MSHR is empty, so cache line cannot have owner + doAssert(ram.info.owner == Invalid, "flushing line cannot have owner"); + + // flush always goes through cache pipeline, and is directly handled + // here: either dropped or Done + if(ram.info.cs == I) begin + $display("%t I %m pipelineResp: flush: drop", $time); + // flush can be directly dropped + pRqMshr.pipelineResp.releaseEntry(n); + end + else begin + $display("%t I %m pipelineResp: flush: valid process", $time); + pRqMshr.pipelineResp.setDone(n); + rsToPIndexQ.enq(PRq (n)); + // record the flushed addr in MSHR so that sendRsToP rule knows + // which addr is invalidated + Bit#(LgLineSzBytes) offset = 0; + Addr addr = {ram.info.tag, flush.index, bankId, offset}; + pRqMshr.pipelineResp.setFlushAddr(n, addr); + end + + // always clear the cache line + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ?, + cs: I, // downgraded to I + dir: ?, + owner: Invalid, // no successor + other: ? + }, + line: ? + }, False); + + // check if we have finished all flush + if (flush.index == maxBound && + pipeOut.way == fromInteger(valueof(wayNum) - 1)) begin + flushRespDone <= True; + end + endrule + + rule completeFlush(!flushDone && flushReqStart && flushReqDone && flushRespDone); + flushDone <= True; + flushReqStart <= False; + flushReqDone <= False; + flushRespDone <= False; + endrule +`endif + + // merge rq to parent index into indexQ + rule rqIndexFromPipelineResp; + let n <- toGet(rqToPIndexQ_pipelineResp).get; + rqToPIndexQ.enq(n); + endrule + + (* descending_urgency = "rqIndexFromPipelineResp, rqIndexFromSendRsToP" *) + rule rqIndexFromSendRsToP; + let n <- toGet(rqToPIndexQ_sendRsToP).get; + rqToPIndexQ.enq(n); + endrule + + interface ChildCacheToParent to_parent; + interface rsToP = toFifoDeq(rsToPQ); + interface rqToP = toFifoDeq(rqToPQ); + interface fromP = toFifoEnq(fromPQ); + endinterface + + interface InstServer to_proc; + interface Put req; + method Action put(Addr addr); + rqFromCQ.enq(addr); + endmethod + endinterface + interface Get resp; + method ActionValue#(resultT) get if( + cRqMshr.sendRsToC.getResult(cRqIndexQ.first) matches tagged Valid .inst + ); + cRqIndexQ.deq; + cRqMshr.sendRsToC.releaseEntry(cRqIndexQ.first); // release MSHR entry + $display("%t I %m sendRsToC: ", $time, + fshow(cRqIndexQ.first), " ; ", + fshow(inst) + ); + return inst; + endmethod + endinterface +`ifdef DEBUG_ICACHE + interface done = toGet(cRqDoneQ); +`endif + endinterface + + interface Get cRqStuck; + method ActionValue#(ICRqStuck) get; + let s <- cRqMshr.stuck.get; + return ICRqStuck { + addr: s.req.addr, + state: s.state, + waitP: s.waitP + }; + endmethod + endinterface + + interface pRqStuck = pRqMshr.stuck; + +`ifdef SECURITY + method Action flush if(flushDone); + flushDone <= False; + endmethod + method flush_done = flushDone._read; +`else + method flush = noAction; + method flush_done = True; +`endif + + method Action setPerfStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Data getPerfData(L1IPerfType t); + return (case(t) +`ifdef PERF_COUNT + L1ILdCnt: ldCnt; + L1ILdMissCnt: ldMissCnt; + L1ILdMissLat: ldMissLat; +`endif + default: 0; + endcase); + endmethod +endmodule + + +// Scheduling note + +// cRqTransfer (toC.req.put): write new cRq MSHR entry, cRqMshr.getEmptyEntry + +// pRqTransfer: write new pRq MSHR entry, pRqMshr.getEmptyEntry + +// pRsTransfer: - + +// sendRsToC (toC.resp.get): read cRq MSHR result, releaseEntry + +// sendRsToP_cRq: read cRq MSHR req/slot that is replacing + +// sendRsToP_pRq: read pRq MSHR entry that is responding, pRqMshr.releaseEntry + +// sendRqToP: read cRq MSHR req/slot that is requesting parent + +// pipelineResp_cRq: +// -- read cRq MSHR req/state/slot currently processed +// -- write cRq MSHR state/slot/result currently processed +// -- write succ of some existing cRq MSHR entry (in WaitNewTag or WaitSt) +// -- read all state/req/succ in cRq MSHR entry (searchEOC) +// -- not affected by write in cRqTransfer (state change is Empty->Init) +// -- not affected by write in sendRsC (state change is Done->Empty) + +// pipelineResp_pRs: +// -- read cRq MSHR req/succ, write cRq MSHR state/slot/result + +// pipelineResp_pRq: +// -- r/w pRq MSHR entry, pRqMshr.releaseEntry + +// ---- conflict analysis ---- + +// XXXTransfer is conflict with each other +// Impl of getEmptyEntry and releaseEntry ensures that they are not on the same entry (e.g. cRqTransfer v.s. sendRsToC) +// XXXTransfer should operate on different cRq/pRq from other rules + +// sendRsToC is ordered after pipelineResp to save 1 cycle in I$ latency + +// sendRqToP and sendRsToP_cRq are read only + +// sendRsToP_pRq is operating on different pRq from pipelineResp_pRq (since we use CF index FIFO) + +// ---- conclusion ---- + +// rules/methods are operating on different MSHR entries, except pipelineResp v.s. sendRsToC + +// we have 5 ports from cRq MSHR +// 1. cRqTransfer +// 2. sendRsToC +// 3. sendRsToP_cRq +// 4. sendRqToP +// 5. pipelineResp + +// we have 3 ports from pRq MSHR +// 1. pRqTransfer +// 2. sendRsToP_pRq +// 3. pipelineResp + +// safe version: use EHR ports +// sendRsToP_cRq/sendRqToP/pipelineResp < sendRsToC < cRqTransfer +// pipelineResp < sendRsToP_pRq < pRqTransfer +// (note there is no bypass path from pipelineResp to sendRsToP_pRq since sendRsToP_pRq only reads pRq) + +// unsafe version: all reads read the original reg value, except sendRsToC, which should bypass from pipelineResp +// all writes are cononicalized. NOTE: writes of sendRsToC should be after pipelineResp +// we maintain the logical ordering in safe version + diff --git a/src_Core/RISCY_OOO/coherence/src/ICRqMshr.bsv b/src_Core/RISCY_OOO/coherence/src/ICRqMshr.bsv new file mode 100644 index 0000000..53d6330 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/ICRqMshr.bsv @@ -0,0 +1,353 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import GetPut::*; +import RegFile::*; +import FIFO::*; +import FShow::*; +import Types::*; +import CCTypes::*; +import DefaultValue::*; +import Ehr::*; +import MshrDeadlockChecker::*; + +// MSHR dependency chain invariant: +// every cRq and pRq (for same addr) which has gone through pipeline once will be linked into the chain + +// in L1, pRq is always handled immediately, so cRq never depends on pRq and vice versa + +// CRq MSHR entry state +typedef enum { + Empty, + Init, + WaitSt, // wait pRs/cRs to come + Done, // resp is in index FIFO + Depend +} ICRqState deriving(Bits, Eq, FShow); + +// CRq info returned to outside +typedef struct { + wayT way; // the way to occupy + tagT repTag; // tag being replaced + Bool waitP; // waiting for parent resp +} ICRqSlot#(type wayT, type tagT) deriving(Bits, Eq, FShow); + +instance DefaultValue#(ICRqSlot#(wayT, tagT)); + defaultValue = ICRqSlot { + way: ?, + repTag: ?, + waitP: False + }; +endinstance + +typedef struct { + reqT req; + ICRqState state; + Bool waitP; +} ICRqMshrStuck#(type reqT) deriving(Bits, Eq, FShow); + +// MSHR data is purely for replacement resp to parent +// (resp to processor is done immediately, no data buffering needed) + +// port for sendRsToP_cRq +interface ICRqMshr_sendRsToP_cRq#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method ICRqSlot#(wayT, tagT) getSlot(Bit#(TLog#(cRqNum)) n); +endinterface + +// port for sendRqToP +interface ICRqMshr_sendRqToP#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method ICRqSlot#(wayT, tagT) getSlot(Bit#(TLog#(cRqNum)) n); +endinterface + +// port for pipelineResp +interface ICRqMshr_pipelineResp#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT, + type resultT +); + method ICRqState getState(Bit#(TLog#(cRqNum)) n); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method ICRqSlot#(wayT, tagT) getSlot(Bit#(TLog#(cRqNum)) n); + + method Action setResult(Bit#(TLog#(cRqNum)) n, resultT r); // set a valid result + method Action setStateSlot( + Bit#(TLog#(cRqNum)) n, + ICRqState state, + ICRqSlot#(wayT, tagT) slot + ); + // can only change state to NON-Empty state + // cannot be used to release MSHR entry (use releaseSlot instead) + + method Maybe#(Bit#(TLog#(cRqNum))) getSucc(Bit#(TLog#(cRqNum)) n); + method Action setSucc(Bit#(TLog#(cRqNum)) n, Maybe#(Bit#(TLog#(cRqNum))) succ); + // index in setSucc is usually different from other getXXX methods + + // find existing cRq which has gone through pipeline, but not in Done state, and has not successor + // i.e. search the end of dependency chain + method Maybe#(Bit#(TLog#(cRqNum))) searchEndOfChain(Addr addr); +endinterface + +interface ICRqMshr_sendRsToC#( + numeric type cRqNum, + type resultT +); + method Action releaseEntry(Bit#(TLog#(cRqNum)) n); + method Maybe#(resultT) getResult(Bit#(TLog#(cRqNum)) n); +endinterface + +interface ICRqMshr#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT, // child req type + type resultT // inst result type +); + // port for cRqTransfer, initialization is done inside method + method ActionValue#(Bit#(TLog#(cRqNum))) getEmptyEntryInit(reqT r); + + // port for sendRsToC + interface ICRqMshr_sendRsToC#(cRqNum, resultT) sendRsToC; + + // port for sendRsToP_cRq + interface ICRqMshr_sendRsToP_cRq#(cRqNum, wayT, tagT, reqT) sendRsToP_cRq; + + // port for sendRqToP + interface ICRqMshr_sendRqToP#(cRqNum, wayT, tagT, reqT) sendRqToP; + + // port for pipelineResp + interface ICRqMshr_pipelineResp#(cRqNum, wayT, tagT, reqT, resultT) pipelineResp; + + // port for security flush + method Bool emptyForFlush; + + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(ICRqMshrStuck#(reqT)) stuck; +endinterface + + +////////////////// +// safe version // +////////////////// +module mkICRqMshrSafe#( + function Addr getAddrFromReq(reqT r) +)( + ICRqMshr#(cRqNum, wayT, tagT, reqT, resultT) +) provisos ( + Alias#(cRqIndexT, Bit#(TLog#(cRqNum))), + Alias#(slotT, ICRqSlot#(wayT, tagT)), + Alias#(wayT, Bit#(_waySz)), + Alias#(tagT, Bit#(_tagSz)), + Bits#(reqT, _reqSz), + Bits#(resultT, _resultTSz) +); + // EHR ports + // We put pipelineResp < transfer to cater for deq < enq of cache pipeline + Integer cRqTransfer_port = 2; + Integer sendRsToC_port = 1; // create a bypass behavior from pipelineResp to sendRsToC (to save a cycle) + Integer pipelineResp_port = 0; + Integer sendRqToP_port = 0; // sendRqToP is read only + Integer sendRsToP_cRq_port = 0; // sendRsToP_cRq is read only + Integer flush_port = 0; // flush port is read only + + // MSHR entry state + Vector#(cRqNum, Ehr#(3, ICRqState)) stateVec <- replicateM(mkEhr(Empty)); + // cRq req contents + Vector#(cRqNum, Ehr#(3, reqT)) reqVec <- replicateM(mkEhr(?)); + // cRq mshr slots + Vector#(cRqNum, Ehr#(3, slotT)) slotVec <- replicateM(mkEhr(defaultValue)); + // result + Vector#(cRqNum, Ehr#(3, Maybe#(resultT))) resultVec <- replicateM(mkEhr(Invalid)); + // successor valid bit + Vector#(cRqNum, Ehr#(3, Bool)) succValidVec <- replicateM(mkEhr(False)); + // successor MSHR index + RegFile#(cRqIndexT, cRqIndexT) succFile <- mkRegFile(0, fromInteger(valueOf(cRqNum) - 1)); + // empty entry FIFO + FIFO#(cRqIndexT) emptyEntryQ <- mkSizedFIFO(valueOf(cRqNum)); + + // empty entry FIFO needs initialization + Reg#(Bool) inited <- mkReg(False); + Reg#(cRqIndexT) initIdx <- mkReg(0); + + rule initEmptyEntry(!inited); + emptyEntryQ.enq(initIdx); + initIdx <= initIdx + 1; + if(initIdx == fromInteger(valueOf(cRqNum) - 1)) begin + inited <= True; + $display("%t ICRqMshrSafe %m: init empty entry done", $time); + end + endrule + +`ifdef CHECK_DEADLOCK + MshrDeadlockChecker#(cRqNum) checker <- mkMshrDeadlockChecker; + FIFO#(ICRqMshrStuck#(reqT)) stuckQ <- mkFIFO1; + + (* fire_when_enabled *) + rule checkDeadlock; + let stuckIdx <- checker.getStuckIdx; + if(stuckIdx matches tagged Valid .n) begin + stuckQ.enq(ICRqMshrStuck { + req: reqVec[n][0], + state: stateVec[n][0], + waitP: slotVec[n][0].waitP + }); + end + endrule +`endif + + method ActionValue#(cRqIndexT) getEmptyEntryInit(reqT r) if(inited); + emptyEntryQ.deq; + cRqIndexT n = emptyEntryQ.first; + stateVec[n][cRqTransfer_port] <= Init; + slotVec[n][cRqTransfer_port] <= defaultValue; + resultVec[n][cRqTransfer_port] <= Invalid; + succValidVec[n][cRqTransfer_port] <= False; + reqVec[n][cRqTransfer_port] <= r; +`ifdef CHECK_DEADLOCK + checker.initEntry(n); +`endif + return n; + endmethod + + interface ICRqMshr_sendRsToC sendRsToC; + method Action releaseEntry(cRqIndexT n) if(inited); + emptyEntryQ.enq(n); + stateVec[n][sendRsToC_port] <= Empty; +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endmethod + + method Maybe#(resultT) getResult(Bit#(TLog#(cRqNum)) n); + return resultVec[n][sendRsToC_port]; + endmethod + endinterface + + interface ICRqMshr_sendRsToP_cRq sendRsToP_cRq; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRsToP_cRq_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendRsToP_cRq_port]; + endmethod + endinterface + + interface ICRqMshr_sendRqToP sendRqToP; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRqToP_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendRqToP_port]; + endmethod + endinterface + + interface ICRqMshr_pipelineResp pipelineResp; + method ICRqState getState(cRqIndexT n); + return stateVec[n][pipelineResp_port]; + endmethod + + method reqT getRq(cRqIndexT n); + return reqVec[n][pipelineResp_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][pipelineResp_port]; + endmethod + + method Action setStateSlot(cRqIndexT n, ICRqState state, slotT slot); + doAssert(state != Empty, "use releaseEntry to set state to Empty"); + stateVec[n][pipelineResp_port] <= state; + slotVec[n][pipelineResp_port] <= slot; + endmethod + + method Action setResult(cRqIndexT n, resultT r); + resultVec[n][pipelineResp_port] <= Valid (r); + endmethod + + method Maybe#(cRqIndexT) getSucc(cRqIndexT n); + return succValidVec[n][pipelineResp_port] ? (Valid (succFile.sub(n))) : Invalid; + endmethod + + method Action setSucc(cRqIndexT n, Maybe#(cRqIndexT) succ); + succValidVec[n][pipelineResp_port] <= isValid(succ); + succFile.upd(n, fromMaybe(?, succ)); + endmethod + + method Maybe#(cRqIndexT) searchEndOfChain(Addr addr); + function Bool isEndOfChain(Integer i); + // check entry i is end of chain or not + ICRqState state = stateVec[i][pipelineResp_port]; + Bool notDone = state != Done; + Bool processedOnce = state != Empty && state != Init; + Bool addrMatch = getLineAddr(getAddrFromReq(reqVec[i][pipelineResp_port])) == getLineAddr(addr); + Bool noSucc = !succValidVec[i][pipelineResp_port]; + return notDone && processedOnce && addrMatch && noSucc; + endfunction + Vector#(cRqNum, Integer) idxVec = genVector; + return searchIndex(isEndOfChain, idxVec); + endmethod + endinterface + + method Bool emptyForFlush; + function Bool isEmpty(Integer i) = stateVec[i][flush_port] == Empty; + Vector#(cRqNum, Integer) idxVec = genVector; + return all(isEmpty, idxVec); + endmethod + +`ifdef CHECK_DEADLOCK + interface stuck = toGet(stuckQ); +`else + interface stuck = nullGet; +`endif +endmodule + +// exported version +module mkICRqMshr#( + function Addr getAddrFromReq(reqT r) +)( + ICRqMshr#(cRqNum, wayT, tagT, reqT, resultT) +) provisos ( + Alias#(wayT, Bit#(_waySz)), + Alias#(tagT, Bit#(_tagSz)), + Bits#(reqT, _reqSz), + Bits#(resultT, _resultTSz) +); + let m <- mkICRqMshrSafe(getAddrFromReq); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/IPRqMshr.bsv b/src_Core/RISCY_OOO/coherence/src/IPRqMshr.bsv new file mode 100644 index 0000000..f70b377 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/IPRqMshr.bsv @@ -0,0 +1,214 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import GetPut::*; +import RegFile::*; +import FIFO::*; +import FShow::*; +import GetPut::*; +import Types::*; +import CCTypes::*; +import DefaultValue::*; +import Ehr::*; +import Fifo::*; +import MshrDeadlockChecker::*; + +// MSHR dependency chain invariant: +// every cRq and pRq (for same addr) which has gone through pipeline once will be linked into the chain + +// in L1, pRq is always directly handled at the end of pipeline + +// PRq MSHR entry state +typedef enum { + Empty, + Init, + Done +} IPRqState deriving (Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + IPRqState state; +} IPRqMshrStuck deriving(Bits, Eq, FShow); + +interface IPRqMshr_sendRsToP_pRq#(numeric type pRqNum); + method PRqMsg#(void) getRq(Bit#(TLog#(pRqNum)) n); + method Action releaseEntry(Bit#(TLog#(pRqNum)) n); +endinterface + +interface IPRqMshr_pipelineResp#(numeric type pRqNum); + method PRqMsg#(void) getRq(Bit#(TLog#(pRqNum)) n); + method Action releaseEntry(Bit#(TLog#(pRqNum)) n); + method Action setDone(Bit#(TLog#(pRqNum)) n); +`ifdef SECURITY + method Action setFlushAddr(Bit#(TLog#(pRqNum)) n, Addr a); +`endif +endinterface + +interface IPRqMshr#(numeric type pRqNum); + // port for pRqTransfer + method ActionValue#(Bit#(TLog#(pRqNum))) getEmptyEntryInit(PRqMsg#(void) r); + + // port for sendRsToP_pRq + interface IPRqMshr_sendRsToP_pRq#(pRqNum) sendRsToP_pRq; + + // port for pipelineResp + interface IPRqMshr_pipelineResp#(pRqNum) pipelineResp; + + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(IPRqMshrStuck) stuck; +endinterface + + +////////////////// +// safe version // +////////////////// +module mkIPRqMshrSafe( + IPRqMshr#(pRqNum) +) provisos( + Alias#(pRqIndexT, Bit#(TLog#(pRqNum))) +); + // EHR port + // We put pipelineResp < transfer to cater for deq < enq of cache pipeline + Integer pRqTransfer_port = 2; + Integer sendRsToP_pRq_port = 1; + Integer pipelineResp_port = 0; + + // MSHR entry state + Vector#(pRqNum, Ehr#(3, IPRqState)) stateVec <- replicateM(mkEhr(Empty)); + Vector#(pRqNum, Ehr#(3, PRqMsg#(void))) reqVec <- replicateM(mkEhr(?)); + // empty entry FIFO + FIFO#(pRqIndexT) emptyEntryQ <- mkSizedFIFO(valueOf(pRqNum)); + + // empty entry FIFO needs initialization + Reg#(Bool) inited <- mkReg(False); + Reg#(pRqIndexT) initIdx <- mkReg(0); + + // released entry index fifos + Fifo#(1, pRqIndexT) releaseEntryQ_sendRsToP_pRq <- mkBypassFifo; + Fifo#(1, pRqIndexT) releaseEntryQ_pipelineResp <- mkBypassFifo; + + rule initEmptyEntry(!inited); + emptyEntryQ.enq(initIdx); + initIdx <= initIdx + 1; + if(initIdx == fromInteger(valueOf(pRqNum) - 1)) begin + inited <= True; + $display("%t IPRqMshrSafe %m: init empty entry done", $time); + end + endrule + +`ifdef CHECK_DEADLOCK + MshrDeadlockChecker#(pRqNum) checker <- mkMshrDeadlockChecker; + FIFO#(IPRqMshrStuck) stuckQ <- mkFIFO1; + + (* fire_when_enabled *) + rule checkDeadlock; + let stuckIdx <- checker.getStuckIdx; + if(stuckIdx matches tagged Valid .n) begin + stuckQ.enq(IPRqMshrStuck { + addr: reqVec[n][0].addr, + toState: reqVec[n][0].toState, + state: stateVec[n][0] + }); + end + endrule +`endif + + rule doReleaseEntry_sendRsToP_pRq(inited); + let n <- toGet(releaseEntryQ_sendRsToP_pRq).get; + emptyEntryQ.enq(n); +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endrule + + (* descending_urgency = "doReleaseEntry_sendRsToP_pRq, doReleaseEntry_pipelineResp" *) + rule doReleaseEntry_pipelineResp(inited); + let n <- toGet(releaseEntryQ_pipelineResp).get; + emptyEntryQ.enq(n); +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endrule + + method ActionValue#(pRqIndexT) getEmptyEntryInit(PRqMsg#(void) r) if(inited); + emptyEntryQ.deq; + pRqIndexT n = emptyEntryQ.first; + stateVec[n][pRqTransfer_port] <= Init; + reqVec[n][pRqTransfer_port] <= r; +`ifdef CHECK_DEADLOCK + checker.initEntry(n); +`endif + return n; + endmethod + + interface IPRqMshr_sendRsToP_pRq sendRsToP_pRq; + method PRqMsg#(void) getRq(pRqIndexT n); + return reqVec[n][sendRsToP_pRq_port]; + endmethod + + method Action releaseEntry(pRqIndexT n) if(inited); + releaseEntryQ_sendRsToP_pRq.enq(n); + stateVec[n][sendRsToP_pRq_port] <= Empty; + endmethod + endinterface + + interface IPRqMshr_pipelineResp pipelineResp; + method PRqMsg#(void) getRq(pRqIndexT n); + return reqVec[n][pipelineResp_port]; + endmethod + + method Action setDone(pRqIndexT n); + stateVec[n][pipelineResp_port] <= Done; + endmethod + + method Action releaseEntry(pRqIndexT n) if(inited); + releaseEntryQ_pipelineResp.enq(n); + stateVec[n][pipelineResp_port] <= Empty; + endmethod + +`ifdef SECURITY + method Action setFlushAddr(Bit#(TLog#(pRqNum)) n, Addr a); + reqVec[n][pipelineResp_port] <= PRqMsg { + addr: a, + toState: I, + child: ? + }; + endmethod +`endif + endinterface + +`ifdef CHECK_DEADLOCK + interface stuck = toGet(stuckQ); +`else + interface stuck = nullGet; +`endif +endmodule + + +// exportd version +module mkIPRqMshr(IPRqMshr#(pRqNum)); + let m <- mkIPRqMshrSafe; + return m; +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/L1Bank.bsv b/src_Core/RISCY_OOO/coherence/src/L1Bank.bsv new file mode 100644 index 0000000..c798087 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/L1Bank.bsv @@ -0,0 +1,1260 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Types::*; +import MemoryTypes::*; +import Amo::*; + +import Cntrs::*; +import Vector::*; +import ConfigReg::*; +import BuildVector::*; +import FIFO::*; +import GetPut::*; +import CCTypes::*; +import L1CRqMshr::*; +import L1PRqMshr::*; +import CCPipe::*; +import L1Pipe ::*; +import FShow::*; +import DefaultValue::*; +import Ehr::*; +import Fifo::*; +import CacheUtils::*; +import CrossBar::*; +import Performance::*; +import LatencyTimer::*; +import RandomReplace::*; + +export L1CRqStuck(..); +export L1PRqStuck(..); +export L1Bank(..); +export mkL1Bank; +export mkL1Cache; + +// although pRq never appears in dependency chain +// we still need pRq MSHR to limit the number of pRq +// and thus limit the size of rsToPIndexQ + +typedef struct { + Addr addr; + MemOp op; + L1CRqState state; + Msi slotCs; + Bool waitP; +} L1CRqStuck deriving(Bits, Eq, FShow); + +typedef L1PRqMshrStuck L1PRqStuck; + +interface L1Bank#( + numeric type lgBankNum, + numeric type wayNum, + numeric type indexSz, + numeric type tagSz, + numeric type cRqNum, + numeric type pRqNum, + type procRqIdT // id of req from processor core +); + interface ChildCacheToParent#(Bit#(TLog#(wayNum)), void) to_parent; + interface L1ProcReq#(procRqIdT) procReq; + // reset link addr + method Action resetLinkAddr; + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(L1CRqStuck) cRqStuck; + interface Get#(L1PRqStuck) pRqStuck; + // security: flush + method Action flush; + method Bool flush_done; + // performance + method Action setPerfStatus(Bool stats); + method Data getPerfData(L1DPerfType t); +endinterface + +typedef struct { + cRqIdxT n; // AMO req MSHR idx + cRqT req; // AMO req + Maybe#(cRqIdxT) succ; // same-addr-successor of AMO req +} AmoHitInfo#(type cRqIdxT, type cRqT) deriving(Bits, Eq, FShow); + +module mkL1Bank#( + Bit#(lgBankNum) bankId, + module#(L1CRqMshr#(cRqNum, wayT, tagT, procRqT)) mkL1CRqMshrLocal, + module#(L1PRqMshr#(pRqNum)) mkL1PRqMshrLocal, + module#(L1Pipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT, pRqIdxT)) mkL1Pipeline, + L1ProcResp#(procRqIdT) procResp +)( + L1Bank#(lgBankNum, wayNum, indexSz, tagSz, cRqNum, pRqNum, procRqIdT) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(TLog#(cRqNum))), + Alias#(pRqIdxT, Bit#(TLog#(pRqNum))), + Alias#(cacheOwnerT, Maybe#(cRqIdxT)), // actually owner cannot be pRq + Alias#(cacheInfoT, CacheInfo#(tagT, Msi, void, cacheOwnerT, void)), + Alias#(ramDataT, RamData#(tagT, Msi, void, cacheOwnerT, void, Line)), + Alias#(procRqT, ProcRq#(procRqIdT)), + Alias#(cRqToPT, CRqMsg#(wayT, void)), + Alias#(cRsToPT, CRsMsg#(void)), + Alias#(pRqFromPT, PRqMsg#(void)), + Alias#(pRsFromPT, PRsMsg#(wayT, void)), + Alias#(pRqRsFromPT, PRqRsMsg#(wayT, void)), + Alias#(cRqSlotT, L1CRqSlot#(wayT, tagT)), // cRq MSHR slot + Alias#(l1CmdT, L1Cmd#(indexT, cRqIdxT, pRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, void, cacheOwnerT, void, RandRepInfo, Line, l1CmdT)), + // requirements + Bits#(procRqIdT, _procRqIdT), + FShow#(procRqIdT), + FShow#(pipeOutT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum), + Add#(TAdd#(tagSz, indexSz), TAdd#(lgBankNum, LgLineSzBytes), AddrSz) +); + + L1CRqMshr#(cRqNum, wayT, tagT, procRqT) cRqMshr <- mkL1CRqMshrLocal; + + L1PRqMshr#(pRqNum) pRqMshr <- mkL1PRqMshrLocal; + + L1Pipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT, pRqIdxT) pipeline <- mkL1Pipeline; + + Fifo#(1, procRqT) rqFromCQ <- mkBypassFifo; + + Fifo#(2, cRsToPT) rsToPQ <- mkCFFifo; + Fifo#(2, cRqToPT) rqToPQ <- mkCFFifo; + Fifo#(2, pRqRsFromPT) fromPQ <- mkCFFifo; + + FIFO#(MshrIndex#(cRqIdxT, pRqIdxT)) rsToPIndexQ <- mkSizedFIFO(valueOf(TAdd#(cRqNum, pRqNum))); + + // mshr index of req that is waken up Sc fails early (before hit) + Fifo#(cRqNum, cRqIdxT) cRqRetryIndexQ <- mkCFFifo; + + FIFO#(cRqIdxT) rqToPIndexQ <- mkSizedFIFO(valueOf(cRqNum)); + // temp fifo for pipelineResp & sendRsToP (reduce conflict) + FIFO#(cRqIdxT) rqToPIndexQ_pipelineResp <- mkFIFO; + FIFO#(cRqIdxT) rqToPIndexQ_sendRsToP <- mkFIFO; + + Ehr#(2, Maybe#(LineAddr)) linkAddrEhr <- mkEhr(Invalid); // load reservation + Reg#(Maybe#(LineAddr)) linkAddr = linkAddrEhr[0]; // normal processing use port 0 + Reg#(Maybe#(LineAddr)) linkAddrRst = linkAddrEhr[1]; // reset by outside use port 1 + + // we process AMO resp in a new cycle to cut critical path + Reg#(Maybe#(AmoHitInfo#(cRqIdxT, procRqT))) processAmo <- mkReg(Invalid); + + // security flush +`ifdef SECURITY + Reg#(Bool) flushDone <- mkReg(True); + Reg#(Bool) flushReqStart <- mkReg(False); + Reg#(Bool) flushReqDone <- mkReg(False); + Reg#(Bool) flushRespDone <- mkReg(False); + Reg#(indexT) flushIndex <- mkReg(0); + Reg#(wayT) flushWay <- mkReg(0); +`else + Bool flushDone = True; +`endif + + // performance +`ifdef PERF_COUNT + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) ldCnt <- mkCount(0); + Count#(Data) stCnt <- mkCount(0); + Count#(Data) amoCnt <- mkCount(0); + Count#(Data) ldMissCnt <- mkCount(0); + Count#(Data) stMissCnt <- mkCount(0); + Count#(Data) amoMissCnt <- mkCount(0); + Count#(Data) ldMissLat <- mkCount(0); + Count#(Data) stMissLat <- mkCount(0); + Count#(Data) amoMissLat <- mkCount(0); + + LatencyTimer#(cRqNum, 10) latTimer <- mkLatencyTimer; // max 1K cycle latency + + function Action incrReqCnt(MemOp op); + action + if(doStats) begin + case(op) + Ld: ldCnt.incr(1); + St: stCnt.incr(1); + Lr, Sc, Amo: amoCnt.incr(1); + endcase + end + endaction + endfunction + + function Action incrMissCnt(MemOp op, cRqIdxT idx); + action + let lat <- latTimer.done(idx); + if(doStats) begin + case(op) + Ld: begin + ldMissLat.incr(zeroExtend(lat)); + ldMissCnt.incr(1); + end + St: begin + stMissLat.incr(zeroExtend(lat)); + stMissCnt.incr(1); + end + Lr, Sc, Amo: begin + amoMissLat.incr(zeroExtend(lat)); + amoMissCnt.incr(1); + end + endcase + end + endaction + endfunction +`endif + + function tagT getTag(Addr a) = truncateLSB(a); + + // send retrying cRq (which follows early failed Sc) to pipeline + rule cRqTransfer_retry(cRqRetryIndexQ.notEmpty); + cRqRetryIndexQ.deq; + cRqIdxT n = cRqRetryIndexQ.first; + // XXX don't change MSHR entry to Init + // later cRq to same addr needs to be appended after this one, and we + // need to know that we should not append this one to other cRq to the + // same addr + // send to pipeline + procRqT req = cRqMshr.cRqTransfer.getRq(n); + pipeline.send(CRq (L1PipeRqIn { + addr: req.addr, + mshrIdx: n + })); + $display("%t L1 %m cRqTransfer_retry: ", $time, + fshow(n), " ; ", + fshow(req) + ); + endrule + + // although D$ may not have cRq at every cycle + // we still make cRq has lower priorty than pRq/pRs + // we stop accepting cRq when we need to flush for security + rule cRqTransfer_new(!cRqRetryIndexQ.notEmpty && flushDone); + procRqT r <- toGet(rqFromCQ).get; + cRqIdxT n <- cRqMshr.cRqTransfer.getEmptyEntryInit(r); + // send to pipeline + pipeline.send(CRq (L1PipeRqIn { + addr: r.addr, + mshrIdx: n + })); +`ifdef PERF_COUNT + // performance counter: cRq type + incrReqCnt(r.op); +`endif + $display("%t L1 %m cRqTransfer_new: ", $time, + fshow(n), " ; ", + fshow(r) + ); + endrule + + (* descending_urgency = "pRqTransfer, cRqTransfer_retry, cRqTransfer_new" *) + rule pRqTransfer(fromPQ.first matches tagged PRq .req); + fromPQ.deq; + pRqIdxT n <- pRqMshr.getEmptyEntryInit(req); + // send to pipeline + pipeline.send(PRq (L1PipeRqIn { + addr: req.addr, + mshrIdx: n + })); + $display("%t L1 %m pRqTransfer: ", $time, + fshow(n), " ; ", + fshow(req) + ); + endrule + + (* descending_urgency = "pRsTransfer, cRqTransfer_retry, cRqTransfer_new" *) + rule pRsTransfer(fromPQ.first matches tagged PRs .resp); + fromPQ.deq; + pipeline.send(PRs (L1PipePRsIn { + addr: resp.addr, + toState: resp.toState, + data: resp.data, + way: resp.id + })); + $display("%t L1 %m pRsTransfer: ", $time, fshow(resp)); + endrule + +`ifdef SECURITY + // start flush when cRq MSHR is empty + rule startFlushReq(!flushDone && !flushReqStart && cRqMshr.emptyForFlush); + flushReqStart <= True; + endrule + + (* descending_urgency = "pRsTransfer, flushTransfer" *) + (* descending_urgency = "pRqTransfer, flushTransfer" *) + rule flushTransfer(!flushDone && flushReqStart && !flushReqDone); + // We allocate a pRq MSHR entry for 2 reasons: + // (1) reuse the pRq logic to send resp to parent + // (2) control the number of downgrade resp to avoid stalling the cache + // pipeline + pRqIdxT n <- pRqMshr.getEmptyEntryInit(PRqMsg { + addr: ?, + toState: I, + child: ? + }); + pipeline.send(Flush (L1PipeFlushIn { + index: flushIndex, + way: flushWay, + mshrIdx: n + })); + // increment flush index/way + if (flushWay < fromInteger(valueof(wayNum) - 1)) begin + flushWay <= flushWay + 1; + end + else begin + flushWay <= 0; + flushIndex <= flushIndex + 1; // index num should be power of 2 + if (flushIndex == maxBound) begin + flushReqDone <= True; + end + end + $display("%t L1 %m flushTransfer: ", $time, fshow(n), " ; ", + fshow(flushIndex), " ; ", fshow(flushWay)); + endrule +`endif + + rule sendRsToP_cRq(rsToPIndexQ.first matches tagged CRq .n); + rsToPIndexQ.deq; + // get cRq replacement info + procRqT req = cRqMshr.sendRsToP_cRq.getRq(n); + cRqSlotT slot = cRqMshr.sendRsToP_cRq.getSlot(n); + Maybe#(Line) data = cRqMshr.sendRsToP_cRq.getData(n); + L1CRqState state = cRqMshr.sendRsToP_cRq.getState(n); + doAssert(state == WaitNewTag, + "send replacement resp to parent, state should be WaitNewTag" + ); + // send resp to parent + cRsToPT resp = CRsMsg { + addr: {slot.repTag, truncate(req.addr)}, // get bank id & index from req + toState: I, + data: data, + child: ? + }; + rsToPQ.enq(resp); + // req parent for upgrade & change state + rqToPIndexQ_sendRsToP.enq(n); + cRqMshr.sendRsToP_cRq.setWaitSt_setSlot_clearData(n, L1CRqSlot { + way: slot.way, + cs: I, // replacement, so I (get ready for rqToIndex.deq) + repTag: ?, + waitP: True // we have req parent at the same time + }); + // inform processor of line eviction + procResp.evict(getLineAddr(resp.addr)); + $display("%t L1 %m sendRsToP: ", $time, + fshow(rsToPIndexQ.first)," ; ", + fshow(req), " ; ", + fshow(resp) + ); + endrule + + rule sendRsToP_pRq(rsToPIndexQ.first matches tagged PRq .n); + rsToPIndexQ.deq; + // get pRq info & send resp & release MSHR entry + pRqFromPT req = pRqMshr.sendRsToP_pRq.getRq(n); + Maybe#(Line) data = pRqMshr.sendRsToP_pRq.getData(n); + cRsToPT resp = CRsMsg { + addr: req.addr, + toState: req.toState, + data: data, + child: ? + }; + rsToPQ.enq(resp); + pRqMshr.sendRsToP_pRq.releaseEntry(n); // mshr entry released + // inform processor of line eviction + procResp.evict(getLineAddr(resp.addr)); + $display("%t L1 %m sendRsToP: ", $time, + fshow(rsToPIndexQ.first), " ; ", + fshow(req), " ; ", + fshow(resp) + ); + endrule + + rule sendRqToP; + rqToPIndexQ.deq; + cRqIdxT n = rqToPIndexQ.first; + procRqT req = cRqMshr.sendRqToP.getRq(n); + cRqSlotT slot = cRqMshr.sendRqToP.getSlot(n); + cRqToPT cRqToP = CRqMsg { + addr: req.addr, + fromState: slot.cs, + toState: req.toState, + canUpToE: True, + id: slot.way, + child: ? + }; + rqToPQ.enq(cRqToP); + $display("%t L1 %m sendRqToP: ", $time, + fshow(n), " ; ", + fshow(req), " ; ", + fshow(slot), " ; ", + fshow(cRqToP) + ); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif + endrule + + // last stage of pipeline: process req + + // XXX: in L1, pRq cannot exist in dependency chain + // because there are only two ways to include pRq into chain + // (1) append to a cRq that could finish, but such cRq must have been directly reponded + // (2) overtake cRq (S->M), but such downgrade can be done instaneously without the need of chaining + // Thus, dependency chain in L1 only contains cRq + + // pipeline outputs + pipeOutT pipeOut = pipeline.first; + ramDataT ram = pipeOut.ram; + // figure out procRq MSHR idx in pipeline output (since there is only one + // port to select from MSHR) + cRqIdxT pipeOutCRqIdx = (case(pipeOut.cmd) matches + tagged L1CRq .n: (n); + default: (fromMaybe(0, ram.info.owner)); // L1PRs and L1PRq + endcase); + procRqT pipeOutCRq = cRqMshr.pipelineResp.getRq(pipeOutCRqIdx); + L1CRqState pipeOutCState = cRqMshr.pipelineResp.getState(pipeOutCRqIdx); + cRqSlotT pipeOutCSlot = cRqMshr.pipelineResp.getSlot(pipeOutCRqIdx); + Maybe#(cRqIdxT) pipeOutSucc = cRqMshr.pipelineResp.getSucc(pipeOutCRqIdx); + + // function to process cRq hit (MSHR slot may have garbage) + function Action cRqHit(cRqIdxT n, procRqT req); + action + $display("%t L1 %m pipelineResp: Hit func: ", $time, + fshow(n), " ; ", + fshow(req) + ); + // check tag & cs: even this function is called by pRs, tag should match, + // because tag is written into cache before sending req to parent + doAssert(ram.info.tag == getTag(req.addr) && enoughCacheState(ram.info.cs, req.toState), + "cRqHit but tag or cs incorrect" + ); + // process req: resp processor and get new cache line + // TODO when we have MESI, cache state may also need update + Line curLine = ram.line; + Line newLine = curLine; + LineDataOffset dataSel = getLineDataOffset(req.addr); + case(req.op) matches + Ld: begin + procResp.respLd(req.id, curLine[dataSel]); + end + Lr: begin + procResp.respLrScAmo(req.id, curLine[dataSel]); + // set link addr + linkAddr <= Valid (getLineAddr(req.addr)); + end + Amo: begin + noAction; + end + Sc: begin + // check Sc succeeds or not + Bool succeed = linkAddr == Valid (getLineAddr(req.addr)); + // resp to proc + Data respVal = succeed ? fromInteger(valueof(ScSuccVal)) : fromInteger(valueof(ScFailVal)); + procResp.respLrScAmo(req.id, respVal); + // calculate new data to write + if(succeed) begin + newLine[dataSel] = getUpdatedData(curLine[dataSel], req.byteEn, req.data); + end + // reset link addr + linkAddr <= Invalid; + end + St: begin + // resp processor, get write data & BE + let {be, wrLine} <- procResp.respSt(req.id); + // calculate new data to write + newLine = getUpdatedLine(curLine, be, wrLine); + end + default: begin + doAssert(False, "unknown mem op"); + end + endcase + // deq pipeline or swap in successor ONLY when not AMO: to cut critical + // path for AMO + Maybe#(cRqIdxT) succ = pipeOutSucc; + if(req.op != Amo) begin + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(req.addr), // should be the same as original tag + // use max here. ram.info.cs > req.toState is possible in + // may cache hit cases (e.g., req S and hit in M). + // req.toState > ram.info.cs is also possible in case of + // req M and hit E. + cs: max(ram.info.cs, req.toState), + dir: ?, + owner: succ, + other: ? + }, + line: newLine // write new data into cache + }, True); // hit, so update rep info + $display("%t L1 %m pipelineResp: Hit func: update ram: ", $time, + fshow(newLine), " ; ", + fshow(succ) + ); + // release MSHR entry + cRqMshr.pipelineResp.releaseEntry(n); + end + else begin + processAmo <= Valid (AmoHitInfo { + n: n, + req: req, + succ: succ + }); + $display("%t L1 %m pipelineResp: Hit func: AMO process in next cycle", $time); + end + endaction + endfunction + + rule doProcessAmo(processAmo matches tagged Valid .amoHit); + // extract amo req + cRqIdxT n = amoHit.n; + procRqT req = amoHit.req; + Maybe#(cRqIdxT) succ = amoHit.succ; + // get line and sel + Line curLine = ram.line; + Line newLine = curLine; + LineDataOffset dataSel = getLineDataOffset(req.addr); + Bool upper32 = req.addr[2] == 1; + Data curData = curLine[dataSel]; + // resp processor + Data resp = req.amoInst.doubleWord ? curData : signExtend( + upper32 ? curData[63:32] : curData[31:0] + ); + procResp.respLrScAmo(req.id, resp); + // calculate new data to write + newLine[dataSel] = amoExec(req.amoInst, curData, req.data, upper32); + // deq pipeline or swap in successor + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(req.addr), // should be the same as original tag + cs: M, // AMO always gets to M + dir: ?, + owner: succ, + other: ? + }, + line: newLine // write new data into cache + }, True); // hit, so update rep info + doAssert(req.toState == M, "AMO must req for M"); + $display("%t L1 %m processAmo: update ram: ", $time, + fshow(newLine), " ; ", + fshow(succ) + ); + // release MSHR entry + cRqMshr.pipelineResp.releaseEntry(n); + // reset state + processAmo <= Invalid; + endrule + + rule pipelineResp_cRq(!isValid(processAmo) &&& pipeOut.cmd matches tagged L1CRq .n); + $display("%t L1 %m pipelineResp: ", $time, fshow(pipeOut)); + + procRqT procRq = pipeOutCRq; + $display("%t L1 %m pipelineResp: cRq: ", $time, fshow(n), " ; ", fshow(procRq)); + + // find end of dependency chain + Maybe#(cRqIdxT) cRqEOC = cRqMshr.pipelineResp.searchEndOfChain(procRq.addr); + + function Action cRqScEarlyFail(Bool resetOwner); + action + // resp to proc + procResp.respLrScAmo(procRq.id, fromInteger(valueof(ScFailVal))); + // reset link addr + linkAddr <= Invalid; + // deq pipeline (we cannot swap in successor because Sc may not + // occupy a line). We don't touch cache contents, but we may reset + // line owner. + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, + cs: ram.info.cs, + dir: ram.info.dir, + owner: resetOwner ? Invalid : ram.info.owner, + other: ram.info.other + }, + line: ram.line + }, False); + // retry successor + Maybe#(cRqIdxT) succ = pipeOutSucc; + if(succ matches tagged Valid .s) begin + cRqRetryIndexQ.enq(s); + end + // release MSHR entry + cRqMshr.pipelineResp.releaseEntry(n); + $display("%t L1 %m pipelineResp: Sc early fail func: ", $time, + fshow(resetOwner), " ; ", + fshow(succ) + ); + endaction + endfunction + + // function to process cRq miss without replacement (MSHR slot may have garbage) + function Action cRqMissNoReplacement; + action + cRqSlotT cSlot = pipeOutCSlot; + // it is impossible in L1 to have slot.waitP == True in this function + // because cRq is not set to Depend when pRq invalidates it (pRq just directly resp) + // and this func is only called when cs < toState (otherwise will hit) + // because L1 has no children to wait for + doAssert(!cSlot.waitP && !enoughCacheState(ram.info.cs, procRq.toState), + "waitP must be false and cs must not be enough" + ); + // Thus we must send req to parent + // XXX first send to a temp indexQ to avoid conflict, then merge to rqToPIndexQ later + rqToPIndexQ_pipelineResp.enq(n); + // update mshr + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, L1CRqSlot { + way: pipeOut.way, // use way from pipeline + cs: ram.info.cs, // record cs for future rqToPIndexQ.deq + repTag: ?, // no replacement + waitP: True // we have req parent, so waiting + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(procRq.addr), // tag may be garbage if cs == I + cs: ram.info.cs, + dir: ?, + owner: Valid (n), // owner is req itself + other: ? + }, + line: ram.line + }, False); + endaction + endfunction + + // function to do replacement for cRq + function Action cRqReplacement; + action + // deq pipeline + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(procRq.addr), // set to req tag (old tag is replaced right now) + cs: I, + dir: ?, + owner: Valid (n), // owner is req itself + other: ? + }, + line: ? // data is no longer used + }, False); + // update MSHR: may save replaced line data + cRqMshr.pipelineResp.setStateSlot(n, WaitNewTag, L1CRqSlot { + way: pipeOut.way, // use way from pipeline + cs: I, + repTag: ram.info.tag, // tag being replaced + waitP: False // we send req to parent later (when resp to parent is sent) + }); + cRqMshr.pipelineResp.setData(n, ram.info.cs == M ? Valid (ram.line) : Invalid); + // send replacement resp to parent + rsToPIndexQ.enq(CRq (n)); + // reset link addr + LineAddr repLineAddr = getLineAddr({ram.info.tag, truncate(procRq.addr)}); // index & bank are from procRq + if(linkAddr == Valid (repLineAddr)) begin + linkAddr <= Invalid; + end + endaction + endfunction + + // function to set cRq to Depend, and make no further change to cache + function Action cRqSetDepNoCacheChange; + action + cRqMshr.pipelineResp.setStateSlot(n, Depend, defaultValue); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + endaction + endfunction + + // check if Sc fails early. If an Sc needs to req parent but it's addr + // does not match link addr, we can directly respond the Sc with + // failure, and thus avoid requesting parent. + Bool scFail = procRq.op == Sc && linkAddr != Valid (getLineAddr(procRq.addr)); + // check tag match + Bool tag_match = ram.info.tag == getTag(procRq.addr); + // check enough cache state for hit + Bool enough_cs = enoughCacheState(ram.info.cs, procRq.toState); + // check if cs is not I + Bool cs_valid = ram.info.cs > I; + + if(ram.info.owner matches tagged Valid .cOwner) begin + if(cOwner != n) begin + // owner is another cRq, so must just go through tag match + // tag match must be hit (because replacement algo won't give a way with owner) + doAssert(pipeOutCState == Init, "must first time go through tag match"); + doAssert(cs_valid && tag_match, "cRq should hit in tag match"); + // should be added to a cRq in dependency chain & deq from pipeline + doAssert(isValid(cRqEOC), ("cRq hit on another cRq, cRqEOC must be true")); + cRqMshr.pipelineResp.setSucc(fromMaybe(?, cRqEOC), Valid (n)); + cRqSetDepNoCacheChange; + $display("%t L1 %m pipelineResp: cRq: own by other cRq ", $time, + fshow(cOwner), ", depend on cRq ", fshow(cRqEOC) + ); + end + else begin + // owner is myself, so must be swapped in + // tag should match, since always swapped in by cRq, cs > I + doAssert(pipeOutCState == Depend, "must be swapped in"); + doAssert(cs_valid && tag_match, + "cRq swapped in by previous cRq, tag must match & cs > I" + ); + // Hit or Miss (but no replacement) + if(enough_cs) begin + $display("%t L1 %m pipelineResp: cRq: own by itself, hit", $time); + cRqHit(n, procRq); + end + else if(scFail) begin + // Sc already fails, so we don't need to req parent. Since + // Sc is the owner of the line, we need to reset owner to + // Invalid. + $display("%t L1 %m pipelineResp: cRq: own by itself, Sc early fails, ", + $time, fshow(linkAddr) + ); + cRqScEarlyFail(True); + end + else begin + $display("%t L1 %m pipelineResp: cRq: own by itself, miss no replace", $time); + cRqMissNoReplacement; + end + end + end + else begin + // cache has no owner, cRq must just go through tag match + // Here are two cases: + // 1. cRq in Init state, first time go through tag match + // 2. cRq addr-depends on an Sc which fails early, just got waken up + L1CRqState cState = pipeOutCState; + + // check for cRqEOC to append to dependency chain + // Only append to dep-chain if is in Init state + if(cRqEOC matches tagged Valid .k &&& cState == Init) begin + $display("%t L1 %m pipelineResp: cRq: no owner, depend on cRq, ", $time, + fshow(cState), " ; ", fshow(cRqEOC) + ); + cRqMshr.pipelineResp.setSucc(k, Valid (n)); + cRqSetDepNoCacheChange; + end + else begin + // Check hit or miss, replacment may be needed + if(tag_match && enough_cs) begin + // Hit + doAssert(cs_valid, "hit, so cs must > I"); + $display("%t L1 %m pipelineResp: cRq: no owner, hit", $time); + cRqHit(n, procRq); + end + else if(scFail) begin + // Sc already fails, so we don't need to req parent. Since + // there is no owner of the line, we can reset owner to + // Invalid. + $display("%t L1 %m pipelineResp: cRq: no owner, Sc early fails, ", + $time, fshow(linkAddr) + ); + cRqScEarlyFail(True); + end + else if(cs_valid && !tag_match) begin + // Req parent, need replacement + $display("%t L1 %m pipelineResp: cRq: no owner, replace", $time); + cRqReplacement; + end + else begin + $display("%t L1 %m pipelineResp: cRq: no owner, miss no replace", $time); + // Req parent, no replacement needed + cRqMissNoReplacement; + end + end + end + endrule + + rule pipelineResp_pRs(!isValid(processAmo) &&& pipeOut.cmd == L1PRs); + $display("%t L1 %m pipelineResp: ", $time, fshow(pipeOut)); + $display("%t L1 %m pipelineResp: pRs: ", $time); + + if(ram.info.owner matches tagged Valid .cOwner) begin + procRqT procRq = pipeOutCRq; + doAssert(ram.info.cs >= procRq.toState && ram.info.tag == getTag(procRq.addr), + ("pRs must be a hit") + ); + cRqHit(cOwner, procRq); +`ifdef PERF_COUNT + // performance counter: miss cRq + incrMissCnt(procRq.op, cOwner); +`endif + end + else begin + doAssert(False, ("pRs owner must match some cRq")); + end + endrule + + rule pipelineResp_pRq(!isValid(processAmo) &&& pipeOut.cmd matches tagged L1PRq .n); + pRqFromPT pRq = pRqMshr.pipelineResp.getRq(n); + $display("%t L1 %m pipelineResp: pRq: ", $time, fshow(n), " ; ", fshow(pRq)); + + // pRq is never in dependency chain, so it is never swapped in + // pRq must go through tag match, which either returns a tag matched way or asserts pRqMiss + // and pRq is always directly handled: either dropped or Done + + if(pipeOut.pRqMiss || ram.info.cs <= pRq.toState || ram.info.tag != getTag(pRq.addr)) begin + $display("%t L1 %m pipelineResp: pRq: drop", $time); + // pRq can be directly dropped + // must go through tag match, no successor + pRqMshr.pipelineResp.releaseEntry(n); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + // sanity check (ram.info.tag != getTag(pRq.addr) is useless) + if(!pipeOut.pRqMiss) begin + doAssert(ram.info.cs == S && pRq.toState == S && ram.info.tag == getTag(pRq.addr), + ("pRqMiss deasserted, must be down to S") + ); + end + end + else if(ram.info.owner matches tagged Valid .cOwner) begin + procRqT cRq = pipeOutCRq; + // must be the case the pRq overtakes cRq + L1CRqState cState = pipeOutCState; + cRqSlotT cSlot = pipeOutCSlot; + $display("%t L1 %m pipelineResp: pRq: overtake cRq: ", $time, + fshow(cOwner), " ; ", + fshow(cRq), " ; ", + fshow(cState), " ; ", + fshow(cSlot) + ); + doAssert(ram.info.cs == S && cRq.toState > S && pRq.toState == I && cState == WaitSt && cSlot.waitP, + ("pRq overtakes CRq") + ); + // process pRq + pRqMshr.pipelineResp.setDone_setData(n, Invalid); // S->I, no data needed + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, // keep tag the same (for sake of cRq) + cs: I, // downgraded to I + dir: ?, + owner: ram.info.owner, // keep owner to cRq + other: ? + }, + line: ram.line + }, False); + rsToPIndexQ.enq(PRq (n)); + // update cRq bookkeeping + cRqMshr.pipelineResp.setStateSlot(cOwner, WaitSt, L1CRqSlot { + way: pipeOut.way, + cs: I, // update cs (actually useless because there cannot be any future pRq) + repTag: ?, + waitP: True + }); + end + else begin + $display("%t L1 %m pipelineResp: pRq: valid process", $time); + // line must NOT be owned + doAssert(ram.info.owner == Invalid, + ("pRq cannot hit on line owned by pRq (even itself)") + ); + // should process pRq + doAssert(ram.info.cs > pRq.toState && ram.info.tag == getTag(pRq.addr), + ("pRq should be processed") + ); + pRqMshr.pipelineResp.setDone_setData(n, ram.info.cs == M ? Valid (ram.line) : Invalid); + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, + cs: pRq.toState, + dir: ?, + owner: Invalid, // no successor + other: ? + }, + line: ram.line + }, False); + rsToPIndexQ.enq(PRq (n)); + end + + // since pRq is always processed in one shot, we reset link addr here together + if(linkAddr == Valid (getLineAddr(pRq.addr)) && pRq.toState == I) begin + linkAddr <= Invalid; + end + endrule + +`ifdef SECURITY + rule pipelineResp_flush( + !isValid(processAmo) &&& + !flushDone &&& !flushRespDone &&& + pipeOut.cmd matches tagged L1Flush .flush + ); + pRqIdxT n = flush.mshrIdx; + $display("%t L1 %m pipelineResp: flush: ", $time, fshow(flush)); + + // During flush, cRq MSHR is empty, so cache line cannot have owner + doAssert(ram.info.owner == Invalid, "flushing line cannot have owner"); + + // flush always goes through cache pipeline, and is directly handled + // here: either dropped or Done + if(ram.info.cs == I) begin + $display("%t L1 %m pipelineResp: flush: drop", $time); + // flush can be directly dropped + pRqMshr.pipelineResp.releaseEntry(n); + end + else begin + $display("%t L1 %m pipelineResp: flush: valid process", $time); + pRqMshr.pipelineResp.setDone_setData(n, ram.info.cs == M ? Valid (ram.line) : Invalid); + rsToPIndexQ.enq(PRq (n)); + // record the flushed addr in MSHR so that sendRsToP rule knows + // which addr is invalidated + Bit#(LgLineSzBytes) offset = 0; + Addr addr = {ram.info.tag, flush.index, bankId, offset}; + pRqMshr.pipelineResp.setFlushAddr(n, addr); + end + + // always clear the cache line + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ?, + cs: I, // downgraded to I + dir: ?, + owner: Invalid, // no successor + other: ? + }, + line: ? + }, False); + + // always reset link addr + linkAddr <= Invalid; + + // check if we have finished all flush + if (flush.index == maxBound && + pipeOut.way == fromInteger(valueof(wayNum) - 1)) begin + flushRespDone <= True; + end + endrule + + rule completeFlush(!flushDone && flushReqStart && flushReqDone && flushRespDone); + flushDone <= True; + flushReqStart <= False; + flushReqDone <= False; + flushRespDone <= False; + endrule +`endif + + // merge rq to parent index into indexQ + rule rqIndexFromPipelineResp; + let n <- toGet(rqToPIndexQ_pipelineResp).get; + rqToPIndexQ.enq(n); + endrule + + (* descending_urgency = "rqIndexFromPipelineResp, rqIndexFromSendRsToP" *) + rule rqIndexFromSendRsToP; + let n <- toGet(rqToPIndexQ_sendRsToP).get; + rqToPIndexQ.enq(n); + endrule + + interface ChildCacheToParent to_parent; + interface rsToP = toFifoDeq(rsToPQ); + interface rqToP = toFifoDeq(rqToPQ); + interface fromP = toFifoEnq(fromPQ); + endinterface + + interface L1ProcReq procReq; + method Action req(procRqT r); + rqFromCQ.enq(r); + endmethod + endinterface + + method Action resetLinkAddr; + linkAddrRst <= Invalid; + endmethod + + interface Get cRqStuck; + method ActionValue#(L1CRqStuck) get; + let s <- cRqMshr.stuck.get; + return L1CRqStuck { + addr: s.req.addr, + op: s.req.op, + state: s.state, + slotCs: s.slotCs, + waitP: s.waitP + }; + endmethod + endinterface + + interface pRqStuck = pRqMshr.stuck; + +`ifdef SECURITY + method Action flush if(flushDone); + flushDone <= False; + endmethod + method flush_done = flushDone._read; +`else + method flush = noAction; + method flush_done = True; +`endif + + method Action setPerfStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Data getPerfData(L1DPerfType t); + return (case(t) +`ifdef PERF_COUNT + L1DLdCnt: ldCnt; + L1DStCnt: stCnt; + L1DAmoCnt: amoCnt; + L1DLdMissCnt: ldMissCnt; + L1DStMissCnt: stMissCnt; + L1DAmoMissCnt: amoMissCnt; + L1DLdMissLat: ldMissLat; + L1DStMissLat: stMissLat; + L1DAmoMissLat: amoMissLat; +`endif + default: 0; + endcase); + endmethod +endmodule + + +// Scheduling note + +// cRqTransfer: write new cRq MSHR entry, cRqMshr.getEmptyEntry + +// pRqTransfer: write new pRq MSHR entry, pRqMshr.getEmptyEntry + +// pRsTransfer: - + +// sendRsToP_cRq: access cRq MSHR entry that is sending replacement +// -- read req/state/slot/data +// -- write state/slot/data + +// sendRsToP_pRq: read pRq MSHR entry that is responding, pRqMshr.releaseEntry + +// sendRqToP: read cRq MSHR req/slot that is requesting parent + +// pipelineResp_cRq: +// -- cRqMshr.releaseEntry +// -- read cRq MSHR req/state/slot/data currently processed +// -- write cRq MSHR state/slot/data currently processed +// -- write succ of some existing cRq MSHR entry (in WaitNewTag or WaitSt) +// -- read all state/req/succ in cRq MSHR entry (searchEOC) +// -- not affected by write in cRqTransfer +// -- not affected by write in sendRsToP_cRq (state change is just WaitNewTag->WaitSt) + +// pipelineResp_pRs: +// -- cRqMshr.releaseEntry +// -- read cRqMSHR req/succ + +// pipelineResp_pRq: +// -- r/w pRq MSHR entry, pRqMshr.releaseEntry +// -- read existing cRq state/req/slot, write its slot/state +// -- cannot be the cRq in sendRsToP_cRq + +// ---- conflict analysis ---- + +// XXXTransfer is conflict with each other +// but they are access new MSHR entry, so never conflict with other rules + +// sendxxxToP is conflict free with each other + +// sendRsToP_cRq conflict free with pipelineResp_xxx in terms of MSHR +// -- writes in sendRsToP_cRq does not affect r&w in pipelineResp_xxx +// -- writes in pipelineResp_xxx never affects r/w in sendRsToP_cRq +// BUT they may both enq to rqToPIndexQ + +// sendRsToP_pRq conflict free with pipelineResp_xxx + +// sendRqToP conflict free with pipelineResp_xxx + +// ---- conclusion ---- + +// we have 4 ports from cRq MSHR +// 1. cRqTransfer +// 2. sendRsToP_cRq +// 3. sendRqToP +// 4. pipelineResp + +// we have 3 ports from pRq MSHR +// 1. pRqTransfer +// 2. sendRsToP_pRq +// 3. pipelineResp + + +// unsafe version: all reads read the original reg value +// and all writes are cononicalized + +// safe version: use EHR ports +// sendRsToP_cRq/sendRsToP_pRq: port 0 +// pipelineResp: port 1 +// cRqTransfer/sendRqToP/pRqTransfer: port 2 + +// We put cRqTransfer at last because it is ordered after the issue method of +// LSQ outside cache, while pipelineResp and sendRsToP will call other methods +// of LSQ. Making cRqTransfer after pipelineResp/sendRsToP will not add any +// extra ordering constraint to methods of LSQ. + + +// group banks into cache +module mkL1Cache#( + module#(L1CRqMshr#(cRqNum, wayT, tagT, procRqT)) mkL1CRqMshrLocal, + module#(L1PRqMshr#(pRqNum)) mkL1PRqMshrLocal, + module#(L1Pipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT, pRqIdxT)) mkL1Pipeline, + L1ProcResp#(procRqIdT) procResp +)( + L1Bank#(lgBankNum, wayNum, indexSz, tagSz, cRqNum, pRqNum, procRqIdT) +) provisos ( + NumAlias#(bankNum, TExp#(lgBankNum)), + Alias#(bankIdT, Bit#(lgBankNum)), + Alias#(l1BankT, L1Bank#(lgBankNum, wayNum, indexSz, tagSz, cRqNum, pRqNum, procRqIdT)), + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(TLog#(cRqNum))), + Alias#(pRqIdxT, Bit#(TLog#(pRqNum))), + Alias#(cacheOwnerT, Maybe#(cRqIdxT)), + Alias#(procRqT, ProcRq#(procRqIdT)), + Alias#(cRqToPT, CRqMsg#(wayT, void)), + Alias#(cRsToPT, CRsMsg#(void)), + Alias#(pRqRsFromPT, PRqRsMsg#(wayT, void)), + Alias#(l1CmdT, L1Cmd#(indexT, cRqIdxT, pRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, void, cacheOwnerT, void, RandRepInfo, Line, l1CmdT)), + // requirements + Bits#(procRqIdT, _procRqIdT), + FShow#(procRqIdT), + FShow#(pipeOutT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum), + Add#(lgBankNum, c__, AddrSz), + Add#(1, d__, bankNum), + Add#(TAdd#(tagSz, indexSz), TAdd#(lgBankNum, LgLineSzBytes), AddrSz) +); + // bank id of each cache bank is implicit, we always send fixed subset of address to a bank + // the pipelineResp_cRq,pRs will conflict with each other + Vector#(bankNum, l1BankT) banks; + for (Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i] <- mkL1Bank(fromInteger(i), mkL1CRqMshrLocal, mkL1PRqMshrLocal, mkL1Pipeline, procResp); + end + + function bankIdT getBankId(Addr a); + return truncate(a >> valueof(LgLineSzBytes)); + endfunction + + ChildCacheToParent#(wayT, void) toParentIfc; // ifc to parent cache + + if(valueof(bankNum) == 1) begin + toParentIfc = banks[0].to_parent; + end + else begin + // multiple banks need cross bar + Fifo#(2, cRqToPT) cRqToPQ <- mkCFFifo; + Fifo#(2, cRsToPT) cRsToPQ <- mkCFFifo; + Fifo#(2, pRqRsFromPT) pRqRsFromPQ <- mkCFFifo; + + function XBarDstInfo#(Bit#(0), cRqToPT) getCRqDstInfo(bankIdT bid, cRqToPT cRq); + return XBarDstInfo {idx: 0, data: cRq}; + endfunction + function Get#(cRqToPT) cRqGet(l1BankT ifc) = toGet(ifc.to_parent.rqToP); + mkXBar(getCRqDstInfo, map(cRqGet, banks), vec(toPut(cRqToPQ))); + + function XBarDstInfo#(Bit#(0), cRsToPT) getCRsDstInfo(bankdIdT bid, cRsToPT cRs); + return XBarDstInfo {idx: 0, data: cRs}; + endfunction + function Get#(cRsToPT) cRsGet(l1BankT ifc) = toGet(ifc.to_parent.rsToP); + mkXBar(getCRsDstInfo, map(cRsGet, banks), vec(toPut(cRsToPQ))); + + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + rule sendPRq(pRqRsFromPQ.first matches tagged PRq .rq &&& getBankId(rq.addr) == fromInteger(i)); + let r <- toGet(pRqRsFromPQ).get; + banks[i].to_parent.fromP.enq(r); + endrule + rule sendPRs(pRqRsFromPQ.first matches tagged PRs .rs &&& getBankId(rs.addr) == fromInteger(i)); + let r <- toGet(pRqRsFromPQ).get; + banks[i].to_parent.fromP.enq(r); + endrule + end + + toParentIfc = (interface ChildCacheToParent; + interface rqToP = toFifoDeq(cRqToPQ); + interface rsToP = toFifoDeq(cRsToPQ); + interface fromP = toFifoEnq(pRqRsFromPQ); + endinterface); + end + +`ifdef CHECK_DEADLOCK + FIFO#(L1CRqStuck) cRqStuckQ <- mkFIFO1; + FIFO#(L1PRqStuck) pRqStuckQ <- mkFIFO1; + + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + rule sendCRqStuck; + let s <- banks[i].cRqStuck.get; + cRqStuckQ.enq(s); + endrule + rule sendPRqStuck; + let s <- banks[i].pRqStuck.get; + pRqStuckQ.enq(s); + endrule + end + + interface cRqStuck = toGet(cRqStuckQ); + interface pRqStuck = toGet(pRqStuckQ); +`else + interface cRqStuck = nullGet; + interface pRqStuck = nullGet; +`endif + + interface ChildCacheToParent to_parent = toParentIfc; + + interface L1ProcReq procReq; + method Action req(procRqT r); + banks[getBankId(r.addr)].procReq.req(r); + endmethod + endinterface + + method Action resetLinkAddr; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i].resetLinkAddr; + end + endmethod + + method Action flush; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i].flush; + end + endmethod + + method Bool flush_done; + Vector#(bankNum, Bool) b; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + b[i] = banks[i].flush_done; + end + return fold(\&& , b); + endmethod + + method Action setPerfStatus(Bool stats); + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i].setPerfStatus(stats); + end + endmethod + + method Data getPerfData(L1DPerfType t); + Vector#(bankNum, Data) d = ?; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + d[i] = banks[i].getPerfData(t); + end + return fold(\+ , d); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/L1CRqMshr.bsv b/src_Core/RISCY_OOO/coherence/src/L1CRqMshr.bsv new file mode 100644 index 0000000..41b92e3 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/L1CRqMshr.bsv @@ -0,0 +1,378 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import GetPut::*; +import RegFile::*; +import FIFO::*; +import FShow::*; +import Types::*; +import CCTypes::*; +import DefaultValue::*; +import Ehr::*; +import MshrDeadlockChecker::*; + +// MSHR dependency chain invariant: +// every cRq and pRq (for same addr) which has gone through pipeline once will be linked into the chain + +// in L1, pRq is always handled immediately, so cRq never depends on pRq and vice versa + +// CRq MSHR entry state +typedef enum { + Empty, + Init, + WaitNewTag, // waiting replacement resp to send (but tag in RAM is already updated) + WaitSt, // wait pRs/cRs to come + Done, // resp is in index FIFO + Depend +} L1CRqState deriving(Bits, Eq, FShow); + +// CRq info returned to outside +typedef struct { + wayT way; // the way to occupy + Msi cs; // current cache MSI, used in sending upgrade req to parent + tagT repTag; // tag being replaced: only valid in WaitOld/NewTag states + Bool waitP; // waiting for parent resp +} L1CRqSlot#(type wayT, type tagT) deriving(Bits, Eq, FShow); + +instance DefaultValue#(L1CRqSlot#(wayT, tagT)); + defaultValue = L1CRqSlot { + way: ?, + cs: ?, + repTag: ?, + waitP: False + }; +endinstance + +typedef struct { + reqT req; + L1CRqState state; + Msi slotCs; + Bool waitP; +} L1CRqMshrStuck#(type reqT) deriving(Bits, Eq, FShow); + +// MSHR data is purely for replacement resp to parent +// (resp to processor is done immediately, no data buffering needed) + +// port for cRqTransfer and retry +interface L1CRqMshr_transfer#( + numeric type cRqNum, + type reqT +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method ActionValue#(Bit#(TLog#(cRqNum))) getEmptyEntryInit(reqT r); +endinterface + +// port for sendRsToP_cRq +interface L1CRqMshr_sendRsToP_cRq#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT +); + method L1CRqState getState(Bit#(TLog#(cRqNum)) n); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method L1CRqSlot#(wayT, tagT) getSlot(Bit#(TLog#(cRqNum)) n); + method Maybe#(Line) getData(Bit#(TLog#(cRqNum)) n); + + method Action setWaitSt_setSlot_clearData( + Bit#(TLog#(cRqNum)) n, + L1CRqSlot#(wayT, tagT) slot + ); + // data is set to invalid, state is set to WaitSt here +endinterface + +// port for sendRqToP +interface L1CRqMshr_sendRqToP#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method L1CRqSlot#(wayT, tagT) getSlot(Bit#(TLog#(cRqNum)) n); +endinterface + +// port for pipelineResp +interface L1CRqMshr_pipelineResp#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT +); + method Action releaseEntry(Bit#(TLog#(cRqNum)) n); + + method L1CRqState getState(Bit#(TLog#(cRqNum)) n); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method L1CRqSlot#(wayT, tagT) getSlot(Bit#(TLog#(cRqNum)) n); + + method Action setData(Bit#(TLog#(cRqNum)) n, Maybe#(Line) d); + method Action setStateSlot( + Bit#(TLog#(cRqNum)) n, + L1CRqState state, + L1CRqSlot#(wayT, tagT) slot + ); + // can only change state to NON-Empty state + // cannot be used to release MSHR entry (use releaseSlot instead) + + method Maybe#(Bit#(TLog#(cRqNum))) getSucc(Bit#(TLog#(cRqNum)) n); + method Action setSucc(Bit#(TLog#(cRqNum)) n, Maybe#(Bit#(TLog#(cRqNum))) succ); + // index in setSucc is usually different from other getXXX methods + + // find existing cRq which has gone through pipeline, but not in Done state, and has not successor + // i.e. search the end of dependency chain + method Maybe#(Bit#(TLog#(cRqNum))) searchEndOfChain(Addr addr); +endinterface + +interface L1CRqMshr#( + numeric type cRqNum, + type wayT, + type tagT, + type reqT // child req type +); + // port for cRqTransfer and retry + interface L1CRqMshr_transfer#(cRqNum, reqT) cRqTransfer; + + // port for sendRsToP_cRq + interface L1CRqMshr_sendRsToP_cRq#(cRqNum, wayT, tagT, reqT) sendRsToP_cRq; + + // port for sendRqToP + interface L1CRqMshr_sendRqToP#(cRqNum, wayT, tagT, reqT) sendRqToP; + + // port for pipelineResp + interface L1CRqMshr_pipelineResp#(cRqNum, wayT, tagT, reqT) pipelineResp; + + // port for security flush + method Bool emptyForFlush; + + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(L1CRqMshrStuck#(reqT)) stuck; +endinterface + + +////////////////// +// safe version // +////////////////// +module mkL1CRqMshrSafe#( + function Addr getAddrFromReq(reqT r) +)( + L1CRqMshr#(cRqNum, wayT, tagT, reqT) +) provisos ( + Alias#(cRqIndexT, Bit#(TLog#(cRqNum))), + Alias#(slotT, L1CRqSlot#(wayT, tagT)), + Alias#(wayT, Bit#(_waySz)), + Alias#(tagT, Bit#(_tagSz)), + Bits#(reqT, _reqSz) +); + // EHR ports + // We put pipelineResp < transfer to cater for deq < enq of cache pipeline + Integer flush_port = 0; // flush port is read only + Integer sendRqToP_port = 0; // sendRqToP is read only + Integer sendRsToP_cRq_port = 0; + Integer pipelineResp_port = 1; + Integer cRqTransfer_port = 2; + + // MSHR entry state + Vector#(cRqNum, Ehr#(3, L1CRqState)) stateVec <- replicateM(mkEhr(Empty)); + // cRq req contents + Vector#(cRqNum, Ehr#(3, reqT)) reqVec <- replicateM(mkEhr(?)); + // cRq mshr slots + Vector#(cRqNum, Ehr#(3, slotT)) slotVec <- replicateM(mkEhr(defaultValue)); + // data valid bit + Vector#(cRqNum, Ehr#(3, Bool)) dataValidVec <- replicateM(mkEhr(False)); + // data values + RegFile#(cRqIndexT, Line) dataFile <- mkRegFile(0, fromInteger(valueOf(cRqNum) - 1)); + // successor valid bit + Vector#(cRqNum, Ehr#(3, Bool)) succValidVec <- replicateM(mkEhr(False)); + // successor MSHR index + RegFile#(cRqIndexT, cRqIndexT) succFile <- mkRegFile(0, fromInteger(valueOf(cRqNum) - 1)); + // empty entry FIFO + FIFO#(cRqIndexT) emptyEntryQ <- mkSizedFIFO(valueOf(cRqNum)); + + // empty entry FIFO needs initialization + Reg#(Bool) inited <- mkReg(False); + Reg#(cRqIndexT) initIdx <- mkReg(0); + + rule initEmptyEntry(!inited); + emptyEntryQ.enq(initIdx); + initIdx <= initIdx + 1; + if(initIdx == fromInteger(valueOf(cRqNum) - 1)) begin + inited <= True; + $display("%t L1CRqMshrSafe %m: init empty entry done", $time); + end + endrule + +`ifdef CHECK_DEADLOCK + MshrDeadlockChecker#(cRqNum) checker <- mkMshrDeadlockChecker; + FIFO#(L1CRqMshrStuck#(reqT)) stuckQ <- mkFIFO1; + + (* fire_when_enabled *) + rule checkDeadlock; + let stuckIdx <- checker.getStuckIdx; + if(stuckIdx matches tagged Valid .n) begin + stuckQ.enq(L1CRqMshrStuck { + req: reqVec[n][0], + state: stateVec[n][0], + slotCs: slotVec[n][0].cs, + waitP: slotVec[n][0].waitP + }); + end + endrule +`endif + + interface L1CRqMshr_transfer cRqTransfer; + method reqT getRq(cRqIndexT n); + return reqVec[n][cRqTransfer_port]; + endmethod + + method ActionValue#(cRqIndexT) getEmptyEntryInit(reqT r) if(inited); + emptyEntryQ.deq; + cRqIndexT n = emptyEntryQ.first; + stateVec[n][cRqTransfer_port] <= Init; + slotVec[n][cRqTransfer_port] <= defaultValue; + dataValidVec[n][cRqTransfer_port] <= False; + succValidVec[n][cRqTransfer_port] <= False; + reqVec[n][cRqTransfer_port] <= r; +`ifdef CHECK_DEADLOCK + checker.initEntry(n); +`endif + return n; + endmethod + endinterface + + interface L1CRqMshr_sendRsToP_cRq sendRsToP_cRq; + method L1CRqState getState(cRqIndexT n); + return stateVec[n][sendRsToP_cRq_port]; + endmethod + + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRsToP_cRq_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendRsToP_cRq_port]; + endmethod + + method Maybe#(Line) getData(cRqIndexT n); + return dataValidVec[n][sendRsToP_cRq_port] ? (Valid (dataFile.sub(n))) : Invalid; + endmethod + + method Action setWaitSt_setSlot_clearData(cRqIndexT n, slotT s); + stateVec[n][sendRsToP_cRq_port] <= WaitSt; + slotVec[n][sendRsToP_cRq_port] <= s; + dataValidVec[n][sendRsToP_cRq_port] <= False; + endmethod + endinterface + + interface L1CRqMshr_sendRqToP sendRqToP; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRqToP_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendRqToP_port]; + endmethod + endinterface + + interface L1CRqMshr_pipelineResp pipelineResp; + method L1CRqState getState(cRqIndexT n); + return stateVec[n][pipelineResp_port]; + endmethod + + method reqT getRq(cRqIndexT n); + return reqVec[n][pipelineResp_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][pipelineResp_port]; + endmethod + + method Action releaseEntry(cRqIndexT n) if(inited); + emptyEntryQ.enq(n); + stateVec[n][pipelineResp_port] <= Empty; +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endmethod + + method Action setStateSlot(cRqIndexT n, L1CRqState state, slotT slot); + doAssert(state != Empty, "use releaseEntry to set state to Empty"); + stateVec[n][pipelineResp_port] <= state; + slotVec[n][pipelineResp_port] <= slot; + endmethod + + method Action setData(cRqIndexT n, Maybe#(Line) line); + dataValidVec[n][pipelineResp_port] <= isValid(line); + dataFile.upd(n, fromMaybe(?, line)); + endmethod + + method Maybe#(cRqIndexT) getSucc(cRqIndexT n); + return succValidVec[n][pipelineResp_port] ? (Valid (succFile.sub(n))) : Invalid; + endmethod + + method Action setSucc(cRqIndexT n, Maybe#(cRqIndexT) succ); + succValidVec[n][pipelineResp_port] <= isValid(succ); + succFile.upd(n, fromMaybe(?, succ)); + endmethod + + method Maybe#(cRqIndexT) searchEndOfChain(Addr addr); + function Bool isEndOfChain(Integer i); + // check entry i is end of chain or not + L1CRqState state = stateVec[i][pipelineResp_port]; + Bool notDone = state != Done; + Bool processedOnce = state != Empty && state != Init; + Bool addrMatch = getLineAddr(getAddrFromReq(reqVec[i][pipelineResp_port])) == getLineAddr(addr); + Bool noSucc = !succValidVec[i][pipelineResp_port]; + return notDone && processedOnce && addrMatch && noSucc; + endfunction + Vector#(cRqNum, Integer) idxVec = genVector; + return searchIndex(isEndOfChain, idxVec); + endmethod + endinterface + + method Bool emptyForFlush; + function Bool isEmpty(Integer i) = stateVec[i][flush_port] == Empty; + Vector#(cRqNum, Integer) idxVec = genVector; + return all(isEmpty, idxVec); + endmethod + +`ifdef CHECK_DEADLOCK + interface stuck = toGet(stuckQ); +`else + interface stuck = nullGet; +`endif +endmodule + +// exported version +module mkL1CRqMshr#( + function Addr getAddrFromReq(reqT r) +)( + L1CRqMshr#(cRqNum, wayT, tagT, reqT) +) provisos ( + Alias#(wayT, Bit#(_waySz)), + Alias#(tagT, Bit#(_tagSz)), + Bits#(reqT, _reqSz) +); + let m <- mkL1CRqMshrSafe(getAddrFromReq); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/L1PRqMshr.bsv b/src_Core/RISCY_OOO/coherence/src/L1PRqMshr.bsv new file mode 100644 index 0000000..34ae985 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/L1PRqMshr.bsv @@ -0,0 +1,231 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import RegFile::*; +import FIFO::*; +import FShow::*; +import GetPut::*; +import Types::*; +import CCTypes::*; +import DefaultValue::*; +import Ehr::*; +import Fifo::*; +import MshrDeadlockChecker::*; + +// MSHR dependency chain invariant: +// every cRq and pRq (for same addr) which has gone through pipeline once will be linked into the chain + +// in L1, pRq is always directly handled at the end of pipeline + +// PRq MSHR entry state +typedef enum { + Empty, + Init, + Done +} L1PRqState deriving (Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + L1PRqState state; +} L1PRqMshrStuck deriving(Bits, Eq, FShow); + +interface L1PRqMshr_sendRsToP_pRq#(numeric type pRqNum); + method PRqMsg#(void) getRq(Bit#(TLog#(pRqNum)) n); + method Maybe#(Line) getData(Bit#(TLog#(pRqNum)) n); + + method Action releaseEntry(Bit#(TLog#(pRqNum)) n); +endinterface + +interface L1PRqMshr_pipelineResp#(numeric type pRqNum); + method PRqMsg#(void) getRq(Bit#(TLog#(pRqNum)) n); + method L1PRqState getState(Bit#(TLog#(pRqNum)) n); + + method Action releaseEntry(Bit#(TLog#(pRqNum)) n); + method Action setDone_setData(Bit#(TLog#(pRqNum)) n, Maybe#(Line) d); +`ifdef SECURITY + method Action setFlushAddr(Bit#(TLog#(pRqNum)) n, Addr a); +`endif +endinterface + +interface L1PRqMshr#(numeric type pRqNum); + // port for pRqTransfer + method ActionValue#(Bit#(TLog#(pRqNum))) getEmptyEntryInit(PRqMsg#(void) r); + + // port for sendRsToP_pRq + interface L1PRqMshr_sendRsToP_pRq#(pRqNum) sendRsToP_pRq; + + // port for pipelineResp + interface L1PRqMshr_pipelineResp#(pRqNum) pipelineResp; + + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(L1PRqMshrStuck) stuck; +endinterface + + +////////////////// +// safe version // +////////////////// +module mkL1PRqMshrSafe( + L1PRqMshr#(pRqNum) +) provisos( + Alias#(pRqIndexT, Bit#(TLog#(pRqNum))) +); + // EHR port + // We put pipelineResp < transfer to cater for deq < enq of cache pipeline + Integer sendRsToP_pRq_port = 0; + Integer pipelineResp_port = 1; + Integer pRqTransfer_port = 2; + + // MSHR entry state + Vector#(pRqNum, Ehr#(3, L1PRqState)) stateVec <- replicateM(mkEhr(Empty)); + Vector#(pRqNum, Ehr#(3, PRqMsg#(void))) reqVec <- replicateM(mkEhr(?)); + // data valid bits + Vector#(pRqNum, Ehr#(3, Bool)) dataValidVec <- replicateM(mkEhr(False)); + // data values + RegFile#(pRqIndexT, Line) dataFile <- mkRegFile(0, fromInteger(valueOf(pRqNum) - 1)); + // empty entry FIFO + FIFO#(pRqIndexT) emptyEntryQ <- mkSizedFIFO(valueOf(pRqNum)); + + // empty entry FIFO needs initialization + Reg#(Bool) inited <- mkReg(False); + Reg#(pRqIndexT) initIdx <- mkReg(0); + + // released entry index fifos + Fifo#(1, pRqIndexT) releaseEntryQ_sendRsToP_pRq <- mkBypassFifo; + Fifo#(1, pRqIndexT) releaseEntryQ_pipelineResp <- mkBypassFifo; + + rule initEmptyEntry(!inited); + emptyEntryQ.enq(initIdx); + initIdx <= initIdx + 1; + if(initIdx == fromInteger(valueOf(pRqNum) - 1)) begin + inited <= True; + $display("%t L1PRqMshrSafe %m: init empty entry done", $time); + end + endrule + +`ifdef CHECK_DEADLOCK + MshrDeadlockChecker#(pRqNum) checker <- mkMshrDeadlockChecker; + FIFO#(L1PRqMshrStuck) stuckQ <- mkFIFO1; + + (* fire_when_enabled *) + rule checkDeadlock; + let stuckIdx <- checker.getStuckIdx; + if(stuckIdx matches tagged Valid .n) begin + stuckQ.enq(L1PRqMshrStuck { + addr: reqVec[n][0].addr, + toState: reqVec[n][0].toState, + state: stateVec[n][0] + }); + end + endrule +`endif + + rule doReleaseEntry_sendRsToP_pRq(inited); + let n <- toGet(releaseEntryQ_sendRsToP_pRq).get; + emptyEntryQ.enq(n); +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endrule + + (* descending_urgency = "doReleaseEntry_sendRsToP_pRq, doReleaseEntry_pipelineResp" *) + rule doReleaseEntry_pipelineResp(inited); + let n <- toGet(releaseEntryQ_pipelineResp).get; + emptyEntryQ.enq(n); +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endrule + + method ActionValue#(pRqIndexT) getEmptyEntryInit(PRqMsg#(void) r) if(inited); + emptyEntryQ.deq; + pRqIndexT n = emptyEntryQ.first; + stateVec[n][pRqTransfer_port] <= Init; + reqVec[n][pRqTransfer_port] <= r; + dataValidVec[n][pRqTransfer_port] <= False; +`ifdef CHECK_DEADLOCK + checker.initEntry(n); +`endif + return n; + endmethod + + interface L1PRqMshr_sendRsToP_pRq sendRsToP_pRq; + method PRqMsg#(void) getRq(pRqIndexT n); + return reqVec[n][sendRsToP_pRq_port]; + endmethod + + method Maybe#(Line) getData(pRqIndexT n); + return dataValidVec[n][sendRsToP_pRq_port] ? (Valid (dataFile.sub(n))) : Invalid; + endmethod + + method Action releaseEntry(pRqIndexT n) if(inited); + releaseEntryQ_sendRsToP_pRq.enq(n); + stateVec[n][sendRsToP_pRq_port] <= Empty; + endmethod + endinterface + + interface L1PRqMshr_pipelineResp pipelineResp; + method PRqMsg#(void) getRq(pRqIndexT n); + return reqVec[n][pipelineResp_port]; + endmethod + + method L1PRqState getState(pRqIndexT n); + return stateVec[n][pipelineResp_port]; + endmethod + + method Action setDone_setData(pRqIndexT n, Maybe#(Line) line); + stateVec[n][pipelineResp_port] <= Done; + dataValidVec[n][pipelineResp_port] <= isValid(line); + dataFile.upd(n, fromMaybe(?, line)); + endmethod + + method Action releaseEntry(pRqIndexT n) if(inited); + releaseEntryQ_pipelineResp.enq(n); + stateVec[n][pipelineResp_port] <= Empty; + endmethod + +`ifdef SECURITY + method Action setFlushAddr(Bit#(TLog#(pRqNum)) n, Addr a); + reqVec[n][pipelineResp_port] <= PRqMsg { + addr: a, + toState: I, + child: ? + }; + endmethod +`endif + endinterface + +`ifdef CHECK_DEADLOCK + interface stuck = toGet(stuckQ); +`else + interface stuck = nullGet; +`endif +endmodule + +// exportd version +module mkL1PRqMshr(L1PRqMshr#(pRqNum)); + let m <- mkL1PRqMshrSafe; + return m; +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/L1Pipe.bsv b/src_Core/RISCY_OOO/coherence/src/L1Pipe.bsv new file mode 100644 index 0000000..484e600 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/L1Pipe.bsv @@ -0,0 +1,391 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import FShow::*; +import Types::*; +import CCTypes::*; +import CCPipe::*; +import RWBramCore::*; +import RandomReplace::*; + +export L1PipeRqIn(..); +export L1PipePRsIn(..); +export L1PipeFlushIn(..); +export L1PipeIn(..); +export L1FlushCmd(..); +export L1Cmd(..); +export L1Pipe(..); +export mkL1Pipe; + +// type param ordering: bank < way < index < tag < cRq < pRq + +// in L1 cache, only cRq can occupy cache line (pRq handled immediately) +// replacement is always done immediately (never have replacing line) +// so cache owner type is simply Maybe#(cRqIdxT) + +// input types +typedef struct { + Addr addr; + rqIdxT mshrIdx; +} L1PipeRqIn#(type rqIdxT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + Maybe#(Line) data; + wayT way; +} L1PipePRsIn#(type wayT) deriving(Bits, Eq, FShow); + +typedef struct { + indexT index; + wayT way; + pRqIdxT mshrIdx; +} L1PipeFlushIn#( + type wayT, + type indexT, + type pRqIdxT +) deriving(Bits, Eq, FShow); + +typedef union tagged { + L1PipeRqIn#(cRqIdxT) CRq; + L1PipeRqIn#(pRqIdxT) PRq; + L1PipePRsIn#(wayT) PRs; +`ifdef SECURITY + L1PipeFlushIn#(wayT, indexT, pRqIdxT) Flush; +`endif +} L1PipeIn#( + type wayT, + type indexT, + type cRqIdxT, + type pRqIdxT +) deriving (Bits, Eq, FShow); + +// output cmd to the processing rule in L1$ +typedef struct { + indexT index; + pRqIdxT mshrIdx; +} L1FlushCmd#(type indexT, type pRqIdxT) deriving(Bits, Eq, FShow); + +typedef union tagged { + cRqIdxT L1CRq; + pRqIdxT L1PRq; + void L1PRs; +`ifdef SECURITY + L1FlushCmd#(indexT, pRqIdxT) L1Flush; +`endif +} L1Cmd#( + type indexT, + type cRqIdxT, + type pRqIdxT +) deriving (Bits, Eq, FShow); + +interface L1Pipe#( + numeric type lgBankNum, + numeric type wayNum, + type indexT, + type tagT, + type cRqIdxT, + type pRqIdxT +); + method Action send(L1PipeIn#(Bit#(TLog#(wayNum)), indexT, cRqIdxT, pRqIdxT) r); + method PipeOut#( + Bit#(TLog#(wayNum)), + tagT, Msi, void, // no dir + Maybe#(cRqIdxT), void, RandRepInfo, // no other + Line, L1Cmd#(indexT, cRqIdxT, pRqIdxT) + ) first; + method Action deqWrite( + Maybe#(cRqIdxT) swapRq, + RamData#(tagT, Msi, void, Maybe#(cRqIdxT), void, Line) wrRam, // always write BRAM + Bool updateRep + ); +endinterface + +// real cmd used in pipeline +typedef struct { + Addr addr; + wayT way; +} L1PipePRsCmd#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + L1PipeRqIn#(cRqIdxT) CRq; + L1PipeRqIn#(pRqIdxT) PRq; + L1PipePRsCmd#(wayT) PRs; +`ifdef SECURITY + L1PipeFlushIn#(wayT, indexT, pRqIdxT) Flush; +`endif +} L1PipeCmd#( + type wayT, + type indexT, + type cRqIdxT, + type pRqIdxT +) deriving (Bits, Eq, FShow); + +module mkL1Pipe( + L1Pipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT, pRqIdxT) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(dirT, void), // no directory + Alias#(ownerT, Maybe#(cRqIdxT)), + Alias#(otherT, void), // no other cache info + Alias#(repT, RandRepInfo), // use random replace + Alias#(pipeInT, L1PipeIn#(wayT, indexT, cRqIdxT, pRqIdxT)), + Alias#(pipeCmdT, L1PipeCmd#(wayT, indexT, cRqIdxT, pRqIdxT)), + Alias#(l1CmdT, L1Cmd#(indexT, cRqIdxT, pRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, dirT, ownerT, otherT, repT, Line, l1CmdT)), // output type + Alias#(infoT, CacheInfo#(tagT, Msi, dirT, ownerT, otherT)), + Alias#(ramDataT, RamData#(tagT, Msi, dirT, ownerT, otherT, Line)), + Alias#(respStateT, RespState#(Msi)), + Alias#(tagMatchResT, TagMatchResult#(wayT)), + Alias#(updateByUpCsT, UpdateByUpCs#(Msi)), + Alias#(updateByDownDirT, UpdateByDownDir#(Msi, dirT)), + Alias#(dataIndexT, Bit#(TAdd#(TLog#(wayNum), indexSz))), + // requirement + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(cRqIdxSz)), + Alias#(pRqIdxT, Bit#(pRqIdxSz)), + Add#(indexSz, a__, AddrSz), + Add#(tagSz, b__, AddrSz) +); + // RAMs + Vector#(wayNum, RWBramCore#(indexT, infoT)) infoRam <- replicateM(mkRWBramCore); + RWBramCore#(indexT, repT) repRam <- mkRandRepRam; + RWBramCore#(dataIndexT, Line) dataRam <- mkRWBramCore; + + // initialize RAM + Reg#(Bool) initDone <- mkReg(False); + Reg#(indexT) initIndex <- mkReg(0); + + rule doInit(!initDone); + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + infoRam[i].wrReq(initIndex, CacheInfo { + tag: 0, + cs: I, + dir: ?, + owner: Invalid, + other: ? + }); + end + repRam.wrReq(initIndex, randRepInitInfo); // useless for random replace + initIndex <= initIndex + 1; + if(initIndex == maxBound) begin + initDone <= True; + end + endrule + + // random replacement + RandomReplace#(wayNum) randRep <- mkRandomReplace; + + // functions + function Addr getAddrFromCmd(pipeCmdT cmd); + return (case(cmd) matches + tagged CRq .r: r.addr; + tagged PRq .r: r.addr; + tagged PRs .r: r.addr; +`ifdef SECURITY + // fake an address for flush req that has the same index + tagged Flush .r: (zeroExtend(r.index) << (valueOf(LgLineSzBytes) + valueOf(lgBankNum))); +`endif + default: ?; + endcase); + endfunction + + function indexT getIndex(pipeCmdT cmd); + Addr a = getAddrFromCmd(cmd); + return truncate(a >> (valueOf(LgLineSzBytes) + valueOf(lgBankNum))); + endfunction + + function ActionValue#(tagMatchResT) tagMatch( + pipeCmdT cmd, + Vector#(wayNum, tagT) tagVec, + Vector#(wayNum, Msi) csVec, + Vector#(wayNum, ownerT) ownerVec, + repT repInfo + ); + return actionvalue + function tagT getTag(Addr a) = truncateLSB(a); + + $display("%t L1 %m tagMatch: ", $time, + fshow(cmd), " ; ", + fshow(getTag(getAddrFromCmd(cmd))), + fshow(tagVec), " ; ", + fshow(csVec), " ; ", + fshow(ownerVec), " ; " + ); + if(cmd matches tagged PRs .rs) begin + // PRs directly read from cmd + return TagMatchResult { + way: rs.way, + pRqMiss: False + }; + end +`ifdef SECURITY + else if(cmd matches tagged Flush .flush) begin + // flush directly read from cmd + return TagMatchResult { + way: flush.way, + pRqMiss: False + }; + end +`endif + else begin + // CRq/PRq: need tag matching + Addr addr = getAddrFromCmd(cmd); + tagT tag = getTag(addr); + // find hit way (nothing is being replaced) + function Bool isMatch(Tuple2#(Msi, tagT) csTag); + match {.cs, .t} = csTag; + return cs > I && t == tag; + endfunction + Maybe#(wayT) hitWay = searchIndex(isMatch, zip(csVec, tagVec)); + if(hitWay matches tagged Valid .w) begin + return TagMatchResult { + way: w, + pRqMiss: False + }; + end + else if(cmd matches tagged PRq .rq) begin + // pRq miss + return TagMatchResult { + way: 0, // default to 0 + pRqMiss: True + }; + end + else begin + // find a unlocked way to replace for cRq + Vector#(wayNum, Bool) unlocked = ?; + Vector#(wayNum, Bool) invalid = ?; + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + invalid[i] = csVec[i] == I; + unlocked[i] = !isValid(ownerVec[i]); + end + Maybe#(wayT) repWay = randRep.getReplaceWay(unlocked, invalid); + // sanity check: repWay must be valid + if(!isValid(repWay)) begin + $fwrite(stderr, "[L1Pipe] ERROR: ", fshow(cmd), " cannot find way to replace\n"); + $finish; + end + return TagMatchResult { + way: fromMaybe(?, repWay), + pRqMiss: False + }; + end + end + endactionvalue; + endfunction + + function ActionValue#(updateByUpCsT) updateByUpCs( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs + ); + actionvalue + doAssert(toState > oldCs, "should truly upgrade cs"); + doAssert((oldCs == I) == dataV, "valid resp data for upgrade from I"); + return UpdateByUpCs {cs: toState}; + endactionvalue + endfunction + + function ActionValue#(updateByDownDirT) updateByDownDir( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs, dirT oldDir + ); + actionvalue + doAssert(False, "L1 does not have dir"); + return UpdateByDownDir {cs: oldCs, dir: oldDir}; + endactionvalue + endfunction + + function ActionValue#(repT) updateRepInfo(repT r, wayT w); + actionvalue + return ?; // random replace does not have bookkeeping + endactionvalue + endfunction + + CCPipe#( + wayNum, indexT, tagT, Msi, dirT, ownerT, otherT, repT, Line, pipeCmdT + ) pipe <- mkCCPipe( + regToReadOnly(initDone), getIndex, tagMatch, + updateByUpCs, updateByDownDir, updateRepInfo, + infoRam, repRam, dataRam + ); + + method Action send(pipeInT req); + case(req) matches + tagged CRq .rq: begin + pipe.enq(CRq (rq), Invalid, Invalid); + end + tagged PRq .rq: begin + pipe.enq(PRq (rq), Invalid, Invalid); + end + tagged PRs .rs: begin + pipe.enq(PRs (L1PipePRsCmd { + addr: rs.addr, + way: rs.way + }), rs.data, UpCs (rs.toState)); + end +`ifdef SECURITY + tagged Flush .flush: begin + pipe.enq(Flush (flush), Invalid, Invalid); + end +`endif + endcase + endmethod + + // need to adapt pipeline output to real output format + method pipeOutT first; + let pout = pipe.first; + return PipeOut { + cmd: (case(pout.cmd) matches + tagged CRq .rq: L1CRq (rq.mshrIdx); + tagged PRq .rq: L1PRq (rq.mshrIdx); + tagged PRs .rs: L1PRs; +`ifdef SECURITY + tagged Flush .flush: L1Flush (L1FlushCmd { + index: flush.index, + mshrIdx: flush.mshrIdx + }); +`endif + default: ?; + endcase), + way: pout.way, + pRqMiss: pout.pRqMiss, + ram: pout.ram, + repInfo: pout.repInfo + }; + endmethod + + method Action deqWrite(Maybe#(cRqIdxT) swapRq, ramDataT wrRam, Bool updateRep); + // get new cmd + Maybe#(pipeCmdT) newCmd = Invalid; + if(swapRq matches tagged Valid .idx) begin // swap in cRq + Addr addr = getAddrFromCmd(pipe.first.cmd); // inherit addr + newCmd = Valid (CRq (L1PipeRqIn {addr: addr, mshrIdx: idx})); +`ifdef SECURITY + doAssert(pipe.first.cmd matches tagged Flush .f ? False : True, + "Cannot swap after a flush req"); +`endif + end + // call pipe + pipe.deqWrite(newCmd, wrRam, updateRep); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/LLBank.bsv b/src_Core/RISCY_OOO/coherence/src/LLBank.bsv new file mode 100644 index 0000000..a32170b --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/LLBank.bsv @@ -0,0 +1,1544 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import FIFO::*; +import GetPut::*; +import Types::*; +import CCTypes::*; +import LLCRqMshr::*; +import CCPipe::*; +import LLPipe ::*; +import FShow::*; +import DefaultValue::*; +import Fifo::*; +import CacheUtils::*; +import Performance::*; +import LatencyTimer::*; +import Cntrs::*; +import ConfigReg::*; +import RandomReplace::*; + +export LLCRqStuck(..); +export LLBank(..); +export mkLLBank; + +// we use an infoQ to serialize all req to memory +// this also ensures that cache pipeline is never blocked +// so we do not need to buffer mem resp that needs to refill cache + +// XXX we need to maintain the invariant that +// at most 1 pRq sent to a child for an addr +// and we have to wait for resp before sending anthoer one + +// In future, it would be hard to parallelize sendRqToC and pipelineResp +// because sendRqToC must see updates to dirPend made in pipelineResp +// or we simply stall sendRqToC + +// XXX DMA req are put in the same MSHR as child req +// this ensures that child req always get a cache line to occupy after being sent to pipeline + +// DMA req are handled in the following way +// (1) If it hits in LLC, then we can downgrade children and process it +// (2) Otherwise, we req memory, XXX and req is viewed as Done +// The dep successor is sent to retry instead of being swapped in, +// because we don't have a cache line to occupy... +// When the mem resp comes, we send DMA resp and DO NOT fill cache + +// XXX mem resp that refill cache are for child req, others that don't refill cache are for DMA req + +// We do not need an explict bank id, because bank id is included in cRq.addr + +// naming rule: child req type names < dma type names + +interface LLBank#( + numeric type lgBankNum, + numeric type childNum, + numeric type wayNum, + numeric type indexSz, + numeric type tagSz, + numeric type cRqNum, // including DMA req + type cRqIdT, + type dmaRqIdT +); + interface ParentCacheToChild#(cRqIdT, Bit#(TLog#(childNum))) to_child; + interface DmaServer#(dmaRqIdT) dma; + interface MemFifoClient#(LdMemRqId#(Bit#(TLog#(cRqNum))), void) to_mem; + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(LLCRqStuck#(childNum, cRqIdT, dmaRqIdT)) cRqStuck; + // performance + method Action setPerfStatus(Bool stats); + method Data getPerfData(LLCPerfType t); +endinterface + +typedef struct { + LLRqId#(cRqIdT, dmaRqIdT) id; + Addr addr; + Msi fromState; + Msi toState; + Bit#(TLog#(childNum)) child; + LLCRqState state; + Bool waitP; + Vector#(childNum, DirPend) dirPend; +} LLCRqStuck#(numeric type childNum, type cRqIdT, type dmaRqIdT) deriving(Bits, Eq, FShow); + +typedef struct { + cRqIdT cRqId; + Msi toState; +} LLRsInfo#(type cRqIdT) deriving(Bits, Eq, FShow); + +// to mem info +typedef enum { + Ld, // read only by child req or dma req + DmaWr, // dma write only + RepLd // first write replaced line then load new line (for child req) +} ToMemType deriving(Bits, Eq, FShow); + +typedef struct { + mshrIdxT mshrIdx; + ToMemType t; +} ToMemInfo#(type mshrIdxT) deriving(Bits, Eq, FShow); + +// enum for source of cRq +typedef enum {Child, Dma} LLCRqSrc deriving(Bits, Eq, FShow); + +module mkLLBank#( + module#(LLCRqMshr#(cRqNum, wayT, tagT, Vector#(childNum, DirPend), cRqT)) mkLLMshr, + module#(LLPipe#(lgBankNum, childNum, wayNum, indexT, tagT, cRqIndexT)) mkLLPipeline, + // Whether we resp a load request (to S) with E permission. The directory + // is all I when this function is called. fetchFromMem indicates whether + // the data is just fetched from DRAM or not. Any function given here will + // not affect correctness of coherence protocol. + function Bool respLoadWithE(Bool fetchFromMem) +)( + LLBank#(lgBankNum, childNum, wayNum, indexSz, tagSz, cRqNum, cRqIdT, dmaRqIdT) +) provisos( + Alias#(childT, Bit#(TLog#(childNum))), + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(dirT, Vector#(childNum, Msi)), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIndexT, Bit#(TLog#(cRqNum))), + Alias#(cacheOwnerT, Maybe#(CRqOwner#(cRqIndexT))), + Alias#(cacheInfoT, CacheInfo#(tagT, Msi, dirT, cacheOwnerT, void)), + Alias#(ramDataT, RamData#(tagT, Msi, dirT, cacheOwnerT, void, Line)), + Alias#(cRqFromCT, CRqMsg#(cRqIdT, childT)), + Alias#(cRsFromCT, CRsMsg#(childT)), + Alias#(pRqRsToCT, PRqRsMsg#(cRqIdT, childT)), + Alias#(dmaRqT, DmaRq#(dmaRqIdT)), + Alias#(dmaRsT, DmaRs#(dmaRqIdT)), + Alias#(ldMemRqIdT, LdMemRqId#(cRqIndexT)), + Alias#(memRsT, MemRsMsg#(ldMemRqIdT, void)), + Alias#(toMemT, ToMemMsg#(ldMemRqIdT, void)), + Alias#(toMemInfoT, ToMemInfo#(cRqIndexT)), + Alias#(cRqT, LLRq#(cRqIdT, dmaRqIdT, childT)), + Alias#(cRqSlotT, LLCRqSlot#(wayT, tagT, Vector#(childNum, DirPend))), // cRq MSHR slot + Alias#(llCmdT, LLCmd#(childT, cRqIndexT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, dirT, cacheOwnerT, void, RandRepInfo, Line, llCmdT)), + // requirements + Bits#(cRqIdT, _cRqIdSz), + Bits#(dmaRqIdT, _dmaRqIdSz), + FShow#(cRqIdT), + FShow#(dmaRqIdT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum) +); + + LLCRqMshr#(cRqNum, wayT, tagT, Vector#(childNum, DirPend), cRqT) cRqMshr <- mkLLMshr; + + LLPipe#(lgBankNum, childNum, wayNum, indexT, tagT, cRqIndexT) pipeline <- mkLLPipeline; + + Fifo#(2, cRqFromCT) rqFromCQ <- mkCFFifo; + Fifo#(2, cRsFromCT) rsFromCQ <- mkCFFifo; + Fifo#(2, pRqRsToCT) toCQ <- mkCFFifo; + + Fifo#(2, dmaRqT) rqFromDmaQ <- mkCFFifo; + Fifo#(2, dmaRsT) rsLdToDmaQ <- mkCFFifo; + Fifo#(2, dmaRqIdT) rsStToDmaQ <- mkCFFifo; + + Fifo#(2, toMemT) toMQ <- mkCFFifo; + Fifo#(2, memRsT) rsFromMQ <- mkCFFifo; + + // mshr index of load or write to memory, all mem accesses are ordered here + FIFO#(toMemInfoT) toMInfoQ <- mkSizedFIFO(valueOf(cRqNum)); + // mshr index of req that is waken up when replacement is done + Fifo#(cRqNum, cRqIndexT) cRqRetryIndexQ <- mkCFFifo; + // mshr index of upgrade resp to child + Fifo#(cRqNum, LLRsInfo#(cRqIndexT)) rsToCIndexQ <- mkCFFifo; + // mshr index of resp to dma (merge 3 FIFOs for each enq places) + FIFO#(cRqIndexT) rsLdToDmaIndexQ <- mkSizedFIFO(valueof(cRqNum)); + FIFO#(cRqIndexT) rsStToDmaIndexQ <- mkSizedFIFO(valueof(cRqNum)); + FIFO#(cRqIndexT) rsLdToDmaIndexQ_mRsDeq <- mkFIFO; + FIFO#(cRqIndexT) rsStToDmaIndexQ_sendToM <- mkFIFO; + FIFO#(cRqIndexT) rsLdToDmaIndexQ_pipelineResp <- mkFIFO; + FIFO#(cRqIndexT) rsStToDmaIndexQ_pipelineResp <- mkFIFO; + +`ifdef DEBUG_DMA + // these FIFOs are enqueued when DMA req really takes effect + // FIFOs has 0 cycle latency to match L1Bank resp latency + Fifo#(1, dmaRqIdT) dmaWrMissQ <- mkBypassFifo; + Fifo#(1, dmaRqIdT) dmaWrHitQ <- mkBypassFifo; + Fifo#(1, dmaRqIdT) dmaRdMissQ <- mkBypassFifo; + Fifo#(1, dmaRqIdT) dmaRdHitQ <- mkBypassFifo; +`endif + + // performance +`ifdef PERF_COUNT + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) dmaMemLdCnt <- mkCount(0); + Count#(Data) dmaMemLdLat <- mkCount(0); + Count#(Data) normalMemLdCnt <- mkCount(0); + Count#(Data) normalMemLdLat <- mkCount(0); + Count#(Data) mshrBlocks <- mkCount(0); + Count#(Data) downRespCnt <- mkCount(0); + Count#(Data) downRespDataCnt <- mkCount(0); + Count#(Data) downReqCnt <- mkCount(0); + Count#(Data) upRespCnt <- mkCount(0); + Count#(Data) upRespDataCnt <- mkCount(0); + Count#(Data) dmaLdReqCnt <- mkCount(0); + Count#(Data) dmaStReqCnt <- mkCount(0); + + LatencyTimer#(cRqNum, 10) latTimer <- mkLatencyTimer; // max 1K cycle latency + + function Action incrMissCnt(cRqIndexT idx, Bool isDma); + action + let lat <- latTimer.done(idx); + if(doStats) begin + if(isDma) begin + dmaMemLdCnt.incr(1); + dmaMemLdLat.incr(zeroExtend(lat)); + end + else begin + normalMemLdCnt.incr(1); + normalMemLdLat.incr(zeroExtend(lat)); + end + end + endaction + endfunction +`endif + + function tagT getTag(Addr a) = truncateLSB(a); + + function cRqIdT getIdFromC(LLRqId#(cRqIdT, dmaRqIdT) id); + if(id matches tagged Child .i) begin + return i; + end + else begin + return ?; + end + endfunction + + function dmaRqIdT getIdFromDma(LLRqId#(cRqIdT, dmaRqIdT) id); + if(id matches tagged Dma .i) begin + return i; + end + else begin + return ?; + end + endfunction + + function Bool isRqFromC(LLRqId#(cRqIdT, dmaRqIdT) id); + return id matches tagged Child .i ? True : False; + endfunction + + function Bool isRqFromDma(LLRqId#(cRqIdT, dmaRqIdT) id); + return id matches tagged Dma .i ? True : False; + endfunction + + // merge ld resp index to DMA FIFO + rule mergeRsLdToDmaIndexQ_mRsDeq; + let idx <- toGet(rsLdToDmaIndexQ_mRsDeq).get; + rsLdToDmaIndexQ.enq(idx); + endrule + (* descending_urgency = "mergeRsLdToDmaIndexQ_pipelineResp, mergeRsLdToDmaIndexQ_mRsDeq" *) + rule mergeRsLdToDmaIndexQ_pipelineResp; + let idx <- toGet(rsLdToDmaIndexQ_pipelineResp).get; + rsLdToDmaIndexQ.enq(idx); + endrule + + // merge st resp index to DMA FIFO + rule mergeRsStToDmaIndexQ_sendToM; + let idx <- toGet(rsStToDmaIndexQ_sendToM).get; + rsStToDmaIndexQ.enq(idx); + endrule + (* descending_urgency = "mergeRsStToDmaIndexQ_pipelineResp, mergeRsStToDmaIndexQ_sendToM" *) + rule mergeRsStToDmaIndexQ_pipelineResp; + let idx <- toGet(rsStToDmaIndexQ_pipelineResp).get; + rsStToDmaIndexQ.enq(idx); + endrule + + // send retrying cRq to pipeline + rule cRqTransfer_retry(cRqRetryIndexQ.notEmpty); + cRqRetryIndexQ.deq; + cRqIndexT n = cRqRetryIndexQ.first; + // XXX don't change MSHR entry to Init + // later cRq to same addr needs to be appended after this one + // send to pipeline + cRqT req = cRqMshr.transfer.getRq(n); + pipeline.send(CRq (LLPipeCRqIn { + addr: req.addr, + mshrIdx: n + })); + $display("%t LL %m cRqTransfer_retry: ", $time, + fshow(n), " ; ", + fshow(req) + ); + endrule + + // round-robin for accepting new cRq from child and DMA + Reg#(LLCRqSrc) priorNewCRqSrc <- mkReg(Child); // src with priority + + function Maybe#(LLCRqSrc) newCRqSrc; + if(priorNewCRqSrc == Child && rqFromCQ.notEmpty) begin + return Valid (Child); + end + else if(priorNewCRqSrc == Dma && rqFromDmaQ.notEmpty) begin + return Valid (Dma); + end + else begin + if(rqFromCQ.notEmpty) begin + return Valid (Child); + end + else if(rqFromDmaQ.notEmpty) begin + return Valid (Dma); + end + else begin + return Invalid; + end + end + endfunction + + function Action flipPriorNewCRqSrc; + action + priorNewCRqSrc <= priorNewCRqSrc == Dma ? Child : Dma; + endaction + endfunction + + // insert new cRq from child to MSHR and send to pipeline + rule cRqTransfer_new_child(!cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Child)); + rqFromCQ.deq; + cRqFromCT r = rqFromCQ.first; + cRqT cRq = LLRq { + addr: r.addr, + fromState: r.fromState, + toState: r.toState, + canUpToE: r.canUpToE, + child: r.child, + byteEn: ?, + id: Child (r.id) + }; + // setup new MSHR entry + cRqIndexT n <- cRqMshr.transfer.getEmptyEntryInit(cRq, Invalid); + // send to pipeline + pipeline.send(CRq (LLPipeCRqIn { + addr: cRq.addr, + mshrIdx: n + })); + // change round robin + flipPriorNewCRqSrc; + $display("%t LL %m cRqTransfer_new_child: ", $time, + fshow(n), " ; ", + fshow(r), " ; ", + fshow(cRq) + ); + endrule + +`ifdef PERF_COUNT + // perf stats: insert new cRq fails because of full MSHR + rule cRqTransfer_new_child_block( + !cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Child) && doStats + ); + cRqFromCT r = rqFromCQ.first; + cRqT cRq = LLRq { + addr: r.addr, + fromState: r.fromState, + toState: r.toState, + canUpToE: r.canUpToE, + child: r.child, + byteEn: ?, + id: Child (r.id) + }; + if(!cRqMshr.transfer.hasEmptyEntry(cRq)) begin + mshrBlocks.incr(1); + end + endrule +`endif + + // insert new cRq from DMA to MSHR and send to pipeline + rule cRqTransfer_new_dma(!cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Dma)); + rqFromDmaQ.deq; + dmaRqT r = rqFromDmaQ.first; + Bool write = r.byteEn != replicate(False); + cRqT cRq = LLRq { + addr: r.addr, + fromState: I, + toState: write ? M : S, // later on we use toState to distinguish DMA write vs. read + canUpToE: False, // DMA should not go to E + child: ?, + byteEn: r.byteEn, + id: Dma (r.id) + }; + // setup new MSHR entry and data + cRqIndexT n <- cRqMshr.transfer.getEmptyEntryInit(cRq, write ? Valid (r.data) : Invalid); + // send to pipeline + pipeline.send(CRq (LLPipeCRqIn { + addr: cRq.addr, + mshrIdx: n + })); + // change round robin + flipPriorNewCRqSrc; + $display("%t LL %m cRqTransfer_new_dma: ", $time, + fshow(n), " ; ", + fshow(r), " ; ", + fshow(cRq) + ); +`ifdef PERF_COUNT + if(doStats) begin + if(write) begin + dmaStReqCnt.incr(1); + end + else begin + dmaLdReqCnt.incr(1); + end + end +`endif + endrule + +`ifdef PERF_COUNT + // perf stats: insert new cRq fails because of full MSHR + rule cRqTransfer_new_dma_block( + !cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Dma) && doStats + ); + dmaRqT r = rqFromDmaQ.first; + Bool write = r.byteEn != replicate(False); + cRqT cRq = LLRq { + addr: r.addr, + fromState: I, + toState: write ? M : S, + canUpToE: False, + child: ?, + byteEn: r.byteEn, + id: Dma (r.id) + }; + if(!cRqMshr.transfer.hasEmptyEntry(cRq)) begin + mshrBlocks.incr(1); + end + endrule +`endif + + // send downgrade resp from child to pipeline + rule cRsTransfer; + rsFromCQ.deq; + cRsFromCT cRs = rsFromCQ.first; + pipeline.send(CRs (cRs)); + $display("%t LL %m cRsTransfer: ", $time, fshow(cRs)); +`ifdef PERF_COUNT + if(doStats) begin + downRespCnt.incr(1); + if(isValid(cRs.data)) begin + downRespDataCnt.incr(1); + end + end +`endif + endrule + + // mem resp for child req, will refill cache, send it to pipeline + (* descending_urgency = "mRsTransfer, cRsTransfer, cRqTransfer_retry, cRqTransfer_new_child, cRqTransfer_new_dma" *) +`ifdef PERF_COUNT + // stop mshr block stats when other higher priority req is being sent to + // pipeline + (* preempts = "mRsTransfer, cRqTransfer_new_child_block" *) + (* preempts = "mRsTransfer, cRqTransfer_new_dma_block" *) + (* preempts = "cRsTransfer, cRqTransfer_new_child_block" *) + (* preempts = "cRsTransfer, cRqTransfer_new_dma_block" *) +`endif + rule mRsTransfer(rsFromMQ.first.id.refill); + // get mem resp cRq index & data + rsFromMQ.deq; + memRsT mRs = rsFromMQ.first; + cRqIndexT n = mRs.id.mshrIdx; + Line respData = mRs.data; + // get correspond cRq & slot + cRqT cRq = cRqMshr.transfer.getRq(n); + cRqSlotT cSlot = cRqMshr.transfer.getSlot(n); + doAssert(isRqFromC(cRq.id), "refill mem resp must be for child req"); + // send to pipeline + pipeline.send(MRs (LLPipeMRsIn { + addr: cRq.addr, + toState: cRq.toState == M ? M : E, // set upgrade state + data: respData, + way: cSlot.way + })); + $display("%t LL %m mRsTransfer: ", $time, + fshow(mRs), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; " + ); +`ifdef PERF_COUNT + // performance counter: normal miss lat and cnt + incrMissCnt(n, False); +`endif + endrule + + // this mem resp is just for a DMA req, won't go into pipeline to refill cache + rule mRsDeq_nonRefill(!rsFromMQ.first.id.refill); + rsFromMQ.deq; + memRsT mRs = rsFromMQ.first; + $display("%t LL %m mRsDeq_nonRefill: ", $time, fshow(mRs)); + // save data into cRq mshr & send to DMA resp IndexQ + cRqMshr.mRsDeq.setData(mRs.id.mshrIdx, Valid (mRs.data)); + rsLdToDmaIndexQ_mRsDeq.enq(mRs.id.mshrIdx); +`ifdef PERF_COUNT + // performance counter: dma miss lat and cnt + incrMissCnt(mRs.id.mshrIdx, True); +`endif + endrule + + // send rd/wr to mem + // when sending to mem, we may first write back replaced line then load new line + // this reg records when we should to the load new line for this case + Reg#(Bool) doLdAfterReplace <- mkReg(False); + rule sendToM; + ToMemType t = toMInfoQ.first.t; + cRqIndexT n = toMInfoQ.first.mshrIdx; + cRqT cRq = cRqMshr.sendToM.getRq(n); + cRqSlotT cSlot = cRqMshr.sendToM.getSlot(n); + Maybe#(Line) data = cRqMshr.sendToM.getData(n); + $display("%t LL %m sendToM: ", $time, + fshow(toMInfoQ.first), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; ", + fshow(data), " ; ", + fshow(doLdAfterReplace) + ); + // take actions according to type + if(t == Ld) begin + // only load mem: can be child or dma req + toMemT msg = Ld (LdMemRq { + addr: cRq.addr, + child: ?, + id: LdMemRqId { + // child rq needs refill cache line, dma rq does not + refill: isRqFromC(cRq.id), + mshrIdx: n + } + }); + toMQ.enq(msg); + toMInfoQ.deq; // deq info + $display("%t LL %m sendToM: load only: ", $time, fshow(msg)); + doAssert(!isValid(data), "cannot have data"); + doAssert(!doLdAfterReplace, "doLdAfterReplace should be false"); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif +`ifdef DEBUG_DMA + if(cRq.id matches tagged Dma .dmaId) begin + dmaRdMissQ.enq(dmaId); // DMA read takes effect + end +`endif + end + else if(t == DmaWr) begin + // only write mem: must be dma req + toMemT msg = Wb (WbMemRs { + addr: cRq.addr, + byteEn: cRq.byteEn, + data: validValue(data) + }); + toMQ.enq(msg); + toMInfoQ.deq; // deq info + // dma write can be resp (i.e. mshr entry can be released) + rsStToDmaIndexQ_sendToM.enq(n); + $display("%t LL %m sendToM: dma write: ", $time, fshow(msg)); + doAssert(isRqFromDma(cRq.id), "must be dma write"); + doAssert(isValid(data), "dma write must have data"); + doAssert(!doLdAfterReplace, "doLdAfterReplace should be false"); +`ifdef DEBUG_DMA + dmaWrMissQ.enq(getIdFromDma(cRq.id)); // DMA write takes effect +`endif + end + else if(t == RepLd) begin + // write back replaced line then load, must be child req + if(doLdAfterReplace) begin // do load part + toMemT msg = Ld (LdMemRq { + addr: cRq.addr, + child: ?, + id: LdMemRqId { + refill: True, + mshrIdx: n + } + }); + toMQ.enq(msg); + // whole thing is done, reset bit and deq info + toMInfoQ.deq; + doLdAfterReplace <= False; + $display("%t LL %m sendToM: rep then ld: ld: ", $time, fshow(msg)); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif + end + else begin // do write back part + toMemT msg = Wb (WbMemRs { + addr: {cSlot.repTag, truncate(cRq.addr)}, + byteEn: replicate(True), + data: validValue(data) + }); + toMQ.enq(msg); + // don't deq info, do ld next time + doLdAfterReplace <= True; + $display("%t LL %m sendToM: rep then ld: rep: ", $time, fshow(msg)); + end + doAssert(isRqFromC(cRq.id), "must be child req"); + doAssert(isValid(data), "replace must have data"); + end + else begin + doAssert(False, "unknown to mem type"); + end + endrule + + // send DMA resp + rule sendRsLdToDma; + rsLdToDmaIndexQ.deq; + cRqIndexT n = rsLdToDmaIndexQ.first; + cRqT cRq = cRqMshr.sendRsToDmaC.getRq(n); + Maybe#(Line) data = cRqMshr.sendRsToDmaC.getData(n); + $display("%t LL %m sendRsToDma: Ld: ", $time, + fshow(n), " ; ", + fshow(cRq), " ; ", + fshow(data) + ); + doAssert(isValid(data), "dma read req always has valid data"); + // send DMA resp + doAssert(isRqFromDma(cRq.id), "cRq should be DMA req"); + doAssert(cRq.byteEn == replicate(False) && cRq.toState == S, + "cRq should be DMA read" + ); + dmaRqIdT dmaId = getIdFromDma(cRq.id); + rsLdToDmaQ.enq(DmaRs { + data: validValue(data), + id: dmaId + }); + // release MSHR entry + cRqMshr.sendRsToDmaC.releaseEntry(n); + endrule + + rule sendRsStToDma; + rsStToDmaIndexQ.deq; + cRqIndexT n = rsStToDmaIndexQ.first; + cRqT cRq = cRqMshr.sendRsToDmaC.getRq(n); + $display("%t LL %m sendRsToDma: St: ", $time, + fshow(n), " ; ", + fshow(cRq) + ); + // send DMA resp + doAssert(isRqFromDma(cRq.id), "cRq should be DMA req"); + doAssert(cRq.byteEn != replicate(False) && cRq.toState == M, + "cRq should be DMA write" + ); + dmaRqIdT dmaId = getIdFromDma(cRq.id); + rsStToDmaQ.enq(dmaId); + // release MSHR entry + cRqMshr.sendRsToDmaC.releaseEntry(n); + endrule + + // send upgrade resp to child + rule sendRsToC(rsToCIndexQ.notEmpty); + // send upgrade resp to child + rsToCIndexQ.deq; + cRqIndexT n = rsToCIndexQ.first.cRqId; + Msi toState = rsToCIndexQ.first.toState; + cRqT cRq = cRqMshr.sendRsToDmaC.getRq(n); + Maybe#(Line) rsData = cRqMshr.sendRsToDmaC.getData(n); + $display("%t LL %m sendRsToC: ", $time, + fshow(n), " ; ", + fshow(cRq), " ; ", + fshow(rsData), " ; ", + fshow(toState) + ); + // send resp to child + doAssert(isRqFromC(cRq.id), "cRq should be child req"); + cRqIdT cRqId = getIdFromC(cRq.id); + toCQ.enq(PRs (PRsMsg { + addr: cRq.addr, + toState: toState, // we may upgrade to E for req S, don't use toState in cRq + child: cRq.child, + data: rsData, + id: cRqId + })); + // release MSHR entry + cRqMshr.sendRsToDmaC.releaseEntry(n); +`ifdef PERF_COUNT + if(doStats) begin + upRespCnt.incr(1); + if(isValid(rsData)) begin + upRespDataCnt.incr(1); + end + end +`endif + endrule + + // send downgrade req to child + // round robin select cRq to downgrade child + // but downgrade must wait for all upgrade resp + Reg#(cRqIndexT) whichCRq <- mkReg(0); + + // we don't perform sending downgrade to child for a cRq processing by pipelineResp_cRs + // otherwise atomicity issue may arise + // for safety, we check cRq processed by all pipelineResp_xxx rules + // this won't create unnecessary stalls + // (because the cRq by pipelineResp won't match the one chosen for child downgrade) + function Bool notPipelineResp(cRqIndexT n); + if(pipeline.notEmpty) begin + // use unguarded version for pipeline.first + // (if use guarded version, compiler must lift guard correctly) + llCmdT cmd = pipeline.unguard_first.cmd; + cacheOwnerT owner = pipeline.unguard_first.ram.info.owner; + Bool ownerMatch = isValid(owner) ? fromMaybe(?, owner).mshrIdx == n : False; + return (case(cmd) matches + tagged LLCRq .m: return m != n; + tagged LLMRs: return !ownerMatch; + tagged LLCRs .c: return !ownerMatch; + default: return True; + endcase); + end + else begin + return True; + end + endfunction + + rule sendRqToC(!rsToCIndexQ.notEmpty); + Maybe#(cRqIndexT) cRqNeedDown = cRqMshr.sendRqToC.searchNeedRqChild(Valid (whichCRq)); + // XXX must add this into guard + // otherwise this rule will block pipelineResp rule from firing forever + check(isValid(cRqNeedDown)); + + cRqIndexT n = fromMaybe(?, cRqNeedDown); + // XXX stall if cRq n is processed in pipelineResp + check(notPipelineResp(n)); + + cRqT cRq = cRqMshr.sendRqToC.getRq(n); + cRqSlotT cSlot = cRqMshr.sendRqToC.getSlot(n); + LLCRqState cState = cRqMshr.sendRqToC.getState(n); + doAssert(cState == WaitSt || cState == WaitOldTag, + "only WaitSt and WaitOldTag needs req child" + ); + // find a child to downgrade + function Bool needSend(DirPend dp); + return dp matches tagged ToSend .s ? True : False; + endfunction + Maybe#(childT) childToDown = searchIndex(needSend, cSlot.dirPend); + doAssert(isValid(childToDown), ("should have a child to downgrade")); + childT child = fromMaybe(?, childToDown); + // get the state to downgrade to + Msi toState = ?; + if(cSlot.dirPend[child] matches tagged ToSend .st) begin + toState = st; + end + else begin + doAssert(False, ("dirPend should be ToSend")); + end + // send downgrade req: addr depends on state + // either be cRq addr or replacing addr + Addr rqAddr = cState == WaitSt ? cRq.addr : {cSlot.repTag, truncate(cRq.addr)}; + pRqRsToCT req = PRq (PRqMsg { + addr: rqAddr, + toState: toState, + child: child + }); + toCQ.enq(req); + // change dirPend + Vector#(childNum, DirPend) newDirPend = cSlot.dirPend; + newDirPend[child] = Waiting (toState); + cRqMshr.sendRqToC.setSlot(n, LLCRqSlot { // keep cState the same + way: cSlot.way, + repTag: cSlot.repTag, + waitP: cSlot.waitP, + dirPend: newDirPend + }); + $display("%t LL %m sendRqToC: ", $time, + fshow(n), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; ", + fshow(cState), " ; ", + fshow(req) + ); + // change round-robin + whichCRq <= whichCRq == fromInteger(valueOf(cRqNum) - 1) ? 0 : whichCRq + 1; +`ifdef PERF_COUNT + if(doStats) begin + downReqCnt.incr(1); + end +`endif + endrule + + // Final stage of pipeline: process all kinds of msg + pipeOutT pipeOut = pipeline.first; + ramDataT ram = pipeOut.ram; + // select getCSlot, getRepSucc from cRqMshr + cRqIndexT pipeOutCRqIdx = (case(pipeOut.cmd) matches + tagged LLCRq .n: return n; + default: return ram.info.owner matches tagged Valid .cOwner ? cOwner.mshrIdx : 0; // LLMRs LLCRs + endcase); + cRqSlotT pipeOutCSlot = cRqMshr.pipelineResp.getSlot(pipeOutCRqIdx); + Maybe#(cRqIndexT) pipeOutRepSucc = cRqMshr.pipelineResp.getRepSucc(pipeOutCRqIdx); + Maybe#(cRqIndexT) pipeOutAddrSucc = cRqMshr.pipelineResp.getAddrSucc(pipeOutCRqIdx); + LLCRqState pipeOutCState = cRqMshr.pipelineResp.getState(pipeOutCRqIdx); + cRqT pipeOutCRq = cRqMshr.pipelineResp.getRq(pipeOutCRqIdx); + + // function to process cRq hit (MSHR slot may have garbage) + function Action cRqFromCHit(cRqIndexT n, cRqT cRq, Bool isMRs); + action + $display("%t LL %m pipelineResp: cRq from child Hit func: ", $time, + fshow(n), " ; ", + fshow(cRq) + ); + doAssert(n == pipeOutCRqIdx, "must match pipe out cRq idx"); + doAssert(isRqFromC(cRq.id), "should be cRq from child"); + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + // this function is called by mRs, cRq, cRs + // tag should match even for mRs, because + // tag has been written into cache before sending req to parent + ("cRqHit but tag or cs incorrect") + ); + // decide upgrade state + Msi toState = cRq.toState; + if(cRq.toState == S && cRq.canUpToE && ram.info.dir == replicate(I) && respLoadWithE(isMRs)) begin + toState = E; + end + // update slot, data & send to indexQ + // decide data validity using dir (which is more up to date than fromState) + rsToCIndexQ.enq(LLRsInfo { + cRqId: n, + toState: toState + }); + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); // we no longer need slot info + cRqMshr.pipelineResp.setData(n, ram.info.dir[cRq.child] == I ? Valid (ram.line) : Invalid); + // update child dir + dirT newDir = ram.info.dir; + newDir[cRq.child] = toState; + // update cs (may have E -> M) + Msi newCs = ram.info.cs; + if(toState == M) begin + newCs = M; + end + // deq pipeline or swap in successor + Maybe#(cRqIndexT) succ = pipeOutAddrSucc; + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // should be the same as original tag + cs: newCs, + dir: newDir, + owner: (case(succ) matches // pass owner to successor + tagged Valid .m: return Valid (CRqOwner { + mshrIdx: m, + replacing: False // succesor cannot replace + }); + default: return Invalid; + endcase), + other: ? + }, + line: ram.line // use line in ram + }, True); // hit, so update rep info + endaction + endfunction + + // function to process DMA req hit (MSHR slot may have garbage) + function Action cRqFromDmaHit(cRqIndexT n, cRqT cRq); + action + $display("%t LL %m pipelineResp: cRq from dma Hit func: ", $time, + fshow(n), " ; ", + fshow(cRq) + ); + doAssert(n == pipeOutCRqIdx, "must match pipe out cRq idx"); + doAssert(isRqFromDma(cRq.id), "should be cRq from dma"); + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + "cRqHit but tag or cs incorrect" + ); + doAssert((cRq.byteEn != replicate(False)) == (cRq.toState == M), "toState should match byteEn"); + // update cs (may have E -> M) + Msi newCs = ram.info.cs; + if(cRq.toState == M) begin + newCs = M; + end + // update cache line + Maybe#(Line) wrData = cRqMshr.pipelineResp.getData(n); + doAssert(isValid(wrData) == (cRq.byteEn != replicate(False)), + "dma write should carry valid data" + ); + Line newLine = getUpdatedLine(ram.line, cRq.byteEn, validValue(wrData)); + // deq pipeline or swap in successor + Maybe#(cRqIndexT) succ = pipeOutAddrSucc; + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // should be the same as original tag + cs: newCs, + dir: ram.info.dir, // dir does not change + owner: (case(succ) matches // pass owner to successor + tagged Valid .m: return Valid (CRqOwner { + mshrIdx: m, + replacing: False // succesor cannot replace + }); + default: return Invalid; + endcase), + other: ? + }, + line: newLine // use new line + }, True); // hit, so update rep info + // update slot, data & send to indexQ + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); // we no longer need slot info + cRqMshr.pipelineResp.setData(n, Valid (ram.line)); // save the orig cache line + if(cRq.toState == M) begin + rsStToDmaIndexQ_pipelineResp.enq(n); + end + else begin + rsLdToDmaIndexQ_pipelineResp.enq(n); + end +`ifdef DEBUG_DMA + // DMA req takes effect + dmaRqIdT dmaId = getIdFromDma(cRq.id); + if(cRq.toState == M) begin + dmaWrHitQ.enq(dmaId); + end + else begin + dmaRdHitQ.enq(dmaId); + end +`endif + endaction + endfunction + + // function to directly evict a cache line by a cRq from child (replacement) + function Action cRqFromCEvict(cRqIndexT n, cRqT cRq, Maybe#(cRqIndexT) repSucc); + action + doAssert(isRqFromC(cRq.id), "only cRq from child can evict a line"); + doAssert(ram.info.dir == replicate(I) && ram.info.cs > I, + "only evict valid line which has no children" + ); + // write back (only when line is M, otherwise silent drop) + // and req memory for new data (because cs is I now) + Bool needWB = ram.info.cs == M; + toMInfoQ.enq(ToMemInfo{ + mshrIdx: n, + t: needWB ? RepLd : Ld + }); + // update MSHR + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, LLCRqSlot { + way: pipeOut.way, // use way from pipeline + repTag: ram.info.tag, // record old tag for replacement to mem + waitP: True, // waiting for mem resp + dirPend: replicate(Invalid) // children are all I + }); + cRqMshr.pipelineResp.setData(n, needWB ? Valid (ram.line) : Invalid); // replacement needs data + // wake up successor which depends on this replacement + if(repSucc matches tagged Valid .m) begin + cRqRetryIndexQ.enq(m); + end + // deq pipe & change RAM + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // set to new tag (old tag is replaced) + cs: I, + dir: replicate(I), + owner: Valid (CRqOwner { + mshrIdx: n, // owner is current cRq + replacing: False // replacement is done right now + }), + other: ? + }, + line: ? // data is no longer used + }, False); + endaction + endfunction + + // handle cRq + rule pipelineResp_cRq(pipeOut.cmd matches tagged LLCRq .n); + $display("%t LL %m pipelineResp: ", $time, fshow(pipeOut)); + // cs and dir in ram have been merged with modification caused by mRs/cRs cmd + + cRqT cRq = pipeOutCRq; + $display("%t LL %m pipelineResp: cRq: ", $time, fshow(n), " ; ", fshow(cRq)); + + // find end of dependency chain + Maybe#(cRqIndexT) cRqEOC = cRqMshr.pipelineResp.searchEndOfChain(cRq.addr); + + // function to check whether children needs downgrade for req from child (miss no replace) + function Vector#(childNum, DirPend) getDirPendNonCompatForChild; + function DirPend initPend(childT i); + if(i == cRq.child) begin + return ram.info.dir[i] <= cRq.fromState ? Invalid : Waiting (cRq.fromState); + end + else begin + Msi compatState = toCompat(cRq.toState); + return ram.info.dir[i] <= compatState ? Invalid : ToSend (compatState); + end + endfunction + Vector#(childNum, childT) idxVec = genWith(fromInteger); + return map(initPend, idxVec); + endfunction + + // function to check whether children needs downgrade for DMA req (miss by children state) + function Vector#(childNum, DirPend) getDirPendNonCompatForDma; + function DirPend initPend(childT i); + Msi compatState = toCompat(cRq.toState); + return ram.info.dir[i] <= compatState ? Invalid : ToSend (compatState); + endfunction + Vector#(childNum, childT) idxVec = genWith(fromInteger); + return map(initPend, idxVec); + endfunction + + // function to check whether children needs downgrade (miss with replace) + function Vector#(childNum, DirPend) getDirPendNonI; + function DirPend initPend(childT i); + return ram.info.dir[i] == I ? Invalid : ToSend (I); + endfunction + Vector#(childNum, childT) idxVec = genWith(fromInteger); + return map(initPend, idxVec); + endfunction + + // function to process cRq from child miss without replacement (MSHR slot may have garbage) + function Action cRqFromCMissNoReplacement(Vector#(childNum, DirPend) dirPend); + action + doAssert(isRqFromC(cRq.id), "should be cRq from child"); + // it is impossible in LLC to have slot.waitP == True in this function + // because there is no pRq in LLC to interrupt a cRq + cRqSlotT cSlot = pipeOutCSlot; + doAssert(!cSlot.waitP, "waitP must be false"); + // in LLC, we req memory only when cur cs is I + if(ram.info.cs == I) begin + toMInfoQ.enq(ToMemInfo{ + mshrIdx: n, + t: Ld + }); + doAssert(ram.info.dir == replicate(I), "dir should be all I"); + end + // update mshr (data field is irrelevant, should be already invalid) + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, LLCRqSlot { + way: pipeOut.way, // use way from pipeline + waitP: ram.info.cs == I, + repTag: ?, // no replacement + dirPend: dirPend + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // tag may be garbage if cs == I + cs: ram.info.cs, + dir: ram.info.dir, + owner: Valid (CRqOwner {mshrIdx: n, replacing: False}), // owner is req itself + other: ? + }, + line: ram.line + }, False); + endaction + endfunction + + // function to process cRq from dma miss by children states (MSHR slot may have garbage) + function Action cRqFromDmaMissByChildren(Vector#(childNum, DirPend) dirPend); + action + doAssert(isRqFromDma(cRq.id), "should be cRq from dma"); + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + "tag match and cs > I" + ); + // it is impossible in LLC to have slot.waitP == True in this function + // because there is no pRq in LLC to interrupt a cRq + cRqSlotT cSlot = pipeOutCSlot; + doAssert(!cSlot.waitP, "waitP must be false"); + // update mshr + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, LLCRqSlot { + way: pipeOut.way, // use way from pipeline + waitP: False, + repTag: ?, // no replacement + dirPend: dirPend + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), + cs: ram.info.cs, + dir: ram.info.dir, + owner: Valid (CRqOwner {mshrIdx: n, replacing: False}), // owner is req itself + other: ? + }, + line: ram.line + }, False); + endaction + endfunction + + // function to do replacement for cRq from child + function Action cRqFromCReplacement(Vector#(childNum, DirPend) dirPend); + action + doAssert(isRqFromC(cRq.id), "should be cRq from child"); + if(dirPend == replicate(Invalid)) begin + // directly evict the line + // this cRq cannot have repSucc, since it has not occupied the line + Maybe#(cRqIndexT) repSucc = pipeOutRepSucc; + doAssert(!isValid(repSucc), "cannot have rep succ"); + cRqFromCEvict(n, cRq, Invalid); + end + else begin + // wait child to downgrade + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, + cs: ram.info.cs, + dir: ram.info.dir, + owner: Valid (CRqOwner { + mshrIdx: n, + replacing: True // replacement is ongoing + }), + other: ? + }, + line: ram.line // keep data the same + }, False); + cRqMshr.pipelineResp.setStateSlot(n, WaitOldTag, LLCRqSlot { + way: pipeOut.way, + repTag: ram.info.tag, // record tag for downgrading children + waitP: False, + dirPend: dirPend + }); + end + endaction + endfunction + + // function to set cRq to Depend, and make no further change to cache + function Action cRqSetDepNoCacheChange; + action + cRqMshr.pipelineResp.setStateSlot(n, Depend, getLLCRqSlotInitVal(getDirPendInitVal)); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + endaction + endfunction + + if(ram.info.owner matches tagged Valid .cOwner) begin + if(cOwner.mshrIdx != n) begin + // owner is another cRq, so must just go through tag match + LLCRqState cState = pipeOutCState; + doAssert(cState == Init, "owner is other, must first time go through tag match"); + // tag match must be hit (because replacement algo won't give a way with owner) + doAssert(ram.info.cs > I && ram.info.tag == getTag(cRq.addr), + ("cRq should hit in tag match") + ); + // could be two cases: + // 1. hit on same addr req + // 2. hit one cache line replaced by another req to different addr + // even in 2nd case, we may have existing req to same addr + // so first check same addr dependency + if(cRqEOC matches tagged Valid .m) begin + // add to same addr dependency + cRqMshr.pipelineResp.setAddrSucc(m, Valid (n)); + cRqSetDepNoCacheChange; + $display("%t LL %m pipelineResp: cRq: own by other cRq, same addr dep: ", $time, + fshow(cOwner), " ; ", fshow(cRqEOC) + ); + end + else begin + // must be hitting on a line being replaced + // add to rep dependency + cRqMshr.pipelineResp.setRepSucc(cOwner.mshrIdx, Valid (n)); + cRqSetDepNoCacheChange; + $display("%t LL %m pipelineResp: cRq: own by other cRq, rep dep: ", $time, + fshow(cOwner) + ); + doAssert(cOwner.replacing, "line must be replacing"); + end + end + else begin + // owner is myself, so must be swapped in + LLCRqState cState = pipeOutCState; + doAssert(cState == Depend, "owner is myself, must be swapped in"); + // tag should match, since always swapped in by cRq (which occupies the line and completes) + // so cache state must be > I + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + "cRq swapped in, tag must match, cs > I" + ); + // since cache state must > I, there is no replacement or req to mem (LLC non-I is hit) + // just check whether children cache are compatible + if(cRq.id matches tagged Child ._i) begin + // req from child, get dir pend + Vector#(childNum, DirPend) dirPend = getDirPendNonCompatForChild; + if(dirPend == replicate(Invalid)) begin + $display("%t LL %m pipelineResp: cRq from child: own by itself, hit", $time); + cRqFromCHit(n, cRq, False); + end + else begin + $display("%t LL %m pipelineResp: cRq from child: own by itself, miss no replace: ", $time, + fshow(dirPend) + ); + cRqFromCMissNoReplacement(dirPend); + end + end + else begin + // req from DMA, get dir pend + Vector#(childNum, DirPend) dirPend = getDirPendNonCompatForDma; + if(dirPend == replicate(Invalid)) begin + $display("%t LL %m pipelineResp: cRq from dma: own by itself, hit", $time); + cRqFromDmaHit(n, cRq); + end + else begin + $display("%t LL %m pipelineResp: cRq from dma: own by itself, miss by children: ", $time); + cRqFromDmaMissByChildren(dirPend); + end + end + end + end + else begin + // cache has no owner, cRq must just go through tag match + // here are two cases: + // 1. cRq in Init state, first time go through tag match + // 2. cRq in Depend state (due to rep dep, or addr dep on DMA req), waken up when replacement or DMA req is done + LLCRqState cState = pipeOutCState; + + // only check for cRqEOC to append to dependency chain when firt time go through tag match + if(cRqEOC matches tagged Valid .m &&& cState == Init) begin + $display("%t LL %m pipelineResp: cRq: no owner, depend on cRq ", $time, + fshow(cState), " ; ", + fshow(cRqEOC) + ); + cRqMshr.pipelineResp.setAddrSucc(m, Valid (n)); + cRqSetDepNoCacheChange; + end + else begin + // normal processing + if(cRq.id matches tagged Child ._i) begin + // cRq from child + if(ram.info.cs == I || ram.info.tag == getTag(cRq.addr)) begin + // No Replacement necessary, check dir + Vector#(childNum, DirPend) dirPend = getDirPendNonCompatForChild; + if(ram.info.cs > I && dirPend == replicate(Invalid)) begin + $display("%t LL %m pipelineResp: cRq: no owner, hit", $time); + cRqFromCHit(n, cRq, False); + end + else begin + $display("%t LL %m pipelineResp: cRq: no owner, miss no replace: ", $time, + fshow(dirPend) + ); + cRqFromCMissNoReplacement(dirPend); + end + end + else begin + // need replacement, check dir + Vector#(childNum, DirPend) dirPend = getDirPendNonI; + $display("%t LL %m pipelineResp: cRq: no owner, replace: ", $time, + fshow(dirPend) + ); + cRqFromCReplacement(dirPend); + end + end + else begin + Vector#(childNum, DirPend) dirPend = getDirPendNonCompatForDma; + // cRq from DMA + if(ram.info.cs > I && ram.info.tag == getTag(cRq.addr)) begin + // hit in LLC, check dir + if(dirPend == replicate(Invalid)) begin + cRqFromDmaHit(n, cRq); + end + else begin + cRqFromDmaMissByChildren(dirPend); + end + end + else begin + // miss in LLC, so req mem and req is done! + $display("%t LL %m pipelineResp: cRq from dma: no owner, miss req mem", $time); + toMInfoQ.enq(ToMemInfo { + mshrIdx: n, + t: cRq.toState == M ? DmaWr : Ld + }); + // set req to Done & deq pipeline (no change to ram) + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + // retry successor (cannot swap in since we don't have a line to occupy) + Maybe#(cRqIndexT) addrSucc = pipeOutAddrSucc; + if(addrSucc matches tagged Valid .m) begin + cRqRetryIndexQ.enq(m); + end + // since we haven't occupied any line, we cannot have repSucc) + Maybe#(cRqIndexT) repSucc = pipeOutRepSucc; + doAssert(!isValid(repSucc), "should not have any rep succ"); + end + end + end + end + endrule + + // handle mRs + rule pipelineResp_mRs(pipeOut.cmd == LLMRs); + // get cache owner + doAssert(isValid(ram.info.owner), "mRs owner must match some cRq"); + CRqOwner#(cRqIndexT) cOwner = validValue(ram.info.owner); + // process cRq + cRqT cRq = pipeOutCRq; + cRqSlotT cSlot = pipeOutCSlot; + $display("%t LL %m pipelineResp: mRs: ", $time, + fshow(cOwner), " ; ", + fshow(cRq), " ; ", + fshow(cSlot) + ); + doAssert(isRqFromC(cRq.id), "only child req gets mem resp that refills the cache"); + doAssert(ram.info.cs >= cRq.toState && ram.info.tag == getTag(cRq.addr), + "mRs must be tag match & have enough cs" + ); + doAssert(ram.info.dir == replicate(I), "all children must be I"); + doAssert(!cOwner.replacing, "mRs cannot hit on replacing line"); + doAssert(cSlot.way == pipeOut.way, "mRs should hit on way in MSHR slot"); + doAssert(cSlot.waitP, "mRs should match cRq which is waiting for it"); + doAssert(cSlot.dirPend == replicate(Invalid), + "cRq that needs mRs should not have children to wait for" + ); + // cRq hits since all children are I + cRqFromCHit(cOwner.mshrIdx, cRq, True); + endrule + + // handle cRs + rule pipelineResp_cRs(pipeOut.cmd matches tagged LLCRs .child); + // cRs from child + // XXX CCPipe has already updated ram.info and ram.line properly, + // particularly for E->M case. + $display("%t LL %m pipelineResp: cRs: ", $time, fshow(child)); + // cs should be not I + doAssert(ram.info.cs > I, "cRs should hit on a line"); + // check owner of the line + if(ram.info.owner matches tagged Valid .cOwner) begin + cRqT cRq = pipeOutCRq; + cRqSlotT cSlot = pipeOutCSlot; + LLCRqState cState = pipeOutCState; + $display("%t LL %m pipelineResp: cRs: match cRq: ", $time, + fshow(cOwner), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; ", + fshow(cState) + ); + doAssert(cSlot.way == pipeOut.way, "cRs way should match MSHR slot"); + // check replacing bit + if(cOwner.replacing) begin + // replacment: only for req from child + doAssert(isRqFromC(cRq.id), "only child req do replace"); + doAssert(cState == WaitOldTag, "must be waiting for old tag"); + doAssert(!cSlot.waitP, "cannot wait for parent while replacing"); + doAssert(cSlot.repTag == ram.info.tag, "should match replacing tag"); + // is replacing, update dirPend + Vector#(childNum, DirPend) newDirPend = cSlot.dirPend; + if(ram.info.dir[child] == I) begin + newDirPend[child] = Invalid; + end + // check whether replacement is done + if(newDirPend == replicate(Invalid)) begin + // replacement done, evict line + Maybe#(cRqIndexT) repSucc = pipeOutRepSucc; + cRqFromCEvict(cOwner.mshrIdx, cRq, repSucc); + $display("%t LL %m pipelineResp: cRs: match cRq: replace done: ", $time, + fshow(repSucc) + ); + end + else begin + // replacement is still ongoing, just deq pipe & write ram & update dirPend + pipeline.deqWrite(Invalid, ram, False); + cRqMshr.pipelineResp.setStateSlot(cOwner.mshrIdx, WaitOldTag, LLCRqSlot { + way: cSlot.way, + repTag: cSlot.repTag, + waitP: cSlot.waitP, + dirPend: newDirPend + }); + $display("%t LL %m pipelineResp: cRs: match cRq: replace not done: ", $time, + fshow(newDirPend) + ); + end + end + else begin + // child downgrade, not replace: req can be from child or dma + doAssert(cState == WaitSt, "must be waiting for child/parent state"); + doAssert(ram.info.tag == getTag(cRq.addr), "cRq tag should match cRs hit line"); + doAssert(!cSlot.waitP, "cs > I, so cannot wait for memory"); + // in WaitSt, update dirPend + Vector#(childNum, DirPend) newDirPend = cSlot.dirPend; + case(cSlot.dirPend[child]) matches + tagged ToSend .st: begin + if(st >= ram.info.dir[child]) begin + newDirPend[child] = Invalid; + end + end + tagged Waiting .st: begin + if(st >= ram.info.dir[child]) begin + newDirPend[child] = Invalid; + end + end + endcase + $display("%t LL %m pipelineResp: cRs: match cRq: cRq in WaitSt: ", $time, + fshow(newDirPend) + ); + // check hit or miss + if(newDirPend == replicate(Invalid)) begin + if(cRq.id matches tagged Child ._i) begin + cRqFromCHit(cOwner.mshrIdx, cRq, False); + end + else begin + cRqFromDmaHit(cOwner.mshrIdx, cRq); + end + end + else begin + // still wait for children: deq pipe & write ram & update dirPend + pipeline.deqWrite(Invalid, ram, False); + cRqMshr.pipelineResp.setStateSlot(cOwner.mshrIdx, WaitSt, LLCRqSlot { + way: cSlot.way, + repTag: cSlot.repTag, + waitP: cSlot.waitP, + dirPend: newDirPend + }); + end + end + end + else begin + // does not match any cRq, so just deq pipe & write ram + $display("%t LL %m pipelineResp: cRs: no owner: ", $time); + pipeline.deqWrite(Invalid, ram, False); + end + endrule + + interface ParentCacheToChild to_child; + interface rqFromC = toFifoEnq(rqFromCQ); + interface rsFromC = toFifoEnq(rsFromCQ); + interface toC = toFifoDeq(toCQ); + endinterface + + interface DmaServer dma; + interface memReq = toFifoEnq(rqFromDmaQ); + interface respLd = toFifoDeq(rsLdToDmaQ); + interface respSt = toFifoDeq(rsStToDmaQ); +`ifdef DEBUG_DMA + interface wrMissResp = toGet(dmaWrMissQ); + interface wrHitResp = toGet(dmaWrHitQ); + interface rdMissResp = toGet(dmaRdMissQ); + interface rdHitResp = toGet(dmaRdHitQ); +`endif + endinterface + + interface MemFifoClient to_mem; + interface toM = toFifoDeq(toMQ); + interface rsFromM = toFifoEnq(rsFromMQ); + endinterface + + interface Get cRqStuck; + method ActionValue#(LLCRqStuck#(childNum, cRqIdT, dmaRqIdT)) get; + let s <- cRqMshr.stuck.get; + return LLCRqStuck { + id: s.req.id, + addr: s.req.addr, + fromState: s.req.fromState, + toState: s.req.toState, + child: s.req.child, + state: s.state, + waitP: s.waitP, + dirPend: s.dirPend + }; + endmethod + endinterface + + method Action setPerfStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Data getPerfData(LLCPerfType t); + return (case(t) +`ifdef PERF_COUNT + LLCDmaMemLdCnt: dmaMemLdCnt; + LLCDmaMemLdLat: dmaMemLdLat; + LLCNormalMemLdCnt: normalMemLdCnt; + LLCNormalMemLdLat: normalMemLdLat; + LLCMshrBlockCycles: mshrBlocks; + LLCDownRespCnt: downRespCnt; + LLCDownRespDataCnt: downRespDataCnt; + LLCDownReqCnt: downReqCnt; + LLCUpRespCnt: upRespCnt; + LLCUpRespDataCnt: upRespDataCnt; + LLCDmaLdReqCnt: dmaLdReqCnt; + LLCDmaStReqCnt: dmaStReqCnt; +`endif + default: 0; + endcase); + endmethod +endmodule + +// Scheduling notes + +// cRqTransfer_retry: read req + +// cRqTransfer_new: init(write) req/state/slot, reset addrSucc/repSucc, set data + +// cRsTransfer: - + +// mRsDeq: write data + +// mRsTransfer: read req/slot/data + +// sendToM: read req/slot/data + +// sendRsToDma: read req/data, release entry (write state) + +// sendRsToC: read req/data, release entry (write state) + +// sendRqToC: +// -- associative search: read state/needReqChildVec(slot.dirPend) +// -- for selected cRq: read req/state/slot, write slot.dirPend +// -- not affected by cRqTransfer_new +// (state: Empty->Init, always not hit in search) +// -- not affected by sendRsToC/sendRsToDma +// (state: Done->Empty, always not hit in search) +// -- may be affected by pipelineResp_cRs +// so don't fire when pipelineResp operates on the same cRq + +// above rules operate on completely different cRq + +// pipelineResp_cRq: +// -- associative search for EOC: read state/req/addrSucc +// -- not affected by cRqTransfer_new +// (state: Empty->Init, always not hit in search) +// -- not affected by sendRsToC/sendRsToDma +// (state: Done->Empty, always not hit in search) +// -- not affected by sendRqToC (slot is not read in search) +// -- for the processing cRq: read req/state/data/slot/addrSucc/repSucc, write state/slot/data +// -- this cRq is different from that in cRqTransfer_new +// -- this cRq is different from that in mRsDeq_refill +// (if need mRs, then LLC is I, nothing other than mRs can wakeup cRq) +// -- this cRq is different from that in mRsDeq_nonRefill +// (when mRs for DMA req comes, it is already in Done state) +// -- this cRq is different from that in sendRsToC/sendRsToDma +// -- this cRq is different from that in sendRqToC (slot.dirPend not set yet) +// -- for some older cRq: write addrSucc/repSucc, differnt from cRqTransfer_new + +// pipelineResp_mRs: +// -- process cRq hit: read req/slot, write state/slot/data +// -- this cRq is different from that in cRqTransfer_new +// -- this cRq is different from that in mRsDeq +// -- this cRq is different from that in sendRsToC/sendRsToDma +// -- this cRq is different from that in sendRqToC (child all I) + +// pipelineResp_cRs: +// -- process cRs for a cRq: read req/state/slot/data, write state/slot/data +// -- this cRq is different from that in cRqTransfer_new +// -- this cRq is different from that in mRsDeq +// -- this cRq is different from that in sendRsToC/sendRsToDma +// -- XXX this cRq may be the same as that in sendRqToC!!! + diff --git a/src_Core/RISCY_OOO/coherence/src/LLCRqMshr.bsv b/src_Core/RISCY_OOO/coherence/src/LLCRqMshr.bsv new file mode 100644 index 0000000..e13f988 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/LLCRqMshr.bsv @@ -0,0 +1,447 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import GetPut::*; +import RegFile::*; +import FIFO::*; +import FShow::*; +import Types::*; +import CCTypes::*; +import DefaultValue::*; +import Ehr::*; +import Fifo::*; +import MshrDeadlockChecker::*; + +// MSHR dependency chain invariant: +// every cRq and pRq (for same addr) which has gone through pipeline once will be linked into the chain + +// in LLC, the head (h1) of a chain may be linked as the successor of the head (h2) of another chain +// when h2 is replacing the addr of h1 +// h1 should be waken up and sent to pipeline when replacement is done (i.e. h2 gets to WaitSt) + +// CRq MSHR entry state +typedef enum { + Empty, + Init, + WaitOldTag, + WaitSt, + Done, + Depend +} LLCRqState deriving(Bits, Eq, FShow); + +// we split data from slot info +// because data may be used to buffer mem resp data +typedef struct { + wayT way; // the way to occupy + tagT repTag; // tag being replaced, used in sending down req to children + Bool waitP; // wait parent resp + dirPendT dirPend; // pending child downgrade +} LLCRqSlot#(type wayT, type tagT, type dirPendT) deriving(Bits, Eq, FShow); + +typedef struct { + reqT req; + LLCRqState state; + Bool waitP; + dirPendT dirPend; +} LLCRqMshrStuck#(type dirPendT, type reqT) deriving(Bits, Eq, FShow); + +// interface for cRq/mRs/cRsTransfer +interface LLCRqMshr_transfer#( + numeric type cRqNum, + type wayT, + type tagT, + type dirPendT, + type reqT // child req type +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method LLCRqSlot#(wayT, tagT, dirPendT) getSlot(Bit#(TLog#(cRqNum)) n); + method ActionValue#(Bit#(TLog#(cRqNum))) getEmptyEntryInit(reqT r, Maybe#(Line) d); + // check if any empty MSHR entry is available in order to get MSHR blocking + // stats. The argument is not really used here, just in case some other + // MSHR implementations may bank entries based on addr. + method Bool hasEmptyEntry(reqT r); +endinterface + +// interface for mRsDeq +interface LLCRqMshr_mRsDeq#(numeric type cRqNum); + method Action setData(Bit#(TLog#(cRqNum)) n, Maybe#(Line) d); +endinterface + +// interface for sendToM +interface LLCRqMshr_sendToM#( + numeric type cRqNum, + type wayT, + type tagT, + type dirPendT, + type reqT // child req type +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method LLCRqSlot#(wayT, tagT, dirPendT) getSlot(Bit#(TLog#(cRqNum)) n); + method Maybe#(Line) getData(Bit#(TLog#(cRqNum)) n); +endinterface + +// interface for sendRsToDma and sendRsToC +interface LLCRqMshr_sendRsToDmaC#( + numeric type cRqNum, + type reqT // child req type +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method Maybe#(Line) getData(Bit#(TLog#(cRqNum)) n); + method Action releaseEntry(Bit#(TLog#(cRqNum)) n); +endinterface + +// interface for sendRqToC +interface LLCRqMshr_sendRqToC#( + numeric type cRqNum, + type wayT, + type tagT, + type dirPendT, + type reqT // child req type +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method LLCRqState getState(Bit#(TLog#(cRqNum)) n); + method LLCRqSlot#(wayT, tagT, dirPendT) getSlot(Bit#(TLog#(cRqNum)) n); + method Action setSlot(Bit#(TLog#(cRqNum)) n, LLCRqSlot#(wayT, tagT, dirPendT) s); + // find cRq that needs to send req to child to downgrade + // (either replacement, or incompatible children states) + // we can pass in a suggested req idx (which will have priority) + method Maybe#(Bit#(TLog#(cRqNum))) searchNeedRqChild(Maybe#(Bit#(TLog#(cRqNum))) suggestIdx); +endinterface + +// interface for pipelineResp_xxx +interface LLCRqMshr_pipelineResp#( + numeric type cRqNum, + type wayT, + type tagT, + type dirPendT, + type reqT // child req type +); + method reqT getRq(Bit#(TLog#(cRqNum)) n); + method LLCRqState getState(Bit#(TLog#(cRqNum)) n); + method LLCRqSlot#(wayT, tagT, dirPendT) getSlot(Bit#(TLog#(cRqNum)) n); + method Maybe#(Line) getData(Bit#(TLog#(cRqNum)) n); + method Maybe#(Bit#(TLog#(cRqNum))) getAddrSucc(Bit#(TLog#(cRqNum)) n); + method Maybe#(Bit#(TLog#(cRqNum))) getRepSucc(Bit#(TLog#(cRqNum)) n); + method Action setData(Bit#(TLog#(cRqNum)) n, Maybe#(Line) d); + method Action setStateSlot( + Bit#(TLog#(cRqNum)) n, LLCRqState state, + LLCRqSlot#(wayT, tagT, dirPendT) slot + ); + method Action setAddrSucc( // same address successor + Bit#(TLog#(cRqNum)) n, + Maybe#(Bit#(TLog#(cRqNum))) succ + ); + method Action setRepSucc( // successor due to replacement + Bit#(TLog#(cRqNum)) n, + Maybe#(Bit#(TLog#(cRqNum))) succ + ); + // find existing cRq which has gone through pipeline, but not in Done state, and has no addr successor + // (it could have rep successor) + // i.e. search the end of dependency chain for req to the same addr + method Maybe#(Bit#(TLog#(cRqNum))) searchEndOfChain(Addr addr); +endinterface + +interface LLCRqMshr#( + numeric type cRqNum, + type wayT, + type tagT, + type dirPendT, + type reqT // child req type +); + interface LLCRqMshr_transfer#(cRqNum, wayT, tagT, dirPendT, reqT) transfer; + interface LLCRqMshr_mRsDeq#(cRqNum) mRsDeq; + interface LLCRqMshr_sendToM#(cRqNum, wayT, tagT, dirPendT, reqT) sendToM; + interface LLCRqMshr_sendRsToDmaC#(cRqNum, reqT) sendRsToDmaC; + interface LLCRqMshr_sendRqToC#(cRqNum, wayT, tagT, dirPendT, reqT) sendRqToC; + interface LLCRqMshr_pipelineResp#(cRqNum, wayT, tagT, dirPendT, reqT) pipelineResp; + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(LLCRqMshrStuck#(dirPendT, reqT)) stuck; +endinterface + +function LLCRqSlot#(wayT, tagT, dirPendT) getLLCRqSlotInitVal(dirPendT dirPendInitVal); + return LLCRqSlot { + way: ?, + repTag: ?, + waitP: False, + dirPend: dirPendInitVal + }; +endfunction + +////////////////// +// safe version // +////////////////// +module mkLLCRqMshr#( + function Addr getAddrFromReq(reqT r), + function Bool needDownReq(dirPendT dirPend), + dirPendT dirPendInitVal +)( + LLCRqMshr#(cRqNum, wayT, tagT, dirPendT, reqT) +) provisos ( + Alias#(cRqIndexT, Bit#(TLog#(cRqNum))), + Alias#(slotT, LLCRqSlot#(wayT, tagT, dirPendT)), + Alias#(wayT, Bit#(_waySz)), + Alias#(tagT, Bit#(_tagSz)), + Bits#(dirPendT, _dirPendSz), + Bits#(reqT, _reqSz) +); + slotT slotInitVal = getLLCRqSlotInitVal(dirPendInitVal); + + // logical ordering: sendToM < sendRqToC < sendRsToDma/C < mRsDeq < pipelineResp < transfer + // We put pipelineResp < transfer to cater for deq < enq of cache pipeline + // EHR ports + Integer sendToM_port = 0; // sendToM is read-only, so use port 0 + Integer sendRqToC_port = 0; // read req/state/slot, write slot + Integer sendRsToDmaC_port = 0; // sendRsToDma/C read req/data, write state + Integer mRsDeq_port = 0; // mRsDeq only writes data + Integer pipelineResp_port = 1; // read/write lots of things + Integer transfer_port = 2; // cRqTransfer_xx, mRsTransfer_send, read/write lots of things + + // cRq req contents + Vector#(cRqNum, Ehr#(3, reqT)) reqVec <- replicateM(mkEhr(?)); + // MSHR entry state + Vector#(cRqNum, Ehr#(3, LLCRqState)) stateVec <- replicateM(mkEhr(Empty)); + // summary bit of dirPend in each entry: asserted when some dirPend[i] = ToSend + Vector#(cRqNum, Ehr#(3, Bool)) needReqChildVec <- replicateM(mkEhr(False)); + // cRq mshr slots + Vector#(cRqNum, Ehr#(3, slotT)) slotVec <- replicateM(mkEhr(slotInitVal)); + // data valid bit + Vector#(cRqNum, Ehr#(3, Bool)) dataValidVec <- replicateM(mkEhr(False)); + // data values + Vector#(cRqNum, Ehr#(3, Line)) dataVec <- replicateM(mkEhr(?)); + // successor valid bit + Vector#(cRqNum, Ehr#(3, Bool)) addrSuccValidVec <- replicateM(mkEhr(False)); + Vector#(cRqNum, Ehr#(3, Bool)) repSuccValidVec <- replicateM(mkEhr(False)); + // successor MSHR index + RegFile#(cRqIndexT, cRqIndexT) addrSuccFile <- mkRegFile(0, fromInteger(valueOf(cRqNum) - 1)); + RegFile#(cRqIndexT, cRqIndexT) repSuccFile <- mkRegFile(0, fromInteger(valueOf(cRqNum) - 1)); + // empty entry FIFO + Fifo#(cRqNum, cRqIndexT) emptyEntryQ <- mkCFFifo; + + // empty entry FIFO needs initialization + Reg#(Bool) inited <- mkReg(False); + Reg#(cRqIndexT) initIdx <- mkReg(0); + + rule initEmptyEntry(!inited); + emptyEntryQ.enq(initIdx); + initIdx <= initIdx + 1; + if(initIdx == fromInteger(valueOf(cRqNum) - 1)) begin + inited <= True; + $display("%t LLCRqMshrSafe %m: init empty entry done", $time); + end + endrule + +`ifdef CHECK_DEADLOCK + MshrDeadlockChecker#(cRqNum) checker <- mkMshrDeadlockChecker; + FIFO#(LLCRqMshrStuck#(dirPendT, reqT)) stuckQ <- mkFIFO1; + + (* fire_when_enabled *) + rule checkDeadlock; + let stuckIdx <- checker.getStuckIdx; + if(stuckIdx matches tagged Valid .n) begin + stuckQ.enq(LLCRqMshrStuck { + req: reqVec[n][0], + state: stateVec[n][0], + waitP: slotVec[n][0].waitP, + dirPend: slotVec[n][0].dirPend + }); + end + endrule +`endif + + function Action writeSlot(Integer ehrPort, cRqIndexT n, slotT s); + action + slotVec[n][ehrPort] <= s; + // set dirPend summary bit + needReqChildVec[n][ehrPort] <= needDownReq(s.dirPend); + endaction + endfunction + + interface LLCRqMshr_transfer transfer; + method reqT getRq(cRqIndexT n); + return reqVec[n][transfer_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][transfer_port]; + endmethod + + method ActionValue#(cRqIndexT) getEmptyEntryInit(reqT r, Maybe#(Line) d) if(inited); + emptyEntryQ.deq; + cRqIndexT n = emptyEntryQ.first; + reqVec[n][transfer_port] <= r; + stateVec[n][transfer_port] <= Init; + writeSlot(transfer_port, n, slotInitVal); + dataValidVec[n][transfer_port] <= isValid(d); + dataVec[n][transfer_port] <= validValue(d); + addrSuccValidVec[n][transfer_port] <= False; + repSuccValidVec[n][transfer_port] <= False; +`ifdef CHECK_DEADLOCK + checker.initEntry(n); +`endif + return n; + endmethod + + method Bool hasEmptyEntry(reqT r); + return emptyEntryQ.notEmpty; + endmethod + endinterface + + interface LLCRqMshr_mRsDeq mRsDeq; + method Action setData(cRqIndexT n, Maybe#(Line) d); + dataValidVec[n][mRsDeq_port] <= isValid(d); + dataVec[n][mRsDeq_port] <= fromMaybe(?, d); + endmethod + endinterface + + interface LLCRqMshr_sendToM sendToM; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendToM_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendToM_port]; + endmethod + + method Maybe#(Line) getData(cRqIndexT n); + return dataValidVec[n][sendToM_port] ? Valid (dataVec[n][sendToM_port]) : Invalid; + endmethod + endinterface + + interface LLCRqMshr_sendRsToDmaC sendRsToDmaC; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRsToDmaC_port]; + endmethod + + method Maybe#(Line) getData(cRqIndexT n); + return dataValidVec[n][sendRsToDmaC_port] ? Valid (dataVec[n][sendRsToDmaC_port]) : Invalid; + endmethod + + method Action releaseEntry(cRqIndexT n) if(inited); + emptyEntryQ.enq(n); + stateVec[n][sendRsToDmaC_port] <= Empty; +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endmethod + endinterface + + interface LLCRqMshr_sendRqToC sendRqToC; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRqToC_port]; + endmethod + + method LLCRqState getState(cRqIndexT n); + return stateVec[n][sendRqToC_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendRqToC_port]; + endmethod + + method Action setSlot(cRqIndexT n, slotT s); + writeSlot(sendRqToC_port, n, s); + endmethod + + method Maybe#(cRqIndexT) searchNeedRqChild(Maybe#(cRqIndexT) suggestIdx); + function Bool isNeedRqChild(cRqIndexT i); + return (stateVec[i][sendRqToC_port] == WaitOldTag || stateVec[i][sendRqToC_port] == WaitSt) + && needReqChildVec[i][sendRqToC_port]; + endfunction + if(suggestIdx matches tagged Valid .idx &&& isNeedRqChild(idx)) begin + return suggestIdx; + end + else begin + Vector#(cRqNum, cRqIndexT) idxVec = genWith(fromInteger); + return searchIndex(isNeedRqChild, idxVec); + end + endmethod + endinterface + + interface LLCRqMshr_pipelineResp pipelineResp; + method reqT getRq(cRqIndexT n); + return reqVec[n][pipelineResp_port]; + endmethod + + method LLCRqState getState(cRqIndexT n); + return stateVec[n][pipelineResp_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][pipelineResp_port]; + endmethod + + method Maybe#(Line) getData(cRqIndexT n); + return dataValidVec[n][pipelineResp_port] ? Valid (dataVec[n][pipelineResp_port]) : Invalid; + endmethod + + method Maybe#(cRqIndexT) getAddrSucc(cRqIndexT n); + return addrSuccValidVec[n][pipelineResp_port] ? Valid (addrSuccFile.sub(n)) : Invalid; + endmethod + + method Maybe#(cRqIndexT) getRepSucc(cRqIndexT n); + return repSuccValidVec[n][pipelineResp_port] ? Valid (repSuccFile.sub(n)) : Invalid; + endmethod + + method Action setData(cRqIndexT n, Maybe#(Line) d); + dataValidVec[n][pipelineResp_port] <= isValid(d); + dataVec[n][pipelineResp_port] <= fromMaybe(?, d); + endmethod + + method Action setStateSlot(cRqIndexT n, LLCRqState state, slotT slot); + stateVec[n][pipelineResp_port] <= state; + writeSlot(pipelineResp_port, n, slot); + endmethod + + method Action setAddrSucc(cRqIndexT n, Maybe#(cRqIndexT) succ); + addrSuccValidVec[n][pipelineResp_port] <= isValid(succ); + addrSuccFile.upd(n, fromMaybe(?, succ)); + endmethod + + method Action setRepSucc(cRqIndexT n, Maybe#(cRqIndexT) succ); + repSuccValidVec[n][pipelineResp_port] <= isValid(succ); + repSuccFile.upd(n, fromMaybe(?, succ)); + endmethod + + method Maybe#(cRqIndexT) searchEndOfChain(Addr addr); + function Bool isEndOfChain(Integer i); + // check entry i is end of chain or not + let state = stateVec[i][pipelineResp_port]; + Bool notDone = state != Done; + Bool processedOnce = state != Empty && state != Init; + Bool addrMatch = getLineAddr(getAddrFromReq(reqVec[i][pipelineResp_port])) == getLineAddr(addr); + Bool noAddrSucc = !addrSuccValidVec[i][pipelineResp_port]; + return notDone && processedOnce && addrMatch && noAddrSucc; + endfunction + Vector#(cRqNum, Integer) idxVec = genVector; + return searchIndex(isEndOfChain, idxVec); + endmethod + endinterface + +`ifdef CHECK_DEADLOCK + interface stuck = toGet(stuckQ); +`else + interface stuck = nullGet; +`endif +endmodule + diff --git a/src_Core/RISCY_OOO/coherence/src/LLPipe.bsv b/src_Core/RISCY_OOO/coherence/src/LLPipe.bsv new file mode 100644 index 0000000..5921529 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/LLPipe.bsv @@ -0,0 +1,371 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import FShow::*; +import Types::*; +import CCTypes::*; +import CCPipe::*; +import RWBramCore::*; +import RandomReplace::*; + +export LLPipeCRqIn(..); +export LLPipeMRsIn(..); +export LLPipeIn(..); +export LLCmd(..); +export LLPipe(..); +export mkLLPipe; + +// type param ordering: bank < child < way < index < tag < cRq + +// input types +typedef struct { + Addr addr; + cRqIdxT mshrIdx; +} LLPipeCRqIn#(type cRqIdxT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; // come from req in MSHR (E or M) + Line data; // come from memory must be valid + wayT way; // come from MSHR +} LLPipeMRsIn#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + LLPipeCRqIn#(cRqIdxT) CRq; + CRsMsg#(childT) CRs; + LLPipeMRsIn#(wayT) MRs; +} LLPipeIn#( + type childT, + type wayT, + type cRqIdxT +) deriving (Bits, Eq, FShow); + +// output cmd to the processing rule in LLC +typedef union tagged { + cRqIdxT LLCRq; // mshr idx of the cRq + childT LLCRs; // which child is downgrading + void LLMRs; +} LLCmd#(type childT, type cRqIdxT) deriving (Bits, Eq, FShow); + +interface LLPipe#( + numeric type lgBankNum, + numeric type childNum, + numeric type wayNum, + type indexT, + type tagT, + type cRqIdxT +); + method Action send(LLPipeIn#(Bit#(TLog#(childNum)), Bit#(TLog#(wayNum)), cRqIdxT) r); + method Bool notEmpty; + method PipeOut#( + Bit#(TLog#(wayNum)), + tagT, Msi, Vector#(childNum, Msi), + Maybe#(CRqOwner#(cRqIdxT)), void, RandRepInfo, // no other + Line, LLCmd#(Bit#(TLog#(childNum)), cRqIdxT) + ) first; + method PipeOut#( + Bit#(TLog#(wayNum)), + tagT, Msi, Vector#(childNum, Msi), + Maybe#(CRqOwner#(cRqIdxT)), void, RandRepInfo, // no other + Line, LLCmd#(Bit#(TLog#(childNum)), cRqIdxT) + ) unguard_first; + method Action deqWrite( + Maybe#(cRqIdxT) swapRq, + RamData#(tagT, Msi, Vector#(childNum, Msi), Maybe#(CRqOwner#(cRqIdxT)), void, Line) wrRam, // always write BRAM + Bool updateRep + ); +endinterface + +// real cmd used in pipeline +typedef struct { + Addr addr; + childT child; +} LLPipeCRsCmd#(type childT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + wayT way; +} LLPipeMRsCmd#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + LLPipeCRqIn#(cRqIdxT) CRq; + LLPipeCRsCmd#(childT) CRs; + LLPipeMRsCmd#(wayT) MRs; +} LLPipeCmd#( + type childT, + type wayT, + type cRqIdxT +) deriving (Bits, Eq, FShow); + +module mkLLPipe( + LLPipe#(lgBankNum, childNum, wayNum, indexT, tagT, cRqIdxT) +) provisos( + Alias#(childT, Bit#(TLog#(childNum))), + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(dirT, Vector#(childNum, Msi)), + Alias#(ownerT, Maybe#(CRqOwner#(cRqIdxT))), + Alias#(otherT, void), // no other cache info + Alias#(repT, RandRepInfo), // use random replace + Alias#(pipeInT, LLPipeIn#(childT, wayT, cRqIdxT)), + Alias#(pipeCmdT, LLPipeCmd#(childT, wayT, cRqIdxT)), + Alias#(llCmdT, LLCmd#(childT, cRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, dirT, ownerT, otherT, repT, Line, llCmdT)), // output type + Alias#(infoT, CacheInfo#(tagT, Msi, dirT, ownerT, otherT)), + Alias#(ramDataT, RamData#(tagT, Msi, dirT, ownerT, otherT, Line)), + Alias#(respStateT, RespState#(Msi)), + Alias#(tagMatchResT, TagMatchResult#(wayT)), + Alias#(updateByUpCsT, UpdateByUpCs#(Msi)), + Alias#(updateByDownDirT, UpdateByDownDir#(Msi, dirT)), + Alias#(dataIndexT, Bit#(TAdd#(TLog#(wayNum), indexSz))), + // requirement + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(_cRqIdxSz)), + Add#(indexSz, a__, AddrSz), + Add#(tagSz, b__, AddrSz) +); + // RAMs + Vector#(wayNum, RWBramCore#(indexT, infoT)) infoRam <- replicateM(mkRWBramCore); + RWBramCore#(indexT, repT) repRam <- mkRandRepRam; + RWBramCore#(dataIndexT, Line) dataRam <- mkRWBramCore; + + // initialize RAM + Reg#(Bool) initDone <- mkReg(False); + Reg#(indexT) initIndex <- mkReg(0); + + rule doInit(!initDone); + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + infoRam[i].wrReq(initIndex, CacheInfo { + tag: 0, + cs: I, + dir: replicate(I), + owner: Invalid, + other: ? + }); + end + repRam.wrReq(initIndex, randRepInitInfo); // useless for random replace + initIndex <= initIndex + 1; + if(initIndex == maxBound) begin + initDone <= True; + end + endrule + + // random replacement + RandomReplace#(wayNum) randRep <- mkRandomReplace; + + // functions + function Addr getAddrFromCmd(pipeCmdT cmd); + return (case(cmd) matches + tagged CRq .r: r.addr; + tagged CRs .r: r.addr; + tagged MRs .r: r.addr; + default: ?; + endcase); + endfunction + + function indexT getIndex(pipeCmdT cmd); + Addr a = getAddrFromCmd(cmd); + return truncate(a >> (valueOf(LgLineSzBytes) + valueOf(lgBankNum))); + endfunction + + function ActionValue#(tagMatchResT) tagMatch( + pipeCmdT cmd, + Vector#(wayNum, tagT) tagVec, + Vector#(wayNum, Msi) csVec, + Vector#(wayNum, ownerT) ownerVec, + repT repInfo + ); + return actionvalue + function tagT getTag(Addr a) = truncateLSB(a); + + $display("%t LL %m tagMatch: ", $time, + fshow(cmd), " ; ", + fshow(getTag(getAddrFromCmd(cmd))), " ; ", + fshow(tagVec), " ; ", + fshow(csVec), " ; ", + fshow(ownerVec) + ); + if(cmd matches tagged MRs .rs) begin + // MRs directly read from cmd + return TagMatchResult { + way: rs.way, + pRqMiss: False + }; + end + else begin + // CRq/CRs: need tag matching + Addr addr = getAddrFromCmd(cmd); + tagT tag = getTag(addr); + // find hit way (we do not check replacing bit in LLC) + // this makes blocked by other which is replacing addr a + function Bool isMatch(Tuple2#(Msi, tagT) csTag); + match {.cs, .t} = csTag; + return cs > I && t == tag; + endfunction + Maybe#(wayT) hitWay = searchIndex(isMatch, zip(csVec, tagVec)); + if(hitWay matches tagged Valid .w) begin + return TagMatchResult { + way: w, + pRqMiss: False + }; + end + else begin + // cRs must hit, so only cRq cannot enter here + doAssert(cmd matches tagged CRq ._rq ? True : False, + "only cRq can tag match miss" + ); + // find a unlocked way to replace for cRq + Vector#(wayNum, Bool) unlocked = ?; + Vector#(wayNum, Bool) invalid = ?; + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + invalid[i] = csVec[i] == I; + unlocked[i] = !isValid(ownerVec[i]); + end + Maybe#(wayT) repWay = randRep.getReplaceWay(unlocked, invalid); + // sanity check: repWay must be valid + doAssert(isValid(repWay), "should always find a way to replace"); + return TagMatchResult { + way: fromMaybe(?, repWay), + pRqMiss: False + }; + end + end + endactionvalue; + endfunction + + function ActionValue#(updateByUpCsT) updateByUpCs( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs + ); + actionvalue + doAssert(toState > oldCs, "should truly upgrade cs"); + doAssert((oldCs == I) && dataV, "LLC mRs always has data"); + return UpdateByUpCs {cs: toState}; + endactionvalue + endfunction + + function ActionValue#(updateByDownDirT) updateByDownDir( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs, dirT oldDir + ); + actionvalue + // update dir + dirT newDir = oldDir; + if(cmd matches tagged CRs .cRs) begin + if(dataV) begin + doAssert(oldDir[cRs.child] >= E, "cRs with data, dir must >= E"); + end + else begin + doAssert(oldDir[cRs.child] < M, "cRs without data, dir must < M"); + end + if(oldDir[cRs.child] == M) begin + doAssert(dataV, "must have data"); + end + newDir[cRs.child] = toState; + end + else begin + // should not happen + doAssert(False, "only cRs updates dir"); + end + // update cs + // XXX since child can upgrade from E to M silently, use data valid + // to determine if we need to upgrade to M. Note that the data + // valid field has not been overwritten by bypass in CCPipe. + Msi newCs = oldCs; + if(dataV) begin + doAssert(oldCs >= E, "cRs has data, cs must >= E"); + newCs = M; + end + return UpdateByDownDir {cs: newCs, dir: newDir}; + endactionvalue + endfunction + + function ActionValue#(repT) updateRepInfo(repT r, wayT w); + actionvalue + return ?; // random replace does not have bookkeeping + endactionvalue + endfunction + + CCPipe#(wayNum, indexT, tagT, Msi, dirT, ownerT, otherT, repT, Line, pipeCmdT) pipe <- mkCCPipe( + regToReadOnly(initDone), getIndex, tagMatch, + updateByUpCs, updateByDownDir, updateRepInfo, + infoRam, repRam, dataRam + ); + + // get first output from CCPipe output + function pipeOutT getFirst(PipeOut#(wayT, tagT, Msi, dirT, ownerT, otherT, repT, Line, pipeCmdT) pout); + return PipeOut { + cmd: (case(pout.cmd) matches + tagged CRq .rq: LLCRq (rq.mshrIdx); + tagged CRs .rs: LLCRs (rs.child); + tagged MRs .rs: LLMRs; + default: ?; + endcase), + way: pout.way, + pRqMiss: pout.pRqMiss, + ram: pout.ram, + repInfo: pout.repInfo + }; + endfunction + + method Action send(pipeInT req); + case(req) matches + tagged CRq .rq: begin + pipe.enq(CRq (rq), Invalid, Invalid); + end + tagged CRs .rs: begin + pipe.enq(CRs (LLPipeCRsCmd { + addr: rs.addr, + child: rs.child + }), rs.data, DownDir (rs.toState)); + end + tagged MRs .rs: begin + pipe.enq(MRs (LLPipeMRsCmd { + addr: rs.addr, + way: rs.way + }), Valid (rs.data), UpCs (rs.toState)); + end + endcase + endmethod + + // need to adapt pipeline output to real output format + method pipeOutT first; + return getFirst(pipe.first); // guarded version + endmethod + + method pipeOutT unguard_first; + return getFirst(pipe.unguard_first); // unguarded version + endmethod + + method notEmpty = pipe.notEmpty; + + method Action deqWrite(Maybe#(cRqIdxT) swapRq, ramDataT wrRam, Bool updateRep); + // get new cmd + Addr addr = getAddrFromCmd(pipe.first.cmd); // inherit addr + Maybe#(pipeCmdT) newCmd = Invalid; + if(swapRq matches tagged Valid .idx) begin + newCmd = Valid (CRq (LLPipeCRqIn {addr: addr, mshrIdx: idx})); + end + // call pipe + pipe.deqWrite(newCmd, wrRam, updateRep); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/MshrDeadlockChecker.bsv b/src_Core/RISCY_OOO/coherence/src/MshrDeadlockChecker.bsv new file mode 100644 index 0000000..7256392 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/MshrDeadlockChecker.bsv @@ -0,0 +1,83 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Ehr::*; +import CCTypes::*; +import Vector::*; +import ProcTypes::*; + +interface MshrDeadlockChecker#(numeric type num); + method ActionValue#(Maybe#(Bit#(TLog#(num)))) getStuckIdx; // get deadlock MSHR idx + method Action initEntry(Bit#(TLog#(num)) n); // new MSHR entry allocated + method Action releaseEntry(Bit#(TLog#(num)) n); // existing MSHR entry released +endinterface + +module mkMshrDeadlockChecker(MshrDeadlockChecker#(num)) provisos( + Alias#(idxT, Bit#(TLog#(num))) +); + Integer check_port = 0; + Integer incr_port = 1; + // timer for each entry to detect deadlock: being processed for 64M cycles + Vector#(num, Ehr#(2, Maybe#(DeadlockTimer))) timer <- replicateM(mkEhr(Invalid)); + // when new entry is allocated, init timer + Vector#(num, PulseWire) init <- replicateM(mkPulseWire); + // when existing entry is released, end the timer + Vector#(num, PulseWire) done <- replicateM(mkPulseWire); + + (* fire_when_enabled, no_implicit_conditions *) + rule incrTimer; + for(Integer i = 0; i < valueof(num); i = i+1) begin + if(init[i]) begin + timer[i][incr_port] <= Valid (0); + end + else if(done[i]) begin + timer[i][incr_port] <= Invalid; + end + else if(timer[i][incr_port] matches tagged Valid .t &&& t != maxBound) begin + timer[i][incr_port] <= Valid (t + 1); + end + end + endrule + + method ActionValue#(Maybe#(idxT)) getStuckIdx; + function Bool isDeadlock(Integer i); + return timer[i][check_port] == Valid (maxBound); + endfunction + Vector#(num, Integer) idxVec = genVector; + if(searchIndex(isDeadlock, idxVec) matches tagged Valid .n) begin + timer[n][check_port] <= Valid (0); + return Valid (n); + end + else begin + return Invalid; + end + endmethod + + method Action initEntry(idxT n); + init[n].send; + endmethod + + method Action releaseEntry(idxT n); + done[n].send; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/RWBramCore.bsv b/src_Core/RISCY_OOO/coherence/src/RWBramCore.bsv new file mode 100644 index 0000000..8af253f --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/RWBramCore.bsv @@ -0,0 +1,64 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import BRAMCore::*; +import Fifo::*; + +interface RWBramCore#(type addrT, type dataT); + method Action wrReq(addrT a, dataT d); + method Action rdReq(addrT a); + method dataT rdResp; + method Bool rdRespValid; + method Action deqRdResp; +endinterface + +module mkRWBramCore(RWBramCore#(addrT, dataT)) provisos( + Bits#(addrT, addrSz), Bits#(dataT, dataSz) +); + BRAM_DUAL_PORT#(addrT, dataT) bram <- mkBRAMCore2(valueOf(TExp#(addrSz)), False); + BRAM_PORT#(addrT, dataT) wrPort = bram.a; + BRAM_PORT#(addrT, dataT) rdPort = bram.b; + // 1 elem pipeline fifo to add guard for read req/resp + // must be 1 elem to make sure rdResp is not corrupted + // BRAMCore should not change output if no req is made + Fifo#(1, void) rdReqQ <- mkPipelineFifo; + + method Action wrReq(addrT a, dataT d); + wrPort.put(True, a, d); + endmethod + + method Action rdReq(addrT a); + rdReqQ.enq(?); + rdPort.put(False, a, ?); + endmethod + + method dataT rdResp if(rdReqQ.notEmpty); + return rdPort.read; + endmethod + + method rdRespValid = rdReqQ.notEmpty; + + method Action deqRdResp; + rdReqQ.deq; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/RandomReplace.bsv b/src_Core/RISCY_OOO/coherence/src/RandomReplace.bsv new file mode 100644 index 0000000..ca1fe14 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/RandomReplace.bsv @@ -0,0 +1,90 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import Fifo::*; +import CCTypes::*; +import RWBramCore::*; + +// random replace does not need any bookkeeping +typedef void RandRepInfo; + +function RandRepInfo randRepInitInfo; + return ?; +endfunction + +module mkRandRepRam(RWBramCore#(indexT, RandRepInfo)); + Fifo#(1, void) rdReqQ <- mkPipelineFifo; + + method Action wrReq(indexT a, RandRepInfo d); + noAction; + endmethod + method Action rdReq(indexT a); + rdReqQ.enq(?); + endmethod + method RandRepInfo rdResp if(rdReqQ.notEmpty); + return ?; + endmethod + method rdRespValid = rdReqQ.notEmpty; + method deqRdResp = rdReqQ.deq; +endmodule + +interface RandomReplace#(numeric type wayNum); + // find a way to replace, which is not locked + // and Invalid way has priority + method Maybe#(Bit#(TLog#(wayNum))) getReplaceWay( + Vector#(wayNum, Bool) unlocked, + Vector#(wayNum, Bool) invalid + ); +endinterface + +module mkRandomReplace(RandomReplace#(wayNum)) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))) +); + Reg#(wayT) randWay <- mkReg(0); + + rule tick; + randWay <= randWay == fromInteger(valueOf(wayNum) - 1) ? 0 : randWay + 1; + endrule + + method Maybe#(wayT) getReplaceWay(Vector#(wayNum, Bool) unlocked, Vector#(wayNum, Bool) invalid); + // first search for invalid & unlocked way + function Bool isInvUnlock(Integer i); + return unlocked[i] && invalid[i]; + endfunction + Vector#(wayNum, Integer) idxVec = genVector; + Maybe#(wayT) repWay = searchIndex(isInvUnlock, idxVec); + if(!isValid(repWay)) begin + // check whether random way is unlocked + if(unlocked[randWay]) begin + repWay = Valid (randWay); + end + else begin + // just find a unlocked way + repWay = searchIndex(id, unlocked); + end + end + return repWay; + endmethod +endmodule + diff --git a/src_Core/RISCY_OOO/coherence/src/SelfInvIBank.bsv b/src_Core/RISCY_OOO/coherence/src/SelfInvIBank.bsv new file mode 100644 index 0000000..f86b9a8 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/SelfInvIBank.bsv @@ -0,0 +1,629 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Types::*; +import MemoryTypes::*; +import Amo::*; + +import Cntrs::*; +import Vector::*; +import ConfigReg::*; +import FIFO::*; +import GetPut::*; +import ClientServer::*; +import CCTypes::*; +import ICRqMshr::*; +import CCPipe::*; +import SelfInvIPipe ::*; +import FShow::*; +import DefaultValue::*; +import Fifo::*; +import CacheUtils::*; +import Performance::*; +import LatencyTimer::*; +import RandomReplace::*; + +export SelfInvICRqStuck(..); +export SelfInvIPRqStuck(..); +export SelfInvIBank(..); +export mkSelfInvIBank; + +// L1 I$, no pRq + +typedef struct { + Addr addr; + ICRqState state; + Bool waitP; +} SelfInvICRqStuck deriving(Bits, Eq, FShow); + +typedef void SelfInvIPRqStuck; // not used + +interface SelfInvIBank#( + numeric type supSz, // superscalar size + numeric type lgBankNum, + numeric type wayNum, + numeric type indexSz, + numeric type tagSz, + numeric type cRqNum +); + interface ChildCacheToParent#(Bit#(TLog#(wayNum)), void) to_parent; + interface InstServer#(supSz) to_proc; // to child, i.e. processor + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(SelfInvICRqStuck) cRqStuck; + interface Get#(SelfInvIPRqStuck) pRqStuck; + // security: flush (not implemented) + method Action flush; + method Bool flush_done; + // reconcile + method Action reconcile; + method Bool reconcile_done; + // performance + method Action setPerfStatus(Bool stats); + method Data getPerfData(L1IPerfType t); +endinterface + +module mkSelfInvIBank#( + Bit#(lgBankNum) bankId, + module#(ICRqMshr#(cRqNum, wayT, tagT, procRqT, resultT)) mkICRqMshrLocal, + module#(SelfInvIPipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT)) mkIPipeline +)( + SelfInvIBank#(supSz, lgBankNum, wayNum, indexSz, tagSz, cRqNum) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(TLog#(cRqNum))), + Alias#(pRqIdxT, Bit#(TLog#(pRqNum))), + Alias#(cacheOwnerT, Maybe#(cRqIdxT)), // owner cannot be pRq + Alias#(otherT, void), + Alias#(cacheInfoT, CacheInfo#(tagT, Msi, void, cacheOwnerT, otherT)), + Alias#(ramDataT, RamData#(tagT, Msi, void, cacheOwnerT, otherT, Line)), + Alias#(procRqT, ProcRqToI), + Alias#(cRqToPT, CRqMsg#(wayT, void)), + Alias#(cRsToPT, CRsMsg#(void)), + Alias#(pRqFromPT, PRqMsg#(void)), + Alias#(pRsFromPT, PRsMsg#(wayT, void)), + Alias#(pRqRsFromPT, PRqRsMsg#(wayT, void)), + Alias#(cRqSlotT, ICRqSlot#(wayT, tagT)), // cRq MSHR slot + Alias#(iCmdT, SelfInvICmd#(cRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, void, cacheOwnerT, otherT, RandRepInfo, Line, iCmdT)), + Alias#(resultT, Vector#(supSz, Maybe#(Instruction))), + // requirements + FShow#(pipeOutT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum), + Add#(TAdd#(tagSz, indexSz), TAdd#(lgBankNum, LgLineSzBytes), AddrSz) +); + + ICRqMshr#(cRqNum, wayT, tagT, procRqT, resultT) cRqMshr <- mkICRqMshrLocal; + + SelfInvIPipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT) pipeline <- mkIPipeline; + + Fifo#(1, Addr) rqFromCQ <- mkBypassFifo; + + Fifo#(2, cRqToPT) rqToPQ <- mkCFFifo; + Fifo#(2, pRqRsFromPT) fromPQ <- mkCFFifo; + + FIFO#(cRqIdxT) rqToPIndexQ <- mkSizedFIFO(valueOf(cRqNum)); + + // index Q to order all in flight cRq for in-order resp + FIFO#(cRqIdxT) cRqIndexQ <- mkSizedFIFO(valueof(cRqNum)); + + // Reconcile states + Reg#(Bool) needReconcile <- mkReg(False); + Reg#(Bool) waitReconcileDone <- mkReg(False); + +`ifdef DEBUG_ICACHE + // id for each cRq, incremented when each new req comes + Reg#(Bit#(64)) cRqId <- mkReg(0); + // FIFO to signal the id of cRq that is performed + // FIFO has 0 cycle latency to match L1 D$ resp latency + Fifo#(1, DebugICacheResp) cRqDoneQ <- mkBypassFifo; +`endif + +`ifdef PERF_COUNT + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) ldCnt <- mkCount(0); + Count#(Data) ldMissCnt <- mkCount(0); + Count#(Data) ldMissLat <- mkCount(0); + Count#(Data) reconcileCnt <- mkCount(0); + + LatencyTimer#(cRqNum, 10) latTimer <- mkLatencyTimer; + + function Action incrReqCnt; + action + if(doStats) begin + ldCnt.incr(1); + end + endaction + endfunction + + function Action incrMissCnt(cRqIdxT idx); + action + let lat <- latTimer.done(idx); + if(doStats) begin + ldMissLat.incr(zeroExtend(lat)); + ldMissCnt.incr(1); + end + endaction + endfunction +`endif + + function tagT getTag(Addr a) = truncateLSB(a); + + // XXX since I$ may be requested by processor constantly + // cRq may come at every cycle, so we must make cRq has lower priority than pRq/pRs + // otherwise the whole system may deadlock/livelock + // we stop accepting cRq when we need to reconcile + rule cRqTransfer(!needReconcile); + Addr addr <- toGet(rqFromCQ).get; +`ifdef DEBUG_ICACHE + procRqT r = ProcRqToI {addr: addr, id: cRqId}; + cRqId <= cRqId + 1; +`else + procRqT r = ProcRqToI {addr: addr}; +`endif + cRqIdxT n <- cRqMshr.getEmptyEntryInit(r); + // send to pipeline + pipeline.send(CRq (SelfInvIPipeRqIn { + addr: r.addr, + mshrIdx: n + })); + // enq to indexQ for in order resp + cRqIndexQ.enq(n); +`ifdef PERF_COUNT + // performance counter: cRq type + incrReqCnt; +`endif + $display("%t I %m cRqTransfer: ", $time, + fshow(n), " ; ", + fshow(r) + ); + endrule + + // this descending urgency is necessary to avoid deadlock/livelock + // pRq cannot happen, because I$ is never exclusive + (* descending_urgency = "pRqTransfer, cRqTransfer" *) + rule pRqTransfer(fromPQ.first matches tagged PRq .req); + fromPQ.deq; + $display("%t I %m pRqTransfer: ", $time, fshow(req)); + doAssert(False, "should not have pRq"); + endrule + + // this descending urgency is necessary to avoid deadlock/livelock + (* descending_urgency = "pRsTransfer, cRqTransfer" *) + rule pRsTransfer(fromPQ.first matches tagged PRs .resp); + fromPQ.deq; + pipeline.send(PRs (SelfInvIPipePRsIn { + addr: resp.addr, + toState: S, + data: resp.data, + way: resp.id + })); + $display("%t I %m pRsTransfer: ", $time, fshow(resp)); + doAssert(resp.toState == S && isValid(resp.data), "I$ must upgrade to S with data"); + endrule + + rule sendRqToP; + rqToPIndexQ.deq; + cRqIdxT n = rqToPIndexQ.first; + procRqT req = cRqMshr.sendRqToP.getRq(n); + cRqSlotT slot = cRqMshr.sendRqToP.getSlot(n); + cRqToPT cRqToP = CRqMsg { + addr: req.addr, + fromState: I, // I$ upgrade from I + toState: S, // I$ upgrade to S + canUpToE: False, + id: slot.way, + child: ? + }; + rqToPQ.enq(cRqToP); + $display("%t I %m sendRqToP: ", $time, + fshow(n), " ; ", + fshow(req), " ; ", + fshow(slot), " ; ", + fshow(cRqToP) + ); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif + endrule + + // last stage of pipeline: process req + + // XXX: in L1, pRq cannot exist in dependency chain + // because there are only two ways to include pRq into chain + // (1) append to a cRq that could finish, but such cRq must have been directly reponded + // (2) overtake cRq (S->M), but such downgrade can be done instaneously without the need of chaining + // (this cannot happen in I$) + // Thus, dependency chain in L1 only contains cRq + + // pipeline outputs + pipeOutT pipeOut = pipeline.first; + ramDataT ram = pipeOut.ram; + // get proc req to select from cRqMshr + procRqT pipeOutCRq = cRqMshr.pipelineResp.getRq( + case(pipeOut.cmd) matches + tagged ICRq .n: (n); + default: (fromMaybe(0, ram.info.owner)); // L1PRs + endcase + ); + + // function to get superscaler inst read result + function resultT readInst(Line line, Addr addr); + Vector#(LineSzInst, Instruction) instVec = unpack(pack(line)); + // the start offset for reading inst + LineInstOffset startSel = getLineInstOffset(addr); + // calculate the maximum inst count that could be read from line + LineInstOffset maxCntMinusOne = maxBound - startSel; + // read inst superscalaer + resultT val = ?; + for(Integer i = 0; i < valueof(supSz); i = i+1) begin + if(fromInteger(i) <= maxCntMinusOne) begin + LineInstOffset sel = startSel + fromInteger(i); + val[i] = Valid (instVec[sel]); + end + else begin + val[i] = Invalid; + end + end + return val; + endfunction + + // function to process cRq hit (MSHR slot may have garbage) + function Action cRqHit(cRqIdxT n, procRqT req); + action + $display("%t I %m pipelineResp: Hit func: ", $time, + fshow(n), " ; ", + fshow(req) + ); + // check tag & cs: even this function is called by pRs, tag should match, + // because tag is written into cache before sending req to parent + doAssert(ram.info.tag == getTag(req.addr) && ram.info.cs == S, + "cRqHit but tag or cs incorrect" + ); + // deq pipeline or swap in successor + Maybe#(cRqIdxT) succ = cRqMshr.pipelineResp.getSucc(n); + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(req.addr), // should be the same as original tag + cs: ram.info.cs, // use cs in ram + dir: ?, + owner: succ, + other: ? + }, + line: ram.line + }, True); // hit, so update rep info + // process req to get superscalar inst read results + // set MSHR entry as Done & save inst results + let instResult = readInst(ram.line, req.addr); + cRqMshr.pipelineResp.setResult(n, instResult); + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); + $display("%t I %m pipelineResp: Hit func: update ram: ", $time, + fshow(succ), " ; ", fshow(instResult) + ); +`ifdef DEBUG_ICACHE + // signal that this req is performed + cRqDoneQ.enq(DebugICacheResp { + id: req.id, + line: ram.line + }); +`endif + endaction + endfunction + + rule pipelineResp_cRq(pipeOut.cmd matches tagged ICRq .n); + $display("%t I %m pipelineResp: ", $time, fshow(pipeOut)); + + procRqT procRq = pipeOutCRq; + $display("%t I %m pipelineResp: cRq: ", $time, fshow(n), " ; ", fshow(procRq)); + + // find end of dependency chain + Maybe#(cRqIdxT) cRqEOC = cRqMshr.pipelineResp.searchEndOfChain(procRq.addr); + + // function to process cRq miss without replacement (MSHR slot may have garbage) + // We never replace in self-inv I$, because all S lines can be replaced silently + function Action cRqMissNoReplacement; + action + cRqSlotT cSlot = cRqMshr.pipelineResp.getSlot(n); + // it is impossible in L1 to have slot.waitP == True in this function + // because cRq is not set to Depend when pRq invalidates it (pRq just directly resp) + doAssert(!cSlot.waitP, "waitP must be false"); + // No exclusive in I$ + doAssert(ram.info.cs <= S, "no exclusive in I$"); + // This cannot be a hit + doAssert(ram.info.cs == I || ram.info.tag != getTag(procRq.addr), "cannot hit"); + // Thus we must send req to parent + rqToPIndexQ.enq(n); + // update mshr + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, ICRqSlot { + way: pipeOut.way, // use way from pipeline + repTag: ?, // no replacement + waitP: True // must fetch from parent + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(procRq.addr), // tag may be garbage if cs == I or silent replace + cs: I, // line must be invalid + dir: ?, + owner: Valid (n), // owner is req itself + other: ? + }, + line: ram.line + }, False); + endaction + endfunction + + // function to set cRq to Depend, and make no further change to cache + function Action cRqSetDepNoCacheChange; + action + cRqMshr.pipelineResp.setStateSlot(n, Depend, defaultValue); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + endaction + endfunction + + if(ram.info.owner matches tagged Valid .cOwner) begin + if(cOwner != n) begin + // owner is another cRq, so must just go through tag match + // tag match must be hit (because replacement algo won't give a way with owner) + doAssert(ram.info.cs == S && ram.info.tag == getTag(procRq.addr), + "cRq should hit in tag match" + ); + // should be added to a cRq in dependency chain & deq from pipeline + doAssert(isValid(cRqEOC), "cRq hit on another cRq, cRqEOC must be true"); + cRqMshr.pipelineResp.setSucc(fromMaybe(?, cRqEOC), Valid (n)); + cRqSetDepNoCacheChange; + $display("%t I %m pipelineResp: cRq: own by other cRq ", $time, + fshow(cOwner), ", depend on cRq ", fshow(cRqEOC) + ); + end + else begin + // owner is myself, so must be swapped in + // tag should match, since always swapped in by cRq, cs = S + // Reconcile happens only when no cRq in MSHR, so it won't affect swap + doAssert(ram.info.tag == getTag(procRq.addr) && ram.info.cs == S, + "cRq swapped in by previous cRq, tag must match & cs = S" + ); + // Hit + $display("%t I %m pipelineResp: cRq: own by itself, hit", $time); + cRqHit(n, procRq); + end + end + else begin + // cache has no owner, cRq must just go through tag match + // check for cRqEOC to append to dependency chain + if(cRqEOC matches tagged Valid .k) begin + $display("%t I %m pipelineResp: cRq: no owner, depend on cRq ", $time, fshow(k)); + cRqMshr.pipelineResp.setSucc(k, Valid (n)); + cRqSetDepNoCacheChange; + end + else if(ram.info.cs > I && ram.info.tag == getTag(procRq.addr)) begin + $display("%t I %m pipelineResp: cRq: no owner, hit", $time); + cRqHit(n, procRq); + end + else begin + // can always sliently replace + $display("%t I %m pipelineResp: cRq: no owner, miss no replace", $time); + cRqMissNoReplacement; + end + end + endrule + + rule pipelineResp_pRs(pipeOut.cmd == IPRs); + $display("%t I %m pipelineResp: ", $time, fshow(pipeOut)); + $display("%t I %m pipelineResp: pRs: ", $time); + + if(ram.info.owner matches tagged Valid .cOwner) begin + procRqT procRq = pipeOutCRq; + doAssert(ram.info.cs == S && ram.info.tag == getTag(procRq.addr), + "pRs must be a hit" + ); + cRqHit(cOwner, procRq); +`ifdef PERF_COUNT + // performance counter: miss cRq + incrMissCnt(cOwner); +`endif + end + else begin + doAssert(False, ("pRs owner must match some cRq")); + end + endrule + + // Reconcile lines in S state: start after cRq MSHR is empty + // Since cRqTransfer rule cannot fire when needReconcile is true, we use a + // wire to catch cRqMshr.empty to avoid scheduling cycles + PulseWire cRqMshrEmpty <- mkPulseWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setCRqMshrEmpty(cRqMshr.emptyForFlush); + cRqMshrEmpty.send; + endrule + rule startReconcile(needReconcile && !waitReconcileDone && cRqMshrEmpty); + pipeline.reconcile; + waitReconcileDone <= True; + $display("%t I %m startReconcile", $time); +`ifdef PERF_COUNT + if(doStats) begin + reconcileCnt.incr(1); + end +`endif + endrule + rule completeReconcile(needReconcile && waitReconcileDone && pipeline.reconcile_done); + needReconcile <= False; + waitReconcileDone <= False; + $display("%t I %m completeReconcile", $time); + endrule + + interface ChildCacheToParent to_parent; + interface rsToP = nullFifoDeq; + interface rqToP = toFifoDeq(rqToPQ); + interface fromP = toFifoEnq(fromPQ); + endinterface + + interface InstServer to_proc; + interface Put req; + method Action put(Addr addr); + rqFromCQ.enq(addr); + endmethod + endinterface + interface Get resp; + method ActionValue#(resultT) get if( + cRqMshr.sendRsToC.getResult(cRqIndexQ.first) matches tagged Valid .inst + ); + cRqIndexQ.deq; + cRqMshr.sendRsToC.releaseEntry(cRqIndexQ.first); // release MSHR entry + $display("%t I %m sendRsToC: ", $time, + fshow(cRqIndexQ.first), " ; ", + fshow(inst) + ); + return inst; + endmethod + endinterface +`ifdef DEBUG_ICACHE + interface done = toGet(cRqDoneQ); +`endif + endinterface + + interface Get cRqStuck; + method ActionValue#(SelfInvICRqStuck) get; + let s <- cRqMshr.stuck.get; + return SelfInvICRqStuck { + addr: s.req.addr, + state: s.state, + waitP: s.waitP + }; + endmethod + endinterface + + interface pRqStuck = nullGet; + +`ifdef SECURITY + method Action flush if(flushDone); + flushDone <= False; + endmethod + method flush_done = flushDone._read; +`else + method flush = noAction; + method flush_done = True; +`endif + + method Action reconcile if(!needReconcile); + needReconcile <= True; + endmethod + method Bool reconcile_done; + return !needReconcile; + endmethod + + method Action setPerfStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Data getPerfData(L1IPerfType t); + return (case(t) +`ifdef PERF_COUNT + L1ILdCnt: ldCnt; + L1ILdMissCnt: ldMissCnt; + L1ILdMissLat: ldMissLat; + L1IReconcileCnt: reconcileCnt; +`endif + default: 0; + endcase); + endmethod +endmodule + + +// Scheduling note + +// cRqTransfer (toC.req.put): write new cRq MSHR entry, cRqMshr.getEmptyEntry + +// pRqTransfer: write new pRq MSHR entry, pRqMshr.getEmptyEntry + +// pRsTransfer: - + +// sendRsToC (toC.resp.get): read cRq MSHR result, releaseEntry + +// sendRsToP_cRq: read cRq MSHR req/slot that is replacing + +// sendRsToP_pRq: read pRq MSHR entry that is responding, pRqMshr.releaseEntry + +// sendRqToP: read cRq MSHR req/slot that is requesting parent + +// pipelineResp_cRq: +// -- read cRq MSHR req/state/slot currently processed +// -- write cRq MSHR state/slot/result currently processed +// -- write succ of some existing cRq MSHR entry (in WaitNewTag or WaitSt) +// -- read all state/req/succ in cRq MSHR entry (searchEOC) +// -- not affected by write in cRqTransfer (state change is Empty->Init) +// -- not affected by write in sendRsC (state change is Done->Empty) + +// pipelineResp_pRs: +// -- read cRq MSHR req/succ, write cRq MSHR state/slot/result + +// pipelineResp_pRq: +// -- r/w pRq MSHR entry, pRqMshr.releaseEntry + +// ---- conflict analysis ---- + +// XXXTransfer is conflict with each other +// Impl of getEmptyEntry and releaseEntry ensures that they are not on the same entry (e.g. cRqTransfer v.s. sendRsToC) +// XXXTransfer should operate on different cRq/pRq from other rules + +// sendRsToC is ordered after pipelineResp to save 1 cycle in I$ latency + +// sendRqToP and sendRsToP_cRq are read only + +// sendRsToP_pRq is operating on different pRq from pipelineResp_pRq (since we use CF index FIFO) + +// ---- conclusion ---- + +// rules/methods are operating on different MSHR entries, except pipelineResp v.s. sendRsToC + +// we have 5 ports from cRq MSHR +// 1. cRqTransfer +// 2. sendRsToC +// 3. sendRsToP_cRq +// 4. sendRqToP +// 5. pipelineResp + +// we have 3 ports from pRq MSHR +// 1. pRqTransfer +// 2. sendRsToP_pRq +// 3. pipelineResp + +// safe version: use EHR ports +// sendRsToP_cRq/sendRqToP/pipelineResp < sendRsToC < cRqTransfer +// pipelineResp < sendRsToP_pRq < pRqTransfer +// (note there is no bypass path from pipelineResp to sendRsToP_pRq since sendRsToP_pRq only reads pRq) + +// unsafe version: all reads read the original reg value, except sendRsToC, which should bypass from pipelineResp +// all writes are cononicalized. NOTE: writes of sendRsToC should be after pipelineResp +// we maintain the logical ordering in safe version + diff --git a/src_Core/RISCY_OOO/coherence/src/SelfInvIPipe.bsv b/src_Core/RISCY_OOO/coherence/src/SelfInvIPipe.bsv new file mode 100644 index 0000000..c9335b2 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/SelfInvIPipe.bsv @@ -0,0 +1,466 @@ + +// Copyright (c) 2019 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Assert::*; +import ConfigReg::*; +import Vector::*; +import FShow::*; +import Types::*; +import Fifo::*; +import CCTypes::*; +import CCPipe::*; +import RWBramCore::*; +import RandomReplace::*; + +export SelfInvIPipeRqIn(..); +export SelfInvIPipePRsIn(..); +export SelfInvIPipeIn(..); +export SelfInvICmd(..); +export SelfInvIPipe(..); +export mkSelfInvIPipe; + +// type param ordering: bank < way < index < tag < cRq + +// In I cache, only cRq can occupy cache line, there is no pRq or explicity +// replacement, so cache owner type is simply Maybe#(cRqIdxT) + +// input types +typedef struct { + Addr addr; + rqIdxT mshrIdx; +} SelfInvIPipeRqIn#(type rqIdxT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + Maybe#(Line) data; + wayT way; +} SelfInvIPipePRsIn#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + SelfInvIPipeRqIn#(cRqIdxT) CRq; + SelfInvIPipePRsIn#(wayT) PRs; +} SelfInvIPipeIn#( + type wayT, + type cRqIdxT +) deriving (Bits, Eq, FShow); + +// output cmd to the processing rule in I$ +typedef union tagged { + cRqIdxT ICRq; + void IPRs; +} SelfInvICmd#( + type cRqIdxT +) deriving (Bits, Eq, FShow); + +interface SelfInvIPipe#( + numeric type lgBankNum, + numeric type wayNum, + type indexT, + type tagT, + type cRqIdxT +); + method Action send(SelfInvIPipeIn#(Bit#(TLog#(wayNum)), cRqIdxT) r); + method PipeOut#( + Bit#(TLog#(wayNum)), + tagT, Msi, void, // no dir + Maybe#(cRqIdxT), void, RandRepInfo, // no other + Line, SelfInvICmd#(cRqIdxT) + ) first; + method Action deqWrite( + Maybe#(cRqIdxT) swapRq, + RamData#(tagT, Msi, void, Maybe#(cRqIdxT), void, Line) wrRam, // always write BRAM + Bool updateRep + ); + // drop stale clean cache lines + method Action reconcile; + method Bool reconcile_done; +endinterface + +// real cmd used in pipeline +typedef struct { + Addr addr; + wayT way; +} SelfInvIPipePRsCmd#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + SelfInvIPipeRqIn#(cRqIdxT) CRq; + SelfInvIPipePRsCmd#(wayT) PRs; +} SelfInvIPipeCmd#( + type wayT, + type cRqIdxT +) deriving (Bits, Eq, FShow); + +// cache state array with reconcile port +// ram sub interface has same scheduling as RWBramCore: +// - wrReq CF rdReq (read cannot see write) +// - deqRdResp < rdReq +interface CacheStateArray#(type indexT); + interface RWBramCore#(indexT, Msi) ram; + method Action reconcile; +endinterface + +module mkCacheStateArray(CacheStateArray#(indexT)) provisos( + Alias#(indexT, Bit#(indexSz)), + NumAlias#(size, TExp#(indexSz)) +); + staticAssert(pack(Msi'(I)) == 2'd0, "I = 0"); + staticAssert(pack(Msi'(S)) == 2'd1, "S = 0"); + + Vector#(size, Reg#(Bit#(1))) state <- replicateM(mkConfigReg(0)); + Fifo#(1, Msi) rdRespQ <- mkPipelineFifo; + + interface RWBramCore ram; + method Action wrReq(indexT idx, Msi s); + doAssert(s == I || s == S, "only I or S"); + state[idx] <= truncate(pack(s)); + endmethod + method Action rdReq(indexT idx); + rdRespQ.enq(unpack(zeroExtend(state[idx]))); + endmethod + method rdResp = rdRespQ.first; + method rdRespValid = rdRespQ.notEmpty; + method deqRdResp = rdRespQ.deq; + endinterface + + method Action reconcile; + function Action resetS(Reg#(Bit#(1)) s); + action + s <= 0; + endaction + endfunction + joinActions(map(resetS, state)); + endmethod +endmodule + +// Put cache state array and tag+owner ram together to form an array +typedef struct { + tagT tag; + ownerT owner; + otherT other; +} TagOwnerOther#(type tagT, type ownerT, type otherT) deriving(Bits, Eq, FShow); + +interface CacheInfoArray#(type indexT, type tagT, type ownerT, type otherT); + interface RWBramCore#(indexT, CacheInfo#(tagT, Msi, void, ownerT, otherT)) ram; + method Action reconcile; +endinterface + +module mkCacheInfoArray(CacheInfoArray#(indexT, tagT, ownerT, otherT)) provisos( + Alias#(indexT, Bit#(indexSz)), + NumAlias#(size, TExp#(indexSz)), + Alias#(tagOwnerOtherT, TagOwnerOther#(tagT, ownerT, otherT)), + Alias#(infoT, CacheInfo#(tagT, Msi, void, ownerT, otherT)), + Bits#(tagT, _tagSz), + Bits#(ownerT, _ownerSz), + Bits#(otherT, _otherSz) +); + RWBramCore#(indexT, tagOwnerOtherT) tagOwnerOtherRam <- mkRWBramCore; + CacheStateArray#(indexT) csArray <- mkCacheStateArray; + + interface RWBramCore ram; + method Action wrReq(indexT idx, infoT x); + tagOwnerOtherRam.wrReq(idx, TagOwnerOther { + tag: x.tag, + owner: x.owner, + other: x.other + }); + csArray.ram.wrReq(idx, x.cs); + endmethod + method Action rdReq(indexT idx); + tagOwnerOtherRam.rdReq(idx); + csArray.ram.rdReq(idx); + endmethod + method infoT rdResp; + tagOwnerOtherT tagOwnerOther = tagOwnerOtherRam.rdResp; + Msi cs = csArray.ram.rdResp; + return CacheInfo { + tag: tagOwnerOther.tag, + cs: cs, + dir: ?, + owner: tagOwnerOther.owner, + other: tagOwnerOther.other + }; + endmethod + method Bool rdRespValid; + return tagOwnerOtherRam.rdRespValid && csArray.ram.rdRespValid; + endmethod + method Action deqRdResp; + tagOwnerOtherRam.deqRdResp; + csArray.ram.deqRdResp; + endmethod + endinterface + + method reconcile = csArray.reconcile; +endmodule + +module mkSelfInvIPipe( + SelfInvIPipe#(lgBankNum, wayNum, indexT, tagT, cRqIdxT) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(dirT, void), // no directory + Alias#(ownerT, Maybe#(cRqIdxT)), + Alias#(otherT, void), + Alias#(repT, RandRepInfo), + Alias#(pipeInT, SelfInvIPipeIn#(wayT, cRqIdxT)), + Alias#(pipeCmdT, SelfInvIPipeCmd#(wayT, cRqIdxT)), + Alias#(iCmdT, SelfInvICmd#(cRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, dirT, ownerT, otherT, repT, Line, iCmdT)), // output type + Alias#(infoT, CacheInfo#(tagT, Msi, dirT, ownerT, otherT)), + Alias#(ramDataT, RamData#(tagT, Msi, dirT, ownerT, otherT, Line)), + Alias#(respStateT, RespState#(Msi)), + Alias#(tagMatchResT, TagMatchResult#(wayT)), + Alias#(dataIndexT, Bit#(TAdd#(TLog#(wayNum), indexSz))), + // requirement + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(cRqIdxSz)), + Add#(indexSz, a__, AddrSz), + Add#(tagSz, b__, AddrSz) +); + // info RAM + Vector#(wayNum, CacheInfoArray#(indexT, tagT, ownerT, otherT)) infoArray <- replicateM(mkCacheInfoArray); + function RWBramCore#(indexT, infoT) getInfoRam(Integer i) = infoArray[i].ram; + Vector#(wayNum, RWBramCore#(indexT, infoT)) infoRam = map(getInfoRam, genVector); + // rep RAM (dummy) + RWBramCore#(indexT, repT) repRam <- mkRandRepRam; + // data RAM + RWBramCore#(dataIndexT, Line) dataRam <- mkRWBramCore; + + // initialize RAM + Reg#(Bool) initDone <- mkReg(False); + Reg#(indexT) initIndex <- mkReg(0); + + rule doInit(!initDone); + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + infoRam[i].wrReq(initIndex, CacheInfo { + tag: 0, + cs: I, + dir: ?, + owner: Invalid, + other: ? + }); + end + repRam.wrReq(initIndex, randRepInitInfo); // useless for random replace + initIndex <= initIndex + 1; + if(initIndex == maxBound) begin + initDone <= True; + end + endrule + + // random replacement + RandomReplace#(wayNum) randRep <- mkRandomReplace; + + // functions + function Addr getAddrFromCmd(pipeCmdT cmd); + return (case(cmd) matches + tagged CRq .r: r.addr; + tagged PRs .r: r.addr; + default: ?; + endcase); + endfunction + + function indexT getIndex(pipeCmdT cmd); + Addr a = getAddrFromCmd(cmd); + return truncate(a >> (valueOf(LgLineSzBytes) + valueOf(lgBankNum))); + endfunction + + function ActionValue#(tagMatchResT) tagMatch( + pipeCmdT cmd, + Vector#(wayNum, tagT) tagVec, + Vector#(wayNum, Msi) csVec, + Vector#(wayNum, ownerT) ownerVec, + repT repInfo + ); + return actionvalue + function tagT getTag(Addr a) = truncateLSB(a); + + $display("%t L1 %m tagMatch: ", $time, + fshow(cmd), " ; ", + fshow(getTag(getAddrFromCmd(cmd))), + fshow(tagVec), " ; ", + fshow(csVec), " ; ", + fshow(ownerVec), " ; " + ); + if(cmd matches tagged PRs .rs) begin + // PRs directly read from cmd + return TagMatchResult { + way: rs.way, + pRqMiss: False + }; + end + else begin + doAssert(cmd matches tagged CRq .rq ? True : False, "must be cRq"); + // CRq: need tag matching + Addr addr = getAddrFromCmd(cmd); + tagT tag = getTag(addr); + // find hit way (nothing is being replaced) + function Bool isMatch(Tuple2#(Msi, tagT) csTag); + match {.cs, .t} = csTag; + return cs > I && t == tag; + endfunction + Maybe#(wayT) hitWay = searchIndex(isMatch, zip(csVec, tagVec)); + if(hitWay matches tagged Valid .w) begin + return TagMatchResult { + way: w, + pRqMiss: False + }; + end + else begin + // find a unlocked way to replace for cRq + Vector#(wayNum, Bool) unlocked = ?; + Vector#(wayNum, Bool) invalid = ?; + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + invalid[i] = csVec[i] == I; + unlocked[i] = !isValid(ownerVec[i]); + end + Maybe#(wayT) repWay = randRep.getReplaceWay(unlocked, invalid); + // sanity check: repWay must be valid + if(!isValid(repWay)) begin + $fwrite(stderr, "[L1Pipe] ERROR: ", fshow(cmd), " cannot find way to replace\n"); + $finish; + end + return TagMatchResult { + way: fromMaybe(?, repWay), + pRqMiss: False + }; + end + end + endactionvalue; + endfunction + + function ActionValue#(UpdateByUpCs#(Msi)) updateByUpCs( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs + ); + actionvalue + doAssert(toState == S && oldCs == I, "upgrade cs I->S"); + doAssert(dataV, "self inv L1 always needs data resp"); + return UpdateByUpCs {cs: toState}; + endactionvalue + endfunction + + function ActionValue#(UpdateByDownDir#(Msi, dirT)) updateByDownDir( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs, dirT oldDir + ); + actionvalue + doAssert(False, "L1 should not have cRs"); + return UpdateByDownDir {cs: oldCs, dir: oldDir}; + endactionvalue + endfunction + + function ActionValue#(repT) updateRepInfo(repT r, wayT w); + actionvalue + return ?; // random replace does not have bookkeeping + endactionvalue + endfunction + + CCPipe#( + wayNum, indexT, tagT, Msi, dirT, ownerT, otherT, repT, Line, pipeCmdT + ) pipe <- mkCCPipe( + regToReadOnly(initDone), getIndex, tagMatch, + updateByUpCs, updateByDownDir, updateRepInfo, + infoRam, repRam, dataRam + ); + + // reconcile: wait until pipeline empty and drop all S states. Stall + // pipeline enq while we are waiting. Make the reconcile rule conflict with + // pipeline deq to remove any possible race (the guard of reconcile rule + // actually should have done the job). + // Since send method will not fire when needReconcile, we can use a wire to + // catch pipeline empty signal to avoid scheduling issue + Reg#(Bool) needReconcile <- mkReg(False); + + RWire#(void) conflict_reconcile_deq <- mkRWire; + + PulseWire pipeEmpty <- mkPulseWire; + + (* fire_when_enabled, no_implicit_conditions *) + rule setPipeEmpty(pipe.emptyForFlush); + pipeEmpty.send; + endrule + + rule doReconcile(initDone && needReconcile && pipeEmpty); + function Action flush(CacheInfoArray#(indexT, tagT, ownerT, otherT) ifc); + action + ifc.reconcile; + endaction + endfunction + joinActions(map(flush, infoArray)); + // reconcile is done + needReconcile <= False; + // conflict with deq + conflict_reconcile_deq.wset(?); + $display("%t I %m doReconcile", $time); + endrule + + // stall enq for reconcile + method Action send(pipeInT req) if(!needReconcile); + case(req) matches + tagged CRq .rq: begin + pipe.enq(CRq (rq), Invalid, Invalid); + end + tagged PRs .rs: begin + pipe.enq(PRs (SelfInvIPipePRsCmd { + addr: rs.addr, + way: rs.way + }), rs.data, UpCs (rs.toState)); + end + endcase + endmethod + + // need to adapt pipeline output to real output format + method pipeOutT first; + let pout = pipe.first; + return PipeOut { + cmd: (case(pout.cmd) matches + tagged CRq .rq: ICRq (rq.mshrIdx); + tagged PRs .rs: IPRs; + default: ?; + endcase), + way: pout.way, + pRqMiss: pout.pRqMiss, + ram: pout.ram, + repInfo: pout.repInfo + }; + endmethod + + method Action deqWrite(Maybe#(cRqIdxT) swapRq, ramDataT wrRam, Bool updateRep); + // get new cmd + Maybe#(pipeCmdT) newCmd = Invalid; + if(swapRq matches tagged Valid .idx) begin // swap in cRq + Addr addr = getAddrFromCmd(pipe.first.cmd); // inherit addr + newCmd = Valid (CRq (SelfInvIPipeRqIn {addr: addr, mshrIdx: idx})); + end + // call pipe + pipe.deqWrite(newCmd, wrRam, updateRep); + // conflict with reconcile + conflict_reconcile_deq.wset(?); + endmethod + + method Action reconcile if(!needReconcile); + needReconcile <= True; + endmethod + + method Bool reconcile_done; + return !needReconcile; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/SelfInvL1Bank.bsv b/src_Core/RISCY_OOO/coherence/src/SelfInvL1Bank.bsv new file mode 100644 index 0000000..98bcf28 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/SelfInvL1Bank.bsv @@ -0,0 +1,1234 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Types::*; +import MemoryTypes::*; +import Amo::*; + +import Cntrs::*; +import Vector::*; +import ConfigReg::*; +import BuildVector::*; +import FIFO::*; +import GetPut::*; +import CCTypes::*; +import L1CRqMshr::*; +import L1PRqMshr::*; +import CCPipe::*; +import SelfInvL1Pipe ::*; +import FShow::*; +import DefaultValue::*; +import Ehr::*; +import Fifo::*; +import CacheUtils::*; +import CrossBar::*; +import Performance::*; +import LatencyTimer::*; +import RandomReplace::*; + +export SelfInvL1CRqStuck(..); +export SelfInvL1PRqStuck(..); +export SelfInvL1Bank(..); +export mkSelfInvL1Bank; +export mkSelfInvL1Cache; + +// although pRq never appears in dependency chain +// we still need pRq MSHR to limit the number of pRq +// and thus limit the size of rsToPIndexQ + +// The "cs" field of cRq MSHR slot is in fact useless, we only need to know if +// a cRq is wait for parent resp. + +// The "fromState" field of req to parent is in fact useless, because parent +// can judge whether it needs to wait for downgrade from the requesting child +// based on the directory + +// We use the other field of cache info to track the number of hits on a cache +// line to guarantee forward progress of spin-load. The hit count has the +// following invariants: +// - Hit count is 0 in E and M states +// - Hit count is ? in I state +// - Hit count is the number of consecutive load hits if state is S +// We operate the hit count in the following way: +// - Hit count is incremented when load hits on S state +// - Hit count is reset to 0 when state is upgraded by parent (I->S, S->E/M) +// - Hit count does not change when state is downgraded + +// XXX Link addr reserved by LR is only valid if the line is in E/M state, +// because parent does not track S copies. Self-inv only downgrades from S to +// I, so it won't affect link addr. + +typedef struct { + Addr addr; + MemOp op; + L1CRqState state; + Msi slotCs; + Bool waitP; +} SelfInvL1CRqStuck deriving(Bits, Eq, FShow); + +typedef L1PRqMshrStuck SelfInvL1PRqStuck; + +interface SelfInvL1Bank#( + numeric type lgBankNum, + numeric type wayNum, + numeric type indexSz, + numeric type tagSz, + numeric type cRqNum, + numeric type pRqNum, + numeric type maxHitNum, + type procRqIdT // id of req from processor core +); + interface ChildCacheToParent#(Bit#(TLog#(wayNum)), void) to_parent; + interface L1ProcReq#(procRqIdT) procReq; + // reset link addr + method Action resetLinkAddr; + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(SelfInvL1CRqStuck) cRqStuck; + interface Get#(SelfInvL1PRqStuck) pRqStuck; + // security: flush (not implemented) + method Action flush; + method Bool flush_done; + // reconcile + method Action reconcile; + method Bool reconcile_done; + // performance + method Action setPerfStatus(Bool stats); + method Data getPerfData(L1DPerfType t); +endinterface + +typedef struct { + cRqIdxT n; // AMO req MSHR idx + cRqT req; // AMO req + Maybe#(cRqIdxT) succ; // same-addr-successor of AMO req +} AmoHitInfo#(type cRqIdxT, type cRqT) deriving(Bits, Eq, FShow); + +module mkSelfInvL1Bank#( + Bit#(lgBankNum) bankId, + module#(L1CRqMshr#(cRqNum, wayT, tagT, procRqT)) mkL1CRqMshrLocal, + module#(L1PRqMshr#(pRqNum)) mkL1PRqMshrLocal, + module#(SelfInvL1Pipe#(lgBankNum, wayNum, maxHitNum, indexT, tagT, cRqIdxT, pRqIdxT)) mkL1Pipeline, + L1ProcResp#(procRqIdT) procResp +)( + SelfInvL1Bank#(lgBankNum, wayNum, indexSz, tagSz, cRqNum, pRqNum, maxHitNum, procRqIdT) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(TLog#(cRqNum))), + Alias#(pRqIdxT, Bit#(TLog#(pRqNum))), + Alias#(cacheOwnerT, Maybe#(cRqIdxT)), // actually owner cannot be pRq + Alias#(otherT, SelfInvL1Hits#(maxHitNum)), + Alias#(cacheInfoT, CacheInfo#(tagT, Msi, void, cacheOwnerT, otherT)), + Alias#(ramDataT, RamData#(tagT, Msi, void, cacheOwnerT, otherT, Line)), + Alias#(procRqT, ProcRq#(procRqIdT)), + Alias#(cRqToPT, CRqMsg#(wayT, void)), + Alias#(cRsToPT, CRsMsg#(void)), + Alias#(pRqFromPT, PRqMsg#(void)), + Alias#(pRsFromPT, PRsMsg#(wayT, void)), + Alias#(pRqRsFromPT, PRqRsMsg#(wayT, void)), + Alias#(cRqSlotT, L1CRqSlot#(wayT, tagT)), // cRq MSHR slot + Alias#(l1CmdT, SelfInvL1Cmd#(cRqIdxT, pRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, void, cacheOwnerT, otherT, RandRepInfo, Line, l1CmdT)), + // requirements + Bits#(procRqIdT, _procRqIdT), + FShow#(procRqIdT), + FShow#(pipeOutT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum), + Add#(TAdd#(tagSz, indexSz), TAdd#(lgBankNum, LgLineSzBytes), AddrSz) +); + + L1CRqMshr#(cRqNum, wayT, tagT, procRqT) cRqMshr <- mkL1CRqMshrLocal; + + L1PRqMshr#(pRqNum) pRqMshr <- mkL1PRqMshrLocal; + + SelfInvL1Pipe#(lgBankNum, wayNum, maxHitNum, indexT, tagT, cRqIdxT, pRqIdxT) pipeline <- mkL1Pipeline; + + Fifo#(1, procRqT) rqFromCQ <- mkBypassFifo; + + Fifo#(2, cRsToPT) rsToPQ <- mkCFFifo; + Fifo#(2, cRqToPT) rqToPQ <- mkCFFifo; + Fifo#(2, pRqRsFromPT) fromPQ <- mkCFFifo; + + // mshr index of req that is waken up Sc fails early (before hit) + Fifo#(cRqNum, cRqIdxT) cRqRetryIndexQ <- mkCFFifo; + + FIFO#(MshrIndex#(cRqIdxT, pRqIdxT)) rsToPIndexQ <- mkSizedFIFO(valueOf(TAdd#(cRqNum, pRqNum))); + + FIFO#(cRqIdxT) rqToPIndexQ <- mkSizedFIFO(valueOf(cRqNum)); + // temp fifo for pipelineResp & sendRsToP (reduce conflict) + FIFO#(cRqIdxT) rqToPIndexQ_pipelineResp <- mkFIFO; + FIFO#(cRqIdxT) rqToPIndexQ_sendRsToP <- mkFIFO; + + Ehr#(2, Maybe#(LineAddr)) linkAddrEhr <- mkEhr(Invalid); // load reservation + Reg#(Maybe#(LineAddr)) linkAddr = linkAddrEhr[0]; // normal processing use port 0 + Reg#(Maybe#(LineAddr)) linkAddrRst = linkAddrEhr[1]; // reset by outside use port 1 + + // we process AMO resp in a new cycle to cut critical path + Reg#(Maybe#(AmoHitInfo#(cRqIdxT, procRqT))) processAmo <- mkReg(Invalid); + + // Reconcile states + Reg#(Bool) needReconcile <- mkReg(False); + Reg#(Bool) waitReconcileDone <- mkReg(False); + + // performance +`ifdef PERF_COUNT + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) ldCnt <- mkCount(0); + Count#(Data) stCnt <- mkCount(0); + Count#(Data) amoCnt <- mkCount(0); + Count#(Data) ldMissCnt <- mkCount(0); + Count#(Data) stMissCnt <- mkCount(0); + Count#(Data) amoMissCnt <- mkCount(0); + Count#(Data) ldMissLat <- mkCount(0); + Count#(Data) stMissLat <- mkCount(0); + Count#(Data) amoMissLat <- mkCount(0); + Count#(Data) selfInvCnt <- mkCount(0); + Count#(Data) reconcileCnt <- mkCount(0); + + LatencyTimer#(cRqNum, 10) latTimer <- mkLatencyTimer; // max 1K cycle latency + + function Action incrReqCnt(MemOp op); + action + if(doStats) begin + case(op) + Ld: ldCnt.incr(1); + St: stCnt.incr(1); + Lr, Sc, Amo: amoCnt.incr(1); + endcase + end + endaction + endfunction + + function Action incrMissCnt(MemOp op, cRqIdxT idx); + action + let lat <- latTimer.done(idx); + if(doStats) begin + case(op) + Ld: begin + ldMissLat.incr(zeroExtend(lat)); + ldMissCnt.incr(1); + end + St: begin + stMissLat.incr(zeroExtend(lat)); + stMissCnt.incr(1); + end + Lr, Sc, Amo: begin + amoMissLat.incr(zeroExtend(lat)); + amoMissCnt.incr(1); + end + endcase + end + endaction + endfunction +`endif + + function tagT getTag(Addr a) = truncateLSB(a); + + // send retrying cRq (which follows early failed Sc) to pipeline + rule cRqTransfer_retry(cRqRetryIndexQ.notEmpty); + cRqRetryIndexQ.deq; + cRqIdxT n = cRqRetryIndexQ.first; + // XXX don't change MSHR entry to Init + // later cRq to same addr needs to be appended after this one, and we + // need to know that we should not append this one to other cRq to the + // same addr + // send to pipeline + procRqT req = cRqMshr.cRqTransfer.getRq(n); + pipeline.send(CRq (SelfInvL1PipeRqIn { + addr: req.addr, + mshrIdx: n + })); + $display("%t L1 %m cRqTransfer_retry: ", $time, + fshow(n), " ; ", + fshow(req) + ); + endrule + + // although D$ may not have cRq at every cycle + // we still make cRq has lower priorty than pRq/pRs + // we stop accepting cRq when we need to reconcile + rule cRqTransfer_new(!cRqRetryIndexQ.notEmpty && !needReconcile); + procRqT r <- toGet(rqFromCQ).get; + cRqIdxT n <- cRqMshr.cRqTransfer.getEmptyEntryInit(r); + // send to pipeline + pipeline.send(CRq (SelfInvL1PipeRqIn { + addr: r.addr, + mshrIdx: n + })); +`ifdef PERF_COUNT + // performance counter: cRq type + incrReqCnt(r.op); +`endif + $display("%t L1 %m cRqTransfer_new: ", $time, + fshow(n), " ; ", + fshow(r) + ); + endrule + + (* descending_urgency = "pRqTransfer, cRqTransfer_retry, cRqTransfer_new" *) + rule pRqTransfer(fromPQ.first matches tagged PRq .req); + fromPQ.deq; + pRqIdxT n <- pRqMshr.getEmptyEntryInit(req); + // send to pipeline + pipeline.send(PRq (SelfInvL1PipeRqIn { + addr: req.addr, + mshrIdx: n + })); + $display("%t L1 %m pRqTransfer: ", $time, + fshow(n), " ; ", + fshow(req) + ); + // pRq always downgrade to S + doAssert(req.toState == S, "must to S"); + endrule + + (* descending_urgency = "pRsTransfer, cRqTransfer_retry, cRqTransfer_new" *) + rule pRsTransfer(fromPQ.first matches tagged PRs .resp); + fromPQ.deq; + pipeline.send(PRs (SelfInvL1PipePRsIn { + addr: resp.addr, + toState: resp.toState, + data: resp.data, + way: resp.id + })); + $display("%t L1 %m pRsTransfer: ", $time, fshow(resp)); + // pRs must have data + doAssert(isValid(resp.data), "msut have data"); + endrule + + rule sendRsToP_cRq(rsToPIndexQ.first matches tagged CRq .n); + rsToPIndexQ.deq; + // get cRq replacement info + procRqT req = cRqMshr.sendRsToP_cRq.getRq(n); + cRqSlotT slot = cRqMshr.sendRsToP_cRq.getSlot(n); + Maybe#(Line) data = cRqMshr.sendRsToP_cRq.getData(n); + L1CRqState state = cRqMshr.sendRsToP_cRq.getState(n); + doAssert(state == WaitNewTag, + "send replacement resp to parent, state should be WaitNewTag" + ); + // send resp to parent + cRsToPT resp = CRsMsg { + addr: {slot.repTag, truncate(req.addr)}, // get bank id & index from req + toState: I, + data: data, + child: ? + }; + rsToPQ.enq(resp); + // req parent for upgrade & change state + rqToPIndexQ_sendRsToP.enq(n); + cRqMshr.sendRsToP_cRq.setWaitSt_setSlot_clearData(n, L1CRqSlot { + way: slot.way, + cs: I, + repTag: ?, + waitP: True // we have req parent at the same time + }); + // inform processor of line eviction + procResp.evict(getLineAddr(resp.addr)); + $display("%t L1 %m sendRsToP: ", $time, + fshow(rsToPIndexQ.first)," ; ", + fshow(req), " ; ", + fshow(resp) + ); + endrule + + rule sendRsToP_pRq(rsToPIndexQ.first matches tagged PRq .n); + rsToPIndexQ.deq; + // get pRq info & send resp & release MSHR entry + pRqFromPT req = pRqMshr.sendRsToP_pRq.getRq(n); + Maybe#(Line) data = pRqMshr.sendRsToP_pRq.getData(n); + cRsToPT resp = CRsMsg { + addr: req.addr, + toState: req.toState, + data: data, + child: ? + }; + rsToPQ.enq(resp); + pRqMshr.sendRsToP_pRq.releaseEntry(n); // mshr entry released + // inform processor of line eviction + procResp.evict(getLineAddr(resp.addr)); + $display("%t L1 %m sendRsToP: ", $time, + fshow(rsToPIndexQ.first), " ; ", + fshow(req), " ; ", + fshow(resp) + ); + doAssert(req.toState == S, "only downgrade to S"); + endrule + + rule sendRqToP; + rqToPIndexQ.deq; + cRqIdxT n = rqToPIndexQ.first; + procRqT req = cRqMshr.sendRqToP.getRq(n); + cRqSlotT slot = cRqMshr.sendRqToP.getSlot(n); + cRqToPT cRqToP = CRqMsg { + addr: req.addr, + fromState: slot.cs, + toState: req.toState, + canUpToE: True, + id: slot.way, + child: ? + }; + rqToPQ.enq(cRqToP); + $display("%t L1 %m sendRqToP: ", $time, + fshow(n), " ; ", + fshow(req), " ; ", + fshow(slot), " ; ", + fshow(cRqToP) + ); + doAssert(slot.cs == I, "we always self-inv before req to parent"); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif + endrule + + // last stage of pipeline: process req + + // XXX: in L1, pRq cannot exist in dependency chain + // because there are only two ways to include pRq into chain + // (1) append to a cRq that could finish, but such cRq must have been directly reponded + // (2) overtake cRq (S->M), but such downgrade can be done instaneously without the need of chaining + // Thus, dependency chain in L1 only contains cRq + + // pipeline outputs + pipeOutT pipeOut = pipeline.first; + ramDataT ram = pipeOut.ram; + // figure out procRq MSHR idx in pipeline output (since there is only one + // port to select from MSHR) + cRqIdxT pipeOutCRqIdx = (case(pipeOut.cmd) matches + tagged L1CRq .n: (n); + default: (fromMaybe(0, ram.info.owner)); // L1PRs and L1PRq + endcase); + procRqT pipeOutCRq = cRqMshr.pipelineResp.getRq(pipeOutCRqIdx); + L1CRqState pipeOutCState = cRqMshr.pipelineResp.getState(pipeOutCRqIdx); + cRqSlotT pipeOutCSlot = cRqMshr.pipelineResp.getSlot(pipeOutCRqIdx); + Maybe#(cRqIdxT) pipeOutSucc = cRqMshr.pipelineResp.getSucc(pipeOutCRqIdx); + + // function to process cRq hit (MSHR slot may have garbage) + function Action cRqHit(cRqIdxT n, procRqT req, Bool pRsUpgrade); + action + $display("%t L1 %m pipelineResp: Hit func: ", $time, + fshow(n), " ; ", + fshow(req) + ); + // check tag & cs: even this function is called by pRs, tag should match, + // because tag is written into cache before sending req to parent + doAssert(ram.info.tag == getTag(req.addr) && enoughCacheState(ram.info.cs, req.toState), + "cRqHit but tag or cs incorrect" + ); + // process req: resp processor and get new cache line + // The silent E->M update is already done in pipeline + Line curLine = ram.line; + Line newLine = curLine; + LineDataOffset dataSel = getLineDataOffset(req.addr); + case(req.op) matches + Ld: begin + procResp.respLd(req.id, curLine[dataSel]); + end + Lr: begin + procResp.respLrScAmo(req.id, curLine[dataSel]); + // set link addr + linkAddr <= Valid (getLineAddr(req.addr)); + end + Amo: begin + noAction; + end + Sc: begin + // check Sc succeeds or not + Bool succeed = linkAddr == Valid (getLineAddr(req.addr)); + // resp to proc + Data respVal = succeed ? fromInteger(valueof(ScSuccVal)) : fromInteger(valueof(ScFailVal)); + procResp.respLrScAmo(req.id, respVal); + // calculate new data to write + if(succeed) begin + newLine[dataSel] = getUpdatedData(curLine[dataSel], req.byteEn, req.data); + end + // reset link addr + linkAddr <= Invalid; + end + St: begin + // resp processor, get write data & BE + let {be, wrLine} <- procResp.respSt(req.id); + // calculate new data to write + newLine = getUpdatedLine(curLine, be, wrLine); + end + default: begin + doAssert(False, "unknown mem op"); + end + endcase + // Get new hit count, and check if we need to self inv the line + Bit#(TLog#(maxHitNum)) newHits = ram.info.other.hits; + Bool needSelfInv = False; + if(pRsUpgrade) begin + newHits = 0; + end + else if(ram.info.cs == S) begin + needSelfInv = newHits == fromInteger(valueof(maxHitNum) - 1); + newHits = newHits + 1; + end + else if(ram.info.cs > S) begin + doAssert(ram.info.other.hits == 0, "hit count must be 0"); + end + // deq pipeline or swap in successor ONLY when not AMO: to cut critical + // path for AMO + Maybe#(cRqIdxT) succ = pipeOutSucc; + if(req.op != Amo) begin + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(req.addr), // should be the same as original tag + // XXX We may voluntarilly downgrade S -> I if we hit too + // much on S. + // Otherwise, just use max(cs, toState). ram.info.cs > + // req.toState is possible in many cache hit cases (e.g., + // req S and hit in M). req.toState > ram.info.cs is also + // possible in case of req M and hit E. + // Note that the S->I self-inv does not affect link addr, + // which is maintained only in E/M. + cs: needSelfInv ? I : max(ram.info.cs, req.toState), + dir: ?, + owner: succ, + other: SelfInvL1Hits {hits: newHits} + }, + line: newLine // write new data into cache + }, True); // hit, so update rep info + $display("%t L1 %m pipelineResp: Hit func: update ram: ", $time, + fshow(newLine), " ; ", + fshow(succ), " ; ", + fshow(needSelfInv), " ; ", + fshow(newHits) + ); + // release MSHR entry + cRqMshr.pipelineResp.releaseEntry(n); +`ifdef PERF_COUNT + if(doStats && needSelfInv) begin + selfInvCnt.incr(1); + end +`endif + end + else begin + processAmo <= Valid (AmoHitInfo { + n: n, + req: req, + succ: succ + }); + $display("%t L1 %m pipelineResp: Hit func: AMO process in next cycle", $time); + end + endaction + endfunction + + rule doProcessAmo(processAmo matches tagged Valid .amoHit); + // extract amo req + cRqIdxT n = amoHit.n; + procRqT req = amoHit.req; + Maybe#(cRqIdxT) succ = amoHit.succ; + // get line and sel + Line curLine = ram.line; + Line newLine = curLine; + LineDataOffset dataSel = getLineDataOffset(req.addr); + Bool upper32 = req.addr[2] == 1; + Data curData = curLine[dataSel]; + // resp processor + Data resp = req.amoInst.doubleWord ? curData : signExtend( + upper32 ? curData[63:32] : curData[31:0] + ); + procResp.respLrScAmo(req.id, resp); + // calculate new data to write + newLine[dataSel] = amoExec(req.amoInst, curData, req.data, upper32); + // deq pipeline or swap in successor + // Since AMO always hits in M, hit count is 0 and never self inv + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(req.addr), // should be the same as original tag + cs: M, // AMO always gets to M + dir: ?, + owner: succ, + other: SelfInvL1Hits {hits: 0} + }, + line: newLine // write new data into cache + }, True); // hit, so update rep info + doAssert(req.toState == M, "AMO must req for M"); + $display("%t L1 %m processAmo: update ram: ", $time, + fshow(newLine), " ; ", + fshow(succ) + ); + // release MSHR entry + cRqMshr.pipelineResp.releaseEntry(n); + // reset state + processAmo <= Invalid; + endrule + + rule pipelineResp_cRq(!isValid(processAmo) &&& pipeOut.cmd matches tagged L1CRq .n); + $display("%t L1 %m pipelineResp: ", $time, fshow(pipeOut)); + + procRqT procRq = pipeOutCRq; + $display("%t L1 %m pipelineResp: cRq: ", $time, fshow(n), " ; ", fshow(procRq)); + + // find end of dependency chain + Maybe#(cRqIdxT) cRqEOC = cRqMshr.pipelineResp.searchEndOfChain(procRq.addr); + + function Action cRqScEarlyFail(Bool resetOwner); + action + // resp to proc + procResp.respLrScAmo(procRq.id, fromInteger(valueof(ScFailVal))); + // reset link addr + linkAddr <= Invalid; + // deq pipeline (we cannot swap in successor because Sc may not + // occupy a line). We don't touch cache contents, but we may reset + // line owner. + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, + cs: ram.info.cs, + dir: ram.info.dir, + owner: resetOwner ? Invalid : ram.info.owner, + other: ram.info.other + }, + line: ram.line + }, False); + // retry successor + Maybe#(cRqIdxT) succ = pipeOutSucc; + if(succ matches tagged Valid .s) begin + cRqRetryIndexQ.enq(s); + end + // release MSHR entry + cRqMshr.pipelineResp.releaseEntry(n); + $display("%t L1 %m pipelineResp: Sc early fail func: ", $time, + fshow(resetOwner), " ; ", + fshow(succ) + ); + endaction + endfunction + + // function to process cRq miss without replacement (MSHR slot may have garbage) + // This also includes the case of sliently replacing S line. + // In either case, cs must be I or S, otherwise we cache hit or need + // explicit eviction. Therefore, it is equivalent to always silently + // evicting the current line. + // Note that the S->I self-inv does not affect link addr, which is + // maintained only in E/M. + function Action cRqMissNoReplacement; + action + cRqSlotT cSlot = pipeOutCSlot; + // it is impossible in L1 to have slot.waitP == True in this function + // because cRq is not set to Depend when pRq invalidates it (pRq just directly resp) + // and this func is only called when cs < toState (otherwise will hit) + // because L1 has no children to wait for + doAssert(!cSlot.waitP, "waitP must be false"); + doAssert(ram.info.cs <= S, "cs cannot exceed S"); + // Thus we must send req to parent + // XXX first send to a temp indexQ to avoid conflict, then merge to rqToPIndexQ later + rqToPIndexQ_pipelineResp.enq(n); + // update mshr + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, L1CRqSlot { + way: pipeOut.way, // use way from pipeline + cs: I, + repTag: ?, // no explicit replacement + waitP: True // we have req parent, so waiting + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(procRq.addr), // tag may be garbage if cs == I or silent replace + cs: I, + dir: ?, + owner: Valid (n), // owner is req itself + other: ram.info.other // hit count will be reset later when pRs arrives + }, + line: ram.line + }, False); + endaction + endfunction + + // function to do replacement for cRq + function Action cRqReplacement; + action + doAssert(ram.info.cs >= E, "must be exclusive"); + // deq pipeline + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(procRq.addr), // set to req tag (old tag is replaced right now) + cs: I, + dir: ?, + owner: Valid (n), // owner is req itself + other: ram.info.other // hit count will be reset later when pRs arrives + }, + line: ? // data is no longer used + }, False); + // update MSHR: may save replaced line data + cRqMshr.pipelineResp.setStateSlot(n, WaitNewTag, L1CRqSlot { + way: pipeOut.way, // use way from pipeline + cs: I, + repTag: ram.info.tag, // tag being replaced + waitP: False // we send req to parent later (when resp to parent is sent) + }); + cRqMshr.pipelineResp.setData(n, ram.info.cs == M ? Valid (ram.line) : Invalid); + // send replacement resp to parent + rsToPIndexQ.enq(CRq (n)); + // reset link addr + LineAddr repLineAddr = getLineAddr({ram.info.tag, truncate(procRq.addr)}); // index & bank are from procRq + if(linkAddr == Valid (repLineAddr)) begin + linkAddr <= Invalid; + end + endaction + endfunction + + // function to set cRq to Depend, and make no further change to cache + function Action cRqSetDepNoCacheChange; + action + cRqMshr.pipelineResp.setStateSlot(n, Depend, defaultValue); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + endaction + endfunction + + // check if Sc fails early. If an Sc needs to req parent but it's addr + // does not match link addr, we can directly respond the Sc with + // failure, and thus avoid requesting parent. + Bool scFail = procRq.op == Sc && linkAddr != Valid (getLineAddr(procRq.addr)); + // check tag match + Bool tag_match = ram.info.tag == getTag(procRq.addr); + // check enough cache state for hit + Bool enough_cs = enoughCacheState(ram.info.cs, procRq.toState); + // check if cs is not I + Bool cs_valid = ram.info.cs > I; + // check if cs needs explicit evict + Bool cs_needs_evict = ram.info.cs > S; + + if(ram.info.owner matches tagged Valid .cOwner) begin + if(cOwner != n) begin + // owner is another cRq, so must just go through tag match + // tag match must be hit (because replacement algo won't give a way with owner) + doAssert(pipeOutCState == Init, "must first time go through tag match"); + doAssert(cs_valid && tag_match, "cRq should hit in tag match"); + // should be added to a cRq in dependency chain & deq from pipeline + doAssert(isValid(cRqEOC), ("cRq hit on another cRq, cRqEOC must be true")); + cRqMshr.pipelineResp.setSucc(fromMaybe(?, cRqEOC), Valid (n)); + cRqSetDepNoCacheChange; + $display("%t L1 %m pipelineResp: cRq: own by other cRq ", $time, + fshow(cOwner), ", depend on cRq ", fshow(cRqEOC) + ); + end + else begin + // owner is myself, so must be swapped in + // tag should match, but cs may be I because of self inv + doAssert(pipeOutCState == Depend, "must be swapped in"); + doAssert(tag_match, "cRq swapped in by previous cRq, tag must match"); + // Hit or Miss (but no replacement) + if(enough_cs) begin + $display("%t L1 %m pipelineResp: cRq: own by itself, hit", $time); + cRqHit(n, procRq, False); + end + else if(scFail) begin + // Sc already fails, so we don't need to req parent. Since + // Sc is the owner of the line, we need to reset owner to + // Invalid. + $display("%t L1 %m pipelineResp: cRq: own by itself, Sc early fails, ", + $time, fshow(linkAddr) + ); + cRqScEarlyFail(True); + end + else begin + $display("%t L1 %m pipelineResp: cRq: own by itself, miss no replace", $time); + cRqMissNoReplacement; + end + end + end + else begin + // cache has no owner, cRq must just go through tag match + // Here are two cases: + // 1. cRq in Init state, first time go through tag match + // 2. cRq addr-depends on an Sc which fails early, just got waken up + L1CRqState cState = pipeOutCState; + + // check for cRqEOC to append to dependency chain + // Only append to dep-chain if is in Init state + if(cRqEOC matches tagged Valid .k &&& cState == Init) begin + $display("%t L1 %m pipelineResp: cRq: no owner, depend on cRq ", $time, + fshow(cState), " ; ", fshow(cRqEOC) + ); + cRqMshr.pipelineResp.setSucc(k, Valid (n)); + cRqSetDepNoCacheChange; + end + else begin + // Check hit or miss, replacment may be needed + if(tag_match && enough_cs) begin + // Hit + doAssert(cs_valid, "hit, so cs must > I"); + $display("%t L1 %m pipelineResp: cRq: no owner, hit", $time); + cRqHit(n, procRq, False); + end + else if(scFail) begin + // Sc already fails, so we don't need to req parent. Since + // there is no owner of the line, we can reset owner to + // Invalid. + $display("%t L1 %m pipelineResp: cRq: no owner, Sc early fails, ", + $time, fshow(linkAddr) + ); + cRqScEarlyFail(True); + end + else if(cs_needs_evict && !tag_match) begin + // Req parent, need replacement + $display("%t L1 %m pipelineResp: cRq: no owner, replace", $time); + cRqReplacement; + end + else begin + // Req parent, no Replacement necessary, we can silently replace S line + Bool silent_replace = ram.info.cs == S && !tag_match; + $display("%t L1 %m pipelineResp: cRq: ", + "no owner, miss no replace, silent replace ", + $time, fshow(silent_replace)); + cRqMissNoReplacement; + end + end + end + endrule + + rule pipelineResp_pRs(!isValid(processAmo) &&& pipeOut.cmd == L1PRs); + $display("%t L1 %m pipelineResp: ", $time, fshow(pipeOut)); + $display("%t L1 %m pipelineResp: pRs: ", $time); + + if(ram.info.owner matches tagged Valid .cOwner) begin + procRqT procRq = pipeOutCRq; + doAssert(ram.info.cs >= procRq.toState && ram.info.tag == getTag(procRq.addr), + ("pRs must be a hit") + ); + cRqHit(cOwner, procRq, True); +`ifdef PERF_COUNT + // performance counter: miss cRq + incrMissCnt(procRq.op, cOwner); +`endif + end + else begin + doAssert(False, ("pRs owner must match some cRq")); + end + endrule + + rule pipelineResp_pRq(!isValid(processAmo) &&& pipeOut.cmd matches tagged L1PRq .n); + pRqFromPT pRq = pRqMshr.pipelineResp.getRq(n); + $display("%t L1 %m pipelineResp: pRq: ", $time, fshow(n), " ; ", fshow(pRq)); + + // pRq is never in dependency chain, so it is never swapped in + // pRq must go through tag match, which either returns a tag matched way or asserts pRqMiss + // and pRq is always directly handled: either dropped or Done + + // Since pRq always downgrade to S in self inv L1, when we handle a + // valid pRq, the line cannot be owned by any cRq. Otherwise the cRq + // must be hit and responded. + doAssert(pRq.toState == S, "must downgrade to S"); + + if(pipeOut.pRqMiss || ram.info.cs <= pRq.toState || ram.info.tag != getTag(pRq.addr)) begin + $display("%t L1 %m pipelineResp: pRq: drop", $time); + // pRq can be directly dropped + // must go through tag match, no successor + pRqMshr.pipelineResp.releaseEntry(n); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + // sanity check (ram.info.tag != getTag(pRq.addr) is useless) + if(!pipeOut.pRqMiss) begin + doAssert(ram.info.cs == S && ram.info.tag == getTag(pRq.addr), + ("pRqMiss deasserted, must be down to S") + ); + end + end + else begin + $display("%t L1 %m pipelineResp: pRq: valid process", $time); + // line must NOT be owned + doAssert(ram.info.owner == Invalid, + ("pRq cannot hit on line owned by pRq (even itself)") + ); + // should process pRq + doAssert(ram.info.cs > pRq.toState && ram.info.tag == getTag(pRq.addr), + ("pRq should be processed") + ); + pRqMshr.pipelineResp.setDone_setData(n, ram.info.cs == M ? Valid (ram.line) : Invalid); + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, + cs: pRq.toState, + dir: ?, + owner: ram.info.owner, + other: ram.info.other + }, + line: ram.line + }, False); + rsToPIndexQ.enq(PRq (n)); + end + + // since pRq is always processed in one shot, and it always downgrades + // from exclusive, we reset link addr here + if(linkAddr == Valid (getLineAddr(pRq.addr))) begin + linkAddr <= Invalid; + end + endrule + + // merge rq to parent index into indexQ + rule rqIndexFromPipelineResp; + let n <- toGet(rqToPIndexQ_pipelineResp).get; + rqToPIndexQ.enq(n); + endrule + + (* descending_urgency = "rqIndexFromPipelineResp, rqIndexFromSendRsToP" *) + rule rqIndexFromSendRsToP; + let n <- toGet(rqToPIndexQ_sendRsToP).get; + rqToPIndexQ.enq(n); + endrule + + // Reconcile lines in S state: start after cRq MSHR is empty + // Since cRqTransfer rule cannot fire when needReconcile is true, we use a + // wire to catch cRqMshr.empty to avoid scheduling cycles + PulseWire cRqMshrEmpty <- mkPulseWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setCRqMshrEmpty(cRqMshr.emptyForFlush); + cRqMshrEmpty.send; + endrule + rule startReconcile(needReconcile && !waitReconcileDone && cRqMshrEmpty); + pipeline.reconcile; + waitReconcileDone <= True; + $display("%t L1 %m startReconcile", $time); +`ifdef PERF_COUNT + if(doStats) begin + reconcileCnt.incr(1); + end +`endif + endrule + rule completeReconcile(needReconcile && waitReconcileDone && pipeline.reconcile_done); + needReconcile <= False; + waitReconcileDone <= False; + $display("%t L1 %m completeReconcile", $time); + endrule + + interface ChildCacheToParent to_parent; + interface rsToP = toFifoDeq(rsToPQ); + interface rqToP = toFifoDeq(rqToPQ); + interface fromP = toFifoEnq(fromPQ); + endinterface + + interface L1ProcReq procReq; + method Action req(procRqT r); + rqFromCQ.enq(r); + endmethod + endinterface + + method Action resetLinkAddr; + linkAddrRst <= Invalid; + endmethod + + interface Get cRqStuck; + method ActionValue#(SelfInvL1CRqStuck) get; + let s <- cRqMshr.stuck.get; + return SelfInvL1CRqStuck { + addr: s.req.addr, + op: s.req.op, + state: s.state, + slotCs: s.slotCs, + waitP: s.waitP + }; + endmethod + endinterface + + interface pRqStuck = pRqMshr.stuck; + + method flush = noAction; + method flush_done = True; + + method Action reconcile if(!needReconcile); + needReconcile <= True; + endmethod + method Bool reconcile_done; + return !needReconcile; + endmethod + + method Action setPerfStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Data getPerfData(L1DPerfType t); + return (case(t) +`ifdef PERF_COUNT + L1DLdCnt: ldCnt; + L1DStCnt: stCnt; + L1DAmoCnt: amoCnt; + L1DLdMissCnt: ldMissCnt; + L1DStMissCnt: stMissCnt; + L1DAmoMissCnt: amoMissCnt; + L1DLdMissLat: ldMissLat; + L1DStMissLat: stMissLat; + L1DAmoMissLat: amoMissLat; + L1DSelfInvCnt: selfInvCnt; + L1DReconcileCnt: reconcileCnt; +`endif + default: 0; + endcase); + endmethod +endmodule + + +// Scheduling note + +// cRqTransfer: write new cRq MSHR entry, cRqMshr.getEmptyEntry + +// pRqTransfer: write new pRq MSHR entry, pRqMshr.getEmptyEntry + +// pRsTransfer: - + +// sendRsToP_cRq: access cRq MSHR entry that is sending replacement +// -- read req/state/slot/data +// -- write state/slot/data + +// sendRsToP_pRq: read pRq MSHR entry that is responding, pRqMshr.releaseEntry + +// sendRqToP: read cRq MSHR req/slot that is requesting parent + +// pipelineResp_cRq: +// -- cRqMshr.releaseEntry +// -- read cRq MSHR req/state/slot/data currently processed +// -- write cRq MSHR state/slot/data currently processed +// -- write succ of some existing cRq MSHR entry (in WaitNewTag or WaitSt) +// -- read all state/req/succ in cRq MSHR entry (searchEOC) +// -- not affected by write in cRqTransfer +// -- not affected by write in sendRsToP_cRq (state change is just WaitNewTag->WaitSt) + +// pipelineResp_pRs: +// -- cRqMshr.releaseEntry +// -- read cRqMSHR req/succ + +// pipelineResp_pRq: +// -- r/w pRq MSHR entry, pRqMshr.releaseEntry +// -- read existing cRq state/req/slot, write its slot/state +// -- cannot be the cRq in sendRsToP_cRq + +// ---- conflict analysis ---- + +// XXXTransfer is conflict with each other +// but they are access new MSHR entry, so never conflict with other rules + +// sendxxxToP is conflict free with each other + +// sendRsToP_cRq conflict free with pipelineResp_xxx in terms of MSHR +// -- writes in sendRsToP_cRq does not affect r&w in pipelineResp_xxx +// -- writes in pipelineResp_xxx never affects r/w in sendRsToP_cRq +// BUT they may both enq to rqToPIndexQ + +// sendRsToP_pRq conflict free with pipelineResp_xxx + +// sendRqToP conflict free with pipelineResp_xxx + +// ---- conclusion ---- + +// we have 4 ports from cRq MSHR +// 1. cRqTransfer +// 2. sendRsToP_cRq +// 3. sendRqToP +// 4. pipelineResp + +// we have 3 ports from pRq MSHR +// 1. pRqTransfer +// 2. sendRsToP_pRq +// 3. pipelineResp + + +// unsafe version: all reads read the original reg value +// and all writes are cononicalized + +// safe version: use EHR ports +// sendRsToP_cRq/sendRsToP_pRq: port 0 +// pipelineResp: port 1 +// cRqTransfer/sendRqToP/pRqTransfer: port 2 + +// We put cRqTransfer at last because it is ordered after the issue method of +// LSQ outside cache, while pipelineResp and sendRsToP will call other methods +// of LSQ. Making cRqTransfer after pipelineResp/sendRsToP will not add any +// extra ordering constraint to methods of LSQ. + + +// group banks into cache +module mkSelfInvL1Cache#( + module#(L1CRqMshr#(cRqNum, wayT, tagT, procRqT)) mkL1CRqMshrLocal, + module#(L1PRqMshr#(pRqNum)) mkL1PRqMshrLocal, + module#(SelfInvL1Pipe#(lgBankNum, wayNum, maxHitNum, indexT, tagT, cRqIdxT, pRqIdxT)) mkL1Pipeline, + L1ProcResp#(procRqIdT) procResp +)( + SelfInvL1Bank#(lgBankNum, wayNum, indexSz, tagSz, cRqNum, pRqNum, maxHitNum, procRqIdT) +) provisos ( + NumAlias#(bankNum, TExp#(lgBankNum)), + Alias#(bankIdT, Bit#(lgBankNum)), + Alias#(l1BankT, SelfInvL1Bank#(lgBankNum, wayNum, indexSz, tagSz, cRqNum, pRqNum, maxHitNum, procRqIdT)), + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(TLog#(cRqNum))), + Alias#(pRqIdxT, Bit#(TLog#(pRqNum))), + Alias#(cacheOwnerT, Maybe#(cRqIdxT)), + Alias#(otherT, SelfInvL1Hits#(maxHitNum)), + Alias#(procRqT, ProcRq#(procRqIdT)), + Alias#(cRqToPT, CRqMsg#(wayT, void)), + Alias#(cRsToPT, CRsMsg#(void)), + Alias#(pRqRsFromPT, PRqRsMsg#(wayT, void)), + Alias#(l1CmdT, SelfInvL1Cmd#(cRqIdxT, pRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, void, cacheOwnerT, otherT, RandRepInfo, Line, l1CmdT)), + // requirements + Bits#(procRqIdT, _procRqIdT), + FShow#(procRqIdT), + FShow#(pipeOutT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum), + Add#(lgBankNum, c__, AddrSz), + Add#(1, d__, bankNum), + Add#(TAdd#(tagSz, indexSz), TAdd#(lgBankNum, LgLineSzBytes), AddrSz) +); + // bank id of each cache bank is implicit, we always send fixed subset of address to a bank + // the pipelineResp_cRq,pRs will conflict with each other + Vector#(bankNum, l1BankT) banks; + for (Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i] <- mkSelfInvL1Bank(fromInteger(i), mkL1CRqMshrLocal, mkL1PRqMshrLocal, mkL1Pipeline, procResp); + end + + function bankIdT getBankId(Addr a); + return truncate(a >> valueof(LgLineSzBytes)); + endfunction + + ChildCacheToParent#(wayT, void) toParentIfc; // ifc to parent cache + + if(valueof(bankNum) == 1) begin + toParentIfc = banks[0].to_parent; + end + else begin + // multiple banks need cross bar + Fifo#(2, cRqToPT) cRqToPQ <- mkCFFifo; + Fifo#(2, cRsToPT) cRsToPQ <- mkCFFifo; + Fifo#(2, pRqRsFromPT) pRqRsFromPQ <- mkCFFifo; + + function XBarDstInfo#(Bit#(0), cRqToPT) getCRqDstInfo(bankIdT bid, cRqToPT cRq); + return XBarDstInfo {idx: 0, data: cRq}; + endfunction + function Get#(cRqToPT) cRqGet(l1BankT ifc) = toGet(ifc.to_parent.rqToP); + mkXBar(getCRqDstInfo, map(cRqGet, banks), vec(toPut(cRqToPQ))); + + function XBarDstInfo#(Bit#(0), cRsToPT) getCRsDstInfo(bankdIdT bid, cRsToPT cRs); + return XBarDstInfo {idx: 0, data: cRs}; + endfunction + function Get#(cRsToPT) cRsGet(l1BankT ifc) = toGet(ifc.to_parent.rsToP); + mkXBar(getCRsDstInfo, map(cRsGet, banks), vec(toPut(cRsToPQ))); + + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + rule sendPRq(pRqRsFromPQ.first matches tagged PRq .rq &&& getBankId(rq.addr) == fromInteger(i)); + let r <- toGet(pRqRsFromPQ).get; + banks[i].to_parent.fromP.enq(r); + endrule + rule sendPRs(pRqRsFromPQ.first matches tagged PRs .rs &&& getBankId(rs.addr) == fromInteger(i)); + let r <- toGet(pRqRsFromPQ).get; + banks[i].to_parent.fromP.enq(r); + endrule + end + + toParentIfc = (interface ChildCacheToParent; + interface rqToP = toFifoDeq(cRqToPQ); + interface rsToP = toFifoDeq(cRsToPQ); + interface fromP = toFifoEnq(pRqRsFromPQ); + endinterface); + end + +`ifdef CHECK_DEADLOCK + FIFO#(SelfInvL1CRqStuck) cRqStuckQ <- mkFIFO1; + FIFO#(SelfInvL1PRqStuck) pRqStuckQ <- mkFIFO1; + + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + rule sendCRqStuck; + let s <- banks[i].cRqStuck.get; + cRqStuckQ.enq(s); + endrule + rule sendPRqStuck; + let s <- banks[i].pRqStuck.get; + pRqStuckQ.enq(s); + endrule + end + + interface cRqStuck = toGet(cRqStuckQ); + interface pRqStuck = toGet(pRqStuckQ); +`else + interface cRqStuck = nullGet; + interface pRqStuck = nullGet; +`endif + + interface ChildCacheToParent to_parent = toParentIfc; + + interface L1ProcReq procReq; + method Action req(procRqT r); + banks[getBankId(r.addr)].procReq.req(r); + endmethod + endinterface + + method Action resetLinkAddr; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i].resetLinkAddr; + end + endmethod + + method Action flush; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i].flush; + end + endmethod + + method Bool flush_done; + Vector#(bankNum, Bool) b; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + b[i] = banks[i].flush_done; + end + return fold(\&& , b); + endmethod + + method Action reconcile; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i].reconcile; + end + endmethod + + method Bool reconcile_done; + Vector#(bankNum, Bool) b; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + b[i] = banks[i].reconcile_done; + end + return fold(\&& , b); + endmethod + + method Action setPerfStatus(Bool stats); + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + banks[i].setPerfStatus(stats); + end + endmethod + + method Data getPerfData(L1DPerfType t); + Vector#(bankNum, Data) d = ?; + for(Integer i = 0; i < valueof(bankNum); i = i+1) begin + d[i] = banks[i].getPerfData(t); + end + return fold(\+ , d); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/SelfInvL1Pipe.bsv b/src_Core/RISCY_OOO/coherence/src/SelfInvL1Pipe.bsv new file mode 100644 index 0000000..f7fb0a9 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/SelfInvL1Pipe.bsv @@ -0,0 +1,492 @@ + +// Copyright (c) 2019 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Assert::*; +import ConfigReg::*; +import Vector::*; +import FShow::*; +import Fifo::*; +import Types::*; +import CCTypes::*; +import CCPipe::*; +import RWBramCore::*; +import RandomReplace::*; + +export SelfInvL1PipeRqIn(..); +export SelfInvL1PipePRsIn(..); +export SelfInvL1PipeIn(..); +export SelfInvL1Cmd(..); +export SelfInvL1Hits(..); +export SelfInvL1Pipe(..); +export mkSelfInvL1Pipe; + +// type param ordering: bank < way < index < tag < cRq < pRq + +// in L1 cache, only cRq can occupy cache line (pRq handled immediately) +// replacement is always done immediately (never have replacing line) +// so cache owner type is simply Maybe#(cRqIdxT) + +// input types +typedef struct { + Addr addr; + rqIdxT mshrIdx; +} SelfInvL1PipeRqIn#(type rqIdxT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; + Maybe#(Line) data; + wayT way; +} SelfInvL1PipePRsIn#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + SelfInvL1PipeRqIn#(cRqIdxT) CRq; + SelfInvL1PipeRqIn#(pRqIdxT) PRq; + SelfInvL1PipePRsIn#(wayT) PRs; +} SelfInvL1PipeIn#( + type wayT, + type cRqIdxT, + type pRqIdxT +) deriving (Bits, Eq, FShow); + +// output cmd to the processing rule in L1$ +typedef union tagged { + cRqIdxT L1CRq; + pRqIdxT L1PRq; + void L1PRs; +} SelfInvL1Cmd#( + type cRqIdxT, + type pRqIdxT +) deriving (Bits, Eq, FShow); + +// The "other" field in CacheInfo tracks the number of hits on the cache line +// before self inv +typedef struct { + Bit#(TLog#(maxHitNum)) hits; +} SelfInvL1Hits#(numeric type maxHitNum) deriving(Bits, Eq, FShow); + +interface SelfInvL1Pipe#( + numeric type lgBankNum, + numeric type wayNum, + numeric type maxHitNum, + type indexT, + type tagT, + type cRqIdxT, + type pRqIdxT +); + method Action send(SelfInvL1PipeIn#(Bit#(TLog#(wayNum)), cRqIdxT, pRqIdxT) r); + method PipeOut#( + Bit#(TLog#(wayNum)), + tagT, Msi, void, // no dir + Maybe#(cRqIdxT), SelfInvL1Hits#(maxHitNum), RandRepInfo, + Line, SelfInvL1Cmd#(cRqIdxT, pRqIdxT) + ) first; + method Action deqWrite( + Maybe#(cRqIdxT) swapRq, + RamData#(tagT, Msi, void, Maybe#(cRqIdxT), SelfInvL1Hits#(maxHitNum), Line) wrRam, // always write BRAM + Bool updateRep + ); + // drop stale clean cache lines + method Action reconcile; + method Bool reconcile_done; +endinterface + +// real cmd used in pipeline +typedef struct { + Addr addr; + wayT way; +} SelfInvL1PipePRsCmd#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + SelfInvL1PipeRqIn#(cRqIdxT) CRq; + SelfInvL1PipeRqIn#(pRqIdxT) PRq; + SelfInvL1PipePRsCmd#(wayT) PRs; +} SelfInvL1PipeCmd#( + type wayT, + type cRqIdxT, + type pRqIdxT +) deriving (Bits, Eq, FShow); + +// cache state array with reconcile port +// ram sub interface has same scheduling as RWBramCore: +// - wrReq CF rdReq (read cannot see write) +// - deqRdResp < rdReq +interface CacheStateArray#(type indexT); + interface RWBramCore#(indexT, Msi) ram; + method Action reconcile; +endinterface + +module mkCacheStateArray(CacheStateArray#(indexT)) provisos( + Alias#(indexT, Bit#(indexSz)), + NumAlias#(size, TExp#(indexSz)) +); + Vector#(size, Reg#(Msi)) state <- replicateM(mkConfigReg(I)); + Fifo#(1, Msi) rdRespQ <- mkPipelineFifo; + + interface RWBramCore ram; + method Action wrReq(indexT idx, Msi s); + state[idx] <= s; + endmethod + method Action rdReq(indexT idx); + rdRespQ.enq(state[idx]); + endmethod + method rdResp = rdRespQ.first; + method rdRespValid = rdRespQ.notEmpty; + method deqRdResp = rdRespQ.deq; + endinterface + + method Action reconcile; + function Action resetS(Reg#(Msi) s); + action + if(s == S) begin + s <= I; + end + endaction + endfunction + joinActions(map(resetS, state)); + endmethod +endmodule + +// Put cache state array and tag+owner ram together to form an array +typedef struct { + tagT tag; + ownerT owner; + otherT other; +} TagOwnerOther#(type tagT, type ownerT, type otherT) deriving(Bits, Eq, FShow); + +interface CacheInfoArray#(type indexT, type tagT, type ownerT, type otherT); + interface RWBramCore#(indexT, CacheInfo#(tagT, Msi, void, ownerT, otherT)) ram; + method Action reconcile; +endinterface + +module mkCacheInfoArray(CacheInfoArray#(indexT, tagT, ownerT, otherT)) provisos( + Alias#(indexT, Bit#(indexSz)), + NumAlias#(size, TExp#(indexSz)), + Alias#(tagOwnerOtherT, TagOwnerOther#(tagT, ownerT, otherT)), + Alias#(infoT, CacheInfo#(tagT, Msi, void, ownerT, otherT)), + Bits#(tagT, _tagSz), + Bits#(ownerT, _ownerSz), + Bits#(otherT, _otherSz) +); + RWBramCore#(indexT, tagOwnerOtherT) tagOwnerOtherRam <- mkRWBramCore; + CacheStateArray#(indexT) csArray <- mkCacheStateArray; + + interface RWBramCore ram; + method Action wrReq(indexT idx, infoT x); + tagOwnerOtherRam.wrReq(idx, TagOwnerOther { + tag: x.tag, + owner: x.owner, + other: x.other + }); + csArray.ram.wrReq(idx, x.cs); + endmethod + method Action rdReq(indexT idx); + tagOwnerOtherRam.rdReq(idx); + csArray.ram.rdReq(idx); + endmethod + method infoT rdResp; + tagOwnerOtherT tagOwnerOther = tagOwnerOtherRam.rdResp; + Msi cs = csArray.ram.rdResp; + return CacheInfo { + tag: tagOwnerOther.tag, + cs: cs, + dir: ?, + owner: tagOwnerOther.owner, + other: tagOwnerOther.other + }; + endmethod + method Bool rdRespValid; + return tagOwnerOtherRam.rdRespValid && csArray.ram.rdRespValid; + endmethod + method Action deqRdResp; + tagOwnerOtherRam.deqRdResp; + csArray.ram.deqRdResp; + endmethod + endinterface + + method reconcile = csArray.reconcile; +endmodule + +module mkSelfInvL1Pipe( + SelfInvL1Pipe#(lgBankNum, wayNum, maxHitNum, indexT, tagT, cRqIdxT, pRqIdxT) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(dirT, void), // no directory + Alias#(ownerT, Maybe#(cRqIdxT)), + Alias#(otherT, SelfInvL1Hits#(maxHitNum)), + Alias#(repT, RandRepInfo), + Alias#(pipeInT, SelfInvL1PipeIn#(wayT, cRqIdxT, pRqIdxT)), + Alias#(pipeCmdT, SelfInvL1PipeCmd#(wayT, cRqIdxT, pRqIdxT)), + Alias#(l1CmdT, SelfInvL1Cmd#(cRqIdxT, pRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, dirT, ownerT, otherT, repT, Line, l1CmdT)), // output type + Alias#(infoT, CacheInfo#(tagT, Msi, dirT, ownerT, otherT)), + Alias#(ramDataT, RamData#(tagT, Msi, dirT, ownerT, otherT, Line)), + Alias#(respStateT, RespState#(Msi)), + Alias#(tagMatchResT, TagMatchResult#(wayT)), + Alias#(dataIndexT, Bit#(TAdd#(TLog#(wayNum), indexSz))), + // requirement + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(cRqIdxSz)), + Alias#(pRqIdxT, Bit#(pRqIdxSz)), + Add#(indexSz, a__, AddrSz), + Add#(tagSz, b__, AddrSz) +); + // info RAM + Vector#(wayNum, CacheInfoArray#(indexT, tagT, ownerT, otherT)) infoArray <- replicateM(mkCacheInfoArray); + function RWBramCore#(indexT, infoT) getInfoRam(Integer i) = infoArray[i].ram; + Vector#(wayNum, RWBramCore#(indexT, infoT)) infoRam = map(getInfoRam, genVector); + // rep RAM (dummy) + RWBramCore#(indexT, repT) repRam <- mkRandRepRam; + // data RAM + RWBramCore#(dataIndexT, Line) dataRam <- mkRWBramCore; + + // initialize RAM + Reg#(Bool) initDone <- mkReg(False); + Reg#(indexT) initIndex <- mkReg(0); + + rule doInit(!initDone); + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + infoRam[i].wrReq(initIndex, CacheInfo { + tag: 0, + cs: I, + dir: ?, + owner: Invalid, + other: SelfInvL1Hits {hits: 0} + }); + end + repRam.wrReq(initIndex, randRepInitInfo); // useless for random replace + initIndex <= initIndex + 1; + if(initIndex == maxBound) begin + initDone <= True; + end + endrule + + // random replacement + RandomReplace#(wayNum) randRep <- mkRandomReplace; + + // functions + function Addr getAddrFromCmd(pipeCmdT cmd); + return (case(cmd) matches + tagged CRq .r: r.addr; + tagged PRq .r: r.addr; + tagged PRs .r: r.addr; + default: ?; + endcase); + endfunction + + function indexT getIndex(pipeCmdT cmd); + Addr a = getAddrFromCmd(cmd); + return truncate(a >> (valueOf(LgLineSzBytes) + valueOf(lgBankNum))); + endfunction + + function ActionValue#(tagMatchResT) tagMatch( + pipeCmdT cmd, + Vector#(wayNum, tagT) tagVec, + Vector#(wayNum, Msi) csVec, + Vector#(wayNum, ownerT) ownerVec, + repT repInfo + ); + return actionvalue + function tagT getTag(Addr a) = truncateLSB(a); + + $display("%t L1 %m tagMatch: ", $time, + fshow(cmd), " ; ", + fshow(getTag(getAddrFromCmd(cmd))), + fshow(tagVec), " ; ", + fshow(csVec), " ; ", + fshow(ownerVec), " ; " + ); + if(cmd matches tagged PRs .rs) begin + // PRs directly read from cmd + return TagMatchResult { + way: rs.way, + pRqMiss: False + }; + end + else begin + // CRq/PRq: need tag matching + Addr addr = getAddrFromCmd(cmd); + tagT tag = getTag(addr); + // find hit way (nothing is being replaced) + function Bool isMatch(Tuple2#(Msi, tagT) csTag); + match {.cs, .t} = csTag; + return cs > I && t == tag; + endfunction + Maybe#(wayT) hitWay = searchIndex(isMatch, zip(csVec, tagVec)); + if(hitWay matches tagged Valid .w) begin + return TagMatchResult { + way: w, + pRqMiss: False + }; + end + else if(cmd matches tagged PRq .rq) begin + // pRq miss + return TagMatchResult { + way: 0, // default to 0 + pRqMiss: True + }; + end + else begin + // find a unlocked way to replace for cRq + Vector#(wayNum, Bool) unlocked = ?; + Vector#(wayNum, Bool) invalid = ?; + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + invalid[i] = csVec[i] == I; + unlocked[i] = !isValid(ownerVec[i]); + end + Maybe#(wayT) repWay = randRep.getReplaceWay(unlocked, invalid); + // sanity check: repWay must be valid + if(!isValid(repWay)) begin + $fwrite(stderr, "[L1Pipe] ERROR: ", fshow(cmd), " cannot find way to replace\n"); + $finish; + end + return TagMatchResult { + way: fromMaybe(?, repWay), + pRqMiss: False + }; + end + end + endactionvalue; + endfunction + + function ActionValue#(UpdateByUpCs#(Msi)) updateByUpCs( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs + ); + actionvalue + doAssert(toState > oldCs, "should truly upgrade cs"); + doAssert(dataV, "self inv L1 always needs data resp"); + return UpdateByUpCs {cs: toState}; + endactionvalue + endfunction + + function ActionValue#(UpdateByDownDir#(Msi, dirT)) updateByDownDir( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs, dirT oldDir + ); + actionvalue + doAssert(False, "L1 should not have cRs"); + return UpdateByDownDir {cs: oldCs, dir: oldDir}; + endactionvalue + endfunction + + function ActionValue#(repT) updateRepInfo(repT r, wayT w); + actionvalue + return ?; // random replace does not have bookkeeping + endactionvalue + endfunction + + CCPipe#( + wayNum, indexT, tagT, Msi, dirT, ownerT, otherT, repT, Line, pipeCmdT + ) pipe <- mkCCPipe( + regToReadOnly(initDone), getIndex, tagMatch, + updateByUpCs, updateByDownDir, updateRepInfo, + infoRam, repRam, dataRam + ); + + // reconcile: wait until pipeline empty and drop all S states. Stall + // pipeline enq while we are waiting. Make the reconcile rule conflict with + // pipeline deq to remove any possible race (the guard of reconcile rule + // actually should have done the job). + // Since send method will not fire when needReconcile, we can use a wire to + // catch pipeline empty signal to avoid scheduling issue + Reg#(Bool) needReconcile <- mkReg(False); + + RWire#(void) conflict_reconcile_deq <- mkRWire; + + PulseWire pipeEmpty <- mkPulseWire; + + (* fire_when_enabled, no_implicit_conditions *) + rule setPipeEmpty(pipe.emptyForFlush); + pipeEmpty.send; + endrule + + rule doReconcile(initDone && needReconcile && pipeEmpty); + function Action flush(CacheInfoArray#(indexT, tagT, ownerT, otherT) ifc); + action + ifc.reconcile; + endaction + endfunction + joinActions(map(flush, infoArray)); + // reconcile is done + needReconcile <= False; + // conflict with deq + conflict_reconcile_deq.wset(?); + $display("%t L1 %m doReconcile", $time); + endrule + + // stall enq for reconcile + method Action send(pipeInT req) if(!needReconcile); + case(req) matches + tagged CRq .rq: begin + pipe.enq(CRq (rq), Invalid, Invalid); + end + tagged PRq .rq: begin + pipe.enq(PRq (rq), Invalid, Invalid); + end + tagged PRs .rs: begin + pipe.enq(PRs (SelfInvL1PipePRsCmd { + addr: rs.addr, + way: rs.way + }), rs.data, UpCs (rs.toState)); + end + endcase + endmethod + + // need to adapt pipeline output to real output format + method pipeOutT first; + let pout = pipe.first; + return PipeOut { + cmd: (case(pout.cmd) matches + tagged CRq .rq: L1CRq (rq.mshrIdx); + tagged PRq .rq: L1PRq (rq.mshrIdx); + tagged PRs .rs: L1PRs; + default: ?; + endcase), + way: pout.way, + pRqMiss: pout.pRqMiss, + ram: pout.ram, + repInfo: pout.repInfo + }; + endmethod + + method Action deqWrite(Maybe#(cRqIdxT) swapRq, ramDataT wrRam, Bool updateRep); + // get new cmd + Maybe#(pipeCmdT) newCmd = Invalid; + if(swapRq matches tagged Valid .idx) begin // swap in cRq + Addr addr = getAddrFromCmd(pipe.first.cmd); // inherit addr + newCmd = Valid (CRq (SelfInvL1PipeRqIn {addr: addr, mshrIdx: idx})); + end + // call pipe + pipe.deqWrite(newCmd, wrRam, updateRep); + // conflict with reconcile + conflict_reconcile_deq.wset(?); + endmethod + + method Action reconcile if(!needReconcile); + needReconcile <= True; + endmethod + + method Bool reconcile_done; + return !needReconcile; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/coherence/src/SelfInvLLBank.bsv b/src_Core/RISCY_OOO/coherence/src/SelfInvLLBank.bsv new file mode 100644 index 0000000..0c0329f --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/SelfInvLLBank.bsv @@ -0,0 +1,1494 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import FIFO::*; +import GetPut::*; +import Types::*; +import CCTypes::*; +import LLCRqMshr::*; +import CCPipe::*; +import SelfInvLLPipe ::*; +import FShow::*; +import Fifo::*; +import CacheUtils::*; +import Performance::*; +import LatencyTimer::*; +import Cntrs::*; +import ConfigReg::*; +import RandomReplace::*; + +// we use an infoQ to serialize all req to memory +// this also ensures that cache pipeline is never blocked +// so we do not need to buffer mem resp that needs to refill cache + +// XXX we need to maintain the invariant that +// at most 1 pRq sent to a child for an addr +// and we have to wait for resp before sending anthoer one + +// In future, it would be hard to parallelize sendRqToC and pipelineResp +// because sendRqToC must see updates to dirPend made in pipelineResp +// or we simply stall sendRqToC + +// XXX DMA req are put in the same MSHR as child req +// this ensures that child req always get a cache line to occupy after being sent to pipeline + +// DMA req are handled in the following way +// (1) If it hits in LLC, then we can downgrade children and process it +// (2) Otherwise, we req memory, XXX and req is viewed as Done +// The dep successor is sent to retry instead of being swapped in, +// because we don't have a cache line to occupy... +// When the mem resp comes, we send DMA resp and DO NOT fill cache + +// XXX mem resp that refill cache are for child req, others that don't refill cache are for DMA req + +// XXX Directory should be I (instead of don't care) when cache state is invalid + +// naming rule: child req type names < dma type names + +export SelfInvLLBank(..); +export SelfInvLLCRqStuck(..); +export mkSelfInvLLBank; + +interface SelfInvLLBank#( + numeric type lgBankNum, + numeric type childNum, + numeric type wayNum, + numeric type indexSz, + numeric type tagSz, + numeric type cRqNum, // including DMA req + type cRqIdT, + type dmaRqIdT +); + interface ParentCacheToChild#(cRqIdT, Bit#(TLog#(childNum))) to_child; + interface DmaServer#(dmaRqIdT) dma; + interface MemFifoClient#(LdMemRqId#(Bit#(TLog#(cRqNum))), void) to_mem; + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(SelfInvLLCRqStuck#(childNum, cRqIdT, dmaRqIdT)) cRqStuck; + // performance + method Action setPerfStatus(Bool stats); + method Data getPerfData(LLCPerfType t); +endinterface + +typedef struct { + LLRqId#(cRqIdT, dmaRqIdT) id; + Addr addr; + Msi fromState; + Msi toState; + Bit#(TLog#(childNum)) child; + LLCRqState state; + Bool waitP; + SelfInvDirPend#(Bit#(TLog#(childNum))) dirPend; +} SelfInvLLCRqStuck#(numeric type childNum, type cRqIdT, type dmaRqIdT) deriving(Bits, Eq, FShow); + +typedef struct { + cRqIdT cRqId; + Msi toState; +} LLRsInfo#(type cRqIdT) deriving(Bits, Eq, FShow); + +// to mem info +typedef enum { + Ld, // read only by child req or dma req + DmaWr, // dma write only + RepLd // first write replaced line then load new line (for child req) +} ToMemType deriving(Bits, Eq, FShow); + +typedef struct { + mshrIdxT mshrIdx; + ToMemType t; +} ToMemInfo#(type mshrIdxT) deriving(Bits, Eq, FShow); + +// enum for source of cRq +typedef enum {Child, Dma} LLCRqSrc deriving(Bits, Eq, FShow); + +module mkSelfInvLLBank#( + module#(LLCRqMshr#(cRqNum, wayT, tagT, SelfInvDirPend#(Bit#(TLog#(childNum))), cRqT)) mkLLMshr, + module#(SelfInvLLPipe#(lgBankNum, childNum, wayNum, indexT, tagT, cRqIndexT)) mkLLPipeline +)( + SelfInvLLBank#(lgBankNum, childNum, wayNum, indexSz, tagSz, cRqNum, cRqIdT, dmaRqIdT) +) provisos( + Alias#(childT, Bit#(TLog#(childNum))), + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(dirT, SelfInvDir#(childT)), + Alias#(dirPendT, SelfInvDirPend#(childT)), + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIndexT, Bit#(TLog#(cRqNum))), + Alias#(cacheOwnerT, Maybe#(CRqOwner#(cRqIndexT))), + Alias#(cacheInfoT, CacheInfo#(tagT, Msi, dirT, cacheOwnerT, void)), + Alias#(ramDataT, RamData#(tagT, Msi, dirT, cacheOwnerT, void, Line)), + Alias#(cRqFromCT, CRqMsg#(cRqIdT, childT)), + Alias#(cRsFromCT, CRsMsg#(childT)), + Alias#(pRqRsToCT, PRqRsMsg#(cRqIdT, childT)), + Alias#(dmaRqT, DmaRq#(dmaRqIdT)), + Alias#(dmaRsT, DmaRs#(dmaRqIdT)), + Alias#(ldMemRqIdT, LdMemRqId#(cRqIndexT)), + Alias#(memRsT, MemRsMsg#(ldMemRqIdT, void)), + Alias#(toMemT, ToMemMsg#(ldMemRqIdT, void)), + Alias#(toMemInfoT, ToMemInfo#(cRqIndexT)), + Alias#(cRqT, LLRq#(cRqIdT, dmaRqIdT, childT)), + Alias#(cRqSlotT, LLCRqSlot#(wayT, tagT, dirPendT)), // cRq MSHR slot + Alias#(llCmdT, SelfInvLLCmd#(childT, cRqIndexT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, dirT, cacheOwnerT, void, RandRepInfo, Line, llCmdT)), + // requirements + Bits#(cRqIdT, _cRqIdSz), + Bits#(dmaRqIdT, _dmaRqIdSz), + FShow#(cRqIdT), + FShow#(dmaRqIdT), + Add#(tagSz, a__, AddrSz), + // make sure: cRqNum <= wayNum + Add#(cRqNum, b__, wayNum) +); + + LLCRqMshr#(cRqNum, wayT, tagT, dirPendT, cRqT) cRqMshr <- mkLLMshr; + + SelfInvLLPipe#(lgBankNum, childNum, wayNum, indexT, tagT, cRqIndexT) pipeline <- mkLLPipeline; + + Fifo#(2, cRqFromCT) rqFromCQ <- mkCFFifo; + Fifo#(2, cRsFromCT) rsFromCQ <- mkCFFifo; + Fifo#(2, pRqRsToCT) toCQ <- mkCFFifo; + + Fifo#(2, dmaRqT) rqFromDmaQ <- mkCFFifo; + Fifo#(2, dmaRsT) rsLdToDmaQ <- mkCFFifo; + Fifo#(2, dmaRqIdT) rsStToDmaQ <- mkCFFifo; + + Fifo#(2, toMemT) toMQ <- mkCFFifo; + Fifo#(2, memRsT) rsFromMQ <- mkCFFifo; + + // mshr index of load or write to memory, all mem accesses are ordered here + FIFO#(toMemInfoT) toMInfoQ <- mkSizedFIFO(valueOf(cRqNum)); + // mshr index of req that is waken up when replacement is done + Fifo#(cRqNum, cRqIndexT) cRqRetryIndexQ <- mkCFFifo; + // mshr index of upgrade resp to child + Fifo#(cRqNum, LLRsInfo#(cRqIndexT)) rsToCIndexQ <- mkCFFifo; + // mshr index of resp to dma (merge 3 FIFOs for each enq places) + FIFO#(cRqIndexT) rsLdToDmaIndexQ <- mkSizedFIFO(valueof(cRqNum)); + FIFO#(cRqIndexT) rsStToDmaIndexQ <- mkSizedFIFO(valueof(cRqNum)); + FIFO#(cRqIndexT) rsLdToDmaIndexQ_mRsDeq <- mkFIFO; + FIFO#(cRqIndexT) rsStToDmaIndexQ_sendToM <- mkFIFO; + FIFO#(cRqIndexT) rsLdToDmaIndexQ_pipelineResp <- mkFIFO; + FIFO#(cRqIndexT) rsStToDmaIndexQ_pipelineResp <- mkFIFO; + +`ifdef DEBUG_DMA + // these FIFOs are enqueued when DMA req really takes effect + // FIFOs has 0 cycle latency to match L1Bank resp latency + Fifo#(1, dmaRqIdT) dmaWrMissQ <- mkBypassFifo; + Fifo#(1, dmaRqIdT) dmaWrHitQ <- mkBypassFifo; + Fifo#(1, dmaRqIdT) dmaRdMissQ <- mkBypassFifo; + Fifo#(1, dmaRqIdT) dmaRdHitQ <- mkBypassFifo; +`endif + + // performance +`ifdef PERF_COUNT + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) dmaMemLdCnt <- mkCount(0); + Count#(Data) dmaMemLdLat <- mkCount(0); + Count#(Data) normalMemLdCnt <- mkCount(0); + Count#(Data) normalMemLdLat <- mkCount(0); + Count#(Data) mshrBlocks <- mkCount(0); + Count#(Data) downRespCnt <- mkCount(0); + Count#(Data) downRespDataCnt <- mkCount(0); + Count#(Data) downReqCnt <- mkCount(0); + Count#(Data) upRespCnt <- mkCount(0); + Count#(Data) upRespDataCnt <- mkCount(0); + Count#(Data) dmaLdReqCnt <- mkCount(0); + Count#(Data) dmaStReqCnt <- mkCount(0); + + LatencyTimer#(cRqNum, 10) latTimer <- mkLatencyTimer; // max 1K cycle latency + + function Action incrMissCnt(cRqIndexT idx, Bool isDma); + action + let lat <- latTimer.done(idx); + if(doStats) begin + if(isDma) begin + dmaMemLdCnt.incr(1); + dmaMemLdLat.incr(zeroExtend(lat)); + end + else begin + normalMemLdCnt.incr(1); + normalMemLdLat.incr(zeroExtend(lat)); + end + end + endaction + endfunction +`endif + + function tagT getTag(Addr a) = truncateLSB(a); + + function cRqIdT getIdFromC(LLRqId#(cRqIdT, dmaRqIdT) id); + if(id matches tagged Child .i) begin + return i; + end + else begin + return ?; + end + endfunction + + function dmaRqIdT getIdFromDma(LLRqId#(cRqIdT, dmaRqIdT) id); + if(id matches tagged Dma .i) begin + return i; + end + else begin + return ?; + end + endfunction + + function Bool isRqFromC(LLRqId#(cRqIdT, dmaRqIdT) id); + return id matches tagged Child .i ? True : False; + endfunction + + function Bool isRqFromDma(LLRqId#(cRqIdT, dmaRqIdT) id); + return id matches tagged Dma .i ? True : False; + endfunction + + // merge ld resp index to DMA FIFO + rule mergeRsLdToDmaIndexQ_mRsDeq; + let idx <- toGet(rsLdToDmaIndexQ_mRsDeq).get; + rsLdToDmaIndexQ.enq(idx); + endrule + (* descending_urgency = "mergeRsLdToDmaIndexQ_pipelineResp, mergeRsLdToDmaIndexQ_mRsDeq" *) + rule mergeRsLdToDmaIndexQ_pipelineResp; + let idx <- toGet(rsLdToDmaIndexQ_pipelineResp).get; + rsLdToDmaIndexQ.enq(idx); + endrule + + // merge st resp index to DMA FIFO + rule mergeRsStToDmaIndexQ_sendToM; + let idx <- toGet(rsStToDmaIndexQ_sendToM).get; + rsStToDmaIndexQ.enq(idx); + endrule + (* descending_urgency = "mergeRsStToDmaIndexQ_pipelineResp, mergeRsStToDmaIndexQ_sendToM" *) + rule mergeRsStToDmaIndexQ_pipelineResp; + let idx <- toGet(rsStToDmaIndexQ_pipelineResp).get; + rsStToDmaIndexQ.enq(idx); + endrule + + // send retrying cRq to pipeline + rule cRqTransfer_retry(cRqRetryIndexQ.notEmpty); + cRqRetryIndexQ.deq; + cRqIndexT n = cRqRetryIndexQ.first; + // XXX don't change MSHR entry to Init + // later cRq to same addr needs to be appended after this one + // send to pipeline + cRqT req = cRqMshr.transfer.getRq(n); + pipeline.send(CRq (SelfInvLLPipeCRqIn { + addr: req.addr, + mshrIdx: n + })); + $display("%t LL %m cRqTransfer_retry: ", $time, + fshow(n), " ; ", + fshow(req) + ); + endrule + + // round-robin for accepting new cRq from child and DMA + Reg#(LLCRqSrc) priorNewCRqSrc <- mkReg(Child); // src with priority + + function Maybe#(LLCRqSrc) newCRqSrc; + if(priorNewCRqSrc == Child && rqFromCQ.notEmpty) begin + return Valid (Child); + end + else if(priorNewCRqSrc == Dma && rqFromDmaQ.notEmpty) begin + return Valid (Dma); + end + else begin + if(rqFromCQ.notEmpty) begin + return Valid (Child); + end + else if(rqFromDmaQ.notEmpty) begin + return Valid (Dma); + end + else begin + return Invalid; + end + end + endfunction + + function Action flipPriorNewCRqSrc; + action + priorNewCRqSrc <= priorNewCRqSrc == Dma ? Child : Dma; + endaction + endfunction + + // insert new cRq from child to MSHR and send to pipeline + rule cRqTransfer_new_child(!cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Child)); + rqFromCQ.deq; + cRqFromCT r = rqFromCQ.first; + cRqT cRq = LLRq { + addr: r.addr, + fromState: r.fromState, + toState: r.toState, + canUpToE: r.canUpToE, + child: r.child, + byteEn: ?, + id: Child (r.id) + }; + // setup new MSHR entry + cRqIndexT n <- cRqMshr.transfer.getEmptyEntryInit(cRq, Invalid); + // send to pipeline + pipeline.send(CRq (SelfInvLLPipeCRqIn { + addr: cRq.addr, + mshrIdx: n + })); + // change round robin + flipPriorNewCRqSrc; + $display("%t LL %m cRqTransfer_new_child: ", $time, + fshow(n), " ; ", + fshow(r), " ; ", + fshow(cRq) + ); + endrule + +`ifdef PERF_COUNT + // perf stats: insert new cRq fails because of full MSHR + rule cRqTransfer_new_child_block( + !cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Child) && doStats + ); + cRqFromCT r = rqFromCQ.first; + cRqT cRq = LLRq { + addr: r.addr, + fromState: r.fromState, + toState: r.toState, + canUpToE: r.canUpToE, + child: r.child, + byteEn: ?, + id: Child (r.id) + }; + if(!cRqMshr.transfer.hasEmptyEntry(cRq)) begin + mshrBlocks.incr(1); + end + endrule +`endif + + // insert new cRq from DMA to MSHR and send to pipeline + rule cRqTransfer_new_dma(!cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Dma)); + rqFromDmaQ.deq; + dmaRqT r = rqFromDmaQ.first; + Bool write = r.byteEn != replicate(False); + cRqT cRq = LLRq { + addr: r.addr, + fromState: I, + toState: write ? M : S, // later on we use toState to distinguish DMA write vs. read + canUpToE: False, // DMA should not go to E + child: ?, + byteEn: r.byteEn, + id: Dma (r.id) + }; + // setup new MSHR entry and data + cRqIndexT n <- cRqMshr.transfer.getEmptyEntryInit(cRq, write ? Valid (r.data) : Invalid); + // send to pipeline + pipeline.send(CRq (SelfInvLLPipeCRqIn { + addr: cRq.addr, + mshrIdx: n + })); + // change round robin + flipPriorNewCRqSrc; + $display("%t LL %m cRqTransfer_new_dma: ", $time, + fshow(n), " ; ", + fshow(r), " ; ", + fshow(cRq) + ); +`ifdef PERF_COUNT + if(doStats) begin + if(write) begin + dmaStReqCnt.incr(1); + end + else begin + dmaLdReqCnt.incr(1); + end + end +`endif + endrule + +`ifdef PERF_COUNT + // perf stats: insert new cRq fails because of full MSHR + rule cRqTransfer_new_dma_block( + !cRqRetryIndexQ.notEmpty && newCRqSrc == Valid (Dma) && doStats + ); + dmaRqT r = rqFromDmaQ.first; + Bool write = r.byteEn != replicate(False); + cRqT cRq = LLRq { + addr: r.addr, + fromState: I, + toState: write ? M : S, + canUpToE: False, + child: ?, + byteEn: r.byteEn, + id: Dma (r.id) + }; + if(!cRqMshr.transfer.hasEmptyEntry(cRq)) begin + mshrBlocks.incr(1); + end + endrule +`endif + + // send downgrade resp from child to pipeline + rule cRsTransfer; + rsFromCQ.deq; + cRsFromCT cRs = rsFromCQ.first; + pipeline.send(CRs (cRs)); + $display("%t LL %m cRsTransfer: ", $time, fshow(cRs)); +`ifdef PERF_COUNT + if(doStats) begin + downRespCnt.incr(1); + if(isValid(cRs.data)) begin + downRespDataCnt.incr(1); + end + end +`endif + endrule + + // mem resp for child req, will refill cache, send it to pipeline + (* descending_urgency = "mRsTransfer, cRsTransfer, cRqTransfer_retry, cRqTransfer_new_child, cRqTransfer_new_dma" *) +`ifdef PERF_COUNT + // stop mshr block stats when other higher priority req is being sent to + // pipeline + (* preempts = "mRsTransfer, cRqTransfer_new_child_block" *) + (* preempts = "mRsTransfer, cRqTransfer_new_dma_block" *) + (* preempts = "cRsTransfer, cRqTransfer_new_child_block" *) + (* preempts = "cRsTransfer, cRqTransfer_new_dma_block" *) +`endif + rule mRsTransfer(rsFromMQ.first.id.refill); + // get mem resp cRq index & data + rsFromMQ.deq; + memRsT mRs = rsFromMQ.first; + cRqIndexT n = mRs.id.mshrIdx; + Line respData = mRs.data; + // get correspond cRq & slot + cRqT cRq = cRqMshr.transfer.getRq(n); + cRqSlotT cSlot = cRqMshr.transfer.getSlot(n); + doAssert(isRqFromC(cRq.id), "refill mem resp must be for child req"); + // send to pipeline + pipeline.send(MRs (SelfInvLLPipeMRsIn { + addr: cRq.addr, + toState: cRq.toState == M ? M : E, // set upgrade state + data: respData, + way: cSlot.way + })); + $display("%t LL %m mRsTransfer: ", $time, + fshow(mRs), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; " + ); +`ifdef PERF_COUNT + // performance counter: normal miss lat and cnt + incrMissCnt(n, False); +`endif + endrule + + // this mem resp is just for a DMA req, won't go into pipeline to refill cache + rule mRsDeq_nonRefill(!rsFromMQ.first.id.refill); + rsFromMQ.deq; + memRsT mRs = rsFromMQ.first; + $display("%t LL %m mRsDeq_nonRefill: ", $time, fshow(mRs)); + // save data into cRq mshr & send to DMA resp IndexQ + cRqMshr.mRsDeq.setData(mRs.id.mshrIdx, Valid (mRs.data)); + rsLdToDmaIndexQ_mRsDeq.enq(mRs.id.mshrIdx); +`ifdef PERF_COUNT + // performance counter: dma miss lat and cnt + incrMissCnt(mRs.id.mshrIdx, True); +`endif + endrule + + // send rd/wr to mem + // when sending to mem, we may first write back replaced line then load new line + // this reg records when we should to the load new line for this case + Reg#(Bool) doLdAfterReplace <- mkReg(False); + rule sendToM; + ToMemType t = toMInfoQ.first.t; + cRqIndexT n = toMInfoQ.first.mshrIdx; + cRqT cRq = cRqMshr.sendToM.getRq(n); + cRqSlotT cSlot = cRqMshr.sendToM.getSlot(n); + Maybe#(Line) data = cRqMshr.sendToM.getData(n); + $display("%t LL %m sendToM: ", $time, + fshow(toMInfoQ.first), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; ", + fshow(data), " ; ", + fshow(doLdAfterReplace) + ); + // take actions according to type + if(t == Ld) begin + // only load mem: can be child or dma req + toMemT msg = Ld (LdMemRq { + addr: cRq.addr, + child: ?, + id: LdMemRqId { + // child rq needs refill cache line, dma rq does not + refill: isRqFromC(cRq.id), + mshrIdx: n + } + }); + toMQ.enq(msg); + toMInfoQ.deq; // deq info + $display("%t LL %m sendToM: load only: ", $time, fshow(msg)); + doAssert(!isValid(data), "cannot have data"); + doAssert(!doLdAfterReplace, "doLdAfterReplace should be false"); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif +`ifdef DEBUG_DMA + if(cRq.id matches tagged Dma .dmaId) begin + dmaRdMissQ.enq(dmaId); // DMA read takes effect + end +`endif + end + else if(t == DmaWr) begin + // only write mem: must be dma req + toMemT msg = Wb (WbMemRs { + addr: cRq.addr, + byteEn: cRq.byteEn, + data: validValue(data) + }); + toMQ.enq(msg); + toMInfoQ.deq; // deq info + // dma write can be resp (i.e. mshr entry can be released) + rsStToDmaIndexQ_sendToM.enq(n); + $display("%t LL %m sendToM: dma write: ", $time, fshow(msg)); + doAssert(isRqFromDma(cRq.id), "must be dma write"); + doAssert(isValid(data), "dma write must have data"); + doAssert(!doLdAfterReplace, "doLdAfterReplace should be false"); +`ifdef DEBUG_DMA + dmaWrMissQ.enq(getIdFromDma(cRq.id)); // DMA write takes effect +`endif + end + else if(t == RepLd) begin + // write back replaced line then load, must be child req + if(doLdAfterReplace) begin // do load part + toMemT msg = Ld (LdMemRq { + addr: cRq.addr, + child: ?, + id: LdMemRqId { + refill: True, + mshrIdx: n + } + }); + toMQ.enq(msg); + // whole thing is done, reset bit and deq info + toMInfoQ.deq; + doLdAfterReplace <= False; + $display("%t LL %m sendToM: rep then ld: ld: ", $time, fshow(msg)); +`ifdef PERF_COUNT + // performance counter: start miss timer + latTimer.start(n); +`endif + end + else begin // do write back part + toMemT msg = Wb (WbMemRs { + addr: {cSlot.repTag, truncate(cRq.addr)}, + byteEn: replicate(True), + data: validValue(data) + }); + toMQ.enq(msg); + // don't deq info, do ld next time + doLdAfterReplace <= True; + $display("%t LL %m sendToM: rep then ld: rep: ", $time, fshow(msg)); + end + doAssert(isRqFromC(cRq.id), "must be child req"); + doAssert(isValid(data), "replace must have data"); + end + else begin + doAssert(False, "unknown to mem type"); + end + endrule + + // send DMA resp + rule sendRsLdToDma; + rsLdToDmaIndexQ.deq; + cRqIndexT n = rsLdToDmaIndexQ.first; + cRqT cRq = cRqMshr.sendRsToDmaC.getRq(n); + Maybe#(Line) data = cRqMshr.sendRsToDmaC.getData(n); + $display("%t LL %m sendRsToDma: Ld: ", $time, + fshow(n), " ; ", + fshow(cRq), " ; ", + fshow(data) + ); + doAssert(isValid(data), "dma read req always has valid data"); + // send DMA resp + doAssert(isRqFromDma(cRq.id), "cRq should be DMA req"); + doAssert(cRq.byteEn == replicate(False) && cRq.toState == S, + "cRq should be DMA read" + ); + dmaRqIdT dmaId = getIdFromDma(cRq.id); + rsLdToDmaQ.enq(DmaRs { + data: validValue(data), + id: dmaId + }); + // release MSHR entry + cRqMshr.sendRsToDmaC.releaseEntry(n); + endrule + + rule sendRsStToDma; + rsStToDmaIndexQ.deq; + cRqIndexT n = rsStToDmaIndexQ.first; + cRqT cRq = cRqMshr.sendRsToDmaC.getRq(n); + $display("%t LL %m sendRsToDma: St: ", $time, + fshow(n), " ; ", + fshow(cRq) + ); + // send DMA resp + doAssert(isRqFromDma(cRq.id), "cRq should be DMA req"); + doAssert(cRq.byteEn != replicate(False) && cRq.toState == M, + "cRq should be DMA write" + ); + dmaRqIdT dmaId = getIdFromDma(cRq.id); + rsStToDmaQ.enq(dmaId); + // release MSHR entry + cRqMshr.sendRsToDmaC.releaseEntry(n); + endrule + + // send upgrade resp to child + rule sendRsToC(rsToCIndexQ.notEmpty); + // send upgrade resp to child + rsToCIndexQ.deq; + cRqIndexT n = rsToCIndexQ.first.cRqId; + Msi toState = rsToCIndexQ.first.toState; + cRqT cRq = cRqMshr.sendRsToDmaC.getRq(n); + Maybe#(Line) rsData = cRqMshr.sendRsToDmaC.getData(n); + $display("%t LL %m sendRsToC: ", $time, + fshow(n), " ; ", + fshow(cRq), " ; ", + fshow(rsData), " ; ", + fshow(toState) + ); + // send resp to child + doAssert(isRqFromC(cRq.id), "cRq should be child req"); + cRqIdT cRqId = getIdFromC(cRq.id); + toCQ.enq(PRs (PRsMsg { + addr: cRq.addr, + toState: toState, // we may upgrade to E for req S, don't use toState in cRq + child: cRq.child, + data: rsData, + id: cRqId + })); + // release MSHR entry + cRqMshr.sendRsToDmaC.releaseEntry(n); +`ifdef PERF_COUNT + if(doStats) begin + upRespCnt.incr(1); + if(isValid(rsData)) begin + upRespDataCnt.incr(1); + end + end +`endif + endrule + + // send downgrade req to child + // round robin select cRq to downgrade child + // but downgrade must wait for all upgrade resp + Reg#(cRqIndexT) whichCRq <- mkReg(0); + + // we don't perform sending downgrade to child for a cRq processing by pipelineResp_cRs + // otherwise atomicity issue may arise + // for safety, we check cRq processed by all pipelineResp_xxx rules + // this won't create unnecessary stalls + // (because the cRq by pipelineResp won't match the one chosen for child downgrade) + function Bool notPipelineResp(cRqIndexT n); + if(pipeline.notEmpty) begin + // use unguarded version for pipeline.first + // (if use guarded version, compiler must lift guard correctly) + llCmdT cmd = pipeline.unguard_first.cmd; + cacheOwnerT owner = pipeline.unguard_first.ram.info.owner; + Bool ownerMatch = isValid(owner) ? fromMaybe(?, owner).mshrIdx == n : False; + return (case(cmd) matches + tagged LLCRq .m: return m != n; + tagged LLMRs: return !ownerMatch; + tagged LLCRs .c: return !ownerMatch; + default: return True; + endcase); + end + else begin + return True; + end + endfunction + + rule sendRqToC(!rsToCIndexQ.notEmpty); + Maybe#(cRqIndexT) cRqNeedDown = cRqMshr.sendRqToC.searchNeedRqChild(Valid (whichCRq)); + // XXX must add this into guard + // otherwise this rule will block pipelineResp rule from firing forever + check(isValid(cRqNeedDown)); + + cRqIndexT n = fromMaybe(?, cRqNeedDown); + // XXX stall if cRq n is processed in pipelineResp + check(notPipelineResp(n)); + + cRqT cRq = cRqMshr.sendRqToC.getRq(n); + cRqSlotT cSlot = cRqMshr.sendRqToC.getSlot(n); + LLCRqState cState = cRqMshr.sendRqToC.getState(n); + doAssert(cState == WaitSt || cState == WaitOldTag, + "only WaitSt and WaitOldTag needs req child" + ); + // find the child to downgrade + childT child = ?; + if(cSlot.dirPend matches tagged ToSend .c) begin + child = c; + end + else begin + doAssert(False, "should need to downgrade"); + end + // send downgrade req: addr depends on state + // either be cRq addr or replacing addr + // we always downgrade to S + Addr rqAddr = cState == WaitSt ? cRq.addr : {cSlot.repTag, truncate(cRq.addr)}; + pRqRsToCT req = PRq (PRqMsg { + addr: rqAddr, + toState: S, + child: child + }); + toCQ.enq(req); + // change dirPend + cRqMshr.sendRqToC.setSlot(n, LLCRqSlot { // keep cState the same + way: cSlot.way, + repTag: cSlot.repTag, + waitP: cSlot.waitP, + dirPend: Waiting (child) + }); + $display("%t LL %m sendRqToC: ", $time, + fshow(n), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; ", + fshow(cState), " ; ", + fshow(req) + ); + // change round-robin + whichCRq <= whichCRq == fromInteger(valueOf(cRqNum) - 1) ? 0 : whichCRq + 1; +`ifdef PERF_COUNT + if(doStats) begin + downReqCnt.incr(1); + end +`endif + endrule + + // Final stage of pipeline: process all kinds of msg + pipeOutT pipeOut = pipeline.first; + ramDataT ram = pipeOut.ram; + // select getCSlot, getRepSucc from cRqMshr + cRqIndexT pipeOutCRqIdx = (case(pipeOut.cmd) matches + tagged LLCRq .n: return n; + default: return ram.info.owner matches tagged Valid .cOwner ? cOwner.mshrIdx : 0; // LLMRs LLCRs + endcase); + cRqSlotT pipeOutCSlot = cRqMshr.pipelineResp.getSlot(pipeOutCRqIdx); + Maybe#(cRqIndexT) pipeOutRepSucc = cRqMshr.pipelineResp.getRepSucc(pipeOutCRqIdx); + Maybe#(cRqIndexT) pipeOutAddrSucc = cRqMshr.pipelineResp.getAddrSucc(pipeOutCRqIdx); + LLCRqState pipeOutCState = cRqMshr.pipelineResp.getState(pipeOutCRqIdx); + cRqT pipeOutCRq = cRqMshr.pipelineResp.getRq(pipeOutCRqIdx); + + // function to process cRq hit (MSHR slot may have garbage) + function Action cRqFromCHit(cRqIndexT n, cRqT cRq); + action + $display("%t LL %m pipelineResp: cRq from child Hit func: ", $time, + fshow(n), " ; ", + fshow(cRq) + ); + doAssert(n == pipeOutCRqIdx, "must match pipe out cRq idx"); + doAssert(isRqFromC(cRq.id), "should be cRq from child"); + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + // this function is called by mRs, cRq, cRs + // tag should match even for mRs, because + // tag has been written into cache before sending req to parent + ("cRqHit but tag or cs incorrect") + ); + // decide upgrade state. Since we don't track S copies, we can't give E + // for a req to S. + Msi toState = cRq.toState; + // update slot, data & send to indexQ + // decide data validity using dir (which is more up to date than fromState) + rsToCIndexQ.enq(LLRsInfo { + cRqId: n, + toState: toState + }); + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); // we no longer need slot info + cRqMshr.pipelineResp.setData(n, Valid (ram.line)); // always resp with data + // update child dir + dirT newDir = ram.info.dir; + if(toState >= E) begin + newDir.exChild = cRq.child; + newDir.state = toState; + end + else begin + doAssert(newDir.state == I, "should not have exclusive child"); + end + // update cs (may have E -> M) + Msi newCs = ram.info.cs; + if(toState == M) begin + newCs = M; + end + // deq pipeline or swap in successor + Maybe#(cRqIndexT) succ = pipeOutAddrSucc; + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // should be the same as original tag + cs: newCs, + dir: newDir, + owner: (case(succ) matches // pass owner to successor + tagged Valid .m: return Valid (CRqOwner { + mshrIdx: m, + replacing: False // succesor cannot replace + }); + default: return Invalid; + endcase), + other: ? + }, + line: ram.line // use line in ram + }, True); // hit, so update rep info + endaction + endfunction + + // function to process DMA req hit (MSHR slot may have garbage) + function Action cRqFromDmaHit(cRqIndexT n, cRqT cRq); + action + $display("%t LL %m pipelineResp: cRq from dma Hit func: ", $time, + fshow(n), " ; ", + fshow(cRq) + ); + doAssert(n == pipeOutCRqIdx, "must match pipe out cRq idx"); + doAssert(isRqFromDma(cRq.id), "should be cRq from dma"); + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + "cRqHit but tag or cs incorrect" + ); + doAssert((cRq.byteEn != replicate(False)) == (cRq.toState == M), "toState should match byteEn"); + // update cs (may have E -> M) + Msi newCs = ram.info.cs; + if(cRq.toState == M) begin + newCs = M; + end + // update cache line + Maybe#(Line) wrData = cRqMshr.pipelineResp.getData(n); + doAssert(isValid(wrData) == (cRq.byteEn != replicate(False)), + "dma write should carry valid data" + ); + Line newLine = getUpdatedLine(ram.line, cRq.byteEn, validValue(wrData)); + // deq pipeline or swap in successor + Maybe#(cRqIndexT) succ = pipeOutAddrSucc; + pipeline.deqWrite(succ, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // should be the same as original tag + cs: newCs, + dir: ram.info.dir, // dir does not change + owner: (case(succ) matches // pass owner to successor + tagged Valid .m: return Valid (CRqOwner { + mshrIdx: m, + replacing: False // succesor cannot replace + }); + default: return Invalid; + endcase), + other: ? + }, + line: newLine // use new line + }, True); // hit, so update rep info + // update slot, data & send to indexQ + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); // we no longer need slot info + cRqMshr.pipelineResp.setData(n, Valid (ram.line)); // save the orig cache line + if(cRq.toState == M) begin + rsStToDmaIndexQ_pipelineResp.enq(n); + end + else begin + rsLdToDmaIndexQ_pipelineResp.enq(n); + end +`ifdef DEBUG_DMA + // DMA req takes effect + dmaRqIdT dmaId = getIdFromDma(cRq.id); + if(cRq.toState == M) begin + dmaWrHitQ.enq(dmaId); + end + else begin + dmaRdHitQ.enq(dmaId); + end +`endif + endaction + endfunction + + // function to directly evict a cache line by a cRq from child (replacement) + function Action cRqFromCEvict(cRqIndexT n, cRqT cRq, Maybe#(cRqIndexT) repSucc); + action + doAssert(isRqFromC(cRq.id), "only cRq from child can evict a line"); + doAssert(ram.info.dir.state == I && ram.info.cs > I, + "only evict valid line which has no children" + ); + // write back (only when line is M, otherwise silent drop) + // and req memory for new data (because cs is I now) + Bool needWB = ram.info.cs == M; + toMInfoQ.enq(ToMemInfo{ + mshrIdx: n, + t: needWB ? RepLd : Ld + }); + // update MSHR + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, LLCRqSlot { + way: pipeOut.way, // use way from pipeline + repTag: ram.info.tag, // record old tag for replacement to mem + waitP: True, // waiting for mem resp + dirPend: Invalid // no exclusive child + }); + cRqMshr.pipelineResp.setData(n, needWB ? Valid (ram.line) : Invalid); // replacement needs data + // wake up successor which depends on this replacement + if(repSucc matches tagged Valid .m) begin + cRqRetryIndexQ.enq(m); + end + // deq pipe & change RAM + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // set to new tag (old tag is replaced) + cs: I, + dir: SelfInvDir {exChild: ?, state: I}, + owner: Valid (CRqOwner { + mshrIdx: n, // owner is current cRq + replacing: False // replacement is done right now + }), + other: ? + }, + line: ? // data is no longer used + }, False); + endaction + endfunction + + // handle cRq + rule pipelineResp_cRq(pipeOut.cmd matches tagged LLCRq .n); + $display("%t LL %m pipelineResp: ", $time, fshow(pipeOut)); + // cs and dir in ram have been merged with modification caused by mRs/cRs cmd + + cRqT cRq = pipeOutCRq; + $display("%t LL %m pipelineResp: cRq: ", $time, fshow(n), " ; ", fshow(cRq)); + + // find end of dependency chain + Maybe#(cRqIndexT) cRqEOC = cRqMshr.pipelineResp.searchEndOfChain(cRq.addr); + + // function to check whether children needs downgrade for req from child (miss no replace) + function dirPendT getDirPendNonCompatForChild; + if(ram.info.dir.state >= E) begin + if(cRq.child == ram.info.dir.exChild) begin + return Waiting (ram.info.dir.exChild); + end + else begin + return ToSend (ram.info.dir.exChild); + end + end + else begin + return Invalid; + end + endfunction + + // function to check whether children needs downgrade for DMA req (miss by children state) + function dirPendT getDirPendNonCompatForDma; + if(ram.info.dir.state >= E) begin + return ToSend (ram.info.dir.exChild); + end + else begin + return Invalid; + end + endfunction + + // function to check whether children needs downgrade (miss with replace) + function dirPendT getDirPendReplace; + if(ram.info.dir.state >= E) begin + return ToSend (ram.info.dir.exChild); + end + else begin + return Invalid; + end + endfunction + + // function to process cRq from child miss without replacement (MSHR slot may have garbage) + function Action cRqFromCMissNoReplacement(dirPendT dirPend); + action + doAssert(isRqFromC(cRq.id), "should be cRq from child"); + // it is impossible in LLC to have slot.waitP == True in this function + // because there is no pRq in LLC to interrupt a cRq + cRqSlotT cSlot = pipeOutCSlot; + doAssert(!cSlot.waitP, "waitP must be false"); + // in LLC, we req memory only when cur cs is I + if(ram.info.cs == I) begin + toMInfoQ.enq(ToMemInfo{ + mshrIdx: n, + t: Ld + }); + doAssert(ram.info.dir.state == I, "dir should not have exclusive child"); + end + // update mshr (data field is irrelevant, should be already invalid) + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, LLCRqSlot { + way: pipeOut.way, // use way from pipeline + waitP: ram.info.cs == I, + repTag: ?, // no replacement + dirPend: dirPend + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), // tag may be garbage if cs == I + cs: ram.info.cs, + dir: ram.info.dir, + owner: Valid (CRqOwner {mshrIdx: n, replacing: False}), // owner is req itself + other: ? + }, + line: ram.line + }, False); + endaction + endfunction + + // function to process cRq from dma miss by children states (MSHR slot may have garbage) + function Action cRqFromDmaMissByChildren(dirPendT dirPend); + action + doAssert(isRqFromDma(cRq.id), "should be cRq from dma"); + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + "tag match and cs > I" + ); + // it is impossible in LLC to have slot.waitP == True in this function + // because there is no pRq in LLC to interrupt a cRq + cRqSlotT cSlot = pipeOutCSlot; + doAssert(!cSlot.waitP, "waitP must be false"); + // update mshr + cRqMshr.pipelineResp.setStateSlot(n, WaitSt, LLCRqSlot { + way: pipeOut.way, // use way from pipeline + waitP: False, + repTag: ?, // no replacement + dirPend: dirPend + }); + // deq pipeline & set owner, tag + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: getTag(cRq.addr), + cs: ram.info.cs, + dir: ram.info.dir, + owner: Valid (CRqOwner {mshrIdx: n, replacing: False}), // owner is req itself + other: ? + }, + line: ram.line + }, False); + endaction + endfunction + + // function to do replacement for cRq from child + function Action cRqFromCReplacement(dirPendT dirPend); + action + doAssert(isRqFromC(cRq.id), "should be cRq from child"); + if(dirPend == Invalid) begin + // directly evict the line + // this cRq cannot have repSucc, since it has not occupied the line + Maybe#(cRqIndexT) repSucc = pipeOutRepSucc; + doAssert(!isValid(repSucc), "cannot have rep succ"); + cRqFromCEvict(n, cRq, Invalid); + end + else begin + // wait child to downgrade + pipeline.deqWrite(Invalid, RamData { + info: CacheInfo { + tag: ram.info.tag, + cs: ram.info.cs, + dir: ram.info.dir, + owner: Valid (CRqOwner { + mshrIdx: n, + replacing: True // replacement is ongoing + }), + other: ? + }, + line: ram.line // keep data the same + }, False); + cRqMshr.pipelineResp.setStateSlot(n, WaitOldTag, LLCRqSlot { + way: pipeOut.way, + repTag: ram.info.tag, // record tag for downgrading children + waitP: False, + dirPend: dirPend + }); + end + endaction + endfunction + + // function to set cRq to Depend, and make no further change to cache + function Action cRqSetDepNoCacheChange; + action + cRqMshr.pipelineResp.setStateSlot(n, Depend, getLLCRqSlotInitVal(getSelfInvDirPendInitVal)); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + endaction + endfunction + + if(ram.info.owner matches tagged Valid .cOwner) begin + if(cOwner.mshrIdx != n) begin + // owner is another cRq, so must just go through tag match + LLCRqState cState = pipeOutCState; + doAssert(cState == Init, "owner is other, must first time go through tag match"); + // tag match must be hit (because replacement algo won't give a way with owner) + doAssert(ram.info.cs > I && ram.info.tag == getTag(cRq.addr), + ("cRq should hit in tag match") + ); + // could be two cases: + // 1. hit on same addr req + // 2. hit one cache line replaced by another req to different addr + // even in 2nd case, we may have existing req to same addr + // so first check same addr dependency + if(cRqEOC matches tagged Valid .m) begin + // add to same addr dependency + cRqMshr.pipelineResp.setAddrSucc(m, Valid (n)); + cRqSetDepNoCacheChange; + $display("%t LL %m pipelineResp: cRq: own by other cRq, same addr dep: ", $time, + fshow(cOwner), " ; ", fshow(cRqEOC) + ); + end + else begin + // must be hitting on a line being replaced + // add to rep dependency + cRqMshr.pipelineResp.setRepSucc(cOwner.mshrIdx, Valid (n)); + cRqSetDepNoCacheChange; + $display("%t LL %m pipelineResp: cRq: own by other cRq, rep dep: ", $time, + fshow(cOwner) + ); + doAssert(cOwner.replacing, "line must be replacing"); + end + end + else begin + // owner is myself, so must be swapped in + LLCRqState cState = pipeOutCState; + doAssert(cState == Depend, "owner is myself, must be swapped in"); + // tag should match, since always swapped in by cRq (which occupies the line and completes) + // so cache state must be > I + doAssert(ram.info.tag == getTag(cRq.addr) && ram.info.cs > I, + "cRq swapped in, tag must match, cs > I" + ); + // since cache state must > I, there is no replacement or req to mem (LLC non-I is hit) + // just check whether children cache are compatible + if(cRq.id matches tagged Child ._i) begin + // req from child, get dir pend + dirPendT dirPend = getDirPendNonCompatForChild; + if(dirPend == Invalid) begin + $display("%t LL %m pipelineResp: cRq from child: own by itself, hit", $time); + cRqFromCHit(n, cRq); + end + else begin + $display("%t LL %m pipelineResp: cRq from child: own by itself, miss no replace: ", $time, + fshow(dirPend) + ); + cRqFromCMissNoReplacement(dirPend); + end + end + else begin + // req from DMA, get dir pend + dirPendT dirPend = getDirPendNonCompatForDma; + if(dirPend == Invalid) begin + $display("%t LL %m pipelineResp: cRq from dma: own by itself, hit", $time); + cRqFromDmaHit(n, cRq); + end + else begin + $display("%t LL %m pipelineResp: cRq from dma: own by itself, miss by children: ", $time); + cRqFromDmaMissByChildren(dirPend); + end + end + end + end + else begin + // cache has no owner, cRq must just go through tag match + // here are two cases: + // 1. cRq in Init state, first time go through tag match + // 2. cRq in Depend state (due to rep dep, or addr dep on DMA req), waken up when replacement or DMA req is done + LLCRqState cState = pipeOutCState; + + // only check for cRqEOC to append to dependency chain when firt time go through tag match + if(cRqEOC matches tagged Valid .m &&& cState == Init) begin + $display("%t LL %m pipelineResp: cRq: no owner, depend on cRq ", $time, + fshow(cState), " ; ", + fshow(cRqEOC) + ); + cRqMshr.pipelineResp.setAddrSucc(m, Valid (n)); + cRqSetDepNoCacheChange; + end + else begin + // normal processing + if(cRq.id matches tagged Child ._i) begin + // cRq from child + if(ram.info.cs == I || ram.info.tag == getTag(cRq.addr)) begin + // No Replacement necessary, check dir (dir is not garbage even when cs is I) + dirPendT dirPend = getDirPendNonCompatForChild; + if(ram.info.cs > I && dirPend == Invalid) begin + $display("%t LL %m pipelineResp: cRq: no owner, hit", $time); + cRqFromCHit(n, cRq); + end + else begin + // line valid but miss by children, OR occupy an + // invalid line (dirPend must be Invalid in this + // case) + $display("%t LL %m pipelineResp: cRq: no owner, miss no replace: ", $time, + fshow(dirPend) + ); + cRqFromCMissNoReplacement(dirPend); + end + end + else begin + // need replacement, check dir + dirPendT dirPend = getDirPendReplace; + $display("%t LL %m pipelineResp: cRq: no owner, replace: ", $time, + fshow(dirPend) + ); + cRqFromCReplacement(dirPend); + end + end + else begin + dirPendT dirPend = getDirPendNonCompatForDma; + // cRq from DMA + if(ram.info.cs > I && ram.info.tag == getTag(cRq.addr)) begin + // hit in LLC, check dir + if(dirPend == Invalid) begin + cRqFromDmaHit(n, cRq); + end + else begin + cRqFromDmaMissByChildren(dirPend); + end + end + else begin + // miss in LLC, so req mem and req is done! + $display("%t LL %m pipelineResp: cRq from dma: no owner, miss req mem", $time); + toMInfoQ.enq(ToMemInfo { + mshrIdx: n, + t: cRq.toState == M ? DmaWr : Ld + }); + // set req to Done & deq pipeline (no change to ram) + cRqMshr.pipelineResp.setStateSlot(n, Done, ?); + pipeline.deqWrite(Invalid, pipeOut.ram, False); + // retry successor (cannot swap in since we don't have a line to occupy) + Maybe#(cRqIndexT) addrSucc = pipeOutAddrSucc; + if(addrSucc matches tagged Valid .m) begin + cRqRetryIndexQ.enq(m); + end + // since we haven't occupied any line, we cannot have repSucc) + Maybe#(cRqIndexT) repSucc = pipeOutRepSucc; + doAssert(!isValid(repSucc), "should not have any rep succ"); + end + end + end + end + endrule + + // handle mRs + rule pipelineResp_mRs(pipeOut.cmd == LLMRs); + // get cache owner + doAssert(isValid(ram.info.owner), "mRs owner must match some cRq"); + CRqOwner#(cRqIndexT) cOwner = validValue(ram.info.owner); + // process cRq + cRqT cRq = pipeOutCRq; + cRqSlotT cSlot = pipeOutCSlot; + $display("%t LL %m pipelineResp: mRs: ", $time, + fshow(cOwner), " ; ", + fshow(cRq), " ; ", + fshow(cSlot) + ); + doAssert(isRqFromC(cRq.id), "only child req gets mem resp that refills the cache"); + doAssert(ram.info.cs >= cRq.toState && ram.info.tag == getTag(cRq.addr), + "mRs must be tag match & have enough cs" + ); + doAssert(ram.info.dir.state == I, "no exclusive child"); + doAssert(!cOwner.replacing, "mRs cannot hit on replacing line"); + doAssert(cSlot.way == pipeOut.way, "mRs should hit on way in MSHR slot"); + doAssert(cSlot.waitP, "mRs should match cRq which is waiting for it"); + doAssert(cSlot.dirPend == Invalid, + "cRq that needs mRs should not have children to wait for" + ); + // cRq hits since all children are I + cRqFromCHit(cOwner.mshrIdx, cRq); + endrule + + // handle cRs + rule pipelineResp_cRs(pipeOut.cmd matches tagged LLCRs .child); + // cRs from child + // XXX CCPipe has already updated ram.info and ram.line properly, + // particularly for E->M case. + $display("%t LL %m pipelineResp: cRs: ", $time, fshow(child)); + // cs should be not I + doAssert(ram.info.cs > I, "cRs should hit on a line"); + // There cannot be exclusive child after downgrade + doAssert(ram.info.dir.state == I, "no exclusive child"); + // check owner of the line + if(ram.info.owner matches tagged Valid .cOwner) begin + cRqT cRq = pipeOutCRq; + cRqSlotT cSlot = pipeOutCSlot; + LLCRqState cState = pipeOutCState; + $display("%t LL %m pipelineResp: cRs: match cRq: ", $time, + fshow(cOwner), " ; ", + fshow(cRq), " ; ", + fshow(cSlot), " ; ", + fshow(cState) + ); + doAssert(cSlot.way == pipeOut.way, "cRs way should match MSHR slot"); + // check replacing bit + if(cOwner.replacing) begin + // replacment: only for req from child + doAssert(isRqFromC(cRq.id), "only child req do replace"); + doAssert(cState == WaitOldTag, "must be waiting for old tag"); + doAssert(!cSlot.waitP, "cannot wait for parent while replacing"); + doAssert(cSlot.repTag == ram.info.tag, "should match replacing tag"); + // Since there is no exclusive child after downgrade, dirPend + // must become invalid. So replacement is done, evict line + Maybe#(cRqIndexT) repSucc = pipeOutRepSucc; + cRqFromCEvict(cOwner.mshrIdx, cRq, repSucc); + $display("%t LL %m pipelineResp: cRs: match cRq: replace done: ", $time, + fshow(repSucc) + ); + end + else begin + // child downgrade, not replace: req can be from child or dma + doAssert(cState == WaitSt, "must be waiting for child/parent state"); + doAssert(ram.info.tag == getTag(cRq.addr), "cRq tag should match cRs hit line"); + doAssert(!cSlot.waitP, "cs > I, so cannot wait for memory"); + // Since there is no exclusive child after downgrade, dirPend + // must become invalid, and cRq hits + $display("%t LL %m pipelineResp: cRs: match cRq: hit", $time); + if(cRq.id matches tagged Child ._i) begin + cRqFromCHit(cOwner.mshrIdx, cRq); + end + else begin + cRqFromDmaHit(cOwner.mshrIdx, cRq); + end + end + end + else begin + // does not match any cRq, so just deq pipe & write ram + $display("%t LL %m pipelineResp: cRs: no owner", $time); + pipeline.deqWrite(Invalid, ram, False); + end + endrule + + interface ParentCacheToChild to_child; + interface rqFromC = toFifoEnq(rqFromCQ); + interface rsFromC = toFifoEnq(rsFromCQ); + interface toC = toFifoDeq(toCQ); + endinterface + + interface DmaServer dma; + interface memReq = toFifoEnq(rqFromDmaQ); + interface respLd = toFifoDeq(rsLdToDmaQ); + interface respSt = toFifoDeq(rsStToDmaQ); +`ifdef DEBUG_DMA + interface wrMissResp = toGet(dmaWrMissQ); + interface wrHitResp = toGet(dmaWrHitQ); + interface rdMissResp = toGet(dmaRdMissQ); + interface rdHitResp = toGet(dmaRdHitQ); +`endif + endinterface + + interface MemFifoClient to_mem; + interface toM = toFifoDeq(toMQ); + interface rsFromM = toFifoEnq(rsFromMQ); + endinterface + + interface Get cRqStuck; + method ActionValue#(SelfInvLLCRqStuck#(childNum, cRqIdT, dmaRqIdT)) get; + let s <- cRqMshr.stuck.get; + return SelfInvLLCRqStuck { + id: s.req.id, + addr: s.req.addr, + fromState: s.req.fromState, + toState: s.req.toState, + child: s.req.child, + state: s.state, + waitP: s.waitP, + dirPend: s.dirPend + }; + endmethod + endinterface + + method Action setPerfStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Data getPerfData(LLCPerfType t); + return (case(t) +`ifdef PERF_COUNT + LLCDmaMemLdCnt: dmaMemLdCnt; + LLCDmaMemLdLat: dmaMemLdLat; + LLCNormalMemLdCnt: normalMemLdCnt; + LLCNormalMemLdLat: normalMemLdLat; + LLCMshrBlockCycles: mshrBlocks; + LLCDownRespCnt: downRespCnt; + LLCDownRespDataCnt: downRespDataCnt; + LLCDownReqCnt: downReqCnt; + LLCUpRespCnt: upRespCnt; + LLCUpRespDataCnt: upRespDataCnt; + LLCDmaLdReqCnt: dmaLdReqCnt; + LLCDmaStReqCnt: dmaStReqCnt; +`endif + default: 0; + endcase); + endmethod +endmodule + +// Scheduling notes + +// cRqTransfer_retry: read req + +// cRqTransfer_new: init(write) req/state/slot, reset addrSucc/repSucc, set data + +// cRsTransfer: - + +// mRsDeq: write data + +// mRsTransfer: read req/slot/data + +// sendToM: read req/slot/data + +// sendRsToDma: read req/data, release entry (write state) + +// sendRsToC: read req/data, release entry (write state) + +// sendRqToC: +// -- associative search: read state/needReqChildVec(slot.dirPend) +// -- for selected cRq: read req/state/slot, write slot.dirPend +// -- not affected by cRqTransfer_new +// (state: Empty->Init, always not hit in search) +// -- not affected by sendRsToC/sendRsToDma +// (state: Done->Empty, always not hit in search) +// -- may be affected by pipelineResp_cRs +// so don't fire when pipelineResp operates on the same cRq + +// above rules operate on completely different cRq + +// pipelineResp_cRq: +// -- associative search for EOC: read state/req/addrSucc +// -- not affected by cRqTransfer_new +// (state: Empty->Init, always not hit in search) +// -- not affected by sendRsToC/sendRsToDma +// (state: Done->Empty, always not hit in search) +// -- not affected by sendRqToC (slot is not read in search) +// -- for the processing cRq: read req/state/data/slot/addrSucc/repSucc, write state/slot/data +// -- this cRq is different from that in cRqTransfer_new +// -- this cRq is different from that in mRsDeq_refill +// (if need mRs, then LLC is I, nothing other than mRs can wakeup cRq) +// -- this cRq is different from that in mRsDeq_nonRefill +// (when mRs for DMA req comes, it is already in Done state) +// -- this cRq is different from that in sendRsToC/sendRsToDma +// -- this cRq is different from that in sendRqToC (slot.dirPend not set yet) +// -- for some older cRq: write addrSucc/repSucc, differnt from cRqTransfer_new + +// pipelineResp_mRs: +// -- process cRq hit: read req/slot, write state/slot/data +// -- this cRq is different from that in cRqTransfer_new +// -- this cRq is different from that in mRsDeq +// -- this cRq is different from that in sendRsToC/sendRsToDma +// -- this cRq is different from that in sendRqToC (child all I) + +// pipelineResp_cRs: +// -- process cRs for a cRq: read req/state/slot/data, write state/slot/data +// -- this cRq is different from that in cRqTransfer_new +// -- this cRq is different from that in mRsDeq +// -- this cRq is different from that in sendRsToC/sendRsToDma +// -- XXX this cRq may be the same as that in sendRqToC!!! + diff --git a/src_Core/RISCY_OOO/coherence/src/SelfInvLLPipe.bsv b/src_Core/RISCY_OOO/coherence/src/SelfInvLLPipe.bsv new file mode 100644 index 0000000..3e57569 --- /dev/null +++ b/src_Core/RISCY_OOO/coherence/src/SelfInvLLPipe.bsv @@ -0,0 +1,366 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import FShow::*; +import Types::*; +import CCTypes::*; +import CCPipe::*; +import RWBramCore::*; +import RandomReplace::*; + +// type param ordering: bank < child < way < index < tag < cRq + +// input types +typedef struct { + Addr addr; + cRqIdxT mshrIdx; +} SelfInvLLPipeCRqIn#(type cRqIdxT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + Msi toState; // come from req in MSHR (E or M) + Line data; // come from memory must be valid + wayT way; // come from MSHR +} SelfInvLLPipeMRsIn#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + SelfInvLLPipeCRqIn#(cRqIdxT) CRq; + CRsMsg#(childT) CRs; + SelfInvLLPipeMRsIn#(wayT) MRs; +} SelfInvLLPipeIn#( + type childT, + type wayT, + type cRqIdxT +) deriving (Bits, Eq, FShow); + +// output cmd to the processing rule in LLC +typedef union tagged { + cRqIdxT LLCRq; // mshr idx of the cRq + childT LLCRs; // which child is downgrading + void LLMRs; +} SelfInvLLCmd#(type childT, type cRqIdxT) deriving (Bits, Eq, FShow); + +// Track only exclusive child in directory +typedef struct { + childT exChild; + Msi state; // I/E/M, we don't track S +} SelfInvDir#(type childT) deriving(Bits, Eq, FShow); + +interface SelfInvLLPipe#( + numeric type lgBankNum, + numeric type childNum, + numeric type wayNum, + type indexT, + type tagT, + type cRqIdxT +); + method Action send(SelfInvLLPipeIn#(Bit#(TLog#(childNum)), Bit#(TLog#(wayNum)), cRqIdxT) r); + method Bool notEmpty; + method PipeOut#( + Bit#(TLog#(wayNum)), + tagT, Msi, SelfInvDir#(Bit#(TLog#(childNum))), + Maybe#(CRqOwner#(cRqIdxT)), void, RandRepInfo, // no other + Line, SelfInvLLCmd#(Bit#(TLog#(childNum)), cRqIdxT) + ) first; + method PipeOut#( + Bit#(TLog#(wayNum)), + tagT, Msi, SelfInvDir#(Bit#(TLog#(childNum))), + Maybe#(CRqOwner#(cRqIdxT)), void, RandRepInfo, // no other + Line, SelfInvLLCmd#(Bit#(TLog#(childNum)), cRqIdxT) + ) unguard_first; + method Action deqWrite( + Maybe#(cRqIdxT) swapRq, + RamData#(tagT, Msi, SelfInvDir#(Bit#(TLog#(childNum))), Maybe#(CRqOwner#(cRqIdxT)), void, Line) wrRam, // always write BRAM + Bool updateRep + ); +endinterface + +// real cmd used in pipeline +typedef struct { + Addr addr; + childT child; +} SelfInvLLPipeCRsCmd#(type childT) deriving(Bits, Eq, FShow); + +typedef struct { + Addr addr; + wayT way; +} SelfInvLLPipeMRsCmd#(type wayT) deriving(Bits, Eq, FShow); + +typedef union tagged { + SelfInvLLPipeCRqIn#(cRqIdxT) CRq; + SelfInvLLPipeCRsCmd#(childT) CRs; + SelfInvLLPipeMRsCmd#(wayT) MRs; +} SelfInvLLPipeCmd#( + type childT, + type wayT, + type cRqIdxT +) deriving (Bits, Eq, FShow); + +module mkSelfInvLLPipe( + SelfInvLLPipe#(lgBankNum, childNum, wayNum, indexT, tagT, cRqIdxT) +) provisos( + Alias#(childT, Bit#(TLog#(childNum))), + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(dirT, SelfInvDir#(childT)), + Alias#(ownerT, Maybe#(CRqOwner#(cRqIdxT))), + Alias#(otherT, void), // no other cache info + Alias#(repT, RandRepInfo), // use random replace + Alias#(pipeInT, SelfInvLLPipeIn#(childT, wayT, cRqIdxT)), + Alias#(pipeCmdT, SelfInvLLPipeCmd#(childT, wayT, cRqIdxT)), + Alias#(llCmdT, SelfInvLLCmd#(childT, cRqIdxT)), + Alias#(pipeOutT, PipeOut#(wayT, tagT, Msi, dirT, ownerT, otherT, repT, Line, llCmdT)), // output type + Alias#(infoT, CacheInfo#(tagT, Msi, dirT, ownerT, otherT)), + Alias#(ramDataT, RamData#(tagT, Msi, dirT, ownerT, otherT, Line)), + Alias#(respStateT, RespState#(Msi)), + Alias#(tagMatchResT, TagMatchResult#(wayT)), + Alias#(updateByUpCsT, UpdateByUpCs#(Msi)), + Alias#(updateByDownDirT, UpdateByDownDir#(Msi, dirT)), + Alias#(dataIndexT, Bit#(TAdd#(TLog#(wayNum), indexSz))), + // requirement + Alias#(indexT, Bit#(indexSz)), + Alias#(tagT, Bit#(tagSz)), + Alias#(cRqIdxT, Bit#(_cRqIdxSz)), + Add#(indexSz, a__, AddrSz), + Add#(tagSz, b__, AddrSz) +); + // RAMs + Vector#(wayNum, RWBramCore#(indexT, infoT)) infoRam <- replicateM(mkRWBramCore); + RWBramCore#(indexT, repT) repRam <- mkRandRepRam; + RWBramCore#(dataIndexT, Line) dataRam <- mkRWBramCore; + + // initialize RAM + Reg#(Bool) initDone <- mkReg(False); + Reg#(indexT) initIndex <- mkReg(0); + + rule doInit(!initDone); + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + infoRam[i].wrReq(initIndex, CacheInfo { + tag: 0, + cs: I, + dir: SelfInvDir {exChild: ?, state: I}, + owner: Invalid, + other: ? + }); + end + repRam.wrReq(initIndex, randRepInitInfo); // useless for random replace + initIndex <= initIndex + 1; + if(initIndex == maxBound) begin + initDone <= True; + end + endrule + + // random replacement + RandomReplace#(wayNum) randRep <- mkRandomReplace; + + // functions + function Addr getAddrFromCmd(pipeCmdT cmd); + return (case(cmd) matches + tagged CRq .r: r.addr; + tagged CRs .r: r.addr; + tagged MRs .r: r.addr; + default: ?; + endcase); + endfunction + + function indexT getIndex(pipeCmdT cmd); + Addr a = getAddrFromCmd(cmd); + return truncate(a >> (valueOf(LgLineSzBytes) + valueOf(lgBankNum))); + endfunction + + function ActionValue#(tagMatchResT) tagMatch( + pipeCmdT cmd, + Vector#(wayNum, tagT) tagVec, + Vector#(wayNum, Msi) csVec, + Vector#(wayNum, ownerT) ownerVec, + repT repInfo + ); + return actionvalue + function tagT getTag(Addr a) = truncateLSB(a); + + $display("%t LL %m tagMatch: ", $time, + fshow(cmd), " ; ", + fshow(getTag(getAddrFromCmd(cmd))), " ; ", + fshow(tagVec), " ; ", + fshow(csVec), " ; ", + fshow(ownerVec) + ); + if(cmd matches tagged MRs .rs) begin + // MRs directly read from cmd + return TagMatchResult { + way: rs.way, + pRqMiss: False + }; + end + else begin + // CRq/CRs: need tag matching + Addr addr = getAddrFromCmd(cmd); + tagT tag = getTag(addr); + // find hit way (we do not check replacing bit in LLC) + // this makes blocked by other which is replacing addr a + function Bool isMatch(Tuple2#(Msi, tagT) csTag); + match {.cs, .t} = csTag; + return cs > I && t == tag; + endfunction + Maybe#(wayT) hitWay = searchIndex(isMatch, zip(csVec, tagVec)); + if(hitWay matches tagged Valid .w) begin + return TagMatchResult { + way: w, + pRqMiss: False + }; + end + else begin + // cRs must hit, so only cRq cannot enter here + doAssert(cmd matches tagged CRq ._rq ? True : False, + "only cRq can tag match miss" + ); + // find a unlocked way to replace for cRq + Vector#(wayNum, Bool) unlocked = ?; + Vector#(wayNum, Bool) invalid = ?; + for(Integer i = 0; i < valueOf(wayNum); i = i+1) begin + invalid[i] = csVec[i] == I; + unlocked[i] = !isValid(ownerVec[i]); + end + Maybe#(wayT) repWay = randRep.getReplaceWay(unlocked, invalid); + // sanity check: repWay must be valid + doAssert(isValid(repWay), "should always find a way to replace"); + return TagMatchResult { + way: fromMaybe(?, repWay), + pRqMiss: False + }; + end + end + endactionvalue; + endfunction + + function ActionValue#(updateByUpCsT) updateByUpCs( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs + ); + actionvalue + doAssert(toState > oldCs, "should truly upgrade cs"); + doAssert((oldCs == I) && dataV, "LLC mRs always has data"); + return UpdateByUpCs {cs: toState}; + endactionvalue + endfunction + + function ActionValue#(updateByDownDirT) updateByDownDir( + pipeCmdT cmd, Msi toState, Bool dataV, Msi oldCs, dirT oldDir + ); + actionvalue + // update dir + // The exclusive child is downgraded. Since we don't track S, just make + // dir invalid, child field is useless for I + dirT newDir = SelfInvDir {exChild: ?, state: I}; + doAssert(oldDir.state >= E && toState <= S, "no more exclusive child"); + doAssert(cmd matches tagged CRs .cRs &&& oldDir.exChild == cRs.child ? True : False, + "cRs child should match"); + if(!dataV) begin + doAssert(oldDir.state < M, "cRs without data, dir must < M"); + end + if(oldDir.state == M) begin + doAssert(dataV, "downgrade from M must have data"); + doAssert(oldCs == M, "cs must be M"); + end + // update cs + // XXX since child can upgrade from E to M silently, use data valid + // to determine if we need to upgrade to M. Note that the data + // valid field has not been overwritten by bypass in CCPipe. + Msi newCs = oldCs; + if(dataV) begin + doAssert(oldCs >= E, "cRs has data, cs must >= E"); + newCs = M; + end + return UpdateByDownDir {cs: newCs, dir: newDir}; + endactionvalue + endfunction + + function ActionValue#(repT) updateRepInfo(repT r, wayT w); + actionvalue + return ?; // random replace does not have bookkeeping + endactionvalue + endfunction + + CCPipe#(wayNum, indexT, tagT, Msi, dirT, ownerT, otherT, repT, Line, pipeCmdT) pipe <- mkCCPipe( + regToReadOnly(initDone), getIndex, tagMatch, + updateByUpCs, updateByDownDir, updateRepInfo, + infoRam, repRam, dataRam + ); + + // get first output from CCPipe output + function pipeOutT getFirst(PipeOut#(wayT, tagT, Msi, dirT, ownerT, otherT, repT, Line, pipeCmdT) pout); + return PipeOut { + cmd: (case(pout.cmd) matches + tagged CRq .rq: LLCRq (rq.mshrIdx); + tagged CRs .rs: LLCRs (rs.child); + tagged MRs .rs: LLMRs; + default: ?; + endcase), + way: pout.way, + pRqMiss: pout.pRqMiss, + ram: pout.ram, + repInfo: pout.repInfo + }; + endfunction + + method Action send(pipeInT req); + case(req) matches + tagged CRq .rq: begin + pipe.enq(CRq (rq), Invalid, Invalid); + end + tagged CRs .rs: begin + pipe.enq(CRs (SelfInvLLPipeCRsCmd { + addr: rs.addr, + child: rs.child + }), rs.data, DownDir (rs.toState)); + end + tagged MRs .rs: begin + pipe.enq(MRs (SelfInvLLPipeMRsCmd { + addr: rs.addr, + way: rs.way + }), Valid (rs.data), UpCs (rs.toState)); + end + endcase + endmethod + + // need to adapt pipeline output to real output format + method pipeOutT first; + return getFirst(pipe.first); // guarded version + endmethod + + method pipeOutT unguard_first; + return getFirst(pipe.unguard_first); // unguarded version + endmethod + + method notEmpty = pipe.notEmpty; + + method Action deqWrite(Maybe#(cRqIdxT) swapRq, ramDataT wrRam, Bool updateRep); + // get new cmd + Addr addr = getAddrFromCmd(pipe.first.cmd); // inherit addr + Maybe#(pipeCmdT) newCmd = Invalid; + if(swapRq matches tagged Valid .idx) begin + newCmd = Valid (CRq (SelfInvLLPipeCRqIn {addr: addr, mshrIdx: idx})); + end + // call pipe + pipe.deqWrite(newCmd, wrRam, updateRep); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/connectal/bsv/ConnectalBramFifo.bsv b/src_Core/RISCY_OOO/connectal/bsv/ConnectalBramFifo.bsv new file mode 100644 index 0000000..fea01a9 --- /dev/null +++ b/src_Core/RISCY_OOO/connectal/bsv/ConnectalBramFifo.bsv @@ -0,0 +1,178 @@ +// Copyright (c) 2015 Quanta Research Cambridge, Inc. + +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Clocks::*; +import Vector::*; +import FIFO::*; +import FIFOF::*; +import BRAMFIFO::*; +import CBus::*; // extendNP and truncateNP + +`include "ConnectalProjectConfig.bsv" +import Arith::*; +import ConnectalClocks::*; + +`ifdef SIMULATION +`ifdef BOARD_xsim +`define USE_XILINX_MACRO +`endif // xsim +`else // not SIMULATION +`ifdef XILINX +`define USE_XILINX_MACRO +`endif // XILINX +`endif // not SIMULATION + +`ifdef USE_XILINX_MACRO +(* always_ready, always_enabled *) +interface X7FifoSyncMacro#(numeric type data_width); + method Bit#(1) empty(); + method Bit#(1) full(); + method Action din(Bit#(data_width) v); + method Action wren(Bit#(1) wren); + method Bit#(data_width) dout(); + method Action rden(Bit#(1) rden); + method Bit#(9) wrcount(); + method Bit#(9) rdcount(); +endinterface + +import "BVI" FIFO_DUALCLOCK_MACRO = +module vmkBramFifo#(String fifo_size, Clock wrClock, Reset wrReset, Clock rdClock, Reset rdReset)(X7FifoSyncMacro#(data_width)); +`ifndef BSV_POSITIVE_RESET + let rdReset1 <- mkSyncReset(10, rdReset, wrClock); + let eitherReset <- mkResetEither(wrReset, rdReset1, clocked_by wrClock); + let positiveReset <- mkPositiveReset(10, eitherReset, wrClock); + // rst must be asserted for 5 read and write clock cycles + let fifoReset = positiveReset.positiveReset; +`else + let fifoReset = wrReset; +`endif +`ifdef XilinxUltrascale + parameter DEVICE = "ULTRASCALE"; +`else + parameter DEVICE = "7SERIES"; +`endif + parameter DATA_WIDTH = valueOf(data_width); + parameter FIFO_SIZE = fifo_size; +`ifndef SIMULATION + parameter FIRST_WORD_FALL_THROUGH = "TRUE"; // not supported by xsim +`else + parameter FIRST_WORD_FALL_THROUGH = True; +`endif + default_clock wrClock(WRCLK) = wrClock; + no_reset; + // RST is asynchronous + input_reset wrReset(RST) clocked_by(no_clock) = fifoReset; + input_clock rdClock(RDCLK) = rdClock; + method EMPTY empty() clocked_by (rdClock) reset_by (wrReset); + method FULL full() clocked_by (wrClock) reset_by (wrReset); + method din(DI) enable ((*inhigh*)EN_di) clocked_by (wrClock) reset_by (wrReset); + method wren(WREN) enable ((*inhigh*)EN_wren) clocked_by (wrClock) reset_by (wrReset); + method DO dout() clocked_by (rdClock) reset_by (wrReset); + method rden(RDEN) enable ((*inhigh*)EN_rden) clocked_by (rdClock) reset_by (wrReset); + // wrcount and rdcount ports are needed for xsim + method WRCOUNT wrcount() clocked_by (wrClock) reset_by (wrReset); + method RDCOUNT rdcount() clocked_by (rdClock) reset_by (wrReset); + schedule (empty, full, dout, din, wren, rden, wrcount, rdcount) CF (empty, full, dout, din, wren, rden, wrcount, rdcount); +endmodule + +module mkDualClockBramFIFOF#(Clock srcClock, Reset srcReset, Clock dstClock, Reset dstReset)(FIFOF#(t)) + provisos (Bits#(t,sizet), + Add#(1,a__,sizet)); + String fifo_size = "18Kb"; + Vector#(TDiv#(sizet,36),X7FifoSyncMacro#(36)) fifos <- replicateM(vmkBramFifo(fifo_size, srcClock, srcReset, dstClock, dstReset)); + Wire#(Bit#(1)) rdenWire <- mkDWire(0, clocked_by dstClock, reset_by dstReset); + Wire#(Bit#(1)) wrenWire <- mkDWire(0, clocked_by srcClock, reset_by srcReset); + Vector#(TDiv#(sizet,36),Wire#(Bit#(36))) dinWires <- replicateM(mkDWire(0, clocked_by srcClock, reset_by srcReset)); + + for (Integer i = 0; i < valueOf(TDiv#(sizet,36)); i = i+1) begin + Reg#(Bit#(9)) rdcount <- mkReg(0, clocked_by dstClock, reset_by dstReset); + Reg#(Bit#(9)) wrcount <- mkReg(0, clocked_by srcClock, reset_by srcReset); + rule rdenRule; + fifos[i].rden(rdenWire); + endrule + rule wrenRule; + fifos[i].wren(wrenWire); + endrule + rule inputs; + fifos[i].din(dinWires[i]); + endrule + rule countrds; + rdcount <= fifos[i].rdcount(); + endrule + rule countwrs; + wrcount <= fifos[i].wrcount(); + endrule + end + + function Bool fifoNotEmpty(X7FifoSyncMacro#(36) f); return f.empty == 0; endfunction + function Bool fifoNotFull(X7FifoSyncMacro#(36) f); return f.full == 0; endfunction + + method t first() if (all(fifoNotEmpty, fifos)); + function Bit#(36) fifoFirst(Integer i); return fifos[i].dout(); endfunction + Vector#(TDiv#(sizet,36), Bit#(36)) v = genWith(fifoFirst); + return unpack(truncateNP(pack(v))); + endmethod + method Action deq() if (all(fifoNotEmpty, fifos)); + rdenWire <= 1; + endmethod + method notEmpty = all(fifoNotEmpty, fifos); + method Action enq(t v) if (all(fifoNotFull, fifos)); + Vector#(TDiv#(sizet,36), Bit#(36)) vs = unpack(extendNP(pack(v))); + Vector#(TDiv#(sizet,36), Integer) indices = genVector(); + function Action fifoEnq(Integer i); action dinWires[i] <= vs[i]; endaction endfunction + mapM_(fifoEnq, indices); + wrenWire <= 1; + endmethod + method notFull = all(fifoNotEmpty, fifos); +endmodule + +module mkDualClockBramFIFO#(Clock srcClock, Reset srcReset, Clock dstClock, Reset dstReset)(FIFO#(t)) + provisos (Bits#(t,sizet), + Add#(1,a__,sizet)); + + let syncFifo <- mkDualClockBramFIFOF(srcClock, srcReset, dstClock, dstReset); + method enq = syncFifo.enq; + method deq = syncFifo.deq; + method first = syncFifo.first; +endmodule + +`else // compatibility mode +module mkDualClockBramFIFOF#(Clock srcClock, Reset srcReset, Clock dstClock, Reset dstReset)(FIFOF#(t)) + provisos (Bits#(t,sizet), + Add#(1,a__,sizet)); + let syncFifo <- mkSyncFIFO(512, srcClock, srcReset, dstClock); + method enq = syncFifo.enq; + method deq = syncFifo.deq; + method first = syncFifo.first; + method notFull = syncFifo.notFull; + method notEmpty = syncFifo.notEmpty; +endmodule +module mkDualClockBramFIFO#(Clock srcClock, Reset srcReset, Clock dstClock, Reset dstReset)(FIFO#(t)) + provisos (Bits#(t,sizet), + Add#(1,a__,sizet)); + + let syncFifo <- mkSyncFIFO(512, srcClock, srcReset, dstClock); + method enq = syncFifo.enq; + method deq = syncFifo.deq; + method first = syncFifo.first; +endmodule +`endif diff --git a/src_Core/RISCY_OOO/connectal/bsv/ConnectalClocks.bsv b/src_Core/RISCY_OOO/connectal/bsv/ConnectalClocks.bsv new file mode 100644 index 0000000..135ccfe --- /dev/null +++ b/src_Core/RISCY_OOO/connectal/bsv/ConnectalClocks.bsv @@ -0,0 +1,130 @@ +// Copyright (c) 2014 Quanta Research Cambridge, Inc. + +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Clocks::*; + +`include "ConnectalProjectConfig.bsv" + +`ifdef PcieClockPeriod +Real pcieClockPeriod = `PcieClockPeriod; +`endif + +Real mainClockPeriod = `MainClockPeriod; +Real derivedClockPeriod =`DerivedClockPeriod; + +(* always_ready, always_enabled *) +interface B2C; + interface Clock c; + interface Reset r; + method Action inputclock(Bit#(1) v); + method Action inputreset(Bit#(1) v); +endinterface +import "BVI" CONNECTNET2 = +module mkB2C(B2C); + default_clock no_clock; + default_reset no_reset; + output_clock c(OUT1); + output_reset r(OUT2); + method inputclock(IN1) enable((*inhigh*) en_inputclock) clocked_by(c); + method inputreset(IN2) enable((*inhigh*) en_inputreset) clocked_by(c); + schedule ( inputclock, inputreset) CF ( inputclock, inputreset); +endmodule + +(* always_ready, always_enabled *) +interface B2C1; + interface Clock c; + method Action inputclock(Bit#(1) v); +endinterface +import "BVI" CONNECTNET = +module mkB2C1(B2C1); + default_clock clk(); + default_reset rst(); + output_clock c(OUT); + method inputclock(IN) enable((*inhigh*) en_inputclock); + schedule ( inputclock) CF ( inputclock); +endmodule + +(* always_ready, always_enabled *) +interface C2B; + method Bit#(1) o(); +endinterface +import "BVI" CONNECTNET = +module mkC2B#(Clock c)(C2B); + default_clock clk(); + default_reset no_reset; + //default_reset rst(); + input_clock ck(IN) = c; + method OUT o(); + schedule ( o) CF ( o); +endmodule + +(* always_ready, always_enabled *) +interface B2R; + interface Reset r; + method Action inputreset(Bit#(1) v); +endinterface +import "BVI" CONNECTNET = +module mkB2R(B2R); + default_clock clk(); + default_reset rst(); + output_reset r(OUT); + method inputreset(IN) enable((*inhigh*) en_inputclock); + schedule ( inputreset) CF ( inputreset); +endmodule + +(* always_ready, always_enabled *) +interface R2B; + method Bit#(1) o(); +endinterface +import "BVI" CONNECTNET = +module mkR2B#(Reset r)(C2B); + default_clock no_clock; + default_reset no_reset; + //default_reset rst(); + input_reset rst(IN) = r; + method OUT o(); + schedule ( o) CF ( o); +endmodule + +interface PositiveReset; + interface Reset positiveReset; +endinterface + +import "BVI" PositiveReset = +module mkPositiveReset#(Integer resetDelay, Reset reset, Clock clock)(PositiveReset); + parameter RSTDELAY = resetDelay; + default_clock clock(CLK) = clock; + default_reset reset(IN_RST) clocked_by (no_clock) = reset; + output_reset positiveReset(OUT_RST); +endmodule + +interface FpgaReset; + interface Reset fpgaReset; +endinterface + +import "BVI" FpgaReset = +module exposeFpgaReset#(Integer resetDelay, Clock clock)(FpgaReset); + parameter RSTDELAY = resetDelay; + default_clock clock(CLK) = clock; + no_reset; + output_reset fpgaReset(OUT_RST); +endmodule diff --git a/src_Core/RISCY_OOO/connectal/lib/bsv/Arith.bsv b/src_Core/RISCY_OOO/connectal/lib/bsv/Arith.bsv new file mode 100644 index 0000000..10bc47e --- /dev/null +++ b/src_Core/RISCY_OOO/connectal/lib/bsv/Arith.bsv @@ -0,0 +1,42 @@ + +// Copyright (c) 2014 Quanta Research Cambridge, Inc. + +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; + +function Bool booland(Bool x1, Bool x2); return x1 && x2; endfunction +function Bool boolor(Bool x1, Bool x2); return x1 || x2; endfunction + +function Bool eq(a x1, a x2) provisos (Eq#(a)); return x1 == x2; endfunction + +function a add(a x1, a x2) provisos (Arith#(a)); return x1 + x2; endfunction +function a mul(a x1, a x2) provisos (Arith#(a)); return x1 * x2; endfunction +function Bit#(b) rshift(Bit#(b) x1, Integer i); return x1 >> i; endfunction +function Vector#(n, a) vadd(Vector#(n, a) x1, Vector#(n, a) x2) provisos (Arith#(a)); + return map(uncurry(add), zip(x1, x2)); +endfunction +function Vector#(n, a) vmul(Vector#(n, a) x1, Vector#(n, a) x2) provisos (Arith#(a)); + return map(uncurry(mul), zip(x1, x2)); +endfunction +function Vector#(n, Bit#(b)) vrshift(Vector#(n, Bit#(b)) x1, Integer i); + return map(flip(rshift)(i), x1); +endfunction diff --git a/src_Core/RISCY_OOO/connectal/tests/spi/ConnectalProjectConfig.bsv b/src_Core/RISCY_OOO/connectal/tests/spi/ConnectalProjectConfig.bsv new file mode 100644 index 0000000..4f59b9c --- /dev/null +++ b/src_Core/RISCY_OOO/connectal/tests/spi/ConnectalProjectConfig.bsv @@ -0,0 +1,15 @@ +`define ConnectalVersion 15.11.1 +`define NumberOfMasters 1 +`define PinType Empty +`define PinTypeInclude Misc +`define NumberOfUserTiles 1 +`define SlaveDataBusWidth 32 +`define SlaveControlAddrWidth 5 +`define BurstLenSize 10 +`define project_dir $(DTOP) +`define MainClockPeriod 20 +`define DerivedClockPeriod 10.000000 +`define BsimHostInterface +`define PhysAddrWidth 40 +`define SIMULATION +`define BOARD_bluesim diff --git a/src_Core/RISCY_OOO/fpgautils/lib/DramCommon.bsv b/src_Core/RISCY_OOO/fpgautils/lib/DramCommon.bsv new file mode 100644 index 0000000..bffea83 --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/DramCommon.bsv @@ -0,0 +1,76 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Assert::*; + +// User interface: +// all DRAM use 64B data block +// present user with 64-bit address space, but addr should be in terms of 64B +typedef 512 DramUserDataSz; +typedef TDiv#(DramUserDataSz, 8) DramUserBESz; +typedef 58 DramUserAddrSz; + +typedef Bit#(DramUserDataSz) DramUserData; +typedef Bit#(DramUserBESz) DramUserBE; +typedef Bit#(DramUserAddrSz) DramUserAddr; + +typedef struct { // read/write req + DramUserAddr addr; + DramUserData data; + DramUserBE wrBE; // all 0 means read, + // otherwise wrBE[i]=1 means to write byte i +} DramUserReq deriving(Bits, Eq, FShow); + +interface DramUser#( + // maximum number of in-flight requests (not always used) + numeric type maxReadNum, + numeric type maxWriteNum, + // simulation delay (fully pipelined) + numeric type simDelay, + // error of dram controller + // XXX we should not check address overflow because of wrong-path loads + type errT +); + method Action req(DramUserReq r); + method ActionValue#(DramUserData) rdResp; // only read has resp + method ActionValue#(errT) err; +endinterface + +// Full interface +interface DramFull#( + numeric type maxReadNum, + numeric type maxWriteNum, + numeric type simDelay, + type errT, + // pin type + type pinT +); + interface DramUser#(maxReadNum, maxWriteNum, simDelay, errT) user; + interface pinT pins; +endinterface + +`ifdef BSIM +function Action doAssert(Bool b, String s) = action if(!b) $fdisplay(stderr, "\n%m: ASSERT FAIL!!"); dynamicAssert(b, s); endaction; +`else +function Action doAssert(Bool b, String s) = noAction; +`endif diff --git a/src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv b/src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv new file mode 100644 index 0000000..5d93fdc --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/ResetGuard.bsv @@ -0,0 +1,38 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Clocks::*; + +interface ResetGuard; + method Bool isReady; +endinterface + +import "BVI" reset_guard = +module mkResetGuard(ResetGuard); + default_clock clk(CLK); + default_reset rst(RST); + + method IS_READY isReady(); + + schedule (isReady) CF (isReady); +endmodule diff --git a/src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv b/src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv new file mode 100644 index 0000000..e780722 --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/SyncFifo.bsv @@ -0,0 +1,114 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Clocks::*; +import FIFOF::*; +import Assert::*; +import ConnectalBramFifo::*; +import BRAMFIFO::*; +import XilinxSyncFifo::*; +import ResetGuard::*; + +export mkSyncFifo; +export mkSyncBramFifo; + +// sync fifo type selec macros: USE_CONNECTAL_BRAM_SYNC_FIFO, USE_BSV_BRAM_SYNC_FIFO, USE_XILINX_SYNC_FIFO + +// we also guard the sync fifo from enq/deq before the reset + +module mkSyncFifo#( + Integer depth, Clock srcClk, Reset srcRst, Clock dstClk, Reset dstRst +)(SyncFIFOIfc#(t)) provisos( + Bits#(t, tW), + NumAlias#(w, TMax#(1, tW)) // some sync fifo doesn't support 0-bit data +); +`ifdef USE_CONNECTAL_BRAM_SYNC_FIFO + staticAssert(depth <= 512, "depth of FIFO18 is 512"); + FIFOF#(Bit#(w)) q <- mkDualClockBramFIFOF(srcClk, srcRst, dstClk, dstRst); + +`elsif USE_BSV_BRAM_SYNC_FIFO + SyncFIFOIfc#(Bit#(w)) q <- mkSyncBRAMFIFO(depth, srcClk, srcRst, dstClk, dstRst); + +`elsif USE_XILINX_SYNC_FIFO + staticAssert(depth <= 16, "depth of xilinx lut ram FIFO is 16"); + SyncFIFOIfc#(Bit#(w)) q <- mkXilinxSyncFifo(srcClk, srcRst, dstClk); + +`else + SyncFIFOIfc#(Bit#(w)) q <- mkSyncFIFO(depth, srcClk, srcRst, dstClk); + +`endif + + // guard sync fifo operations + ResetGuard srcGuard <- mkResetGuard(clocked_by srcClk, reset_by srcRst); + ResetGuard dstGuard <- mkResetGuard(clocked_by dstClk, reset_by dstRst); + + method notFull = q.notFull && srcGuard.isReady; + method Action enq(t x) if(srcGuard.isReady); + q.enq(zeroExtend(pack(x))); + endmethod + + method notEmpty = q.notEmpty && dstGuard.isReady; + method t first if(dstGuard.isReady); + return unpack(truncate(q.first)); + endmethod + method Action deq if(dstGuard.isReady); + q.deq; + endmethod +endmodule + +module mkSyncBramFifo#( + Integer depth, Clock srcClk, Reset srcRst, Clock dstClk, Reset dstRst +)(SyncFIFOIfc#(t)) provisos( + Bits#(t, tW), + NumAlias#(w, TMax#(1, tW)) // some sync fifo doesn't support 0-bit data +); +`ifdef USE_CONNECTAL_BRAM_SYNC_FIFO + staticAssert(depth <= 512, "depth of FIFO18 is 512"); + FIFOF#(Bit#(w)) q <- mkDualClockBramFIFOF(srcClk, srcRst, dstClk, dstRst); + +`elsif USE_XILINX_SYNC_FIFO + staticAssert(depth <= 512, "depth of xilinx block ram FIFO is 512"); + SyncFIFOIfc#(Bit#(w)) q <- mkXilinxSyncBramFifo(srcClk, srcRst, dstClk); + +`else + SyncFIFOIfc#(Bit#(w)) q <- mkSyncBRAMFIFO(depth, srcClk, srcRst, dstClk, dstRst); + +`endif + + // guard sync fifo operations + ResetGuard srcGuard <- mkResetGuard(clocked_by srcClk, reset_by srcRst); + ResetGuard dstGuard <- mkResetGuard(clocked_by dstClk, reset_by dstRst); + + method notFull = q.notFull && srcGuard.isReady; + method Action enq(t x) if(srcGuard.isReady); + q.enq(zeroExtend(pack(x))); + endmethod + + method notEmpty = q.notEmpty && dstGuard.isReady; + method t first if(dstGuard.isReady); + return unpack(truncate(q.first)); + endmethod + method Action deq if(dstGuard.isReady); + q.deq; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/fpgautils/lib/WaitAutoReset.bsv b/src_Core/RISCY_OOO/fpgautils/lib/WaitAutoReset.bsv new file mode 100644 index 0000000..1a376c0 --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/WaitAutoReset.bsv @@ -0,0 +1,51 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import ResetGuard::*; + +// some xilinx IP automatically reset +// we wait several cycles to make sure the reset completes +// we also block signals on the IP before reset of current clock domain completes +// because such signals may be garbage + +interface WaitAutoReset#(numeric type logCycles); + method Bool isReady; +endinterface + +module mkWaitAutoReset(WaitAutoReset#(logCycles)); + Reg#(Bit#(logCycles)) cnt <- mkReg(0); + Reg#(Bool) init <- mkReg(False); + + ResetGuard rg <- mkResetGuard; + + rule doInit(!init); + cnt <= cnt + 1; + if(cnt == maxBound) begin + init <= True; + end + endrule + + method Bool isReady; + return init && rg.isReady; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/fpgautils/lib/XilinxFpu.bsv b/src_Core/RISCY_OOO/fpgautils/lib/XilinxFpu.bsv new file mode 100644 index 0000000..be1b11a --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/XilinxFpu.bsv @@ -0,0 +1,387 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import DefaultValue::*; +import GetPut::*; +import ClientServer::*; +import WaitAutoReset::*; +import FloatingPoint::*; +import FIFO::*; + +export mkXilinxFpFmaIP; +export mkXilinxFpDivIP; +export mkXilinxFpSqrtIP; +export mkXilinxFpFmaSim; +export mkXilinxFpDivSim; +export mkXilinxFpSqrtSim; +export mkXilinxFpFma; +export mkXilinxFpDiv; +export mkXilinxFpSqrt; + +typedef FloatingPoint::RoundMode FpuRoundMode; +typedef FloatingPoint::Exception FpuException; + +export FpuRoundMode(..); +export FpuException(..); + +// import Xilinx IP core + +// xilinx raw FMA IP is a * b + c, later we need to adapt to a + b * c +interface FpFmaImport; + method Action enqA(Bit#(64) a); + method Action enqB(Bit#(64) b); + method Action enqC(Bit#(64) c); + + method Action deq; + method Bit#(64) resp; + method Bit#(3) excep; +endinterface + +import "BVI" fp_fma = +module mkFpFmaImport(FpFmaImport); + default_clock clk(aclk, (*unused*) unused_gate); + default_reset no_reset; + + method enqA(s_axis_a_tdata) enable(s_axis_a_tvalid) ready(s_axis_a_tready); + method enqB(s_axis_b_tdata) enable(s_axis_b_tvalid) ready(s_axis_b_tready); + method enqC(s_axis_c_tdata) enable(s_axis_c_tvalid) ready(s_axis_c_tready); + + method deq() enable(m_axis_result_tready) ready(m_axis_result_tvalid); + method m_axis_result_tdata resp() ready(m_axis_result_tvalid); + method m_axis_result_tuser excep() ready(m_axis_result_tvalid); + + schedule (enqA, enqB, enqC) CF (deq, resp, excep); + + schedule (enqA) CF (enqB, enqC); + schedule (enqB) CF (enqC); + schedule (enqA) C (enqA); + schedule (enqB) C (enqB); + schedule (enqC) C (enqC); + + schedule (deq) C (deq); + schedule (resp, excep, deq) CF (resp, excep); +endmodule + +interface FpDivImport; + method Action enqA(Bit#(64) a); + method Action enqB(Bit#(64) b); + + method Action deq; + method Bit#(64) resp; + method Bit#(4) excep; +endinterface + +import "BVI" fp_div = +module mkFpDivImport(FpDivImport); + default_clock clk(aclk, (*unused*) unused_gate); + default_reset no_reset; + + method enqA(s_axis_a_tdata) enable(s_axis_a_tvalid) ready(s_axis_a_tready); + method enqB(s_axis_b_tdata) enable(s_axis_b_tvalid) ready(s_axis_b_tready); + + method deq() enable(m_axis_result_tready) ready(m_axis_result_tvalid); + method m_axis_result_tdata resp() ready(m_axis_result_tvalid); + method m_axis_result_tuser excep() ready(m_axis_result_tvalid); + + schedule (enqA, enqB) CF (deq, resp, excep); + + schedule (enqA) CF (enqB); + schedule (enqA) C (enqA); + schedule (enqB) C (enqB); + + schedule (deq) C (deq); + schedule (resp, excep, deq) CF (resp, excep); +endmodule + +interface FpSqrtImport; + method Action enqA(Bit#(64) a); + + method Action deq; + method Bit#(64) resp; + method Bit#(1) excep; +endinterface + +import "BVI" fp_sqrt = +module mkFpSqrtImport(FpSqrtImport); + default_clock clk(aclk, (*unused*) unused_gate); + default_reset no_reset; + + method enqA(s_axis_a_tdata) enable(s_axis_a_tvalid) ready(s_axis_a_tready); + + method deq() enable(m_axis_result_tready) ready(m_axis_result_tvalid); + method m_axis_result_tdata resp() ready(m_axis_result_tvalid); + method m_axis_result_tuser excep() ready(m_axis_result_tvalid); + + schedule (enqA) CF (deq, resp, excep); + + schedule (enqA) C (enqA); + + schedule (deq) C (deq); + schedule (resp, excep, deq) CF (resp, excep); +endmodule + +// adapt the IP core to Bluespec FPU interface +(* synthesize *) +module mkXilinxFpFmaIP(Server#( + Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); + WaitAutoReset#(8) init <- mkWaitAutoReset; + FpFmaImport fpFma <- mkFpFmaImport; + + // xilinx raw ip is a * b + c + // what we need to provide is in1 + in2 * in3 + // so in1 -> c, in2 -> a, in3 -> b + + interface Put request; + method Action put(Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode) req) if(init.isReady); + let {maybe_in1, in2, in3, rm} = req; + Double in1 = fromMaybe(zero(False), maybe_in1); + fpFma.enqA(pack(in2)); + fpFma.enqB(pack(in3)); + fpFma.enqC(pack(in1)); + if(rm != Rnd_Nearest_Even) begin + $fdisplay(stderr, "[Xlinx FMA] WARNING: unsupported rounding mode ", fshow(rm)); + end + endmethod + endinterface + + interface Get response; + method ActionValue#(Tuple2#(Double, FpuException)) get if(init.isReady); + fpFma.deq; + Double val = unpack(fpFma.resp); + Bit#(3) exBits = fpFma.excep; + FpuException excep = defaultValue; + excep.underflow = exBits[0] == 1; + excep.overflow = exBits[1] == 1; + excep.invalid_op = exBits[2] == 1; + return tuple2(val, excep); + endmethod + endinterface +endmodule + +(* synthesize *) +module mkXilinxFpDivIP(Server#( + Tuple3#(Double, Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); + WaitAutoReset#(8) init <- mkWaitAutoReset; + FpDivImport fpDiv <- mkFpDivImport; + + interface Put request; + method Action put(Tuple3#(Double, Double, FpuRoundMode) req) if(init.isReady); + let {a, b, rm} = req; + fpDiv.enqA(pack(a)); + fpDiv.enqB(pack(b)); + if(rm != Rnd_Nearest_Even) begin + $fdisplay(stderr, "[Xlinx DIV] WARNING: unsupported rounding mode ", fshow(rm)); + end + endmethod + endinterface + + interface Get response; + method ActionValue#(Tuple2#(Double, FpuException)) get if(init.isReady); + fpDiv.deq; + Double val = unpack(fpDiv.resp); + Bit#(4) exBits = fpDiv.excep; + FpuException excep = defaultValue; + excep.underflow = exBits[0] == 1; + excep.overflow = exBits[1] == 1; + excep.invalid_op = exBits[2] == 1; + excep.divide_0 = exBits[3] == 1; + return tuple2(val, excep); + endmethod + endinterface +endmodule + +(* synthesize *) +module mkXilinxFpSqrtIP(Server#( + Tuple2#(Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); + WaitAutoReset#(8) init <- mkWaitAutoReset; + FpSqrtImport fpSqrt <- mkFpSqrtImport; + + interface Put request; + method Action put(Tuple2#(Double, FpuRoundMode) req) if(init.isReady); + let {a, rm} = req; + fpSqrt.enqA(pack(a)); + if(rm != Rnd_Nearest_Even) begin + $fdisplay(stderr, "[Xlinx SQRT] WARNING: unsupported rounding mode ", fshow(rm)); + end + endmethod + endinterface + + interface Get response; + method ActionValue#(Tuple2#(Double, FpuException)) get if(init.isReady); + fpSqrt.deq; + Double val = unpack(fpSqrt.resp); + Bit#(1) exBits = fpSqrt.excep; + FpuException excep = defaultValue; + excep.invalid_op = exBits[0] == 1; + return tuple2(val, excep); + endmethod + endinterface +endmodule + + +// import simulation +interface FpFmaSim; + method Bit#(64) fma(Bit#(64) a, Bit#(64) b, Bit#(64) c); +endinterface + +import "BVI" fp_fma_sim = +module mkFpFmaSim(FpFmaSim); + default_clock no_clock; + default_reset no_reset; + + method RES fma(A, B, C); +endmodule + +interface FpDivSim; + method Bit#(64) div(Bit#(64) a, Bit#(64) b); +endinterface + +import "BVI" fp_div_sim = +module mkFpDivSim(FpDivSim); + default_clock no_clock; + default_reset no_reset; + + method RES div(A, B); +endmodule + +interface FpSqrtSim; + method Bit#(64) sqrt(Bit#(64) a); +endinterface + +import "BVI" fp_sqrt_sim = +module mkFpSqrtSim(FpSqrtSim); + default_clock no_clock; + default_reset no_reset; + + method RES sqrt(A); +endmodule + +// adapt the simulation fp ops to Bluespec FPU interface +// Xilinx FPU has 2-element buffers inside +(* synthesize *) +module mkXilinxFpFmaSim(Server#( + Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); + FpFmaSim fpFma <- mkFpFmaSim; + FIFO#(Tuple2#(Double, FpuException)) respQ <- mkFIFO; + + // xilinx raw ip is a * b + c + // what we need to provide is in1 + in2 * in3 + // so in1 -> c, in2 -> a, in3 -> b + + interface Put request; + method Action put(Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode) req); + let {maybe_in1, in2, in3, rm} = req; + Double in1 = fromMaybe(zero(False), maybe_in1); + Double val = unpack(fpFma.fma(pack(in2), pack(in3), pack(in1))); + respQ.enq(tuple2(val, defaultValue)); + endmethod + endinterface + + interface response = toGet(respQ); +endmodule + +(* synthesize *) +module mkXilinxFpDivSim(Server#( + Tuple3#(Double, Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); + FpDivSim fpDiv <- mkFpDivSim; + FIFO#(Tuple2#(Double, FpuException)) respQ <- mkFIFO; + + interface Put request; + method Action put(Tuple3#(Double, Double, FpuRoundMode) req); + let {a, b, rm} = req; + Double val = unpack(fpDiv.div(pack(a), pack(b))); + respQ.enq(tuple2(val, defaultValue)); + endmethod + endinterface + + interface response = toGet(respQ); +endmodule + +(* synthesize *) +module mkXilinxFpSqrtSim(Server#( + Tuple2#(Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); + FpSqrtSim fpSqrt <- mkFpSqrtSim; + FIFO#(Tuple2#(Double, FpuException)) respQ <- mkFIFO; + + interface Put request; + method Action put(Tuple2#(Double, FpuRoundMode) req); + let {a, rm} = req; + Double val = unpack(fpSqrt.sqrt(pack(a))); + respQ.enq(tuple2(val, defaultValue)); + endmethod + endinterface + + interface response = toGet(respQ); +endmodule + +// wrap simulation and xilinx ip together +(* synthesize *) +module mkXilinxFpFma(Server#( + Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); +`ifdef BSIM + let m <- mkXilinxFpFmaSim; +`else + let m <- mkXilinxFpFmaIP; +`endif + return m; +endmodule + +(* synthesize *) +module mkXilinxFpDiv(Server#( + Tuple3#(Double, Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); +`ifdef BSIM + let m <- mkXilinxFpDivSim; +`else + let m <- mkXilinxFpDivIP; +`endif + return m; +endmodule + +(* synthesize *) +module mkXilinxFpSqrt(Server#( + Tuple2#(Double, FpuRoundMode), + Tuple2#(Double, FpuException) +)); +`ifdef BSIM + let m <- mkXilinxFpSqrtSim; +`else + let m <- mkXilinxFpSqrtIP; +`endif + return m; +endmodule diff --git a/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv new file mode 100644 index 0000000..342190b --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntDiv.bsv @@ -0,0 +1,203 @@ +import FIFOF::*; +import FIFO::*; + +import WaitAutoReset::*; + +export XilinxIntDiv(..); +export mkXilinxIntDiv; + +// import Xilinx IP core for unsigned division + +// axi tuser: user tag + info needed to handle divide by 0 + sign info +typedef struct { + Bool divByZero; + Bit#(64) divByZeroRem; // remainder in case of divide by zero + Bool signedDiv; // signed division (so dividend/divisor has been abs) + Bit#(1) quotientSign; // sign bit of quotient (in case of signedDiv) + Bit#(1) remainderSign; // sign bit of remainder (in case of signedDiv) + Bit#(8) tag; +} IntDivUser deriving(Bits, Eq, FShow); + +interface IntDivUnsignedImport; + method Action enqDividend(Bit#(64) dividend, IntDivUser user); + method Action enqDivisor(Bit#(64) divisor); + method Action deqResp; + method Bool respValid; + method Bit#(128) quotient_remainder; + method IntDivUser respUser; +endinterface + +import "BVI" int_div_unsigned = +module mkIntDivUnsignedImport(IntDivUnsignedImport); + default_clock clk(aclk, (*unused*) unused_gate); + default_reset no_reset; + + method enqDividend( + s_axis_dividend_tdata, s_axis_dividend_tuser + ) enable(s_axis_dividend_tvalid) ready(s_axis_dividend_tready); + + method enqDivisor( + s_axis_divisor_tdata + ) enable(s_axis_divisor_tvalid) ready(s_axis_divisor_tready); + + method deqResp() enable(m_axis_dout_tready) ready(m_axis_dout_tvalid); + method m_axis_dout_tvalid respValid; + method m_axis_dout_tdata quotient_remainder ready(m_axis_dout_tvalid); + method m_axis_dout_tuser respUser ready(m_axis_dout_tvalid); + + schedule (enqDividend) C (enqDividend); + schedule (enqDivisor) C (enqDivisor); + schedule (deqResp) C (deqResp); + schedule (enqDividend) CF (enqDivisor, deqResp); + schedule (enqDivisor) CF (deqResp); + schedule ( + respValid, + quotient_remainder, + respUser + ) CF ( + respValid, + quotient_remainder, + respUser, + enqDividend, + enqDivisor, + deqResp + ); +endmodule + +// simulation +module mkIntDivUnsignedSim(IntDivUnsignedImport); + FIFO#(Tuple2#(Bit#(64), IntDivUser)) dividendQ <- mkFIFO; + FIFO#(Bit#(64)) divisorQ <- mkFIFO; + FIFOF#(Tuple2#(Bit#(128), IntDivUser)) respQ <- mkSizedFIFOF(2); + + rule compute; + dividendQ.deq; + divisorQ.deq; + let {dividend, user} = dividendQ.first; + let divisor = divisorQ.first; + + UInt#(64) a = unpack(dividend); + UInt#(64) b = unpack(divisor); + Bit#(64) q = pack(a / b); + Bit#(64) r = pack(a % b); + respQ.enq(tuple2({q, r}, user)); + endrule + + method Action enqDividend(Bit#(64) dividend, IntDivUser user); + dividendQ.enq(tuple2(dividend, user)); + endmethod + + method Action enqDivisor(Bit#(64) divisor); + divisorQ.enq(divisor); + endmethod + + method Action deqResp; + respQ.deq; + endmethod + + method respValid = respQ.notEmpty; + + method quotient_remainder = tpl_1(respQ.first); + + method respUser = tpl_2(respQ.first); +endmodule + + +// Wrapper for user (add reset guard, check overflow/divided by 0). We cannot +// unify two dividers to one, because divider latency may not be a constant. +interface XilinxIntDiv#(type tagT); + method Action req(Bit#(64) dividend, Bit#(64) divisor, Bool signedDiv, tagT tag); + // response + method Action deqResp; + method Bool respValid; + method Bit#(64) quotient; + method Bit#(64) remainder; + method tagT respTag; +endinterface + +module mkXilinxIntDiv(XilinxIntDiv#(tagT)) provisos ( + Bits#(tagT, tagSz), Add#(tagSz, a__, 8) +); +`ifdef BSIM + IntDivUnsignedImport divIfc <- mkIntDivUnsignedSim; +`else + IntDivUnsignedImport divIfc <- mkIntDivUnsignedImport; +`endif + WaitAutoReset#(4) init <- mkWaitAutoReset; + + method Action req( + Bit#(64) dividend, Bit#(64) divisor, Bool signedDiv, tagT tag + ) if(init.isReady); + // compute the input ops to div unsigned IP + Bit#(1) dividend_sign = truncateLSB(dividend); + Bit#(1) divisor_sign = truncateLSB(divisor); + Bit#(64) a = dividend; + Bit#(64) b = divisor; + if(signedDiv) begin + if(dividend_sign == 1) begin + a = 0 - dividend; + end + if(divisor_sign == 1) begin + b = 0 - divisor; + end + end + // get the user struct (sign/divide by 0) + let user = IntDivUser { + divByZero: divisor == 0, + divByZeroRem: dividend, + signedDiv: signedDiv, + // quotient negative when dividend and divisor have different signs + quotientSign: dividend_sign ^ divisor_sign, + // remainder sign follows that of dividend + remainderSign: dividend_sign, + tag: zeroExtend(pack(tag)) + }; + divIfc.enqDividend(a, user); + divIfc.enqDivisor(b); + endmethod + + // we also put reset guard on deq port to prevent random signals before + // reset from dequing or corrupting axi states + method Action deqResp if(init.isReady); + divIfc.deqResp; + endmethod + + method respValid = divIfc.respValid && init.isReady; + + method Bit#(64) quotient if(init.isReady); + let user = divIfc.respUser; + Bit#(64) q; + if(user.divByZero) begin + q = maxBound; + end + else begin + q = truncateLSB(divIfc.quotient_remainder); + if(user.signedDiv && user.quotientSign == 1) begin + q = 0 - q; + end + // signed overflow is automatically handled + end + return q; + endmethod + + method Bit#(64) remainder if(init.isReady); + let user = divIfc.respUser; + Bit#(64) r; + if(user.divByZero) begin + r = user.divByZeroRem; + end + else begin + r = truncate(divIfc.quotient_remainder); + if(user.signedDiv && user.remainderSign == 1) begin + r = 0 - r; + end + // signed overflow is automatically handled + end + return r; + endmethod + + method tagT respTag if(init.isReady); + return unpack(truncate(divIfc.respUser.tag)); + endmethod +endmodule + diff --git a/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv new file mode 100644 index 0000000..1a91dc1 --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/XilinxIntMul.bsv @@ -0,0 +1,205 @@ +import Vector::*; +import FIFOF::*; +import Assert::*; + +export XilinxIntMulSign(..); +export XilinxIntMul(..); +export mkXilinxIntMul; + +// Xilinx int multiplier IP is a rigorous pipeline with a fixed latency. There +// is no back pressure in the raw IP. We will wrap it with flow control. To do +// this, we need to know the pipeline latency from macro +// XILINX_INT_MUL_LATENCY. + +typedef `XILINX_INT_MUL_LATENCY IntMulLatency; + +interface IntMulImport; + method Action req(Bit#(64) a, Bit#(64) b); + method Bit#(128) product; +endinterface + +import "BVI" int_mul_signed = +module mkIntMulSignedImport(IntMulImport); + default_clock clk(CLK, (*unused*) unused_gate); + default_reset no_reset; + + method req(A, B) enable((*inhigh*) EN); + method P product; + + schedule (req) C (req); + schedule (product) CF (req, product); +endmodule + +import "BVI" int_mul_unsigned = +module mkIntMulUnsignedImport(IntMulImport); + default_clock clk(CLK, (*unused*) unused_gate); + default_reset no_reset; + + method req(A, B) enable((*inhigh*) EN); + method P product; + + schedule (req) C (req); + schedule (product) CF (req, product); +endmodule + +import "BVI" int_mul_signed_unsigned = +module mkIntMulSignedUnsignedImport(IntMulImport); + default_clock clk(CLK, (*unused*) unused_gate); + default_reset no_reset; + + method req(A, B) enable((*inhigh*) EN); + method P product; + + schedule (req) C (req); + schedule (product) CF (req, product); +endmodule + +// mul req type +typedef enum { + Signed, + Unsigned, + SignedUnsigned +} XilinxIntMulSign deriving(Bits, Eq, FShow); + +// simulation +module mkIntMulSim#(XilinxIntMulSign sign)(IntMulImport); + RWire#(Bit#(128)) newReq <- mkRWire; + Vector#( + IntMulLatency, Reg#(Maybe#(Bit#(128))) + ) pipe <- replicateM(mkReg(Invalid)); + + (* fire_when_enabled, no_implicit_conditions *) + rule canon; + for(Integer i = 1; i < valueof(IntMulLatency); i = i+1) begin + pipe[i] <= pipe[i - 1]; + end + pipe[0] <= newReq.wget; + endrule + + method Action req(Bit#(64) a, Bit#(64) b); + Int#(128) op1 = (case(sign) + Signed, SignedUnsigned: (unpack(signExtend(a))); + default: (unpack(zeroExtend(a))); + endcase); + Int#(128) op2 = (case(sign) + Signed: (unpack(signExtend(b))); + default: (unpack(zeroExtend(b))); + endcase); + Int#(128) prod = op1 * op2; + newReq.wset(pack(prod)); + endmethod + + method Bit#(128) product = fromMaybe(?, pipe[valueof(IntMulLatency) - 1]); +endmodule + +// wrap up all mul IPs to have back pressure +interface XilinxIntMul#(type tagT); + method Action req(Bit#(64) a, Bit#(64) b, XilinxIntMulSign sign, tagT tag); + method Action deqResp; + method Bool respValid; + method Bit#(128) product; + method tagT respTag; +endinterface + +module mkXilinxIntMul(XilinxIntMul#(tagT)) provisos( + Bits#(tagT, tagSz), + // credit based flow control types + NumAlias#(TAdd#(IntMulLatency, 1), maxCredit), + Alias#(Bit#(TLog#(TAdd#(maxCredit, 1))), creditT) +); + // different multilpliers: WaitAutoReset is not needed, since mul is a + // pipeline with fixed latency +`ifdef BSIM + IntMulImport mulSigned <- mkIntMulSim(Signed); + IntMulImport mulUnsigned <- mkIntMulSim(Unsigned); + IntMulImport mulSignedUnsigned <- mkIntMulSim(SignedUnsigned); +`else + IntMulImport mulSigned <- mkIntMulSignedImport; + IntMulImport mulUnsigned <- mkIntMulUnsignedImport; + IntMulImport mulSignedUnsigned <- mkIntMulSignedUnsignedImport; +`endif + + // resp FIFO (unguarded) & flow ctrl credit + FIFOF#( + Tuple2#(Bit#(128), tagT) + ) respQ <- mkUGSizedFIFOF(valueof(maxCredit)); + Reg#(creditT) credit <- mkReg(fromInteger(valueof(maxCredit))); + + // shift regs for sign + tag + Vector#( + IntMulLatency, + Reg#(Maybe#(Tuple2#(XilinxIntMulSign, tagT))) + ) pipe <- replicateM(mkReg(Invalid)); + + // wire to catch input req + RWire#(Tuple2#(XilinxIntMulSign, tagT)) newReq <- mkRWire; + + // wire to catch deq + PulseWire deqEn <- mkPulseWire; + + (* fire_when_enabled, no_implicit_conditions *) + rule canon; + creditT nextCredit = credit; + // incr credit if resp FIFO is deq + if(deqEn) begin + if(nextCredit >= fromInteger(valueof(maxCredit))) begin + $fdisplay(stderr, "\n%m: ASSERT FAIL!!"); + dynamicAssert(False, "credit overflow"); + end + nextCredit = nextCredit + 1; + end + // enq resp FIFO if something is outputed from mul + if ( + pipe[valueof(IntMulLatency) - 1] matches tagged Valid {.sign, .tag} + ) begin + Bit#(128) prod = (case(sign) + Signed: (mulSigned.product); + Unsigned: (mulUnsigned.product); + SignedUnsigned: (mulSignedUnsigned.product); + default: (?); + endcase); + respQ.enq(tuple2(prod, tag)); + end + // shift pipe regs + for(Integer i = 1; i < valueof(IntMulLatency); i = i+1) begin + pipe[i] <= pipe[i - 1]; + end + pipe[0] <= newReq.wget; + // decr credit if new req is taken + if(isValid(newReq.wget)) begin + if(nextCredit == 0) begin + $fdisplay(stderr, "\n%m: ASSERT FAIL!!"); + dynamicAssert(False, "credit underflow"); + end + nextCredit = nextCredit - 1; + end + // update credit + credit <= nextCredit; + endrule + + method Action req(Bit#(64) a, Bit#(64) b, + XilinxIntMulSign sign, tagT tag) if(credit > 0); + case(sign) + Signed: mulSigned.req(a, b); + Unsigned: mulUnsigned.req(a, b); + SignedUnsigned: mulSignedUnsigned.req(a, b); + endcase + newReq.wset(tuple2(sign, tag)); // notify new req + endmethod + + method Action deqResp if(respQ.notEmpty); + respQ.deq; + deqEn.send; // notify deq resp + endmethod + + method respValid = respQ.notEmpty; + + method Bit#(128) product if(respQ.notEmpty); + return tpl_1(respQ.first); + endmethod + + method tagT respTag if(respQ.notEmpty); + return tpl_2(respQ.first); + endmethod +endmodule + diff --git a/src_Core/RISCY_OOO/fpgautils/lib/XilinxSyncFifo.bsv b/src_Core/RISCY_OOO/fpgautils/lib/XilinxSyncFifo.bsv new file mode 100644 index 0000000..180bb60 --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/lib/XilinxSyncFifo.bsv @@ -0,0 +1,181 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import Clocks::*; +import CBus::*; + +export mkXilinxSyncFifo; +export mkXilinxSyncBramFifo; + +// import sync fifos from Xilinx FIFO generator +interface SyncFifoImport#(numeric type w); + method Bool full; + method Action enq(Bit#(w) x); + method Bool empty; + method Bit#(w) first; + method Action deq; +endinterface + +import "BVI" sync_fifo_w32_d16 = +module mkSyncFifoImport_w32_d16#(Clock srcClk, Clock dstClk)(SyncFifoImport#(32)); + default_clock no_clock; + default_reset no_reset; + input_clock (wr_clk) = srcClk; + input_clock (rd_clk) = dstClk; + + method full full() clocked_by(srcClk) reset_by(no_reset); + method enq(din) enable(wr_en) clocked_by(srcClk) reset_by(no_reset); + method empty empty() clocked_by(dstClk) reset_by(no_reset); + method dout first() clocked_by(dstClk) reset_by(no_reset); + method deq() enable(rd_en) clocked_by(dstClk) reset_by(no_reset); + + schedule (full, enq) CF (empty, first, deq); + schedule (full) CF (full, enq); + schedule (enq) C (enq); + schedule (empty, first) CF (empty, first, deq); + schedule (deq) C (deq); +endmodule + +import "BVI" sync_bram_fifo_w36_d512 = +module mkSyncBramFifoImport_w36_d512#(Clock srcClk, Clock dstClk)(SyncFifoImport#(36)); + default_clock no_clock; + default_reset no_reset; + input_clock (wr_clk) = srcClk; + input_clock (rd_clk) = dstClk; + + method full full() clocked_by(srcClk) reset_by(no_reset); + method enq(din) enable(wr_en) clocked_by(srcClk) reset_by(no_reset); + method empty empty() clocked_by(dstClk) reset_by(no_reset); + method dout first() clocked_by(dstClk) reset_by(no_reset); + method deq() enable(rd_en) clocked_by(dstClk) reset_by(no_reset); + + schedule (full, enq) CF (empty, first, deq); + schedule (full) CF (full, enq); + schedule (enq) C (enq); + schedule (empty, first) CF (empty, first, deq); + schedule (deq) C (deq); +endmodule + +// wrap up imported BSV or simulation module +(* synthesize, no_default_clock, no_default_reset *) +module mkSyncFifo_w32_d16#(Clock srcClk, Reset srcRst, Clock dstClk)(SyncFIFOIfc#(Bit#(w))) provisos (NumAlias#(w, 32)); +`ifdef BSIM + SyncFIFOIfc#(Bit#(w)) q <- mkSyncFIFO(16, srcClk, srcRst, dstClk); + return q; +`else + SyncFifoImport#(w) q <- mkSyncFifoImport_w32_d16(srcClk, dstClk); + + method notFull = !q.full; + method Action enq(Bit#(w) x) if(!q.full); + q.enq(x); + endmethod + method notEmpty = !q.empty; + method Bit#(w) first if(!q.empty); + return q.first; + endmethod + method Action deq if(!q.empty); + q.deq; + endmethod +`endif +endmodule + +(* synthesize, no_default_clock, no_default_reset *) +module mkSyncBramFifo_w36_d512#(Clock srcClk, Reset srcRst, Clock dstClk)(SyncFIFOIfc#(Bit#(w))) provisos (NumAlias#(w, 36)); +`ifdef BSIM + SyncFIFOIfc#(Bit#(w)) q <- mkSyncFIFO(512, srcClk, srcRst, dstClk); + return q; +`else + SyncFifoImport#(w) q <- mkSyncBramFifoImport_w36_d512(srcClk, dstClk); + + method notFull = !q.full; + method Action enq(Bit#(w) x) if(!q.full); + q.enq(x); + endmethod + method notEmpty = !q.empty; + method Bit#(w) first if(!q.empty); + return q.first; + endmethod + method Action deq if(!q.empty); + q.deq; + endmethod +`endif +endmodule + +// generate parameterized-width fifo from fixed-with fifo +module mkGenXilinxSyncFifo#( + function module#(SyncFIFOIfc#(Bit#(fifoW))) mkfifo(Clock srcClk, Reset srcRst, Clock dstClk), + Clock srcClk, Reset srcRst, Clock dstClk +)(SyncFIFOIfc#(t)) provisos( + Bits#(t, dataW), + Add#(1, a__, dataW), + NumAlias#(fifoNum, TDiv#(dataW, fifoW)) +); + Vector#(fifoNum, SyncFIFOIfc#(Bit#(fifoW))) fifos <- replicateM(mkfifo(srcClk, srcRst, dstClk)); + + function Bool getNotFull(SyncFIFOIfc#(Bit#(fifoW)) ifc) = ifc.notFull; + Bool isNotFull = all(getNotFull, fifos); + + function Bool getNotEmpty(SyncFIFOIfc#(Bit#(fifoW)) ifc) = ifc.notEmpty; + Bool isNotEmpty = all(getNotEmpty, fifos); + + method notFull = isNotFull; + + method Action enq(t x); + Vector#(fifoNum, Bit#(fifoW)) data = unpack(zeroExtendNP(pack(x))); + for(Integer i = 0; i < valueof(fifoNum); i = i+1) begin + fifos[i].enq(data[i]); + end + endmethod + + method notEmpty = isNotEmpty; + + method t first; + Vector#(fifoNum, Bit#(fifoW)) data = ?; + for(Integer i = 0; i < valueof(fifoNum); i = i+1) begin + data[i] = fifos[i].first; + end + return unpack(truncateNP(pack(data))); + endmethod + + method Action deq; + for(Integer i = 0; i < valueof(fifoNum); i = i+1) begin + fifos[i].deq; + end + endmethod +endmodule + +module mkXilinxSyncFifo#(Clock srcClk, Reset srcRst, Clock dstClk)(SyncFIFOIfc#(t)) provisos( + Bits#(t, dataW), Add#(1, a__, dataW) +); + SyncFIFOIfc#(t) m <- mkGenXilinxSyncFifo(mkSyncFifo_w32_d16, srcClk, srcRst, dstClk); + return m; +endmodule + +module mkXilinxSyncBramFifo#(Clock srcClk, Reset srcRst, Clock dstClk)(SyncFIFOIfc#(t)) provisos( + Bits#(t, dataW), Add#(1, a__, dataW) +); + SyncFIFOIfc#(t) m <- mkGenXilinxSyncFifo(mkSyncBramFifo_w36_d512, srcClk, srcRst, dstClk); + return m; +endmodule + diff --git a/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_div_sim.v b/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_div_sim.v new file mode 100644 index 0000000..ecb396a --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_div_sim.v @@ -0,0 +1,8 @@ + +module fp_div_sim( + input [63:0] A, + input [63:0] B, + output [63:0] RES +); + assign RES = $realtobits($bitstoreal(A) / $bitstoreal(B)); +endmodule diff --git a/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_fma_sim.v b/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_fma_sim.v new file mode 100644 index 0000000..58ed9ea --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_fma_sim.v @@ -0,0 +1,9 @@ + +module fp_fma_sim( + input [63:0] A, + input [63:0] B, + input [63:0] C, + output [63:0] RES +); + assign RES = $realtobits($bitstoreal(A) * $bitstoreal(B) + $bitstoreal(C)); +endmodule diff --git a/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_sqrt_sim.v b/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_sqrt_sim.v new file mode 100644 index 0000000..a9dc942 --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/xilinx/fpu/fp_sqrt_sim.v @@ -0,0 +1,7 @@ + +module fp_sqrt_sim( + input [63:0] A, + output [63:0] RES +); + assign RES = $realtobits($sqrt($bitstoreal(A))); +endmodule diff --git a/src_Core/RISCY_OOO/fpgautils/xilinx/reset_regs/reset_guard.v b/src_Core/RISCY_OOO/fpgautils/xilinx/reset_regs/reset_guard.v new file mode 100644 index 0000000..cc9f0e5 --- /dev/null +++ b/src_Core/RISCY_OOO/fpgautils/xilinx/reset_regs/reset_guard.v @@ -0,0 +1,69 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// This module outputs a 1-bit signal +// The signal is initially 0 after programming the FPGA +// XXX: everything should be inited to 0 after programming + +// When a reset arrives, the module starts counting +// In N cycles after the reset, the signal becomes 1 +// This signal can be used as a guard for sync fifo operations + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + +module reset_guard( + input CLK, + input RST, + output IS_READY +); + reg ready = 0; + reg rst_done = 0; + + always@(posedge CLK) begin + if(RST == `BSV_RESET_VALUE) begin + ready <= 0; + rst_done <= 1; + // synopsys translate_off + if(!rst_done) begin + $display("[reset_guard] %t %m reset happen", $time); + end + // synopsys translate_on + end + else if(rst_done) begin + ready <= 1; + // synopsys translate_off + if(!ready) begin + $display("[reset_guard] %t %m guard ready", $time); + end + // synopsys translate_on + end + end + + assign IS_READY = ready; +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/AluExePipeline.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/AluExePipeline.bsv new file mode 100644 index 0000000..01c9a3d --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/AluExePipeline.bsv @@ -0,0 +1,382 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Vector::*; +import FIFO::*; +import GetPut::*; +import BuildVector::*; +import Cntrs::*; +import Types::*; +import ProcTypes::*; +import SynthParam::*; +import Exec::*; +import Performance::*; +import BrPred::*; +import DirPredictor::*; +import ReservationStationEhr::*; +import ReservationStationAlu::*; +import ReorderBuffer::*; +import SpecFifo::*; +import HasSpecBits::*; +import Bypass::*; + +// ALU pipeline has 4 stages +// dispatch -> reg read -> exe -> finish (write reg) +// bypass is sent out from the end of exe stage +// and reg read stage will recv bypass + +typedef struct { + // inst info + DecodedInst dInst; + PhyRegs regs; + InstTag tag; + DirPredTrainInfo dpTrain; + // specualtion + Maybe#(SpecTag) spec_tag; +} AluDispatchToRegRead deriving(Bits, Eq, FShow); + +typedef struct { + // inst info + DecodedInst dInst; + Maybe#(PhyDst) dst; + InstTag tag; + DirPredTrainInfo dpTrain; + // src reg vals & pc & ppc + Data rVal1; + Data rVal2; + Addr pc; + Addr ppc; + // specualtion + Maybe#(SpecTag) spec_tag; +} AluRegReadToExe deriving(Bits, Eq, FShow); + +typedef struct { + // inst info + IType iType; + Maybe#(PhyDst) dst; + InstTag tag; + DirPredTrainInfo dpTrain; + // result + Data data; // alu compute result + Maybe#(Data) csrData; // data to write CSR file + ControlFlow controlFlow; + // speculation + Maybe#(SpecTag) spec_tag; +} AluExeToFinish deriving(Bits, Eq, FShow); + +// XXX currently ALU/Br should not have any exception, so we don't have cause feild above +// TODO FIXME In future, if branch target is unaligned to 4 bytes, we may have exception +// and probably JR/JAL should NOT write dst reg when exception happens +// However, currently JR/JAL renaming is included in the previous checkpoint +// so we need to explicitly check exception and don't write reg + +// synthesized pipeline fifos +typedef SpecFifo_SB_deq_enq_C_deq_enq#(1, AluDispatchToRegRead) AluDispToRegFifo; +(* synthesize *) +module mkAluDispToRegFifo(AluDispToRegFifo); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(False); + return m; +endmodule + +// this one must be 1 elem FIFO, otherwise we cannot get correct bypass +typedef SpecFifo_SB_deq_enq_C_deq_enq#(1, AluRegReadToExe) AluRegToExeFifo; +(* synthesize *) +module mkAluRegToExeFifo(AluRegToExeFifo); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(False); + return m; +endmodule + +// this one must be 1 elem FIFO, otherwise we cannot get correct bypass +typedef SpecFifo_SB_deq_enq_SB_deq_wrong_C_enq#(1, AluExeToFinish) AluExeToFinFifo; +(* synthesize *) +module mkAluExeToFinFifo(AluExeToFinFifo); + let m <- mkSpecFifo_SB_deq_enq_SB_deq_wrong_C_enq(False); + return m; +endmodule + +typedef struct { + Addr pc; + Addr nextPc; + IType iType; + Bool taken; + DirPredTrainInfo dpTrain; + Bool mispred; +} FetchTrainBP deriving(Bits, Eq, FShow); + +interface AluExeInput; + // conservative scoreboard check in reg read stage + method RegsReady sbCons_lazyLookup(PhyRegs r); + // Phys reg file + method Data rf_rd1(PhyRIndx rindx); + method Data rf_rd2(PhyRIndx rindx); + // CSR file + method Data csrf_rd(CSR csr); + // ROB + method Addr rob_getPC(InstTag t); + method Addr rob_getPredPC(InstTag t); + method Action rob_setExecuted(InstTag t, Maybe#(Data) csrData, ControlFlow cf); + // Fetch stage + method Action fetch_train_predictors(FetchTrainBP train); + + // global broadcast methods + // set aggressive sb & wake up inst in RS + method Action setRegReadyAggr(PhyRIndx dst); + // send bypass from exe and finish stage + interface Vector#(2, SendBypass) sendBypass; + // write reg file & set conservative sb + method Action writeRegFile(PhyRIndx dst, Data data); + // redirect + method Action redirect(Addr new_pc, SpecTag spec_tag, InstTag inst_tag); + // spec update + method Action correctSpec(SpecTag t); + + // performance + method Bool doStats; +endinterface + +interface AluExePipeline; + // recv bypass from exe and finish stages of each ALU pipeline + interface Vector#(TMul#(2, AluExeNum), RecvBypass) recvBypass; + interface ReservationStationAlu rsAluIfc; + interface SpeculationUpdate specUpdate; + method Data getPerf(ExeStagePerfType t); +endinterface + +module mkAluExePipeline#(AluExeInput inIfc)(AluExePipeline); + Bool verbose = True; + + // alu reservation station + ReservationStationAlu rsAlu <- mkReservationStationAlu; + // pipeline fifos + let dispToRegQ <- mkAluDispToRegFifo; + let regToExeQ <- mkAluRegToExeFifo; + let exeToFinQ <- mkAluExeToFinFifo; + // wire to recv bypass + Vector#(TMul#(2, AluExeNum), RWire#(Tuple2#(PhyRIndx, Data))) bypassWire <- replicateM(mkRWire); + // index to send bypass, ordering doesn't matter + Integer exeSendBypassPort = 0; + Integer finishSendBypassPort = 1; + +`ifdef PERF_COUNT + // performance counters + Count#(Data) exeRedirectBrCnt <- mkCount(0); + Count#(Data) exeRedirectJrCnt <- mkCount(0); + Count#(Data) exeRedirectOtherCnt <- mkCount(0); +`endif + + rule doDispatchAlu; + rsAlu.doDispatch; + let x = rsAlu.dispatchData; + if(verbose) $display("[doDispatchAlu] ", fshow(x)); + + // set reg ready aggressively + if(x.regs.dst matches tagged Valid .dst) begin + inIfc.setRegReadyAggr(dst.indx); + end + + // go to next stage + dispToRegQ.enq(ToSpecFifo { + data: AluDispatchToRegRead { + dInst: x.data.dInst, + regs: x.regs, + tag: x.tag, + dpTrain: x.data.dpTrain, + spec_tag: x.spec_tag + }, + spec_bits: x.spec_bits + }); + endrule + + rule doRegReadAlu; + dispToRegQ.deq; + let dispToReg = dispToRegQ.first; + let x = dispToReg.data; + if(verbose) $display("[doRegReadAlu] ", fshow(dispToReg)); + + // check conservative scoreboard + let regsReady = inIfc.sbCons_lazyLookup(x.regs); + + // get rVal1 (check bypass) + Data rVal1 = ?; + if(x.dInst.csr matches tagged Valid .csr) begin + rVal1 = inIfc.csrf_rd(csr); + end + else if(x.regs.src1 matches tagged Valid .src1) begin + rVal1 <- readRFBypass(src1, regsReady.src1, inIfc.rf_rd1(src1), bypassWire); + end + + // get rVal2 (check bypass) + Data rVal2 = ?; + if(x.regs.src2 matches tagged Valid .src2) begin + rVal2 <- readRFBypass(src2, regsReady.src2, inIfc.rf_rd2(src2), bypassWire); + end + + // get PC and PPC + let pc = inIfc.rob_getPC(x.tag); + let ppc = inIfc.rob_getPredPC(x.tag); + + // go to next stage + regToExeQ.enq(ToSpecFifo { + data: AluRegReadToExe { + dInst: x.dInst, + dst: x.regs.dst, + tag: x.tag, + dpTrain: x.dpTrain, + rVal1: rVal1, + rVal2: rVal2, + pc: pc, + ppc: ppc, + spec_tag: x.spec_tag + }, + spec_bits: dispToReg.spec_bits + }); + endrule + + rule doExeAlu; + regToExeQ.deq; + let regToExe = regToExeQ.first; + let x = regToExe.data; + if(verbose) $display("[doExeAlu] ", fshow(regToExe)); + + // execution + ExecResult exec_result = basicExec(x.dInst, x.rVal1, x.rVal2, x.pc, x.ppc); + + // when inst needs to store csrData in ROB, it must have iType = Csr, cannot mispredict + if(isValid(x.dInst.csr)) begin + doAssert(x.dInst.iType == Csr, "Only Csr inst needs to update csrData in ROB"); + doAssert(!exec_result.controlFlow.mispredict, "Csr inst cannot mispredict"); + doAssert(exec_result.controlFlow.nextPc == x.ppc && x.ppc == x.pc + 4, "Csr inst ppc = pc+4"); + end + + // send bypass + if(x.dst matches tagged Valid .dst) begin + inIfc.sendBypass[exeSendBypassPort].send(dst.indx, exec_result.data); + end + + // go to next stage + exeToFinQ.enq(ToSpecFifo { + data: AluExeToFinish { + iType: x.dInst.iType, + dst: x.dst, + tag: x.tag, + dpTrain: x.dpTrain, + data: exec_result.data, + csrData: isValid(x.dInst.csr) ? Valid (exec_result.csrData) : Invalid, + controlFlow: exec_result.controlFlow, + spec_tag: x.spec_tag + }, + spec_bits: regToExe.spec_bits + }); + endrule + + rule doFinishAlu; + exeToFinQ.deq; + let exeToFin = exeToFinQ.first; + let x = exeToFin.data; + if(verbose) $display("[doFinishAlu] ", fshow(exeToFin)); + + // send bypass & write reg file + if(x.dst matches tagged Valid .dst) begin + inIfc.sendBypass[finishSendBypassPort].send(dst.indx, x.data); + inIfc.writeRegFile(dst.indx, x.data); + end + + // update the instruction in the reorder buffer. + inIfc.rob_setExecuted( + x.tag, + x.csrData, + x.controlFlow + ); + + // handle spec tags for branch predictions + (* split *) + if (x.controlFlow.mispredict) (* nosplit *) begin + // wrong branch predictin, we must have spec tag + doAssert(isValid(x.spec_tag), "mispredicted branch must have spec tag"); + inIfc.redirect(x.controlFlow.nextPc, validValue(x.spec_tag), x.tag); + // must be a branch, train branch predictor + doAssert(x.iType == Jr || x.iType == Br, "only jr and br can mispredict"); + inIfc.fetch_train_predictors(FetchTrainBP { + pc: x.controlFlow.pc, + nextPc: x.controlFlow.nextPc, + iType: x.iType, + taken: x.controlFlow.taken, + dpTrain: x.dpTrain, + mispred: True + }); +`ifdef PERF_COUNT + // performance counter + if(inIfc.doStats) begin + case(x.iType) + Br: exeRedirectBrCnt.incr(1); + Jr: exeRedirectJrCnt.incr(1); + default: exeRedirectOtherCnt.incr(1); + endcase + end +`endif + end + else (* nosplit *) begin + // release spec tag + if (x.spec_tag matches tagged Valid .valid_spec_tag) begin + inIfc.correctSpec(valid_spec_tag); + end + // train branch predictor if needed + // since we can only do 1 training in a cycle, split the rule + // XXX not training JAL, reduce chance of conflicts + if(x.iType == Jr || x.iType == Br) begin + inIfc.fetch_train_predictors(FetchTrainBP { + pc: x.controlFlow.pc, + nextPc: x.controlFlow.nextPc, + iType: x.iType, + taken: x.controlFlow.taken, + dpTrain: x.dpTrain, + mispred: False + }); + end + end + endrule + + interface recvBypass = map(getRecvBypassIfc, bypassWire); + + interface rsAluIfc = rsAlu; + + interface specUpdate = joinSpeculationUpdate(vec( + rsAlu.specUpdate, + dispToRegQ.specUpdate, + regToExeQ.specUpdate, + exeToFinQ.specUpdate + )); + + method Data getPerf(ExeStagePerfType t); + return (case(t) +`ifdef PERF_COUNT + ExeRedirectBr: exeRedirectBrCnt; + ExeRedirectJr: exeRedirectJrCnt; + ExeRedirectOther: exeRedirectOtherCnt; +`endif + default: 0; + endcase); + endmethod +endmodule + diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/CommitStage.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/CommitStage.bsv new file mode 100644 index 0000000..9a5d0f1 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/CommitStage.bsv @@ -0,0 +1,756 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Vector::*; +import GetPut::*; +import Cntrs::*; +import ConfigReg::*; +import FIFO::*; +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import Performance::*; +import ReorderBuffer::*; +import ReorderBufferSynth::*; +import RenamingTable::*; +import CsrFile::*; +import StoreBuffer::*; +import VerificationPacket::*; +import RenameDebugIF::*; + +typedef struct { + // info about the inst blocking at ROB head + Addr pc; + IType iType; + Maybe#(Trap) trap; + RobInstState state; + Bool claimedPhyReg; + Bool ldKilled; + Bool memAccessAtCommit; + Bool lsqAtCommitNotified; + Bool nonMMIOStDone; + Bool epochIncremented; + SpecBits specBits; + // info about LSQ/TLB + Bool stbEmpty; + Bool stqEmpty; + Bool tlbNoPendingReq; + // CSR info: previlige mode + Bit#(2) prv; + // inst count + Data instCount; +} CommitStuck deriving(Bits, Eq, FShow); + +interface CommitInput; + // func units + interface ReorderBufferSynth robIfc; + interface RegRenamingTable rtIfc; + interface CsrFile csrfIfc; + // no stores + method Bool stbEmpty; + method Bool stqEmpty; + // notify LSQ that inst has reached commit + interface Vector#(SupSize, Put#(LdStQTag)) lsqSetAtCommit; + // TLB has stopped processing now + method Bool tlbNoPendingReq; + // set flags + method Action setFlushTlbs; + method Action setUpdateVMInfo; + method Action setFlushReservation; + method Action setFlushBrPred; // security + method Action setFlushCaches; // security + method Action setReconcileI; // recocile I$ + method Action setReconcileD; // recocile D$ + // redirect + method Action killAll; + method Action redirectPc(Addr trap_pc); + method Action setFetchWaitRedirect; + method Action incrementEpoch; + // record if we commit a CSR inst or interrupt + method Action commitCsrInstOrInterrupt; + // performance + method Bool doStats; + // deadlock check + method Bool checkDeadlock; +endinterface + +typedef struct { + RenameError err; + Addr pc; + IType iType; + Maybe#(Trap) trap; + SpecBits specBits; +} RenameErrInfo deriving(Bits, Eq, FShow); + +interface CommitStage; + // performance + method Data getPerf(ComStagePerfType t); + // deadlock check + interface Get#(CommitStuck) commitInstStuck; + interface Get#(CommitStuck) commitUserInstStuck; + // rename debug + method Action startRenameDebug; + interface Get#(RenameErrInfo) renameErr; +endinterface + +// we apply actions the end of commit rule +// use struct to record actions to be done +typedef struct { + Addr pc; + Addr addr; + Trap trap; +} CommitTrap deriving(Bits, Eq, FShow); + +module mkCommitStage#(CommitInput inIfc)(CommitStage); + Bool verbose = True; + + // func units + ReorderBufferSynth rob = inIfc.robIfc; + RegRenamingTable regRenamingTable = inIfc.rtIfc; + CsrFile csrf = inIfc.csrfIfc; + + // FIXME FIXME FIXME wires to set atCommit in LSQ: avoid scheduling cycle. + // Using wire should be fine, because LSQ does not need to see atCommit + // signal immediately. XXX The concern is about killAll which checks + // atCommit in LSQ, but we never call killAll and setAtCommit in the same + // cycle. + Vector#(SupSize, RWire#(LdStQTag)) setLSQAtCommit <- replicateM(mkRWire); + + for(Integer i = 0; i< valueof(SupSize); i = i+1) begin + (* fire_when_enabled, no_implicit_conditions *) + rule doSetLSQAtCommit(setLSQAtCommit[i].wget matches tagged Valid .tag); + inIfc.lsqSetAtCommit[i].put(tag); + endrule + end + + // commit stage performance counters +`ifdef PERF_COUNT + // inst + Count#(Data) instCnt <- mkCount(0); + Count#(Data) userInstCnt <- mkCount(0); + Count#(Data) supComUserCnt <- mkCount(0); + // branch/jump inst + Count#(Data) comBrCnt <- mkCount(0); + Count#(Data) comJmpCnt <- mkCount(0); + Count#(Data) comJrCnt <- mkCount(0); + // mem inst + Count#(Data) comLdCnt <- mkCount(0); + Count#(Data) comStCnt <- mkCount(0); + Count#(Data) comLrCnt <- mkCount(0); + Count#(Data) comScCnt <- mkCount(0); + Count#(Data) comAmoCnt <- mkCount(0); + // load mispeculation + Count#(Data) comLdKillByLdCnt <- mkCount(0); + Count#(Data) comLdKillByStCnt <- mkCount(0); + Count#(Data) comLdKillByCacheCnt <- mkCount(0); + // exception/sys inst related + Count#(Data) comSysCnt <- mkCount(0); + Count#(Data) excepCnt <- mkCount(0); + Count#(Data) interruptCnt <- mkCount(0); + // flush tlb + Count#(Data) flushTlbCnt <- mkCount(0); + // flush security + Count#(Data) flushSecurityCnt <- mkCount(0); + Count#(Data) flushBPCnt <- mkCount(0); + Count#(Data) flushCacheCnt <- mkCount(0); +`endif + + // deadlock check +`ifdef CHECK_DEADLOCK + // timer to check deadlock + Reg#(DeadlockTimer) commitInstTimer <- mkReg(0); + Reg#(DeadlockTimer) commitUserInstTimer <- mkReg(0); + // FIFOs to output deadlock info + FIFO#(CommitStuck) commitInstStuckQ <- mkFIFO1; + FIFO#(CommitStuck) commitUserInstStuckQ <- mkFIFO1; + // wires to indicate that deadlock is reported, so reset timers + PulseWire commitInstStuckSent <- mkPulseWire; + PulseWire commitUserInstStuckSent <- mkPulseWire; + // wires to reset timers since processor is making progress + PulseWire commitInst <- mkPulseWire; + PulseWire commitUserInst <- mkPulseWire; + + function CommitStuck commitStuck; + let x = rob.deqPort[0].deq_data; + return CommitStuck { + pc: x.pc, + iType: x.iType, + trap: x.trap, + state: x.rob_inst_state, + claimedPhyReg: x.claimed_phy_reg, + ldKilled: isValid(x.ldKilled), + memAccessAtCommit: x.memAccessAtCommit, + lsqAtCommitNotified: x.lsqAtCommitNotified, + nonMMIOStDone: x.nonMMIOStDone, + epochIncremented: x.epochIncremented, + specBits: x.spec_bits, + stbEmpty: inIfc.stbEmpty, + stqEmpty: inIfc.stqEmpty, + tlbNoPendingReq: inIfc.tlbNoPendingReq, + prv: csrf.decodeInfo.prv, + instCount: csrf.rd(CSRinstret) + }; + endfunction + + (* fire_when_enabled *) + rule checkDeadlock_commitInst(inIfc.checkDeadlock && commitInstTimer == maxBound); + commitInstStuckQ.enq(commitStuck); + commitInstStuckSent.send; + endrule + + (* fire_when_enabled *) + rule checkDeadlock_commitUserInst(inIfc.checkDeadlock && commitUserInstTimer == maxBound); + commitUserInstStuckQ.enq(commitStuck); + commitUserInstStuckSent.send; + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule incrDeadlockTimer(inIfc.checkDeadlock); + function DeadlockTimer getNextTimer(DeadlockTimer t); + return t == maxBound ? maxBound : t + 1; + endfunction + commitInstTimer <= (commitInst || commitInstStuckSent) ? 0 : getNextTimer(commitInstTimer); + commitUserInstTimer <= (commitUserInst || commitUserInstStuckSent) ? 0 : getNextTimer(commitUserInstTimer); + endrule +`endif + +`ifdef RENAME_DEBUG + // rename debug + Reg#(Bool) renameDebugStarted <- mkConfigReg(False); + Reg#(Maybe#(RenameErrInfo)) renameErrInfo <- mkConfigReg(Invalid); + Bool canSetRenameErr = renameDebugStarted && renameErrInfo == Invalid; // only set err info once + // only send 1 error msg + FIFO#(RenameErrInfo) renameErrQ <- mkFIFO1; + + rule sendRenameErr(renameDebugStarted &&& renameErrInfo matches tagged Valid .info); + renameErrQ.enq(info); + renameDebugStarted <= False; + endrule +`endif + + // we commit trap in two cycles: first cycle deq ROB and flush; second + // cycle handles trap, redirect and handles system consistency + Reg#(Maybe#(CommitTrap)) commitTrap <- mkReg(Invalid); // saves new pc here + + // maintain system consistency when system state (CSR) changes or for security + function Action makeSystemConsistent(Bool flushTlb, + Bool flushSecurity, + Bool reconcileI); + action +`ifndef SECURITY + flushSecurity = False; +`endif + +`ifndef DISABLE_SECURE_FLUSH_TLB + if(flushTlb || flushSecurity) begin +`else + if(flushTlb) begin +`endif + inIfc.setFlushTlbs; +`ifdef PERF_COUNT + if(inIfc.doStats) begin + flushTlbCnt.incr(1); + end +`endif + end + // notify TLB to keep update of CSR changes + inIfc.setUpdateVMInfo; + // always wait store buffer and SQ to be empty + when(inIfc.stbEmpty && inIfc.stqEmpty, noAction); + // We wait TLB to finish all requests and become sync with memory. + // Notice that currently TLB is read only, so TLB is always in sync + // with memory (i.e., there is no write to commit to memory). Since all + // insts have been killed, nothing can be issued to D TLB at this time. + // Since fetch stage is set to wait for redirect, fetch1 stage is + // stalled, and nothing can be issued to I TLB at this time. + // Therefore, we just need to make sure that I and D TLBs are not + // handling any miss req. Besides, when I and D TLBs do not have any + // miss req, L2 TLB must be idling. + when(inIfc.tlbNoPendingReq, noAction); + // yield load reservation in cache + inIfc.setFlushReservation; + + // flush for security, we can delay the stall for fetch-empty and + // wrong-path-load-empty until we really do the flush. This delay is + // valid because these wrong path inst/req will not interfere with + // whatever CSR changes we are making now. + if(flushSecurity) begin +`ifdef PERF_COUNT + if(inIfc.doStats) begin + flushSecurityCnt.incr(1); + end +`endif + +`ifndef DISABLE_SECURE_FLUSH_BP + inIfc.setFlushBrPred; +`ifdef PERF_COUNT + if(inIfc.doStats) begin + flushBPCnt.incr(1); + end +`endif +`endif + +`ifndef DISABLE_SECURE_FLUSH_CACHE + inIfc.setFlushCaches; +`ifdef PERF_COUNT + if(inIfc.doStats) begin + flushCacheCnt.incr(1); + end +`endif +`endif + end + +`ifdef SELF_INV_CACHE + // reconcile I$ + if(reconcileI) begin + inIfc.setReconcileI; + end +`ifdef SYSTEM_SELF_INV_L1D + // FIXME is this reconcile of D$ necessary? + inIfc.setReconcileD; +`endif +`endif + endaction + endfunction + + // TODO Currently we don't check spec bits == 0 when we commit an + // instruction. This is because killings of wrong path instructions are + // done in a single cycle. However, when we make killings distributed or + // pipelined, then we need to check spec bits at commit port. + + rule doCommitTrap_flush( + !isValid(commitTrap) &&& + rob.deqPort[0].deq_data.trap matches tagged Valid .trap + ); + rob.deqPort[0].deq; + let x = rob.deqPort[0].deq_data; + if(verbose) $display("[doCommitTrap] ", fshow(x)); + + // record trap info + Addr vaddr = ?; + if(x.ppc_vaddr_csrData matches tagged VAddr .va) begin + vaddr = va; + end + commitTrap <= Valid (CommitTrap { + trap: trap, + pc: x.pc, + addr: vaddr + }); + + // flush everything. Only increment epoch and stall fetch when we haven + // not done it yet (we may have already done them at rename stage) + inIfc.killAll; + if(!x.epochIncremented) begin + inIfc.incrementEpoch; + inIfc.setFetchWaitRedirect; + end + + // faulting mem inst may have claimed phy reg, we should not commit it; + // instead, we kill the renaming by calling killAll + +`ifdef PERF_COUNT + // performance counter + if(inIfc.doStats) begin + if(trap matches tagged Exception .e) begin + excepCnt.incr(1); + end + else begin + interruptCnt.incr(1); + end + end +`endif + + // checks + doAssert(x.rob_inst_state == Executed, "must be executed"); + doAssert(x.spec_bits == 0, "cannot have spec bits"); + endrule + + rule doCommitTrap_handle(commitTrap matches tagged Valid .trap); + // reset commitTrap + commitTrap <= Invalid; + + // notify commit of interrupt (so MMIO pRq may be handled) + if(trap.trap matches tagged Interrupt .inter) begin + inIfc.commitCsrInstOrInterrupt; + end + + // trap handling & redirect + let new_pc <- csrf.trap(trap.trap, trap.pc, trap.addr); + inIfc.redirectPc(new_pc); + + // system consistency + // TODO spike flushes TLB here, but perhaps it is because spike's TLB + // does not include prv info, and it has to flush when prv changes. + // XXX As approximation, Trap may cause context switch, so flush for + // security + makeSystemConsistent(False, True, False); + endrule + + // commit misspeculated load + rule doCommitKilledLd( + !isValid(commitTrap) &&& + !isValid(rob.deqPort[0].deq_data.trap) &&& + rob.deqPort[0].deq_data.ldKilled matches tagged Valid .killBy + ); + rob.deqPort[0].deq; + let x = rob.deqPort[0].deq_data; + if(verbose) $display("[doCommitKilledLd] ", fshow(x)); + + // kill everything, redirect, and increment epoch + inIfc.killAll; + inIfc.redirectPc(x.pc); + inIfc.incrementEpoch; + + // the killed Ld should have claimed phy reg, we should not commit it; + // instead, we have kill the renaming by calling killAll + +`ifdef PERF_COUNT + if(inIfc.doStats) begin + case(killBy) + Ld: comLdKillByLdCnt.incr(1); + St: comLdKillByStCnt.incr(1); + Cache: comLdKillByCacheCnt.incr(1); + endcase + end +`endif + + // checks + doAssert(!x.epochIncremented, "cannot increment epoch before"); + doAssert(x.rob_inst_state == Executed, "must be executed"); + doAssert(x.spec_bits == 0, "cannot have spec bits"); + endrule + + // commit system inst + rule doCommitSystemInst( + !isValid(commitTrap) && + !isValid(rob.deqPort[0].deq_data.trap) && + !isValid(rob.deqPort[0].deq_data.ldKilled) && + rob.deqPort[0].deq_data.rob_inst_state == Executed && + isSystem(rob.deqPort[0].deq_data.iType) + ); + rob.deqPort[0].deq; + let x = rob.deqPort[0].deq_data; + if(verbose) $display("[doCommitSystemInst] ", fshow(x)); + + // we claim a phy reg for every inst, so commit its renaming + regRenamingTable.commit[0].commit; + + Bool write_satp = False; // flush tlb when satp csr is modified + Bool flush_security = False; // flush for security when the flush csr is written + if(x.iType == Csr) begin + // notify commit of CSR (so MMIO pRq may be handled) + inIfc.commitCsrInstOrInterrupt; + // write CSR + let csr_idx = validValue(x.csr); + Data csr_data = ?; + if(x.ppc_vaddr_csrData matches tagged CSRData .d) begin + csr_data = d; + end + else begin + doAssert(False, "must have csr data"); + end + csrf.csrInstWr(csr_idx, csr_data); + // check if satp is modified or not + write_satp = csr_idx == CSRsatp; +`ifdef SECURITY + flush_security = csr_idx == CSRmflush; +`endif + end + + // redirect (Sret and Mret redirect pc is got from CSRF) + Addr next_pc = x.ppc_vaddr_csrData matches tagged PPC .ppc ? ppc : (x.pc + 4); + doAssert(next_pc == x.pc + 4, "ppc must be pc + 4"); + if(x.iType == Sret) begin + next_pc <- csrf.sret; + end + else if(x.iType == Mret) begin + next_pc <- csrf.mret; + end + inIfc.redirectPc(next_pc); + + // rename stage only sends out system inst when ROB is empty, so no + // need to flush ROB again + + // system consistency + // flush TLB for SFence.VMA and when SATP CSR is modified + // XXX as approximation, sret/mret may mean context switch, so flush + // for security + makeSystemConsistent( + x.iType == SFence || write_satp, // TODO flush TLB when change sanctum regs? + flush_security || x.iType == Sret || x.iType == Mret, + x.iType == FenceI // reconcile I$ for fence.i + ); + + // incr inst cnt + csrf.incInstret(1); + +`ifdef PERF_COUNT + if(inIfc.doStats) begin + comSysCnt.incr(1); + // inst count stats + instCnt.incr(1); + if(csrf.decodeInfo.prv == 0) begin + userInstCnt.incr(1); + end + end +`endif +`ifdef CHECK_DEADLOCK + commitInst.send; + if(csrf.decodeInfo.prv == 0) begin + commitUserInst.send; + end +`endif + + // checks + doAssert(x.epochIncremented, "must have already incremented epoch"); + doAssert((x.iType == Csr) == isValid(x.csr), "only CSR has valid csr idx"); + doAssert(x.fflags == 0 && !x.will_dirty_fpu_state, "cannot dirty FPU"); + doAssert(x.spec_bits == 0, "cannot have spec bits"); + doAssert(x.claimed_phy_reg, "must have claimed phy reg"); +`ifdef RENAME_DEBUG + if(!x.claimed_phy_reg && canSetRenameErr) begin + renameErrInfo <= Valid (RenameErrInfo { + err: NonTrapCommitLackClaim, + pc: x.pc, + iType: x.iType, + trap: x.trap, + specBits: x.spec_bits + }); + end +`endif + endrule + + // Lr/Sc/Amo/MMIO cannot proceed to executed until we notify LSQ that it + // has reached the commit stage + rule notifyLSQCommit( + !isValid(commitTrap) && + !isValid(rob.deqPort[0].deq_data.trap) && + !isValid(rob.deqPort[0].deq_data.ldKilled) && + rob.deqPort[0].deq_data.rob_inst_state != Executed && + rob.deqPort[0].deq_data.memAccessAtCommit && + !rob.deqPort[0].deq_data.lsqAtCommitNotified + ); + let x = rob.deqPort[0].deq_data; + let inst_tag = rob.deqPort[0].getDeqInstTag; + if(verbose) $display("[notifyLSQCommit] ", fshow(x), "; ", fshow(inst_tag)); + + // notify LSQ, and record in ROB that notification is done + setLSQAtCommit[0].wset(x.lsqTag); + rob.setLSQAtCommitNotified(inst_tag); + endrule + + // commit normal: fire when at least one commit can be done + rule doCommitNormalInst( + !isValid(commitTrap) && + !isValid(rob.deqPort[0].deq_data.trap) && + !isValid(rob.deqPort[0].deq_data.ldKilled) && + rob.deqPort[0].deq_data.rob_inst_state == Executed && + !isSystem(rob.deqPort[0].deq_data.iType) + ); + // stop superscalar commit after we + // 1. see a trap or system inst or killed Ld + // 2. inst is not ready to commit + Bool stop = False; + + // We merge writes on FPU csr and apply writes at the end of the rule + Bit#(5) fflags = 0; + Bool will_dirty_fpu_state = False; + // rename error + Maybe#(RenameErrInfo) renameError = Invalid; + // incr committed inst cnt at the end of rule + SupCnt comInstCnt = 0; + SupCnt comUserInstCnt = 0; +`ifdef PERF_COUNT + // incr some performance counter at the end of rule + SupCnt brCnt = 0; + SupCnt jmpCnt = 0; + SupCnt jrCnt = 0; + SupCnt ldCnt = 0; + SupCnt stCnt = 0; + SupCnt lrCnt = 0; + SupCnt scCnt = 0; + SupCnt amoCnt = 0; +`endif + + // compute what actions to take + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + if(!stop && rob.deqPort[i].canDeq) begin + let x = rob.deqPort[i].deq_data; + let inst_tag = rob.deqPort[i].getDeqInstTag; + + // check can be committed or not + if(x.rob_inst_state != Executed || isValid(x.ldKilled) || isValid(x.trap) || isSystem(x.iType)) begin + // inst not ready for commit, or system inst, or trap, or killed, stop here + stop = True; + end + else begin + if (verbose) $display("[doCommitNormalInst - %d] ", i, fshow(inst_tag), " ; ", fshow(x)); + + // inst can be committed, deq it + rob.deqPort[i].deq; + + // every inst here should have been renamed, commit renaming + regRenamingTable.commit[i].commit; + doAssert(x.claimed_phy_reg, "should have renamed"); + +`ifdef RENAME_DEBUG + // send debug msg for rename error + if(!x.claimed_phy_reg && !isValid(renameError)) begin + renameError = Valid (RenameErrInfo { + err: NonTrapCommitLackClaim, + pc: x.pc, + iType: x.iType, + trap: x.trap, + specBits: x.spec_bits + }); + end +`endif + + // cumulate writes to FPU csr + fflags = fflags | x.fflags; + will_dirty_fpu_state = will_dirty_fpu_state || x.will_dirty_fpu_state; + + // for non-mmio st, notify SQ that store is committed + if(x.nonMMIOStDone) begin + setLSQAtCommit[i].wset(x.lsqTag); + end + + // inst commit counter + comInstCnt = comInstCnt + 1; + if(csrf.decodeInfo.prv == 0) begin + comUserInstCnt = comUserInstCnt + 1; // user space inst + end + +`ifdef PERF_COUNT + // performance counter + case(x.iType) + Br: brCnt = brCnt + 1; + J : jmpCnt = jmpCnt + 1; + Jr: jrCnt = jrCnt + 1; + Ld: ldCnt = ldCnt + 1; + St: stCnt = stCnt + 1; + Lr: lrCnt = lrCnt + 1; + Sc: scCnt = scCnt + 1; + Amo: amoCnt = amoCnt + 1; + endcase +`endif + end + end + end + + // write FPU csr + if(csrf.fpuInstNeedWr(fflags, will_dirty_fpu_state)) begin + csrf.fpuInstWr(fflags); + end + + // incr inst cnt + csrf.incInstret(comInstCnt); + +`ifdef RENAME_DEBUG + // set rename error + if(canSetRenameErr && isValid(renameError)) begin + renameErrInfo <= renameError; + end +`endif + +`ifdef CHECK_DEADLOCK + commitInst.send; // ROB head is removed + if(comUserInstCnt > 0) begin + commitUserInst.send; + end +`endif + +`ifdef PERF_COUNT + // performance counter + if(inIfc.doStats) begin + // branch stats + comBrCnt.incr(zeroExtend(brCnt)); + comJmpCnt.incr(zeroExtend(jmpCnt)); + comJrCnt.incr(zeroExtend(jrCnt)); + // mem stats + comLdCnt.incr(zeroExtend(ldCnt)); + comStCnt.incr(zeroExtend(stCnt)); + comLrCnt.incr(zeroExtend(lrCnt)); + comScCnt.incr(zeroExtend(scCnt)); + comAmoCnt.incr(zeroExtend(amoCnt)); + // inst count stats + instCnt.incr(zeroExtend(comInstCnt)); + userInstCnt.incr(zeroExtend(comUserInstCnt)); + if(comUserInstCnt > 1) begin + supComUserCnt.incr(1); + end + end +`endif + endrule + + + method Data getPerf(ComStagePerfType t); + return (case(t) +`ifdef PERF_COUNT + InstCnt: instCnt; + UserInstCnt: userInstCnt; + SupComUserCnt: supComUserCnt; + ComBrCnt: comBrCnt; + ComJmpCnt: comJmpCnt; + ComJrCnt: comJrCnt; + ComLdCnt: comLdCnt; + ComStCnt: comStCnt; + ComLrCnt: comLrCnt; + ComScCnt: comScCnt; + ComAmoCnt: comAmoCnt; + ComLdKillByLd: comLdKillByLdCnt; + ComLdKillBySt: comLdKillByStCnt; + ComLdKillByCache: comLdKillByCacheCnt; + ComSysCnt: comSysCnt; + ExcepCnt: excepCnt; + InterruptCnt: interruptCnt; + FlushTlbCnt: flushTlbCnt; + FlushSecurityCnt: flushSecurityCnt; + FlushBPCnt: flushBPCnt; + FlushCacheCnt: flushCacheCnt; +`endif + default: 0; + endcase); + endmethod + +`ifdef CHECK_DEADLOCK + interface commitInstStuck = toGet(commitInstStuckQ); + interface commitUserInstStuck = toGet(commitUserInstStuckQ); +`else + interface commitInstStuck = nullGet; + interface commitUserInstStuck = nullGet; +`endif + +`ifdef RENAME_DEBUG + method Action startRenameDebug if(!renameDebugStarted); + renameDebugStarted <= True; + endmethod + interface renameErr = toGet(renameErrQ); +`else + method Action startRenameDebug; + noAction; + endmethod + interface renameErr = nullGet; +`endif +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv new file mode 100644 index 0000000..92f76e0 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv @@ -0,0 +1,641 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import BrPred::*; +import DirPredictor::*; +import Btb::*; +import ClientServer::*; +import Connectable::*; +import Decode::*; +import Ehr::*; +import Fifo::*; +import GetPut::*; +import MemoryTypes::*; +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import Ras::*; +import EpochManager::*; +import Performance::*; +import Vector::*; +import Assert::*; +import Cntrs::*; +import ConfigReg::*; +import TlbTypes::*; +import ITlb::*; +import CCTypes::*; +import L1CoCache::*; +import MMIOInst::*; + +interface FetchStage; + // pipeline + interface Vector#(SupSize, SupFifoDeq#(FromFetchStage)) pipelines; + + // tlb and mem connections + interface ITlb iTlbIfc; + interface ICoCache iMemIfc; + interface MMIOInstToCore mmioIfc; + + // starting and stopping + method Action start(Addr pc); + method Action stop(); + + // redirection methods + method Action setWaitRedirect; + method Action redirect(Addr pc); + method Action done_flushing(); + method Action train_predictors( + Addr pc, Addr next_pc, IType iType, Bool taken, + DirPredTrainInfo dpTrain, Bool mispred + ); + + // security + method Bool emptyForFlush; + method Action flush_predictors; + method Bool flush_predictors_done; + + // debug + method FetchDebugState getFetchState; + + // performance + interface Perf#(DecStagePerfType) perf; +endinterface + +typedef struct { + Addr pc; + Epoch mainEp; + Bool waitForRedirect; + Bool waitForFlush; +} FetchDebugState deriving(Bits, Eq, FShow); + +typedef struct { + Addr pc; + Addr pred_next_pc; + Bool decode_epoch; + Epoch main_epoch; +} Fetch1ToFetch2 deriving(Bits, Eq, FShow); + +typedef struct { + Addr pc; + Addr phys_pc; + Addr pred_next_pc; + Maybe#(Exception) cause; + Bool access_mmio; // inst fetch from MMIO + Bool decode_epoch; + Epoch main_epoch; +} Fetch2ToFetch3 deriving(Bits, Eq, FShow); + +typedef struct { + Addr pc; + Addr ppc; + Bool decode_epoch; + Epoch main_epoch; + Instruction inst; + Maybe#(Exception) cause; +} Fetch3ToDecode deriving(Bits, Eq, FShow); + +typedef struct { + Addr pc; + Addr ppc; + Epoch main_epoch; + DirPredTrainInfo dpTrain; + Instruction inst; + DecodedInst dInst; + ArchRegs regs; + Maybe#(Exception) cause; +} FromFetchStage deriving (Bits, Eq, FShow); + +// train next addr pred (BTB) +typedef struct { + Addr pc; + Addr nextPc; +} TrainNAP deriving(Bits, Eq, FShow); + +(* synthesize *) +module mkFetchStage(FetchStage); + // rule ordering: Fetch1 (BTB+TLB) < Fetch3 (decode & dir pred) < redirect method + // Fetch1 < Fetch3 to avoid bypassing path on PC and epochs + + let verbose = True; + + // Basic State Elements + Reg#(Bool) started <- mkReg(False); + + // Stall fetch when trap happens or system inst is renamed + // All inst younger than the trap/system inst will be killed + // Since CSR may be modified, sending wrong path request to TLB may cause problem + // So we stall until the next redirection happens + // The next redirect is either by the trap/system inst or an older one + Reg#(Bool) waitForRedirect <- mkReg(False); + // We don't want setWaitForRedirect method and redirect method to happen together + // make them conflict + RWire#(void) setWaitRedirect_redirect_conflict <- mkRWire; + + // Stall fetch during the flush triggered by the procesing trap/system inst in commit stage + // We stall until the flush is done + Reg#(Bool) waitForFlush <- mkReg(False); + + Ehr#(3, Addr) pc_reg <- mkEhr(0); + Integer pc_fetch1_port = 0; + Integer pc_decode_port = 1; + Integer pc_redirect_port = 2; + + // Epochs + Reg#(Bool) decode_epoch <- mkReg(False); + Reg#(Epoch) f_main_epoch <- mkReg(0); // fetch estimate of main epoch + + // Pipeline Stage FIFOs + Fifo#(2, Tuple2#(Bit#(TLog#(SupSize)),Fetch1ToFetch2)) f12f2 <- mkCFFifo; + Fifo#(4, Tuple2#(Bit#(TLog#(SupSize)),Fetch2ToFetch3)) f22f3 <- mkCFFifo; // FIFO should match I$ latency + Fifo#(2, Tuple2#(Bit#(TLog#(SupSize)),Fetch2ToFetch3)) f32d <- mkCFFifo; + Fifo#(2, Vector#(SupSize,Maybe#(Instruction))) instdata <- mkPipelineFifo(); + SupFifo#(SupSize, 2, FromFetchStage) out_fifo <- mkSupFifo; + // Can the fifo size be smaller? + + // Branch Predictors + NextAddrPred nextAddrPred <- mkBtb; + let dirPred <- mkDirPredictor; + ReturnAddrStack ras <- mkRas; + // Wire to train next addr pred (NAP) + RWire#(TrainNAP) napTrainByExe <- mkRWire; + RWire#(TrainNAP) napTrainByDec <- mkRWire; + Fifo#(1, TrainNAP) napTrainByDecQ <- mkPipelineFifo; // cut off critical path + + // TLB and Cache connections + ITlb iTlb <- mkITlb; + ICoCache iMem <- mkICoCache; + MMIOInst mmio <- mkMMIOInst; + Server#(Addr, TlbResp) tlb_server = iTlb.to_proc; + Server#(Addr, Vector#(SupSize, Maybe#(Instruction))) mem_server = iMem.to_proc; + + // performance counters + Fifo#(1, DecStagePerfType) perfReqQ <- mkCFFifo; // perf req FIFO +`ifdef PERF_COUNT + Reg#(Bool) doStats <- mkConfigReg(False); + // decode stage redirect + Count#(Data) decRedirectBrCnt <- mkCount(0); + Count#(Data) decRedirectJmpCnt <- mkCount(0); + Count#(Data) decRedirectJrCnt <- mkCount(0); + Count#(Data) decRedirectOtherCnt <- mkCount(0); + // perf resp FIFO + Fifo#(1, PerfResp#(DecStagePerfType)) perfRespQ <- mkCFFifo; + + rule doPerfReq; + let t <- toGet(perfReqQ).get; + Data d = (case(t) + DecRedirectBr: decRedirectBrCnt; + DecRedirectJmp: decRedirectJmpCnt; + DecRedirectJr: decRedirectJrCnt; + DecRedirectOther: decRedirectOtherCnt; + default: 0; + endcase); + perfRespQ.enq(PerfResp { + pType: t, + data: d + }); + endrule +`endif + + // We don't send req to TLB when waiting for redirect or TLB flush. Since + // there is no FIFO between doFetch1 and TLB, when OOO commit stage wait + // TLB idle to change VM CSR / signal flush TLB, there is no wrong path + // request afterwards to race with the system code that manage paget table. + rule doFetch1(started && !waitForRedirect && !waitForFlush); + let pc = pc_reg[pc_fetch1_port]; + + // Chain of prediction for the next instructions + // We need a BTB with a register file with enough ports! + // Instead of cascading predictions, we can always feed pc+4*i into + // predictor, because we will break superscaler fetch if nextpc != pc+4 + Vector#(SupSize, Addr) pred_future_pc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + pred_future_pc[i] = nextAddrPred.predPc(pc + fromInteger(4 * i)); + end + + // Next pc is the first nextPc that breaks the chain of pc+4 or + // that is at the end of a cacheline. + Vector#(SupSize,Integer) indexes = genVector; + function Bool findNextPc(Addr pc, Integer i); + Bool notLastInst = getLineInstOffset(pc + fromInteger(4*i)) != maxBound; + Bool noJump = pred_future_pc[i] == pc + fromInteger(4*(i+1)); + return (!(notLastInst && noJump)); + endfunction + Integer posLastSup = fromMaybe(valueof(SupSize) - 1, find(findNextPc(pc), indexes)); + Addr pred_next_pc = pred_future_pc[posLastSup]; + pc_reg[pc_fetch1_port] <= pred_next_pc; + + // Send TLB request + tlb_server.request.put(pc); + + let out = Fetch1ToFetch2 { + pc: pc, + pred_next_pc: pred_next_pc, + decode_epoch: decode_epoch, + main_epoch: f_main_epoch}; + f12f2.enq(tuple2(fromInteger(posLastSup),out)); + if (verbose) $display("Fetch1: ", fshow(out)); + endrule + + rule doFetch2; + let {nbSup,in} = f12f2.first; + f12f2.deq; + + // Get TLB response + match {.phys_pc, .cause} <- tlb_server.response.get; + + // Access main mem or boot rom + Bool access_mmio = False; + if (!isValid(cause)) begin + case(mmio.getFetchTarget(phys_pc)) + MainMem: begin + // Send ICache request + mem_server.request.put(phys_pc); + end + BootRom: begin + // Send MMIO req. Luckily boot rom is also aligned with + // cache line size, so all nbSup+1 insts can be fetched + // from boot rom. It won't happen that insts fetched from + // boot rom is less than requested. + mmio.bootRomReq(phys_pc, nbSup); + access_mmio = True; + end + default: begin + // Access fault + cause = Valid (InstAccessFault); + end + endcase + end + + let out = Fetch2ToFetch3 { + pc: in.pc, + phys_pc: phys_pc, + pred_next_pc: in.pred_next_pc, + cause: cause, + access_mmio: access_mmio, + decode_epoch: in.decode_epoch, + main_epoch: in.main_epoch }; + f22f3.enq(tuple2(nbSup,out)); + if (verbose) $display("Fetch2: ", fshow(out)); + endrule + +// Break out of i$ + rule doFetch3; + let {nbSup, fetch3In} = f22f3.first; + f22f3.deq(); + if (verbose) $display("Fetch3 %d",fetch3In.pc); + + // Get ICache/MMIO response if no exception + // In case of exception, we still need to process at least inst_data[0] + // (it will be turned to an exception later), so inst_data[0] must be + // valid. + Vector#(SupSize,Maybe#(Instruction)) inst_d = replicate(tagged Valid (0)); + if(!isValid(fetch3In.cause)) begin + if(fetch3In.access_mmio) begin + if(verbose) $display("get answer from MMIO %d", fetch3In.pc); + inst_d <- mmio.bootRomResp; + end + else begin + if(verbose) $display("get answer from memory %d", fetch3In.pc); + inst_d <- mem_server.response.get; + end + end + if(verbose) $display("epoch instr: %d, epoch main : %d", fetch3In.main_epoch, f_main_epoch); + instdata.enq(inst_d); + f32d.enq(f22f3.first); + endrule + + rule doDecode; + let {nbSup, fetch3In} = f32d.first; + f32d.deq(); + let inst_data = instdata.first(); + instdata.deq(); + // The main_epoch check is required to make sure this stage doesn't + // redirect the PC if a later stage already redirected the PC. + if (fetch3In.main_epoch == f_main_epoch) begin + Bool decode_epoch_local = decode_epoch; // next value for decode epoch + Maybe#(Addr) redirectPc = Invalid; // next pc redirect by branch predictor + Maybe#(TrainNAP) trainNAP = Invalid; // training data sent to next addr pred +`ifdef PERF_COUNT + // performance counter: inst being redirect by decode stage + // Note that only 1 redirection may happen in a cycle + Maybe#(IType) redirectInst = Invalid; +`endif + + for (Integer i = 0; i < valueof(SupSize); i=i+1) begin + if (inst_data[i] != tagged Invalid && fromInteger(i) <= nbSup) begin + // get the input to decode + let in = Fetch3ToDecode { + pc: fetch3In.pc+fromInteger(4*i), + // last inst, next pc may not be pc+4 + ppc: fromInteger(i) == nbSup ? fetch3In.pred_next_pc : + fetch3In.pc+fromInteger(4*(i+1)), + decode_epoch: fetch3In.decode_epoch, + main_epoch: fetch3In.main_epoch, + inst: fromMaybe(?,inst_data[i]), + cause: fetch3In.cause + }; + let cause = in.cause; + if (verbose) $display("Decode %d\n",i); + + // do decode and branch prediction + // Drop here if does not match the decode_epoch. + if (in.decode_epoch == decode_epoch_local) begin + doAssert(in.main_epoch == f_main_epoch, "main epoch must match"); + + let decode_result = decode(in.inst); + + // update cause if there was not an early detected exception + if (!isValid(cause)) begin + cause = decode_result.illegalInst ? tagged Valid IllegalInst : tagged Invalid; + end + + let dInst = decode_result.dInst; + let regs = decode_result.regs; + DirPredTrainInfo dp_train = ?; // dir pred training bookkeeping + + // update predicted next pc + if (!isValid(cause)) begin + // direction predict + Bool pred_taken = False; + if(dInst.iType == Br) begin + let pred_res <- dirPred.pred[i].pred(in.pc); + pred_taken = pred_res.taken; + dp_train = pred_res.train; + end + Maybe#(Addr) nextPc = decodeBrPred(in.pc, dInst, pred_taken); + + // return address stack link reg is x1 or x5 + function Bool linkedR(Maybe#(ArchRIndx) register); + Bool res = False; + if (register matches tagged Valid .r &&& (r == tagged Gpr 1 || r == tagged Gpr 5)) begin + res = True; + end + return res; + endfunction + Bool dst_link = linkedR(regs.dst); + Bool src1_link = linkedR(regs.src1); + Addr push_addr = in.pc + 4; + Addr pop_addr = ras.ras[i].first; + if (dInst.iType == J && dst_link) begin + // rs1 is invalid, i.e., not link: push + ras.ras[i].popPush(False, Valid (push_addr)); + end + else if (dInst.iType == Jr) begin // jalr + if (!dst_link && src1_link) begin + // rd is link while rs1 is not: pop + nextPc = Valid (pop_addr); + ras.ras[i].popPush(True, Invalid); + end + else if (!src1_link && dst_link) begin + // rs1 is not link while rd is link: push + ras.ras[i].popPush(False, Valid (push_addr)); + end + else if (dst_link && src1_link) begin + // both rd and rs1 are links + if (regs.src1 != regs.dst) begin + // not same reg: first pop, then push + nextPc = Valid (pop_addr); + ras.ras[i].popPush(True, Valid (push_addr)); + end + else begin + // same reg: push + ras.ras[i].popPush(False, Valid (push_addr)); + end + end + end + + if(verbose) begin + $display("Branch prediction: ", fshow(dInst.iType), " ; ", fshow(in.pc), " ; ", + fshow(in.ppc), " ; ", fshow(pred_taken), " ; ", fshow(nextPc)); + end + + // check previous mispred + if (nextPc matches tagged Valid .decode_pred_next_pc &&& decode_pred_next_pc != in.ppc) begin + if (verbose) $display("ppc and decodeppc : %h %h", in.ppc, decode_pred_next_pc); + decode_epoch_local = !decode_epoch_local; + redirectPc = Valid (decode_pred_next_pc); // record redirect next pc + in.ppc = decode_pred_next_pc; + // train next addr pred when mispredict + trainNAP = Valid (TrainNAP {pc: in.pc, nextPc: decode_pred_next_pc}); +`ifdef PERF_COUNT + // performance stats: record decode redirect + doAssert(redirectInst == Invalid, "at most 1 decode redirect per cycle"); + redirectInst = Valid (dInst.iType); +`endif + end + end + let out = FromFetchStage{pc: in.pc, + ppc: in.ppc, + main_epoch: in.main_epoch, + dpTrain: dp_train, + inst: in.inst, + dInst: dInst, + regs: decode_result.regs, + cause: cause }; + out_fifo.enqS[i].enq(out); + if (verbose) $display("Decode: ", fshow(out)); + end + else begin + if (verbose) $display("Drop decoded within a superscalar"); + // just drop wrong path instructions + end + end + else if (inst_data[i] == tagged Invalid && fromInteger(i) <= nbSup) begin + // inst num is less than expected; this should not happen + // because both I$ and boot rom are aligned to cache line + // size. + doAssert(False, "Fetched insts not enough"); + end + end + + // update PC and epoch + if(redirectPc matches tagged Valid .nextPc) begin + pc_reg[pc_decode_port] <= nextPc; + end + decode_epoch <= decode_epoch_local; + // send training data for next addr pred + if (trainNAP matches tagged Valid .x) begin + napTrainByDecQ.enq(x); + end +`ifdef PERF_COUNT + // performance counter: check whether redirect happens + if(redirectInst matches tagged Valid .iType &&& doStats) begin + case(iType) + Br: decRedirectBrCnt.incr(1); + J : decRedirectJmpCnt.incr(1); + Jr: decRedirectJrCnt.incr(1); + default: decRedirectOtherCnt.incr(1); + endcase + end +`endif + end + else begin + if (verbose) $display("drop in fetch3decode"); + end + endrule + + // train next addr pred: we use a wire to catch outputs of napTrainByDecQ. + // This prevents napTrainByDecQ from clogging doDecode rule when + // superscalar size is large + (* fire_when_enabled *) + rule setTrainNAPByDec; + napTrainByDecQ.deq; + napTrainByDec.wset(napTrainByDecQ.first); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule doTrainNAP(isValid(napTrainByDec.wget) || isValid(napTrainByExe.wget)); + // Give priority to train from exe. This is because exe has train data + // only when misprediction happens, i.e., train by dec is already at + // wrong path. + TrainNAP train = fromMaybe(validValue(napTrainByDec.wget), napTrainByExe.wget); + nextAddrPred.update(train.pc, train.nextPc, train.nextPc != train.pc + 4); + endrule + + // Security: we can flush when front end is empty, i.e. + // (1) Fetch1 is stalled for waiting flush + // (2) all internal FIFOs are empty (the output sup fifo needs not to be + // empty, but why leave this security hole) + Bool empty_for_flush = waitForFlush && + !f12f2.notEmpty && !f22f3.notEmpty && + !f32d.notEmpty && out_fifo.internalEmpty; + + interface Vector pipelines = out_fifo.deqS; + interface iTlbIfc = iTlb; + interface iMemIfc = iMem; + interface mmioIfc = mmio.toCore; + + method Action start(Addr start_pc); + pc_reg[0] <= start_pc; + started <= True; + waitForRedirect <= False; + waitForFlush <= False; + endmethod + method Action stop(); + started <= False; + endmethod + + method Action setWaitRedirect; + waitForRedirect <= True; + setWaitRedirect_redirect_conflict.wset(?); // conflict with redirect + endmethod + method Action redirect(Addr new_pc); + if (verbose) $display("Redirect: newpc %h, old f_main_epoch %d, new f_main_epoch %d",new_pc,f_main_epoch,f_main_epoch+1); + pc_reg[pc_redirect_port] <= new_pc; + f_main_epoch <= (f_main_epoch == fromInteger(valueOf(NumEpochs)-1)) ? 0 : f_main_epoch + 1; + // redirect comes, stop stalling for redirect + waitForRedirect <= False; + setWaitRedirect_redirect_conflict.wset(?); // conflict with setWaitForRedirect + // this redirect may be caused by a trap/system inst in commit stage + // we conservatively set wait for flush TODO make this an input parameter + waitForFlush <= True; + endmethod + method Action done_flushing() if (waitForFlush); + // signal that the pipeline can resume fetching + waitForFlush <= False; + // XXX The guard prevents the readyToFetch rule in Core.bsv from firing every cycle + // The guard also makes this method sequence before (restricted) redirect method + // So the effect of setting waitForFlush in redirect method will not be overwritten + // Then we don't need to make two methods conflict + // It's fine for the effect of this method to be overwritten, because it fires very often + endmethod + + method Action train_predictors( + Addr pc, Addr next_pc, IType iType, Bool taken, + DirPredTrainInfo dpTrain, Bool mispred + ); + //if (iType == J || (iType == Br && next_pc < pc)) begin + // // Only train the next address predictor for jumps and backward branches + // // next_pc != pc + 4 is a substitute for taken + // nextAddrPred.update(pc, next_pc, taken); + //end + if (iType == Br) begin + // Train the direction predictor for all branches + dirPred.update(pc, taken, dpTrain, mispred); + end + // train next addr pred when mispred + if(mispred) begin + napTrainByExe.wset(TrainNAP {pc: pc, nextPc: next_pc}); + end + endmethod + + // security + method Bool emptyForFlush; + return empty_for_flush; + endmethod + + method Action flush_predictors; + nextAddrPred.flush; + dirPred.flush; + ras.flush; + endmethod + + method Bool flush_predictors_done; + return nextAddrPred.flush_done && dirPred.flush_done && ras.flush_done; + endmethod + + method FetchDebugState getFetchState; + return FetchDebugState { + pc: pc_reg[0], + waitForRedirect: waitForRedirect, + waitForFlush: waitForFlush, + mainEp: f_main_epoch + }; + endmethod + + interface Perf perf; + method Action setStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Action req(DecStagePerfType r); + perfReqQ.enq(r); + endmethod + + method ActionValue#(PerfResp#(DecStagePerfType)) resp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + return PerfResp { + pType: perfReqQ.first, + data: 0 + }; +`endif + endmethod + +`ifdef PERF_COUNT + method Bool respValid = perfRespQ.notEmpty; +`else + method Bool respValid = perfReqQ.notEmpty; +`endif + endinterface +endmodule + diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/FpuMulDivExePipeline.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/FpuMulDivExePipeline.bsv new file mode 100644 index 0000000..7b1ad63 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/FpuMulDivExePipeline.bsv @@ -0,0 +1,325 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import DefaultValue::*; +import Cntrs::*; +import Vector::*; +import BuildVector::*; +import Types::*; +import ProcTypes::*; +import SynthParam::*; +import Exec::*; +import Performance::*; +import ReservationStationEhr::*; +import ReservationStationFpuMulDiv::*; +import ReorderBuffer::*; +import HasSpecBits::*; +import SpecFifo::*; +import MulDiv::*; +import Fpu::*; +import Bypass::*; + +typedef struct { + // inst info + ExecFunc execFunc; + PhyRegs regs; + InstTag tag; + // FpuMulDiv must not have valid spec tag +} FpuMulDivDispatchToRegRead deriving(Bits, Eq, FShow); + +typedef struct { + // inst info + ExecFunc execFunc; + Maybe#(PhyDst) dst; + InstTag tag; + // src reg vals + Data rVal1; + Data rVal2; + Data rVal3; +} FpuMulDivRegReadToExe deriving(Bits, Eq, FShow); + +typedef struct { + // inst info + ExecFunc execFunc; + Maybe#(PhyDst) dst; + InstTag tag; +} FpuMulDivExeToFinish deriving(Bits, Eq, FShow); + +// synthesized pipeline fifos +typedef SpecFifo_SB_deq_enq_C_deq_enq#(1, FpuMulDivDispatchToRegRead) FpuMulDivDispToRegFifo; +(* synthesize *) +module mkFpuMulDivDispToRegFifo(FpuMulDivDispToRegFifo); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(False); + return m; +endmodule + +typedef SpecFifo_SB_deq_enq_C_deq_enq#(1, FpuMulDivRegReadToExe) FpuMulDivRegToExeFifo; +(* synthesize *) +module mkFpuMulDivRegToExeFifo(FpuMulDivRegToExeFifo); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(False); + return m; +endmodule + +interface FpuMulDivExeInput; + // conservative scoreboard check in reg read stage + method RegsReady sbCons_lazyLookup(PhyRegs r); + // Phys reg file + method Data rf_rd1(PhyRIndx rindx); + method Data rf_rd2(PhyRIndx rindx); + method Data rf_rd3(PhyRIndx rindx); + // CSR file + method Data csrf_rd(CSR csr); + // ROB + method Action rob_setExecuted(InstTag t, Bit#(5) fflags); + + // global broadcast methods + // write reg file & set both conservative and aggressive sb & wake up inst + method Action writeRegFile(PhyRIndx dst, Data data); + // spec update + method Action conflictWrongSpec; + // performance + method Bool doStats; +endinterface + +interface FpuMulDivExePipeline; + // recv bypass from the ALU exe and finish stages + interface Vector#(TMul#(2, AluExeNum), RecvBypass) recvBypass; + interface ReservationStationFpuMulDiv rsFpuMulDivIfc; + interface SpeculationUpdate specUpdate; + // performance + method Data getPerf(ExeStagePerfType t); +endinterface + +module mkFpuMulDivExePipeline#(FpuMulDivExeInput inIfc)(FpuMulDivExePipeline); + Bool verbose = True; + + // fpu mul div reservation station + ReservationStationFpuMulDiv rsFpuMulDiv <- mkReservationStationFpuMulDiv; + + // pipeline fifos + let dispToRegQ <- mkFpuMulDivDispToRegFifo; + let regToExeQ <- mkFpuMulDivRegToExeFifo; + + // wire to recv bypass + Vector#(TMul#(2, AluExeNum), RWire#(Tuple2#(PhyRIndx, Data))) bypassWire <- replicateM(mkRWire); + + // mul div fpu func units + MulDivExec mulDivExec <- mkMulDivExec; + FpuExec fpuExec <- mkFpuExecPipeline; + + // fpu/mul/div performance counters +`ifdef PERF_COUNT + Count#(Data) exeIntMulCnt <- mkCount(0); + Count#(Data) exeIntDivCnt <- mkCount(0); + Count#(Data) exeFpFmaCnt <- mkCount(0); + Count#(Data) exeFpDivCnt <- mkCount(0); + Count#(Data) exeFpSqrtCnt <- mkCount(0); +`endif + + rule doDispatchFpuMulDiv; + rsFpuMulDiv.doDispatch; + let x = rsFpuMulDiv.dispatchData; + if(verbose) $display("[doDispatchFpuMulDiv] ", fshow(x)); + + // FPU MUL DIV never have exception or misprecition, so no spec tag + doAssert(!isValid(x.spec_tag), "FpuMulDiv should not carry any spec tag"); + + // go to next stage + dispToRegQ.enq(ToSpecFifo { + data: FpuMulDivDispatchToRegRead { + execFunc: x.data.execFunc, + regs: x.regs, + tag: x.tag + }, + spec_bits: x.spec_bits + }); + endrule + + rule doRegReadFpuMulDiv; + dispToRegQ.deq; + let dispToReg = dispToRegQ.first; + let x = dispToReg.data; + if(verbose) $display("[doRegReadFpuMulDiv] ", fshow(dispToReg)); + + // check conservative scoreboard + let regsReady = inIfc.sbCons_lazyLookup(x.regs); + + // get rVal1 (check bypass) + Data rVal1 = ?; + if(x.regs.src1 matches tagged Valid .src1) begin + rVal1 <- readRFBypass(src1, regsReady.src1, inIfc.rf_rd1(src1), bypassWire); + end + + // get rVal2 (check bypass) + Data rVal2 = ?; + if(x.regs.src2 matches tagged Valid .src2) begin + rVal2 <- readRFBypass(src2, regsReady.src2, inIfc.rf_rd2(src2), bypassWire); + end + + // get rVal3 (check bypass) + Data rVal3 = ?; + if(x.regs.src3 matches tagged Valid .src3) begin + rVal3 <- readRFBypass(src3, regsReady.src3, inIfc.rf_rd3(src3), bypassWire); + end + + // go to next stage + regToExeQ.enq(ToSpecFifo { + data: FpuMulDivRegReadToExe { + execFunc: x.execFunc, + dst: x.regs.dst, + tag: x.tag, + rVal1: rVal1, + rVal2: rVal2, + rVal3: rVal3 + }, + spec_bits: dispToReg.spec_bits + }); + endrule + + rule doExeFpuMulDiv; + regToExeQ.deq; + let regToExe = regToExeQ.first; + let x = regToExe.data; + let spec_bits = regToExe.spec_bits; + if(verbose) $display("[doExeFpuMulDiv] ", fshow(regToExe)); + + // send to exe unit + Data rVal1 = x.rVal1; + Data rVal2 = x.rVal2; + Data rVal3 = x.rVal3; + case (x.execFunc) matches + tagged Fpu .fpu_inst: begin + fpuExec.exec(fpu_inst, rVal1, rVal2, rVal3, x.dst, x.tag, spec_bits); + end + tagged MulDiv .muldiv_inst: begin + mulDivExec.exec(muldiv_inst, rVal1, rVal2, x.dst, x.tag, spec_bits); + end + default: begin + doAssert(False, "unknown execFunc for doExeFpuMulDiv"); + end + endcase + endrule + + function Action doFinish(Maybe#(PhyDst) dst, InstTag tag, Data data, Bit#(5) fflags); + action + // write to register file + if(dst matches tagged Valid .valid_dst) begin + inIfc.writeRegFile(valid_dst.indx, data); + end + // update the instruction in the reorder buffer. + inIfc.rob_setExecuted(tag, fflags); + // since FPU op has no spec tag, this doFinish rule is ordered before + // other rules that calls incorrectSpec, and BSV compiler creates + // cycles in scheduling. We manually creates a conflict between this + // rule and incorrectSpec to break the cycle + //inIfc.conflictWrongSpec; + endaction + endfunction + + rule doFinishFpSimple; + FpuResp resp <- fpuExec.simpleResp; + if(verbose) $display("[doFinishFpSimple] ", fshow(resp)); + doFinish(resp.dst, resp.tag, resp.res.data, resp.res.fflags); + endrule + + rule doFinishFpFma; + FpuResp resp <- fpuExec.fmaResp; + if(verbose) $display("[doFinishFpFma] ", fshow(resp)); + doFinish(resp.dst, resp.tag, resp.res.data, resp.res.fflags); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + exeFpFmaCnt.incr(1); + end +`endif + endrule + + rule doFinishFpDiv; + FpuResp resp <- fpuExec.divResp; + if(verbose) $display("[doFinishFpDiv] ", fshow(resp)); + doFinish(resp.dst, resp.tag, resp.res.data, resp.res.fflags); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + exeFpDivCnt.incr(1); + end +`endif + endrule + + rule doFinishFpSqrt; + FpuResp resp <- fpuExec.sqrtResp; + if(verbose) $display("[doFinishFpSqrt] ", fshow(resp)); + doFinish(resp.dst, resp.tag, resp.res.data, resp.res.fflags); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + exeFpSqrtCnt.incr(1); + end +`endif + endrule + + rule doFinishIntMul; + MulDivResp resp <- mulDivExec.mulResp; + if(verbose) $display("[doFinishIntMul] ", fshow(resp)); + doFinish(resp.dst, resp.tag, resp.data, 0); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + exeIntMulCnt.incr(1); + end +`endif + endrule + + rule doFinishIntDiv; + MulDivResp resp <- mulDivExec.divResp; + if(verbose) $display("[doFinishIntDiv] ", fshow(resp)); + doFinish(resp.dst, resp.tag, resp.data, 0); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + exeIntDivCnt.incr(1); + end +`endif + endrule + + interface recvBypass = map(getRecvBypassIfc, bypassWire); + + interface rsFpuMulDivIfc = rsFpuMulDiv; + + interface specUpdate = joinSpeculationUpdate(vec( + rsFpuMulDiv.specUpdate, + dispToRegQ.specUpdate, + regToExeQ.specUpdate, + fpuExec.specUpdate, + mulDivExec.specUpdate + )); + + method Data getPerf(ExeStagePerfType t); + return (case(t) +`ifdef PERF_COUNT + ExeIntMulCnt: exeIntMulCnt; + ExeIntDivCnt: exeIntDivCnt; + ExeFpFmaCnt: exeFpFmaCnt; + ExeFpDivCnt: exeFpDivCnt; + ExeFpSqrtCnt: exeFpSqrtCnt; +`endif + default: 0; + endcase); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/MemExePipeline.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/MemExePipeline.bsv new file mode 100644 index 0000000..1d7d496 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/MemExePipeline.bsv @@ -0,0 +1,1289 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Vector::*; +import BuildVector::*; +import GetPut::*; +import ClientServer::*; +import Cntrs::*; +import Fifo::*; +import Types::*; +import ProcTypes::*; +import MemoryTypes::*; +import SynthParam::*; +import Exec::*; +import Performance::*; +import ReservationStationEhr::*; +import ReservationStationMem::*; +import ReorderBuffer::*; +import TlbTypes::*; +import DTlb::*; +import SplitLSQ::*; +//import SerialLSQ::*; +import StoreBuffer::*; +import HasSpecBits::*; +import SpecFifo::*; +import SpecPoisonFifo::*; +import CCTypes::*; +import L1CoCache::*; +import Bypass::*; +import LatencyTimer::*; + +typedef struct { + // inst info + MemFunc mem_func; + ImmData imm; + PhyRegs regs; + InstTag tag; + LdStQTag ldstq_tag; +} MemDispatchToRegRead deriving(Bits, Eq, FShow); + +typedef struct { + // inst info + MemFunc mem_func; + ImmData imm; + InstTag tag; + LdStQTag ldstq_tag; + // src reg vals + Data rVal1; + Data rVal2; +} MemRegReadToExe deriving(Bits, Eq, FShow); + +typedef struct { + // inst info + MemFunc mem_func; + InstTag tag; + LdStQTag ldstq_tag; + // result + ByteEn shiftedBE; + Addr vaddr; // virtual addr + Bool misaligned; +} MemExeToFinish deriving(Bits, Eq, FShow); + +// bookkeeping when waiting for MMIO resp which may cause exception +typedef struct { + Bool isLd; +} WaitMMIOResp deriving(Bits, Eq, FShow); + +typedef union tagged { + void Invalid; + void Lr; + void ScAmo; + WaitMMIOResp MMIO; +} WaitLrScAmoMMIOResp deriving(Bits, Eq, FShow); + +typedef enum { + None, Lr, LdMMIO, Fence, ScAmo, StMMIO, System +} WaitReconcile deriving(Bits, Eq, FShow); + +typedef struct { + LineDataOffset offset; + ByteEn shiftedBE; + Data shiftedData; +} WaitStResp deriving(Bits, Eq, FShow); + +// synthesized pipeline fifos +typedef SpecFifo_SB_deq_enq_C_deq_enq#(1, MemDispatchToRegRead) MemDispToRegFifo; +(* synthesize *) +module mkMemDispToRegFifo(MemDispToRegFifo); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(False); + return m; +endmodule + +typedef SpecFifo_SB_deq_enq_C_deq_enq#(1, MemRegReadToExe) MemRegToExeFifo; +(* synthesize *) +module mkMemRegToExeFifo(MemRegToExeFifo); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(False); + return m; +endmodule + +typedef DTlb#(MemExeToFinish) DTlbSynth; +(* synthesize *) +module mkDTlbSynth(DTlbSynth); + function TlbReq getTlbReq(MemExeToFinish x); + return TlbReq { + addr: x.vaddr, + write: (case(x.mem_func) + St, Sc, Amo: True; + default: False; + endcase) + }; + endfunction + let m <- mkDTlb(getTlbReq); + return m; +endmodule + +interface MemExeInput; + // conservative scoreboard check in reg read stage + method RegsReady sbCons_lazyLookup(PhyRegs r); + // Phys reg file + method Data rf_rd1(PhyRIndx rindx); + method Data rf_rd2(PhyRIndx rindx); + // CSR file + method Data csrf_rd(CSR csr); + // ROB + method Addr rob_getPC(InstTag t); + method Action rob_setExecuted_doFinishMem(InstTag t, Addr vaddr, Bool access_at_commit, Bool non_mmio_st_done); + method Action rob_setExecuted_deqLSQ(InstTag t, Maybe#(Exception) cause, Maybe#(LdKilledBy) ld_killed); + // MMIO + method Bool isMMIOAddr(Addr a); + method Action mmioReq(MMIOCRq r); + method MMIODataPRs mmioRespVal; + method Action mmioRespDeq; + + // global broadcast methods + // set aggressive sb & wake up RS + method Action setRegReadyAggr_mem(PhyRIndx dst); + method Action setRegReadyAggr_forward(PhyRIndx dst); + // write reg file & set conservative sb + method Action writeRegFile(PhyRIndx dst, Data data); + + // performance + method Bool doStats; +endinterface + +interface MemExePipeline; + // recv bypass from exe and finish stages of each ALU pipeline + interface Vector#(TMul#(2, AluExeNum), RecvBypass) recvBypass; + interface ReservationStationMem rsMemIfc; + interface DTlbSynth dTlbIfc; + interface SplitLSQ lsqIfc; + interface StoreBuffer stbIfc; + interface DCoCache dMemIfc; + interface SpeculationUpdate specUpdate; +`ifdef SELF_INV_CACHE + interface Server#(void, void) reconcile; +`endif + method Data getPerf(ExeStagePerfType t); +endinterface + +module mkMemExePipeline#(MemExeInput inIfc)(MemExePipeline); + Bool verbose = True; + + // we change cache request in case of single core, becaues our MSI protocol + // is not good with single core + Bool multicore = valueof(CoreNum) > 1; + +`ifdef PERF_COUNT + // load issue stall + Count#(Data) exeLdStallByLdCnt <- mkCount(0); + Count#(Data) exeLdStallByStCnt <- mkCount(0); + Count#(Data) exeLdStallBySBCnt <- mkCount(0); + // load forward count + Count#(Data) exeLdForwardCnt <- mkCount(0); + // load/store memory total latency (max 1K cycle latency for 1 Ld/St) + LatencyTimer#(LdQSize, 10) ldMemLatTimer <- mkLatencyTimer; + LatencyTimer#(SBSize, 10) stMemLatTimer <- mkLatencyTimer; + Count#(Data) exeLdMemLat <- mkCount(0); + Count#(Data) exeStMemLat <- mkCount(0); + // load to use latency: dispatch to resp + LatencyTimer#(LdQSize, 10) ldToUseLatTimer <- mkLatencyTimer; + Count#(Data) exeLdToUseLat <- mkCount(0); + Count#(Data) exeLdToUseCnt <- mkCount(0); // number of Ld resp written to reg file + // address translate exception + Count#(Data) exeTlbExcepCnt <- mkCount(0); + // successful store-cond + Count#(Data) exeScSuccessCnt <- mkCount(0); + // fence count + Count#(Data) exeLrScAmoAcqCnt <- mkCount(0); + Count#(Data) exeLrScAmoRelCnt <- mkCount(0); + Count#(Data) exeFenceCnt <- mkCount(0); + Count#(Data) exeFenceAcqCnt <- mkCount(0); + Count#(Data) exeFenceRelCnt <- mkCount(0); +`endif + + // reservation station + ReservationStationMem rsMem <- mkReservationStationMem; + + // pipeline fifos + let dispToRegQ <- mkMemDispToRegFifo; + let regToExeQ <- mkMemRegToExeFifo; + + // wire to recv bypass + Vector#(TMul#(2, AluExeNum), RWire#(Tuple2#(PhyRIndx, Data))) bypassWire <- replicateM(mkRWire); + + // TLB + DTlbSynth dTlb <- mkDTlbSynth; + + // store buffer only used in WEAK model +`ifdef TSO_MM + StoreBuffer stb <- mkDummyStoreBuffer; +`else + StoreBuffer stb <- mkStoreBufferEhr; +`endif + // LSQ + SplitLSQ lsq <- mkSplitLSQ; + // wire to issue Ld which just finish addr tranlation + RWire#(LSQIssueLdInfo) issueLd <- mkRWire; + + // waiting bit for Lr/Sc/Amo/MMIO resp + Reg#(WaitLrScAmoMMIOResp) waitLrScAmoMMIOResp <- mkReg(Invalid); +`ifdef TSO_MM + // TSO only: waiting for store resp; use **1-element** CF FIFO to make + // store blocking and avoid conflict between pipelineResp_cRq and + // doDeqStQ_St_Mem_issue + Fifo#(1, WaitStResp) waitStRespQ <- mkCFFifo; +`endif + // fifo for req mem + Fifo#(1, Tuple2#(LdQTag, Addr)) reqLdQ <- mkBypassFifo; + Fifo#(1, ProcRq#(DProcReqId)) reqLrScAmoQ <- mkBypassFifo; +`ifdef TSO_MM + Fifo#(1, Addr) reqStQ <- mkBypassFifo; +`else + Fifo#(1, Tuple2#(SBIndex, Addr)) reqStQ <- mkBypassFifo; +`endif + // fifo for load result + Fifo#(2, Tuple2#(LdQTag, MemResp)) forwardQ <- mkCFFifo; + Fifo#(2, Tuple2#(LdQTag, MemResp)) memRespLdQ <- mkCFFifo; + // fifo for Lr/Sc/Amo resp + Fifo#(1, MemResp) respLrScAmoQ <- mkCFFifo; + // resp ifc to D$ + L1ProcResp#(DProcReqId) procRespIfc = (interface L1ProcResp; + method Action respLd(DProcReqId id, Data d); + LdQTag tag = truncate(id); + memRespLdQ.enq(tuple2(tag, d)); + // early wake up RS and set SB + // this is done only when the resp is not wrong path + LSQHitInfo info <- lsq.getHit(Ld (tag)); + if(info.dst matches tagged Valid .dst &&& !info.waitWPResp) begin + inIfc.setRegReadyAggr_mem(dst.indx); + end + if(verbose) begin + $display("[Ld resp] ", fshow(id), "; ", fshow(d), "; ", fshow(info)); + end +`ifdef PERF_COUNT + // perf: load mem latency + let lat <- ldMemLatTimer.done(tag); + if(inIfc.doStats) begin + exeLdMemLat.incr(zeroExtend(lat)); + end +`endif + endmethod + method Action respLrScAmo(DProcReqId id, Data d); + respLrScAmoQ.enq(d); + if(verbose) begin + $display("[Lr/Sc/Amo resp] ", fshow(id), "; ", fshow(d)); + end + endmethod +`ifdef TSO_MM + method ActionValue#(Tuple2#(LineByteEn, Line)) respSt(DProcReqId id); + lsq.deqSt; // deq here + let waitSt <- toGet(waitStRespQ).get; + if(verbose) begin + $display("[Store resp] idx ", fshow(id), + ", ", fshow(waitSt)); + end +`ifdef PERF_COUNT + // perf: store mem latency + let lat <- stMemLatTimer.done(0); + if(inIfc.doStats) begin + exeStMemLat.incr(zeroExtend(lat)); + end +`endif + // now figure out the data to be written + Vector#(LineSzData, ByteEn) be = replicate(replicate(False)); + Line data = replicate(0); + be[waitSt.offset] = waitSt.shiftedBE; + data[waitSt.offset] = waitSt.shiftedData; + return tuple2(unpack(pack(be)), data); + endmethod +`else + method ActionValue#(Tuple2#(LineByteEn, Line)) respSt(DProcReqId id); + SBIndex idx = truncate(id); + let e <- stb.deq(idx); // deq SB + lsq.wakeupLdStalledBySB(idx); // wake up loads + if(verbose) $display("[Store resp] idx = %x, ", idx, fshow(e)); +`ifdef PERF_COUNT + // perf: store mem latency + let lat <- stMemLatTimer.done(idx); + if(inIfc.doStats) begin + exeStMemLat.incr(zeroExtend(lat)); + end +`endif + return tuple2(e.byteEn, unpack(e.data)); // return SB entry + endmethod +`endif + method Action evict(LineAddr lineAddr); +`ifdef TSO_MM + if(verbose) $display("[cache evict] ", fshow(lineAddr)); + lsq.cacheEvict(lineAddr); +`else + noAction; +`endif + endmethod + endinterface); + // non-blocking coherent D$ + DCoCache dMem <- mkDCoCache(procRespIfc); + +`ifdef SELF_INV_CACHE + // Waiting bit for reconcile to be performed. We set the bit and start + // reconcile when we are about to deq an acquire from LSQ. The deq happens + // only after reconcile is done. XXX Note that mem resp of Lr/Sc/Amo/MMIO + // will not be dequeued unitl cache is reconciled if the Lr/Sc/Amo/MMIO + // carries the .aq bit. However, since we only have 1 Lr/Sc/Amo/MMIO in + // flight (which is always non-speculative), this won't block the cache or + // network. + Reg#(WaitReconcile) waitReconcile <- mkReg(None); +`endif + + //======================================================= + // Reservation Station Stuff + //======================================================= + + rule doDispatchMem; + rsMem.doDispatch; + let x = rsMem.dispatchData; + if(verbose) $display("[doDispatchMem] ", fshow(x)); + + // check store not having dst reg: this is for setting store to be + // executed after address transation + doAssert(!(x.data.mem_func == St && isValid(x.regs.dst)), + "St cannot have dst reg"); + + // go to next stage + dispToRegQ.enq(ToSpecFifo { + data: MemDispatchToRegRead { + mem_func: x.data.mem_func, + imm: x.data.imm, + regs: x.regs, + tag: x.tag, + ldstq_tag: x.data.ldstq_tag + }, + spec_bits: x.spec_bits + }); + +`ifdef PERF_COUNT + // perf: load to use latency + if(x.data.ldstq_tag matches tagged Ld .idx) begin + ldToUseLatTimer.start(idx); + end +`endif + endrule + + rule doRegReadMem; + dispToRegQ.deq; + let dispToReg = dispToRegQ.first; + let x = dispToReg.data; + if(verbose) $display("[doRegReadMem] ", fshow(dispToReg)); + + // check conservative scoreboard + let regsReady = inIfc.sbCons_lazyLookup(x.regs); + + // get rVal1 (check bypass) + Data rVal1 = ?; + if(x.regs.src1 matches tagged Valid .src1) begin + rVal1 <- readRFBypass(src1, regsReady.src1, inIfc.rf_rd1(src1), bypassWire); + end + + // get rVal2 (check bypass) + Data rVal2 = ?; + if(x.regs.src2 matches tagged Valid .src2) begin + rVal2 <- readRFBypass(src2, regsReady.src2, inIfc.rf_rd2(src2), bypassWire); + end + + // go to next stage + regToExeQ.enq(ToSpecFifo { + data: MemRegReadToExe { + mem_func: x.mem_func, + imm: x.imm, + tag: x.tag, + ldstq_tag: x.ldstq_tag, + rVal1: rVal1, + rVal2: rVal2 + }, + spec_bits: dispToReg.spec_bits + }); + endrule + + rule doExeMem; + regToExeQ.deq; + let regToExe = regToExeQ.first; + let x = regToExe.data; + if(verbose) $display("[doExeMem] ", fshow(regToExe)); + + // get virtual addr & St/Sc/Amo data + Addr vaddr = x.rVal1 + signExtend(x.imm); + Data data = x.rVal2; + + // get shifted data and BE + // we can use virtual addr to shift, since page size > dword size + ByteEn origBE = lsq.getOrigBE(x.ldstq_tag); + function Tuple2#(ByteEn, Data) getShiftedBEData(Addr addr, ByteEn be, Data d); + Bit#(TLog#(NumBytes)) byteOffset = truncate(addr); + return tuple2(unpack(pack(be) << byteOffset), d << {byteOffset, 3'b0}); + endfunction + let {shiftBE, shiftData} = getShiftedBEData(vaddr, origBE, data); + + // update LSQ data now + if(x.ldstq_tag matches tagged St .stTag) begin + Data d = x.mem_func == Amo ? data : shiftData; // XXX don't shift for AMO + lsq.updateData(stTag, d); + end + + // go to next stage by sending to TLB + dTlb.procReq(DTlbReq { + inst: MemExeToFinish { + mem_func: x.mem_func, + tag: x.tag, + ldstq_tag: x.ldstq_tag, + shiftedBE: shiftBE, + vaddr: vaddr, + misaligned: memAddrMisaligned(vaddr, origBE) + }, + specBits: regToExe.spec_bits + }); + endrule + + rule doFinishMem; + dTlb.deqProcResp; + let dTlbResp = dTlb.procResp; + let x = dTlbResp.inst; + let {paddr, cause} = dTlbResp.resp; + + if(verbose) $display("[doFinishMem] ", fshow(dTlbResp)); + if(isValid(cause) && verbose) $display(" [doFinishMem - dTlb response] PAGEFAULT!"); + + // check misalignment + if(!isValid(cause) && x.misaligned) begin + case(x.mem_func) + Ld, Lr: begin + cause = Valid (LoadAddrMisaligned); + end + default: begin + cause = Valid (StoreAddrMisaligned); + end + endcase + end + + // check if addr is MMIO (only valid in case of no page fault) + Bool isMMIO = inIfc.isMMIOAddr(paddr); + // raise access fault in case of MMIO Lr/Sc + if(!isValid(cause) && isMMIO) begin + case(x.mem_func) + Lr: begin + cause = Valid (LoadAccessFault); + end + Sc: begin + cause = Valid (StoreAccessFault); + end + endcase + end + + // update ROB (access at commit and non-mmio st done can only be true + // when there is no exceptio) + Bool isLrScAmo = (case(x.mem_func) + Lr, Sc, Amo: True; + default: False; + endcase); + Bool access_at_commit = !isValid(cause) && (isMMIO || isLrScAmo); + Bool non_mmio_st_done = !isValid(cause) && !isMMIO && x.mem_func == St; + inIfc.rob_setExecuted_doFinishMem(x.tag, x.vaddr, + access_at_commit, non_mmio_st_done); + + // update LSQ + LSQUpdateAddrResult updRes <- lsq.updateAddr( + x.ldstq_tag, cause, paddr, isMMIO, x.shiftedBE + ); + + // issue non-MMIO Ld which has no excpetion and is not waiting for + // wrong path resp + if (x.mem_func == Ld && !isMMIO && + !isValid(cause) && !updRes.waitWPResp) begin + LdQTag ldTag = ?; + if(x.ldstq_tag matches tagged Ld .t) begin + ldTag = t; + end + else begin + doAssert(False, "must be in LdQ"); + end + issueLd.wset(LSQIssueLdInfo { + tag: ldTag, + paddr: paddr, + shiftedBE: x.shiftedBE + }); + end + +`ifdef PERF_COUNT + if(isValid(cause) && inIfc.doStats) begin + exeTlbExcepCnt.incr(1); + end +`endif + endrule + + //======================================================= + // End of Reservation Station Stuff + //======================================================= + + //======================================================= + // Load/Store Queue Stuff + //======================================================= + + // send Ld to forward or memory + function Action doIssueLd(LSQIssueLdInfo info, Bool fromIssueQ); + action + // search SB only in WEAK model +`ifdef TSO_MM + let sbRes = SBSearchRes { + matchIdx: Invalid, + forwardData: Invalid + }; +`else + SBSearchRes sbRes = stb.search(info.paddr, info.shiftedBE); +`endif + // search LSQ + LSQIssueLdResult issRes <- lsq.issueLd(info.tag, info.paddr, info.shiftedBE, sbRes); + if(verbose) begin + $display("[doIssueLd] fromIssueQ: ", fshow(fromIssueQ), " ; ", + fshow(info), " ; ", fshow(sbRes), " ; ", fshow(issRes)); + end + // summarize + if(issRes matches tagged Forward .forward) begin + forwardQ.enq(tuple2(info.tag, forward.data)); + // early wake up + if(forward.dst matches tagged Valid .dst) begin + inIfc.setRegReadyAggr_forward(dst.indx); + end +`ifdef PERF_COUNT + // perf: load forward + if(inIfc.doStats) begin + exeLdForwardCnt.incr(1); + end +`endif + end + else if(issRes == ToCache) begin + reqLdQ.enq(tuple2(zeroExtend(info.tag), info.paddr)); +`ifdef PERF_COUNT + // perf: load mem latency + ldMemLatTimer.start(info.tag); +`endif + end + else if(issRes matches tagged Stall .stallBy) begin +`ifdef PERF_COUNT + // perf: load stall + if(inIfc.doStats) begin + case(stallBy) + LdQ: exeLdStallByLdCnt.incr(1); + StQ: exeLdStallByStCnt.incr(1); + SB: exeLdStallBySBCnt.incr(1); + default: doAssert(False, "unknow stall reason"); + endcase + end +`endif + end + else begin + doAssert(False, "load is stalled"); + end + endaction + endfunction + + rule doIssueLdFromIssueQ; + // get issue entry from LSQ + LSQIssueLdInfo info <- lsq.getIssueLd; + doIssueLd(info, True); + endrule + + // we have ordered setRegReadyAggr_forward < setRegReadyAggr_mem to make + // issue rule and cache resp rule to fire concurrently in weak model. + // However, in TSO, when doAssert is removed in FPGA synthesis, lsq.deqLd + // and lsq.issueLd are conflict-free with each other. This makes + // doDeqLdQ_XX_deq rules ordered after doIssueLdFromXX rules, and leads to + // schedule cycles (because bluespec compiler picks sub-optimal conflicts + // to resolve some cycles). Therefore we manually create conflict and + // precedence here using preempts. + (* preempts = "doDeqLdQ_Lr_deq, doIssueLdFromUpdate" *) + (* preempts = "doDeqLdQ_Lr_deq, doIssueLdFromIssueQ" *) + (* preempts = "doDeqLdQ_MMIO_deq, doIssueLdFromUpdate" *) + (* preempts = "doDeqLdQ_MMIO_deq, doIssueLdFromIssueQ" *) + + (* descending_urgency = "doIssueLdFromIssueQ, doIssueLdFromUpdate" *) // prioritize older load + rule doIssueLdFromUpdate(issueLd.wget matches tagged Valid .info); + // issue the entry that just updates LSQ this cycle + doIssueLd(info, False); + endrule + + // handle load resp + function Action doRespLd(LdQTag tag, Data data, String rule_name); + action + LSQRespLdResult res <- lsq.respLd(tag, data); + if(verbose) $display(rule_name, " ", fshow(tag), "; ", fshow(data), "; ", fshow(res)); + if(res.dst matches tagged Valid .dst) begin + inIfc.writeRegFile(dst.indx, res.data); +`ifdef PERF_COUNT + // perf: load to use latency + let lat <- ldToUseLatTimer.done(tag); + if(inIfc.doStats) begin + exeLdToUseLat.incr(zeroExtend(lat)); + exeLdToUseCnt.incr(1); + end +`endif + end + if(res.wrongPath) begin + doAssert(res.dst == Invalid, "wrong path resp cannot write reg"); + end + endaction + endfunction + + rule doRespLdMem; + memRespLdQ.deq; + let {t, d} = memRespLdQ.first; + doRespLd(t, d, "[doRespLdMem]"); + endrule + + (* descending_urgency = "doRespLdMem, doRespLdForward" *) // prioritize mem resp + rule doRespLdForward; + forwardQ.deq; + let {t, d} = forwardQ.first; + doRespLd(t, d, "[doRespLdForward]"); + endrule + + // deqStQ + LdQDeqEntry lsqDeqLd = lsq.firstLd; + + // deq fault/killed ld + rule doDeqLdQ_fault(isValid(lsqDeqLd.fault)); + if(verbose) $display("[doDeqLdQ_fault] ", fshow(lsqDeqLd)); + lsq.deqLd; + inIfc.rob_setExecuted_deqLSQ(lsqDeqLd.instTag, lsqDeqLd.fault, Invalid); + // check + doAssert(!isValid(lsqDeqLd.killed), "cannot be killed"); + endrule + + // deq non-MMIO Ld without fault (but may be killed) + rule doDeqLdQ_Ld_Mem( + !isValid(lsqDeqLd.fault) && + lsqDeqLd.memFunc == Ld && !lsqDeqLd.isMMIO + ); + if(verbose) $display("[doDeqLdQ_Ld] ", fshow(lsqDeqLd)); + lsq.deqLd; + // normal load should not have .rl, so no need to check SB empty + doAssert(!lsqDeqLd.rel, "normal Ld cannot have .rl"); + // set ROB as Executed (may be killed) + inIfc.rob_setExecuted_deqLSQ(lsqDeqLd.instTag, Invalid, lsqDeqLd.killed); + endrule + + // issue non-MMIO Lr wihtout fault when + // (1) not waiting for Lr/Sc/Amo/MMIO resp + // (2) WEAK: SB does not match that addr + // (3) WEAK: if .rl bit is set, SB is empty + rule doDeqLdQ_Lr_issue( + !isValid(lsqDeqLd.fault) + && !lsqDeqLd.isMMIO + && lsqDeqLd.memFunc == Lr + && waitLrScAmoMMIOResp == Invalid +`ifndef TSO_MM + && stb.noMatchLdQ(lsqDeqLd.paddr, lsqDeqLd.shiftedBE) + && (!lsqDeqLd.rel || stb.isEmpty) +`endif + ); + // set wait bit + waitLrScAmoMMIOResp <= Lr; + // send to mem + ProcRq#(DProcReqId) req = ProcRq { + id: 0, // id does not matter + addr: lsqDeqLd.paddr, + // Fetch Lr to E cannot guarantee forward progress of Lr/Sc, so by + // default we only request Lr for S (in multicore). However, in + // self-inv cache, Lr must fetch data to E, because parent does not + // track S copies. +`ifdef SELF_INV_CACHE + toState: E, +`else // !SELF_INV_CACHE +`ifdef LR_UP_TO_E + toState: E, // makefile macro forces Lr to upgrade to E +`else + toState: multicore ? S : E, +`endif +`endif // SELF_INV_CACHE + op: Lr, + byteEn: ?, + data: ?, + amoInst: ? + }; + reqLrScAmoQ.enq(req); + if(verbose) $display("[doDeqLdQ_Lr_issue] ", fshow(lsqDeqLd), "; ", fshow(req)); + // check + doAssert(!isValid(lsqDeqLd.killed), "cannot be killed"); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + if(lsqDeqLd.acq) begin + exeLrScAmoAcqCnt.incr(1); + end + if(lsqDeqLd.rel) begin + exeLrScAmoRelCnt.incr(1); + end + end +`endif + endrule + +`ifdef SELF_INV_CACHE + // issue reconcile to D$ in case of .aq + rule doDeqLdQ_Lr_reconcile( + waitLrScAmoMMIOResp == Lr && + lsqDeqLd.acq && waitReconcile == None + ); + dMem.reconcile.request.put(?); + waitReconcile <= Lr; + endrule +`endif + + rule doDeqLdQ_Lr_deq(waitLrScAmoMMIOResp == Lr); +`ifdef SELF_INV_CACHE + // wait reconcile to be done + if(lsqDeqLd.acq) begin + when(waitReconcile == Lr, noAction); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + end +`endif + // deq LSQ & reset wait bit + lsq.deqLd; + waitLrScAmoMMIOResp <= Invalid; + // get resp data (need shifting) + let d <- toGet(respLrScAmoQ).get; + Data resp = gatherLoad(lsqDeqLd.paddr, lsqDeqLd.byteEn, lsqDeqLd.unsignedLd, d); + // write reg file & set ROB as Executed & wakeup rs + if(lsqDeqLd.dst matches tagged Valid .dst) begin + inIfc.writeRegFile(dst.indx, resp); + inIfc.setRegReadyAggr_mem(dst.indx); + end + inIfc.rob_setExecuted_deqLSQ(lsqDeqLd.instTag, Invalid, Invalid); + if(verbose) $display("[doDeqLdQ_Lr_deq] ", fshow(lsqDeqLd), "; ", fshow(d), "; ", fshow(resp)); + // check + doAssert(lsqDeqLd.memFunc == Lr && !lsqDeqLd.isMMIO, "must be non-MMIO Lr"); + doAssert(!isValid(lsqDeqLd.fault) && !isValid(lsqDeqLd.killed), "no fualt or kill"); + endrule + + // issue MMIO Ld without fault when + // (1) not waiting for Lr/Sc/Amo/MMIO resp + // (2) WEAK: if .rl bit is set, SB is empty + rule doDeqLdQ_MMIO_issue( + !isValid(lsqDeqLd.fault) + && lsqDeqLd.isMMIO + && waitLrScAmoMMIOResp == Invalid +`ifndef TSO_MM + && (!lsqDeqLd.rel || stb.isEmpty) +`endif + ); + // set wait bit + waitLrScAmoMMIOResp <= MMIO (WaitMMIOResp { + isLd: True + }); + // send to MMIO + let req = MMIOCRq { + addr: lsqDeqLd.paddr, + func: Ld, + byteEn: lsqDeqLd.shiftedBE, // BE is LSQ is always shifted + data: ? + }; + inIfc.mmioReq(req); + if(verbose) $display("[doDeqLdQ_MMIO_issue] ", fshow(lsqDeqLd), "; ", fshow(req)); + // check + doAssert(!isValid(lsqDeqLd.killed), "cannot be killed"); + doAssert(lsqDeqLd.memFunc == Ld, "LdQ MMIO is only Ld"); + endrule + +`ifdef SELF_INV_CACHE + // issue reconcile to D$ in case of .aq + // This is in fact useless because MMIO can only be normal Ld which cannot + // have .aq bit + rule doDeqLdQ_MMIO_reconcile( + waitLrScAmoMMIOResp matches tagged MMIO .waitMMIO &&& + waitMMIO.isLd &&& + lsqDeqLd.acq &&& waitReconcile == None + ); + dMem.reconcile.request.put(?); + waitReconcile <= LdMMIO; + endrule +`endif + + rule doDeqLdQ_MMIO_deq( + waitLrScAmoMMIOResp matches tagged MMIO .waitMMIO &&& + waitMMIO.isLd &&& + inIfc.mmioRespVal.valid + ); +`ifdef SELF_INV_CACHE + // wait reconcile to be done + if(lsqDeqLd.acq) begin + when(waitReconcile == LdMMIO, noAction); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + end +`endif + inIfc.mmioRespDeq; + // deq LSQ & reset wait bit + lsq.deqLd; + waitLrScAmoMMIOResp <= Invalid; + // get resp (need to shift data) + let d = inIfc.mmioRespVal.data; + Data resp = gatherLoad(lsqDeqLd.paddr, lsqDeqLd.byteEn, lsqDeqLd.unsignedLd, d); + // write reg file & wakeup rs (this wakeup is late but MMIO is rare) & set ROB as Executed + if(lsqDeqLd.dst matches tagged Valid .dst) begin + inIfc.writeRegFile(dst.indx, resp); + inIfc.setRegReadyAggr_mem(dst.indx); + end + inIfc.rob_setExecuted_deqLSQ(lsqDeqLd.instTag, Invalid, Invalid); + if(verbose) $display("[doDeqLdQ_MMIO_deq] ", fshow(lsqDeqLd), "; ", fshow(d), "; ", fshow(resp)); + // check + doAssert(lsqDeqLd.memFunc == Ld && lsqDeqLd.isMMIO, "must be MMIO Ld"); + doAssert(!isValid(lsqDeqLd.fault) && !isValid(lsqDeqLd.killed), "no fualt or kill"); + endrule + + rule doDeqLdQ_MMIO_fault( + waitLrScAmoMMIOResp matches tagged MMIO .waitMMIO &&& + waitMMIO.isLd &&& + !inIfc.mmioRespVal.valid + ); +`ifdef SELF_INV_CACHE + // wait reconcile to be done + if(lsqDeqLd.acq) begin + when(waitReconcile == LdMMIO, noAction); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + end +`endif + inIfc.mmioRespDeq; + // deq LSQ & reset wait bit + lsq.deqLd; + waitLrScAmoMMIOResp <= Invalid; + // set ROB to raise access fault + inIfc.rob_setExecuted_deqLSQ(lsqDeqLd.instTag, Valid (LoadAccessFault), Invalid); + if(verbose) $display("[doDeqLdQ_MMIO_fault] ", fshow(lsqDeqLd)); + // check + doAssert(lsqDeqLd.memFunc == Ld && lsqDeqLd.isMMIO, "must be MMIO Ld"); + doAssert(!isValid(lsqDeqLd.fault) && !isValid(lsqDeqLd.killed), "no fualt or kill"); + endrule + + // deq StQ + StQDeqEntry lsqDeqSt = lsq.firstSt; + + rule doDeqStQ_fault(isValid(lsqDeqSt.fault)); + if(verbose) $display("[doDeqStQ_fault] ", fshow(lsqDeqSt)); + lsq.deqSt; + inIfc.rob_setExecuted_deqLSQ(lsqDeqSt.instTag, lsqDeqSt.fault, Invalid); + endrule + +`ifdef TSO_MM + // TSO: issue non-MMIO St to memory. Since waitStRespQ is an 1-elem fifo, + // if we can enq to it, then we are not waiting for store resp (i.e., this + // store has not been issued yet) + rule doDeqStQ_St_Mem_issue( + !isValid(lsqDeqSt.fault) && + lsqDeqSt.memFunc == St && !lsqDeqSt.isMMIO + ); + // send to mem + Addr addr = lsqDeqSt.paddr; + reqStQ.enq(addr); + // record waiting for store resp + LineDataOffset offset = getLineDataOffset(addr); + waitStRespQ.enq(WaitStResp { + offset: getLineDataOffset(addr), + shiftedBE: lsqDeqSt.shiftedBE, + shiftedData: lsqDeqSt.stData + }); + // we leave deq to resp time + // ROB should have already been set to executed + if(verbose) $display("[doDeqStQ_St] ", fshow(lsqDeqSt)); +`ifdef PERF_COUNT + // perf: store mem latency + stMemLatTimer.start(0); +`endif + endrule + +`else + + // WEAK: deq non-MMIO St when (1) no spec bit (2) can send to SB + rule doDeqStQ_St_Mem( + !isValid(lsqDeqSt.fault) &&& + lsqDeqSt.memFunc == St &&& !lsqDeqSt.isMMIO &&& + stb.getEnqIndex(lsqDeqSt.paddr) matches tagged Valid .sbIdx + ); + lsq.deqSt; + // send to SB + stb.enq(sbIdx, lsqDeqSt.paddr, lsqDeqSt.shiftedBE, lsqDeqSt.stData); + // ROB should have already been set to executed + if(verbose) $display("[doDeqStQ_St] ", fshow(lsqDeqSt)); + // normal store should not have .rl, so no need to check SB empty + doAssert(!lsqDeqSt.rel, "no .rl"); + endrule + + // send store to mem + rule doIssueSB; + let {sbIdx, en} <- stb.issue; + reqStQ.enq(tuple2(sbIdx, {en.addr, 0})); +`ifdef PERF_COUNT + // perf: store mem latency + stMemLatTimer.start(sbIdx); +`endif + endrule +`endif + + // deq Fence from SQ. need to check .aq and .rl. +`ifdef SELF_INV_CACHE + // reconcile should be issued after release is done + rule doDeqStQ_Fence_reconicle( + !isValid(lsqDeqSt.fault) + && lsqDeqSt.memFunc == Fence + && (!lsqDeqSt.rel || stb.isEmpty) // wait release first + && lsqDeqSt.acq && waitReconcile == None + ); + dMem.reconcile.request.put(?); + waitReconcile <= Fence; + endrule +`endif + + rule doDeqStQ_Fence( + !isValid(lsqDeqSt.fault) + && lsqDeqSt.memFunc == Fence +`ifndef TSO_MM + && (!lsqDeqSt.rel || stb.isEmpty) // check SB in case of release +`endif + ); +`ifdef SELF_INV_CACHE + // wait reconcile to be done + if(lsqDeqSt.acq) begin + when(waitReconcile == Fence, noAction); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + end +`endif + lsq.deqSt; + // set ROB executed + inIfc.rob_setExecuted_deqLSQ(lsqDeqSt.instTag, Invalid, Invalid); + if(verbose) $display("[doDeqStQ_Fence] ", fshow(lsqDeqSt)); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + exeFenceCnt.incr(1); + if(lsqDeqSt.acq) begin + exeFenceAcqCnt.incr(1); + end + if(lsqDeqSt.rel) begin + exeFenceRelCnt.incr(1); + end + end +`endif + endrule + + // issue non-MMIO Sc/Amo without fault when + // (1) not waiting for Lr/Sc/Amo/MMIO resp + // (2) WEAK: SB does not match that addr + // (3) WEAK: if .rl bit is set, SB is empty + rule doDeqStQ_ScAmo_issue( + !isValid(lsqDeqSt.fault) + && !lsqDeqSt.isMMIO + && (lsqDeqSt.memFunc == Sc || lsqDeqSt.memFunc == Amo) + && waitLrScAmoMMIOResp == Invalid +`ifndef TSO_MM + && stb.noMatchStQ(lsqDeqSt.paddr, lsqDeqSt.shiftedBE) + && (!lsqDeqSt.rel || stb.isEmpty) +`endif + ); + // set wait bit + waitLrScAmoMMIOResp <= ScAmo; + // send to mem + ProcRq#(DProcReqId) req = ProcRq { + id: 0, // id does not matter + addr: lsqDeqSt.paddr, + toState: M, + op: lsqDeqSt.memFunc == Sc ? Sc : Amo, + // XXX Amo uses **original** data (firstSt.stData is the original + // data for Amo). AMO doesn't use BE. Sc uses **shifted** BE and + // data (firstSt.stData is shifted for Sc). + byteEn: lsqDeqSt.shiftedBE, + data: lsqDeqSt.stData, + amoInst: AmoInst { + func: lsqDeqSt.amoFunc, + doubleWord: lsqDeqSt.shiftedBE == replicate(True), + aq: lsqDeqSt.acq, + rl: lsqDeqSt.rel + } + }; + reqLrScAmoQ.enq(req); + if(verbose) $display("[doDeqStQ_ScAmo_issue] ", fshow(lsqDeqSt), "; ", fshow(req)); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + if(lsqDeqSt.acq) begin + exeLrScAmoAcqCnt.incr(1); + end + if(lsqDeqSt.rel) begin + exeLrScAmoRelCnt.incr(1); + end + end +`endif + endrule + +`ifdef SELF_INV_CACHE + rule doDeqStQ_ScAmo_reconcile( + waitLrScAmoMMIOResp == ScAmo && + lsqDeqSt.acq && waitReconcile == None + ); + dMem.reconcile.request.put(?); + waitReconcile <= ScAmo; + endrule +`endif + + // deq non-MMIO Sc/Amo from LSQ when resp comes + rule doDeqStQ_ScAmo_deq(waitLrScAmoMMIOResp == ScAmo); +`ifdef SELF_INV_CACHE + // wait reconcile to be done + if(lsqDeqSt.acq) begin + when(waitReconcile == ScAmo, noAction); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + end +`endif + // deq LSQ & reset wait bit + lsq.deqSt; + waitLrScAmoMMIOResp <= Invalid; + // get resp data (no need to shift for Sc and Amo) + Data resp <- toGet(respLrScAmoQ).get; + // write reg file & set ROB as Executed & wake up rs + if(lsqDeqSt.dst matches tagged Valid .dst) begin + inIfc.writeRegFile(dst.indx, resp); + inIfc.setRegReadyAggr_mem(dst.indx); + end + inIfc.rob_setExecuted_deqLSQ(lsqDeqSt.instTag, Invalid, Invalid); + if(verbose) $display("[doDeqStQ_ScAmo_deq] ", fshow(lsqDeqSt), "; ", fshow(resp)); + // check + doAssert((lsqDeqSt.memFunc == Sc || lsqDeqSt.memFunc == Amo) && + !lsqDeqSt.isMMIO, "must be non-MMIO Sc/Amo"); + doAssert(!isValid(lsqDeqSt.fault), "no fault"); + // stats for successful SC +`ifdef PERF_COUNT + if(inIfc.doStats && lsqDeqSt.memFunc == Sc && resp == fromInteger(valueof(ScSuccVal))) begin + exeScSuccessCnt.incr(1); + end +`endif + endrule + + // issue MMIO St/Amo when + // (0) XXX Not a fence. MMIO bit of an fence entry in SQ may be + // uninitialized. For other entries, MMIO bit must be initialized because + // the deq entry is computed. + // (1) not waiting for Lr/Sc/Amo/MMIO resp + // (2) WEAK: if .rl bit is set, SB is empty + rule doDeqStQ_MMIO_issue( + !isValid(lsqDeqSt.fault) + && lsqDeqSt.memFunc != Fence + && lsqDeqSt.isMMIO + && waitLrScAmoMMIOResp == Invalid +`ifndef TSO_MM + && (!lsqDeqSt.rel || stb.isEmpty) +`endif + ); + // set wait bit + waitLrScAmoMMIOResp <= MMIO (WaitMMIOResp { + isLd: False + }); + // send to MMIO + let req = MMIOCRq { + addr: lsqDeqSt.paddr, + func: (case(lsqDeqSt.memFunc) + St: (St); + Amo: (Amo (lsqDeqSt.amoFunc)); + default: ?; + endcase), + byteEn: lsqDeqSt.shiftedBE, // BE is LSQ is always shifted + data: lsqDeqSt.stData // stData in LSQ is not shifted for AMO but for St + }; + inIfc.mmioReq(req); + if(verbose) $display("[doDeqStQ_MMIO_issue] ", fshow(lsqDeqSt), "; ", fshow(req)); + // MMIO may cause exception, must have spec tag, and only can be St/Amo + doAssert(lsqDeqSt.memFunc == St || lsqDeqSt.memFunc == Amo, "must be St/Amo"); +`ifdef PERF_COUNT + if(inIfc.doStats) begin + if(lsqDeqSt.acq) begin + exeLrScAmoAcqCnt.incr(1); + end + if(lsqDeqSt.rel) begin + exeLrScAmoRelCnt.incr(1); + end + end +`endif + endrule + +`ifdef SELF_INV_CACHE + rule doDeqStQ_MMIO_reconcile( + waitLrScAmoMMIOResp matches tagged MMIO .waitMMIO &&& + !waitMMIO.isLd &&& + lsqDeqSt.acq &&& waitReconcile == None + ); + dMem.reconcile.request.put(?); + waitReconcile <= StMMIO; + endrule +`endif + + // deq MMIO from StQ when valid resp comes + rule doDeqStQ_MMIO_deq( + waitLrScAmoMMIOResp matches tagged MMIO .waitMMIO &&& + !waitMMIO.isLd &&& + inIfc.mmioRespVal.valid + ); +`ifdef SELF_INV_CACHE + // wait reconcile to be done + if(lsqDeqSt.acq) begin + when(waitReconcile == StMMIO, noAction); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + end +`endif + inIfc.mmioRespDeq; + // deq LSQ & reset wait bit + lsq.deqSt; + waitLrScAmoMMIOResp <= Invalid; + // get resp (no need to shift for AMO) + Data resp = inIfc.mmioRespVal.data; + // write reg file & wakeup rs (this wakeup is late but MMIO is rare) & set ROB as Executed + if(lsqDeqSt.dst matches tagged Valid .dst) begin + inIfc.writeRegFile(dst.indx, resp); + inIfc.setRegReadyAggr_mem(dst.indx); + end + inIfc.rob_setExecuted_deqLSQ(lsqDeqSt.instTag, Invalid, Invalid); + if(verbose) $display("[doDeqStQ_MMIO_deq] ", fshow(lsqDeqSt), "; ", fshow(resp)); + // check + doAssert(lsqDeqSt.memFunc == St || lsqDeqSt.memFunc == Amo, "must be St/Amo"); + doAssert(!isValid(lsqDeqSt.fault), "no fault"); + endrule + + rule doDeqStQ_MMIO_fault( + waitLrScAmoMMIOResp matches tagged MMIO .waitMMIO &&& + !waitMMIO.isLd &&& + !inIfc.mmioRespVal.valid + ); +`ifdef SELF_INV_CACHE + // wait reconcile to be done + if(lsqDeqSt.acq) begin + when(waitReconcile == StMMIO, noAction); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + end +`endif + inIfc.mmioRespDeq; + // deq LSQ & reset wait bit + lsq.deqSt; + waitLrScAmoMMIOResp <= Invalid; + // set ROB to raise access fault + inIfc.rob_setExecuted_deqLSQ(lsqDeqSt.instTag, Valid (StoreAccessFault), Invalid); + if(verbose) $display("[doDeqStQ_MMIO_fault] ", fshow(lsqDeqSt)); + // check + doAssert(lsqDeqSt.memFunc == St || lsqDeqSt.memFunc == Amo, "must be St/Amo"); + doAssert(!isValid(lsqDeqSt.fault), "no fault"); + endrule + + // send req to D$ + rule sendLdToMem; + let {lsqTag, addr} <- toGet(reqLdQ).get; + dMem.procReq.req(ProcRq { + id: zeroExtend(lsqTag), + addr: addr, + toState: multicore ? S : E, // in case of single core, just fetch to E + op: Ld, + byteEn: ?, + data: ?, + amoInst: ? + }); + endrule + (* descending_urgency = "sendLdToMem, sendStToMem" *) // prioritize Ld over St + rule sendStToMem; +`ifdef TSO_MM + let addr <- toGet(reqStQ).get; + DProcReqId id = 0; +`else + let {sbIdx, addr} <- toGet(reqStQ).get; + DProcReqId id = zeroExtend(sbIdx); +`endif + dMem.procReq.req(ProcRq { + id: id, + addr: addr, + toState: M, + op: St, + byteEn: ?, + data: ?, + amoInst: ? + }); + endrule + (* descending_urgency = "sendLrScAmoToMem, sendStToMem" *) // prioritize Lr/Sc/Amo over St + rule sendLrScAmoToMem; + let r <- toGet(reqLrScAmoQ).get; + dMem.procReq.req(r); + endrule + + //======================================================= + // End of Load/Store Queue Stuff + //======================================================= + + interface recvBypass = map(getRecvBypassIfc, bypassWire); + interface rsMemIfc = rsMem; + interface dTlbIfc = dTlb; + interface lsqIfc = lsq; + interface stbIfc = stb; + interface dMemIfc = dMem; + interface specUpdate = joinSpeculationUpdate(vec( + rsMem.specUpdate, + dispToRegQ.specUpdate, + regToExeQ.specUpdate, + dTlb.specUpdate, + lsq.specUpdate + )); + +`ifdef SELF_INV_CACHE + interface Server reconcile; + interface Put request; + method Action put(void x) if(waitReconcile == None); + dMem.reconcile.request.put(?); + waitReconcile <= System; + endmethod + endinterface + interface Get response; + method ActionValue#(void) get if(waitReconcile == System); + let unused <- dMem.reconcile.response.get; + waitReconcile <= None; + return ?; + endmethod + endinterface + endinterface +`endif + + method Data getPerf(ExeStagePerfType t); + return (case(t) +`ifdef PERF_COUNT + ExeLdStallByLd: exeLdStallByLdCnt; + ExeLdStallBySt: exeLdStallByStCnt; + ExeLdStallBySB: exeLdStallBySBCnt; + ExeLdForward: exeLdForwardCnt; + ExeLdMemLat: exeLdMemLat; + ExeStMemLat: exeStMemLat; + ExeLdToUseLat: exeLdToUseLat; + ExeLdToUseCnt: exeLdToUseCnt; + ExeTlbExcep: exeTlbExcepCnt; + ExeScSuccessCnt: exeScSuccessCnt; + ExeLrScAmoAcqCnt: exeLrScAmoAcqCnt; + ExeLrScAmoRelCnt: exeLrScAmoRelCnt; + ExeFenceAcqCnt: exeFenceAcqCnt; + ExeFenceRelCnt: exeFenceRelCnt; + ExeFenceCnt: exeFenceCnt; +`endif + default: 0; + endcase); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv new file mode 100644 index 0000000..8570554 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/ProcConfig.bsv @@ -0,0 +1,326 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// Core size and cache size are controlled by macros CORE_XXX and CACHE_XXX. In +// MICRO 2018 paper, configuration BASE-T is defining CORE_SMALL and +// CACHE_LARGE, and configuration BASE-R is defining CORE_MEDIUM and +// CACHE_LARGE. Due to resource restrictions, 4-core multiprocessor on AWS is +// defining CORE_TINY and CACHE_MC. + +// +// ==== common parameters ==== +// + +`define rv64 True +`define m True +`define a True +`define f True +`define d True + +//`define NUM_CORES 1 // defined in make file + +//`define PERF_COUNT // defined in makefile + +`define REUSE_FMA // use FMA for add and mul + +`define LOG_BOOT_ROM_BYTES 12 // 4KB boot rom + +// tournament predictor, other options are: BHT, TOUR, GSELECT, GSHARE. NOTE +// that the predictors are of different size. +`define DIR_PRED_TOUR + +`define LOG_DEADLOCK_CYCLES 26 // 64M cycles for deadlock detection + +// Be lazy in reservation station wake and phy reg file, and enqs. LSQ is by +// default lazy. 1-elem spec FIFOs (pipeline stage regs) are by default not +// lazy. +`define LAZY_RS_RF True +`define RS_LAZY_ENQ True +`define ROB_LAZY_ENQ True + +`define L1_TLB_SIZE 32 // L1 fully assoc TLB size + +`define L2_TLB_HUGE_SIZE 8 // L2 2MB/1GB TLB size +`define LOG_L2_TLB_4KB_SIZE 10 // L2 4KB TLB log size (1024 entries) +`define LOG_L2_TLB_4KB_WAYS 2 // L2 4KB TLB log ways (4 ways) + +// FMA bookkeeping FIFO: add 1 to allow simultaneous enq/deq +`define BOOKKEEPING_FP_FMA_SIZE TAdd#(`XILINX_FP_FMA_LATENCY, 1) +// INT MUL bookkeeping FIFO: add 1 to allow simultaneous enq/deq, another 1 +// because of internal flow control in MUL unit +`define BOOKKEEPING_INT_MUL_SIZE TAdd#(`XILINX_INT_MUL_LATENCY, 2) + +// non-blocking DTLB +`define DTLB_REQ_NUM 4 +// non-blocking L2 TLB +`define L2TLB_REQ_NUM 2 + +`define DRAM_MAX_READS TExp#(`LOG_LLC_WAYS) // max reads in DRAM, match LLC ways +`define DRAM_MAX_WRITES 16 // write buffer size in AWS DRAM controller +`define DRAM_MAX_REQS 24 +`define DRAM_LATENCY 120 // model a constant dram latency + +`ifdef SECURITY +`define LOG_DRAM_REGION_NUM 6 // 64 DRAM regions +`define LOG_DRAM_REGION_SIZE 25 // 32MB for each DRAM region +`endif + +// +// ==== CACHE SIZE ==== +// + +`ifdef CACHE_SMALL + + // L1 + `define LOG_L1_LINES 8 // 16KB + `define LOG_L1_WAYS 3 // 8 ways + + // LLC + `define LOG_LLC_LINES 12 // 256KB + `define LOG_LLC_WAYS 4 // 16 ways + +`endif + +`ifdef CACHE_LARGE + + // L1 + `define LOG_L1_LINES 9 // 32KB + `define LOG_L1_WAYS 3 // 8 ways + + // LLC + `define LOG_LLC_LINES 14 // 1MB + `define LOG_LLC_WAYS 4 // 16 ways + +`endif + +`ifdef CACHE_MC_1MB + + // L1 + `define LOG_L1_LINES 9 // 32KB + `define LOG_L1_WAYS 2 // 4 ways + + // LLC + `define LOG_LLC_LINES 14 // 1MB + `define LOG_LLC_WAYS 4 // 16 ways + +`endif + +`ifdef CACHE_MC_2MB + + // L1 + `define LOG_L1_LINES 9 // 32KB + `define LOG_L1_WAYS 2 // 4 ways + + // LLC + `define LOG_LLC_LINES 15 // 2MB + `define LOG_LLC_WAYS 4 // 16 ways + +`endif + +// +// ==== CORE SIZE ==== +// + +`ifdef CORE_TINY + + // superscalar + `define sizeSup 2 + + // ROB + `define ROB_SIZE 48 + + // speculation + `define NUM_EPOCHS 8 + `define NUM_SPEC_TAGS 8 + + // Smaller L1 TLB + `undef TLB_SIZE + `define TLB_SIZE 16 + + // LSQ + `define LDQ_SIZE 18 + `define STQ_SIZE 10 + `define SB_SIZE 2 + + // reservation station sizes + `define RS_ALU_SIZE 10 + `define RS_MEM_SIZE 10 + `define RS_FPUMULDIV_SIZE 10 + +`endif + +`ifdef CORE_SMALL + + // superscalar + `define sizeSup 2 + + // ROB + `define ROB_SIZE 64 + + // speculation + `define NUM_EPOCHS 12 + `define NUM_SPEC_TAGS 12 + + // LSQ + `define LDQ_SIZE 24 + `define STQ_SIZE 14 + `define SB_SIZE 4 + + // reservation station sizes + `define RS_ALU_SIZE 16 + `define RS_MEM_SIZE 16 + `define RS_FPUMULDIV_SIZE 16 + +`endif + +`ifdef CORE_MEDIUM + + // superscalar + `define sizeSup 2 + + // ROB + `define ROB_SIZE 80 + + // speculation + `define NUM_EPOCHS 12 + `define NUM_SPEC_TAGS 12 + + // LSQ + `define LDQ_SIZE 24 + `define STQ_SIZE 14 + `define SB_SIZE 4 + + // reservation station sizes + `define RS_ALU_SIZE 16 + `define RS_MEM_SIZE 16 + `define RS_FPUMULDIV_SIZE 16 + +`endif + +`ifdef CORE_SMALL_WIDE + + // superscalar + `define sizeSup 4 + + // ROB + `define ROB_SIZE 64 + + // speculation + `define NUM_EPOCHS 16 + `define NUM_SPEC_TAGS 16 + + // LSQ + `define LDQ_SIZE 24 + `define STQ_SIZE 14 + `define SB_SIZE 4 + + // reservation station sizes + `define RS_ALU_SIZE 8 + `define RS_MEM_SIZE 8 + `define RS_FPUMULDIV_SIZE 16 + +`endif + +`ifdef CORE_BOOM + // we extend SMALL to match BOOM's ROB and memory latency, we also increase + // spec tags because of increased ROB size + + // superscalar + `define sizeSup 2 + + // ROB + `define ROB_SIZE 80 + + // speculation + `define NUM_EPOCHS 12 + `define NUM_SPEC_TAGS 12 + + // LSQ + `define LDQ_SIZE 24 + `define STQ_SIZE 14 + `define SB_SIZE 4 + + // reservation station sizes + `define RS_ALU_SIZE 16 + `define RS_MEM_SIZE 16 + `define RS_FPUMULDIV_SIZE 16 + + // change memory latency to 80 + `undef DRAM_LATENCY + `define DRAM_LATENCY 80 + +`endif + +`ifdef CORE_LARGE + + // superscalar + `define sizeSup 2 + + // ROB + `define ROB_SIZE 128 + + // speculation + `define NUM_EPOCHS 16 + `define NUM_SPEC_TAGS 32 + + // LSQ + `define LDQ_SIZE 48 + `define STQ_SIZE 28 + `define SB_SIZE 4 + + // reservation station sizes + `define RS_ALU_SIZE 32 + `define RS_MEM_SIZE 32 + `define RS_FPUMULDIV_SIZE 32 + +`endif + +`ifdef CORE_LARGE_WIDE + + // superscalar + `define sizeSup 4 + + // ROB + `define ROB_SIZE 128 + + // speculation + `define NUM_EPOCHS 16 + `define NUM_SPEC_TAGS 32 + + // LSQ + `define LDQ_SIZE 48 + `define STQ_SIZE 28 + `define SB_SIZE 4 + + // reservation station sizes + `define RS_ALU_SIZE 16 + `define RS_MEM_SIZE 16 + `define RS_FPUMULDIV_SIZE 32 + +`endif + +// +// ==== derived parameters ==== +// + + diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/RFileSynth.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/RFileSynth.bsv new file mode 100644 index 0000000..99bb7e2 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/RFileSynth.bsv @@ -0,0 +1,34 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import PhysRFile::*; +import SynthParam::*; + +typedef RFile#(RFileWrPortNum, RFileRdPortNum) RFileSynth; + +(* synthesize *) +module mkRFileSynth(RFileSynth); + let m <- mkRFile(`LAZY_RS_RF); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/RenameStage.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/RenameStage.bsv new file mode 100644 index 0000000..7a88206 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/RenameStage.bsv @@ -0,0 +1,963 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Vector::*; +import GetPut::*; +import Cntrs::*; +import Fifo::*; +import FIFO::*; +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import SynthParam::*; +import Performance::*; +import Exec::*; +import FetchStage::*; +import RenamingTable::*; +import ReorderBuffer::*; +import ReorderBufferSynth::*; +import Scoreboard::*; +import ScoreboardSynth::*; +import CsrFile::*; +import SpecTagManager::*; +import EpochManager::*; +import ReservationStationEhr::*; +import ReservationStationAlu::*; +import ReservationStationMem::*; +import ReservationStationFpuMulDiv::*; +import SplitLSQ::*; + +typedef struct { + FetchDebugState fetch; + EpochDebugState epoch; +} RenameStuck deriving(Bits, Eq, FShow); + +interface RenameInput; + // func units + interface FetchStage fetchIfc; // just for debug + interface ReorderBufferSynth robIfc; + interface RegRenamingTable rtIfc; + interface ScoreboardCons sbConsIfc; + interface ScoreboardAggr sbAggrIfc; + interface CsrFile csrfIfc; + interface EpochManager emIfc; + interface SpecTagManager smIfc; + interface Vector#(AluExeNum, ReservationStationAlu) rsAluIfc; + interface Vector#(FpuMulDivExeNum, ReservationStationFpuMulDiv) rsFpuMulDivIfc; + interface ReservationStationMem rsMemIfc; + interface SplitLSQ lsqIfc; + // pending MMIO req from platform + method Bool pendingMMIOPRq; + // record that a CSR inst or interrupt is sent to ROB + method Action issueCsrInstOrInterrupt; + // deadlock check + method Bool checkDeadlock; + // performance + method Bool doStats; +endinterface + +interface RenameStage; + // performance count + method Data getPerf(ExeStagePerfType t); + // deadlock check + interface Get#(RenameStuck) renameInstStuck; + interface Get#(RenameStuck) renameCorrectPathStuck; +endinterface + +module mkRenameStage#(RenameInput inIfc)(RenameStage); + Bool verbose = True; + + // func units + FetchStage fetchStage = inIfc.fetchIfc; + ReorderBufferSynth rob = inIfc.robIfc; + RegRenamingTable regRenamingTable = inIfc.rtIfc; + ScoreboardCons sbCons = inIfc.sbConsIfc; + ScoreboardAggr sbAggr = inIfc.sbAggrIfc; + CsrFile csrf = inIfc.csrfIfc; + EpochManager epochManager = inIfc.emIfc; + SpecTagManager specTagManager = inIfc.smIfc; + Vector#(AluExeNum, ReservationStationAlu) reservationStationAlu = inIfc.rsAluIfc; + Vector#(FpuMulDivExeNum, ReservationStationFpuMulDiv) reservationStationFpuMulDiv = inIfc.rsFpuMulDivIfc; + ReservationStationMem reservationStationMem = inIfc.rsMemIfc; + SplitLSQ lsq = inIfc.lsqIfc; + + // performance counter +`ifdef PERF_COUNT + Count#(Data) supRenameCnt <- mkCount(0); +`ifdef SECURITY + Count#(Data) specNoneCycles <- mkCount(0); + Count#(Data) specNonMemCycles <- mkCount(0); +`endif +`endif + + // deadlock check +`ifdef CHECK_DEADLOCK + // timer to check deadlock + Reg#(DeadlockTimer) renameInstTimer <- mkReg(0); + Reg#(DeadlockTimer) renameCorrectPathTimer <- mkReg(0); + // FIFOs to output deadlock info + FIFO#(RenameStuck) renameInstStuckQ <- mkFIFO1; + FIFO#(RenameStuck) renameCorrectPathStuckQ <- mkFIFO1; + // wires to indicate that deadlock is reported, so reset timers + PulseWire renameInstStuckSent <- mkPulseWire; + PulseWire renameCorrectPathStuckSent <- mkPulseWire; + // wires to reset timers since processor is making progress + PulseWire renameWrongPath <- mkPulseWire; + PulseWire renameCorrectPath <- mkPulseWire; + + let renameStuck = RenameStuck { + fetch: fetchStage.getFetchState, + epoch: epochManager.getEpochState + }; + + (* fire_when_enabled *) + rule checkDeadlock_renameInst(inIfc.checkDeadlock && renameInstTimer == maxBound); + renameInstStuckQ.enq(renameStuck); + renameInstStuckSent.send; + endrule + + (* fire_when_enabled *) + rule checkDeadlock_renameCorrecPath(inIfc.checkDeadlock && renameCorrectPathTimer == maxBound); + renameCorrectPathStuckQ.enq(renameStuck); + renameCorrectPathStuckSent.send; + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule incrDeadlockTimer(inIfc.checkDeadlock); + function DeadlockTimer getNextTimer(DeadlockTimer t); + return t == maxBound ? maxBound : t + 1; + endfunction + renameInstTimer <= (renameCorrectPath || renameWrongPath || renameInstStuckSent) ? 0 : getNextTimer(renameInstTimer); + renameCorrectPathTimer <= (renameCorrectPath || renameCorrectPathStuckSent) ? 0 : getNextTimer(renameCorrectPathTimer); + endrule +`endif + + // kill wrong path inst + // XXX we have to make this a separate rule instead of merging it with rename correct path + // This is because the rename correct path rule is conflict with other rules that redirect + // If wrong path inst keeps coming in, the rename rule may only kill wrong path, but blocks the redirect rule + rule doRenaming_wrongPath( + !epochManager.checkEpoch[0].check(fetchStage.pipelines[0].first.main_epoch) // first wrong path, so at least kill one + ); + // we stop when we see a correct path inst + Bool stop = False; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + if(!stop && fetchStage.pipelines[i].canDeq) begin + let x = fetchStage.pipelines[i].first; + if(epochManager.checkEpoch[i].check(x.main_epoch)) begin + // correct path; stop killing + stop = True; + end + else begin + // wrong path, kill it & update prev epoch + fetchStage.pipelines[i].deq; + epochManager.updatePrevEpoch[i].update(x.main_epoch); + if(verbose) $display("[doRenaming - %d] wrong path: pc = %16x", i, x.pc); + end + end + end +`ifdef CHECK_DEADLOCK + renameWrongPath.send; +`endif + endrule + + // check for exceptions and interrupts + function Maybe#(Trap) getTrap(FromFetchStage x); + Maybe#(Trap) trap = tagged Invalid; + let csr_state = csrf.decodeInfo; + let pending_interrupt = csrf.pending_interrupt; + let new_exception = checkForException(x.dInst, x.regs, csr_state); + if (isValid(x.cause)) begin + // previously found exception + trap = tagged Valid (tagged Exception fromMaybe(?, x.cause)); + end else if (isValid(pending_interrupt)) begin + // pending interrupt + trap = tagged Valid (tagged Interrupt fromMaybe(?, pending_interrupt)); + end else if (isValid(new_exception)) begin + // newly found exception + trap = tagged Valid (tagged Exception fromMaybe(?, new_exception)); + end + return trap; + endfunction + + // trap for first inst to rename + Maybe#(Trap) firstTrap = getTrap(fetchStage.pipelines[0].first); + + // XXX Stall renaming till ROB is empty if we need to replay this inst (i.e. system inst) + // This is a rough fix for a bug with the FPU CSR registers. + // i.e. stall when doReplay(inst) is true + + function Action incrEpochStallFetch; + action + epochManager.incrementEpoch; + // stall fetch until redirect + fetchStage.setWaitRedirect; + endaction + endfunction + + // rename single trap + rule doRenaming_Trap( + !inIfc.pendingMMIOPRq // stall when MMIO pRq is pending + && epochManager.checkEpoch[0].check(fetchStage.pipelines[0].first.main_epoch) // correct path + && isValid(firstTrap) // take trap + && rob.isEmpty // stall for ROB empty + ); + fetchStage.pipelines[0].deq; + let x = fetchStage.pipelines[0].first; + let pc = x.pc; + let ppc = x.ppc; + let main_epoch = x.main_epoch; + let dpTrain = x.dpTrain; + let inst = x.inst; + let dInst = x.dInst; + let arch_regs = x.regs; + let cause = x.cause; + if(verbose) $display("[doRenaming] trap: ", fshow(x)); + + // update prev epoch + epochManager.updatePrevEpoch[0].update(main_epoch); + // Flip epoch without redirecting + // This avoids doing incorrect work + incrEpochStallFetch; + // just place it in the reorder buffer + let y = ToReorderBuffer{pc: pc, + iType: dInst.iType, + csr: dInst.csr, + claimed_phy_reg: False, // no renaming is done + trap: firstTrap, + // default values of FullResult + ppc_vaddr_csrData: PPC (ppc), // default use PPC + fflags: 0, + //////// + will_dirty_fpu_state: False, + rob_inst_state: Executed, + lsqTag: ?, + ldKilled: Invalid, + memAccessAtCommit: False, + lsqAtCommitNotified: False, + nonMMIOStDone: False, + epochIncremented: True, // we have incremented epoch + spec_bits: specTagManager.currentSpecBits + }; + rob.enqPort[0].enq(y); + // record if we issue an interrupt + if(firstTrap matches tagged Valid (tagged Interrupt .i)) begin + inIfc.issueCsrInstOrInterrupt; + end +`ifdef CHECK_DEADLOCK + renameCorrectPath.send; +`endif + endrule + + // print rename info + function Action printRename(Integer i, + RegsReady regs_ready_cons, + RegsReady regs_ready_aggr, + ArchRegs arch_regs, + PhyRegs phy_regs); + action + $display(" [doRenaming - %d] regs_ready: cons ", i, fshow(regs_ready_cons), " ; aggr ", fshow(regs_ready_aggr)); + if (arch_regs.src1 matches tagged Valid .valid_src) begin + if (phy_regs.src1 matches tagged Valid .valid_src_renamed) begin + $display(" [SRC RENAMING] ", fshow(valid_src), " -> ", fshow(valid_src_renamed)); + end else begin + $display(" [SRC RENAMING] ERROR: ", fshow(valid_src), " -> INVALID"); + doAssert(False, "rename src1 invalid"); + end + end + if (arch_regs.src2 matches tagged Valid .valid_src) begin + if (phy_regs.src2 matches tagged Valid .valid_src_renamed) begin + $fdisplay(stdout, " [SRC RENAMING] ", fshow(valid_src), " -> ", fshow(valid_src_renamed)); + end else begin + $fdisplay(stdout, " [SRC RENAMING] ERROR: ", fshow(valid_src), " -> INVALID"); + doAssert(False, "rename src2 invalid"); + end + end + if (arch_regs.src3 matches tagged Valid .valid_src) begin + if (phy_regs.src3 matches tagged Valid .valid_src_renamed) begin + $fdisplay(stdout, " [SRC RENAMING] ", fshow(valid_src), " -> ", fshow(valid_src_renamed)); + end else begin + $fdisplay(stdout, " [SRC RENAMING] ERROR: ", fshow(valid_src), " -> INVALID"); + doAssert(False, "rename src3 invalid"); + end + end + if (arch_regs.dst matches tagged Valid .valid_dst) begin + if (phy_regs.dst matches tagged Valid .valid_dst_renamed) begin + $fdisplay(stdout, " [DST RENAMING] ", fshow(valid_dst), " => ", fshow(valid_dst_renamed)); + end else begin + $fdisplay(stdout, " [DST RENAMING] ERROR: ", fshow(valid_dst), " -> INVALID"); + doAssert(False, "rename dst invalid"); + end + end + endaction + endfunction + + // check for system inst that needs to replay + Bool firstReplay = doReplay(fetchStage.pipelines[0].first.dInst.iType); + + // System inst is renamed only when ROB is empty + rule doRenaming_SystemInst( + !inIfc.pendingMMIOPRq // stall when MMIO pRq is pending + && epochManager.checkEpoch[0].check(fetchStage.pipelines[0].first.main_epoch) // correct path + && !isValid(firstTrap) // not trap + && firstReplay // system inst needs replay + && rob.isEmpty // stall for ROB empty + ); + fetchStage.pipelines[0].deq; + let x = fetchStage.pipelines[0].first; + let pc = x.pc; + let ppc = x.ppc; + let main_epoch = x.main_epoch; + let dpTrain = x.dpTrain; + let inst = x.inst; + let dInst = x.dInst; + let arch_regs = x.regs; + let cause = x.cause; + if(verbose) $display("[doRenaming] system inst: ", fshow(x)); + + // update prev epoch + epochManager.updatePrevEpoch[0].update(main_epoch); + // Flip epoch without redirecting. This avoids doing incorrect work + incrEpochStallFetch; + + // get spec bits (should be 0), and no need to checkout spec tag + let spec_bits = specTagManager.currentSpecBits; + doAssert(spec_bits == 0, "cannot have spec bits"); + + // do renaming (renaming is non-speculative) + let rename_result = regRenamingTable.rename[0].getRename(arch_regs); + let phy_regs = rename_result.phy_regs; + regRenamingTable.rename[0].claimRename(arch_regs, spec_bits); + + // scoreboard lookup + let regs_ready_cons = sbCons.eagerLookup[0].get(phy_regs); + let regs_ready_aggr = sbAggr.eagerLookup[0].get(phy_regs); + sbCons.setBusy[0].set(phy_regs.dst); + sbAggr.setBusy[0].set(phy_regs.dst); + + // print rename info + if (verbose) begin + printRename(0, regs_ready_cons, regs_ready_aggr, arch_regs, phy_regs); + end + + // get ROB tag + let inst_tag = rob.enqPort[0].getEnqInstTag; + + // CSR inst will be sent to ALU exe pipeline + Bool to_exec = False; + if (dInst.execFunc matches tagged Alu .alu) begin + to_exec = True; + doAssert(dInst.iType == Csr, "only CSR inst send to exe"); + end + else begin + doAssert(dInst.iType == FenceI || + dInst.iType == SFence || + dInst.iType == Sret || + dInst.iType == Mret, + "non-CSR inst not send to exe"); + doAssert(dInst.execFunc == tagged Other, + "non-exe inst exec func is other"); + end + + // send to ALU reservation station + if (to_exec) begin + reservationStationAlu[0].enq(ToReservationStation { + data: AluRSData {dInst: dInst, dpTrain: dpTrain}, + regs: phy_regs, + tag: inst_tag, + spec_bits: spec_bits, + spec_tag: Invalid, + regs_ready: regs_ready_aggr // alu will recv bypass + }); + end + + // send to ROB + Bool will_dirty_fpu_state = False; + if (arch_regs.dst matches tagged Valid( tagged Fpu .r )) begin + will_dirty_fpu_state = True; + doAssert(False, "system inst never touches FP regs"); + end + RobInstState rob_inst_state = to_exec ? NotDone : Executed; + let y = ToReorderBuffer{pc: pc, + iType: dInst.iType, + csr: dInst.csr, + claimed_phy_reg: True, // XXX we always claim a free reg in rename + trap: Invalid, // no trap + // default values of FullResult + ppc_vaddr_csrData: PPC (ppc), // default use PPC + fflags: 0, + //////// + will_dirty_fpu_state: will_dirty_fpu_state, + rob_inst_state: rob_inst_state, + lsqTag: ?, + ldKilled: Invalid, + memAccessAtCommit: False, + lsqAtCommitNotified: False, + nonMMIOStDone: False, + epochIncremented: True, // system inst has incremented epoch + spec_bits: spec_bits + }; + rob.enqPort[0].enq(y); + + // record if we issue an CSR inst + if(dInst.iType == Csr) begin + inIfc.issueCsrInstOrInterrupt; + end + +`ifdef CHECK_DEADLOCK + renameCorrectPath.send; +`endif + endrule + +`ifdef SECURITY + // speculation control: + // M mode: turn off speculation for mem inst only + // non-M mode: controlled by mspec CSR + Bool machineMode = csrf.decodeInfo.prv == prvM; + Bool specNone = !machineMode && csrf.rd(CSRmspec) == zeroExtend(mSpecNone); + Bool specNonMem = machineMode || csrf.rd(CSRmspec) == zeroExtend(mSpecNonMem); + +`ifdef PERF_COUNT + rule incSpecNoneCycles(inIfc.doStats && specNone); + specNoneCycles.incr(1); + endrule + rule incSpecNonMemCycles(inIfc.doStats && specNonMem); + specNonMemCycles.incr(1); + endrule +`endif + + // first inst is mem inst + function Bool isMemInst(ExecFunc f); + return f matches tagged Mem .m ? True : False; + endfunction + Bool firstMem = isMemInst(fetchStage.pipelines[0].first.dInst.execFunc); + + // In case speculation is turned off for mem inst only, we rename mem inst + // only when ROB is empty + rule doRenaming_MemInst( + !inIfc.pendingMMIOPRq // stall when MMIO pRq is pending + && epochManager.checkEpoch[0].check(fetchStage.pipelines[0].first.main_epoch) // correct path + && !isValid(firstTrap) // not trap + && !firstReplay // not system inst + // turn off speculation for mem inst only, and first inst is mem + && (specNonMem && firstMem) + && rob.isEmpty // stall for ROB empty to process mem inst + ); + fetchStage.pipelines[0].deq; + let x = fetchStage.pipelines[0].first; + let pc = x.pc; + let ppc = x.ppc; + let main_epoch = x.main_epoch; + let dpTrain = x.dpTrain; + let inst = x.inst; + let dInst = x.dInst; + let arch_regs = x.regs; + let cause = x.cause; + if(verbose) $display("[doRenaming] mem inst: ", fshow(x)); + + // update prev epoch + epochManager.updatePrevEpoch[0].update(main_epoch); + + // get spec bits (should be 0), and no need to checkout spec tag + let spec_bits = specTagManager.currentSpecBits; + doAssert(spec_bits == 0, "cannot have spec bits"); + + // do renaming (renaming is non-speculative) + let rename_result = regRenamingTable.rename[0].getRename(arch_regs); + let phy_regs = rename_result.phy_regs; + regRenamingTable.rename[0].claimRename(arch_regs, spec_bits); + + // scoreboard lookup + let regs_ready_cons = sbCons.eagerLookup[0].get(phy_regs); + let regs_ready_aggr = sbAggr.eagerLookup[0].get(phy_regs); + sbCons.setBusy[0].set(phy_regs.dst); + sbAggr.setBusy[0].set(phy_regs.dst); + + // print rename info + if (verbose) begin + printRename(0, regs_ready_cons, regs_ready_aggr, arch_regs, phy_regs); + end + + // get ROB tag + let inst_tag = rob.enqPort[0].getEnqInstTag; + + // LSQ tag + LdStQTag lsq_tag = ?; + + // send to MEM reservation station + if (dInst.execFunc matches tagged Mem .mem_inst) begin + Bool isLdQ = isLdQMemFunc(mem_inst.mem_func); + Maybe#(LdStQTag) lsqEnqTag = isLdQ ? lsq.enqLdTag : lsq.enqStTag; + if (lsqEnqTag matches tagged Valid .lsqTag) begin + // can process, send to Mem rs and LSQ + lsq_tag = lsqTag; // record LSQ tag + if (dInst.iType != Fence) begin // Fence does not go to RS + reservationStationMem.enq(ToReservationStation { + data: MemRSData { + mem_func: mem_inst.mem_func, + imm: validValue(dInst.imm), + ldstq_tag: lsqTag + }, + regs: phy_regs, + tag: inst_tag, + spec_bits: spec_bits, + spec_tag: Invalid, + regs_ready: regs_ready_aggr // mem currently recv bypass + }); + end + doAssert(ppc == pc + 4, "Mem next PC is not PC+4"); + doAssert(!isValid(dInst.csr), "Mem never explicitly read/write CSR"); + doAssert((dInst.iType != Fence) == isValid(dInst.imm), + "Mem (non-Fence) needs imm for virtual addr"); + // put in ldstq + if(isLdQ) begin + lsq.enqLd(inst_tag, mem_inst, phy_regs.dst, spec_bits); + end + else begin + lsq.enqSt(inst_tag, mem_inst, phy_regs.dst, spec_bits); + end + end + else begin + // cannot process this inst, stall + when(False, noAction); + end + end + else begin + doAssert(False, "Must be mem inst"); + end + + // send to ROB + Bool will_dirty_fpu_state = False; + if (arch_regs.dst matches tagged Valid( tagged Fpu .r )) begin + will_dirty_fpu_state = True; + end + RobInstState rob_inst_state = NotDone; // mem inst always needs execution + let y = ToReorderBuffer{pc: pc, + iType: dInst.iType, + csr: dInst.csr, + claimed_phy_reg: True, // XXX we always claim a free reg in rename + trap: Invalid, // no trap + // default values of FullResult + ppc_vaddr_csrData: PPC (ppc), // default use PPC + fflags: 0, + //////// + will_dirty_fpu_state: will_dirty_fpu_state, + rob_inst_state: rob_inst_state, + lsqTag: lsq_tag, + ldKilled: Invalid, + memAccessAtCommit: False, // set by ROB in case of fence + lsqAtCommitNotified: False, + nonMMIOStDone: False, + epochIncremented: False, + spec_bits: spec_bits + }; + rob.enqPort[0].enq(y); + +`ifdef CHECK_DEADLOCK + renameCorrectPath.send; +`endif + endrule +`endif + + // Count based scheduling in case of $n$ RS for the same inst type. We + // assume all such RS are of the same size, and prioritize RS with smaller + // valid (occupied) entries. + function Maybe#(idxT) scheduleRS( + Vector#(n, countT) valid_cnt, Vector#(n, Bool) rdy + ) provisos( + Ord#(countT), Alias#(idxT, Bit#(TLog#(n))), Add#(1, a__, n) + ); + function Bit#(TLog#(n)) getRS(idxT a, idxT b); + if(!rdy[a]) begin + return b; + end + else if(!rdy[b]) begin + return a; + end + else begin + // prioritize RS with smaller valid-entry count + return valid_cnt[a] < valid_cnt[b] ? a : b; + end + endfunction + Vector#(n, idxT) idxVec = genWith(fromInteger); + idxT idx = fold(getRS, idxVec); + return rdy[idx] ? Valid (idx) : Invalid; + endfunction + + // rename correct path inst + rule doRenaming( + !inIfc.pendingMMIOPRq // stall when MMIO pRq is pending + && epochManager.checkEpoch[0].check(fetchStage.pipelines[0].first.main_epoch) // correct path + && !isValid(firstTrap) // not trap + && !firstReplay // not system inst +`ifdef SECURITY + // stall for ROB empty if we don't allow speculation at all + && (!specNone || rob.isEmpty) + // don't process mem inst if we don't allow speculation for mem inst only + && !(specNonMem && firstMem) +`endif + ); + // we stop superscalar rename when an instruction cannot be processed: + // (a) It has trap + // (b) It is wrong path + // (c) It is system inst (we handle system inst in a separate rule) + // (d) It does not have enough resource + Bool stop = False; + // We automatically stop after an inst cannot be deq from fetch stage + // because canDeq signal for sup-fifo is consecutive + + // Note that epoch will not change in this rule + + // track limited resource usage + Vector#(AluExeNum, Bool) aluExeUsed = replicate(False); + Vector#(FpuMulDivExeNum, Bool) fpuMulDivExeUsed = replicate(False); + Bool memExeUsed = False; + Bool specTagClaimed = False; // specTagManager + + // track rename activity + Bool doCorrectPath = False; + SupCnt renameCnt = 0; + + // initial spec bits at the beginning of this cycle + // we may update it during the processing + SpecBits spec_bits = specTagManager.currentSpecBits; + + // ALU RS valid counts + Vector#(AluExeNum, Bit#(TLog#(TAdd#(`RS_ALU_SIZE, 1)))) aluRSCount; + for(Integer i = 0; i < valueof(AluExeNum); i = i+1) begin + aluRSCount[i] = reservationStationAlu[i].approximateCount; + end + // FPU/MUL/DIV RS valid counts + Vector#(FpuMulDivExeNum, Bit#(TLog#(TAdd#(`RS_FPUMULDIV_SIZE, 1)))) fpuMulDivRSCount; + for(Integer i = 0; i < valueof(FpuMulDivExeNum); i = i+1) begin + fpuMulDivRSCount[i] = reservationStationFpuMulDiv[i].approximateCount; + end + + // We apply actions at the end of each iteration + // We **cannot** apply actions at the end of rule, + // because intermediate iterations may change state + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + if(!stop && fetchStage.pipelines[i].canDeq) begin + let x = fetchStage.pipelines[i].first; // don't deq now, inst may not have resource + let pc = x.pc; + let ppc = x.ppc; + let main_epoch = x.main_epoch; + let dpTrain = x.dpTrain; + let inst = x.inst; + let dInst = x.dInst; + let arch_regs = x.regs; + let cause = x.cause; + + // check for wrong path, if wrong path, don't process it, leave to the other rule in next cycle + if(!epochManager.checkEpoch[i].check(main_epoch)) begin + stop = True; + end + // for correct path + // check ROB can be enq, otherwise cannot process + if(!rob.enqPort[i].canEnq) begin + stop = True; + end + // check trap, if trap, cannot process, leave to the other rule in next cycle + if(isValid(getTrap(x))) begin + stop = True; + end + // for system inst, process in next cycle (in a different rule) + if(doReplay(dInst.iType)) begin + stop = True; + end +`ifdef SECURITY + // When speculation is not allowed at all, the second inst + // cannot be processed + if(specNone && i != 0) begin + stop = True; + end + // When speculation is not allowed for mem inst only, stop when + // we seen any mem inst + if(specNonMem && isMemInst(dInst.execFunc)) begin + stop = True; + end +`endif + // check renaming table can be enq, otherwise cannot process now + if(!regRenamingTable.rename[i].canRename) begin + stop = True; + end + // Figure out if there is new speculation and if there is + // speculative renaming happening. + Bool new_speculation = False; + Bool speculative_renaming = False; // deprecated: this is originally for Ld/St checkpoint + if (dInst.execFunc matches tagged Br .br) begin + // This instruction can cause a redirection due to branch + // misprediction. Lets claim a checkpoint for this instruction. + // If this instruction is a JAL or JRAL instruction, then the + // checkpoint should include the renaming for the destination + // register. + new_speculation = True; + speculative_renaming = False; + end + // if need spec tag, check spec tag is available, otherwise cannot process + if(new_speculation && (specTagClaimed || !specTagManager.canClaim)) begin + stop = True; + end + + if(!stop) begin + // we can continue to analyze this inst + // Claim a speculation tag from the specTagManager if necessary + Maybe#(SpecTag) spec_tag = tagged Invalid; + if (new_speculation) begin + spec_tag = tagged Valid specTagManager.nextSpecTag; + end + + // get renaming + // If the renaming is speculative, then the renaming will + // depend on the current spec_tag too. + let renaming_spec_bits = spec_bits | (speculative_renaming ? (1 << fromMaybe(?,spec_tag)) : 0); + let rename_result = regRenamingTable.rename[i].getRename(arch_regs); + let phy_regs = rename_result.phy_regs; + + // scoreboard lookup + let regs_ready_cons = sbCons.eagerLookup[i].get(phy_regs); + let regs_ready_aggr = sbAggr.eagerLookup[i].get(phy_regs); + + // get ROB tag + let inst_tag = rob.enqPort[i].getEnqInstTag; + + // LSQ tag + LdStQTag lsq_tag = ?; + + // check execution pipelines availability + // this determines whether this inst can finally be processed + // so we will directly take actions on exe pipelines + Bool to_exec = False; + Bool to_mem = False; + Bool to_FpuMulDiv = False; + case (dInst.execFunc) matches + tagged Alu .alu: to_exec = True; + tagged Br .br: to_exec = True; + tagged MulDiv .muldiv: to_FpuMulDiv = True; + tagged Fpu .fpu: to_FpuMulDiv = True; + tagged Mem .mem: to_mem = True; + default: + // no need for execution, directly become Executed + noAction; + endcase + + if (to_exec) begin + // find an ALU pipeline + function Bool aluValid(Integer k) = !aluExeUsed[k] && reservationStationAlu[k].canEnq; + Vector#(AluExeNum, Bool) aluReady = map(aluValid, genVector); + if(scheduleRS(aluRSCount, aluReady) matches tagged Valid .k) begin + // can process, send to ALU rs + aluExeUsed[k] = True; // mark resource used + reservationStationAlu[k].enq(ToReservationStation { + data: AluRSData {dInst: dInst, dpTrain: dpTrain}, + regs: phy_regs, + tag: inst_tag, + spec_bits: spec_bits, + spec_tag: spec_tag, + regs_ready: regs_ready_aggr // alu will recv bypass + }); + end + else begin + // cannot process this inst, stop + stop = True; + end + end + else if (to_FpuMulDiv) begin + function Bool fpuMulDivValid(Integer k) = !fpuMulDivExeUsed[k] && reservationStationFpuMulDiv[k].canEnq; + Vector#(FpuMulDivExeNum, Bool) fpuMulDivReady = map(fpuMulDivValid, genVector); + if(scheduleRS(fpuMulDivRSCount, fpuMulDivReady) matches tagged Valid .k) begin + // can process, send to FPU MUL DIV rs + fpuMulDivExeUsed[k] = True; // mark resource used + reservationStationFpuMulDiv[k].enq(ToReservationStation { + data: FpuMulDivRSData {execFunc: dInst.execFunc}, + regs: phy_regs, + tag: inst_tag, + spec_bits: spec_bits, + spec_tag: spec_tag, + regs_ready: regs_ready_aggr // fpu mul div recv bypass + }); + doAssert(ppc == pc + 4, "FpuMulDiv next PC is not PC+4"); + doAssert(!isValid(dInst.csr), "FpuMulDiv never explicitly read/write CSR"); + doAssert(!isValid(spec_tag), "should not have spec tag"); + end + else begin + // cannot process this inst, stop + stop = True; + end + end + else if (to_mem) begin + if (dInst.execFunc matches tagged Mem .mem_inst) begin + Bool isLdQ = isLdQMemFunc(mem_inst.mem_func); + Maybe#(LdStQTag) lsqEnqTag = isLdQ ? lsq.enqLdTag : lsq.enqStTag; + if (!memExeUsed &&& reservationStationMem.canEnq &&& + lsqEnqTag matches tagged Valid .lsqTag) begin + // can process, send to Mem rs and LSQ + memExeUsed = True; // mark resource used + lsq_tag = lsqTag; // record LSQ tag + if (dInst.iType != Fence) begin // fence does not go to RS + reservationStationMem.enq(ToReservationStation { + data: MemRSData { + mem_func: mem_inst.mem_func, + imm: validValue(dInst.imm), + ldstq_tag: lsqTag + }, + regs: phy_regs, + tag: inst_tag, + spec_bits: spec_bits, + spec_tag: spec_tag, + regs_ready: regs_ready_aggr // mem currently recv bypass + }); + end + doAssert(ppc == pc + 4, "Mem next PC is not PC+4"); + doAssert(!isValid(dInst.csr), "Mem never explicitly read/write CSR"); + doAssert((dInst.iType != Fence) == isValid(dInst.imm), + "Mem (non-Fence) needs imm for virtual addr"); + doAssert(!isValid(spec_tag), "should not have spec tag"); + // put in ldstq + if(isLdQ) begin + lsq.enqLd(inst_tag, mem_inst, phy_regs.dst, spec_bits); + end + else begin + lsq.enqSt(inst_tag, mem_inst, phy_regs.dst, spec_bits); + end + end + else begin + // cannot process this inst, stop + stop = True; + end + end + else begin + stop = True; + doAssert(False, "non memory instruction has to_mem == True"); + end + end + + // apply remaining actions if inst can be processed + if(!stop) begin + if(verbose) $display("[doRenaming - %d] ", i, fshow(x)); + + // deq fetch & update epochs match + fetchStage.pipelines[i].deq; + epochManager.updatePrevEpoch[i].update(main_epoch); + + // Claim a speculation tag + if (new_speculation) begin + specTagClaimed = True; // mark resource used + specTagManager.claimSpecTag; + end + + // Do renaming + regRenamingTable.rename[i].claimRename(arch_regs, renaming_spec_bits); + + // Scoreboard Operations + sbCons.setBusy[i].set(phy_regs.dst); + sbAggr.setBusy[i].set(phy_regs.dst); + + // display information + if (verbose) begin + printRename(i, regs_ready_cons, regs_ready_aggr, arch_regs, phy_regs); + end + + // Enqueue into reorder buffer + Bool will_dirty_fpu_state = False; + if (arch_regs.dst matches tagged Valid( tagged Fpu .r )) begin + will_dirty_fpu_state = True; + end + RobInstState rob_inst_state = (to_exec || to_mem || to_FpuMulDiv) ? NotDone : Executed; + + let y = ToReorderBuffer{pc: pc, + iType: dInst.iType, + csr: dInst.csr, + claimed_phy_reg: True, // XXX we always claim a free reg in rename + trap: Invalid, // no trap + // default values of FullResult + ppc_vaddr_csrData: PPC (ppc), // default use PPC + fflags: 0, + //////// + will_dirty_fpu_state: will_dirty_fpu_state, + rob_inst_state: rob_inst_state, + lsqTag: lsq_tag, + ldKilled: Invalid, + memAccessAtCommit: False, // set by ROB in case of fence + lsqAtCommitNotified: False, + nonMMIOStDone: False, + epochIncremented: False, + spec_bits: spec_bits + }; + rob.enqPort[i].enq(y); + + // record activity + doCorrectPath = True; + renameCnt = renameCnt + 1; + + // update spec bits if spec tag is claimed + if(spec_tag matches tagged Valid .t) begin + spec_bits = spec_bits | (1 << t); + end + end + end + end + end + + // only fire this rule if we make some progress + // otherwise this rule may block other rules forever + when(doCorrectPath, noAction); + +`ifdef PERF_COUNT + if(inIfc.doStats) begin + if(renameCnt > 1) begin + supRenameCnt.incr(1); + end + end +`endif + +`ifdef CHECK_DEADLOCK + if(doCorrectPath) begin + renameCorrectPath.send; + end +`endif + endrule + + +`ifdef CHECK_DEADLOCK + interface renameInstStuck = toGet(renameInstStuckQ); + interface renameCorrectPathStuck = toGet(renameCorrectPathStuckQ); +`else + interface renameInstStuck = nullGet; + interface renameCorrectPathStuck = nullGet; +`endif + + method Data getPerf(ExeStagePerfType t); + return (case(t) +`ifdef PERF_COUNT + SupRenameCnt: supRenameCnt; +`ifdef SECURITY + SpecNoneCycles: specNoneCycles; + SpecNonMemCycles: specNoneCycles; +`endif +`endif + default: 0; + endcase); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/ReorderBufferSynth.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReorderBufferSynth.bsv new file mode 100644 index 0000000..540b003 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReorderBufferSynth.bsv @@ -0,0 +1,44 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import ReorderBuffer::*; +import SynthParam::*; + +typedef ReorderBufferRowEhr#(AluExeNum, FpuMulDivExeNum) RobRowSynth; +(* synthesize *) +module mkRobRowSynth(RobRowSynth); + let m <- mkReorderBufferRowEhr; + return m; +endmodule + +// use superscalar ROB + +typedef SupReorderBuffer#(AluExeNum, FpuMulDivExeNum) ReorderBufferSynth; + +(* synthesize *) +module mkReorderBufferSynth(ReorderBufferSynth); + let m <- mkSupReorderBuffer(`ROB_LAZY_ENQ, mkRobRowSynth); + return m; +endmodule + diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationAlu.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationAlu.bsv new file mode 100644 index 0000000..ffe2e32 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationAlu.bsv @@ -0,0 +1,43 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Types::*; +import ProcTypes::*; +import ReservationStationEhr::*; +import SynthParam::*; +import BrPred::*; +import DirPredictor::*; + +typedef struct { + DecodedInst dInst; + DirPredTrainInfo dpTrain; +} AluRSData deriving(Bits, Eq, FShow); + +// ALU pipeline is aggressive, i.e. it recv bypass and early RS wakeup +typedef ReservationStation#(`RS_ALU_SIZE, WrAggrPortNum, AluRSData) ReservationStationAlu; +(* synthesize *) +module mkReservationStationAlu(ReservationStationAlu); + ReservationStationAlu m <- mkReservationStation(`LAZY_RS_RF, `RS_LAZY_ENQ, valueof(AluExeNum) > 1); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationFpuMulDiv.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationFpuMulDiv.bsv new file mode 100644 index 0000000..728d2fc --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationFpuMulDiv.bsv @@ -0,0 +1,40 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Types::*; +import ProcTypes::*; +import ReservationStationEhr::*; +import SynthParam::*; + +typedef struct { + ExecFunc execFunc; +} FpuMulDivRSData deriving(Bits, Eq, FShow); + +// FPU MUL DIV pipeline is aggressive, i.e. it recv bypass and early RS wakeup +typedef ReservationStation#(`RS_FPUMULDIV_SIZE, WrAggrPortNum, FpuMulDivRSData) ReservationStationFpuMulDiv; +(* synthesize *) +module mkReservationStationFpuMulDiv(ReservationStationFpuMulDiv); + let m <- mkReservationStation(`LAZY_RS_RF, `RS_LAZY_ENQ, valueof(FpuMulDivExeNum) > 1); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationMem.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationMem.bsv new file mode 100644 index 0000000..8bbf195 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/ReservationStationMem.bsv @@ -0,0 +1,42 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Types::*; +import ProcTypes::*; +import ReservationStationEhr::*; +import SynthParam::*; + +typedef struct { + MemFunc mem_func; + ImmData imm; + LdStQTag ldstq_tag; +} MemRSData deriving(Bits, Eq, FShow); + +// MEM pipeline is aggressive, i.e. it recv bypass and early RS wakeup +typedef ReservationStation#(`RS_MEM_SIZE, WrAggrPortNum, MemRSData) ReservationStationMem; +(* synthesize *) +module mkReservationStationMem(ReservationStationMem); + let m <- mkReservationStation(`LAZY_RS_RF, `RS_LAZY_ENQ, False); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/ScoreboardSynth.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/ScoreboardSynth.bsv new file mode 100644 index 0000000..10d3602 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/ScoreboardSynth.bsv @@ -0,0 +1,42 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Scoreboard::*; +import SynthParam::*; + +// conservative sb +typedef RenamingScoreboard#(WrConsPortNum, SbLazyLookupPortNum) ScoreboardCons; +(* synthesize *) +module mkScoreboardCons(ScoreboardCons); + let m <- mkRenamingScoreboard; + return m; +endmodule + +// aggressive sb +typedef RenamingScoreboard#(WrAggrPortNum, 0) ScoreboardAggr; +(* synthesize *) +module mkScoreboardAggr(ScoreboardAggr); + let m <- mkRenamingScoreboard; + return m; +endmodule + diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/SynthParam.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/SynthParam.bsv new file mode 100644 index 0000000..aaeb447 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/SynthParam.bsv @@ -0,0 +1,77 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import DefaultValue::*; +import Types::*; +import ProcTypes::*; +import HasSpecBits::*; +import ReservationStationEhr::*; + +// ALU exe num = superscalar size +// FPU exe num = superscalar size / 2 +typedef SupSize AluExeNum; +typedef TDiv#(SupSize, 2) FpuMulDivExeNum; + +// Phy RFile +// write: Alu < FpuMulDiv < Mem +// read: Alu, FpuMulDiv, Mem +typedef TAdd#(1, TAdd#(FpuMulDivExeNum, AluExeNum)) RFileWrPortNum; +typedef TAdd#(1, TAdd#(FpuMulDivExeNum, AluExeNum)) RFileRdPortNum; + +// sb lazy lookup num: same as RFile read, becaues all pipelines recv bypass +typedef RFileRdPortNum SbLazyLookupPortNum; + +// ports for writing conservative elements +// i.e. write rf & set conservative sb & wake up rs in conservative pipeline (i.e. not recv bypass) +// ordering: Alu < FpuMulDiv < Mem +typedef RFileWrPortNum WrConsPortNum; +function Integer aluWrConsPort(Integer i) = i; +function Integer fpuMulDivWrConsPort(Integer i) = valueof(AluExeNum) + i; +Integer memWrConsPort = valueof(FpuMulDivExeNum) + valueof(AluExeNum); + +// ports for writing aggressive elements +// i.e. set aggressive sb & wake up rs in aggressive pipeline (i.e. recv bypass) +// Mem pipeline has two places: mem resp and forwarding. Since the rule +// containing forwarding calls lsq.issue, and the rule containing mem resp +// calls lsq.wakeupLd, we order forward before mem. +// Ordering: Alu < FpuMulDiv < Forward < Mem +typedef TAdd#(2, TAdd#(FpuMulDivExeNum, AluExeNum)) WrAggrPortNum; +function Integer aluWrAggrPort(Integer i) = i; +function Integer fpuMulDivWrAggrPort(Integer i) = valueof(AluExeNum) + i; +Integer forwardWrAggrPort = valueof(FpuMulDivExeNum) + valueof(AluExeNum); +Integer memWrAggrPort = 1 + valueof(FpuMulDivExeNum) + valueof(AluExeNum); + +// ports for read rf & lazy lookup in sb, ordering doesn't matter +function Integer aluRdPort(Integer i) = i; +function Integer fpuMulDivRdPort(Integer i) = valueof(AluExeNum) + i; +Integer memRdPort = valueof(FpuMulDivExeNum) + valueof(AluExeNum); + +// ports for correct spec, ordering doesn't matter +typedef TAdd#(2, AluExeNum) CorrectSpecPortNum; +function Integer finishAluCorrectSpecPort(Integer i) = i; +Integer deqLSQCorrectSpecPort = valueof(AluExeNum); +Integer finishMemCorrectSpecPort = 1 + valueof(AluExeNum); + +// ports for manual conflict with wrong spec, ordering doesn't matter +typedef FpuMulDivExeNum ConflictWrongSpecPortNum; +function Integer finishFpuMulDivConflictWrongSpecPort(Integer i) = i; diff --git a/src_Core/RISCY_OOO/procs/lib/Amo.bsv b/src_Core/RISCY_OOO/procs/lib/Amo.bsv new file mode 100644 index 0000000..3b36ad9 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Amo.bsv @@ -0,0 +1,84 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; + +(* noinline *) +function Data amoExec(AmoInst amo_inst, Data current_data, Data in_data, Bool upper_32_bits); + // upper_32_bits is true if the operation is a 32-bit operation and the + // address is the upper 32-bits of a 64-bit region. + Data new_data = 0; + Data old_data = current_data; + + if (!amo_inst.doubleWord) begin + if (!upper_32_bits) begin + current_data = (amo_inst.func == Min || amo_inst.func == Max) ? signExtend(current_data[31:0]) : zeroExtend(current_data[31:0]); + in_data = (amo_inst.func == Min || amo_inst.func == Max) ? signExtend(in_data[31:0]) : zeroExtend(in_data[31:0]); + end else begin + // use upper 32-bits instead + current_data = (amo_inst.func == Min || amo_inst.func == Max) ? signExtend(current_data[63:32]) : zeroExtend(current_data[63:32]); + in_data = (amo_inst.func == Min || amo_inst.func == Max) ? signExtend(in_data[31:0]) : zeroExtend(in_data[31:0]); + end + end + + case (amo_inst.func) + Swap: new_data = in_data; + Add: new_data = current_data + in_data; + Xor: new_data = current_data ^ in_data; + And: new_data = current_data & in_data; + Or: new_data = current_data | in_data; + Min: new_data = sMin(current_data, in_data); + Max: new_data = sMax(current_data, in_data); + Minu: new_data = uMin(current_data, in_data); + Maxu: new_data = uMax(current_data, in_data); + endcase + + if (!amo_inst.doubleWord) begin + if (!upper_32_bits) begin + return {old_data[63:32], new_data[31:0]}; + end else begin + // change upper 32-bits instead + return {new_data[31:0], old_data[31:0]}; + end + end else begin + return new_data; + end +endfunction + +function Bit#(t) sMax( Bit#(t) a, Bit#(t) b ); + Int#(t) x = max(unpack(a), unpack(b)); + return pack(x); +endfunction +function Bit#(t) sMin( Bit#(t) a, Bit#(t) b ); + Int#(t) x = min(unpack(a), unpack(b)); + return pack(x); +endfunction +function Bit#(t) uMax( Bit#(t) a, Bit#(t) b ); + UInt#(t) x = max(unpack(a), unpack(b)); + return pack(x); +endfunction +function Bit#(t) uMin( Bit#(t) a, Bit#(t) b ); + UInt#(t) x = min(unpack(a), unpack(b)); + return pack(x); +endfunction diff --git a/src_Core/RISCY_OOO/procs/lib/Bht.bsv b/src_Core/RISCY_OOO/procs/lib/Bht.bsv new file mode 100644 index 0000000..4bfe9c7 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Bht.bsv @@ -0,0 +1,81 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import RegFile::*; +import Vector::*; +import BrPred::*; + +export BhtTrainInfo; +export mkBht; + +typedef Bit#(0) BhtTrainInfo; // no training info needs to be remembered + +// Local BHT Typedefs +typedef 128 BhtEntries; +typedef Bit#(TLog#(BhtEntries)) BhtIndex; + +(* synthesize *) +module mkBht(DirPredictor#(BhtTrainInfo)); + // Read and Write ordering doesn't matter since this is a predictor + // mkRegFileWCF is the RegFile version of mkConfigReg + RegFile#(BhtIndex, Bit#(2)) hist <- mkRegFileWCF(0,fromInteger(valueOf(BhtEntries)-1)); + + function BhtIndex getIndex(Addr pc); + return truncate(pc >> 2); + endfunction + + Vector#(SupSize, DirPred#(BhtTrainInfo)) predIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + predIfc[i] = (interface DirPred; + method ActionValue#(DirPredResult#(BhtTrainInfo)) pred(Addr pc); + let index = getIndex(pc); + Bit#(2) cnt = hist.sub(index); + Bool taken = cnt[1] == 1; + return DirPredResult { + taken: taken, + train: 0 + }; + endmethod + endinterface); + end + + interface pred = predIfc; + + method Action update(Addr pc, Bool taken, BhtTrainInfo train, Bool mispred); + let index = getIndex(pc); + let current_hist = hist.sub(index); + Bit#(2) next_hist; + if(taken) begin + next_hist = (current_hist == 2'b11) ? 2'b11 : current_hist + 1; + end else begin + next_hist = (current_hist == 2'b00) ? 2'b00 : current_hist - 1; + end + hist.upd(index, next_hist); + endmethod + + method flush = noAction; + method flush_done = True; +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/BrPred.bsv b/src_Core/RISCY_OOO/procs/lib/BrPred.bsv new file mode 100644 index 0000000..0880501 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/BrPred.bsv @@ -0,0 +1,68 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import Vector::*; + +(* noinline *) +function Maybe#(Addr) decodeBrPred( Addr pc, DecodedInst dInst, Bool histTaken ); + Addr pcPlus4 = pc + 4; + Data imm_val = fromMaybe(?, getDInstImm(dInst)); + Maybe#(Addr) nextPc = tagged Invalid; + if( dInst.iType == J ) begin + Addr jTarget = pc + imm_val; + nextPc = tagged Valid jTarget; + end else if( dInst.iType == Br ) begin + if( histTaken ) begin + nextPc = tagged Valid (pc + imm_val); + end else begin + nextPc = tagged Valid pcPlus4; + end + end else if( dInst.iType == Jr ) begin + // target is unknown until RegFetch + nextPc = tagged Invalid; + end else begin + nextPc = tagged Valid pcPlus4; + end + return nextPc; +endfunction + +// general types for direction predictor + +typedef struct { + Bool taken; + trainInfoT train; // info that a branch must keep for future training +} DirPredResult#(type trainInfoT) deriving(Bits, Eq, FShow); + +interface DirPred#(type trainInfoT); + method ActionValue#(DirPredResult#(trainInfoT)) pred(Addr pc); +endinterface + +interface DirPredictor#(type trainInfoT); + interface Vector#(SupSize, DirPred#(trainInfoT)) pred; + method Action update(Addr pc, Bool taken, trainInfoT train, Bool mispred); + method Action flush; + method Bool flush_done; +endinterface + diff --git a/src_Core/RISCY_OOO/procs/lib/Btb.bsv b/src_Core/RISCY_OOO/procs/lib/Btb.bsv new file mode 100644 index 0000000..bd035a7 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Btb.bsv @@ -0,0 +1,121 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import ConfigReg::*; +import RegFile::*; +import Vector::*; + +export NextAddrPred(..); +export mkBtb; + +interface NextAddrPred; + method Addr predPc(Addr pc); + method Action update(Addr pc, Addr nextPc, Bool taken); + // security + method Action flush; + method Bool flush_done; +endinterface + +// Local BTB Typedefs +typedef 256 BtbEntries; // 4KB BTB +typedef Bit#(TLog#(BtbEntries)) BtbIndex; +typedef Bit#(TSub#(TSub#(AddrSz, TLog#(BtbEntries)), 2)) BtbTag; + +typedef struct { + Addr pc; + Addr nextPc; + Bool taken; +} BtbUpdate deriving(Bits, Eq, FShow); + +// No synthesize boundary because we need to call predPC several times +module mkBtb(NextAddrPred); + // Read and Write ordering doesn't matter since this is a predictor + // mkRegFileWCF is the RegFile version of mkConfigReg + RegFile#(BtbIndex, Addr) next_addrs <- mkRegFileWCF(0,fromInteger(valueOf(BtbEntries)-1)); + RegFile#(BtbIndex, BtbTag) tags <- mkRegFileWCF(0,fromInteger(valueOf(BtbEntries)-1)); + Vector#(BtbEntries, Reg#(Bool)) valid <- replicateM(mkConfigReg(False)); + + RWire#(BtbUpdate) updateEn <- mkRWire; + +`ifdef SECURITY + Reg#(Bool) flushDone <- mkReg(True); +`else + Bool flushDone = True; +`endif + + function BtbIndex getIndex(Addr pc) = truncate(pc >> 2); + function BtbTag getTag(Addr pc) = truncateLSB(pc); + + // no flush, accept update + (* fire_when_enabled, no_implicit_conditions *) + rule canonUpdate(flushDone &&& updateEn.wget matches tagged Valid .upd); + let pc = upd.pc; + let nextPc = upd.nextPc; + let taken = upd.taken; + + let index = getIndex(pc); + let tag = getTag(pc); + if(taken) begin + valid[index] <= True; + tags.upd(index, tag); + next_addrs.upd(index, nextPc); + end else if( tags.sub(index) == tag ) begin + // current instruction has target in btb, so clear it + valid[index] <= False; + end + endrule + +`ifdef SECURITY + // flush, clear everything (and drop update) + rule doFlush(!flushDone); + writeVReg(valid, replicate(False)); + flushDone <= True; + endrule +`endif + + method Addr predPc(Addr pc); + BtbIndex index = getIndex(pc); + BtbTag tag = getTag(pc); + if(valid[index] && tag == tags.sub(index)) + return next_addrs.sub(index); + else + return (pc + 4); + endmethod + + method Action update(Addr pc, Addr nextPc, Bool taken); + updateEn.wset(BtbUpdate {pc: pc, nextPc: nextPc, taken: taken}); + endmethod + +`ifdef SECURITY + method Action flush if(flushDone); + flushDone <= False; + endmethod + method flush_done = flushDone._read; +`else + method flush = noAction; + method flush_done = True; +`endif +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/Bypass.bsv b/src_Core/RISCY_OOO/procs/lib/Bypass.bsv new file mode 100644 index 0000000..b6492c8 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Bypass.bsv @@ -0,0 +1,75 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import Vector::*; + +interface SendBypass; + method Action send(PhyRIndx dst, Data data); +endinterface + +interface RecvBypass; + method Action recv(PhyRIndx dst, Data data); +endinterface + +function ActionValue#(Data) readRFBypass( + PhyRIndx src, + Bool rfReady, Data rfData, + Vector#(n, RWire#(Tuple2#(PhyRIndx, Data))) bypassWire +); +actionvalue + if(rfReady) begin + return rfData; + end + else begin + // search through all bypass + function Maybe#(Data) getBypassData(RWire#(Tuple2#(PhyRIndx, Data)) w); + if(w.wget matches tagged Valid {.dst, .d} &&& dst == src) begin + return Valid (d); + end + else begin + return Invalid; + end + endfunction + Vector#(n, Maybe#(Data)) bypassData = map(getBypassData, bypassWire); + if(find(isValid, bypassData) matches tagged Valid .b) begin + doAssert(isValid(b), "bypass found must be valid"); + return validValue(b); + end + else begin + when(False, noAction); + return ?; + end + end +endactionvalue +endfunction + +function RecvBypass getRecvBypassIfc(RWire#(Tuple2#(PhyRIndx, Data)) w); + return (interface RecvBypass; + method Action recv(PhyRIndx dst, Data data); + w.wset(tuple2(dst, data)); + endmethod + endinterface); +endfunction + diff --git a/src_Core/RISCY_OOO/procs/lib/CacheUtils.bsv b/src_Core/RISCY_OOO/procs/lib/CacheUtils.bsv new file mode 100644 index 0000000..7570601 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/CacheUtils.bsv @@ -0,0 +1,153 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import BRAM::*; +import Types::*; +import MemoryTypes::*; +import GetPut::*; +import ClientServer::*; +import Connectable::*; +import Vector::*; +import Fifo::*; +import Ehr::*; +import FIFO::*; +import FIFOF::*; +import Performance::*; +import FShow::*; +import MsgFifo::*; + +// 64B cache line +typedef 8 CLineNumData; +typedef TLog#(CLineNumData) LogCLineNumData; +typedef Bit#(LogCLineNumData) CLineDataSel; + +function CLineDataSel getCLineDataSel(Addr a); + return truncate(a >> valueOf(TLog#(NumBytes))); +endfunction + +typedef TMul#(CLineNumData, DataSz) CacheLineSz; +typedef Bit#(CacheLineSz) CacheLine; + +typedef TMul#(CLineNumData, NumBytes) CLineNumBytes; +typedef TLog#(CLineNumBytes) LogCLineNumBytes; +typedef Vector#(CLineNumBytes, Bool) CLineByteEn; + +function Bool isCLineAlignAddr(Addr a); + Bit#(LogCLineNumBytes) offset = truncate(a); + return offset == 0; +endfunction + +// cache line addr (drop the offset within cache line) +typedef TSub#(AddrSz, LogCLineNumBytes) CLineAddrSz; +typedef Bit#(CLineAddrSz) CLineAddr; + +// cache line v.s. instruction +typedef TDiv#(CacheLineSz, InstSz) CLineNumInst; +typedef Bit#(TLog#(CLineNumInst)) CLineInstSel; + +function CLineInstSel getCLineInstSel(Addr a); + return truncate(a >> valueof(TLog#(TDiv#(InstSz, 8)))); +endfunction + +// FIFO enq/deq ifc +interface FifoEnq#(type t); + method Bool notFull; + method Action enq(t x); +endinterface + +function FifoEnq#(t) toFifoEnq(Fifo#(n, t) f); + return (interface FifoEnq; + method notFull = f.notFull; + method enq = f.enq; + endinterface); +endfunction + +function FifoEnq#(t) nullFifoEnq; + return (interface FifoEnq; + method Bool notFull = True; + method Action enq(t x); + noAction; + endmethod + endinterface); +endfunction + +instance ToPut#(FifoEnq#(t), t); + function Put#(t) toPut(FifoEnq#(t) ifc); + return (interface Put; + method Action put(t x); + ifc.enq(x); + endmethod + endinterface); + endfunction +endinstance + +interface FifoDeq#(type t); + method Bool notEmpty; + method Action deq; + method t first; +endinterface + +function FifoDeq#(t) toFifoDeq(Fifo#(n, t) f); + return (interface FifoDeq; + method notEmpty = f.notEmpty; + method deq = f.deq; + method first = f.first; + endinterface); +endfunction + +function FifoDeq#(t) nullFifoDeq; + return (interface FifoDeq; + method Bool notEmpty = False; + method Action deq if(False); + noAction; + endmethod + method t first if(False); + return ?; + endmethod + endinterface); +endfunction + +instance ToGet#(FifoDeq#(t), t); + function Get#(t) toGet(FifoDeq#(t) ifc); + return (interface Get; + method ActionValue#(t) get; + ifc.deq; + return ifc.first; + endmethod + endinterface); + endfunction +endinstance + +instance Connectable#(FifoEnq#(t), FifoDeq#(t)); + module mkConnection#(FifoEnq#(t) enq, FifoDeq#(t) deq)(Empty); + mkConnection(toGet(deq), toPut(enq)); + endmodule +endinstance + +instance Connectable#(FifoDeq#(t), FifoEnq#(t)); + module mkConnection#(FifoDeq#(t) deq, FifoEnq#(t) enq)(Empty); + mkConnection(toGet(deq), toPut(enq)); + endmodule +endinstance + diff --git a/src_Core/RISCY_OOO/procs/lib/ConcatReg.bsv b/src_Core/RISCY_OOO/procs/lib/ConcatReg.bsv new file mode 100644 index 0000000..80645ae --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/ConcatReg.bsv @@ -0,0 +1,506 @@ +// This file was created by gen_ConcatReg.py. If you want to modify this file, +// please modify gen_ConcatReg.py instead. If you need a wider concatReg +// function, change the value of n in gen_ConcatReg.py and run it again. + +// The Bluespec provided BuildVector.bsv provides another example of +// constructing a function that takes a variable number of arguments + +// Typeclass for creating _concatReg with a variable number of arguments. +typeclass ConcatReg#(type r, numeric type n1, numeric type n2) + dependencies ((r,n1) determines n2, (r,n2) determines n1); + // dependencies (r determines (n1,n2)); + function r _concatReg(Reg#(Bit#(n1)) r1, Reg#(Bit#(n2)) r2); +endtypeclass +// Base case +instance ConcatReg#(Reg#(Bit#(n3)), n1, n2) provisos (Add#(n1, n2, n3)); + function Reg#(Bit#(TAdd#(n1,n2))) _concatReg(Reg#(Bit#(n1)) r1, Reg#(Bit#(n2)) r2); + return (interface Reg; + method Bit#(TAdd#(n1,n2)) _read = {r1._read, r2._read}; + method Action _write(Bit#(TAdd#(n1,n2)) x); + r1._write(truncateLSB(x)); + r2._write(truncate(x)); + endmethod + endinterface); + endfunction +endinstance +// Recursion +instance ConcatReg#(function r f(Reg#(Bit#(n3)) r3), n1, n2) provisos (ConcatReg#(r, TAdd#(n1, n2), n3)); + function function r f(Reg#(Bit#(n3)) r3) _concatReg(Reg#(Bit#(n1)) r1, Reg#(Bit#(n2)) r2); + return _concatReg(interface Reg; + method Bit#(TAdd#(n1,n2)) _read = {r1._read, r2._read}; + method Action _write(Bit#(TAdd#(n1,n2)) x); + r1._write(truncateLSB(x)); + r2._write(truncate(x)); + endmethod + endinterface); + endfunction +endinstance + +// Wrapper function for users. This can take a variable number of arguments. +// You will need to use asReg() for the third argument and beyond. +function r concatReg(Reg#(Bit#(n1)) r1, Reg#(Bit#(n2)) r2) provisos(ConcatReg#(r, n1, n2)); + return _concatReg(asReg(r1),asReg(r2)); +endfunction + +// Automatically generated macros with a set number of registers. +// These don't require asReg when used. +function Reg#(Bit#(n)) concatReg2( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2 + ) provisos ( + Add#(n1,n2,n) + ); + return concatReg(asReg(r1),asReg(r2)); +endfunction + +function Reg#(Bit#(n)) concatReg3( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3 + ) provisos ( + Add#(TAdd#(n1,n2),n3,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3)); +endfunction + +function Reg#(Bit#(n)) concatReg4( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4 + ) provisos ( + Add#(TAdd#(TAdd#(n1,n2),n3),n4,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4)); +endfunction + +function Reg#(Bit#(n)) concatReg5( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5)); +endfunction + +function Reg#(Bit#(n)) concatReg6( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6)); +endfunction + +function Reg#(Bit#(n)) concatReg7( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7)); +endfunction + +function Reg#(Bit#(n)) concatReg8( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8)); +endfunction + +function Reg#(Bit#(n)) concatReg9( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9)); +endfunction + +function Reg#(Bit#(n)) concatReg10( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10)); +endfunction + +function Reg#(Bit#(n)) concatReg11( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11)); +endfunction + +function Reg#(Bit#(n)) concatReg12( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12)); +endfunction + +function Reg#(Bit#(n)) concatReg13( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13)); +endfunction + +function Reg#(Bit#(n)) concatReg14( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14)); +endfunction + +function Reg#(Bit#(n)) concatReg15( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15)); +endfunction + +function Reg#(Bit#(n)) concatReg16( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16)); +endfunction + +function Reg#(Bit#(n)) concatReg17( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17)); +endfunction + +function Reg#(Bit#(n)) concatReg18( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17, + Reg#(Bit#(n18)) r18 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17),n18,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17),asReg(r18)); +endfunction + +function Reg#(Bit#(n)) concatReg19( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17, + Reg#(Bit#(n18)) r18, + Reg#(Bit#(n19)) r19 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17),n18),n19,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17),asReg(r18),asReg(r19)); +endfunction + +function Reg#(Bit#(n)) concatReg20( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17, + Reg#(Bit#(n18)) r18, + Reg#(Bit#(n19)) r19, + Reg#(Bit#(n20)) r20 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17),n18),n19),n20,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17),asReg(r18),asReg(r19),asReg(r20)); +endfunction + +function Reg#(Bit#(n)) concatReg21( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17, + Reg#(Bit#(n18)) r18, + Reg#(Bit#(n19)) r19, + Reg#(Bit#(n20)) r20, + Reg#(Bit#(n21)) r21 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17),n18),n19),n20),n21,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17),asReg(r18),asReg(r19),asReg(r20),asReg(r21)); +endfunction + +function Reg#(Bit#(n)) concatReg22( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17, + Reg#(Bit#(n18)) r18, + Reg#(Bit#(n19)) r19, + Reg#(Bit#(n20)) r20, + Reg#(Bit#(n21)) r21, + Reg#(Bit#(n22)) r22 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17),n18),n19),n20),n21),n22,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17),asReg(r18),asReg(r19),asReg(r20),asReg(r21),asReg(r22)); +endfunction + +function Reg#(Bit#(n)) concatReg23( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17, + Reg#(Bit#(n18)) r18, + Reg#(Bit#(n19)) r19, + Reg#(Bit#(n20)) r20, + Reg#(Bit#(n21)) r21, + Reg#(Bit#(n22)) r22, + Reg#(Bit#(n23)) r23 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17),n18),n19),n20),n21),n22),n23,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17),asReg(r18),asReg(r19),asReg(r20),asReg(r21),asReg(r22),asReg(r23)); +endfunction + +function Reg#(Bit#(n)) concatReg24( + Reg#(Bit#(n1)) r1, + Reg#(Bit#(n2)) r2, + Reg#(Bit#(n3)) r3, + Reg#(Bit#(n4)) r4, + Reg#(Bit#(n5)) r5, + Reg#(Bit#(n6)) r6, + Reg#(Bit#(n7)) r7, + Reg#(Bit#(n8)) r8, + Reg#(Bit#(n9)) r9, + Reg#(Bit#(n10)) r10, + Reg#(Bit#(n11)) r11, + Reg#(Bit#(n12)) r12, + Reg#(Bit#(n13)) r13, + Reg#(Bit#(n14)) r14, + Reg#(Bit#(n15)) r15, + Reg#(Bit#(n16)) r16, + Reg#(Bit#(n17)) r17, + Reg#(Bit#(n18)) r18, + Reg#(Bit#(n19)) r19, + Reg#(Bit#(n20)) r20, + Reg#(Bit#(n21)) r21, + Reg#(Bit#(n22)) r22, + Reg#(Bit#(n23)) r23, + Reg#(Bit#(n24)) r24 + ) provisos ( + Add#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(TAdd#(n1,n2),n3),n4),n5),n6),n7),n8),n9),n10),n11),n12),n13),n14),n15),n16),n17),n18),n19),n20),n21),n22),n23),n24,n) + ); + return concatReg(asReg(r1),asReg(r2),asReg(r3),asReg(r4),asReg(r5),asReg(r6),asReg(r7),asReg(r8),asReg(r9),asReg(r10),asReg(r11),asReg(r12),asReg(r13),asReg(r14),asReg(r15),asReg(r16),asReg(r17),asReg(r18),asReg(r19),asReg(r20),asReg(r21),asReg(r22),asReg(r23),asReg(r24)); +endfunction + diff --git a/src_Core/RISCY_OOO/procs/lib/DTlb.bsv b/src_Core/RISCY_OOO/procs/lib/DTlb.bsv new file mode 100644 index 0000000..89f3f52 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/DTlb.bsv @@ -0,0 +1,606 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import ClientServer::*; +import DefaultValue::*; +import GetPut::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; +import Performance::*; +import FullAssocTlb::*; +import ConfigReg::*; +import Fifo::*; +import Cntrs::*; +import SafeCounter::*; +import CacheUtils::*; +import LatencyTimer::*; +import HasSpecBits::*; +import Vector::*; +import Ehr::*; + +export DTlbReq(..); +export DTlbResp(..); +export DTlbRqToP(..); +export DTlbTransRsFromP(..); +export DTlbToParent(..); +export DTlb(..); +export mkDTlb; + +typedef `L1_TLB_SIZE DTlbSize; + +// req & resp with core +// D TLB also keeps the information of the requesting inst, so we don't need +// extra bookkeeping outside D TLB. +typedef struct { + instT inst; + SpecBits specBits; +} DTlbReq#(type instT) deriving(Bits, Eq, FShow); + +typedef struct { + TlbResp resp; + instT inst; + SpecBits specBits; +} DTlbResp#(type instT) deriving(Bits, Eq, FShow); + +// req & resp with L2 TLB +typedef struct { + Vpn vpn; + DTlbReqIdx id; +} DTlbRqToP deriving(Bits, Eq, FShow); + +typedef struct { + // may get page fault: i.e. hit invalid page or + // get non-leaf page at last-level page table + Maybe#(TlbEntry) entry; + DTlbReqIdx id; +} DTlbTransRsFromP deriving(Bits, Eq, FShow); + +interface DTlbToParent; + interface FifoDeq#(DTlbRqToP) rqToP; + interface FifoEnq#(DTlbTransRsFromP) ldTransRsFromP; + // after DTLB flush itself, it notifies L2, and wait L2 to flush + interface Client#(void, void) flush; +endinterface + +interface DTlb#(type instT); + // system consistency related + method Bool flush_done; + method Action flush; + method Action updateVMInfo(VMInfo vm); + method Bool noPendingReq; + + // req/resp with core + method Action procReq(DTlbReq#(instT) req); + method DTlbResp#(instT) procResp; + method Action deqProcResp; + + // req/resp with L2 TLB + interface DTlbToParent toParent; + + // speculation + interface SpeculationUpdate specUpdate; + + // performance + interface Perf#(L1TlbPerfType) perf; +endinterface + +typedef FullAssocTlb#(DTlbSize) DTlbArray; +module mkDTlbArray(DTlbArray); + let m <- mkFullAssocTlb(True); // randomness in replacement + return m; +endmodule + +// a pending tlb req may be in following states +typedef union tagged { + void None; + void WaitParent; + DTlbReqIdx WaitPeer; +} DTlbWait deriving(Bits, Eq, FShow); + +module mkDTlb#( + function TlbReq getTlbReq(instT inst) +)(DTlb::DTlb#(instT)) provisos(Bits#(instT, a__)); + Bool verbose = True; + + // TLB array + DTlbArray tlb <- mkDTlbArray; + + // processor init flushing by setting this flag + Reg#(Bool) needFlush <- mkReg(False); + // after flushing ITLB itself, we want parent TLB to flush + Reg#(Bool) waitFlushP <- mkReg(False); + + // current processor VM information + Reg#(VMInfo) vm_info <- mkReg(defaultValue); + + // pending reqs + // pendWait should be meaningful even when entry is invalid. pendWait = + // WaitParent True means this entry is waiting for parent TLB resp; + // pendWait = WaitPeer means this entry is waiting for a resp initiated by + // another req. Thus, pendWait must be None when entry is invalid. + Vector#(DTlbReqNum, Ehr#(2, Bool)) pendValid <- replicateM(mkEhr(False)); + Vector#(DTlbReqNum, Reg#(DTlbWait)) pendWait <- replicateM(mkReg(None)); + Vector#(DTlbReqNum, Reg#(Bool)) pendPoisoned <- replicateM(mkRegU); + Vector#(DTlbReqNum, Reg#(instT)) pendInst <- replicateM(mkRegU); + Vector#(DTlbReqNum, Reg#(TlbResp)) pendResp <- replicateM(mkRegU); + Vector#(DTlbReqNum, Ehr#(2, SpecBits)) pendSpecBits <- replicateM(mkEhr(?)); + + // ordering of methods/rules that access pend reqs + // procReq mutually exclusive with doPRs (no procReq when pRs ready) + // procResp < {doPRs, procReq} + // wrongSpec C {procReq, doPRs, procResp} + // correctSpec C wrongSpec + // correctSpec CF doPRs + // {procReq, procResp} < correctSpec (correctSpec is always at end) + + RWire#(void) wrongSpec_procResp_conflict <- mkRWire; + RWire#(void) wrongSpec_doPRs_conflict <- mkRWire; + RWire#(void) wrongSpec_procReq_conflict <- mkRWire; + + let pendValid_noMiss = getVEhrPort(pendValid, 0); + let pendValid_wrongSpec = getVEhrPort(pendValid, 0); + let pendValid_procResp = getVEhrPort(pendValid, 0); // write + let pendValid_doPRs = getVEhrPort(pendValid, 1); // assert + let pendValid_procReq = getVEhrPort(pendValid, 1); // write + + let pendSpecBits_wrongSpec = getVEhrPort(pendSpecBits, 0); + let pendSpecBits_procResp = getVEhrPort(pendSpecBits, 0); + let pendSpecBits_procReq = getVEhrPort(pendSpecBits, 0); // write + let pendSpecBits_correctSpec = getVEhrPort(pendSpecBits, 1); + + // free list of pend entries, to cut off path from procResp to procReq + Fifo#(DTlbReqNum, DTlbReqIdx) freeQ <- mkCFFifo; + Reg#(Bool) freeQInited <- mkReg(False); + Reg#(DTlbReqIdx) freeQInitIdx <- mkReg(0); + + // req & resp with parent TLB + Fifo#(DTlbReqNum, DTlbRqToP) rqToPQ <- mkCFFifo; // large enough so won't block on enq + Fifo#(2, DTlbTransRsFromP) ldTransRsFromPQ <- mkCFFifo; + // When a resp comes, we first process for the initiating req, then process + // other reqs that in WaitPeer. + Reg#(Maybe#(DTlbReqIdx)) respForOtherReq <- mkReg(Invalid); + // flush req/resp with parent TLB + Fifo#(1, void) flushRqToPQ <- mkCFFifo; + Fifo#(1, void) flushRsFromPQ <- mkCFFifo; + + // perf counters + Fifo#(1, L1TlbPerfType) perfReqQ <- mkCFFifo; +`ifdef PERF_COUNT + Fifo#(1, PerfResp#(L1TlbPerfType)) perfRespQ <- mkCFFifo; + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) accessCnt <- mkCount(0); + Count#(Data) missParentCnt <- mkCount(0); + Count#(Data) missParentLat <- mkCount(0); + Count#(Data) missPeerCnt <- mkCount(0); + Count#(Data) missPeerLat <- mkCount(0); + Count#(Data) hitUnderMissCnt <- mkCount(0); + Count#(Data) allMissCycles <- mkCount(0); + + LatencyTimer#(DTlbReqNum, 12) latTimer <- mkLatencyTimer; // max latency: 4K cycles + + rule doPerf; + let t <- toGet(perfReqQ).get; + Data d = (case(t) + L1TlbAccessCnt: (accessCnt); + L1TlbMissParentCnt: (missParentCnt); + L1TlbMissParentLat: (missParentLat); + L1TlbMissPeerCnt: (missPeerCnt); + L1TlbMissPeerLat: (missPeerLat); + L1TlbHitUnderMissCnt: (hitUnderMissCnt); + L1TlbAllMissCycles: (allMissCycles); + default: (0); + endcase); + perfRespQ.enq(PerfResp { + pType: t, + data: d + }); + endrule + + rule incrAllMissCycles(doStats); + function Bool isMiss(DTlbWait x) = x != None; + when(all(isMiss, readVReg(pendWait)), allMissCycles.incr(1)); + endrule +`endif + + // do flush: start when all misses resolve + Bool noMiss = all(\== (False) , readVReg(pendValid_noMiss)); + + rule doStartFlush(needFlush && !waitFlushP && noMiss); + tlb.flush; + // request parent TLB to flush + flushRqToPQ.enq(?); + waitFlushP <= True; + if(verbose) $display("[DTLB] flush begin"); + endrule + + rule doFinishFlush(needFlush && waitFlushP); + flushRsFromPQ.deq; + needFlush <= False; + waitFlushP <= False; + if(verbose) $display("[DTLB] flush done"); + endrule + + // get resp from parent TLB + // At high level, this rule is always exclusive with doStartFlush, though + // we don't bother to make compiler understand this... + rule doPRs(ldTransRsFromPQ.notEmpty); + let pRs = ldTransRsFromPQ.first; + // the current req being served is either the initiating req or other + // req pending on the same resp + let idx = fromMaybe(pRs.id, respForOtherReq); + TlbReq r = getTlbReq(pendInst[idx]); + + if(pendPoisoned[idx]) begin + // poisoned inst, do nothing + if(verbose) $display("[DTLB] refill poisoned: idx %d; ", idx, fshow(r)); + end + else if(pRs.entry matches tagged Valid .en) begin + // check permission + if(hasVMPermission(vm_info, + en.pteType, + en.ppn, + en.level, + r.write ? DataStore : DataLoad)) begin + // fill TLB, and record resp + tlb.addEntry(en); + let trans_addr = translate(r.addr, en.ppn, en.level); + pendResp[idx] <= tuple2(trans_addr, Invalid); + if(verbose) begin + $display("[DTLB] refill: idx %d; ", idx, fshow(r), + "; ", fshow(trans_addr)); + end + end + else begin + // page fault + Exception fault = r.write ? StorePageFault : LoadPageFault; + pendResp[idx] <= tuple2(?, Valid (fault)); + if(verbose) begin + $display("[DTLB] refill no permission: idx %d; ", idx, fshow(r)); + end + end + end + else begin + // page fault + Exception fault = r.write ? StorePageFault : LoadPageFault; + pendResp[idx] <= tuple2(?, Valid (fault)); + if(verbose) $display("[DTLB] refill page fault: idx %d; ", idx, fshow(r)); + end + + // get parent resp, miss resolved, reset wait bit + pendWait[idx] <= None; + + doAssert(pendValid_doPRs[idx], "entry must be valid"); + if(isValid(respForOtherReq)) begin + doAssert(pendWait[idx] == WaitPeer (pRs.id), "entry must be waiting for resp"); + end + else begin + doAssert(pendWait[idx] == WaitParent, "entry must be waiting for resp"); + end + + // find another req waiting for this resp + function Bool waitForResp(DTlbReqIdx i); + // we can ignore pendValid here, because not-None pendWait implies + // pendValid is true + return pendWait[i] == WaitPeer (pRs.id) && i != idx; + endfunction + Vector#(DTlbReqNum, DTlbReqIdx) idxVec = genWith(fromInteger); + if(find(waitForResp, idxVec) matches tagged Valid .i) begin + // still have req waiting for this resp, keep processing + respForOtherReq <= Valid (i); + doAssert(pendValid_doPRs[i], "waiting entry must be valid"); + end + else begin + // all req done, deq the pRs + respForOtherReq <= Invalid; + ldTransRsFromPQ.deq; + end + +`ifdef PERF_COUNT + // perf: miss + let lat <- latTimer.done(idx); + if(doStats) begin + if(isValid(respForOtherReq)) begin + missPeerLat.incr(zeroExtend(lat)); + missPeerCnt.incr(1); + end + else begin + missParentLat.incr(zeroExtend(lat)); + missParentCnt.incr(1); + end + end +`endif + + // conflict with wrong spec + wrongSpec_doPRs_conflict.wset(?); + endrule + + // init freeQ + rule doInitFreeQ(!freeQInited); + freeQ.enq(freeQInitIdx); + freeQInitIdx <= freeQInitIdx + 1; + if(freeQInitIdx == fromInteger(valueof(DTlbReqNum) - 1)) begin + freeQInited <= True; + end + endrule + + // idx of entries that are ready to resp to proc + function Maybe#(DTlbReqIdx) validProcRespIdx; + function Bool validResp(DTlbReqIdx i); + return pendValid_procResp[i] && pendWait[i] == None && !pendPoisoned[i]; + endfunction + Vector#(DTlbReqNum, DTlbReqIdx) idxVec = genWith(fromInteger); + return find(validResp, idxVec); + endfunction + + function Maybe#(DTlbReqIdx) poisonedProcRespIdx; + function Bool poisonedResp(DTlbReqIdx i); + return pendValid_procResp[i] && pendWait[i] == None && pendPoisoned[i]; + endfunction + Vector#(DTlbReqNum, DTlbReqIdx) idxVec = genWith(fromInteger); + return find(poisonedResp, idxVec); + endfunction + + // drop poisoned resp + rule doPoisonedProcResp(poisonedProcRespIdx matches tagged Valid .idx &&& freeQInited); + pendValid_procResp[idx] <= False; + freeQ.enq(idx); + // conflict with wrong spec + wrongSpec_procResp_conflict.wset(?); + endrule + + method Action flush if(!needFlush); + needFlush <= True; + waitFlushP <= False; + // this won't interrupt current processing, since + // (1) miss process will continue even if needFlush=True + // (2) flush truly starts when there is no pending req + endmethod + + method Bool flush_done = !needFlush; + + method Action updateVMInfo(VMInfo vm); + vm_info <= vm; + endmethod + + // Since this method is called at commit stage to determine no in-flight + // TLB req, even poisoned req should be considered as pending, because it + // may be in L2 TLB. + method Bool noPendingReq = noMiss; + + // We do not accept new req when flushing flag is set. We also do not + // accept new req when parent resp is ready. This avoids bypass in TLB. We + // also check rqToPQ not full. This simplifies the guard, i.e., it does not + // depend on whether we hit in TLB or not. + method Action procReq(DTlbReq#(instT) req) if( + !needFlush && !ldTransRsFromPQ.notEmpty && rqToPQ.notFull && freeQInited + ); + // allocate MSHR entry + freeQ.deq; + DTlbReqIdx idx = freeQ.first; + doAssert(!pendValid_procReq[idx], "free entry cannot be valid"); + doAssert(pendWait[idx] == None, "entry cannot wait for parent resp"); + + pendValid_procReq[idx] <= True; + pendPoisoned[idx] <= False; + pendInst[idx] <= req.inst; + pendSpecBits_procReq[idx] <= req.specBits; + // pendWait and pendResp are set later in this method + + // try to translate + TlbReq r = getTlbReq(req.inst); + +`ifdef SECURITY + // Security check + // Forbid any data load shared outside of the protection domain + // if shared load are not allowed + // No need to special case M mode with special vm_info value because we + // assume that we allow shared load all the time when in M mode. + // (Because we are always non speculative in M mode) + if (!vm_info.sanctum_authShared && outOfProtectionDomain(vm_info, r.addr))begin + pendWait[idx] <= None; + pendResp[idx] <= tuple2(?, Valid (LoadAccessFault)); + end +`else + // No security check + if (False) begin + noAction; + end +`endif + else if (vm_info.sv39) begin + let vpn = getVpn(r.addr); + let trans_result = tlb.translate(vpn, vm_info.asid); + if (trans_result.hit) begin + // TLB hit + let entry = trans_result.entry; + // check permission + if (hasVMPermission(vm_info, + entry.pteType, + entry.ppn, + entry.level, + r.write ? DataStore : DataLoad)) begin + // update TLB replacement info + tlb.updateRepByHit(trans_result.index); + // translate addr + Addr trans_addr = translate(r.addr, entry.ppn, entry.level); + pendWait[idx] <= None; + pendResp[idx] <= tuple2(trans_addr, Invalid); + if(verbose) begin + $display("[DTLB] req (hit): idx %d; ", idx, fshow(r), + "; ", fshow(trans_result)); + end +`ifdef PERF_COUNT + // perf: hit under miss + if(doStats && readVReg(pendWait) != replicate(None)) begin + hitUnderMissCnt.incr(1); + end +`endif + end + else begin + // page fault + Exception fault = r.write ? StorePageFault : LoadPageFault; + pendWait[idx] <= None; + pendResp[idx] <= tuple2(?, Valid (fault)); + if(verbose) $display("[DTLB] req no permission: idx %d; ", idx, fshow(r)); + end + end + else begin + // TLB miss, req to parent TLB only if there is no existing req + // for the same VPN already waiting for parent TLB resp + function Bool reqSamePage(DTlbReqIdx i); + // we can ignore pendValid here, because not-None pendWait implies + // pendValid is true + let r_i = getTlbReq(pendInst[i]); + return pendWait[i] == WaitParent && getVpn(r.addr) == getVpn(r_i.addr); + endfunction + Vector#(DTlbReqNum, DTlbReqIdx) idxVec = genWith(fromInteger); + if(find(reqSamePage, idxVec) matches tagged Valid .i) begin + // peer entry has already requested, so don't send duplicate req + pendWait[idx] <= WaitPeer (i); + doAssert(pendValid_procReq[i], "peer entry must be valid"); + if(verbose) begin + $display("[DTLB] req miss, pend on peer: idx %d, ", + idx, "; ", fshow(r), "; ", fshow(i)); + end + end + else begin + // this is the first req for this VPN + pendWait[idx] <= WaitParent; + rqToPQ.enq(DTlbRqToP { + vpn: vpn, + id: idx + }); + if(verbose) begin + $display("[DTLB] req miss, send to parent: idx %d, ", + idx, fshow(r)); + end + end +`ifdef PERF_COUNT + // perf: miss + latTimer.start(idx); +`endif + end + end + else begin + // bare mode + pendWait[idx] <= None; + pendResp[idx] <= tuple2(r.addr, Invalid); + if(verbose) $display("DTLB %m req (bare): ", fshow(r)); + end + +`ifdef PERF_COUNT + // perf: access + if(doStats) begin + accessCnt.incr(1); + end +`endif + // conflict with wrong spec + wrongSpec_procReq_conflict.wset(?); + endmethod + + method Action deqProcResp if( + validProcRespIdx matches tagged Valid .idx &&& freeQInited + ); + pendValid_procResp[idx] <= False; + freeQ.enq(idx); + // conflict with wrong spec + wrongSpec_procResp_conflict.wset(?); + endmethod + + method DTlbResp#(instT) procResp if( + validProcRespIdx matches tagged Valid .idx &&& freeQInited + ); + return DTlbResp { + inst: pendInst[idx], + resp: pendResp[idx], + specBits: pendSpecBits_procResp[idx] + }; + endmethod + + interface DTlbToParent toParent; + interface rqToP = toFifoDeq(rqToPQ); + interface ldTransRsFromP = toFifoEnq(ldTransRsFromPQ); + interface Client flush; + interface request = toGet(flushRqToPQ); + interface response = toPut(flushRsFromPQ); + endinterface + endinterface + + interface SpeculationUpdate specUpdate; + method Action incorrectSpeculation(Bool kill_all, SpecTag x); + // poison entries + for(Integer i = 0 ; i < valueOf(DTlbReqNum) ; i = i+1) begin + if(kill_all || pendSpecBits_wrongSpec[i][x] == 1'b1) begin + pendPoisoned[i] <= True; + end + end + // make conflicts with procReq, doPRs, procResp + wrongSpec_procReq_conflict.wset(?); + wrongSpec_doPRs_conflict.wset(?); + wrongSpec_procResp_conflict.wset(?); + endmethod + method Action correctSpeculation(SpecBits mask); + // clear spec bits for all entries + for(Integer i = 0 ; i < valueOf(DTlbReqNum) ; i = i+1) begin + let new_spec_bits = pendSpecBits_correctSpec[i] & mask; + pendSpecBits_correctSpec[i] <= new_spec_bits; + end + endmethod + endinterface + + interface Perf perf; + method Action setStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Action req(L1TlbPerfType r); + perfReqQ.enq(r); + endmethod + + method ActionValue#(PerfResp#(L1TlbPerfType)) resp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + return PerfResp { + pType: perfReqQ.first, + data: 0 + }; +`endif + endmethod + + method Bool respValid; +`ifdef PERF_COUNT + return perfRespQ.notEmpty; +`else + return perfReqQ.notEmpty; +`endif + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/Decode.bsv b/src_Core/RISCY_OOO/procs/lib/Decode.bsv new file mode 100644 index 0000000..f033f78 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Decode.bsv @@ -0,0 +1,743 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Types::*; +import ProcTypes::*; +import MemoryTypes::*; +import Vector::*; +import DefaultValue::*; + +Bit#(3) memWU = 3'b110; + +// Smaller decode functions +function Maybe#(MemInst) decodeMemInst(Instruction inst); + MemInst mem_inst = MemInst{ mem_func: ?, + amo_func: None, + unsignedLd: False, + byteEn: replicate(False), + aq: False, + rl: False }; + Bool illegalInst = False; + Opcode opcode = unpackOpcode(inst[6:0]); + let funct5 = inst[31:27]; + let funct3 = inst[14:12]; + + // mem_func + amo_func + MemFunc mem_func = Ld; + AmoFunc amo_func = None; + if (opcode == Load || opcode == LoadFp) begin + mem_func = Ld; + end else if (opcode == Store || opcode == StoreFp) begin + mem_func = St; + end else if (opcode == Amo) begin + case (funct5) + fnLR : mem_func = Lr; + fnSC : mem_func = Sc; + fnAMOSWAP, + fnAMOADD, + fnAMOXOR, + fnAMOAND, + fnAMOOR, + fnAMOMIN, + fnAMOMAX, + fnAMOMINU, + fnAMOMAXU : mem_func = Amo; + default : illegalInst = True; + endcase + // now for amo_func + case (funct5) + fnAMOSWAP : amo_func = Swap; + fnAMOADD : amo_func = Add; + fnAMOXOR : amo_func = Xor; + fnAMOAND : amo_func = And; + fnAMOOR : amo_func = Or; + fnAMOMIN : amo_func = Min; + fnAMOMAX : amo_func = Max; + fnAMOMINU : amo_func = Minu; + fnAMOMAXU : amo_func = Maxu; + endcase + end else begin + illegalInst = True; + end + + // unsignedLd + // it doesn't matter if this is set to True for stores + Bool unsignedLd = False; + case (funct3) + memB, memH, memW, memD: + unsignedLd = False; + memBU, memHU, memWU: + unsignedLd = True; + default: + illegalInst = True; + endcase + // This is a minor fix to make our processor's results match spike since + // they don't sign extend when loading single precision values from memory + if (opcode == LoadFp) begin + unsignedLd = True; + end + + // byteEn + // TODO: Some combinations of operations and byteEn's are illegal. + // They should be detected here. + ByteEn byteEn = replicate(False); + case (funct3) + memB, memBU : byteEn[0] = True; + memH, memHU : begin + byteEn[0] = True; + byteEn[1] = True; + end + memW, memWU : begin + byteEn[0] = True; + byteEn[1] = True; + byteEn[2] = True; + byteEn[3] = True; + end + memD : byteEn = replicate(True); + default : illegalInst = True; + endcase + + // aq + rl + Bool aq = False; + Bool rl = False; + if (opcode == Amo) begin + // aq and rl are only defined for Amo operations + aq = unpack(inst[ 26 ]); + rl = unpack(inst[ 25 ]); + end + + if (illegalInst) begin + return tagged Invalid; + end else begin + return tagged Valid ( MemInst{ + mem_func: mem_func, + amo_func: amo_func, + unsignedLd: unsignedLd, + byteEn: byteEn, + aq: aq, + rl: rl } ); + end +endfunction + +(* noinline *) +function DecodeResult decode(Instruction inst); + RiscVISASubset isa = defaultValue; + + // initialize dInst with default values + DecodedInst dInst = DecodedInst { + iType: Unsupported, + execFunc: tagged Other, + csr: tagged Invalid, + imm: tagged Invalid + }; + ArchRegs regs = ArchRegs { + src1: tagged Invalid, + src2: tagged Invalid, + src3: tagged Invalid, + dst: tagged Invalid + }; + Bool illegalInst = False; + + Opcode opcode = unpackOpcode(inst[ 6 : 0 ]); + let rd = inst[ 11 : 7 ]; + let funct3 = inst[ 14 : 12 ]; + let rs1 = inst[ 19 : 15 ]; + let rs2 = inst[ 24 : 20 ]; + let funct7 = inst[ 31 : 25 ]; + // For "F" and "D" ISA extensions + let funct5 = inst[ 31 : 27 ]; + let fmt = inst[ 26 : 25 ]; + let rs3 = inst[ 31 : 27 ]; + let funct2 = inst[ 26 : 25 ]; + // For "A" ISA extension + Bool aq = unpack(inst[ 26 ]); + Bool rl = unpack(inst[ 25 ]); + + ImmData immI = signExtend(inst[31:20]); + ImmData immS = signExtend({ inst[31:25], inst[11:7] }); + ImmData immB = signExtend({ inst[31], inst[7], inst[30:25], inst[11:8], 1'b0}); + ImmData immU = signExtend({ inst[31:12], 12'b0 }); + ImmData immJ = signExtend({ inst[31], inst[19:12], inst[20], inst[30:21], 1'b0}); + + // Results of mini-decoders + Maybe#(MemInst) mem_inst = decodeMemInst(inst); + + // TODO better detection of illegal insts + case (opcode) + OpImm: begin + dInst.iType = Alu; + dInst.execFunc = tagged Alu (case (funct3) + fnADD: Add; + fnSLT: Slt; + fnSLTU: Sltu; + fnAND: And; + fnOR: Or; + fnXOR: Xor; + fnSLL: Sll; + fnSR: (immI[10] == 0 ? Srl : Sra); + endcase); + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + dInst.imm = Valid(immI); + dInst.csr = tagged Invalid; + end + + OpImm32: begin + dInst.iType = Alu; + dInst.execFunc = tagged Alu (case (funct3) + fnADD: Addw; + fnSLL: Sllw; + fnSR: (immI[10] == 0 ? Srlw : Sraw); + endcase); + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + dInst.imm = Valid(immI); + dInst.csr = tagged Invalid; + end + + Op: begin + dInst.iType = Alu; + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Valid(tagged Gpr rs2); + dInst.imm = Invalid; + dInst.csr = tagged Invalid; + case (funct7) + opALU1: begin + dInst.execFunc = tagged Alu (case(funct3) + fnADD: Add; + fnSLT: Slt; + fnSLTU: Sltu; + fnAND: And; + fnOR: Or; + fnXOR: Xor; + fnSLL: Sll; + fnSR: Srl; + endcase); + end + opALU2: begin + dInst.execFunc = tagged Alu (case (funct3) + fnADD: Sub; + fnSR: Sra; + endcase); + end + opMULDIV: begin + if (isa.m) begin + // Processor includes "M" extension + MulDivFunc func = (case(funct3) + fnMUL : Mul; + fnMULH : Mulh; + fnMULHSU : Mulh; + fnMULHU : Mulh; + fnDIV : Div; + fnDIVU : Div; + fnREM : Rem; + fnREMU : Rem; + endcase); + Bool w = False; + MulDivSign sign = (case(funct3) + fnMUL : Signed; + fnMULH : Signed; + fnMULHSU : SignedUnsigned; + fnMULHU : Unsigned; + fnDIV : Signed; + fnDIVU : Unsigned; + fnREM : Signed; + fnREMU : Unsigned; + endcase); + dInst.execFunc = tagged MulDiv (MulDivInst { + func: func, w: w, sign: sign + }); + end else begin + // Processor doesn't include "M" extension + illegalInst = True; + end + end + endcase + end + + Op32: begin + dInst.iType = Alu; + case (funct7) + opALU1: begin + dInst.execFunc = tagged Alu (case(funct3) + fnADD: Addw; + fnSLL: Sllw; + fnSR: Srlw; + endcase); + end + opALU2: begin + dInst.execFunc = tagged Alu (case (funct3) + fnADD: Subw; + fnSR: Sraw; + endcase); + end + opMULDIV: begin + if (isa.m) begin + // Processor includes "M" extension + // TODO mark MULH as illegal inst + MulDivFunc func = (case(funct3) + fnMUL : Mul; + fnMULH : Mulh; // illegal + fnMULHSU : Mulh; // illegal + fnMULHU : Mulh; // illegal + fnDIV : Div; + fnDIVU : Div; + fnREM : Rem; + fnREMU : Rem; + endcase); + Bool w = True; + MulDivSign sign = (case(funct3) + fnMUL : Signed; + fnMULH : Signed; // illegal + fnMULHSU : SignedUnsigned; // illegal + fnMULHU : Unsigned; // illegal + fnDIV : Signed; + fnDIVU : Unsigned; + fnREM : Signed; + fnREMU : Unsigned; + endcase); + dInst.execFunc = tagged MulDiv (MulDivInst{ + func: func, w: w, sign: sign + }); + end else begin + // Processor doesn't include "M" extension + illegalInst = True; + end + end + endcase + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Valid(tagged Gpr rs2); + dInst.imm = Invalid; + dInst.csr = tagged Invalid; + end + + Lui: begin // treated as an x0 + immU + dInst.iType = Alu; + dInst.execFunc = tagged Alu Add; + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr 0); + regs.src2 = Invalid; + dInst.imm = Valid(immU); + dInst.csr = tagged Invalid; + end + + Auipc: begin + dInst.iType = Auipc; + dInst.execFunc = tagged Alu Add; + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Invalid; + regs.src2 = Invalid; + dInst.imm = Valid(immU); + dInst.csr = tagged Invalid; + end + + Jal: begin + dInst.iType = J; + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Invalid; + regs.src2 = Invalid; + dInst.imm = Valid(immJ); + dInst.csr = tagged Invalid; + dInst.execFunc = tagged Br AT; + end + + Jalr: begin + dInst.iType = Jr; + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + dInst.imm = Valid(immI); + dInst.csr = tagged Invalid; + dInst.execFunc = tagged Br AT; + end + + Branch: begin + dInst.iType = Br; + dInst.execFunc = tagged Br (case(funct3) + fnBEQ: Eq; + fnBNE: Neq; + fnBLT: Lt; + fnBLTU: Ltu; + fnBGE: Ge; + fnBGEU: Geu; + endcase); + regs.dst = Invalid; + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Valid(tagged Gpr rs2); + dInst.imm = Valid(immB); + dInst.csr = tagged Invalid; + end + + Load: begin + dInst.iType = Ld; + if (isValid(mem_inst)) begin + dInst.execFunc = tagged Mem fromMaybe(?, mem_inst); + end else begin + illegalInst = True; + end + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + dInst.imm = Valid(immI); + dInst.csr = tagged Invalid; + end + + Store: begin + dInst.iType = St; + if (isValid(mem_inst)) begin + dInst.execFunc = tagged Mem fromMaybe(?, mem_inst); + end else begin + illegalInst = True; + end + regs.dst = Invalid; + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Valid(tagged Gpr rs2); + dInst.imm = Valid(immS); + dInst.csr = tagged Invalid; + end + + Amo: begin + if (!isa.a) begin + // unsupported + illegalInst = True; + end else begin + // AMO defaults + dInst.iType = Amo; + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Valid(tagged Gpr rs2); + dInst.imm = Valid(0); + dInst.csr = Invalid; + + case (funct5) + fnLR: begin + dInst.iType = Lr; + if (isValid(mem_inst)) begin + dInst.execFunc = tagged Mem fromMaybe(?, mem_inst); + end else begin + illegalInst = True; + end + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + dInst.imm = Valid(0); + dInst.csr = Invalid; + end + + fnSC: begin + dInst.iType = Sc; + if (isValid(mem_inst)) begin + dInst.execFunc = tagged Mem fromMaybe(?, mem_inst); + end else begin + illegalInst = True; + end + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Valid(tagged Gpr rs2); + dInst.imm = Valid(0); + dInst.csr = Invalid; + end + + fnAMOSWAP, + fnAMOADD, + fnAMOXOR, + fnAMOAND, + fnAMOOR, + fnAMOMIN, + fnAMOMAX, + fnAMOMINU, + fnAMOMAXU: begin + if (isValid(mem_inst)) begin + dInst.execFunc = tagged Mem fromMaybe(?, mem_inst); + end else begin + illegalInst = True; + end + end + + default: begin + illegalInst = True; + end + endcase + end + end + + // Instructions for "F" and "D" ISA extensions - FPU + OpFp: begin + // check if instruction is supported + if ((fmt == fmtS && !isa.f) || (fmt == fmtD && !isa.d) || (fmt != fmtS && fmt != fmtD)) begin + illegalInst = True; + end else begin + // Instruction is supported + dInst.iType = Fpu; + regs.dst = Valid(tagged Fpu rd); + regs.src1 = Valid(tagged Fpu rs1); + regs.src2 = Valid(tagged Fpu rs2); + dInst.imm = Invalid; + dInst.csr = tagged Invalid; + FpuFunc func = (case (funct5) + opFADD: FAdd; + opFSUB: FSub; + opFMUL: FMul; + opFDIV: FDiv; + opFSQRT: FSqrt; + opFSGNJ: ((funct3 == 0) ? FSgnj : ((funct3 == 1) ? FSgnjn : FSgnjx)); + opFMINMAX: ((funct3 == 0) ? FMin : FMax); + opFCMP: ((funct3 == 0) ? FLe : ((funct3 == 1) ? FLt : FEq)); + opFMV_XF: ((funct3 == 0) ? FMv_XF : FClass); // also CLASS + opFMV_FX: FMv_FX; + opFCVT_FF: FCvt_FF; + opFCVT_WF: ((rs2 == 0) ? FCvt_WF : ((rs2 == 1) ? FCvt_WUF : ((rs2 == 2) ? FCvt_LF : FCvt_LUF))); + opFCVT_FW: ((rs2 == 0) ? FCvt_FW : ((rs2 == 1) ? FCvt_FWU : ((rs2 == 2) ? FCvt_FL : FCvt_FLU))); + endcase); + FpuPrecision precision = (fmt == fmtS) ? Single : Double; + dInst.execFunc = tagged Fpu(FpuInst{func: func, rm: unpack(funct3), precision: precision}); + // Special cases + case (funct5) + opFSQRT: begin + regs.dst = Valid(tagged Fpu rd); + regs.src1 = Valid(tagged Fpu rs1); + regs.src2 = Invalid; + end + opFCMP: begin + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Fpu rs1); + regs.src2 = Valid(tagged Fpu rs2); + end + opFMV_XF: begin + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Fpu rs1); + regs.src2 = Invalid; + end + opFMV_FX: begin + regs.dst = Valid(tagged Fpu rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + end + opFCVT_FF: begin + regs.dst = Valid(tagged Fpu rd); + regs.src1 = Valid(tagged Fpu rs1); + regs.src2 = Invalid; + end + opFCVT_WF: begin + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Valid(tagged Fpu rs1); + regs.src2 = Invalid; + end + opFCVT_FW: begin + regs.dst = Valid(tagged Fpu rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + end + endcase + end + end + LoadFp: begin + // check if instruction is supported + if (!isa.f && !isa.d) begin + // FIXME: Check more cases + illegalInst = True; + end else begin + // Same decode logic as Int Ld + dInst.iType = Ld; + if (isValid(mem_inst)) begin + dInst.execFunc = tagged Mem fromMaybe(?, mem_inst); + end else begin + illegalInst = True; + end + regs.dst = Valid(tagged Fpu rd); + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Invalid; + dInst.imm = Valid(immI); + dInst.csr = tagged Invalid; + end + end + StoreFp: begin + // check if instruction is supported + if (!isa.f && !isa.d) begin + // FIXME: Check more cases + illegalInst = True; + end else begin + // Same decode logic as Int St + dInst.iType = St; + if (isValid(mem_inst)) begin + dInst.execFunc = tagged Mem fromMaybe(?, mem_inst); + end else begin + illegalInst = True; + end + regs.dst = Invalid; + regs.src1 = Valid(tagged Gpr rs1); + regs.src2 = Valid(tagged Fpu rs2); + dInst.imm = Valid(immS); + dInst.csr = tagged Invalid; + end + end + Fmadd, Fmsub, Fnmsub, Fnmadd: begin + // check if instruction is supported + if ((fmt == fmtS && !isa.f) || + (fmt == fmtD && !isa.d) || + (fmt != fmtS && fmt != fmtD)) begin + dInst.iType = Unsupported; + illegalInst = True; + end else begin + // Instruction is supported + dInst.iType = Fpu; + FpuFunc func = ?; + case (opcode) + Fmadd: func = FMAdd; + Fmsub: func = FMSub; + Fnmsub: func = FNMSub; + Fnmadd: func = FNMAdd; + default: illegalInst = True; + endcase + dInst.execFunc = tagged Fpu (FpuInst { + func: func, + rm: unpack(funct3), + precision: fmt == fmtS ? Single : Double + }); + regs.src1 = Valid(tagged Fpu rs1); + regs.src2 = Valid(tagged Fpu rs2); + regs.src3 = Valid(rs3); + regs.dst = Valid(tagged Fpu rd); + dInst.csr = Invalid; + dInst.imm = Invalid; + end + end + + MiscMem: begin + case (funct3) + fnFENCEI: begin + dInst.iType = FenceI; + dInst.execFunc = tagged Other; + end + fnFENCE: begin + // extract bits for P/S IORW + Bool old_st = unpack(inst[26] | inst[24]); // PO, PW + Bool young_ld = unpack(inst[23] | inst[21]); // SI, SR + // get acq/reconcile and rel/commit needed to enforce + // different orderings +`ifdef TSO_MM + // Orderings enfored by fence in TSO: + // St -> Ld: commit + // Others: N/A + Bool reconcile = False; + Bool commit = old_st && young_ld; +`else + // Orderings enforced by fence in WMM + // St -> St: commit + // St -> Ld: commit + reconcile + // Ld -> Ld: reconcile + // Ld -> St: N/A + Bool reconcile = young_ld; // reconcile when younger load is in ordering + Bool commit = old_st; // commit when older store is in ordering +`endif + // set up fence inst + if (reconcile || commit) begin + dInst.iType = Fence; + dInst.execFunc = tagged Mem (MemInst { + mem_func: Fence, + amo_func: None, + unsignedLd: False, + byteEn: replicate(False), + aq: reconcile, + rl: commit + }); + end + else begin + dInst.iType = Nop; + dInst.execFunc = tagged Other; + end + end + default: illegalInst = True; + endcase + regs.dst = Invalid; + regs.src1 = Invalid; + regs.src2 = Invalid; + dInst.imm = Invalid; + dInst.csr = Invalid; + end + + System: begin + if (funct3 == fnPRIV) begin + if (funct7 == privSFENCEVMA) begin + dInst.iType = SFence; + // FIXME SFENCE.VMA is implemented in coarse grain, + // ignoring rs1 and rs2 + end + else begin + case (truncate(immI)) + privSRET: dInst.iType = Sret; + privMRET: dInst.iType = Mret; + privECALL: dInst.iType = Ecall; + privEBREAK: dInst.iType = Ebreak; + privWFI: dInst.iType = Nop; // treat as NOP + default: illegalInst = True; + endcase + end + regs.dst = Invalid; + regs.src1 = Invalid; + regs.src2 = Invalid; + dInst.csr = Invalid; + dInst.imm = Invalid; + end + else begin // fnCSRRWI, fnCSRRW, fnCSRRSI, fnCSRRS, fnCSRRCI, fnCSRRC + dInst.iType = Csr; + dInst.execFunc = (case (funct3) + fnCSRRWI, fnCSRRW: tagged Alu Csrw; + fnCSRRSI, fnCSRRS: tagged Alu Csrs; + fnCSRRCI, fnCSRRC: tagged Alu Csrc; + endcase); + + regs.dst = Valid(tagged Gpr rd); + regs.src1 = Invalid; // going to be CSR Reg + regs.src2 = (funct3[2] == 0 ? Valid(tagged Gpr rs1) : Invalid); + dInst.imm = (funct3[2] == 0 ? Invalid : Valid(zeroExtend(rs1))); + dInst.csr = Valid(unpackCSR(truncate(immI))); + end + end + + default: begin + illegalInst = True; + end + endcase + + // XXX to ensure renaming + phy regs works correctly, must remove any write + // to x0 + if(regs.dst matches tagged Valid .dst &&& dst == tagged Gpr 0) begin + regs.dst = tagged Invalid; + end + + return DecodeResult{dInst: dInst, regs: regs, illegalInst: illegalInst}; +endfunction + +// All this does is add the CSR state to the decoding +function FpuInst updateRoundingMode(FpuInst fpu_f, CsrDecodeInfo csrState); + let new_fpu_f = fpu_f; + new_fpu_f.rm = (fpu_f.rm == RDyn) ? unpack(csrState.frm) : fpu_f.rm; + return new_fpu_f; +endfunction diff --git a/src_Core/RISCY_OOO/procs/lib/DirPredictor.bsv b/src_Core/RISCY_OOO/procs/lib/DirPredictor.bsv new file mode 100644 index 0000000..ca1ff02 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/DirPredictor.bsv @@ -0,0 +1,85 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Assert::*; +import Types::*; +import ProcTypes::*; +import Vector::*; +import BrPred::*; +import Bht::*; +import GSelectPred::*; +import GSharePred::*; +import TourPred::*; +import TourPredSecure::*; + +export DirPredTrainInfo(..); +export mkDirPredictor; + +`ifdef DIR_PRED_BHT +typedef BhtTrainInfo DirPredTrainInfo; +`endif +`ifdef DIR_PRED_GSELECT +typedef GSelectTrainInfo DirPredTrainInfo; +`endif +`ifdef DIR_PRED_GSHARE +typedef GShareTrainInfo DirPredTrainInfo; +`endif +`ifdef DIR_PRED_TOUR +typedef TourTrainInfo DirPredTrainInfo; +`endif + +(* synthesize *) +module mkDirPredictor(DirPredictor#(DirPredTrainInfo)); +`ifdef DIR_PRED_BHT +`ifdef SECURITY + staticAssert(False, "BHT with flush methods is not implemented"); +`endif + let m <- mkBht; +`endif + +`ifdef DIR_PRED_GSELECT +`ifdef SECURITY + staticAssert(False, "GSelect with flush methods is not implemented"); +`endif + let m <- mkGSelectPred; +`endif + +`ifdef DIR_PRED_GSHARE +`ifdef SECURITY + staticAssert(False, "GShare with flush methods is not implemented"); +`endif + let m <- mkGSharePred; +`endif + +`ifdef DIR_PRED_TOUR +`ifdef SECURITY + let m <- mkTourPredSecure; +`else + let m <- mkTourPred; +`endif +`endif + + return m; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/Ehr.bsv b/src_Core/RISCY_OOO/procs/lib/Ehr.bsv new file mode 100644 index 0000000..a399f51 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Ehr.bsv @@ -0,0 +1,96 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +/* +Comments: This EHR design generates the following scheduling constraints (forall i): +forall j >= i, r[i] < w[j] +forall j < i, r[i] > w[j] +forall j > i, w[i] < w[j] +w[i] conflicts with w[i] +forall j, r[i] is conflict free with r[j] +*/ + +import Vector::*; +import RWire::*; +import RevertingVirtualReg::*; + +typedef Vector#(n, Reg#(t)) Ehr#(numeric type n, type t); + +function Vector#(n, t) readVEhr(i ehr_index, Vector#(n, Ehr#(n2, t)) vec_ehr) provisos (PrimIndex#(i, __a)); + function Reg#(t) get_ehr_index(Ehr#(n2, t) e) = e[ehr_index]; + return readVReg(map(get_ehr_index, vec_ehr)); +endfunction + +// extract vector ports from vector of EHRs +function Vector#(n, Reg#(t)) getVEhrPort(Vector#(n, Ehr#(m, t)) ehrs, Integer p); + function Reg#(t) get(Ehr#(m, t) e) = e[p]; + return map(get, ehrs); +endfunction + +module mkEhr#(t init)(Ehr#(n, t)) provisos(Bits#(t, tSz)); + Vector#(n, RWire#(t)) lat <- replicateM(mkUnsafeRWire); + + Vector#(n, Vector#(n, RWire#(Bool))) dummy <- replicateM(replicateM(mkUnsafeRWire)); + Vector#(n, Reg#(Bool)) dummy2 <- replicateM(mkRevertingVirtualReg(True)); // this must be true + + Reg#(t) rl <- mkReg(init); + + Ehr#(n, t) r = newVector; + + (* fire_when_enabled, no_implicit_conditions *) + rule canon; + t upd = rl; + for(Integer i = 0; i < valueOf(n); i = i + 1) + if(lat[i].wget matches tagged Valid .x) + upd = x; + rl <= upd; + endrule + + for(Integer i = 0; i < valueOf(n); i = i + 1) + r[i] = (interface Reg; + method Action _write(t x); + lat[i].wset(x); + dummy2[i] <= True; + for(Integer j = 0; j < i; j = j + 1) + dummy[i][j].wset(isValid(lat[j].wget)); + endmethod + + method t _read; + t upd = rl; + Bool yes = True; + for(Integer j = i; j < valueOf(n); j = j + 1) + yes = yes && dummy2[j]; + for(Integer j = 0; j < i; j = j + 1) + begin + if(lat[j].wget matches tagged Valid .x) + upd = x; + end + return yes? upd : unpack(0); + // use a non-? val here! otherwise new BSV compiler will stop optimize at ? val + // this affects judging if two rules are exclusive + endmethod + endinterface); + + return r; +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/EpochManager.bsv b/src_Core/RISCY_OOO/procs/lib/EpochManager.bsv new file mode 100644 index 0000000..f91dec7 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/EpochManager.bsv @@ -0,0 +1,133 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Vector::*; +import Ehr::*; +import Types::*; +import ProcTypes::*; + +typedef struct { + Epoch curEp; + Epoch checkedEp; +} EpochDebugState deriving(Bits, Eq, FShow); + +interface EM_checkEpoch; + method Bool check(Epoch e); +endinterface + +interface EM_updatePrevEpoch; + method Action update(Epoch e); +endinterface + +interface EpochManager; + interface Vector#(SupSize, EM_checkEpoch) checkEpoch; + interface Vector#(SupSize, EM_updatePrevEpoch) updatePrevEpoch; + method Epoch getEpoch; + method Action incrementEpoch; + // for debug + method EpochDebugState getEpochState; + // performance: count full cycle + method Bool isFull_ehrPort0; +endinterface + +(* synthesize *) +module mkEpochManager(EpochManager); + Reg#(Epoch) curr_epoch <- mkReg(0); + Reg#(Epoch) prev_checked_epoch <- mkReg(0); + Epoch next_epoch = (curr_epoch== fromInteger(valueOf(NumEpochs)-1)) ? 0 : (curr_epoch+1); + + // epochs in the core are within range [prev_checked_epoch, curr_epoch] + // prev_checked_epoch can be updated in a lazy way + Vector#(SupSize, Ehr#(2, Maybe#(Epoch))) updatePrevEn <- replicateM(mkEhr(Invalid)); + + (* fire_when_enabled, no_implicit_conditions *) + rule canon_prev_checked_epoch; + Vector#(SupSize, Maybe#(Epoch)) updates = readVEhr(1, updatePrevEn); + // find the last update + if(find(isValid, reverse(updates)) matches tagged Valid .upd) begin + doAssert(isValid(upd), "must be valid"); + prev_checked_epoch <= validValue(upd); + end + // reset EHR + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + updatePrevEn[i][1] <= Invalid; + end + endrule + + Vector#(SupSize, EM_updatePrevEpoch) updateIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + updateIfc[i] = (interface EM_updatePrevEpoch; + method Action update(Epoch e); + updatePrevEn[i][0] <= Valid (e); // record update action +`ifdef BSIM + // sanity check + Epoch checkedEpoch = prev_checked_epoch; + for(Integer j = 0; j < i; j = j+1) begin + if(updatePrevEn[j][1] matches tagged Valid .ep) begin + checkedEpoch = ep; + end + end + if(checkedEpoch <= curr_epoch) begin + doAssert(checkedEpoch <= e && e <= curr_epoch, "e in [checkedEpoch, curr_epoch]"); + end + else begin + doAssert(checkedEpoch <= e || e <= curr_epoch, "e in [checkedEpoch, max] + [0, curr_epoch]"); + end +`endif + endmethod + endinterface); + end + + Vector#(SupSize, EM_checkEpoch) checkIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + checkIfc[i] = (interface EM_checkEpoch; + method Bool check(Epoch e); + return (e == curr_epoch); + endmethod + endinterface); + end + + interface updatePrevEpoch = updateIfc; + + interface checkEpoch = checkIfc; + + method Epoch getEpoch; + return curr_epoch; + endmethod + method Action incrementEpoch if(prev_checked_epoch != next_epoch); + curr_epoch <= next_epoch; + endmethod + + method EpochDebugState getEpochState; + return EpochDebugState { + curEp: curr_epoch, + checkedEp: prev_checked_epoch + }; + endmethod + + method Bool isFull_ehrPort0; + return next_epoch == prev_checked_epoch; + endmethod +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/Exec.bsv b/src_Core/RISCY_OOO/procs/lib/Exec.bsv new file mode 100644 index 0000000..1b5c7b1 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Exec.bsv @@ -0,0 +1,250 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Types::*; +import ProcTypes::*; +import Vector::*; + +(* noinline *) +function Data alu(Data a, Data b, AluFunc func); + Data res = (case(func) + Add : (a + b); + Addw : signExtend((a + b)[31:0]); + Sub : (a - b); + Subw : signExtend((a[31:0] - b[31:0])[31:0]); + And : (a & b); + Or : (a | b); + Xor : (a ^ b); + Slt : zeroExtend( pack( signedLT(a, b) ) ); + Sltu : zeroExtend( pack( a < b ) ); + Sll : (a << b[5:0]); + Sllw : signExtend((a[31:0] << b[4:0])[31:0]); + Srl : (a >> b[5:0]); + Sra : signedShiftRight(a, b[5:0]); + Srlw : signExtend((a[31:0] >> b[4:0])[31:0]); + Sraw : signExtend(signedShiftRight(a[31:0], b[4:0])[31:0]); + Csrw : b; + Csrs : (a | b); // same as Or + Csrc : (a & ~b); + default : 0; + endcase); + return res; +endfunction + +(* noinline *) +function Bool aluBr(Data a, Data b, BrFunc brFunc); + Bool brTaken = (case(brFunc) + Eq : (a == b); + Neq : (a != b); + Lt : signedLT(a, b); + Ltu : (a < b); + Ge : signedGE(a, b); + Geu : (a >= b); + AT : True; + NT : False; + default : False; + endcase); + return brTaken; +endfunction + +(* noinline *) +function Addr brAddrCalc(Addr pc, Data val, IType iType, Data imm, Bool taken); + Addr pcPlus4 = pc + 4; + Addr targetAddr = (case (iType) + J : (pc + imm); + Jr : {(val + imm)[valueOf(AddrSz)-1:1], 1'b0}; + Br : (taken? pc + imm : pcPlus4); + default : pcPlus4; + endcase); + return targetAddr; +endfunction + +(* noinline *) +function ControlFlow getControlFlow(DecodedInst dInst, Data rVal1, Data rVal2, Addr pc, Addr ppc); + ControlFlow cf = unpack(0); + + Bool taken = dInst.execFunc matches tagged Br .br_f ? aluBr(rVal1, rVal2, br_f) : False; + Addr nextPc = brAddrCalc(pc, rVal1, dInst.iType, validValue(getDInstImm(dInst)), taken); + Bool mispredict = nextPc != ppc; + + cf.pc = pc; + cf.nextPc = nextPc; + cf.taken = taken; + cf.mispredict = mispredict; + + return cf; +endfunction + +(* noinline *) +function ExecResult basicExec(DecodedInst dInst, Data rVal1, Data rVal2, Addr pc, Addr ppc); + // just data, addr, and control flow + Data data = 0; + Data csr_data = 0; + Addr addr = 0; + ControlFlow cf = ControlFlow{pc: pc, nextPc: 0, taken: False, mispredict: False}; + + Data aluVal2 = fromMaybe(rVal2, getDInstImm(dInst)); //isValid(dInst.imm) ? fromMaybe(?, dInst.imm) : rVal2; + // Get the alu function. By default, it adds. This is used by memory instructions + AluFunc alu_f = dInst.execFunc matches tagged Alu .alu_f ? alu_f : Add; + Data alu_result = alu(rVal1, aluVal2, alu_f); + + // Default branch function is not taken + BrFunc br_f = dInst.execFunc matches tagged Br .br_f ? br_f : NT; + cf.taken = aluBr(rVal1, rVal2, br_f); + cf.nextPc = brAddrCalc(pc, rVal1, dInst.iType, validValue(getDInstImm(dInst)), cf.taken); + cf.mispredict = cf.nextPc != ppc; + + data = (case (dInst.iType) + St, Sc, Amo : rVal2; + J, Jr : (pc + 4); // could be computed with alu + Auipc : (pc + fromMaybe(?, getDInstImm(dInst))); // could be computed with alu + Csr : rVal1; + default : alu_result; + endcase); + csr_data = alu_result; + addr = (case (dInst.iType) + Ld, St, Lr, Sc, Amo : alu_result; + default : cf.nextPc; + endcase); + + return ExecResult{data: data, csrData: csr_data, addr: addr, controlFlow: cf}; +endfunction + +(* noinline *) +function Maybe#(Exception) checkForException( + DecodedInst dInst, + ArchRegs regs, + CsrDecodeInfo csrState +); // regs needed to check if x0 is a src + Maybe#(Exception) exception = Invalid; + let prv = csrState.prv; + + if(dInst.iType == Ecall) begin + exception = Valid (case(prv) + prvU: EnvCallU; + prvS: EnvCallS; + prvM: EnvCallM; + default: IllegalInst; + endcase); + end + else if(dInst.iType == Ebreak) begin + exception = Valid (Breakpoint); + end + else if(dInst.iType == Mret) begin + if(prv < prvM) begin + exception = Valid (IllegalInst); + end + end + else if(dInst.iType == Sret) begin + if(prv < prvS) begin + exception = Valid (IllegalInst); + end + else if(prv == prvS && csrState.trapSret) begin + exception = Valid (IllegalInst); + end + end + else if(dInst.iType == SFence) begin + if(prv == prvS && csrState.trapVM) begin + exception = Valid (IllegalInst); + end + end + else if(dInst.iType == Csr) begin + let csr = pack(fromMaybe(?, dInst.csr)); + Bool csr_has_priv = (prv >= csr[9:8]); + if(!csr_has_priv) begin + exception = Valid (IllegalInst); + end + else if(prv == prvS && csrState.trapVM && + validValue(dInst.csr) == CSRsatp) begin + exception = Valid (IllegalInst); + end + // TODO check permission for accessing cycle/inst/time, and check + // read-only CSRs being written + end + else if(dInst.iType == Fpu) begin + if(dInst.execFunc matches tagged Fpu .fpu_f) begin + // Get rounding mode + let rm = (fpu_f.rm == RDyn) ? unpack(csrState.frm) : fpu_f.rm; + case(rm) + RNE, RTZ, RDN, RUP, RMM: exception = exception; // legal modes + default : exception = Valid (IllegalInst); + endcase + end + else begin + // Fpu instruction without FPU execFunc + exception = Valid (IllegalInst); + end + end + + return exception; +endfunction + +// check mem access misaligned: byteEn is unshifted (just from Decode) +function Bool memAddrMisaligned(Addr addr, ByteEn byteEn); + if(byteEn[7]) begin + return addr[2:0] != 0; + end + else if(byteEn[3]) begin + return addr[1:0] != 0; + end + else if(byteEn[1]) begin + return addr[0] != 0; + end + else begin + return False; + end +endfunction + +function Data gatherLoad(Addr addr, ByteEn byteEn, Bool unsignedLd, Data data); + function extend = unsignedLd ? zeroExtend : signExtend; + Bit#(IndxShamt) offset = truncate(addr); + + if(byteEn[7]) begin + return extend(data); + end else if(byteEn[3]) begin + Vector#(2, Bit#(32)) dataVec = unpack(data); + return extend(dataVec[offset[2]]); + end else if(byteEn[1]) begin + Vector#(4, Bit#(16)) dataVec = unpack(data); + return extend(dataVec[offset[2:1]]); + end else begin + Vector#(8, Bit#(8)) dataVec = unpack(data); + return extend(dataVec[offset]); + end +endfunction + +function Tuple2#(ByteEn, Data) scatterStore(Addr addr, ByteEn byteEn, Data data); + Bit#(IndxShamt) offset = truncate(addr); + if(byteEn[7]) begin + return tuple2(byteEn, data); + end else if(byteEn[3]) begin + return tuple2(unpack(pack(byteEn) << (offset)), data << {(offset), 3'b0}); + end else if(byteEn[1]) begin + return tuple2(unpack(pack(byteEn) << (offset)), data << {(offset), 3'b0}); + end else begin + return tuple2(unpack(pack(byteEn) << (offset)), data << {(offset), 3'b0}); + end +endfunction + diff --git a/src_Core/RISCY_OOO/procs/lib/Fifo.bsv b/src_Core/RISCY_OOO/procs/lib/Fifo.bsv new file mode 100644 index 0000000..b0621cf --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Fifo.bsv @@ -0,0 +1,652 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +/* +This file contains many FIFO implementations +1) Conflict Free FIFO with 2 elements +2) Pipeline FIFO with 1 element +3) Bypass FIFO with 1 element +4) Conflict Free FIFO with n elements (ptr based implementation) +5) Pipeline FIFO with n elements (ptr based implementation) +6) Searchable n-element FIFO has an extra search method added to the n-element FIFOs + a) Searchable conflict-free n-element FIFO + b) Searchable pipelined n-element FIFO + +Clear always happens after enq and deq (but before canonicalize when applicable) +All these FIFOs have been tested with various pipelines. In particular n-element FIFO can be put in place of the respective 2-element or 1-element FIFO + +*/ + +import Ehr::*; +import GetPut::*; +import Vector::*; +import FIFOF::*; +import Types::*; // for assertion + +interface Fifo#(numeric type n, type t); + method Bool notFull; + method Action enq(t x); + method Bool notEmpty; + method Action deq; + method t first; + method Action clear; +endinterface + +interface SupFifoEnq#(type t); + method Bool canEnq; + method Action enq(t x); +endinterface + +interface SupFifoDeq#(type t); + method Bool canDeq; + method Action deq; + method t first; +endinterface + +interface SupFifo#(numeric type k, numeric type n, type t); + interface Vector#(k, SupFifoEnq#(t)) enqS; + interface Vector#(k, SupFifoDeq#(t)) deqS; + method Bool internalEmpty; // for security +endinterface + +function Integer getMaxIndex( FifoState#(n) s ); + return valueOf(n)-1; +endfunction + +interface FifoState#(numeric type n); + interface Reg#(Bit#(TLog#(n))) enqP; + interface Reg#(Bit#(TLog#(n))) deqP; + interface Reg#(Bool) empty; + interface Reg#(Bool) full; + method Bool isValidIndex(Integer i); +endinterface + +function FifoState#(n) toFifoState( Reg#(Bit#(TLog#(n))) _enqP, Reg#(Bit#(TLog#(n))) _deqP, Reg#(Bool) _empty, Reg#(Bool) _full ); + return (interface FifoState; + interface Reg enqP = _enqP; + interface Reg deqP = _deqP; + interface Reg empty = _empty; + interface Reg full = _full; + method Bool isValidIndex( Integer i ); + Bool gte_deqP = fromInteger(i) >= _deqP; + Bool lt_enqP = fromInteger(i) < _enqP; + return _full || (_deqP > _enqP && (gte_deqP || lt_enqP)) || (_enqP > _deqP && gte_deqP && lt_enqP); + endmethod + endinterface); +endfunction + +function Bool isValidIndex( FifoState#(n) s, Integer i ); + Bool gte_deqP = fromInteger(i) >= s.deqP; + Bool lt_enqP = fromInteger(i) < s.enqP; + return s.full || (s.deqP > s.enqP && (gte_deqP || lt_enqP)) || (s.enqP > s.deqP && gte_deqP && lt_enqP); +endfunction + +instance ToGet#(Fifo#(n, t), t); + function Get#(t) toGet(Fifo#(n, t) f); + return (interface Get; + method ActionValue#(t) get; + f.deq; + return f.first; + endmethod + endinterface); + endfunction +endinstance + +instance ToPut#(Fifo#(n, t), t); + function Put#(t) toPut(Fifo#(n, t) f); + return (interface Put; + method Action put(t r); + f.enq(r); + endmethod + endinterface); + endfunction +endinstance + +// instance ToGet#(SupFifo#(k,n, t), t); +// function Get#(Vector#(k,Maybe#(t))) toGet(SupFifo#(k,n, t) f); +// return (interface Get; +// method ActionValue#(Vector#(k,Maybe#(t)) get; +// // +// f.deq; +// return f.first; +// endmethod +// endinterface); +// endfunction +// endinstance + +// instance ToPut#(SupFifo#(k,n, t), t); +// function Put#(Vector#(k,Maybe#(t))) toPut(SupFifo#(k,n, t) f); +// return (interface Put; +// method Action put(Vector#(k,Maybe#(t)) r); +// +// f.enq(r); +// endmethod +// endinterface); +// endfunction +// endinstance + +module mkSupFifo(SupFifo#(k,n,t)) provisos ( + Bits#(t,tSz), + FShow#(t), + Add#(TExp#(TLog#(k)), 0, k) // k must be power of 2 +); + Vector#(k, FIFOF#(t)) internalFifos <- replicateM(mkUGSizedFIFOF(valueOf(n))); + //I need a custom counter here for now will work only for power of two + Ehr#(TAdd#(1,k), Bit#(TLog#(k))) enqueueFifo <- mkEhr(unpack(0)); + Ehr#(TAdd#(1,k), Bit#(TLog#(k))) dequeueFifo <- mkEhr(unpack(0)); + Vector#(k, Ehr#(2,Maybe#(t))) enqueueElement <- replicateM(mkEhr(tagged Invalid)); + Vector#(k, Ehr#(2, Bool)) willDequeue <- replicateM(mkEhr(False)); + + function SupFifoEnq#(t) getEnqIfc(Integer i); + Bit#(TLog#(k)) fifoIdx = enqueueFifo[0]+fromInteger(i); + Bool can_enq = internalFifos[fifoIdx].notFull; + return (interface SupFifoEnq; + method Bool canEnq = can_enq; + method Action enq(t x) if(can_enq); + enqueueElement[i][0] <= tagged Valid x; + endmethod + endinterface); + endfunction + + function SupFifoDeq#(t) getDeqIfc(Integer i); + Bit#(TLog#(k)) fifoIdx = dequeueFifo[0]+fromInteger(i); + Bool can_deq = internalFifos[fifoIdx].notEmpty; + return (interface SupFifoDeq; + method Bool canDeq = can_deq; + method t first if(can_deq); + return internalFifos[fifoIdx].first; + endmethod + method Action deq if(can_deq); + willDequeue[i][0] <= True; + endmethod + endinterface); + endfunction + + (* fire_when_enabled, no_implicit_conditions *) + rule canonicalize; + for (Integer i = 0; i < valueOf(k); i = i+1) begin + if(enqueueElement[i][1] matches tagged Valid .el) begin + enqueueFifo[i] <= enqueueFifo[0]+fromInteger(i)+1; + internalFifos[enqueueFifo[0]+fromInteger(i)].enq(el); + doAssert(internalFifos[enqueueFifo[0]+fromInteger(i)].notFull, "FIFO must be not full"); + if(i > 0) begin + doAssert(isValid(enqueueElement[i-1][1]), "FIFO enq must be consecutive"); + end + end + if (willDequeue[i][1]) begin + dequeueFifo[i] <= dequeueFifo[0] + fromInteger(i) + 1; + internalFifos[dequeueFifo[0]+fromInteger(i)].deq; + doAssert(internalFifos[dequeueFifo[0]+fromInteger(i)].notEmpty, "FIFO must be not empty"); + if(i > 0) begin + doAssert(willDequeue[i-1][1], "FIFO deq must be consecutive"); + end + end + enqueueElement[i][1] <= tagged Invalid; + willDequeue[i][1] <= False; + end + endrule + + Vector#(k,Integer) indexes = genVector; + interface Vector enqS = map(getEnqIfc, indexes); + interface Vector deqS = map(getDeqIfc, indexes); + + method Bool internalEmpty; + function Bool isEmpty(Integer i) = !internalFifos[i].notEmpty; + return all(isEmpty, indexes); + endmethod +endmodule + + + +// A Conflict free implementation of n element FIFO +// {notEmpty, first} < deq < clear < canonicalize +// notFull < enq < clear < canonicalize +// deq conflict free with enq +// canonicalize has no effect after clear anyway + +// FIXME: This FIFO is broken because {enq, deq} can't be CF with {notEmpty, notFull} +module mkCFFifo( Fifo#(n, t) ) provisos (Bits#(t,tSz)); + // n is size of fifo + // t is data type of fifo + + // storage elements + Vector#(n, Reg#(t)) data <- replicateM(mkReg(unpack(0))); + Reg#(Bit#(TLog#(n))) enqP <- mkReg(0); + Reg#(Bit#(TLog#(n))) deqP <- mkReg(0); + Reg#(Bool) empty <- mkReg(True); + Reg#(Bool) full <- mkReg(False); + + // requests + Ehr#(3, Maybe#(t)) enqReq <- mkEhr(tagged Invalid); + Ehr#(3, Maybe#(void)) deqReq <- mkEhr(tagged Invalid); + Ehr#(2, Maybe#(void)) clearReq <- mkEhr(tagged Invalid); + + // useful value + Bit#(TLog#(n)) max_index = fromInteger(valueOf(n)-1); + + // Update the state of the fifo to match any enqueue, dequeue, or clear + // These attributes are statically checked by the compiler + (* fire_when_enabled *) // WILL_FIRE == CAN_FIRE + (* no_implicit_conditions *) // CAN_FIRE == guard (True) + rule canonicalize; + if( isValid(clearReq[1]) ) begin + enqP <= 0; + deqP <= 0; + full <= False; + empty <= True; + end else begin + let next_enqP = enqP; + let next_deqP = deqP; + let next_full = full; + let next_empty = empty; + + if( isValid(enqReq[2]) ) begin + data[enqP] <= fromMaybe(?, enqReq[2]); + next_enqP = (enqP == max_index) ? 0 : enqP + 1; + end + if( isValid(deqReq[2]) ) begin + next_deqP = (deqP == max_index) ? 0 : deqP + 1; + end + + // compute next_full and next_empty + // XXX need to set both next_empty and next_full for 1-element FIFO + if( next_deqP == next_enqP ) begin + if( isValid(enqReq[2]) ) begin + // enqueued to full + next_full = True; + next_empty = False; + end else if( isValid(deqReq[2]) ) begin + // dequeued to empty + next_empty = True; + next_full = False; + end else begin + // no deq or enq, so no change + end + end else begin + // next_deqP != next_enqP so neither full nor empty + next_full = False; + next_empty = False; + end + + // update the states + enqP <= next_enqP; + deqP <= next_deqP; + full <= next_full; + empty <= next_empty; + end + + // clear pending requests + clearReq[1] <= tagged Invalid; + enqReq[2] <= tagged Invalid; + deqReq[2] <= tagged Invalid; + endrule + + method Bool notFull = !full; + + method Action enq(t x) if( !full ); + // Tell later stages an enqueue was requested + enqReq[0] <= tagged Valid x; + endmethod + + method Bool notEmpty = !empty; + + method Action deq if( !empty ); + // Tell later stages a dequeue was requested + deqReq[0] <= tagged Valid; + endmethod + + method t first if( !empty ); + return data[deqP]; + endmethod + + method Action clear; + // Clear any existing enq/deq requests + // gets desired {enq, deq} < clear schedule + enqReq[1] <= tagged Invalid; + deqReq[1] <= tagged Invalid; + // Tell later stages a clear was requested + clearReq[0] <= tagged Valid; + endmethod +endmodule + +// A pipelined implementation of n element FIFO +// {notEmpty, first} < deq < notFull < enq < clear + +module mkPipelineFifo( Fifo#(n, t) ) provisos (Bits#(t,tSz)); + // n is size of fifo + // t is data type of fifo + Vector#(n, Reg#(t)) data <- replicateM(mkReg(unpack(0))); + Ehr#(2, Bit#(TLog#(n))) enqP <- mkEhr(0); + Ehr#(2, Bit#(TLog#(n))) deqP <- mkEhr(0); + Ehr#(3, Bool) empty <- mkEhr(True); + Ehr#(3, Bool) full <- mkEhr(False); + Bit#(TLog#(n)) max_index = fromInteger(valueOf(n)-1); + + method Bool notFull = !full[1]; + + method Action enq(t x) if( !full[1] ); + data[enqP[0]] <= x; + empty[1] <= False; + let next_enqP = (enqP[0] == max_index) ? 0 : enqP[0] + 1; + enqP[0] <= next_enqP; + if( next_enqP == deqP[1] ) begin + full[1] <= True; + end + endmethod + + method Bool notEmpty = !empty[0]; + + method Action deq if( !empty[0] ); + full[0] <= False; + let next_deqP = (deqP[0] == max_index) ? 0 : deqP[0] + 1; + deqP[0] <= next_deqP; + if( next_deqP == enqP[0] ) begin + empty[0] <= True; + end + endmethod + + method t first if( !empty[0] ); + return data[deqP[0]]; + endmethod + + method Action clear; + enqP[1] <= 0; + deqP[1] <= 0; + empty[2] <= True; + full[2] <= False; + endmethod +endmodule + +// A Bypass implementation of n element FIFO +// notFull < enq < {notEmpty, first} < deq < clear + +module mkBypassFifo( Fifo#(n, t) ) provisos (Bits#(t,tSz)); + // n is size of fifo + // t is data type of fifo + Vector#(n, Ehr#(2,t)) data <- replicateM(mkEhr(?)); + Ehr#(2, Bit#(TLog#(n))) enqP <- mkEhr(0); + Ehr#(2, Bit#(TLog#(n))) deqP <- mkEhr(0); + Ehr#(3, Bool) empty <- mkEhr(True); + Ehr#(3, Bool) full <- mkEhr(False); + Bit#(TLog#(n)) max_index = fromInteger(valueOf(n)-1); + + method Bool notFull = !full[0]; + + method Action enq(t x) if( !full[0] ); + data[enqP[0]][0] <= x; + empty[0] <= False; + let next_enqP = (enqP[0] == max_index) ? 0 : enqP[0] + 1; + enqP[0] <= next_enqP; + if( next_enqP == deqP[0] ) begin + full[0] <= True; + end + endmethod + + method Bool notEmpty = !empty[1]; + + method Action deq if( !empty[1] ); + full[1] <= False; + let next_deqP = (deqP[0] == max_index) ? 0 : deqP[0] + 1; + deqP[0] <= next_deqP; + if( next_deqP == enqP[1] ) begin + empty[1] <= True; + end + endmethod + + method t first if( !empty[1] ); + return data[deqP[0]][1]; + endmethod + + method Action clear; + enqP[1] <= 0; + deqP[1] <= 0; + empty[2] <= True; + full[2] <= False; + endmethod +endmodule + + +// Searchable FIFO has an extra search method +interface SFifo#(numeric type n, type t, type st); + method Bool notFull; + method Action enq(t x); + method Bool notEmpty; + method Action deq; + method Bool search(st s); + method t first; + method Action clear; +endinterface + +// search is conflict-free with {enq, deq, first, notFull, notEmpty} +// search < clear < canonicalize +module mkCFSFifo#(function Bool isFound(t v, st k))(SFifo#(n, t, st)) provisos(Bits#(t, tSz), Add#(n, 1, n1), Log#(n1, sz), Add#(sz, 1, sz1)); + Integer ni = valueOf(n); + Bit#(sz1) nb = fromInteger(ni); + Bit#(sz1) n2 = 2*nb; + Vector#(n, Reg#(t)) data <- replicateM(mkRegU); + Ehr#(3, Bit#(sz1)) enqP <- mkEhr(0); + Ehr#(3, Bit#(sz1)) deqP <- mkEhr(0); + Ehr#(3, Bool) enqEn <- mkEhr(True); + Ehr#(3, Bool) deqEn <- mkEhr(False); + Ehr#(2, t) tempData <- mkEhr(?); + Ehr#(2, Maybe#(Bit#(sz1))) tempEnqP <- mkEhr(Invalid); + Ehr#(2, Maybe#(Bit#(sz1))) tempDeqP <- mkEhr(Invalid); + + Bit#(sz1) cnt0 = enqP[0] >= deqP[0]? enqP[0] - deqP[0]: + (enqP[0]%nb + nb) - deqP[0]%nb; + Bit#(sz1) cnt2 = enqP[2] >= deqP[2]? enqP[2] - deqP[2]: + (enqP[2]%nb + nb) - deqP[2]%nb; + rule canonicalize; + if(!enqEn[2] && cnt2 != nb) enqEn[2] <= True; + if(!deqEn[2] && cnt2 != 0) deqEn[2] <= True; + + if(isValid(tempEnqP[1])) + begin + data[validValue(tempEnqP[1])] <= tempData[1]; + tempEnqP[1] <= Invalid; + end + + if(isValid(tempDeqP[1])) + begin + deqP[0] <= validValue(tempDeqP[1]); + tempDeqP[1] <= Invalid; + end + endrule + + method Bool notFull = enqEn[0]; + + method Action enq(t x) if(enqEn[0]); + tempData[0] <= x; + tempEnqP[0] <= Valid (enqP[0]%nb); + enqP[0] <= (enqP[0] + 1)%n2; + enqEn[0] <= False; + endmethod + + method Bool notEmpty = deqEn[0]; + + method Action deq if(deqEn[0]); + tempDeqP[0] <= Valid ((deqP[0] + 1)%n2); + deqEn[0] <= False; + endmethod + + method t first if(deqEn[0]); + return data[deqP[0]%nb]; + endmethod + + method Bool search(st s); + Bool ret = False; + for(Bit#(sz1) i = 0; i < nb; i = i + 1) + begin + let ptr = (deqP[0] + i)%nb; + if(isFound(data[ptr], s) && i < cnt0) + ret = True; + end + return ret; + endmethod + + method Action clear; + enqP[1] <= 0; + deqP[1] <= 0; + enqEn[1] <= True; + deqEn[1] <= False; + endmethod +endmodule + +// {notEmpty, first} < deq < search +// search CF {enq, notFull} +// search < clear +module mkPipelineSFifo#(function Bool isFound(t v, st k))(SFifo#(n, t, st)) provisos(Bits#(t, tSz), Add#(n, 1, n1), Log#(n1, sz), Add#(sz, 1, sz1), Bits#(st, stz)); + Integer ni = valueOf(n); + Bit#(sz1) nb = fromInteger(ni); + Bit#(sz1) n2 = 2*nb; + Vector#(n, Reg#(t)) data <- replicateM(mkRegU); + Ehr#(3, Bit#(sz1)) enqP <- mkEhr(0); + Ehr#(2, Bit#(sz1)) deqP <- mkEhr(0); + + Bit#(sz1) cnt0 = enqP[0] >= deqP[0]? enqP[0] - deqP[0]: + (enqP[0]%nb + nb) - deqP[0]%nb; + Bit#(sz1) cnt1 = enqP[0] >= deqP[1]? enqP[0] - deqP[1]: + (enqP[0]%nb + nb) - deqP[1]%nb; + + method Bool notFull = cnt1 < nb; + + method Action enq(t x) if(cnt1 < nb); + enqP[0] <= (enqP[0] + 1)%n2; + data[enqP[0]%nb] <= x; + endmethod + + method Bool notEmpty = cnt0 != 0; + + method Action deq if(cnt0 != 0); + deqP[0] <= (deqP[0] + 1)%n2; + endmethod + + method t first if(cnt0 != 0); + return data[deqP[0]%nb]; + endmethod + + method Bool search(st s); + Bool ret = False; + for(Bit#(sz1) i = 0; i < nb; i = i + 1) + begin + let ptr = (deqP[1] + i)%nb; + if(isFound(data[ptr], s) && i < cnt1) + ret = True; + end + return ret; + endmethod + + method Action clear; + enqP[2] <= 0; + deqP[1] <= 0; + endmethod +endmodule + +// Searchable Count FIFO has an extra search method which returns the count of the number of elements found +interface SCountFifo#(numeric type n, type t, type st); + method Bool notFull; + method Action enq(t x); + method Bool notEmpty; + method Action deq; + method Bit#(TLog#(TAdd#(n, 1))) search(st s); + method t first; + method Action clear; +endinterface + +// search is conflict-free with {enq, deq, first, notFull, notEmpty} +// search < clear < canonicalize +module mkCFSCountFifo#(function Bool isFound(t v, st k))(SCountFifo#(n, t, st)) provisos(Bits#(t, tSz), Add#(n, 1, n1), Log#(n1, sz), Add#(sz, 1, sz1)); + Integer ni = valueOf(n); + Bit#(sz1) nb = fromInteger(ni); + Bit#(sz1) n2 = 2*nb; + Vector#(n, Reg#(t)) data <- replicateM(mkRegU); + Ehr#(3, Bit#(sz1)) enqP <- mkEhr(0); + Ehr#(3, Bit#(sz1)) deqP <- mkEhr(0); + Ehr#(3, Bool) enqEn <- mkEhr(True); + Ehr#(3, Bool) deqEn <- mkEhr(False); + Ehr#(2, t) tempData <- mkEhr(?); + Ehr#(2, Maybe#(Bit#(sz1))) tempEnqP <- mkEhr(Invalid); + Ehr#(2, Maybe#(Bit#(sz1))) tempDeqP <- mkEhr(Invalid); + + Bit#(sz1) cnt0 = enqP[0] >= deqP[0]? enqP[0] - deqP[0]: + (enqP[0]%nb + nb) - deqP[0]%nb; + Bit#(sz1) cnt2 = enqP[2] >= deqP[2]? enqP[2] - deqP[2]: + (enqP[2]%nb + nb) - deqP[2]%nb; + rule canonicalize; + if(!enqEn[2] && cnt2 != nb) enqEn[2] <= True; + if(!deqEn[2] && cnt2 != 0) deqEn[2] <= True; + + if(isValid(tempEnqP[1])) + begin + data[validValue(tempEnqP[1])] <= tempData[1]; + tempEnqP[1] <= Invalid; + end + + if(isValid(tempDeqP[1])) + begin + deqP[0] <= validValue(tempDeqP[1]); + tempDeqP[1] <= Invalid; + end + endrule + + method Bool notFull = enqEn[0]; + + method Action enq(t x) if(enqEn[0]); + tempData[0] <= x; + tempEnqP[0] <= Valid (enqP[0]%nb); + enqP[0] <= (enqP[0] + 1)%n2; + enqEn[0] <= False; + endmethod + + method Bool notEmpty = deqEn[0]; + + method Action deq if(deqEn[0]); + tempDeqP[0] <= Valid ((deqP[0] + 1)%n2); + deqEn[0] <= False; + endmethod + + method t first if(deqEn[0]); + return data[deqP[0]%nb]; + endmethod + + method Bit#(TLog#(TAdd#(n, 1))) search(st s); + Bit#(TLog#(TAdd#(n, 1))) ret = 0; + for(Bit#(sz1) i = 0; i < nb; i = i + 1) + begin + let ptr = (deqP[0] + i)%nb; + if(isFound(data[ptr], s) && i < cnt0) + ret = ret + 1; + end + return ret; + endmethod + + method Action clear; + enqP[1] <= 0; + deqP[1] <= 0; + enqEn[1] <= True; + deqEn[1] <= False; + endmethod +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/Fpu.bsv b/src_Core/RISCY_OOO/procs/lib/Fpu.bsv new file mode 100644 index 0000000..f98ac95 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Fpu.bsv @@ -0,0 +1,892 @@ + +// Copyright (c) 2016, 2017 Massachusetts Institute of Technology + +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +// Fpu.bsv +// This file contains modules needed for hardware floating-point arithmetic. +// The FpuExec module abstracts away the ISA implementation simplifying the +// requirements for the hardware FPU units. + +import BuildVector::*; +import Types::*; +import ProcTypes::*; +import FIFO::*; +import FIFOF::*; +import ClientServer::*; +import GetPut::*; +import Divide::*; +import SquareRoot::*; +import FloatingPoint::*; +import XilinxFpu::*; +import HasSpecBits::*; +import SpecFifo::*; +import SpecPoisonFifo::*; + +export FpuResult(..); +export FpuResp(..); +export FpuExec(..); +export mkFpuExecPipeline; + +typedef FloatingPoint::RoundMode FpuRoundMode; +typedef FloatingPoint::Exception FpuException; + +function FloatingPoint#(e,m) canonicalNaN = FloatingPoint{sign: False, exp: '1, sfd: 1 << (valueof(m)-1)}; + +typedef struct { + Data data; + Bit#(5) fflags; +} FpuResult deriving(Bits, Eq, FShow); + +typedef struct { + FpuResult res; + Maybe#(PhyDst) dst; + InstTag tag; + // spec bits is not used in later stage, so not included here +} FpuResp deriving(Bits, Eq, FShow); + +interface FpuExec; + // input req + method Action exec(FpuInst fpu_inst, Data rVal1, Data rVal2, Data rVal3, + Maybe#(PhyDst) dst, InstTag tag, SpecBits specBits); + // output + method ActionValue#(FpuResp) simpleResp; + method ActionValue#(FpuResp) fmaResp; + method ActionValue#(FpuResp) divResp; + method ActionValue#(FpuResp) sqrtResp; + // speculation + interface SpeculationUpdate specUpdate; +endinterface + +(* synthesize *) +module mkDoubleDiv(Server#(Tuple3#(Double, Double, FpuRoundMode), Tuple2#(Double, FpuException))); +`ifdef USE_XILINX_FPU + let fpu <- mkXilinxFpDiv; +`else + let int_div <- mkDivider(1); // [sizhuo] size in RVFpu: 2 + let fpu <- mkFloatingPointDivider(int_div); +`endif + return fpu; +endmodule + +(* synthesize *) +module mkDoubleSqrt(Server#(Tuple2#(Double, FpuRoundMode), Tuple2#(Double, FpuException))); +`ifdef USE_XILINX_FPU + let fpu <- mkXilinxFpSqrt; +`else + let int_sqrt <- mkSquareRooter(1); // [sizhuo] size in RVFpu: 3 + let fpu <- mkFloatingPointSquareRooter(int_sqrt); +`endif + return fpu; +endmodule + +// Bluespec FMA is a + b * c, and we have wrap Xilinx FMA also into this form +(* synthesize *) +module mkDoubleFMA(Server#(Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode), Tuple2#(Double, FpuException))); +`ifdef USE_XILINX_FPU + let fpu <- mkXilinxFpFma; +`else + let fpu <- mkFloatingPointFusedMultiplyAccumulate; +`endif + return fpu; +endmodule + +// wrap FMA to an adder +function Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode) getAddReqToFma(Tuple3#(Double, Double, FpuRoundMode) x); + let in1 = tpl_1(x); + let in2 = tpl_2(x); + let rm = tpl_3(x); + Double one_const = one(False); + return tuple4(tagged Valid in1, in2, one_const, rm); +endfunction + +// wrap FMA to a multiplier +function Tuple4#(Maybe#(Double), Double, Double, FpuRoundMode) getMulReqToFma(Tuple3#(Double, Double, FpuRoundMode) x); + let in1 = tpl_1(x); + let in2 = tpl_2(x); + let rm = tpl_3(x); + return tuple4(tagged Invalid, in1, in2, rm); +endfunction + +// FCVT float -> float functions +function Tuple2#(Double, FpuException) fcvt_d_s (Float in, FpuRoundMode rmode); + return convert(in, rmode, True); +endfunction +function Tuple2#(Float, FpuException) fcvt_s_d (Double in, FpuRoundMode rmode); + return convert(in, rmode, True); +endfunction + +// FCVT float -> int functions +function Tuple2#(Bit#(64), FpuException) fcvt_l_f (FloatingPoint#(e,m) in, FpuRoundMode rmode); + return float_to_int(in, False, False, rmode); +endfunction +function Tuple2#(Bit#(64), FpuException) fcvt_lu_f (FloatingPoint#(e,m) in, FpuRoundMode rmode); + return float_to_int(in, False, True, rmode); +endfunction +function Tuple2#(Bit#(64), FpuException) fcvt_w_f (FloatingPoint#(e,m) in, FpuRoundMode rmode); + return float_to_int(in, True, False, rmode); +endfunction +function Tuple2#(Bit#(64), FpuException) fcvt_wu_f (FloatingPoint#(e,m) in, FpuRoundMode rmode); + return float_to_int(in, True, True, rmode); +endfunction + +// FCVT int -> float functions +function Tuple2#(FloatingPoint#(e,m), FpuException) fcvt_f_l (Bit#(64) in_bits, FpuRoundMode rmode) + provisos (FixedFloatCVT#(FloatingPoint#(e, m), Int#(64))); + Int#(64) in = unpack(in_bits); + return vFixedToFloat(in, 1'b0, rmode); +endfunction +function Tuple2#(FloatingPoint#(e,m), FpuException) fcvt_f_lu (Bit#(64) in_bits, FpuRoundMode rmode) + provisos (FixedFloatCVT#(FloatingPoint#(e, m), UInt#(64))); + UInt#(64) in = unpack(in_bits); + return vFixedToFloat(in, 1'b0, rmode); +endfunction +function Tuple2#(FloatingPoint#(e,m), FpuException) fcvt_f_w (Bit#(64) in_bits, FpuRoundMode rmode) + provisos (FixedFloatCVT#(FloatingPoint#(e, m), Int#(32))); + Int#(32) in = unpack(truncate(in_bits)); + return vFixedToFloat(in, 1'b0, rmode); +endfunction +function Tuple2#(FloatingPoint#(e,m), FpuException) fcvt_f_wu (Bit#(64) in_bits, FpuRoundMode rmode) + provisos (FixedFloatCVT#(FloatingPoint#(e, m), UInt#(32))); + UInt#(32) in = unpack(truncate(in_bits)); + return vFixedToFloat(in, 1'b0, rmode); +endfunction + +function Tuple2#(Bit#(64), FpuException) fmin_s(Bit#(64) in1, Bit#(64) in2); + Float in1_f = unpack(in1[31:0]); + Float in2_f = unpack(in2[31:0]); + Float nan_f = qnan(); // canonical NAN + FpuException e = unpack(0); + + if (isSNaN(in1_f) || isSNaN(in2_f) || (isNaN(in1_f) && isNaN(in2_f))) begin + e.invalid_op = True; + return tuple2(zeroExtend(pack(nan_f)), e); + end else if (isNaN(in2_f)) begin + return tuple2(in1, e); + end else if (isNaN(in1_f)) begin + return tuple2(in2, e); + end else begin + let signLT = (in1_f.sign && !in2_f.sign); + let signEQ = in1_f.sign == in2_f.sign; + let absLT = {in1_f.exp, in1_f.sfd} < {in2_f.exp, in2_f.sfd}; + if (signLT || (signEQ && (in1_f.sign ? !absLT : absLT))) begin + return tuple2(in1, e); + end else begin + return tuple2(in2, e); + end + end +endfunction + +function Tuple2#(Bit#(64), FpuException) fmin_d(Bit#(64) in1, Bit#(64) in2); + Double in1_f = unpack(in1); + Double in2_f = unpack(in2); + Double nan_f = qnan(); // canonical NAN + FpuException e = unpack(0); + + if (isSNaN(in1_f) || isSNaN(in2_f) || (isNaN(in1_f) && isNaN(in2_f))) begin + e.invalid_op = True; + return tuple2(pack(nan_f), e); + end else if (isNaN(in2_f)) begin + return tuple2(in1, e); + end else if (isNaN(in1_f)) begin + return tuple2(in2, e); + end else begin + let signLT = (in1_f.sign && !in2_f.sign); + let signEQ = in1_f.sign == in2_f.sign; + let absLT = {in1_f.exp, in1_f.sfd} < {in2_f.exp, in2_f.sfd}; + if (signLT || (signEQ && (in1_f.sign ? !absLT : absLT))) begin + return tuple2(in1, e); + end else begin + return tuple2(in2, e); + end + end +endfunction + +function Tuple2#(Bit#(64), FpuException) fmax_s(Bit#(64) in1, Bit#(64) in2); + Float in1_f = unpack(in1[31:0]); + Float in2_f = unpack(in2[31:0]); + Float nan_f = qnan(); // canonical NAN + FpuException e = unpack(0); + + if (isSNaN(in1_f) || isSNaN(in2_f) || (isNaN(in1_f) && isNaN(in2_f))) begin + e.invalid_op = True; + return tuple2(zeroExtend(pack(nan_f)), e); + end else if (isNaN(in2_f)) begin + return tuple2(in1, e); + end else if (isNaN(in1_f)) begin + return tuple2(in2, e); + end else begin + let signGT = (!in1_f.sign && in2_f.sign); + let signEQ = in1_f.sign == in2_f.sign; + let absGT = {in1_f.exp, in1_f.sfd} > {in2_f.exp, in2_f.sfd}; + if (signGT || (signEQ && (in1_f.sign ? !absGT : absGT))) begin + return tuple2(in1, e); + end else begin + return tuple2(in2, e); + end + end +endfunction + +function Tuple2#(Bit#(64), FpuException) fmax_d(Bit#(64) in1, Bit#(64) in2); + Double in1_f = unpack(in1); + Double in2_f = unpack(in2); + Double nan_f = qnan(); // canonical NAN + FpuException e = unpack(0); + + if (isSNaN(in1_f) || isSNaN(in2_f) || (isNaN(in1_f) && isNaN(in2_f))) begin + e.invalid_op = True; + return tuple2(pack(nan_f), e); + end else if (isNaN(in2_f)) begin + return tuple2(in1, e); + end else if (isNaN(in1_f)) begin + return tuple2(in2, e); + end else begin + let signGT = (!in1_f.sign && in2_f.sign); + let signEQ = in1_f.sign == in2_f.sign; + let absGT = {in1_f.exp, in1_f.sfd} > {in2_f.exp, in2_f.sfd}; + if (signGT || (signEQ && (in1_f.sign ? !absGT : absGT))) begin + return tuple2(in1, e); + end else begin + return tuple2(in2, e); + end + end +endfunction + +function Tuple2#(Bit#(64), FpuException) float_to_int( + FloatingPoint#(e, m) in, Bool is_32bit, Bool is_unsigned, FpuRoundMode rmode +); + // 3 cases of exponents: + Bit#(64) out = 0; + Bit#(64) max_val = is_unsigned ? '1 : (is_32bit ? 64'h000000007FFFFFFF : 64'h7FFFFFFFFFFFFFFF); + Bit#(64) min_val = is_unsigned ? 0 : (is_32bit ? 64'hFFFFFFFF80000000 : 64'h8000000000000000); + + FpuException exc = unpack(0); + if (isNaN(in)) begin + out = max_val; + exc.invalid_op = True; + end else if (isInfinity(in)) begin + out = in.sign ? min_val : max_val; + exc.invalid_op = True; + end else if (isZero(in)) begin + out = 0; + end else begin + // Now actually do the conversion + Int#(TAdd#(e,TLog#(m))) bias_exp = fromInteger((2**(valueOf(e)-1))-1); + Int#(TAdd#(e,TLog#(m))) in_exp = unpack(zeroExtend(in.exp)); + // The bottom two bits of int_val will be fractional data. + // The bottom bit holds information about all bits with lesser + // significance that were shifted out - same for top bit - this is + // necessary for rounding and overflow detection. + Bit#(TAdd#(66,m)) int_val = {64'b1, in.sfd, 2'b0}; // this is 2**m times larger than it should be - we will shift this to correct for that + int_val = saturating_shift_right(int_val, fromInteger(valueOf(m)) + bias_exp - in_exp); + + // do rounding + // 00 : exact + // 01 : < 0.5 + // 10 : = 0.5 + // 11 : > 0.5 + Bool round_up = False; // by magnitude (default behavior will be drop bits) + if (int_val[1:0] != 0) begin + exc.inexact = True; + case (rmode) + Rnd_Nearest_Even: round_up = (int_val[1:0] == 2'b11) || ((int_val[1:0] == 2'b10) && (int_val[2] == 1)); + Rnd_Nearest_Away_Zero: round_up = (int_val[1] == 1); + Rnd_Plus_Inf: round_up = !in.sign; + Rnd_Minus_Inf: round_up = in.sign; + Rnd_Zero: round_up = False; + endcase + end + + // Take the integer part of int_val and round it up if necessary + Bit#(TAdd#(64,m)) int_val_rnd = truncateLSB(int_val) + (round_up ? 1 : 0); + // correct the output sign for negative numbers rounded to 0 + Bool out_sign = (int_val_rnd == 0) ? False : in.sign; + + // Now check to see if int_val_rnd is in range + Bit#(TAdd#(64,m)) mask_32bit = {0, 32'hFFFFFFFF}; + Bit#(TAdd#(64,m)) mask_64bit = {0, 64'hFFFFFFFFFFFFFFFF}; + if (is_unsigned) begin + if (out_sign) begin + // negative number - out of range + out = 0; + exc.invalid_op = True; + end else begin + // positive number + if (is_32bit) begin + // WU + if ((int_val_rnd & mask_32bit) == int_val_rnd) begin + Bit#(32) val = truncate(int_val_rnd); + out = signExtend(val); + end else begin + // out of range + out = '1; + exc.invalid_op = True; + end + end else begin + // LU + if ((int_val_rnd & mask_64bit) == int_val_rnd) begin + out = truncate(int_val_rnd); + end else begin + // out of range + out = '1; + exc.invalid_op = True; + end + end + end + end else begin + // signed + if (is_32bit) begin + // W + Bit#(32) max_val = out_sign ? 32'h80000000 : 32'h7FFFFFFF; + if (((int_val_rnd & mask_32bit) == int_val_rnd) && (truncate(int_val_rnd) <= max_val)) begin + Bit#(32) val = truncate(int_val_rnd); + val = out_sign ? ((~val) + 1) : val; + out = signExtend(val); + end else begin + // out of range + out = signExtend(max_val); + exc.invalid_op = True; + end + end else begin + // L + Bit#(64) max_val = out_sign ? 64'h8000000000000000 : 64'h7FFFFFFFFFFFFFFF; + if (((int_val_rnd & mask_64bit) == int_val_rnd) && (truncate(int_val_rnd) <= max_val)) begin + Bit#(64) val = truncate(int_val_rnd); + out = out_sign ? ((~val) + 1) : val; + end else begin + // out of range + out = max_val; + exc.invalid_op = True; + end + end + end + end + if (exc.invalid_op) begin + // by convention + exc.inexact = False; + end + return tuple2(out, exc); +endfunction + +function Bit#(n) saturating_shift_right(Bit#(n) in, Int#(m) amt) + provisos (Add#(a__,1,n)); + // This function saturates in each direction + Bool amt_sign = msb(amt) == 1; + Bit#(m) amt_abs = amt_sign ? ((~pack(amt))+1) : pack(amt); + Bit#(n) shifted = amt_sign ? (in << amt_abs) : (in >> amt_abs); + Bit#(n) shifted_out_mask = amt_sign ? ~('1 >> amt_abs) : ~('1 << amt_abs); + Bit#(1) saturated_bit = |(in & shifted_out_mask); + shifted = amt_sign ? (shifted | {saturated_bit, 0}) : (shifted | {0, saturated_bit}); + return shifted; +endfunction + +// exec function for simple operations +(* noinline *) +function FpuResult execFpuSimple(FpuInst fpu_inst, Data rVal1, Data rVal2); + FpuResult fpu_result = FpuResult{data: 0, fflags: 0}; + + // Convert the Risc-V RVRoundMode to FloatingPoint::RoundMode + FpuRoundMode fpu_rm = (case (fpu_inst.rm) + RNE: Rnd_Nearest_Even; + RTZ: Rnd_Zero; + RDN: Rnd_Minus_Inf; + RUP: Rnd_Plus_Inf; + RMM: Rnd_Nearest_Away_Zero; + RDyn: Rnd_Nearest_Even; + default: Rnd_Nearest_Even; + endcase); + + if (fpu_inst.precision == Single) begin + // single precision + Float in1 = unpack(rVal1[31:0]); + Float in2 = unpack(rVal2[31:0]); + Float dst = unpack(0); + Maybe#(Data) full_dst = Invalid; + FpuException e = unpack(0); + let fpu_f = fpu_inst.func; + // Fpu Decoding + case (fpu_f) + // combinational instructions + FMin: begin + Data x; + {x, e} = fmin_s(rVal1, rVal2); + full_dst = tagged Valid x; + end + FMax: begin + Data x; + {x, e} = fmax_s(rVal1, rVal2); + full_dst = tagged Valid x; + end + FEq: dst = unpack(zeroExtend(pack(compareFP(in1, in2) == EQ))); + FLt: begin + dst = unpack(zeroExtend(pack(compareFP(in1, in2) == LT))); + if (isNaN(in1) || isNaN(in2)) begin + e.invalid_op = True; + end + end + FLe: begin + dst = unpack(zeroExtend(pack((compareFP(in1, in2) == LT) || (compareFP(in1, in2) == EQ)))); + if (isNaN(in1) || isNaN(in2)) begin + e.invalid_op = True; + end + end + // CLASS functions + FClass: begin + Bool exp_0s = (in1.exp == 0); + Bool exp_1s = (in1.exp == '1); + Bool sfd_0s = (in1.sfd == 0); + Bit#(10) res = 0; + res[0] = pack(in1.sign && exp_1s && sfd_0s); // -inf + res[1] = pack(in1.sign && !exp_1s && !exp_0s); // -normal + res[2] = pack(in1.sign && exp_0s && !sfd_0s); // -subnormal + res[3] = pack(in1.sign && exp_0s && sfd_0s); // -0 + res[4] = pack(!in1.sign && exp_0s && sfd_0s); // +0 + res[5] = pack(!in1.sign && exp_0s && !sfd_0s); // +subnormal + res[6] = pack(!in1.sign && !exp_1s && !exp_0s); // +normal + res[7] = pack(!in1.sign && exp_1s && sfd_0s); // -inf + res[8] = pack(exp_1s && !sfd_0s && (msb(in1.sfd) == 0)); // signaling NaN + res[9] = pack(exp_1s && !sfd_0s && (msb(in1.sfd) == 1)); // quiet NaN + full_dst = tagged Valid zeroExtend(res); + end + // Sign Injection + FSgnj: begin + dst = in1; + dst.sign = in2.sign; + end + FSgnjn: begin + dst = in1; + dst.sign = !in2.sign; + end + FSgnjx: begin + dst = in1; + dst.sign = unpack(pack(in1.sign) ^ pack(in2.sign)); + end + // Float -> Bits + FMv_XF: full_dst = tagged Valid signExtend(pack(in1)); + // Bits -> Float + FMv_FX: full_dst = tagged Valid zeroExtend(pack(in1)); + // Float -> Float + FCvt_FF: begin + Double in1_double = unpack(rVal1); + {dst, e} = fcvt_s_d(in1_double, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + // Float -> Int + FCvt_WF: begin + Data dst_bits; + {dst_bits, e} = fcvt_w_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + FCvt_WUF: begin + Data dst_bits; + {dst_bits, e} = fcvt_wu_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + FCvt_LF: begin + Data dst_bits; + {dst_bits, e} = fcvt_l_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + FCvt_LUF: begin + Data dst_bits; + {dst_bits, e} = fcvt_lu_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + // Int -> Float + FCvt_FW: begin + {dst, e} = fcvt_f_w(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + FCvt_FWU: begin + {dst, e} = fcvt_f_wu(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + FCvt_FL: begin + {dst, e} = fcvt_f_l(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + FCvt_FLU: begin + {dst, e} = fcvt_f_lu(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + endcase + fpu_result.data = (full_dst matches tagged Valid .data ? data : zeroExtend(pack(dst))); + fpu_result.fflags = pack(e); + end else if (fpu_inst.precision == Double) begin + // double precision + Double in1 = unpack(rVal1); + Double in2 = unpack(rVal2); + Double dst = unpack(0); + Maybe#(Data) full_dst = Invalid; + FpuException e = unpack(0); + let fpu_f = fpu_inst.func; + // Fpu Decoding + case (fpu_f) + // combinational instructions + FMin: begin + Data x; + {x, e} = fmin_d(rVal1, rVal2); + full_dst = tagged Valid x; + end + FMax: begin + Data x; + {x, e} = fmax_d(rVal1, rVal2); + full_dst = tagged Valid x; + end + FEq: dst = unpack(zeroExtend(pack(compareFP(in1, in2) == EQ))); + FLt: begin + dst = unpack(zeroExtend(pack(compareFP(in1, in2) == LT))); + if (isNaN(in1) || isNaN(in2)) begin + e.invalid_op = True; + end + end + FLe: begin + dst = unpack(zeroExtend(pack((compareFP(in1, in2) == LT) || (compareFP(in1, in2) == EQ)))); + if (isNaN(in1) || isNaN(in2)) begin + e.invalid_op = True; + end + end + // CLASS functions + FClass: begin + Bool exp_0s = (in1.exp == 0); + Bool exp_1s = (in1.exp == '1); + Bool sfd_0s = (in1.sfd == 0); + Bit#(10) res = 0; + res[0] = pack(in1.sign && exp_1s && sfd_0s); // -inf + res[1] = pack(in1.sign && !exp_1s && !exp_0s); // -normal + res[2] = pack(in1.sign && exp_0s && !sfd_0s); // -subnormal + res[3] = pack(in1.sign && exp_0s && sfd_0s); // -0 + res[4] = pack(!in1.sign && exp_0s && sfd_0s); // +0 + res[5] = pack(!in1.sign && exp_0s && !sfd_0s); // +subnormal + res[6] = pack(!in1.sign && !exp_1s && !exp_0s); // +normal + res[7] = pack(!in1.sign && exp_1s && sfd_0s); // -inf + res[8] = pack(exp_1s && !sfd_0s && (msb(in1.sfd) == 0)); // signaling NaN + res[9] = pack(exp_1s && !sfd_0s && (msb(in1.sfd) == 1)); // quiet NaN + full_dst = tagged Valid zeroExtend(res); + end + // Sign Injection + FSgnj: begin + dst = in1; + dst.sign = in2.sign; + end + FSgnjn: begin + dst = in1; + dst.sign = !in2.sign; + end + FSgnjx: begin + dst = in1; + dst.sign = unpack(pack(in1.sign) ^ pack(in2.sign)); + end + // Float -> Bits + FMv_XF: full_dst = tagged Valid pack(in1); + // Bits -> Float + FMv_FX: full_dst = tagged Valid pack(in1); + // Float -> Float + FCvt_FF: begin + Float in1_float = unpack(rVal1[31:0]); + {dst, e} = fcvt_d_s(in1_float, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + // Float -> Int + FCvt_WF: begin + Data dst_bits; + {dst_bits, e} = fcvt_w_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + FCvt_WUF: begin + Data dst_bits; + {dst_bits, e} = fcvt_wu_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + FCvt_LF: begin + Data dst_bits; + {dst_bits, e} = fcvt_l_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + FCvt_LUF: begin + Data dst_bits; + {dst_bits, e} = fcvt_lu_f(in1, fpu_rm); + full_dst = tagged Valid dst_bits; + end + // Int -> Float + FCvt_FW: begin + {dst, e} = fcvt_f_w(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + FCvt_FWU: begin + {dst, e} = fcvt_f_wu(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + FCvt_FL: begin + {dst, e} = fcvt_f_l(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + FCvt_FLU: begin + {dst, e} = fcvt_f_lu(rVal1, fpu_rm); + if (isNaN(dst)) dst = canonicalNaN; + end + endcase + fpu_result.data = (full_dst matches tagged Valid .data ? data : pack(dst)); + fpu_result.fflags = pack(e); + end + return fpu_result; +endfunction + +// Spec FIFO in parallel with FP units. Div and Sqrt should not be frequent, so +// we use small FIFOs. FMA may be mroe frequent, so match its latency +typedef enum {Fma, Div, Sqrt} FpuFuncUnit deriving(Bits, Eq, FShow); +typedef struct { + // fpu inst specific + FpuRoundMode roundMode; + FpuPrecision precision; + FpuException exc_conv_in; // exception during convert single input to double + Bool negateResult; + // generic bookkeeping + Maybe#(PhyDst) dst; + InstTag tag; +} FpuExecInfo deriving(Bits, Eq, FShow); + +typedef SpecPoisonFifo#(n, FpuExecInfo) FpuExecQ#(numeric type n); +module mkFpuExecQ(FpuExecQ#(n)); + let m <- mkSpecPoisonFifo(True); // lazy enq + return m; +endmodule + +typedef FpuExecQ#(2) MinimumExecQ; +(* synthesize *) +module mkMinimumExecQ(MinimumExecQ); + let m <- mkFpuExecQ; + return m; +endmodule + +typedef FpuExecQ#(`BOOKKEEPING_FP_FMA_SIZE) FmaExecQ; +(* synthesize *) +module mkFmaExecQ(FmaExecQ); + let m <- mkFpuExecQ; + return m; +endmodule + +// for simple ops that do not go to func units, we have a respQ for them +typedef SpecFifo_SB_deq_enq_C_deq_enq#(2, FpuResp) SimpleRespQ; +(* synthesize *) +module mkSimpleRespQ(SimpleRespQ); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(True); // lazy enq + return m; +endmodule + +// don't synthesize to optimize guard for exec method +module mkFpuExecPipeline(FpuExec); + // simple req that can be done combinationally + let simpleQ <- mkSimpleRespQ; + // spec fifos in parallel with each func unit + let fmaQ <- mkFmaExecQ; + let divQ <- mkMinimumExecQ; + let sqrtQ <- mkMinimumExecQ; + + // Pipelined units + let double_fma <- mkDoubleFMA; + let double_div <- mkDoubleDiv; + let double_sqrt <- mkDoubleSqrt; + + // post processing of results that come out of function unit + function FpuResp finalizeResp(FpuExecInfo info, Double out, FpuException exc_op); + FpuResult res; + if(info.precision == Single) begin + // convert out back to single + let {out_f, exc_conv_out} = fcvt_s_d(out, info.roundMode); + // negate result if needed + if(info.negateResult) begin + out_f = -out_f; + end + // canonicalize NaN + out_f = isNaN(out_f) ? canonicalNaN : out_f; + res = FpuResult { + data: zeroExtend(pack(out_f)), + fflags: pack(info.exc_conv_in | exc_op | exc_conv_out) + }; + end + else begin + // no convert is needed + // negate result if needed + if(info.negateResult) begin + out = -out; + end + // canonicalize NaN + out = isNaN(out) ? canonicalNaN : out; + res = FpuResult { + data: pack(out), + fflags: pack(exc_op) // info.exc_conv_in should be 0 + }; + end + return FpuResp { + res: res, + dst: info.dst, + tag: info.tag + }; + endfunction + + // drain poisoned insts + rule deqFmaPoisoned(fmaQ.first_poisoned); + fmaQ.deq; + let x <- double_fma.response.get; + endrule + rule deqDivPoisoned(divQ.first_poisoned); + divQ.deq; + let x <- double_div.response.get; + endrule + rule deqSqrtPoisoned(sqrtQ.first_poisoned); + sqrtQ.deq; + let x <- double_sqrt.response.get; + endrule + + method Action exec(FpuInst fpu_inst, Data rVal1, Data rVal2, Data rVal3, + Maybe#(PhyDst) dst, InstTag tag, SpecBits spec_bits); + // Convert the Risc-V RVRoundMode to FloatingPoint::RoundMode + FpuRoundMode fpu_rm = (case (fpu_inst.rm) + RNE: Rnd_Nearest_Even; + RTZ: Rnd_Zero; + RDN: Rnd_Minus_Inf; + RUP: Rnd_Plus_Inf; + RMM: Rnd_Nearest_Away_Zero; + RDyn: Rnd_Nearest_Even; + default: Rnd_Nearest_Even; + endcase); + + // convert float inputs to double: may have exceptions + FpuException exc_conv = unpack(0); + Double in1 = unpack(rVal1); + Double in2 = unpack(rVal2); + Double in3 = unpack(rVal3); + if (fpu_inst.precision == Single) begin + // conver single to double + Float f1 = unpack(rVal1[31:0]); + Float f2 = unpack(rVal2[31:0]); + Float f3 = unpack(rVal3[31:0]); + let {d1, exc1} = fcvt_d_s(f1, fpu_rm); + let {d2, exc2} = fcvt_d_s(f2, fpu_rm); + let {d3, exc3} = fcvt_d_s(f3, fpu_rm); + in1 = d1; + in2 = d2; + in3 = d3; + // get exception + case (fpu_inst.func) + FSqrt: begin + exc_conv = exc1; + end + FAdd, FSub, FMul, FDiv: begin + exc_conv = exc1 | exc2; + end + FMAdd, FMSub, FNMSub, FNMAdd: begin + exc_conv = exc1 | exc2 | exc3; + end + endcase + end + + // request function unit + case (fpu_inst.func) + FAdd: double_fma.request.put(getAddReqToFma(tuple3(in1, in2, fpu_rm))); + FSub: double_fma.request.put(getAddReqToFma(tuple3(in1, -in2, fpu_rm))); + FMul: double_fma.request.put(getMulReqToFma(tuple3(in1, in2, fpu_rm))); + FDiv: double_div.request.put(tuple3(in1, in2, fpu_rm)); + FSqrt: double_sqrt.request.put(tuple2(in1, fpu_rm)); + // Bluespec FMA(a, b, c) is a + b * c, RISC-V ISA needs in1 * + // in2 + in3, so we need to shuffle the inputs + FMAdd: double_fma.request.put(tuple4(tagged Valid in3, in1, in2, fpu_rm)); + FMSub: double_fma.request.put(tuple4(tagged Valid (-in3), in1, in2, fpu_rm)); + FNMSub: double_fma.request.put(tuple4(tagged Valid (-in3), in1, in2, fpu_rm)); + FNMAdd: double_fma.request.put(tuple4(tagged Valid in3, in1, in2, fpu_rm)); + endcase + + // enq to spec fifo + let info = FpuExecInfo { + roundMode: fpu_rm, + precision: fpu_inst.precision, + exc_conv_in: exc_conv, + negateResult: fpu_inst.func == FNMSub || fpu_inst.func == FNMAdd, + dst: dst, + tag: tag + }; + case (fpu_inst.func) + FAdd, FSub, FMul, FMAdd, FMSub, FNMSub, FNMAdd: begin + fmaQ.enq(ToSpecFifo { + data: info, + spec_bits: spec_bits + }); + end + FDiv: begin + divQ.enq(ToSpecFifo { + data: info, + spec_bits: spec_bits + }); + end + FSqrt: begin + sqrtQ.enq(ToSpecFifo{ + data: info, + spec_bits: spec_bits + }); + end + default: begin + // simple ops that can be directly handled + FpuResult fpu_result = execFpuSimple(fpu_inst, rVal1, rVal2); + simpleQ.enq(ToSpecFifo { + data: FpuResp { + res: fpu_result, + dst: dst, + tag: tag + }, + spec_bits: spec_bits + }); + end + endcase + endmethod + + method ActionValue#(FpuResp) simpleResp; + simpleQ.deq; + return simpleQ.first.data; + endmethod + + method ActionValue#(FpuResp) fmaResp if(!fmaQ.first_poisoned); + fmaQ.deq; + let {out, exc} <- double_fma.response.get; + return finalizeResp(fmaQ.first_data.data, out, exc); + endmethod + + method ActionValue#(FpuResp) divResp if(!divQ.first_poisoned); + divQ.deq; + let {out, exc} <- double_div.response.get; + return finalizeResp(divQ.first_data.data, out, exc); + endmethod + + method ActionValue#(FpuResp) sqrtResp if(!sqrtQ.first_poisoned); + sqrtQ.deq; + let {out, exc} <- double_sqrt.response.get; + return finalizeResp(sqrtQ.first_data.data, out, exc); + endmethod + + interface specUpdate = joinSpeculationUpdate(vec( + simpleQ.specUpdate, + fmaQ.specUpdate, + divQ.specUpdate, + sqrtQ.specUpdate + )); +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/FullAssocTlb.bsv b/src_Core/RISCY_OOO/procs/lib/FullAssocTlb.bsv new file mode 100644 index 0000000..33350e3 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/FullAssocTlb.bsv @@ -0,0 +1,189 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import Ehr::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; + +typedef struct { + Bool hit; + indexT index; // hit index, for later update LRU info + TlbEntry entry; // hit entry +} FullAssocTlbResp#(type indexT) deriving(Bits, Eq, FShow); + +// flush preempts addEntry and (translate + updateRepByHit) +// addEntry C (translate + updateRepByHit) +// This avoids bypass from addEntry to translate, and avoids races on LRU bits + +// translate CF updateRepByHit. +// updateRepByHit is separted from translate to avoid making translate an +// actionvalue method which may create potential guard lifting problems. + +interface FullAssocTlb#(numeric type n); + method Action flush; + method FullAssocTlbResp#(Bit#(TLog#(n))) translate(Vpn vpn, Asid asid); + method Action updateRepByHit(Bit#(TLog#(n)) index); // update replacement info when hit + method Action addEntry(TlbEntry x); +endinterface + +module mkFullAssocTlb#( + Bool randRep // introduce randomness in bit LRU replacement +)(FullAssocTlb#(tlbSz)) provisos( + Add#(1, a__, tlbSz), + Alias#(tlbIdxT, Bit#(TLog#(tlbSz))) +); + Vector#(tlbSz, Reg#(Bool)) validVec <- replicateM(mkReg(False)); + Vector#(tlbSz, Reg#(TlbEntry)) entryVec <- replicateM(mkRegU); + + // bit-LRU replacement. To reduce cycle time, we update LRU bits in the + // next cycle after we touch an entry. However, when we have two + // consecutive cycles inserting new entries, the latter insertion should + // see the updates to LRU bits made by the former insertion; otherwise the + // latter will insert to the same slot as the former one. + Ehr#(2, Bit#(tlbSz)) lruBit <- mkEhr(0); + Reg#(Bit#(tlbSz)) lruBit_upd = lruBit[0]; // write + Reg#(Bit#(tlbSz)) lruBit_add = lruBit[1]; // read + // reg as 1 cycle delay for update LRU + Ehr#(2, Maybe#(tlbIdxT)) updRepIdx <- mkEhr(Invalid); + Reg#(Maybe#(tlbIdxT)) updRepIdx_deq = updRepIdx[0]; + Reg#(Maybe#(tlbIdxT)) updRepIdx_enq = updRepIdx[1]; + // randomly choose an LRU idx at replacement time + Reg#(tlbIdxT) randIdx <- mkReg(0); + if(randRep) begin + rule incRandIdx; + randIdx <= randIdx + 1; + endrule + end + + // fire signal for flush + PulseWire flushEn <- mkPulseWire; + + rule doUpdateRep(!flushEn &&& updRepIdx_deq matches tagged Valid .idx); + updRepIdx_deq <= Invalid; + // update LRU bits + Bit#(tlbSz) val = lruBit_upd; + val[idx] = 1; + if(val == maxBound) begin + val = 0; + val[idx] = 1; + end + lruBit_upd <= val; + endrule + + // function to match TLB entry + method Action flush; + writeVReg(validVec, replicate(False)); + // also reset LRU bits + lruBit_upd <= 0; + updRepIdx_deq <= Invalid; + // record fire signal + flushEn.send; + endmethod + + method FullAssocTlbResp#(tlbIdxT) translate(Vpn vpn, Asid asid) if(!flushEn); + // find the matching entry + function Bool isMatch(tlbIdxT i); + TlbEntry entry = entryVec[i]; + Bool asidMatch = entry.asid == asid || entry.pteType.global; + Bool vpnMatch = getMaskedVpn(vpn, entry.level) == entry.vpn; + return validVec[i] && asidMatch && vpnMatch; + endfunction + Vector#(tlbSz, tlbIdxT) idxVec = genWith(fromInteger); + if(find(isMatch, idxVec) matches tagged Valid .idx) begin + // hit a TLB entry, get its content + return FullAssocTlbResp { + hit: True, + index: idx, + entry: entryVec[idx] + }; + end + else begin // miss + return FullAssocTlbResp { + hit: False, + index: ?, + entry: ? + }; + end + endmethod + + method Action updateRepByHit(tlbIdxT index) if(!flushEn && updRepIdx_enq == Invalid); + updRepIdx_enq <= Valid (index); + endmethod + + method Action addEntry(TlbEntry x) if(!flushEn && updRepIdx_enq == Invalid); + // check ppn and vpn lower bits are 0 for super pages + doAssert(x.ppn == getMaskedPpn(x.ppn, x.level), "ppn lower bits not 0"); + doAssert(x.vpn == getMaskedVpn(x.vpn, x.level), "vpn lower bits not 0"); + + // first check if the entry already exists in TLB, this can happen + // because we may have multiple misses on the same TLB entry. Since + // lower bits of ppn/vpn of super pages in TLB should have been zeroed, + // we can directly compare the full addr. + function Bool sameEntry(tlbIdxT i); + let en = entryVec[i]; + Bool same_page = en.vpn == x.vpn && + en.level == x.level && + en.asid == x.asid && + en.pteType.global == x.pteType.global; + return validVec[i] && same_page; + endfunction + Vector#(tlbSz, tlbIdxT) idxVec = genWith(fromInteger); + if(any(sameEntry, idxVec)) begin + // entry exists, update LRU + //updRepIdx_enq <= Valid (idx); + // FIXME: when I try to use find() to find the index, the + // compilation just explodes... + noAction; + end + else begin + // find a slot for this translation + // Since TLB is read-only cache, we can silently evict + tlbIdxT addIdx; + if(findIndex( \== (False) , readVReg(validVec) ) matches tagged Valid .idx) begin + // get empty slot + addIdx = pack(idx); + end + else begin + // find LRU slot (lruBit[i] = 0 means i is LRU slot) + Vector#(tlbSz, Bool) isLRU = unpack(~lruBit_add); + if(randRep && isLRU[randIdx]) begin + addIdx = randIdx; + end + else if(findIndex(id, isLRU) matches tagged Valid .idx) begin + addIdx = pack(idx); + end + else begin + addIdx = 0; // this is actually impossible + doAssert(False, "must have at least 1 LRU slot"); + end + end + // update slot + validVec[addIdx] <= True; + entryVec[addIdx] <= x; + // update LRU bits + updRepIdx_enq <= Valid (addIdx); + end + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/GSelectPred.bsv b/src_Core/RISCY_OOO/procs/lib/GSelectPred.bsv new file mode 100644 index 0000000..fa6490c --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/GSelectPred.bsv @@ -0,0 +1,144 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import RegFile::*; +import Ehr::*; +import Vector::*; +import GlobalBrHistReg::*; +import BrPred::*; + +export GSelectGHistSz; +export GSelectGHist; +export GSelectTrainInfo; +export mkGSelectPred; + +// 1KB gselect predictor + +typedef 8 GSelectGHistSz; +typedef 4 PCIndexSz; + +typedef Bit#(GSelectGHistSz) GSelectGHist; + +typedef TAdd#(GSelectGHistSz, PCIndexSz) BhtIndexSz; +typedef Bit#(BhtIndexSz) BhtIndex; + +// bookkeeping info a branch should keep for future training +typedef struct { + GSelectGHist gHist; +} GSelectTrainInfo deriving(Bits, Eq, FShow); + +// global history +typedef GlobalBrHistReg#(GSelectGHistSz) GSelectGHistReg; + +(* synthesize *) +module mkGSelectGHistReg(GSelectGHistReg); + let m <- mkGlobalBrHistReg; + return m; +endmodule + +(* synthesize *) +module mkGSelectPred(DirPredictor#(GSelectTrainInfo)); + // sat counter table + RegFile#(BhtIndex, Bit#(2)) tab <- mkRegFileWCF(0, maxBound); + + // global branch history + GSelectGHistReg globalHist <- mkGSelectGHistReg; + + // EHR to record predict results in this cycle + Ehr#(TAdd#(1, SupSize), Bit#(TLog#(TAdd#(SupSize, 1)))) predCnt <- mkEhr(0); + Ehr#(TAdd#(1, SupSize), Bit#(SupSize)) predRes <- mkEhr(0); + + function BhtIndex getIndex(Addr pc, GSelectGHist gHist); + Bit#(PCIndexSz) pcIdx = truncate(pc >> 2); + return {gHist, pcIdx}; + endfunction + + function Bool isTaken(Bit#(2) cnt); + return cnt[1] == 1; + endfunction + + function Bit#(2) updateCnt(Bit#(2) cnt, Bool taken); + if(taken) begin + return cnt == maxBound ? maxBound : cnt + 1; + end + else begin + return cnt == 0 ? 0 : cnt - 1; + end + endfunction + + GSelectGHist curGHist = globalHist.history; // global history: MSB is the latest branch + + Vector#(SupSize, DirPred#(GSelectTrainInfo)) predIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + predIfc[i] = (interface DirPred; + method ActionValue#(DirPredResult#(GSelectTrainInfo)) pred(Addr pc); + // get the global history + // all previous branch in this cycle must be not taken + // otherwise this branch should be on wrong path + // because all inst in same cycle are fetched consecutively + GSelectGHist gHist = curGHist >> predCnt[i]; + Bool taken = isTaken(tab.sub(getIndex(pc, gHist))); + + // record pred result + predCnt[i] <= predCnt[i] + 1; + Bit#(SupSize) res = predRes[i]; + res[predCnt[i]] = pack(taken); + predRes[i] <= res; + + // return + return DirPredResult { + taken: taken, + train: GSelectTrainInfo { + gHist: gHist + } + }; + endmethod + endinterface); + end + + (* fire_when_enabled, no_implicit_conditions *) + rule canonGlobalHist; + globalHist.addHistory(predRes[valueof(SupSize)], predCnt[valueof(SupSize)]); + predRes[valueof(SupSize)] <= 0; + predCnt[valueof(SupSize)] <= 0; + endrule + + interface pred = predIfc; + + method Action update(Addr pc, Bool taken, GSelectTrainInfo train, Bool mispred); + // update history if mispred + if(mispred) begin + GSelectGHist newHist = truncate({pack(taken), train.gHist} >> 1); + globalHist.redirect(newHist); + end + // update sat cnt + let index = getIndex(pc, train.gHist); + Bit#(2) cnt = tab.sub(index); + tab.upd(index, updateCnt(cnt, taken)); + endmethod + + method flush = noAction; + method flush_done = True; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/GSharePred.bsv b/src_Core/RISCY_OOO/procs/lib/GSharePred.bsv new file mode 100644 index 0000000..bd48ad9 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/GSharePred.bsv @@ -0,0 +1,144 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import RegFile::*; +import Ehr::*; +import Vector::*; +import GlobalBrHistReg::*; +import BrPred::*; + +export GShareGHistSz; +export GShareGHist; +export GShareTrainInfo; +export mkGSharePred; + +// 16KB gshare predictor (to match BOOM evaluation paper) + +typedef 8 GShareGHistSz; +typedef GShareGHistSz PCIndexSz; + +typedef Bit#(GShareGHistSz) GShareGHist; + +typedef GShareGHistSz BhtIndexSz; +typedef Bit#(BhtIndexSz) BhtIndex; + +// bookkeeping info a branch should keep for future training +typedef struct { + GShareGHist gHist; +} GShareTrainInfo deriving(Bits, Eq, FShow); + +// global history +typedef GlobalBrHistReg#(GShareGHistSz) GShareGHistReg; + +(* synthesize *) +module mkGShareGHistReg(GShareGHistReg); + let m <- mkGlobalBrHistReg; + return m; +endmodule + +(* synthesize *) +module mkGSharePred(DirPredictor#(GShareTrainInfo)); + // sat counter table + RegFile#(BhtIndex, Bit#(2)) tab <- mkRegFileWCF(0, maxBound); + + // global branch history + GShareGHistReg globalHist <- mkGShareGHistReg; + + // EHR to record predict results in this cycle + Ehr#(TAdd#(1, SupSize), Bit#(TLog#(TAdd#(SupSize, 1)))) predCnt <- mkEhr(0); + Ehr#(TAdd#(1, SupSize), Bit#(SupSize)) predRes <- mkEhr(0); + + function BhtIndex getIndex(Addr pc, GShareGHist gHist); + Bit#(PCIndexSz) pcIdx = truncate(pc >> 2); + return gHist ^ pcIdx; + endfunction + + function Bool isTaken(Bit#(2) cnt); + return cnt[1] == 1; + endfunction + + function Bit#(2) updateCnt(Bit#(2) cnt, Bool taken); + if(taken) begin + return cnt == maxBound ? maxBound : cnt + 1; + end + else begin + return cnt == 0 ? 0 : cnt - 1; + end + endfunction + + GShareGHist curGHist = globalHist.history; // global history: MSB is the latest branch + + Vector#(SupSize, DirPred#(GShareTrainInfo)) predIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + predIfc[i] = (interface DirPred; + method ActionValue#(DirPredResult#(GShareTrainInfo)) pred(Addr pc); + // get the global history + // all previous branch in this cycle must be not taken + // otherwise this branch should be on wrong path + // because all inst in same cycle are fetched consecutively + GShareGHist gHist = curGHist >> predCnt[i]; + Bool taken = isTaken(tab.sub(getIndex(pc, gHist))); + + // record pred result + predCnt[i] <= predCnt[i] + 1; + Bit#(SupSize) res = predRes[i]; + res[predCnt[i]] = pack(taken); + predRes[i] <= res; + + // return + return DirPredResult { + taken: taken, + train: GShareTrainInfo { + gHist: gHist + } + }; + endmethod + endinterface); + end + + (* fire_when_enabled, no_implicit_conditions *) + rule canonGlobalHist; + globalHist.addHistory(predRes[valueof(SupSize)], predCnt[valueof(SupSize)]); + predRes[valueof(SupSize)] <= 0; + predCnt[valueof(SupSize)] <= 0; + endrule + + interface pred = predIfc; + + method Action update(Addr pc, Bool taken, GShareTrainInfo train, Bool mispred); + // update history if mispred + if(mispred) begin + GShareGHist newHist = truncate({pack(taken), train.gHist} >> 1); + globalHist.redirect(newHist); + end + // update sat cnt + let index = getIndex(pc, train.gHist); + Bit#(2) cnt = tab.sub(index); + tab.upd(index, updateCnt(cnt, taken)); + endmethod + + method flush = noAction; + method flush_done = True; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/GlobalBrHistReg.bsv b/src_Core/RISCY_OOO/procs/lib/GlobalBrHistReg.bsv new file mode 100644 index 0000000..862f1dc --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/GlobalBrHistReg.bsv @@ -0,0 +1,75 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; + +export GlobalBrHistReg(..); +export mkGlobalBrHistReg; + +interface GlobalBrHistReg#(numeric type histLen); + method Bit#(histLen) history; + // add new history: taken[0--num-1] are newly added history + // taken[num-1] is the latest branch + method Action addHistory(Bit#(SupSize) taken, Bit#(TLog#(TAdd#(SupSize, 1))) num); + method Action redirect(Bit#(histLen) newHist); +endinterface + +typedef struct { + Bit#(SupSize) taken; + Bit#(TLog#(TAdd#(SupSize, 1))) num; +} AddHistory deriving(Bits, Eq, FShow); + +module mkGlobalBrHistReg(GlobalBrHistReg#(histLen)); + // history reg: MSB is the most recent branch + Reg#(Bit#(histLen)) hist <- mkReg(0); + + // wires to change history + RWire#(AddHistory) addHist <- mkRWire; // used by addHistory + RWire#(Bit#(histLen)) redirectHist <- mkRWire; // used by redirect + + (* fire_when_enabled, no_implicit_conditions *) + rule canon_redirect(isValid(redirectHist.wget)); + hist <= validValue(redirectHist.wget); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule canon_addHistory(!isValid(redirectHist.wget) && isValid(addHist.wget)); + let x = validValue(addHist.wget); + // shift into hist from MSB + hist <= truncate({x.taken, hist} >> x.num); + endrule + + method history = hist; + + method Action addHistory(Bit#(SupSize) taken, Bit#(TLog#(TAdd#(SupSize, 1))) num); + addHist.wset(AddHistory { + taken: taken, + num: num + }); + endmethod + + method Action redirect(Bit#(histLen) newHist); + redirectHist.wset(newHist); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/GlobalSpecUpdate.bsv b/src_Core/RISCY_OOO/procs/lib/GlobalSpecUpdate.bsv new file mode 100644 index 0000000..f17bb98 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/GlobalSpecUpdate.bsv @@ -0,0 +1,102 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import ProcTypes::*; +import HasSpecBits::*; +import GetPut::*; +import Vector::*; +import ReorderBuffer::*; + +interface GlobalSpecUpdate#(numeric type correctSpecPortNum, numeric type conflictWrongSpecPortNum); + interface Vector#(correctSpecPortNum, Put#(SpecTag)) correctSpec; + method Action incorrectSpec(Bool kill_all, SpecTag spec_tag, InstTag inst_tag); + // Some rules (e.g. doFinishFpuMulDiv) in Core.bsv may not conflict with wrong spec + // and is ordered before rules that calls incorrectSpec + // this creates cycles in scheduling + // To break the cycle, such rules can call the following interface + // to manually create a conflict with rules that do incorrectSpec + interface Vector#(conflictWrongSpecPortNum, Put#(void)) conflictWrongSpec; +endinterface + +module mkGlobalSpecUpdate#( + SpeculationUpdate ifc, ROB_SpeculationUpdate rob + // ROB is treatly separatly due to an optimization on killing +)( + GlobalSpecUpdate#(correctSpecPortNum, conflictWrongSpecPortNum) +); + // record correct spec tags + Vector#(correctSpecPortNum, RWire#(SpecTag)) correctSpecTag <- replicateM(mkRWire); + // make wrong spec conflict with correct spec + Vector#(correctSpecPortNum, RWire#(void)) spec_conflict <- replicateM(mkRWire); + // let the caller of conflictWrongSpec to be conflict with wrong spec + Vector#(conflictWrongSpecPortNum, RWire#(void)) wrongSpec_conflict <- replicateM(mkRWire); + + (* fire_when_enabled, no_implicit_conditions *) + rule canon_correct_spec; + SpecBits mask = maxBound; + for(Integer i = 0; i < valueof(correctSpecPortNum); i = i+1) begin + if(correctSpecTag[i].wget matches tagged Valid .tag) begin + mask[tag] = 0; + end + end + ifc.correctSpeculation(mask); + rob.correctSpeculation(mask); + endrule + + Vector#(correctSpecPortNum, Put#(SpecTag)) correctVec = ?; + for(Integer i = 0; i < valueof(correctSpecPortNum); i = i+1) begin + correctVec[i] = (interface Put; + method Action put(SpecTag t); + correctSpecTag[i].wset(t); + // conflict with wrong spec + spec_conflict[i].wset(?); + endmethod + endinterface); + end + + Vector#(conflictWrongSpecPortNum, Put#(void)) conflictWrongVec = ?; + for(Integer i = 0; i < valueof(conflictWrongSpecPortNum); i = i+1) begin + conflictWrongVec[i] = (interface Put; + method Action put(void x); + wrongSpec_conflict[i].wset(?); + endmethod + endinterface); + end + + interface correctSpec = correctVec; + + method Action incorrectSpec(Bool kill_all, SpecTag spec_tag, InstTag inst_tag); + ifc.incorrectSpeculation(kill_all, spec_tag); + rob.incorrectSpeculation(kill_all, spec_tag, inst_tag); + // conflict with correct spec + for(Integer i = 0; i < valueof(correctSpecPortNum); i = i+1) begin + spec_conflict[i].wset(?); + end + // conflict with the caller of conflictWrongSpec + for(Integer i = 0; i < valueof(conflictWrongSpecPortNum); i = i+1) begin + wrongSpec_conflict[i].wset(?); + end + endmethod + + interface conflictWrongSpec = conflictWrongVec; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/HasSpecBits.bsv b/src_Core/RISCY_OOO/procs/lib/HasSpecBits.bsv new file mode 100644 index 0000000..9aabdbe --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/HasSpecBits.bsv @@ -0,0 +1,48 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import ProcTypes::*; +import HList::*; // for Gettable typeclass +import Vector::*; + +// actions that can be applied to data structures +interface SpeculationUpdate; + method Action incorrectSpeculation(Bool kill_all, SpecTag kill_tag); + method Action correctSpeculation(SpecBits mask); // mask out corrected spec bits, i.e. sb <= sb & mask +endinterface + +function SpeculationUpdate joinSpeculationUpdate( Vector#(n, SpeculationUpdate) vec ); + return (interface SpeculationUpdate; + method Action incorrectSpeculation(Bool all, SpecTag tag); + for (Integer i = 0 ; i < valueOf(n) ; i = i+1) begin + vec[i].incorrectSpeculation(all, tag); + end + endmethod + method Action correctSpeculation(SpecBits mask); + for (Integer i = 0 ; i < valueOf(n) ; i = i+1) begin + vec[i].correctSpeculation(mask); + end + endmethod + endinterface); +endfunction + diff --git a/src_Core/RISCY_OOO/procs/lib/ITlb.bsv b/src_Core/RISCY_OOO/procs/lib/ITlb.bsv new file mode 100644 index 0000000..6c9d79c --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/ITlb.bsv @@ -0,0 +1,373 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import ClientServer::*; +import DefaultValue::*; +import GetPut::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; +import Performance::*; +import FullAssocTlb::*; +import ConfigReg::*; +import Fifo::*; +import Cntrs::*; +import SafeCounter::*; +import CacheUtils::*; +import LatencyTimer::*; + +// currently blocking +typedef `L1_TLB_SIZE ITlbSize; + +typedef struct { + Vpn vpn; +} ITlbRqToP deriving(Bits, Eq, FShow); + +typedef struct { + // may get page fault: i.e. hit invalid page or + // get non-leaf page at last-level page table + Maybe#(TlbEntry) entry; +} ITlbRsFromP deriving(Bits, Eq, FShow); + +interface ITlbToParent; + interface FifoDeq#(ITlbRqToP) rqToP; + interface FifoEnq#(ITlbRsFromP) rsFromP; + // after ITLB flush itself, it notifies L2, and wait L2 to flush + interface Client#(void, void) flush; +endinterface + +interface ITlb; + // system consistency related + method Bool flush_done; + method Action flush; + method Action updateVMInfo(VMInfo vm); + method Bool noPendingReq; + + // req/resp with core + interface Server#(Addr, TlbResp) to_proc; + + // req/resp with L2 TLB + interface ITlbToParent toParent; + + // performance + interface Perf#(L1TlbPerfType) perf; +endinterface + +typedef FullAssocTlb#(ITlbSize) ITlbArray; +module mkITlbArray(ITlbArray); + let m <- mkFullAssocTlb(True); // randomness in replacement + return m; +endmodule + +(* synthesize *) +module mkITlb(ITlb::ITlb); + Bool verbose = True; + + // TLB array + ITlbArray tlb <- mkITlbArray; + + // processor init flushing by setting this flag + Reg#(Bool) needFlush <- mkReg(False); + // after flushing ITLB itself, we want parent TLB to flush + Reg#(Bool) waitFlushP <- mkReg(False); + + // resp FIFO to proc + Fifo#(2, TlbResp) hitQ <- mkCFFifo; + + // current processor VM information + Reg#(VMInfo) vm_info <- mkReg(defaultValue); + + // blocking miss + Reg#(Maybe#(Addr)) miss <- mkReg(Invalid); + + // req & resp with parent TLB + Fifo#(2, ITlbRqToP) rqToPQ <- mkCFFifo; + Fifo#(2, ITlbRsFromP) rsFromPQ <- mkCFFifo; + // flush req/resp with parent TLB + Fifo#(1, void) flushRqToPQ <- mkCFFifo; + Fifo#(1, void) flushRsFromPQ <- mkCFFifo; + + // perf counters + Fifo#(1, L1TlbPerfType) perfReqQ <- mkCFFifo; +`ifdef PERF_COUNT + Fifo#(1, PerfResp#(L1TlbPerfType)) perfRespQ <- mkCFFifo; + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) accessCnt <- mkCount(0); + Count#(Data) missCnt <- mkCount(0); + Count#(Data) missLat <- mkCount(0); + + LatencyTimer#(2, 12) latTimer <- mkLatencyTimer; // max latency: 4K cycles + + rule doPerf; + let t <- toGet(perfReqQ).get; + Data d = (case(t) + L1TlbAccessCnt: (accessCnt); + L1TlbMissParentCnt: (missCnt); + L1TlbMissParentLat: (missLat); + default: (0); + endcase); + perfRespQ.enq(PerfResp { + pType: t, + data: d + }); + endrule +`endif + + // do flush: only start when all misses resolve + rule doStartFlush(needFlush && !waitFlushP && !isValid(miss)); + tlb.flush; + // request parent TLB to flush + flushRqToPQ.enq(?); + waitFlushP <= True; + if(verbose) $display("ITLB %m: flush begin"); + endrule + + rule doFinishFlush(needFlush && waitFlushP && !isValid(miss)); + flushRsFromPQ.deq; + needFlush <= False; + waitFlushP <= False; + if(verbose) $display("ITLB %m: flush done"); + endrule + + rule doRsFromP(miss matches tagged Valid .vaddr); + rsFromPQ.deq; + let pRs = rsFromPQ.first; + + if(pRs.entry matches tagged Valid .en) begin + // TODO when we have multiple misses in future. We first need to + // search TLB to check whether the PTE is already in TLB; this may + // happen for mega/giga pages. We don't want same PTE to occupy >1 + // TLB entires. + + // check permission + if(hasVMPermission(vm_info, + en.pteType, + en.ppn, + en.level, + InstFetch)) begin + // fill TLB and resp to proc + tlb.addEntry(en); + let trans_addr = translate(vaddr, en.ppn, en.level); + hitQ.enq(tuple2(trans_addr, Invalid)); + if(verbose) begin + $display("ITLB %m refill: ", fshow(vaddr), + " ; ", fshow(trans_addr)); + end + end + else begin + // page fault + hitQ.enq(tuple2(?, Valid (InstPageFault))); + if(verbose) begin + $display("ITLB %m refill no permission: ", fshow(vaddr)); + end + end + end + else begin + // page fault + hitQ.enq(tuple2(?, Valid (InstPageFault))); + if(verbose) $display("ITLB %m refill page fault: ", fshow(vaddr)); + end + // miss resolved + miss <= Invalid; + +`ifdef PERF_COUNT + let lat <- latTimer.done(0); + if(doStats) begin + missLat.incr(zeroExtend(lat)); + end +`endif + endrule + + // we check no pending req only at Commit when Fetch1 stage has been + // stalled (setWaitRedirect has been called in previous cycle). Note that + // Commit calls redirect method which is ordered after Fetch1, so checking + // no pending req cannot sequence before Fetch1 which calls iTlb.req. + // Therefore, we use a wire to catch the pending req a the beginning of the + // cycle. This does not matter because Fetch1 stage has been stalled. + Wire#(Bool) no_pending_wire <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule set_no_pending; + no_pending_wire <= !isValid(miss); + endrule + + method Action flush if(!needFlush); + needFlush <= True; + waitFlushP <= False; + // this won't interrupt current processing, since + // (1) miss process will continue even if needFlush=True + // (2) flush truly starts when there is no pending req + endmethod + + method Bool flush_done = !needFlush; + + method Action updateVMInfo(VMInfo vm); + vm_info <= vm; + endmethod + + method Bool noPendingReq = no_pending_wire._read; + + interface Server to_proc; + interface Put request; + // We do not accept new req when flushing flag is set. We also + // make the guard more restrictive to reduce the time of computing + // guard i.e. guard does not depend on whether TLB hit or miss + method Action put(Addr vaddr) if( + !needFlush && !isValid(miss) && hitQ.notFull && rqToPQ.notFull + ); +`ifdef SECURITY + // Security Check + // For non M-mode forbid translating any virtual pc outside of + // the protection domain. Be careful, in M mode we don't take + // into account the same vm_info: changing the evbase and + // evmask in M in en security monitor would lead to failure + // before we have a chance to go back to U: while in M mode + // sanctum_evbase is morally from an other set of CSR, which is + // constant and hardcoded in our implementation. + + // TODO TODO TODO TODO WARNING DANGER NO SECURITY HERE we need + // to replace sanctum_evbase and evmask with the actual fixed + // SM region + VMInfo parvm_info = vm_info; + VMInfo eparvm_info = vm_info; + parvm_info.sanctum_evbase = maxBound; + parvm_info.sanctum_evmask = 0; + eparvm_info.sanctum_evbase = maxBound; + eparvm_info.sanctum_evmask = 0; + if ((vm_info.prv == prvM ? (outOfProtectionDomain(parvm_info,vaddr) && outOfProtectionDomain(eparvm_info,vaddr)) : outOfProtectionDomain(vm_info, vaddr))) begin + hitQ.enq(tuple2(?, Valid (InstAccessFault))); + end +`else + // No security check + if (False) begin + noAction; + end +`endif + else if (vm_info.sv39) begin + let vpn = getVpn(vaddr); + let trans_result = tlb.translate(vpn, vm_info.asid); + if (trans_result.hit) begin + // TLB hit + let entry = trans_result.entry; + // check permission + if(hasVMPermission(vm_info, + entry.pteType, + entry.ppn, + entry.level, + InstFetch)) begin + // update replacement info + tlb.updateRepByHit(trans_result.index); + // translate addr + Addr trans_addr = translate( + vaddr, entry.ppn, entry.level + ); + hitQ.enq(tuple2(trans_addr, Invalid)); + if(verbose) begin + $display("ITLB %m req (hit): ", fshow(vaddr), + " ; ", fshow(trans_result)); + end + end + else begin + // page fault + hitQ.enq(tuple2(?, Valid (InstPageFault))); + if(verbose) begin + $display("ITLB %m req no permission: ", + fshow(vaddr)); + end + end + end + else begin + // TLB miss, req to parent TLB + miss <= Valid (vaddr); + rqToPQ.enq(ITlbRqToP {vpn: vpn}); + if(verbose) begin + $display("ITLB %m req (miss): ", fshow(vaddr)); + end +`ifdef PERF_COUNT + latTimer.start(0); + if(doStats) begin + missCnt.incr(1); + end +`endif + end + end + else begin + // bare mode, no translation + hitQ.enq(tuple2(vaddr, Invalid)); + if (verbose) $display("ITLB %m req (bare): ", fshow(vaddr)); + end + +`ifdef PERF_COUNT + if(doStats) begin + accessCnt.incr(1); + end +`endif + endmethod + endinterface + interface Get response = toGet(hitQ); + endinterface + + interface ITlbToParent toParent; + interface rqToP = toFifoDeq(rqToPQ); + interface rsFromP = toFifoEnq(rsFromPQ); + interface Client flush; + interface request = toGet(flushRqToPQ); + interface response = toPut(flushRsFromPQ); + endinterface + endinterface + + interface Perf perf; + method Action setStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Action req(L1TlbPerfType r); + perfReqQ.enq(r); + endmethod + + method ActionValue#(PerfResp#(L1TlbPerfType)) resp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + return PerfResp { + pType: perfReqQ.first, + data: 0 + }; +`endif + endmethod + + method Bool respValid; +`ifdef PERF_COUNT + return perfRespQ.notEmpty; +`else + return perfReqQ.notEmpty; +`endif + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/L1CoCache.bsv b/src_Core/RISCY_OOO/procs/lib/L1CoCache.bsv new file mode 100644 index 0000000..cd97b39 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/L1CoCache.bsv @@ -0,0 +1,434 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Vector::*; +import FIFO::*; +import ClientServer::*; +import GetPut::*; +import Assert::*; + +import CacheUtils::*; +import Types::*; +import ProcTypes::*; +import Performance::*; +import Fifo::*; +import CCTypes::*; +import L1Pipe::*; +import L1CRqMshr::*; +import L1PRqMshr::*; +import L1Bank::*; +import ICRqMshr::*; +import IPRqMshr::*; +import IBank::*; +import SelfInvL1Pipe::*; +import SelfInvL1Bank::*; +import SelfInvIPipe::*; +import SelfInvIBank::*; + +export L1Num; +export LgL1WayNum; +export L1WayNum; +export L1Way; + +export DProcReqId; +export L1DCRqStuck(..); +export L1DPRqStuck(..); +export DCoCache(..); +export mkDCoCache; + +export ISupSz; +export L1ICRqStuck(..); +export L1IPRqStuck(..); +export ICoCache(..); +export mkICoCache; + +// L1$: 1 I$ and 1 D$ +typedef TMul#(CoreNum, 2) L1Num; + +// Way num is shared among all coherent L1$ (I and D) +typedef `LOG_L1_WAYS LgL1WayNum; +typedef TExp#(LgL1WayNum) L1WayNum; +typedef Bit#(LgL1WayNum) L1Way; + + +//////// +// D$ // +//////// +typedef `LOG_L1_LINES LgDLineNum; +typedef 0 LgDBankNum; +typedef TSub#(LgDLineNum, TAdd#(LgDBankNum, LgL1WayNum)) LgDSetNum; + +typedef Bit#(LgDBankNum) DBankId; +typedef LgDSetNum DIndexSz; +typedef Bit#(DIndexSz) DIndex; +typedef GetTagSz#(LgDBankNum, LgDSetNum) DTagSz; +typedef Bit#(DTagSz) DTag; + +typedef L1WayNum DCRqNum; +typedef 4 DPRqNum; // match cache pipeline latency +typedef Bit#(TLog#(DCRqNum)) DCRqMshrIdx; +typedef Bit#(TLog#(DPRqNum)) DPRqMshrIdx; + +typedef Bit#(TMax#(SizeOf#(LdQTag), SizeOf#(SBIndex))) DProcReqId; + +(* synthesize *) +module mkDCRqMshrWrapper( + L1CRqMshr#(DCRqNum, L1Way, DTag, ProcRq#(DProcReqId)) +); + function Addr getAddrFromReq(ProcRq#(DProcReqId) r); + return r.addr; + endfunction + let m <- mkL1CRqMshr(getAddrFromReq); + return m; +endmodule + +(* synthesize *) +module mkDPRqMshrWrapper( + L1PRqMshr#(DPRqNum) +); + let m <- mkL1PRqMshr; + return m; +endmodule + + +`ifdef SELF_INV_CACHE + +typedef `L1D_MAX_HITS DMaxHitNum; + +(* synthesize *) +module mkDPipeline( + SelfInvL1Pipe#(LgDBankNum, L1WayNum, DMaxHitNum, DIndex, DTag, DCRqMshrIdx, DPRqMshrIdx) +); + let m <- mkSelfInvL1Pipe; + return m; +endmodule + +typedef SelfInvL1Bank#(LgDBankNum, L1WayNum, DIndexSz, DTagSz, DCRqNum, DPRqNum, DMaxHitNum, DProcReqId) DCacheWrapper; + +module mkDCacheWrapper#(L1ProcResp#(DProcReqId) procResp)(DCacheWrapper); + let m <- mkSelfInvL1Cache(mkDCRqMshrWrapper, mkDPRqMshrWrapper, mkDPipeline, procResp); + return m; +endmodule + +typedef SelfInvL1CRqStuck L1DCRqStuck; +typedef SelfInvL1PRqStuck L1DPRqStuck; + +`else // !SELF_INV_CACHE + +(* synthesize *) +module mkDPipeline( + L1Pipe#(LgDBankNum, L1WayNum, DIndex, DTag, DCRqMshrIdx, DPRqMshrIdx) +); + let m <- mkL1Pipe; + return m; +endmodule + +typedef L1Bank#(LgDBankNum, L1WayNum, DIndexSz, DTagSz, DCRqNum, DPRqNum, DProcReqId) DCacheWrapper; + +module mkDCacheWrapper#(L1ProcResp#(DProcReqId) procResp)(DCacheWrapper); + let m <- mkL1Cache(mkDCRqMshrWrapper, mkDPRqMshrWrapper, mkDPipeline, procResp); + return m; +endmodule + +typedef L1CRqStuck L1DCRqStuck; +typedef L1PRqStuck L1DPRqStuck; + +`endif // SELF_INV_CACHE + + +interface DCoCache; + interface L1ProcReq#(DProcReqId) procReq; + method Action flush; + method Bool flush_done; + method Action resetLinkAddr; + interface Perf#(L1DPerfType) perf; + + interface ChildCacheToParent#(L1Way, void) to_parent; + +`ifdef SELF_INV_CACHE + // reconcile + interface Server#(void, void) reconcile; +`endif + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(L1DCRqStuck) cRqStuck; + interface Get#(L1DPRqStuck) pRqStuck; +endinterface + +module mkDCoCache#(L1ProcResp#(DProcReqId) procResp)(DCoCache); + let cache <- mkDCacheWrapper(procResp); + + // perf counters + Fifo#(1, L1DPerfType) perfReqQ <- mkCFFifo; +`ifdef PERF_COUNT + Fifo#(1, PerfResp#(L1DPerfType)) perfRespQ <- mkCFFifo; + + rule doPerf; + let t <- toGet(perfReqQ).get; + let d = cache.getPerfData(t); + perfRespQ.enq(PerfResp { + pType: t, + data: d + }); + endrule +`endif + +`ifdef SELF_INV_CACHE + // change the reconcile ifc to a FIFO ifc to avoid scheduling issues + FIFO#(void) reconcileReqQ <- mkFIFO1; + FIFO#(void) reconcileRespQ <- mkFIFO1; + Reg#(Bool) waitReconcile <- mkReg(False); + + rule doStartReconcile(!waitReconcile); + reconcileReqQ.deq; + cache.reconcile; + waitReconcile <= True; + endrule + + rule doEndReconcile(waitReconcile && cache.reconcile_done); + reconcileRespQ.enq(?); + waitReconcile <= False; + endrule + + interface Server reconcile; + interface Put request = toPut(reconcileReqQ); + interface Get response = toGet(reconcileRespQ); + endinterface +`endif + + interface procReq = cache.procReq; + + method flush = cache.flush; + method flush_done = cache.flush_done; + + method Action resetLinkAddr; + cache.resetLinkAddr; + endmethod + + interface Perf perf; + method Action setStatus(Bool stats); + cache.setPerfStatus(stats); + endmethod + method Action req(L1DPerfType r); + perfReqQ.enq(r); + endmethod + method ActionValue#(PerfResp#(L1DPerfType)) resp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + return PerfResp { + pType: perfReqQ.first, + data: 0 + }; +`endif + endmethod + method Bool respValid; +`ifdef PERF_COUNT + return perfRespQ.notEmpty; +`else + return perfReqQ.notEmpty; +`endif + endmethod + endinterface + + interface to_parent = cache.to_parent; + + interface cRqStuck = cache.cRqStuck; + interface pRqStuck = cache.pRqStuck; +endmodule + + +//////// +// I$ // +//////// +typedef `LOG_L1_LINES LgILineNum; +typedef 0 LgIBankNum; +typedef TSub#(LgILineNum, TAdd#(LgIBankNum, LgL1WayNum)) LgISetNum; + +typedef Bit#(LgIBankNum) IBankId; +typedef LgISetNum IIndexSz; +typedef Bit#(IIndexSz) IIndex; +typedef GetTagSz#(LgIBankNum, LgISetNum) ITagSz; +typedef Bit#(ITagSz) ITag; + +typedef L1WayNum ICRqNum; +typedef 4 IPRqNum; // match cache pipeline latency +typedef Bit#(TLog#(ICRqNum)) ICRqMshrIdx; +typedef Bit#(TLog#(IPRqNum)) IPRqMshrIdx; + +typedef SupSize ISupSz; + +(* synthesize *) +module mkICRqMshrWrapper( + ICRqMshr#(ICRqNum, L1Way, ITag, ProcRqToI, Vector#(ISupSz, Maybe#(Instruction))) +); + function Addr getAddrFromReq(ProcRqToI r); + return r.addr; + endfunction + let m <- mkICRqMshr(getAddrFromReq); + return m; +endmodule + + +`ifdef SELF_INV_CACHE + +(* synthesize *) +module mkIPipeline( + SelfInvIPipe#(LgIBankNum, L1WayNum, IIndex, ITag, ICRqMshrIdx) +); + let m <- mkSelfInvIPipe; + return m; +endmodule + +typedef SelfInvIBank#(ISupSz, LgIBankNum, L1WayNum, IIndexSz, ITagSz, ICRqNum) IBankWrapper; + +(* synthesize *) +module mkIBankWrapper(IBankWrapper); + let m <- mkSelfInvIBank(0, mkICRqMshrWrapper, mkIPipeline); + return m; +endmodule + +typedef SelfInvICRqStuck L1ICRqStuck; +typedef SelfInvIPRqStuck L1IPRqStuck; + +`else // !SELF_INV_CACHE + +(* synthesize *) +module mkIPRqMshrWrapper( + IPRqMshr#(IPRqNum) +); + let m <- mkIPRqMshr; + return m; +endmodule + +(* synthesize *) +module mkIPipeline( + L1Pipe#(LgIBankNum, L1WayNum, IIndex, ITag, ICRqMshrIdx, IPRqMshrIdx) +); + let m <- mkL1Pipe; + return m; +endmodule + +typedef IBank#(ISupSz, LgIBankNum, L1WayNum, IIndexSz, ITagSz, ICRqNum, IPRqNum) IBankWrapper; + +(* synthesize *) +module mkIBankWrapper(IBankWrapper); + let m <- mkIBank(0, mkICRqMshrWrapper, mkIPRqMshrWrapper, mkIPipeline); + return m; +endmodule + +typedef ICRqStuck L1ICRqStuck; +typedef IPRqStuck L1IPRqStuck; + +`endif // SELF_INV_CACHE + + +interface ICoCache; + interface Server#(Addr, Vector#(ISupSz, Maybe#(Instruction))) to_proc; + method Action flush; + method Bool flush_done; + interface Perf#(L1IPerfType) perf; + + interface ChildCacheToParent#(L1Way, void) to_parent; + +`ifdef SELF_INV_CACHE + // reconcile + method Action reconcile; + method Bool reconcile_done; +`endif + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(L1ICRqStuck) cRqStuck; + interface Get#(L1IPRqStuck) pRqStuck; +endinterface + +(* synthesize *) +module mkICoCache(ICoCache); +`ifdef DEBUG_ICACHE + staticAssert(False, "DEBUG_ICACHE should not be defined"); +`endif + + let cache <- mkIBankWrapper; + + Fifo#(1, L1IPerfType) perfReqQ <- mkCFFifo; +`ifdef PERF_COUNT + Fifo#(1, PerfResp#(L1IPerfType)) perfRespQ <- mkCFFifo; + + rule doPerf; + let t <- toGet(perfReqQ).get; + let d = cache.getPerfData(t); + perfRespQ.enq(PerfResp { + pType: t, + data: d + }); + endrule +`endif + + interface Server to_proc; + interface request = cache.to_proc.req; + interface response = cache.to_proc.resp; + endinterface + + method flush = cache.flush; + method flush_done = cache.flush_done; + + interface Perf perf; + method Action setStatus(Bool stats); + cache.setPerfStatus(stats); + endmethod + method Action req(L1IPerfType r); + perfReqQ.enq(r); + endmethod + method ActionValue#(PerfResp#(L1IPerfType)) resp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + return PerfResp { + pType: perfReqQ.first, + data: 0 + }; +`endif + endmethod + method Bool respValid; +`ifdef PERF_COUNT + return perfRespQ.notEmpty; +`else + return perfReqQ.notEmpty; +`endif + endmethod + endinterface + + interface to_parent = cache.to_parent; + +`ifdef SELF_INV_CACHE + method reconcile = cache.reconcile; + method reconcile_done = cache.reconcile_done; +`endif + + interface cRqStuck = cache.cRqStuck; + interface pRqStuck = cache.pRqStuck; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/L1LLConnect.bsv b/src_Core/RISCY_OOO/procs/lib/L1LLConnect.bsv new file mode 100644 index 0000000..628bd3d --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/L1LLConnect.bsv @@ -0,0 +1,193 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Connectable::*; +import Vector::*; +import BuildVector::*; +import GetPut::*; +import CacheUtils::*; +import CCTypes::*; +import L1CoCache::*; +import LLCache::*; +import CrossBar::*; + +module mkL1LLConnect#( + ParentCacheToChild#(L1Way, LLChild) llc, + Vector#(L1Num, ChildCacheToParent#(L1Way, void)) l1 +)(Empty); + // connect cRq + function XBarDstInfo#(Bit#(0), CRqMsg#(L1Way, LLChild)) getCRqDst(LLChild child, CRqMsg#(L1Way, void) r); + return XBarDstInfo { + idx: 0, + data: CRqMsg { + addr: r.addr, + fromState: r.fromState, + toState: r.toState, + canUpToE: r.canUpToE, + id: r.id, + child: child + } + }; + endfunction + function Get#(CRqMsg#(L1Way, void)) cRqGet(ChildCacheToParent#(L1Way, void) ifc) = toGet(ifc.rqToP); + mkXBar(getCRqDst, map(cRqGet, l1), vec(toPut(llc.rqFromC))); + + // connect cRs + function XBarDstInfo#(Bit#(0), CRsMsg#(LLChild)) getCRsDst(LLChild child, CRsMsg#(void) r); + return XBarDstInfo { + idx: 0, + data: CRsMsg { + addr: r.addr, + toState: r.toState, + data: r.data, + child: child + } + }; + endfunction + function Get#(CRsMsg#(void)) cRsGet(ChildCacheToParent#(L1Way, void) ifc) = toGet(ifc.rsToP); + mkXBar(getCRsDst, map(cRsGet, l1), vec(toPut(llc.rsFromC))); + + // connect pRq/pRs + for(Integer i = 0; i < valueof(L1Num); i = i+1) begin + rule sendPRq(llc.toC.first matches tagged PRq .rq &&& rq.child == fromInteger(i)); + llc.toC.deq; + l1[i].fromP.enq(PRq (PRqMsg { + addr: rq.addr, + toState: rq.toState, + child: ? + })); + endrule + rule sendPRs(llc.toC.first matches tagged PRs .rs &&& rs.child == fromInteger(i)); + llc.toC.deq; + l1[i].fromP.enq(PRs (PRsMsg { + addr: rs.addr, + toState: rs.toState, + child: ?, + data: rs.data, + id: rs.id + })); + endrule + end +endmodule + +/* +module mkL1LLConnect#( + ParentCacheToChild#(L1Way, LLChild) llc, + ChildCacheToParent#(L1Way, void) dCache, + ChildCacheToParent#(L1Way, void) iCache +)(Empty); + LLChild dChild = 0; + + // D$ + // send cRq to P: D$ has priority + rule doRqFromDCToP; + let r <- toGet(dCache.rqToP).get; + llc.rqFromC.enq(CRqMsg { + addr: r.addr, + fromState: r.fromState, + toState: r.toState, + id: r.id, + child: dChild + }); + endrule + + // send cRs to P: D$ has priority + rule doRsFromDCToP; + let r <- toGet(dCache.rsToP).get; + llc.rsFromC.enq(CRsMsg { + addr: r.addr, + toState: r.toState, + data: r.data, + child: dChild + }); + endrule + + // send pRs to C + rule doRsFromPToDC(llc.toC.first matches tagged PRs .rs &&& rs.child == dChild); + llc.toC.deq; + dCache.fromP.enq(PRs (PRsMsg { + addr: rs.addr, + toState: rs.toState, + child: ?, + data: rs.data, + id: rs.id + })); + endrule + + // send pRq to C + rule doRqFromPToDC(llc.toC.first matches tagged PRq .rq &&& rq.child == dChild); + llc.toC.deq; + dCache.fromP.enq(PRq (PRqMsg { + addr: rq.addr, + toState: rq.toState, + child: ? + })); + endrule + + // I$ + LLChild iChild = 1; + + (* descending_urgency = "doRqFromDCToP, doRqFromICToP" *) + rule doRqFromICToP; + let r <- toGet(iCache.rqToP).get; + llc.rqFromC.enq(CRqMsg { + addr: r.addr, + fromState: r.fromState, + toState: r.toState, + id: r.id, + child: iChild + }); + endrule + + (* descending_urgency = "doRsFromDCToP, doRsFromICToP" *) + rule doRsFromICToP; + let r <- toGet(iCache.rsToP).get; + llc.rsFromC.enq(CRsMsg { + addr: r.addr, + toState: r.toState, + data: r.data, + child: iChild + }); + endrule + + rule doRsFromPToIC(llc.toC.first matches tagged PRs .rs &&& rs.child == iChild); + llc.toC.deq; + iCache.fromP.enq(PRs (PRsMsg { + addr: rs.addr, + toState: rs.toState, + child: ?, + data: rs.data, + id: rs.id + })); + endrule + + rule doRqFromPToIC(llc.toC.first matches tagged PRq .rq &&& rq.child == iChild); + llc.toC.deq; + iCache.fromP.enq(PRq (PRqMsg { + addr: rq.addr, + toState: rq.toState, + child: ? + })); + endrule +endmodule +*/ diff --git a/src_Core/RISCY_OOO/procs/lib/L2SetAssocTlb.bsv b/src_Core/RISCY_OOO/procs/lib/L2SetAssocTlb.bsv new file mode 100644 index 0000000..2b237c2 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/L2SetAssocTlb.bsv @@ -0,0 +1,71 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Vector::*; +import Ehr::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; +import SetAssocTlb::*; + +// L2 4KB page set assoc TLB +typedef `LOG_L2_TLB_4KB_WAYS LogL2TlbWayNum; +typedef TExp#(LogL2TlbWayNum) L2TlbWayNum; +typedef Bit#(LogL2TlbWayNum) L2TlbWay; + +typedef `LOG_L2_TLB_4KB_SIZE LogL2TlbSize; +typedef TSub#(LogL2TlbSize, LogL2TlbWayNum) LogL2TlbSetNum; + +// use true LRU: index 0 --MRU, index way-1 -- LRU +typedef Vector#(L2TlbWayNum, L2TlbWay) L2TlbRepInfo; +L2TlbRepInfo l2TlbRepInfoInitVal = genWith(fromInteger); + +function L2TlbWay getL2TlbRepWay(L2TlbRepInfo repInfo, Vector#(L2TlbWayNum, Bool) invalid); + // if there are invalid entries, LRU entry must be invalid + return repInfo[valueof(L2TlbWayNum) - 1]; +endfunction + +function L2TlbRepInfo updateL2TlbRepInfo(L2TlbRepInfo repInfo, L2TlbWay way); + L2TlbRepInfo newInfo = repInfo; + newInfo[0] = way; // MRU + Bool findWay = False; + for(Integer i = 1; i < valueof(L2TlbWayNum); i = i+1) begin + findWay = findWay || (repInfo[i-1] == way); + if(!findWay) begin + newInfo[i] = repInfo[i-1]; + end + end + return newInfo; +endfunction + +typedef SetAssocTlbResp#(L2TlbWay) L2SetAssocTlbResp; + +typedef SetAssocTlb#(L2TlbWayNum, LogL2TlbSetNum, L2TlbRepInfo) L2SetAssocTlb; + +// cannot synthesize becaue a method guard depends on input +module mkL2SetAssocTlb(L2SetAssocTlb); + let m <- mkSetAssocTlb(l2TlbRepInfoInitVal, getL2TlbRepWay, updateL2TlbRepInfo); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/L2Tlb.bsv b/src_Core/RISCY_OOO/procs/lib/L2Tlb.bsv new file mode 100644 index 0000000..e77c13b --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/L2Tlb.bsv @@ -0,0 +1,749 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Vector::*; +import DefaultValue::*; +import ClientServer::*; +import GetPut::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; +import Performance::*; +import FullAssocTlb::*; +import ConfigReg::*; +import Ehr::*; +import Fifo::*; +import Cntrs::*; +import SafeCounter::*; +import CacheUtils::*; +import SetAssocTlb::*; +import L2SetAssocTlb::*; +import TranslationCache::*; +import LatencyTimer::*; + +// for SV39 only + +// curretly L2 TLB is just a blocking page walker + +// interface with memory (LLC) +typedef L2TlbReqIdx TlbMemReqId; + +typedef struct { + // this is always a load req + Addr addr; + TlbMemReqId id; +} TlbMemReq deriving(Bits, Eq, FShow); + +typedef struct { + Data data; + TlbMemReqId id; +} TlbLdResp deriving(Bits, Eq, FShow); + +interface TlbMemClient; + interface FifoDeq#(TlbMemReq) memReq; + interface FifoEnq#(TlbLdResp) respLd; +endinterface + +// interface with children (I/D TLB) +typedef union tagged { + void I; + DTlbReqIdx D; +} TlbChild deriving(Bits, Eq, FShow); +typedef struct { + TlbChild child; + Vpn vpn; +} L2TlbRqFromC deriving(Bits, Eq, FShow); + +typedef struct { + TlbChild child; + Maybe#(TlbEntry) entry; +} L2TlbRsToC deriving(Bits, Eq, FShow); + +interface L2TlbToChildren; + interface Put#(L2TlbRqFromC) rqFromC; + interface FifoDeq#(L2TlbRsToC) rsToC; + // flush with I/D TLB + interface Put#(void) iTlbReqFlush; + interface Put#(void) dTlbReqFlush; + interface Get#(void) flushDone; +endinterface + +interface L2Tlb; + // keep update with changes to CSRs + method Action updateVMInfo(VMInfo vmI, VMInfo vmD); + + // ifc with ITLb & DTLB + interface L2TlbToChildren toChildren; + + // ifc with memory (LLC) + interface TlbMemClient toMem; + + // performace + interface Perf#(L2TlbPerfType) perf; +endinterface + +typedef FullAssocTlb#(`L2_TLB_HUGE_SIZE) L2FullAssocTlb; +module mkL2FullAssocTlb(L2FullAssocTlb); + let m <- mkFullAssocTlb(True); // randomness in replacement + return m; +endmodule + +// a pending tlb req may be in following states +typedef union tagged { + void None; + void WaitMem; // wait for page walk resp from memory + L2TlbReqIdx WaitPeer; // wait for page walk resp from peer req +} L2TlbWait deriving(Bits, Eq, FShow); + +// TODO we should raise load access fault if the PTE address is not a DRAM +// address. (trap value is still the virtual address being translated). + +(* synthesize *) +module mkL2Tlb(L2Tlb::L2Tlb); + Bool verbose = True; + + // set associative TLB for 4KB pages + L2SetAssocTlb tlb4KB <- mkL2SetAssocTlb; + // fully associative TLB for mega and giga pages + L2FullAssocTlb tlbMG <- mkL2FullAssocTlb; + // FIFO in parallel with TLB + Fifo#(1, L2TlbReqIdx) tlbReqQ <- mkPipelineFifo; + + // MMU translation cache + TranslationCache transCache <- mkSplitTransCache; + // FIFO in parallel with MMU cache + Fifo#(1, L2TlbReqIdx) transCacheReqQ <- mkPipelineFifo; + + // flush + Reg#(Bool) iFlushReq <- mkReg(False); + Reg#(Bool) dFlushReq <- mkReg(False); + Reg#(Bool) waitFlushDone <- mkReg(False); + Bool flushing = iFlushReq && dFlushReq; + Fifo#(1, void) flushDoneQ <- mkCFFifo; + + // req/resp with I/D TLBs + Fifo#(1, L2TlbRqFromC) rqFromCQ <- mkBypassFifo; + Fifo#(1, L2TlbRsToC) rsToCQ <- mkBypassFifo; + + // pending reqs + // pendWait should be meaningful even when entry is invalid. pendWait = + // WaitMem means this entry is waiting for page walk resp from memory; + // pendWait = WaitPeer means this entry is waiting for a page walk resp + // resp initiated by another req. Thus, pendWait must be None when entry is + // invalid. + Vector#(L2TlbReqNum, Ehr#(2, Bool)) pendValid <- replicateM(mkEhr(False)); + Vector#(L2TlbReqNum, Reg#(L2TlbRqFromC)) pendReq <- replicateM(mkRegU); + Vector#(L2TlbReqNum, Ehr#(2, L2TlbWait)) pendWait <- replicateM(mkEhr(None)); + Vector#(L2TlbReqNum, Reg#(PageWalkLevel)) pendWalkLevel <- replicateM(mkRegU); + Vector#(L2TlbReqNum, Reg#(Addr)) pendWalkAddr <- replicateM(mkRegU); +`ifdef SECURITY + Vector#(L2TlbReqNum, Reg#(Bool)) pendEnclave <- replicateM(mkRegU); +`endif + + // rule ordering: + // - trans cache resp < tlb resp < tlb req + // - trans cache resp mutually exclusive with page walk (trans cache resp + // has precedence). I don't want them to fire together because both rules + // update walk level, and I don't want a bypass path. + // - tlb resp mutually exclusive with page walk (tlb resp has precedence). + // These two rules cannot fire together, because page walk may update trans + // cache and tlb resp may request trans cache. tlb resp takes precednece + // because page walk may update tlb and it needs to wait for tlb resp to + // deq resp. + // - tlb req mutually exclusive with page walk (page walk has precedence). + // They cannot fire together, because page walk may udpate tlb and tlb req + // may request tlb. + + let pendValid_transCacheResp = getVEhrPort(pendValid, 0); // assert + let pendValid_tlbResp = getVEhrPort(pendValid, 0); + let pendValid_pageWalk = getVEhrPort(pendValid, 0); + let pendValid_tlbReq = getVEhrPort(pendValid, 1); + + let pendWait_transCacheResp = getVEhrPort(pendWait, 0); + let pendWait_pageWalk = getVEhrPort(pendWait, 0); + let pendWait_tlbResp = getVEhrPort(pendWait, 1); // perf + let pendWait_tlbReq = getVEhrPort(pendWait, 1); // assert + + // current processor VM information + Reg#(VMInfo) vm_info_I <- mkReg(defaultValue); + Reg#(VMInfo) vm_info_D <- mkReg(defaultValue); + + // Memory Queues for page table walks + Fifo#(2, TlbMemReq) memReqQ <- mkCFFifo; + Fifo#(2, TlbLdResp) respLdQ <- mkCFFifo; + // When a mem resp comes, we first process the initiating req, then process + // other reqs that in WaitPeer. + Reg#(Maybe#(L2TlbReqIdx)) respForOtherReq <- mkReg(Invalid); + + // FIFO for perf req + Fifo#(1, L2TlbPerfType) perfReqQ <- mkCFFifo; +`ifdef PERF_COUNT + Fifo#(1, PerfResp#(L2TlbPerfType)) perfRespQ <- mkCFFifo; + Reg#(Bool) doStats <- mkConfigReg(False); + Count#(Data) instMissCnt <- mkCount(0); + Count#(Data) instMissLat <- mkCount(0); + Count#(Data) instPageWalks <- mkCount(0); + Count#(Data) instSavedPageWalks <- mkCount(0); + Count#(Data) instHugePageHitCnt <- mkCount(0); + Count#(Data) instHugePageMissCnt <- mkCount(0); + Count#(Data) dataMissCnt <- mkCount(0); + Count#(Data) dataMissLat <- mkCount(0); + Count#(Data) dataPageWalks <- mkCount(0); + Count#(Data) dataSavedPageWalks <- mkCount(0); + Count#(Data) dataHugePageHitCnt <- mkCount(0); + Count#(Data) dataHugePageMissCnt <- mkCount(0); + Count#(Data) hitUnderMissCnt <- mkCount(0); + Count#(Data) allMissCycles <- mkCount(0); + Count#(Data) peerSavedMemReqCnt <- mkCount(0); + + LatencyTimer#(L2TlbReqNum, 12) latTimer <- mkLatencyTimer; // max latency: 4K cycles + + function Action incrMissLat(TlbChild child, L2TlbReqIdx idx); + action + let lat <- latTimer.done(idx); + if(doStats) begin + if(child == I) begin + instMissLat.incr(zeroExtend(lat)); + end + else begin + dataMissLat.incr(zeroExtend(lat)); + end + end + endaction + endfunction + + rule incrAllMissCycles(doStats); + function Bool isMiss(L2TlbWait x) = x != None; + when(all(isMiss, readVEhr(0, pendWait)), allMissCycles.incr(1)); + endrule + + rule doPerf; + let t <- toGet(perfReqQ).get; + Data d = (case(t) + L2TlbInstMissCnt: (instMissCnt); + L2TlbInstMissLat: (instMissLat); + L2TlbInstPageWalks: (instPageWalks); + L2TlbInstSavedPageWalks: (instSavedPageWalks); + L2TlbInstHugePageHits: (instHugePageHitCnt); + L2TlbInstHugePageMisses: (instHugePageMissCnt); + L2TlbDataMissCnt: (dataMissCnt); + L2TlbDataMissLat: (dataMissLat); + L2TlbDataPageWalks: (dataPageWalks); + L2TlbDataSavedPageWalks: (dataSavedPageWalks); + L2TlbDataHugePageHits: (dataHugePageHitCnt); + L2TlbDataHugePageMisses: (dataHugePageMissCnt); + L2TlbHitUnderMissCnt: (hitUnderMissCnt); + L2TlbAllMissCycles: (allMissCycles); + L2TlbPeerSavedMemReqs: (peerSavedMemReqCnt); + default: (0); + endcase); + perfRespQ.enq(PerfResp { + pType: t, + data: d + }); + endrule +`endif + + // when flushing is true, since both I and D TLBs have finished flush and + // is waiting for L2 to flush, all I/D TLB req must have been responded. + // Thus, there cannot be any req in pendReq or rqFromCQ. + rule doStartFlush(flushing && !waitFlushDone); + waitFlushDone <= True; + tlb4KB.flush; + tlbMG.flush; + transCache.flush; + // check no req + doAssert(!rqFromCQ.notEmpty, "cannot have new req"); + doAssert(readVEhr(0, pendValid) == replicate(False), "cannot have pending req"); + endrule + + rule doWaitFlush(flushing && waitFlushDone && tlb4KB.flush_done && transCache.flush_done); + waitFlushDone <= False; + flushDoneQ.enq(?); + iFlushReq <= False; + dFlushReq <= False; + endrule + + // tlb req rule is preempted by page walk rule, i.e., don't fire when page + // walk resp is avaiable + rule doTlbReq(!flushing && !respLdQ.notEmpty); + // find a slot for the new req + L2TlbReqIdx idx = ?; + if(findIndex( \== (False) , readVReg(pendValid_tlbReq) ) matches tagged Valid .i) begin + idx = pack(i); + end + else begin + when(False, noAction); + end + // get new req + rqFromCQ.deq; + let r = rqFromCQ.first; + // req tlb array + VMInfo vm_info = r.child == I ? vm_info_I : vm_info_D; + tlb4KB.req(Translate (SetAssocTlbTranslateReq { + vpn: r.vpn, + asid: vm_info.asid + })); + tlbReqQ.enq(idx); + // record req + pendValid_tlbReq[idx] <= True; + pendReq[idx] <= r; + doAssert(!pendValid_tlbReq[idx], "entry must be invalid"); + doAssert(pendWait_tlbReq[idx] == None, "cannot be waiting"); + if(verbose) $display("L2TLB new req: ", fshow(r), "; ", fshow(idx)); + endrule + + // process resp from 4KB TLB and mega-giga TLB + rule doTlbResp(tlbReqQ.notEmpty); + doAssert(!flushing, "cannot have pending req when flushing"); + + // get req in tlb + tlbReqQ.deq; + L2TlbReqIdx idx = tlbReqQ.first; + L2TlbRqFromC cRq = pendReq[idx]; + doAssert(pendWait_tlbResp[idx] == None, "cannot be waiting"); + + // get correct VM info + VMInfo vm_info = cRq.child == I ? vm_info_I : vm_info_D; + doAssert(vm_info.sv39, "must be in sv39 mode"); + + // get resp from 4KB TLB and mega-giga TLB + let resp4KB = tlb4KB.resp; + let respMG = tlbMG.translate(cRq.vpn, vm_info.asid); + + if(verbose) begin + $display("L2TLB resp: ", fshow(vm_info), " ; ", fshow(cRq), " ; ", + fshow(resp4KB), " ; ", fshow(respMG)); + end + + // when page hit, resp to child (4KB array is not dequeued) + function Action pageHit(TlbEntry entry); + action + // resp to child + rsToCQ.enq(L2TlbRsToC { + child: cRq.child, + entry: Valid (entry) + }); + // req is done + pendValid_tlbResp[idx] <= False; +`ifdef PERF_COUNT + // perf: hit under miss + function Bool otherMiss(L2TlbReqIdx i); + return pendValid_tlbResp[i] && pendWait_tlbResp[i] != None && i != idx; + endfunction + Vector#(L2TlbReqNum, L2TlbReqIdx) idxVec = genWith(fromInteger); + if(any(otherMiss, idxVec)) begin + hitUnderMissCnt.incr(1); + end +`endif + endaction + endfunction + + if(!vm_info.sv39) begin + // not in sv39 -> page fault + // resp with invalid entry + rsToCQ.enq(L2TlbRsToC { + child: cRq.child, + entry: Invalid + }); + // deq 4KB TLB array + tlb4KB.deqResp(Invalid); + // req is done + pendValid_tlbResp[idx] <= False; + end + else if(respMG.hit) begin + // hit on a mega or giga page + let entry = respMG.entry; + doAssert(entry.level > 0 && entry.level <= maxPageWalkLevel, + "mega or giga page"); + pageHit(entry); + tlb4KB.deqResp(Invalid); // just deq 4KB array + tlbMG.updateRepByHit(respMG.index); // update replacement in MG array +`ifdef PERF_COUNT + if(doStats) begin + if(cRq.child == I) begin + instHugePageHitCnt.incr(1); + end + else begin + dataHugePageHitCnt.incr(1); + end + end +`endif + end + else if(resp4KB.hit) begin + // hit on 4KB page + let entry = resp4KB.entry; + doAssert(entry.level == 0, "must be 4KB page"); + pageHit(entry); + // update 4KB array replacement, no need to touch MG array + tlb4KB.deqResp(Valid (resp4KB.way)); + end + else begin + // miss, deq resp + tlb4KB.deqResp(Invalid); + // check translation cache + transCache.req(cRq.vpn, vm_info.asid); + transCacheReqQ.enq(idx); + // perf: TLB miss +`ifdef PERF_COUNT + latTimer.start(idx); + if(doStats) begin + if(cRq.child == I) begin + instMissCnt.incr(1); + end + else begin + dataMissCnt.incr(1); + end + end +`endif + end + endrule + + // Find other req doing the same page walk. Although it should be ok to + // just compare the VPNs, for safety, we compare the PTE addrs. + function Maybe#(L2TlbReqIdx) otherReqSamePTE( + L2TlbReqIdx idx, Addr pteAddr, + Vector#(L2TlbReqNum, L2TlbWait) waitVec + ); + function Bool samePTE(L2TlbReqIdx i); + return i != idx && waitVec[i] == WaitMem && pendWalkAddr[i] == pteAddr; + endfunction + Vector#(L2TlbReqNum, L2TlbReqIdx) idxVec = genWith(fromInteger); + return find(samePTE, idxVec); + endfunction + + rule doTranslationCacheResp(transCacheReqQ.notEmpty); + // get req in trans cache + transCacheReqQ.deq; + L2TlbReqIdx idx = transCacheReqQ.first; + L2TlbRqFromC cRq = pendReq[idx]; + // get trans cache resp + transCache.deqResp; + let resp = transCache.resp; + // start page walk based on the translation cache resp. Note that if + // the startLevel in resp is max, then we should use the base ppn in vm + // info. + // XXX We believe the PPN stored in translation cache has been + // sanitized before, so we don't need to check again if the PPN is an + // enclave PPN or not. (This should follow the same reasoning that TLB + // hits do not need checks.) + VMInfo vm_info = cRq.child == I ? vm_info_I : vm_info_D; + PageWalkLevel level = resp.startLevel; + Ppn rootPPN = vm_info.basePPN; // root of page table +`ifdef SECURITY + Bool isEnclave = (zeroExtend(cRq.vpn) & vm_info.sanctum_evmask) == vm_info.sanctum_evbase; + if(isEnclave) begin + rootPPN = vm_info.sanctum_ebasePPN; // enclave has its own root of page table + end +`endif + Addr baseAddr = getPTBaseAddr(level < maxPageWalkLevel ? resp.ppn : rootPPN); + Addr pteAddr = getPTEAddr(baseAddr, cRq.vpn, level); + // record page walk info + pendWalkLevel[idx] <= level; + pendWalkAddr[idx] <= pteAddr; +`ifdef SECURITY + pendEnclave[idx] <= isEnclave; +`endif + doAssert(pendWait_transCacheResp[idx] == None, "cannot be waiting"); + // don't req memory if someone else is also doing the same page walk. + if(otherReqSamePTE(idx, pteAddr, readVReg(pendWait_transCacheResp)) matches tagged Valid .i) begin + // peer entry has already requested, so don't send + // duplicate req + pendWait_transCacheResp[idx] <= WaitPeer (i); + doAssert(pendValid_transCacheResp[i], "peer must be valid"); +`ifdef PERF_COUNT + if(doStats) begin + peerSavedMemReqCnt.incr(1); + end +`endif + end + else begin + // no one has requested before, req memory + memReqQ.enq(TlbMemReq { + addr: pteAddr, + id: idx + }); + pendWait_transCacheResp[idx] <= WaitMem; + end + if(verbose) begin + $display("L2TLB start page walk: ", fshow(cRq), "; ", + fshow(vm_info), "; ", fshow(resp), "; ", + fshow(level), "; ", fshow(pteAddr)); + end +`ifdef PERF_COUNT + // perf: saved page walks + if(doStats) begin + Data saved = zeroExtend(maxPageWalkLevel - level); + if(cRq.child == I) begin + instSavedPageWalks.incr(saved); + end + else begin + dataSavedPageWalks.incr(saved); + end + end +`endif + endrule + + // page walk is preempted by tlb resp rule and trans cache resp rule, i.e., + // don't fire when tlb resp or trans cache resp are available + rule doPageWalk(respLdQ.notEmpty && !tlbReqQ.notEmpty && !transCacheReqQ.notEmpty); + doAssert(!flushing, "cannot have pending req when flushing"); + + // get the resp data from memory (LLC); this resp is for the initiating + // req and other req that wait on this one, so don't deq right away + PTESv39 pte = unpack(respLdQ.first.data); + L2TlbReqIdx idx = fromMaybe(respLdQ.first.id, respForOtherReq); + L2TlbRqFromC cRq = pendReq[idx]; + + // find another req waiting for this resp to process in next cycle + function Bool waitForResp(L2TlbReqIdx i); + return pendWait_pageWalk[i] == WaitPeer (respLdQ.first.id) && i != idx; + endfunction + Vector#(L2TlbReqNum, L2TlbReqIdx) idxVec = genWith(fromInteger); + if(find(waitForResp, idxVec) matches tagged Valid .i) begin + // still have req waiting for this resp, keep processing + respForOtherReq <= Valid (i); + doAssert(pendValid_pageWalk[i], "waiting entry must be valid"); + end + else begin + // all req done, deq the mem resp + respForOtherReq <= Invalid; + respLdQ.deq; + end + + // handle page fault + function Action pageFault(String reason); + action + // resp with invalid entry + rsToCQ.enq(L2TlbRsToC { + child: cRq.child, + entry: Invalid + }); + // req is done + pendValid_pageWalk[idx] <= False; + pendWait_pageWalk[idx] <= None; +`ifdef PERF_COUNT + // incr miss latency + incrMissLat(cRq.child, idx); +`endif + endaction + endfunction + + // get correct VM info + VMInfo vm_info = cRq.child == I ? vm_info_I : vm_info_D; + + // assume we are continuing page walk, update level and pte addr (it + // causes not harm even if we stop page walk) + PageWalkLevel walkLevel = pendWalkLevel[idx]; + PageWalkLevel newWalkLevel = walkLevel - 1; + Addr newPTBase = getPTBaseAddr(pte.ppn); + Addr newPTEAddr = getPTEAddr(newPTBase, cRq.vpn, newWalkLevel); + pendWalkLevel[idx] <= newWalkLevel; + pendWalkAddr[idx] <= newPTEAddr; + + // reach leaf PTE + Bool leafPTE = isLeafPTE(pte.pteType); + +`ifdef SECURITY + // base/bound/mask to enforce that page walk does not cross enclave + // boundary + Addr parbase = pendEnclave[idx] ? vm_info.sanctum_eparbase : vm_info.sanctum_parbase; + Addr parmask = pendEnclave[idx] ? vm_info.sanctum_eparmask : vm_info.sanctum_parmask; + Addr mrbm = pendEnclave[idx] ? vm_info.sanctum_emrbm : vm_info.sanctum_mrbm; +`endif + + if(verbose) begin + $display("L2TLB page walk: ", fshow(vm_info), " ; ", + fshow(idx), " ; ", fshow(cRq), " ; ", + fshow(walkLevel), " ; ", fshow(pte)); + end + + if(!vm_info.sv39) begin + // no longer in sv39 mode -> page fault + pageFault("Not in sv39"); + end + else if(!pte.valid) begin + // invalid pte -> fault + pageFault("invalid page"); + end +`ifdef SECURITY + // TODO: raise page fault or access fault? + else if((newPTBase & parmask) == parbase) begin + // access falls into protected address range (that I don't have permission) -> fault + pageFault("SANCTUM protected address range"); + end + else if((getAddrRegions(newPTBase, leafPTE, walkLevel) & mrbm) == 0) begin + // access falls outiside regions belong to me -> fault + pageFault("SANCTUM protected address range"); + end +`endif + else begin + // page is valid, check leaf or not + if(!leafPTE) begin + // non-leaf page + if(walkLevel == 0) begin + // page walk end with non-leaf page -> fault + pageFault("non-leaf page at end"); + end + else begin + // continue page walk, check if other req is doing the same + // walk + if(otherReqSamePTE(idx, newPTEAddr, readVReg(pendWait_pageWalk)) matches tagged Valid .i) begin + pendWait_pageWalk[idx] <= WaitPeer (i); +`ifdef PERF_COUNT + if(doStats) begin + peerSavedMemReqCnt.incr(1); + end +`endif + end + else begin + memReqQ.enq(TlbMemReq { + addr: newPTEAddr, + id: idx + }); + pendWait_pageWalk[idx] <= WaitMem; + end + // add to translation cache + transCache.addEntry(cRq.vpn, walkLevel, pte.ppn, vm_info.asid); + end + end + else begin + // leaf page, get new entry + Vpn masked_vpn = getMaskedVpn(cRq.vpn, walkLevel); + Ppn masked_ppn = getMaskedPpn(pte.ppn, walkLevel); + let entry = TlbEntry { + vpn: masked_vpn, + ppn: masked_ppn, + pteType: pte.pteType, + level: walkLevel, + asid: vm_info.asid + }; + // resp child + rsToCQ.enq(L2TlbRsToC { + child: cRq.child, + entry: Valid (entry) + }); + // update TLB array + if(entry.level > 0) begin + // add to mega/giga page tlb + tlbMG.addEntry(entry); +`ifdef PERF_COUNT + if(doStats) begin + if(cRq.child == I) begin + instHugePageMissCnt.incr(1); + end + else begin + dataHugePageMissCnt.incr(1); + end + end +`endif + end + else begin + // 4KB page, add to 4KB TLB + tlb4KB.req(Refill (entry)); + end + // req is done + pendValid_pageWalk[idx] <= False; + pendWait_pageWalk[idx] <= None; +`ifdef PERF_COUNT + // incr miss latency + incrMissLat(cRq.child, idx); +`endif + end + end +`ifdef PERF_COUNT + // perf: page walk done once + if(doStats) begin + if(cRq.child == I) begin + instPageWalks.incr(1); + end + else begin + dataPageWalks.incr(1); + end + end +`endif + endrule + + method Action updateVMInfo(VMInfo vmI, VMInfo vmD); //if(!isValid(pendReq)); + vm_info_I <= vmI; + vm_info_D <= vmD; + endmethod + + interface L2TlbToChildren toChildren; + interface Put rqFromC = toPut(rqFromCQ); + interface rsToC = toFifoDeq(rsToCQ); + + interface Put iTlbReqFlush; + method Action put(void x) if(!iFlushReq); + iFlushReq <= True; + endmethod + endinterface + interface Put dTlbReqFlush; + method Action put(void x) if(!dFlushReq); + dFlushReq <= True; + endmethod + endinterface + interface Get flushDone = toGet(flushDoneQ); + endinterface + + interface TlbMemClient toMem; + interface FifoDeq memReq = toFifoDeq(memReqQ); + interface FifoEnq respLd = toFifoEnq(respLdQ); + endinterface + + interface Perf perf; + method Action setStatus(Bool stats); +`ifdef PERF_COUNT + doStats <= stats; +`else + noAction; +`endif + endmethod + + method Action req(L2TlbPerfType r); + perfReqQ.enq(r); + endmethod + + method ActionValue#(PerfResp#(L2TlbPerfType)) resp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + return PerfResp { + pType: perfReqQ.first, + data: 0 + }; +`endif + endmethod + + method Bool respValid; +`ifdef PERF_COUNT + return perfRespQ.notEmpty; +`else + return perfReqQ.notEmpty; +`endif + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/LLCDmaConnect.bsv b/src_Core/RISCY_OOO/procs/lib/LLCDmaConnect.bsv new file mode 100644 index 0000000..6282a73 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/LLCDmaConnect.bsv @@ -0,0 +1,153 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import FShow::*; +import GetPut::*; +import Vector::*; +import BuildVector::*; +import FIFO::*; +import Assert::*; + +import Types::*; +import ProcTypes::*; +import CacheUtils::*; +import CCTypes::*; +import L2Tlb::*; +import MemLoader::*; +import CrossBar::*; +import MemLoader::*; + +typedef struct { + CoreId core; + TlbMemReqId id; + LineDataOffset dataSel; +} TlbDmaReqId deriving(Bits, Eq, FShow); + +typedef union tagged { + MemLoaderMemReqId MemLoader; + TlbDmaReqId Tlb; +} LLCDmaReqId deriving(Bits, Eq, FShow); + +module mkLLCDmaConnect#( + DmaServer#(LLCDmaReqId) llc, + MemLoaderMemClient memLoader, + Vector#(CoreNum, TlbMemClient) tlb +)(Empty) provisos ( + Alias#(dmaRqT, DmaRq#(LLCDmaReqId)) +); + Bool verbose = True; + + // helper functions for cross bar + function XBarDstInfo#(Bit#(0), Tuple2#(CoreId, TlbMemReq)) getTlbDst(CoreId core, TlbMemReq r); + return XBarDstInfo {idx: 0, data: tuple2(core, r)}; + endfunction + function Get#(TlbMemReq) tlbReqGet(TlbMemClient cli) = toGet(cli.memReq); + + // cross bar for Tlb + FIFO#(Tuple2#(CoreId, TlbMemReq)) tlbQ <- mkFIFO; + mkXBar(getTlbDst, map(tlbReqGet, tlb), vec(toPut(tlbQ))); + + // TLB req is for a whole data + function dmaRqT getTlbDmaReq(CoreId c, TlbMemReq r); + LineDataOffset dataSel = getLineDataOffset(r.addr); + let id = TlbDmaReqId { + core: c, + id: r.id, + dataSel: dataSel + }; + return DmaRq { + addr: r.addr, + byteEn: replicate(False), // tlb req is always load + data: ?, + id: Tlb (id) + }; + endfunction + + // send req to LLC + rule sendMemLoaderReqToLLC; + memLoader.memReq.deq; + let r = memLoader.memReq.first; + dmaRqT req = DmaRq { + addr: r.addr, + byteEn: r.byteEn, + data: r.data, + id: MemLoader (r.id) + }; + llc.memReq.enq(req); + if(verbose) begin + $display("[LLCDmaConnnect sendMemLoaderReqToLLC] ", + fshow(r), " ; ", fshow(req)); + end + endrule + + (* descending_urgency = "sendMemLoaderReqToLLC, sendTlbReqToLLC" *) + rule sendTlbReqToLLC; + let {c, r} <- toGet(tlbQ).get; + let req = getTlbDmaReq(c, r); + llc.memReq.enq(req); + if(verbose) begin + $display(" [LLCDmaConnnect sendTlbReqToLLC] ", fshow(r), " ; ", fshow(req)); + end + endrule + + // send Ld resp from LLC + rule sendLdRespToMemLoader(llc.respLd.first.id matches tagged MemLoader .id); + llc.respLd.deq; + if(verbose) begin + $display("[LLCDmaConnect sendLdRespToMemLoader] ", + fshow(llc.respLd.first)); + end + doAssert(False, "No mem loader ld"); + endrule + + rule sendLdRespToTlb(llc.respLd.first.id matches tagged Tlb .id); + llc.respLd.deq; + let resp = llc.respLd.first; + let ld = TlbLdResp { + data: resp.data[id.dataSel], + id: id.id + }; + tlb[id.core].respLd.enq(ld); + if(verbose) begin + $display(" [LLCDmaConnect sendLdRespToTlb] ", fshow(resp), " ; ", fshow(ld)); + end + endrule + + // send St resp from LLC + rule sendStRespToMemLoader(llc.respSt.first matches tagged MemLoader .id); + llc.respSt.deq; + memLoader.respSt.enq(id); + if(verbose) begin + $display("[LLCDmaConnect sendStRespToMemLoader] ", + fshow(llc.respSt.first)); + end + endrule + + rule sendStRespToTlb(llc.respSt.first matches tagged Tlb .id); + llc.respSt.deq; + if(verbose) begin + $display(" [LLCDmaConnect sendStRespToTlb] ", fshow(llc.respSt.first)); + end + doAssert(False, "No TLB st"); + endrule +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/LLCRqMshrSecureModel.bsv b/src_Core/RISCY_OOO/procs/lib/LLCRqMshrSecureModel.bsv new file mode 100644 index 0000000..0aa20eb --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/LLCRqMshrSecureModel.bsv @@ -0,0 +1,345 @@ + +// Copyright (c) 2019 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import GetPut::*; +import RegFile::*; +import FIFO::*; +import FShow::*; +import Types::*; +import CCTypes::*; +import DefaultValue::*; +import Ehr::*; +import Fifo::*; +import MshrDeadlockChecker::*; +import LLCRqMshr::*; + +// SECURITY: this module is a quick and dirty way to model the effect of MSHR +// partition in case of a banked LLC. That is, a single core roughly sees a +// MSHR, which is not fully associative but set associated and indexed by cache +// bank ID. This is purely for **performance modeling**, not a real +// implementation. + + +// MSHR dependency chain invariant: +// every cRq and pRq (for same addr) which has gone through pipeline once will be linked into the chain + +// in LLC, the head (h1) of a chain may be linked as the successor of the head (h2) of another chain +// when h2 is replacing the addr of h1 +// h1 should be waken up and sent to pipeline when replacement is done (i.e. h2 gets to WaitSt) + +interface LLCRqMshrSecureModel#( + numeric type lgBankNum, + numeric type cRqNum, + type wayT, + type tagT, + type dirPendT, + type reqT // child req type +); + interface LLCRqMshr#(cRqNum, wayT, tagT, dirPendT, reqT) mshr; +endinterface + +////////////////// +// safe version // +////////////////// +module mkLLCRqMshrSecureModel#( + function Addr getAddrFromReq(reqT r), + function Bool needDownReq(dirPendT dirPend), + dirPendT dirPendInitVal +)( + LLCRqMshrSecureModel#(lgBankNum, cRqNum, wayT, tagT, dirPendT, reqT) +) provisos ( + Alias#(bankIdT, Bit#(lgBankNum)), + Alias#(cRqIndexT, Bit#(TLog#(cRqNum))), + Alias#(slotT, LLCRqSlot#(wayT, tagT, dirPendT)), + Alias#(wayT, Bit#(_waySz)), + Alias#(tagT, Bit#(_tagSz)), + Bits#(dirPendT, _dirPendSz), + Bits#(reqT, _reqSz), + NumAlias#(bankNum, TExp#(lgBankNum)), + Mul#(bankNum, cRqPerBankNum, cRqNum), + Add#(a__, lgBankNum, AddrSz) +); + slotT slotInitVal = getLLCRqSlotInitVal(dirPendInitVal); + + // logical ordering: sendToM < sendRqToC < sendRsToDma/C < mRsDeq < pipelineResp < transfer + // We put pipelineResp < transfer to cater for deq < enq of cache pipeline + // EHR ports + Integer sendToM_port = 0; // sendToM is read-only, so use port 0 + Integer sendRqToC_port = 0; // read req/state/slot, write slot + Integer sendRsToDmaC_port = 0; // sendRsToDma/C read req/data, write state + Integer mRsDeq_port = 0; // mRsDeq only writes data + Integer pipelineResp_port = 1; // read/write lots of things + Integer transfer_port = 2; // cRqTransfer_xx, mRsTransfer_send, read/write lots of things + + // cRq req contents + Vector#(cRqNum, Ehr#(3, reqT)) reqVec <- replicateM(mkEhr(?)); + // MSHR entry state + Vector#(cRqNum, Ehr#(3, LLCRqState)) stateVec <- replicateM(mkEhr(Empty)); + // summary bit of dirPend in each entry: asserted when some dirPend[i] = ToSend + Vector#(cRqNum, Ehr#(3, Bool)) needReqChildVec <- replicateM(mkEhr(False)); + // cRq mshr slots + Vector#(cRqNum, Ehr#(3, slotT)) slotVec <- replicateM(mkEhr(slotInitVal)); + // data valid bit + Vector#(cRqNum, Ehr#(3, Bool)) dataValidVec <- replicateM(mkEhr(False)); + // data values + Vector#(cRqNum, Ehr#(3, Line)) dataVec <- replicateM(mkEhr(?)); + // successor valid bit + Vector#(cRqNum, Ehr#(3, Bool)) addrSuccValidVec <- replicateM(mkEhr(False)); + Vector#(cRqNum, Ehr#(3, Bool)) repSuccValidVec <- replicateM(mkEhr(False)); + // successor MSHR index + RegFile#(cRqIndexT, cRqIndexT) addrSuccFile <- mkRegFile(0, fromInteger(valueOf(cRqNum) - 1)); + RegFile#(cRqIndexT, cRqIndexT) repSuccFile <- mkRegFile(0, fromInteger(valueOf(cRqNum) - 1)); + // empty entry FIFO + Vector#(bankNum, Fifo#(cRqPerBankNum, cRqIndexT)) emptyEntryQ <- replicateM(mkCFFifo); + + // empty entry FIFO needs initialization + Reg#(Bool) inited <- mkReg(False); + Reg#(cRqIndexT) initIdx <- mkReg(0); + Reg#(bankIdT) initBank <- mkReg(0); + Reg#(Bit#(TLog#(cRqPerBankNum))) initPerBankCnt <- mkReg(0); + + rule initEmptyEntry(!inited); + $display("%t LLCRqMshrSecureModel %m: init empty entry %d to bank %d", + $time, initIdx, initBank); + emptyEntryQ[initBank].enq(initIdx); + // update initIdx + initIdx <= initIdx + 1; + if(initIdx == fromInteger(valueOf(cRqNum) - 1)) begin + inited <= True; + $display("%t LLCRqMshrSecureModel %m: init empty entry done", $time); + end + // update initPerBank and initBank + if(initPerBankCnt == fromInteger(valueof(cRqPerBankNum) - 1)) begin + initPerBankCnt <= 0; + initBank <= initBank + 1; + end + else begin + initPerBankCnt <= initPerBankCnt + 1; + end + endrule + + function bankIdT getBankId(Addr a); + return truncate(a >> valueof(LgLineSzBytes)); + endfunction + +`ifdef CHECK_DEADLOCK + MshrDeadlockChecker#(cRqNum) checker <- mkMshrDeadlockChecker; + FIFO#(LLCRqMshrStuck#(dirPendT, reqT)) stuckQ <- mkFIFO1; + + (* fire_when_enabled *) + rule checkDeadlock; + let stuckIdx <- checker.getStuckIdx; + if(stuckIdx matches tagged Valid .n) begin + stuckQ.enq(LLCRqMshrStuck { + req: reqVec[n][0], + state: stateVec[n][0], + waitP: slotVec[n][0].waitP, + dirPend: slotVec[n][0].dirPend + }); + end + endrule +`endif + + function Action writeSlot(Integer ehrPort, cRqIndexT n, slotT s); + action + slotVec[n][ehrPort] <= s; + // set dirPend summary bit + needReqChildVec[n][ehrPort] <= needDownReq(s.dirPend); + endaction + endfunction + + interface LLCRqMshr mshr; + + interface LLCRqMshr_transfer transfer; + method reqT getRq(cRqIndexT n); + return reqVec[n][transfer_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][transfer_port]; + endmethod + + method ActionValue#(cRqIndexT) getEmptyEntryInit(reqT r, Maybe#(Line) d) if(inited); + bankIdT bank = getBankId(getAddrFromReq(r)); + emptyEntryQ[bank].deq; + cRqIndexT n = emptyEntryQ[bank].first; + reqVec[n][transfer_port] <= r; + stateVec[n][transfer_port] <= Init; + writeSlot(transfer_port, n, slotInitVal); + dataValidVec[n][transfer_port] <= isValid(d); + dataVec[n][transfer_port] <= validValue(d); + addrSuccValidVec[n][transfer_port] <= False; + repSuccValidVec[n][transfer_port] <= False; +`ifdef CHECK_DEADLOCK + checker.initEntry(n); +`endif + return n; + endmethod + + method Bool hasEmptyEntry(reqT r); + bankIdT bank = getBankId(getAddrFromReq(r)); + return emptyEntryQ[bank].notEmpty; + endmethod + endinterface + + interface LLCRqMshr_mRsDeq mRsDeq; + method Action setData(cRqIndexT n, Maybe#(Line) d); + dataValidVec[n][mRsDeq_port] <= isValid(d); + dataVec[n][mRsDeq_port] <= fromMaybe(?, d); + endmethod + endinterface + + interface LLCRqMshr_sendToM sendToM; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendToM_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendToM_port]; + endmethod + + method Maybe#(Line) getData(cRqIndexT n); + return dataValidVec[n][sendToM_port] ? Valid (dataVec[n][sendToM_port]) : Invalid; + endmethod + endinterface + + interface LLCRqMshr_sendRsToDmaC sendRsToDmaC; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRsToDmaC_port]; + endmethod + + method Maybe#(Line) getData(cRqIndexT n); + return dataValidVec[n][sendRsToDmaC_port] ? Valid (dataVec[n][sendRsToDmaC_port]) : Invalid; + endmethod + + method Action releaseEntry(cRqIndexT n) if(inited); + bankIdT bank = getBankId(getAddrFromReq(reqVec[n][sendRsToDmaC_port])); + emptyEntryQ[bank].enq(n); + stateVec[n][sendRsToDmaC_port] <= Empty; +`ifdef CHECK_DEADLOCK + checker.releaseEntry(n); +`endif + endmethod + endinterface + + interface LLCRqMshr_sendRqToC sendRqToC; + method reqT getRq(cRqIndexT n); + return reqVec[n][sendRqToC_port]; + endmethod + + method LLCRqState getState(cRqIndexT n); + return stateVec[n][sendRqToC_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][sendRqToC_port]; + endmethod + + method Action setSlot(cRqIndexT n, slotT s); + writeSlot(sendRqToC_port, n, s); + endmethod + + method Maybe#(cRqIndexT) searchNeedRqChild(Maybe#(cRqIndexT) suggestIdx); + function Bool isNeedRqChild(cRqIndexT i); + return (stateVec[i][sendRqToC_port] == WaitOldTag || stateVec[i][sendRqToC_port] == WaitSt) + && needReqChildVec[i][sendRqToC_port]; + endfunction + if(suggestIdx matches tagged Valid .idx &&& isNeedRqChild(idx)) begin + return suggestIdx; + end + else begin + Vector#(cRqNum, cRqIndexT) idxVec = genWith(fromInteger); + return searchIndex(isNeedRqChild, idxVec); + end + endmethod + endinterface + + interface LLCRqMshr_pipelineResp pipelineResp; + method reqT getRq(cRqIndexT n); + return reqVec[n][pipelineResp_port]; + endmethod + + method LLCRqState getState(cRqIndexT n); + return stateVec[n][pipelineResp_port]; + endmethod + + method slotT getSlot(cRqIndexT n); + return slotVec[n][pipelineResp_port]; + endmethod + + method Maybe#(Line) getData(cRqIndexT n); + return dataValidVec[n][pipelineResp_port] ? Valid (dataVec[n][pipelineResp_port]) : Invalid; + endmethod + + method Maybe#(cRqIndexT) getAddrSucc(cRqIndexT n); + return addrSuccValidVec[n][pipelineResp_port] ? Valid (addrSuccFile.sub(n)) : Invalid; + endmethod + + method Maybe#(cRqIndexT) getRepSucc(cRqIndexT n); + return repSuccValidVec[n][pipelineResp_port] ? Valid (repSuccFile.sub(n)) : Invalid; + endmethod + + method Action setData(cRqIndexT n, Maybe#(Line) d); + dataValidVec[n][pipelineResp_port] <= isValid(d); + dataVec[n][pipelineResp_port] <= fromMaybe(?, d); + endmethod + + method Action setStateSlot(cRqIndexT n, LLCRqState state, slotT slot); + stateVec[n][pipelineResp_port] <= state; + writeSlot(pipelineResp_port, n, slot); + endmethod + + method Action setAddrSucc(cRqIndexT n, Maybe#(cRqIndexT) succ); + addrSuccValidVec[n][pipelineResp_port] <= isValid(succ); + addrSuccFile.upd(n, fromMaybe(?, succ)); + endmethod + + method Action setRepSucc(cRqIndexT n, Maybe#(cRqIndexT) succ); + repSuccValidVec[n][pipelineResp_port] <= isValid(succ); + repSuccFile.upd(n, fromMaybe(?, succ)); + endmethod + + method Maybe#(cRqIndexT) searchEndOfChain(Addr addr); + function Bool isEndOfChain(Integer i); + // check entry i is end of chain or not + let state = stateVec[i][pipelineResp_port]; + Bool notDone = state != Done; + Bool processedOnce = state != Empty && state != Init; + Bool addrMatch = getLineAddr(getAddrFromReq(reqVec[i][pipelineResp_port])) == getLineAddr(addr); + Bool noAddrSucc = !addrSuccValidVec[i][pipelineResp_port]; + return notDone && processedOnce && addrMatch && noAddrSucc; + endfunction + Vector#(cRqNum, Integer) idxVec = genVector; + return searchIndex(isEndOfChain, idxVec); + endmethod + endinterface + +`ifdef CHECK_DEADLOCK + interface stuck = toGet(stuckQ); +`else + interface stuck = nullGet; +`endif + + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/LLCache.bsv b/src_Core/RISCY_OOO/procs/lib/LLCache.bsv new file mode 100644 index 0000000..d718569 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/LLCache.bsv @@ -0,0 +1,452 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Vector::*; +import FIFO::*; +import Connectable::*; +import GetPut::*; +import Assert::*; +import CacheUtils::*; +import Fifo::*; +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import LLPipe::*; +import LLCRqMshr::*; +import LLCRqMshrSecureModel::*; +import LLBank::*; +import SelfInvLLPipe::*; +import SelfInvLLBank::*; +import L1CoCache::*; +import LLCDmaConnect::*; +import Performance::*; + +// Last-Level + +// whether we model the effect of MSHR partition for security purpose +`ifdef SECURITY +`ifndef DISABLE_SECURE_LLC_MSHR +`define USE_LLC_MSHR_SECURE_MODEL +`endif +`endif + +// whether we model the effect of the circular/fair arbiter at the entry point +// of LLC pipeline for security purpose +`ifdef SECURITY +`ifndef DISABLE_SECURE_LLC_ARBITER +`ifndef DISABLE_SECURE_BW +`define USE_LLC_ARBITER_SECURE_MODEL +`endif +`endif +`endif + +typedef `LOG_LLC_LINES LgLLLineNum; +typedef `LOG_LLC_WAYS LgLLWayNum; +typedef TExp#(LgLLWayNum) LLWayNum; +typedef 0 LgLLBankNum; +typedef TSub#(LgLLLineNum, TAdd#(LgLLWayNum, LgLLBankNum)) LgLLSetNum; + +typedef Bit#(LgLLBankNum) LLBankId; +typedef LgLLSetNum LLIndexSz; +typedef Bit#(LLIndexSz) LLIndex; +typedef GetTagSz#(LgLLBankNum, LgLLSetNum) LLTagSz; +typedef Bit#(LLTagSz) LLTag; +typedef Bit#(TLog#(LLWayNum)) LLWay; + + +`ifdef USE_LLC_MSHR_SECURE_MODEL +`ifndef DISABLE_SECURE_BW +typedef TDiv#(DramMaxReqs, 2) LLCRqNum; // SECURITY: limit MSHR size <= DRAM bandwidth +`else // DISABLE_SECURE_BW +typedef LLWayNum LLCRqNum; // ignore DRAM bandwidth contention, keep using the old mshr size +`endif // DISABLE_SECURE_BW +`else // !USE_LLC_MSHR_SECURE_MODEL +typedef LLWayNum LLCRqNum; +`endif // USE_LLC_MSHR_SECURE_MODEL +typedef Bit#(TLog#(LLCRqNum)) LLCRqMshrIdx; + +// all L1$ are children +typedef L1Num LLChildNum; +typedef Bit#(TLog#(LLChildNum)) LLChild; +typedef L1Way LLCRqId; + +`ifdef USE_LLC_MSHR_SECURE_MODEL +module mkLastLvCRqMshr( + LLCRqMshr#(LLChildNum, LLCRqNum, LLWay, LLTag, cRqT) +) provisos( + Alias#(cRqT, LLRq#(LLCRqId, LLCDmaReqId, LLChild)) +); + function Addr getAddr(cRqT r) = r.addr; + LLCRqMshrSecureModel#( + `SIM_LOG_LLC_MSHR_BANK_NUM, LLCRqNum, LLWay, LLTag, Vector#(LLChildNum, DirPend), cRqT + ) m <- mkLLCRqMshrSecureModel(getAddr, getNeedReqChild, getDirPendInitVal); + return m.mshr; +endmodule + +`else // !USE_LLC_MSHR_SECURE_MODEL + +`ifdef SELF_INV_CACHE + +(* synthesize *) +module mkLastLvCRqMshr( + LLCRqMshr#(LLCRqNum, LLWay, LLTag, SelfInvDirPend#(LLChild), cRqT) +) provisos( + Alias#(cRqT, LLRq#(LLCRqId, LLCDmaReqId, LLChild)) +); + function Addr getAddr(cRqT r) = r.addr; + let m <- mkLLCRqMshr(getAddr, getSelfInvNeedReqChild, getSelfInvDirPendInitVal); + return m; +endmodule + +`else // !SELF_INV_CACHE + +(* synthesize *) +module mkLastLvCRqMshr( + LLCRqMshr#(LLCRqNum, LLWay, LLTag, Vector#(LLChildNum, DirPend), cRqT) +) provisos( + Alias#(cRqT, LLRq#(LLCRqId, LLCDmaReqId, LLChild)) +); + function Addr getAddr(cRqT r) = r.addr; + let m <- mkLLCRqMshr(getAddr, getNeedReqChild, getDirPendInitVal); + return m; +endmodule + +`endif // SELF_INV_CACHE + +`endif // USE_LLC_MSHR_SECURE_MODEL + + +`ifdef USE_LLC_ARBITER_SECURE_MODEL + +`ifdef SIM_LLC_ARBITER_NUM // Model a real arbiter at the pipeline input +typedef `SIM_LLC_ARBITER_NUM SimLLCArbNum; +`else // Only model added latency at the pipline input, no bandwidth loss +typedef `SIM_LLC_ARBITER_LAT SimLLCArbLat; +`endif +(* synthesize *) +module mkLLPipeline( + LLPipe#(LgLLBankNum, LLChildNum, LLWayNum, LLIndex, LLTag, LLCRqMshrIdx) +) provisos ( + Alias#(LLPipeIn#(LLChild, LLWay, LLCRqMshrIdx), pipeInT) +); + // pipeline + LLPipe#(LgLLBankNum, LLChildNum, LLWayNum, LLIndex, LLTag, LLCRqMshrIdx) m <- mkLLPipe; + +`ifdef BSIM + // print the arbiter num + Reg#(Bool) showArbiter <- mkReg(True); + rule doShowArbiter(showArbiter); +`ifdef SIM_LLC_ARBITER_NUM + $display("[LLPipe] Arbiter size %d", valueof(SimLLCArbNum)); +`else + $display("[LLPipe] Arbiter latency %d", valueof(SimLLCArbLat)); +`endif + showArbiter <= False; + endrule +`endif // BSIM + +`ifdef SIM_LLC_ARBITER_NUM + // round-robin reg: only allow entry to pipeline when turn == 0. This + // models the effect of a circular/fair arbiter. + Reg#(Bit#(TLog#(SimLLCArbNum))) turn <- mkReg(0); + + (* fire_when_enabled, no_implicit_conditions *) + rule incrTurn; + turn <= turn == fromInteger(valueof(SimLLCArbNum) - 1) ? 0 : turn + 1; + endrule + + method Action send(pipeInT r) if(turn == 0); + m.send(r); + endmethod +`else // !SIM_LLC_ARBITER_NUM + // delay input + Vector#(SimLLCArbLat, FIFO#(pipeInT)) delayQ <- replicateM(mkFIFO); + + for(Integer i = 0; i < valueof(SimLLCArbLat) - 1; i = i+1) begin + mkConnection(toGet(delayQ[i]), toPut(delayQ[i + 1])); + end + mkConnection(toGet(delayQ[valueof(SimLLCArbLat) - 1]).get, m.send); + + method send = delayQ[0].enq; +`endif // SIM_LLC_ARBITER_NUM + + method notEmpty = m.notEmpty; + method first = m.first; + method unguard_first = m.unguard_first; + method deqWrite = m.deqWrite; +endmodule + +`else // !USE_LLC_ARBITER_SECURE_MODEL + +`ifdef SELF_INV_CACHE + +(* synthesize *) +module mkLLPipeline( + SelfInvLLPipe#(LgLLBankNum, LLChildNum, LLWayNum, LLIndex, LLTag, LLCRqMshrIdx) +); + let m <- mkSelfInvLLPipe; + return m; +endmodule + +`else // !SELF_INV_CACHE + +(* synthesize *) +module mkLLPipeline( + LLPipe#(LgLLBankNum, LLChildNum, LLWayNum, LLIndex, LLTag, LLCRqMshrIdx) +); + let m <- mkLLPipe; + return m; +endmodule + +`endif // SELF_INV_CACHE + +`endif // USE_LLC_ARBITER_SECURE_MODEL + + +`ifdef SELF_INV_CACHE +typedef SelfInvLLBank#(LgLLBankNum, LLChildNum, LLWayNum, LLIndexSz, LLTagSz, LLCRqNum, LLCRqId, LLCDmaReqId) LLBankWrapper; +typedef SelfInvLLCRqStuck#(LLChildNum, LLCRqId, LLCDmaReqId) LLCStuck; +`else // !SELF_INV_CACHE +typedef LLBank#(LgLLBankNum, LLChildNum, LLWayNum, LLIndexSz, LLTagSz, LLCRqNum, LLCRqId, LLCDmaReqId) LLBankWrapper; +typedef LLCRqStuck#(LLChildNum, LLCRqId, LLCDmaReqId) LLCStuck; +`endif // SELF_INV_CACHE + +interface LLCache; + interface ParentCacheToChild#(LLCRqId, LLChild) to_child; + interface DmaServer#(LLCDmaReqId) dma; + interface MemFifoClient#(LdMemRqId#(LLCRqMshrIdx), void) to_mem; + // detect deadlock: only in use when macro CHECK_DEADLOCK is defined + interface Get#(LLCStuck) cRqStuck; + // performance + interface Perf#(LLCPerfType) perf; +endinterface + +`ifdef SECURITY +// We rotate the addr in/out LLC to achieve set partition +// FIXME This is a hack: we simulate the performance of partitioning a large +// LLC using a smaller LLC with less partitions. So LgLLCPartitionNum should +// NOT be viewed as the number of DRAM regions. +`ifdef SIM_LOG_LLC_PARTITION_NUM +typedef `SIM_LOG_LLC_PARTITION_NUM LgLLCPartitionNum; +`else +typedef `LOG_DRAM_REGION_NUM LgLLCPartitionNum; +`endif +typedef `LOG_DRAM_REGION_SIZE LgDramRegionSz; +typedef TAdd#(TAdd#(LLIndexSz, LgLLBankNum), LgLineSzBytes) LLIndexBankOffsetSz; + +function Addr secureRotateAddr(Addr addr) provisos( + // region/partition id cannot be wider than index + bank id + Add#(LgLLCPartitionNum, a__, TAdd#(LLIndexSz, LgLLBankNum)) +); + // low bits: index + bank id + line offset without the higher bits which + // will be replaced by region/partition id + Bit#(TSub#(LLIndexBankOffsetSz, LgLLCPartitionNum)) low = truncate(addr); + // swap bits: higher bits of index + bank id to be swapped with region/partition + // id + Bit#(LgLLCPartitionNum) swap = truncate(addr >> (valueof(LLIndexBankOffsetSz) - valueof(LgLLCPartitionNum))); + // middle bits between swap and region + Bit#(TSub#(LgDramRegionSz, LLIndexBankOffsetSz)) mid = truncate(addr >> valueof(LLIndexBankOffsetSz)); + // region/partition id + Bit#(LgLLCPartitionNum) region = truncate(addr >> valueof(LgDramRegionSz)); + // high bits beyond phy mem boundary + Bit#(TSub#(AddrSz, TAdd#(LgLLCPartitionNum, LgDramRegionSz))) high = truncateLSB(addr); + // exchange swap bits with region bits + return {high, swap, mid, region, low}; +endfunction +`endif // SECURITY + +(* synthesize *) +module mkLLCache(LLCache); +`ifdef DEBUG_DMA + staticAssert(False, "DEBUG_DMA should not be defined"); +`endif + +`ifdef SELF_INV_CACHE + LLBankWrapper cache <- mkSelfInvLLBank(mkLastLvCRqMshr, mkLLPipeline); +`else // !SELF_INV_CACHE +`ifdef NO_LOAD_RESP_E + function Bool respLoadWithE(Bool fromMem) = False; +`else + function Bool respLoadWithE(Bool fromMem) = fromMem; +`endif + LLBankWrapper cache <- mkLLBank(mkLastLvCRqMshr, mkLLPipeline, respLoadWithE); +`endif // SELF_INV_CACHE + + // perf counters + Fifo#(1, LLCPerfType) perfReqQ <- mkCFFifo; +`ifdef PERF_COUNT + Fifo#(1, PerfResp#(LLCPerfType)) perfRespQ <- mkCFFifo; + + rule doPerf; + let t <- toGet(perfReqQ).get; + let d = cache.getPerfData(t); + perfRespQ.enq(PerfResp { + pType: t, + data: d + }); + endrule +`endif + +`ifdef SECURITY +`ifndef DISABLE_SECURE_LLC + +`ifdef BSIM + // print the LLC partition in simulation + Reg#(Bool) showLLCPartition <- mkReg(True); + rule doShowLLCPartition(showLLCPartition); + $fdisplay(stderr, "[LLCache] log LLC partition = %d", valueof(LgLLCPartitionNum)); + showLLCPartition <= False; + endrule +`endif // BSIM + + // rotate addr to achieve LLC set partition + interface ParentCacheToChild to_child; + interface FifoEnq rsFromC; + method notFull = cache.to_child.rsFromC.notFull; + method Action enq(CRsMsg#(LLChild) x); + let y = x; + y.addr = secureRotateAddr(x.addr); + cache.to_child.rsFromC.enq(y); + endmethod + endinterface + interface FifoEnq rqFromC; + method notFull = cache.to_child.rqFromC.notFull; + method Action enq(CRqMsg#(LLCRqId, LLChild) x); + let y = x; + y.addr = secureRotateAddr(x.addr); + cache.to_child.rqFromC.enq(y); + endmethod + endinterface + interface FifoDeq toC; + method notEmpty = cache.to_child.toC.notEmpty; + method deq = cache.to_child.toC.deq; + method PRqRsMsg#(LLCRqId, LLChild) first; + case(cache.to_child.toC.first) matches + tagged PRq .x: begin + let y = x; + y.addr = secureRotateAddr(x.addr); + return PRq (y); + end + tagged PRs .x: begin + let y = x; + y.addr = secureRotateAddr(x.addr); + return PRs (y); + end + default: return ?; + endcase + endmethod + endinterface + endinterface + + interface DmaServer dma; + interface FifoEnq memReq; + method notFull = cache.dma.memReq.notFull; + method Action enq(DmaRq#(LLCDmaReqId) x); + let y = x; + y.addr = secureRotateAddr(x.addr); + cache.dma.memReq.enq(y); + endmethod + endinterface + interface respLd = cache.dma.respLd; + interface respSt = cache.dma.respSt; + endinterface + + interface MemFifoClient to_mem; + interface FifoDeq toM; + method notEmpty = cache.to_mem.toM.notEmpty; + method deq = cache.to_mem.toM.deq; + method ToMemMsg#(LdMemRqId#(LLCRqMshrIdx), void) first; + case(cache.to_mem.toM.first) matches + tagged Ld .x: begin + let y = x; + y.addr = secureRotateAddr(x.addr); + return Ld (y); + end + tagged Wb .x: begin + let y = x; + y.addr = secureRotateAddr(x.addr); + return Wb (y); + end + default: return ?; + endcase + endmethod + endinterface + interface rsFromM = cache.to_mem.rsFromM; + endinterface + + interface Get cRqStuck; + method ActionValue#(LLCStuck) get; + let x <- cache.cRqStuck.get; + let y = x; + y.addr = secureRotateAddr(x.addr); + return y; + endmethod + endinterface + +`else // DISABLE_SECURE_LLC + + interface to_child = cache.to_child; + interface dma = cache.dma; + interface to_mem = cache.to_mem; + interface cRqStuck = cache.cRqStuck; + +`endif // DISABLE_SECURE_LLC +`else // !SECURITY + + interface to_child = cache.to_child; + interface dma = cache.dma; + interface to_mem = cache.to_mem; + interface cRqStuck = cache.cRqStuck; + +`endif // SECURITY + + interface Perf perf; + method Action setStatus(Bool stats); + cache.setPerfStatus(stats); + endmethod + method Action req(LLCPerfType r); + perfReqQ.enq(r); + endmethod + method ActionValue#(PerfResp#(LLCPerfType)) resp; +`ifdef PERF_COUNT + perfRespQ.deq; + return perfRespQ.first; +`else + perfReqQ.deq; + return PerfResp { + pType: perfReqQ.first, + data: 0 + }; +`endif + endmethod + method Bool respValid; +`ifdef PERF_COUNT + return perfRespQ.notEmpty; +`else + return perfReqQ.notEmpty; +`endif + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/LatencyTimer.bsv b/src_Core/RISCY_OOO/procs/lib/LatencyTimer.bsv new file mode 100644 index 0000000..56b3853 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/LatencyTimer.bsv @@ -0,0 +1,84 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import Types::*; + +// a timer to track latency of multiple misses + +// To prevent assert failure, start() and done() methods should be called even +// when performance stats is not on + +interface LatencyTimer#(numeric type num, numeric type timeWidth); + method Action start(Bit#(TLog#(num)) idx); + method ActionValue#(Bit#(timeWidth)) done(Bit#(TLog#(num)) idx); +endinterface + +module mkLatencyTimer(LatencyTimer#(num, timeWidth)) provisos( + //Add#(1, a__, num), + Alias#(idxT, Bit#(TLog#(num))), + Alias#(timeT, Bit#(timeWidth)) +); + Reg#(Vector#(num, timeT)) timer <- mkReg(replicate(0)); + Reg#(Vector#(num, Bool)) started <- mkReg(replicate(False)); // for checking purposes + + RWire#(idxT) startEn <- mkRWire; + RWire#(idxT) doneEn <- mkRWire; + + (* fire_when_enabled, no_implicit_conditions *) + rule canon; + Vector#(num, timeT) timerNext = timer; + Vector#(num, Bool) startedNext = started; + // apply done + if(doneEn.wget matches tagged Valid .i) begin + startedNext[i] = False; + doAssert(started[i], "timer must be valid"); + end + // incr timer + for(Integer i = 0; i < valueof(num); i = i+1) begin + timeT t = timer[i]; + if(t < maxBound) begin + timerNext[i] = t + 1; + end + end + // apply start: new timer should be 1 (counting this cycle) + if(startEn.wget matches tagged Valid .i) begin + timerNext[i] = 1; + startedNext[i] = True; + // do not assert this, because things may be killed + //doAssert(!started[i], "timer must be invalid"); + end + // update states + timer <= timerNext; + started <= startedNext; + endrule + + method Action start(idxT i); + startEn.wset(i); + endmethod + + method ActionValue#(timeT) done(idxT i); + doneEn.wset(i); + return timer[i]; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/MMIOAddrs.bsv b/src_Core/RISCY_OOO/procs/lib/MMIOAddrs.bsv new file mode 100644 index 0000000..84eac2d --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MMIOAddrs.bsv @@ -0,0 +1,62 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import CCTypes::*; + +// data aligned addr +typedef TSub#(AddrSz, LgDataSzBytes) DataAlignedAddrSz; +typedef Bit#(DataAlignedAddrSz) DataAlignedAddr; + +function DataAlignedAddr getDataAlignedAddr(Addr a) = truncateLSB(a); + +// base addr for each MMIO reg/device (aligned to Data) +DataAlignedAddr bootRomBaseAddr = getDataAlignedAddr(64'h00001000); +DataAlignedAddr memLoaderBaseAddr = getDataAlignedAddr(64'h01000000); +DataAlignedAddr msipBaseAddr = getDataAlignedAddr(64'h02000000); +DataAlignedAddr mtimecmpBaseAddr = getDataAlignedAddr(64'h02004000); +DataAlignedAddr mtimeBaseAddr = getDataAlignedAddr(64'h0200bff8); +DataAlignedAddr mainMemBaseAddr = getDataAlignedAddr(64'h80000000); + +// XXX Each msip reg is 32-bit, while mtime and each mtimecmp are 64-bit. We +// assume Data is 64-bit. We hard code this relation in all MMIO logic. + +// Mem loader has 2 64-bit regs +// offset 0: start addr for init mem (write to start mem initialization) +// offset 1: busy (read to determine if initialization is done) + +// upper bound addr (bound itself is invalid addr) for each MMIO reg/device +// (aligned to Data) +DataAlignedAddr bootRomBoundAddr = bootRomBaseAddr + + fromInteger(valueof(TExp#(LgBootRomSzData))); +DataAlignedAddr memLoaderBoundAddr = memLoaderBaseAddr + 2; +DataAlignedAddr msipBoundAddr = msipBaseAddr + + fromInteger(valueof(TDiv#(CoreNum, 2))); +DataAlignedAddr mtimecmpBoundAddr = mtimecmpBaseAddr + + fromInteger(valueof(CoreNum)); + +// offset within each MMIO reg/device (aligned to Data) +typedef Bit#(TLog#(TDiv#(CoreNum, 2))) MSIPDataAlignedOffset; +typedef CoreId MTimCmpDataAlignedOffset; +typedef Bit#(1) MemLoaderAlignedOffset; diff --git a/src_Core/RISCY_OOO/procs/lib/MMIOCore.bsv b/src_Core/RISCY_OOO/procs/lib/MMIOCore.bsv new file mode 100644 index 0000000..274c256 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MMIOCore.bsv @@ -0,0 +1,208 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ConfigReg::*; +import ProcTypes::*; +import MMIOAddrs::*; +import CacheUtils::*; +import Fifo::*; +import Amo::*; +import MMIOInst::*; + +// local MMIO logic in each core (MMIOCore) +// Every MMIO req from the core is directly passed to the platform, while this +// logic handles req from the platform when platform is processing core req or +// posting timer interrupt. + +interface MMIOCoreToPlatform; + interface FifoDeq#(MMIOCRq) cRq; + interface FifoEnq#(MMIOPRs) pRs; + interface FifoEnq#(MMIOPRq) pRq; + interface FifoDeq#(MMIOCRs) cRs; + // core keeps a copy of the mtime reg. This method allows the platform to + // inform the core to change time CSR. + method Action setTime(Data t); +endinterface + +interface MMIOCore; + // is the PHYSICAL mem access addr an MMIO addr + method Bool isMMIOAddr(Addr addr); + // for mem exe pipeline to send/recv MMIO req/resp + method Action dataReq(MMIOCRq r); + method MMIODataPRs dataRespVal; + method Action dataRespDeq; + // set tohost & fromhost addr + method Action setHtifAddrs(Addr toHost, Addr fromHost); + // signal that we have a pending pRq, so some parts of the core (e.g., + // rename/issue) may yield themselves. + method Bool hasPendingPRq; + // methods to platform + interface MMIOCoreToPlatform toP; +endinterface + +interface MMIOCoreInput; + // ifc from inst fetch + interface MMIOInstToCore fetch; + // MMIOCore needs to access MSIP and MTIP CSRs + method Bit#(1) getMSIP; + method Action setMSIP(Bit#(1) v); + method Action setMTIP(Bit#(1) v); + // guard for accessing MSIP or MTIP + method Bool noInflightCSRInstOrInterrupt; + // MMIOCore needs to pass mtime to CSRF + method Action setTime(Data t); +endinterface + +module mkMMIOCore#(MMIOCoreInput inIfc)(MMIOCore); + // HTIF mem mapped addrs + Reg#(DataAlignedAddr) toHostAddr <- mkConfigReg(0); + Reg#(DataAlignedAddr) fromHostAddr <- mkConfigReg(0); + + // FIFOs connected to memory pipeline + Fifo#(1, MMIOCRq) dataReqQ <- mkCFFifo; + Fifo#(1, MMIODataPRs) dataRespQ <- mkCFFifo; + // we limit to at most 1 data MMIO req by mem pipeline, so that this req + // will not clog requests from other cores + Fifo#(1, void) dataPendQ <- mkCFFifo; + + // FIFOs connected to platform + Fifo#(1, MMIOCRq) cRqQ <- mkCFFifo; + Fifo#(1, MMIOPRs) pRsQ <- mkCFFifo; + Fifo#(1, MMIOPRq) pRqQ <- mkCFFifo; + Fifo#(1, MMIOCRs) cRsQ <- mkCFFifo; + + // PRq from platform will access MSIP or MTIP. As explained in CSRF, + // accessing these bits may break the atomicity of CSRXXX inst or interrupt + // handling, so we need to check for them. Note that exception handling + // does not touch MSIP/MTIP. Besides, a inst with exception may be after + // the MMIO inst that accesses its own MSIP. Waiting for the clear of + // exception may cause deadlock. + rule handlePRq(inIfc.noInflightCSRInstOrInterrupt); + pRqQ.deq; + MMIOPRq req = pRqQ.first; + MMIOCRs resp = MMIOCRs {data: ?}; + case(req.target) + MSIP: begin + if(req.func == St) begin + inIfc.setMSIP(req.data[0]); + end + else begin + // both AMO and Ld need the original data as resp + Bit#(1) msip = inIfc.getMSIP; + resp.data = msip; + // AMO also needs to write + if(req.func matches tagged Amo .amoFunc) begin + let amoInst = AmoInst { + func: amoFunc, + doubleWord: False, + aq: False, + rl: False + }; + let newData = amoExec(amoInst, zeroExtend(msip), + zeroExtend(req.data), False); + inIfc.setMSIP(newData[0]); + end + end + end + MTIP: begin + if(req.func == St) begin + inIfc.setMTIP(req.data[0]); + end + else begin + doAssert(False, "platform can only write MTIP"); + end + end + default: doAssert(False, "unknown target"); + endcase + // resp to platform + cRsQ.enq(resp); + endrule + + // arbitrate requests from fetch stage and mem stage; prioritize mem stage + rule sendDataReq; + dataReqQ.deq; + cRqQ.enq(dataReqQ.first); + endrule + + (* descending_urgency = "sendDataReq, sendInstReq" *) + rule sendInstReq; + inIfc.fetch.instReq.deq; + let {addr, maxWay} = inIfc.fetch.instReq.first; + cRqQ.enq(MMIOCRq { + addr: addr, + func: Inst (maxWay), + byteEn: ?, + data: ? + }); + endrule + + // dispatch resp + rule sendDataResp(pRsQ.first matches tagged DataAccess .r); + pRsQ.deq; + dataRespQ.enq(r); + endrule + + rule sendInstResp(pRsQ.first matches tagged InstFetch .r); + pRsQ.deq; + inIfc.fetch.instResp.enq(r); + endrule + + method Bool isMMIOAddr(Addr addr); + let a = getDataAlignedAddr(addr); + return a < mainMemBaseAddr || a == toHostAddr || a == fromHostAddr; + endmethod + + method Action dataReq(MMIOCRq r); + dataReqQ.enq(r); + dataPendQ.enq(?); + endmethod + + method MMIODataPRs dataRespVal if(dataPendQ.notEmpty); + return dataRespQ.first; + endmethod + + method Action dataRespDeq; + dataPendQ.deq; + dataRespQ.deq; + endmethod + + method Action setHtifAddrs(Addr toHost, Addr fromHost); + toHostAddr <= getDataAlignedAddr(toHost); + fromHostAddr <= getDataAlignedAddr(fromHost); + inIfc.fetch.setHtifAddrs(toHost, fromHost); + endmethod + + method Bool hasPendingPRq; + return pRqQ.notEmpty; + endmethod + + interface MMIOCoreToPlatform toP; + interface cRq = toFifoDeq(cRqQ); + interface pRs = toFifoEnq(pRsQ); + interface pRq = toFifoEnq(pRqQ); + interface cRs = toFifoDeq(cRsQ); + method setTime = inIfc.setTime; + endinterface +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv b/src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv new file mode 100644 index 0000000..221abf5 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv @@ -0,0 +1,107 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import ConfigReg::*; +import Fifo::*; +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import CacheUtils::*; +import MMIOAddrs::*; + +interface MMIOInstToCore; + interface FifoDeq#(Tuple2#(Addr, SupWaySel)) instReq; + interface FifoEnq#(Vector#(SupSize, Maybe#(Instruction))) instResp; + method Action setHtifAddrs(Addr toHost, Addr fromHost); +endinterface + +typedef enum { + MainMem, + BootRom, + Fault +} InstFetchTarget deriving(Bits, Eq, FShow); + +interface MMIOInst; + // Figure out where to fetch the inst, i.e., from boot rom or main memory. + method InstFetchTarget getFetchTarget(Addr phyPc); + // When req boot rom, need to specify the number of instructions to fetch, + // i.e., maxWay + 1 + method Action bootRomReq(Addr phyPc, SupWaySel maxWay); + // The return type is same as I$. An entry is Invalid if it is an access + // fault or not requested before. + method ActionValue#(Vector#(SupSize, Maybe#(Instruction))) bootRomResp; + interface MMIOInstToCore toCore; +endinterface + +(* synthesize *) +module mkMMIOInst(MMIOInst); + // record tohost/fromhost addrs to check inst access fault. Since this + // MMIOInst module will be placed inside the fetch stage and we want to + // synthesize fetch stage, we need to add these two regs instead of passing + // in two reg interfaces. + Reg#(DataAlignedAddr) toHostAddr <- mkConfigReg(0); + Reg#(DataAlignedAddr) fromHostAddr <- mkConfigReg(0); + // MMIO requests are handled in a very slow manner at platform, so no need + // to use large FIFO here + Fifo#(1, Tuple2#(Addr, SupWaySel)) reqQ <- mkCFFifo; + Fifo#(1, Vector#(SupSize, Maybe#(Instruction))) respQ <- mkCFFifo; + // To prevent inst fetch requests from clogging the network, we limit to at + // most 1 pending req. The resp for the pending req will be buffered in + // respQ, no affecting other MMIO accesses. + Fifo#(1, void) pendQ <- mkCFFifo; + + method InstFetchTarget getFetchTarget(Addr phyPc); + let addr = getDataAlignedAddr(phyPc); + if(addr >= bootRomBaseAddr && addr < bootRomBoundAddr) begin + return BootRom; + end + else if(addr >= mainMemBaseAddr && + addr != toHostAddr && addr != fromHostAddr) begin + return MainMem; + end + else begin + return Fault; + end + endmethod + + method Action bootRomReq(Addr phyPc, SupWaySel maxWay); + reqQ.enq(tuple2(phyPc, maxWay)); + pendQ.enq(?); + endmethod + + method ActionValue#(Vector#(SupSize, Maybe#(Instruction))) bootRomResp; + pendQ.deq; + respQ.deq; + return respQ.first; + endmethod + + interface MMIOInstToCore toCore; + interface instReq = toFifoDeq(reqQ); + interface instResp = toFifoEnq(respQ); + method Action setHtifAddrs(Addr toHost, Addr fromHost); + toHostAddr <= getDataAlignedAddr(toHost); + fromHostAddr <= getDataAlignedAddr(fromHost); + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/MemLoader.bsv b/src_Core/RISCY_OOO/procs/lib/MemLoader.bsv new file mode 100644 index 0000000..3369d34 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MemLoader.bsv @@ -0,0 +1,292 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// mem loader: responsible for initializing memory + +import Clocks::*; +import Assert::*; +import Connectable::*; +import FShow::*; +import FIFO::*; +import Vector::*; +import Fifo::*; +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import CacheUtils::*; +import MMIOAddrs::*; +import MemLoaderIF::*; +import SyncFifo::*; + +// messages from host +typedef struct { + Bool valid; + Addr addr; +} HostWrAddr deriving(Bits, Eq, FShow); + +typedef struct { + Data data; + Bit#(DataSzBytes) byteEn; + Bool last; +} HostWrData deriving(Bits, Eq, FShow); + +interface MemLoaderIndInv; + method ActionValue#(Addr) start; + method Action wrDone; +endinterface + +instance Connectable#(MemLoaderIndInv, MemLoaderIndication); + module mkConnection#(MemLoaderIndInv inv, MemLoaderIndication ind)(Empty); + rule doStart; + let addr <- inv.start; + ind.start(addr); + endrule + rule doWrDone; + inv.wrDone; + ind.wrDone; + endrule + endmodule +endinstance + +// messages to LLC +typedef void MemLoaderMemReqId; +typedef DmaRq#(MemLoaderMemReqId) MemLoaderMemReq; + +interface MemLoaderMemClient; + interface FifoDeq#(MemLoaderMemReq) memReq; + interface FifoEnq#(MemLoaderMemReqId) respSt; +endinterface + +// MMIO +interface MemLoaderMMIO; + method ActionValue#(MMIODataPRs) req(MemLoaderAlignedOffset offset, + ByteEn wrBE, Data wrData); +endinterface + +interface MemLoader; + // MMIO ifc + interface MemLoaderMMIO mmio; + // ifc to LLC + interface MemLoaderMemClient to_mem; + // request & indication inverse, under portal clock domain + interface MemLoaderRequest hostReq; + interface MemLoaderIndInv hostIndInv; +endinterface + +// this module should be clocked under user domain +(* synthesize *) +module mkMemLoader#(Clock portalClk, Reset portalRst)(MemLoader); + Bool verbose = True; + + // MMIO regs + Reg#(Addr) memStartAddr <- mkReg(0); + Reg#(Bool) busy <- mkReg(False); + + // states to handle writes from host + // whether we are working on a series of writes + Reg#(Bool) writing <- mkReg(False); + // counter of pending (not acked) stores to LLC + Reg#(Bit#(8)) pendStCnt <- mkReg(0); + // whether we should expect more write data from host for this series + Reg#(Bool) expectWrData <- mkReg(False); + // form req to LLC + Reg#(LineDataOffset) reqSel <- mkRegU; + Reg#(LineAddr) reqAddr <- mkRegU; + Reg#(Line) reqData <- mkRegU; + Reg#(Vector#(LineSzData, Bit#(DataSzBytes))) reqBE <- mkRegU; + + // sync FIFOs to cross to portal clk + Clock userClk <- exposeCurrentClock; + Reset userRst <- exposeCurrentReset; + SyncFIFOIfc#(HostWrAddr) hostWrAddrQ <- mkSyncFifo(1, portalClk, portalRst, userClk, userRst); + SyncFIFOIfc#(HostWrData) hostWrDataQ <- mkSyncFifo(1, portalClk, portalRst, userClk, userRst); + SyncFIFOIfc#(Addr) hostStartQ <- mkSyncFifo(1, userClk, userRst, portalClk, portalRst); + SyncFIFOIfc#(void) hostWrDoneQ <- mkSyncFifo(1, userClk, userRst, portalClk, portalRst); + + // FIFOs to LLC + Fifo#(1, MemLoaderMemReq) memReqQ <- mkCFFifo; + Fifo#(1, MemLoaderMemReqId) respStQ <- mkCFFifo; + + rule doNewWrite(busy && !writing); + hostWrAddrQ.deq; + HostWrAddr req = hostWrAddrQ.first; + if(req.valid) begin + // new write series, setup regs + writing <= True; + pendStCnt <= 0; + expectWrData <= True; + reqSel <= getLineDataOffset(req.addr); + reqAddr <= getLineAddr(req.addr); + reqBE <= replicate(0); + // check addr align to Data + Bit#(LgDataSzBytes) offset = truncate(req.addr); + doAssert(offset == 0, "write addr not aligned to Data"); + end + else begin + // all writes done, reset busy + busy <= False; + end + if(verbose) begin + $display("[MemLoader doNewWrite] ", fshow(req)); + end + endrule + + // check counter overflow in guard + rule doStReq(writing && expectWrData && pendStCnt != maxBound); + // get write data from host + hostWrDataQ.deq; + HostWrData wr = hostWrDataQ.first; + // merge with req data & BE + Line newData = reqData; + Vector#(LineSzData, Bit#(DataSzBytes)) newBE = reqBE; + newData[reqSel] = wr.data; + newBE[reqSel] = wr.byteEn; + // common state update + expectWrData <= !wr.last; + reqData <= newData; + reqSel <= reqSel + 1; + reqAddr <= reqSel == maxBound ? reqAddr + 1 : reqAddr; + // print + if(verbose) begin + $display("[MemLoader doStReq] ", fshow(wr), + " ; reqData ", fshow(reqData), " ; reqBE " ,fshow(reqBE), + " ; reqSel %d ; reqAddr %x", reqSel, reqAddr); + end + // we need to req LLC when: (1) fill up a line OR (2) last host busrt + if(reqSel == maxBound || wr.last) begin + MemLoaderMemReq req = DmaRq { + addr: {reqAddr, 0}, + byteEn: unpack(pack(newBE)), + data: newData, + id: ? + }; + if(verbose) begin + $display("[MemLoader doStReq] req to LLC ", fshow(req)); + end + // reset BE for next fresh LLC req + reqBE <= replicate(0); + // only send real write to LLC, otherwise may spawn orphan read resp + if(req.byteEn != replicate(False)) begin + memReqQ.enq(req); + pendStCnt <= pendStCnt + 1; + end + else begin + doAssert(False, "write req cannot have zero BE"); + end + end + else begin + reqBE <= newBE; + end + endrule + + rule doStResp(writing); + if(verbose) begin + $display("[MemLoader doStResp] pend st cnt %d, expect wr data %d", + pendStCnt, expectWrData); + end + // get st resp + respStQ.deq; + doAssert(pendStCnt > 0, "pend st cnt underflow"); + let pendStCntNext = pendStCnt - 1; + pendStCnt <= pendStCntNext; + if(pendStCntNext == 0 && !expectWrData) begin + // we have finished this write series + hostWrDoneQ.enq(?); + writing <= False; + end + endrule + + // We don't resolve rule conflicts here because this module does not need + // to be fast. + + interface MemLoaderMMIO mmio; + method ActionValue#(MMIODataPRs) req(MemLoaderAlignedOffset offset, + ByteEn wrBE, Data wrData); + if(wrBE == replicate(False)) begin + return MMIODataPRs { + valid: True, + data: offset == 0 ? memStartAddr : zeroExtend(pack(busy)) + }; + end + else begin + if(offset == 0) begin + // only write mem start addr when not busy + if(!busy) begin + Vector#(DataSzBytes, Bit#(8)) wrVec = unpack(wrData); + Vector#(DataSzBytes, Bit#(8)) newVec = unpack(memStartAddr); + for(Integer i = 0; i < valueof(DataSzBytes); i = i+1) begin + if(wrBE[i]) begin + newVec[i] = wrVec[i]; + end + end + memStartAddr <= pack(newVec); + // become busy and ask host to start transmitting data + busy <= True; + hostStartQ.enq(pack(newVec)); + end + return MMIODataPRs { + valid: True, + data: ? + }; + end + else begin + return MMIODataPRs { + valid: False, + data: ? + }; + end + end + endmethod + endinterface + + interface MemLoaderMemClient to_mem; + interface memReq = toFifoDeq(memReqQ); + interface respSt = toFifoEnq(respStQ); + endinterface + + interface MemLoaderRequest hostReq; + method Action wrAddr(Bool valid, Addr addr); + hostWrAddrQ.enq(HostWrAddr { + valid: valid, + addr: addr + }); + endmethod + method Action wrData(Data data, Bit#(DataSzBytes) byteEn, Bool last); + hostWrDataQ.enq(HostWrData { + data: data, + byteEn: byteEn, + last: last + }); + endmethod + endinterface + + interface MemLoaderIndInv hostIndInv; + method ActionValue#(Addr) start; + hostStartQ.deq; + return hostStartQ.first; + endmethod + method Action wrDone; + hostWrDoneQ.deq; + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/MemLoaderIF.bsv b/src_Core/RISCY_OOO/procs/lib/MemLoaderIF.bsv new file mode 100644 index 0000000..bcedd67 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MemLoaderIF.bsv @@ -0,0 +1,49 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + + +// This is the connectal interface for a mem loader backed by connectal + +// When the mem loader receives the request from RISC-V processor to initialize +// memory, it will send indication to host. And then host will keep writing +// data to the mem loader, and mem loader should send these writes to the LLC +// of RISC-V processor. + +// The interface for host to write is similar to AXI. Write addr should be +// aligned w.r.t 8B. + +interface MemLoaderRequest; + // addr channel for host writes. A valid addr is the starting addr for a + // series of sequentail writes. An invalid addr means all writes are done. + method Action wrAddr(Bool valid, Bit#(64) addr); + // data channel for host writes + method Action wrData(Bit#(64) data, Bit#(8) byteEn, Bool last); +endinterface + +interface MemLoaderIndication; + // ask host to start write data; memStartAddr is the begin addr to + // initialize memory (for sanity check at host side) + method Action start(Bit#(64) memStartAddr); + // signal that the requested series of writes is done + method Action wrDone; +endinterface diff --git a/src_Core/RISCY_OOO/procs/lib/MemoryTypes.bsv b/src_Core/RISCY_OOO/procs/lib/MemoryTypes.bsv new file mode 100644 index 0000000..4a524cd --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MemoryTypes.bsv @@ -0,0 +1,43 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Types::*; +import Vector::*; +import ClientServer::*; + +// typedefs for mem access performed by processor +// cache line is defined in CacheUtils.bsv + +typedef Data MemResp; + +typedef enum{Ld, St, Lr, Sc, Amo} MemOp deriving(Eq,Bits,FShow); // add more ops + +Bit#(3) memB = 3'b000; +Bit#(3) memH = 3'b001; +Bit#(3) memW = 3'b010; +Bit#(3) memD = 3'b011; +Bit#(3) memBU = 3'b100; +Bit#(3) memHU = 3'b101; +Bit#(3) memWU = 3'b110; + diff --git a/src_Core/RISCY_OOO/procs/lib/MsgFifo.bsv b/src_Core/RISCY_OOO/procs/lib/MsgFifo.bsv new file mode 100644 index 0000000..dee05bc --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MsgFifo.bsv @@ -0,0 +1,122 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Fifo::*; + +typedef union tagged { + reqT Req; + respT Resp; +} CacheMsg#(type reqT, type respT) deriving(Bits, Eq); + +interface MsgFifo#(numeric type n, type reqT, type respT); + // enq port + method Bool reqNotFull; + method Bool respNotFull; + method Action enqReq(reqT r); + method Action enqResp(respT r); + // deq port + method Bool notEmpty; + method Bool reqNotEmpty; + method Bool respNotEmpty; + method Action deq; + method CacheMsg#(reqT, respT) first; +endinterface + +interface MsgFifoEnq#(type reqT, type respT); + method Bool reqNotFull; + method Bool respNotFull; + method Action enqReq(reqT r); + method Action enqResp(respT r); +endinterface + +function MsgFifoEnq#(reqT, respT) toMsgFifoEnq(MsgFifo#(n, reqT, respT) ifc); + return (interface MsgFifoEnq; + method reqNotFull = ifc.reqNotFull; + method respNotFull = ifc.respNotFull; + method enqReq = ifc.enqReq; + method enqResp = ifc.enqResp; + endinterface); +endfunction + +interface MsgFifoDeq#(type reqT, type respT); + method Bool notEmpty; + method Bool reqNotEmpty; + method Bool respNotEmpty; + method Action deq; + method CacheMsg#(reqT, respT) first; +endinterface + +function MsgFifoDeq#(reqT, respT) toMsgFifoDeq(MsgFifo#(n, reqT, respT) ifc); + return (interface MsgFifoDeq; + method notEmpty = ifc.notEmpty; + method reqNotEmpty = ifc.reqNotEmpty; + method respNotEmpty = ifc.respNotEmpty; + method deq = ifc.deq; + method first = ifc.first; + endinterface); +endfunction + +module mkMsgFifo(MsgFifo#(n, reqT, respT)) provisos( + Bits#(reqT, reqW), + Bits#(respT, respW), + Add#(a__, 1, n) +); + Fifo#(n, reqT) reqQ <- mkCFFifo; + Fifo#(n, respT) respQ <- mkCFFifo; + + method reqNotFull = reqQ.notFull; + method respNotFull = respQ.notFull; + + method Action enqReq(reqT r); + reqQ.enq(r); + endmethod + + method Action enqResp(respT r); + respQ.enq(r); + endmethod + + method Bool notEmpty = reqQ.notEmpty || respQ.notEmpty; + method Bool reqNotEmpty = reqQ.notEmpty; + method Bool respNotEmpty = respQ.notEmpty; + + method CacheMsg#(reqT, respT) first if(reqQ.notEmpty || respQ.notEmpty); + // resp has higher priority than req + if(respQ.notEmpty) begin + return (Resp (respQ.first)); + end + else begin + return (Req (reqQ.first)); + end + endmethod + + method Action deq if(reqQ.notEmpty || respQ.notEmpty); + // resp has higher priority than req + if(respQ.notEmpty) begin + respQ.deq; + end + else begin + reqQ.deq; + end + endmethod +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/MulDiv.bsv b/src_Core/RISCY_OOO/procs/lib/MulDiv.bsv new file mode 100644 index 0000000..e05326a --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/MulDiv.bsv @@ -0,0 +1,219 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import BuildVector::*; +import Types::*; +import ProcTypes::*; +import Fifo::*; +import FIFO::*; +import XilinxIntMul::*; +import XilinxIntDiv::*; +import HasSpecBits::*; +import SpecFifo::*; +import SpecPoisonFifo::*; + +export MulDivResp(..); +export MulDivExec(..); +export mkMulDivExec; + +function Bool isMulFunc(MulDivFunc func); + return (case(func) + Mul, Mulh: True; + default: False; + endcase); +endfunction + +function Bool isDivFunc(MulDivFunc func); + return (case(func) + Div, Rem: True; + default: False; + endcase); +endfunction + +function XilinxIntMulSign getXilinxMulSign(MulDivSign s); + return (case(s) + Signed: (Signed); + Unsigned: (Unsigned); + default: (SignedUnsigned); + endcase); +endfunction + +function Bool isDivSigned(MulDivSign s); + return s == Signed; // there is no SignedUnsigned for div +endfunction + +// resp type +typedef struct { + Data data; + Maybe#(PhyDst) dst; + InstTag tag; + // spec bits is not used in later stage, so not included here +} MulDivResp deriving(Bits, Eq, FShow); + +interface MulDivExec; + // input req + method Action exec(MulDivInst mdInst, Data rVal1, Data rVal2, + Maybe#(PhyDst) dst, InstTag tag, SpecBits spec_bits); + // output + method ActionValue#(MulDivResp) mulResp; + method ActionValue#(MulDivResp) divResp; + // speculation + interface SpeculationUpdate specUpdate; +endinterface + +// spec fifos in parallel with func units +typedef struct { + MulDivFunc func; + Bool w; // op32 + // generic bookkeepings + Maybe#(PhyDst) dst; + InstTag tag; +} MulDivExecInfo deriving(Bits, Eq, FShow); + +typedef SpecPoisonFifo#(`BOOKKEEPING_INT_MUL_SIZE, MulDivExecInfo) MulExecQ; +(* synthesize *) +module mkMulExecQ(MulExecQ); + let m <- mkSpecPoisonFifo(True); // lazy enq + return m; +endmodule + +typedef SpecPoisonFifo#(2, MulDivExecInfo) DivExecQ; +(* synthesize *) +module mkDivExecQ(DivExecQ); + let m <- mkSpecPoisonFifo(True); // lazy enq + return m; +endmodule + +// don't synthesize to optimize guard of exec +module mkMulDivExec(MulDivExec); + Bool verbose = False; + + XilinxIntMul#(void) mulUnit <- mkXilinxIntMul; + XilinxIntDiv#(void) divUnit <- mkXilinxIntDiv; + + let mulQ <- mkMulExecQ; + let divQ <- mkDivExecQ; + + // drain poisoned resp + rule deqMulPoisoned(mulQ.first_poisoned); + mulQ.deq; + mulUnit.deqResp; + endrule + rule deqDivPoisoned(divQ.first_poisoned); + divQ.deq; + divUnit.deqResp; + endrule + + method Action exec(MulDivInst mdInst, Data rVal1, Data rVal2, + Maybe#(PhyDst) dst, InstTag tag, SpecBits spec_bits); + if(verbose) begin + $display("[MulDiv] ", fshow(mdInst), ", ", + fshow(rVal1), ", ", fshow(rVal2)); + end + + // get the operands, we need to extend correctly in case of OP32. This + // does not matter for MULW but matters for DIVW. + Data a = rVal1; + Data b = rVal2; + if(mdInst.w) begin + a = mdInst.sign == Unsigned ? zeroExtend(rVal1[31:0]) : + signExtend(rVal1[31:0]); + b = mdInst.sign == Signed ? signExtend(rVal2[31:0]) : + zeroExtend(rVal2[31:0]); + end + + // issue to func unit & bookkeeping fifo + let info = MulDivExecInfo { + func: mdInst.func, + w: mdInst.w, + dst: dst, + tag: tag + }; + if(isMulFunc(mdInst.func)) begin + mulUnit.req(a, b, getXilinxMulSign(mdInst.sign), ?); + mulQ.enq(ToSpecFifo { + data: info, + spec_bits: spec_bits + }); + end + else begin + divUnit.req(a, b, isDivSigned(mdInst.sign), ?); + divQ.enq(ToSpecFifo { + data: info, + spec_bits: spec_bits + }); + end + endmethod + + // output + method ActionValue#(MulDivResp) mulResp if(!mulQ.first_poisoned); + mulUnit.deqResp; + mulQ.deq; + let info = mulQ.first_data.data; + doAssert(isMulFunc(info.func), "must be mul func"); + // get result data + Data data = (case(info.func) + Mul : (truncate(mulUnit.product)); + Mulh : (truncateLSB(mulUnit.product)); + default: ?; + endcase); + // correct for OP32 instructions + if (info.w) begin + data = signExtend(data[31:0]); + end + return MulDivResp { + data: data, + dst: info.dst, + tag: info.tag + }; + endmethod + + method ActionValue#(MulDivResp) divResp if(!divQ.first_poisoned); + divUnit.deqResp; + divQ.deq; + let info = divQ.first_data.data; + doAssert(isDivFunc(info.func), "must be div func"); + // get result data + Data data = (case(info.func) + Div : (divUnit.quotient); + Rem : (divUnit.remainder); + default: ?; + endcase); + // correct for OP32 instructions + if (info.w) begin + data = signExtend(data[31:0]); + end + return MulDivResp { + data: data, + dst: info.dst, + tag: info.tag + }; + endmethod + + interface specUpdate = joinSpeculationUpdate(vec( + mulQ.specUpdate, + divQ.specUpdate + )); +endmodule + diff --git a/src_Core/RISCY_OOO/procs/lib/Performance.bsv b/src_Core/RISCY_OOO/procs/lib/Performance.bsv new file mode 100644 index 0000000..67e0dbe --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Performance.bsv @@ -0,0 +1,206 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import FShow::*; + +// performance counter typedefs + +// query performance counters in each stage/module +typedef enum { + L1ILdCnt, + L1ILdMissCnt, + L1ILdMissLat, + L1IReconcileCnt +} L1IPerfType deriving(Bits, Eq, FShow); + +typedef enum { + L1DLdCnt, + L1DLdMissCnt, + L1DLdMissLat, + L1DStCnt, + L1DStMissCnt, + L1DStMissLat, + L1DAmoCnt, + L1DAmoMissCnt, + L1DAmoMissLat, + L1DSelfInvCnt, // self inv due to max hits + L1DReconcileCnt +} L1DPerfType deriving(Bits, Eq, FShow); + +typedef enum { + LLCDmaMemLdCnt, + LLCDmaMemLdLat, + LLCNormalMemLdCnt, + LLCNormalMemLdLat, + LLCMshrBlockCycles, // full MSHR blocks new cRq + LLCDownRespCnt, + LLCDownRespDataCnt, + LLCDownReqCnt, + LLCUpRespCnt, + LLCUpRespDataCnt, + LLCDmaLdReqCnt, + LLCDmaStReqCnt +} LLCPerfType deriving(Bits, Eq, FShow); + +typedef enum { + L1TlbAccessCnt, + L1TlbMissParentCnt, // miss and send req to parent TLB + L1TlbMissParentLat, + L1TlbMissPeerCnt, // miss and wait for resp for peer entry + L1TlbMissPeerLat, + L1TlbHitUnderMissCnt, + L1TlbAllMissCycles // all TLB req entries are miss, so TLB is blocked +} L1TlbPerfType deriving(Bits, Eq, FShow); + +typedef enum { + L2TlbInstMissCnt, + L2TlbInstMissLat, + L2TlbInstPageWalks, + L2TlbInstSavedPageWalks, + L2TlbInstHugePageHits, // hits on huge page (2MB, 1GB) + L2TlbInstHugePageMisses, // miss (i.e., page walk) to get huge page (2MB, 1GB) + L2TlbDataMissCnt, + L2TlbDataMissLat, + L2TlbDataPageWalks, + L2TlbDataSavedPageWalks, + L2TlbDataHugePageHits, + L2TlbDataHugePageMisses, + L2TlbHitUnderMissCnt, + L2TlbAllMissCycles, // all TLB req entries are doing page walk, so TLB is blocked + L2TlbPeerSavedMemReqs // mem req saved by re-using peer req's page walk +} L2TlbPerfType deriving(Bits, Eq, FShow); + +typedef enum { + DecRedirectBr, + DecRedirectJmp, + DecRedirectJr, + DecRedirectOther +} DecStagePerfType deriving(Bits, Eq, FShow); + +typedef enum { + SupRenameCnt, // number of cycles that rename correct path inst cnt > 1 + SpecNoneCycles, + SpecNonMemCycles, + ExeRedirectBr, + ExeRedirectJr, + ExeRedirectOther, + ExeLdStallByLd, + ExeLdStallBySt, + ExeLdStallBySB, + ExeLdForward, + ExeLdMemLat, + ExeStMemLat, + ExeLdToUseLat, + ExeLdToUseCnt, + ExeTlbExcep, + ExeScSuccessCnt, + ExeLrScAmoAcqCnt, + ExeLrScAmoRelCnt, + ExeFenceAcqCnt, + ExeFenceRelCnt, + ExeFenceCnt, + ExeIntMulCnt, + ExeIntDivCnt, + ExeFpFmaCnt, + ExeFpDivCnt, + ExeFpSqrtCnt +} ExeStagePerfType deriving(Bits, Eq, FShow); + +typedef enum { + LdQFullCycles, + StQFullCycles, + ROBFullCycles, + AluRS0FullCycles, + AluRS1FullCycles, + FpuMulDivRSFullCycles, + MemRSFullCycles, + EpochFullCycles, + SpecTagFullCycles +} CoreSizePerfType deriving(Bits, Eq, FShow); + +typedef enum { + CycleCnt, + InstCnt, + UserInstCnt, + SupComUserCnt, // number of cycles that commit user inst cnt > 1 + ComBrCnt, + ComJmpCnt, + ComJrCnt, + ComLdCnt, + ComStCnt, + ComLrCnt, + ComScCnt, + ComAmoCnt, + ComLdKillByLd, + ComLdKillBySt, + ComLdKillByCache, + ComSysCnt, // system inst count + ExcepCnt, + InterruptCnt, + FlushTlbCnt, + FlushSecurityCnt, + FlushBPCnt, + FlushCacheCnt +} ComStagePerfType deriving(Bits, Eq, FShow); + +// PerfReq = XXPerfType + +typedef struct { + perfType pType; + Bit#(64) data; +} PerfResp#(type perfType) deriving(Bits, Eq); + +interface Perf#(type perfType); + method Action setStatus(Bool doStats); // change whether we collect data + method Action req(perfType r); + method ActionValue#(PerfResp#(perfType)) resp; + method Bool respValid; +endinterface + +// query performance counters in the whole processor +typedef Bit#(5) PerfType; // for all XXPerfType + +// which stage/module to query +typedef enum { + ICache, + DCache, + ITlb, + DTlb, + L2Tlb, + DecStage, + ExeStage, + ComStage, + CoreSize, + LLC +} PerfLocation deriving(Bits, Eq, FShow); + +typedef struct { + PerfLocation loc; + PerfType pType; +} ProcPerfReq deriving(Bits, Eq); + +typedef struct { + PerfLocation loc; + PerfType pType; + Bit#(64) data; +} ProcPerfResp deriving(Bits, Eq); diff --git a/src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv b/src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv new file mode 100644 index 0000000..9d0b98f --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/PhysRFile.bsv @@ -0,0 +1,111 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +// Correct use of the register file implies that the same index can't be used for simultaneous read and write from different rules. If different indices are used reads and writes are conflict free. If the reads and writes are in the same rule, write updates the file at the end of the rule. +// We have imitated this conflict free behavior using config regs. +// If we had used ordinary registers, then read phy reg i + Vector#(NumArchReg, Ehr#(SupSize, PhyRIndx)) renaming_table <- genWithM(compose(mkEhr, fromInteger)); + + // A FIFO of + // - in-flight renaming: when valid = True i.e. within [enqP, deqP) + // - free phy reg: when valid = False i.e. outside [enqP, deqP) + // We store the arch reg and phy reg separately to reduce EHR ports + // XXX A valid in-flight renaming may have arch reg being invalid + // This happens in case we claim a phy reg while the dst arch reg is invalid + Vector#(size, Reg#(Maybe#(ArchRIndx))) new_renamings_arch <- replicateM(mkRegU); + function m#(Reg#(PhyRIndx)) genNewRenamingsPhy(Integer i) provisos (IsModule#(m, a__)); + return mkReg(fromInteger(i + valueOf(NumArchReg))); // free phy regs initially + endfunction + Vector#(size, Reg#(PhyRIndx)) new_renamings_phy <- genWithM(genNewRenamingsPhy); + Vector#(size, Ehr#(2, Bool)) valid <- replicateM(mkEhr(False)); + Vector#(size, Ehr#(2, SpecBits)) spec_bits <- replicateM(mkEhr(0)); + Reg#(indexT) enqP <- mkReg(0); // point to claim free phy reg + Reg#(indexT) deqP <- mkReg(0); // point to commit renaming and make phy reg free + + // wires/EHRs to record actions + Vector#(SupSize, RWire#(RenameClaim)) claimEn <- replicateM(mkUnsafeRWire); + Vector#(SupSize, PulseWire) commitEn <- replicateM(mkPulseWire); + RWire#(RTWrongSpec) wrongSpecEn <- mkRWire; + + // ordering regs + Vector#(SupSize, Reg#(Bool)) commit_SB_rename <- replicateM(mkRevertingVirtualReg(True)); + Reg#(Bool) commit_SB_wrongSpec <- mkRevertingVirtualReg(True); + + // wrong spec conflict with rename + Vector#(SupSize, RWire#(void)) wrongSpec_rename_conflict <- replicateM(mkRWire); + + function indexT getNextIndex(indexT idx); + return idx == fromInteger(valueof(size) - 1) ? 0 : idx + 1; + endfunction + + function indexT incrIndex(indexT idx, SupCnt incr); + Bit#(TLog#(TAdd#(size, 1))) newIdx = zeroExtend(idx) + zeroExtend(incr); + if(newIdx >= fromInteger(valueof(size))) begin + newIdx = newIdx - fromInteger(valueof(size)); + end + return truncate(newIdx); + endfunction + + // get the index to query renaming_table + function Bit#(TLog#(NumArchReg)) getRTIndex(ArchRIndx arch) = pack(arch); + + // vector of index to claim free phy regs for each rename port + Vector#(SupSize, indexT) claimIndex; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + claimIndex[i] = incrIndex(enqP, fromInteger(i)); + end + + // vector of index to commit phy regs for each commit port + Vector#(SupSize, indexT) commitIndex; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + commitIndex[i] = incrIndex(deqP, fromInteger(i)); + end + + // similar to LSQ, get virtual tag by using enqP as pivot (enqP is changed at end of cycle) + // valid entry i --> i < enqP ? i + size : i + // NOTE that virtual tag only works for **valid** entry + function vTagT getVTag(indexT i); + return i < enqP ? zeroExtend(i) + fromInteger(valueof(size)) : zeroExtend(i); + endfunction + Vector#(size, vTagT) vTags = map(getVTag, genWith(fromInteger)); + + // find oldest entry using virtual tag (i.e. smallest) + function Maybe#(indexT) findOldest(Vector#(size, Bool) pred); + function indexT getOlder(indexT a, indexT b); + if(!pred[a]) begin + return b; + end + else if(!pred[b]) begin + return a; + end + else begin + return vTags[a] < vTags[b] ? a : b; + end + endfunction + Vector#(size, indexT) idxVec = genWith(fromInteger); + indexT tag = fold(getOlder, idxVec); + return pred[tag] ? Valid (tag) : Invalid; + endfunction + + // find youngest entry using virtual tag (i.e. largest) + function Maybe#(indexT) findYoungest(Vector#(size, Bool) pred); + function indexT getOlder(indexT a, indexT b); + if(!pred[a]) begin + return b; + end + else if(!pred[b]) begin + return a; + end + else begin + return vTags[a] < vTags[b] ? b : a; + end + endfunction + Vector#(size, indexT) idxVec = genWith(fromInteger); + indexT tag = fold(getOlder, idxVec); + return pred[tag] ? Valid (tag) : Invalid; + endfunction + + // canonicalize deq, wrongSpec/enq + (* fire_when_enabled, no_implicit_conditions *) + rule canon; + Vector#(SupSize, SupWaySel) supIdxVec = genWith(fromInteger); + + // apply commit actions + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + if(commitEn[i]) begin + indexT curDeqP = commitIndex[i]; // deqP for new renamings + PhyRIndx commit_phy_reg = new_renamings_phy[curDeqP]; + Maybe#(ArchRIndx) commit_arch_reg = new_renamings_arch[curDeqP]; + if(commit_arch_reg matches tagged Valid .arch) begin + let rtIdx = getRTIndex(arch); + // free phy reg being overwritten in the renaming_table (arch reg is don't care) + PhyRIndx freed_phy_reg = renaming_table[rtIdx][rt_commit_port(i)]; + new_renamings_phy[curDeqP] <= freed_phy_reg; + valid[curDeqP][valid_commit_port] <= False; + // update renaming_table + renaming_table[rtIdx][rt_commit_port(i)] <= commit_phy_reg; + end + else begin + // free the phy reg claimed by this renaming (arch reg is don't care) + valid[curDeqP][valid_commit_port] <= False; + end + // sanity check + doAssert(valid[curDeqP][valid_commit_port], "committing entry must be valid"); + end + end + // move deqP: find the first non-commit port + function Bool notCommit(SupWaySel i) = !commitEn[i]; + indexT nextDeqP; + if(find(notCommit, supIdxVec) matches tagged Valid .idx) begin + nextDeqP = commitIndex[idx]; + // sanity check: commit is done consecutively + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + doAssert((fromInteger(i) < idx) == commitEn[i], "commit must be consecutive"); + end + end + else begin + nextDeqP = incrIndex(deqP, fromInteger(valueof(SupSize))); + end + deqP <= nextDeqP; + + // do wrongSpec OR claim free phy reg + if(wrongSpecEn.wget matches tagged Valid .x) begin + Bool killAll = x.killAll; + SpecTag specTag = x.specTag; + Vector#(size, indexT) idxVec = genWith(fromInteger); + // do wrongSpec, first kill entries (make in-flight renaming to free phy reg) + function Bool needKill(indexT i); + return killAll || spec_bits[i][sb_wrongSpec_port][specTag] == 1; + endfunction + Vector#(size, Bool) isKill = map(needKill, idxVec); + function Action kill(indexT i); + action + if(isKill[i]) begin + valid[i][valid_wrongSpec_port] <= False; + end + endaction + endfunction + joinActions(map(kill, idxVec)); + // move enqP: find the oldest **valid** entry being killed + Vector#(size, Bool) killValid = zipWith( \&& , isKill , readVEhr(valid_wrongSpec_port, valid) ); + indexT nextEnqP = enqP; + if(findOldest(killValid) matches tagged Valid .idx) begin + nextEnqP = idx; + end + enqP <= nextEnqP; + end + else begin + // claim phy reg + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + if(claimEn[i].wget matches tagged Valid .claim) begin + indexT curEnqP = claimIndex[i]; + new_renamings_arch[curEnqP] <= claim.arch; // keep phy reg unchanged + valid[curEnqP][valid_claim_port] <= True; + spec_bits[curEnqP][sb_claim_port] <= claim.specBits; + // sanity check + doAssert(!valid[curEnqP][valid_get_port], "claiming entry must be invalid"); + doAssert(claim.phy == new_renamings_phy[curEnqP], "phy reg should match"); + end + end + // move enqP: find the first non-claim port + function Bool notClaim(SupWaySel i) = !isValid(claimEn[i].wget); + indexT nextEnqP; + if(find(notClaim, supIdxVec) matches tagged Valid .idx) begin + nextEnqP = claimIndex[idx]; + // sanity check: rename is consecutive + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + doAssert((fromInteger(i) < idx) == isValid(claimEn[i].wget), "claim is consecutive"); + end + end + else begin + nextEnqP = incrIndex(enqP, fromInteger(valueof(SupSize))); + end + enqP <= nextEnqP; + end + endrule + +`ifdef BSIM + // sanity check in simulation + // all valid entry are within [deqP, enqP), outsiders are invalid entries + (* fire_when_enabled, no_implicit_conditions *) + rule sanityCheck; + Bool empty = all( \== (False), readVEhr(0, valid) ); + function Bool in_range(indexT i); + // i is within [deqP, enqP) + if(empty) begin + return False; + end + else begin + if(deqP < enqP) begin + return deqP <= i && i < enqP; + end + else begin + return deqP <= i || i < enqP; + end + end + endfunction + for(Integer i = 0; i < valueof(size); i = i+1) begin + doAssert(in_range(fromInteger(i)) == valid[i][0], + "entries inside [deqP, enqP) should be valid, otherwise invalid" + ); + end + doAssert(enqP <= fromInteger(valueof(size) - 1), "enqP < size"); + doAssert(deqP <= fromInteger(valueof(size) - 1), "deqP < size"); + endrule +`endif + + + // function to search claimed phy regs just in this cycle to + // get phy reg for an arch reg for get_renaming at port getPort + function Maybe#(PhyRIndx) search_claimed_renamings(Integer getPort, ArchRIndx arch_reg); + List#(RWire#(RenameClaim)) claims = List::take(getPort, toList(claimEn)); + function Maybe#(PhyRIndx) getHit(RWire#(RenameClaim) clm); + if(clm.wget matches tagged Valid .e) begin + return e.arch == (Valid (arch_reg)) ? Valid (e.phy) : Invalid; + end + else begin + return Invalid; + end + endfunction + List#(Maybe#(PhyRIndx)) hitList = List::map(getHit, claims); + // find the most recently claimed phy reg (i.e. largest list index) + Maybe#(Maybe#(PhyRIndx)) hit = List::find(isValid, List::reverse(hitList)); + return fromMaybe(Invalid, hit); + endfunction + + // function to search new_renamings to get phy reg for an arch reg + function Maybe#(PhyRIndx) search_new_src_renamings(ArchRIndx arch_reg); + // first get all hitting in-flight renamings + function Bool hit(Integer i); + return valid[i][valid_get_port] && new_renamings_arch[i] == (Valid (arch_reg)); + endfunction + Vector#(size, Bool) isHit = map(hit, genVector); + // find the youngest + if(findYoungest(isHit) matches tagged Valid .idx) begin + return Valid (new_renamings_phy[idx]); + end + else begin + return Invalid; + end + endfunction + + // function to get phy reg for an arch reg for get_renaming at port getPort + // priority: newly claimed -> new_renamings -> renaming_table + function PhyRIndx get_src_renaming(Integer getPort, ArchRIndx arch_reg); + let claim_phy_reg = search_claimed_renamings(getPort, arch_reg); + let new_phy_reg = search_new_src_renamings(arch_reg); + let existing_phy_reg = renaming_table[getRTIndex(arch_reg)][rt_get_port]; + return fromMaybe(fromMaybe(existing_phy_reg, new_phy_reg), claim_phy_reg); + endfunction + + // function to find a free phy reg to claim (at port claimPort) for a dst arch reg + function PhyRIndx get_dst_renaming(Integer claimPort); + return new_renamings_phy[claimIndex[claimPort]]; + endfunction + + function Bool isFpuReg(ArchRIndx arch_reg); + return arch_reg matches tagged Fpu .* ? True : False; + endfunction + + Vector#(SupSize, RTRename) renameIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + // XXX we always claim a free phy reg, but only return it if arch dst reg is valid + Bool guard = !valid[claimIndex[i]][valid_get_port]; + PhyRIndx claim_phy_reg = get_dst_renaming(i); + renameIfc[i] = (interface RTRename; + method RenameResult getRename(ArchRegs r) if(guard); + // get renamings + PhyRegs phy_regs = PhyRegs { + src1: tagged Invalid, + src2: tagged Invalid, + src3: tagged Invalid, + dst: tagged Invalid + }; + if (r.src1 matches tagged Valid .valid_src1) begin + phy_regs.src1 = Valid (get_src_renaming(i, valid_src1)); + end + if (r.src2 matches tagged Valid .valid_src2) begin + phy_regs.src2 = Valid (get_src_renaming(i, valid_src2)); + end + if (r.src3 matches tagged Valid .valid_src3) begin + phy_regs.src3 = tagged Valid (get_src_renaming(i, tagged Fpu valid_src3)); + end + if (r.dst matches tagged Valid .valid_dst) begin + phy_regs.dst = Valid (PhyDst { + indx: claim_phy_reg, + isFpuReg: isFpuReg(valid_dst) + }); + end + + return RenameResult { + phy_regs: phy_regs + }; + endmethod + + method Action claimRename(ArchRegs r, SpecBits sb) if(guard); + // record the claim + claimEn[i].wset(RenameClaim { + arch: r.dst, + phy: claim_phy_reg, + specBits: sb + }); + // conflict with wrong spec + wrongSpec_rename_conflict[i].wset(?); + // ordering with commit + commit_SB_rename[i] <= False; + endmethod + + method canRename = guard; + endinterface); + end + + Vector#(SupSize, RTCommit) commitIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + Bool guard = valid[commitIndex[i]][valid_commit_port] && + all(id, readVReg(commit_SB_rename)) && // ordering: commit < rename + commit_SB_wrongSpec; // ordering: commit < wrongSpec + commitIfc[i] = (interface RTCommit; + method Action commit if(guard); + commitEn[i].send; // record commit action + endmethod + method canCommit = guard; + endinterface); + end + + interface rename = renameIfc; + interface commit = commitIfc; + + interface SpeculationUpdate specUpdate; + method Action incorrectSpeculation(Bool killAll, SpecTag specTag); + // record wrongSpec + wrongSpecEn.wset(RTWrongSpec { + killAll: killAll, + specTag: specTag + }); + // conflict with rename + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + wrongSpec_rename_conflict[i].wset(?); + end + // order after commit + commit_SB_wrongSpec <= False; + endmethod + method Action correctSpeculation(SpecBits mask); + function Action correctSpec(Integer i); + action + spec_bits[i][sb_correctSpec_port] <= spec_bits[i][sb_correctSpec_port] & mask; + endaction + endfunction + Vector#(size, Integer) idxVec = genVector; + joinActions(map(correctSpec, idxVec)); + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/ReorderBuffer.bsv b/src_Core/RISCY_OOO/procs/lib/ReorderBuffer.bsv new file mode 100644 index 0000000..4065bcc --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/ReorderBuffer.bsv @@ -0,0 +1,993 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +// ReorderBuffer +import Types::*; +import ProcTypes::*; +import HasSpecBits::*; +import Vector::*; +import Assert::*; +import Ehr::*; +import RevertingVirtualReg::*; + +// right after execution, full_result has more up-to-date data (e.g. ppc of mispredicted branch) +// some parts of full_result are for verification +// but some are truly used for execution + +// ppc is only used by iType = BR/J/JR +// csrData is only used by iType = Csr +// vaddr is only used by mem inst in page fault +typedef union tagged { + Addr PPC; // at default store ppc + Addr VAddr; // for mem inst, store vaddr + Data CSRData; // for Csr inst, store csr_data +} PPCVAddrCSRData deriving(Bits, Eq, FShow); + +typedef struct { + Addr pc; + IType iType; + Maybe#(CSR) csr; + Bool claimed_phy_reg; // whether we need to commmit renaming + Maybe#(Trap) trap; + PPCVAddrCSRData ppc_vaddr_csrData; + Bit#(5) fflags; + Bool will_dirty_fpu_state; // True means 2'b11 will be written to FS + RobInstState rob_inst_state; // was executed (i.e. can commit) + LdStQTag lsqTag; // tag for LSQ + Maybe#(LdKilledBy) ldKilled; // mispeculative load + reason for the kill + // Fence and some mem access are only performed at commit time, so ROB + // should notify LSQ that the instrution arrives at commit stage and access + // can start. XXX For fence, this bit is set at rename stage. For mem + // accesses like Lr/Sc/Amo/MMIO, this bit is set by mem exe pipeline. + Bool memAccessAtCommit; + // we have notified LSQ that inst is at commit + Bool lsqAtCommitNotified; + // a successfully translated non-MMIO store needs ROB to notify the commit + // from ROB, so that it can be dequeud from SQ + Bool nonMMIOStDone; + // We detect some traps at rename stage, and increment epoch to kill + // everything from fetch. So we should not increment epoch again when + // committing the trap. Therefore we record the epoch increment at rename. + Bool epochIncremented; + + // speculation + SpecBits spec_bits; +} ToReorderBuffer deriving(Bits, Eq, FShow); + +typedef enum { + NotDone, + Executed // i.e. ready to commit +} RobInstState deriving (Bits, Eq, FShow); + +interface Row_setExecuted_doFinishAlu; + method Action set(Maybe#(Data) csrData, ControlFlow cf); +endinterface + +interface Row_setExecuted_doFinishFpuMulDiv; + method Action set(Bit#(5) fflags); +endinterface + +interface ReorderBufferRowEhr#(numeric type aluExeNum, numeric type fpuMulDivExeNum); + method Action write_enq(ToReorderBuffer x); + method ToReorderBuffer read_deq; + method Action setLSQAtCommitNotified; + // deqLSQ rules set ROB state: set execeptions, load mispeculation, and becomes Executed + method Action setExecuted_deqLSQ(Maybe#(Exception) cause, Maybe#(LdKilledBy) ld_killed); + // doFinish rules set ROB state for ALU and FPU/MUL/DIV (always become Executed) + interface Vector#(aluExeNum, Row_setExecuted_doFinishAlu) setExecuted_doFinishAlu; + interface Vector#(fpuMulDivExeNum, Row_setExecuted_doFinishFpuMulDiv) setExecuted_doFinishFpuMulDiv; + // mem addr translation done: record virtual addr (for possible faults), + // whether the access needs to be performed at commit stage (NOTE page + // faulting inst cannot have this set, since there is no access to + // perform), and non-MMIO St can become Executed (NOTE faulting + // instructions are not Executed, they are set at deqLSQ time) + method Action setExecuted_doFinishMem(Addr vaddr, Bool access_at_commit, Bool non_mmio_st_done); +`ifdef INORDER_CORE + // in-order core sets LSQ tag after getting out of issue queue + method Action setLSQTag(LdStQTag t, Bool isFence); +`endif + // get original PC/PPC before execution, EHR port 0 will suffice + method Addr getOrigPC; + method Addr getOrigPredPC; + // speculation + method Bool dependsOn_wrongSpec(SpecTag tag); + method Action correctSpeculation(SpecBits mask); +endinterface + +module mkReorderBufferRowEhr(ReorderBufferRowEhr#(aluExeNum, fpuMulDivExeNum)) provisos( + Add#(1, a__, aluExeNum), Add#(1, b__, fpuMulDivExeNum) +); + Integer trap_deq_port = 0; + Integer trap_deqLSQ_port = 0; // write trap + Integer trap_finishMem_port = 1; // write trap + Integer trap_enq_port = 2; // write trap + + Integer pvc_deq_port = 0; + function Integer pvc_finishAlu_port(Integer i) = i; // write ppc_vaddr_csrData + Integer pvc_finishMem_port = valueof(aluExeNum); // write ppc_vaddr_csrData + Integer pvc_enq_port = 1 + valueof(aluExeNum); // write ppc_vaddr_csrData + + Integer fflags_deq_port = 0; + function Integer fflags_finishFpuMulDiv_port(Integer i) = i; // write fflags + Integer fflags_enq_port = valueof(fpuMulDivExeNum); // write fflags + + Integer ldKill_deq_port = 0; + Integer ldKill_deqLSQ_port = 0; // set ldKilled + Integer ldKill_enq_port = 1; // init ldKilled + + Integer accessCom_deq_port = 0; + Integer accessCom_finishMem_port = 0; // set memAccessAtCommit +`ifdef INORDER_CORE + Integer accessCom_setLSQTag_port = 1; // enq to LSQ + Integer accessCom_enq_port = 2; // init +`else + Integer accessCom_enq_port = 1; // init +`endif + + Integer lsqNotified_deq_port = 0; + Integer lsqNotified_setNotified_port = 0; // set True + Integer lsqNotified_enq_port = 1; + + Integer nonMMIOSt_deq_port = 0; + Integer nonMMIOSt_finishMem_port = 0; + Integer nonMMIOSt_enq_port = 1; + + Integer state_deq_port = 0; + function Integer state_finishAlu_port(Integer i) = i; // write state + function Integer state_finishFpuMulDiv_port(Integer i) = valueof(aluExeNum) + i; // write state + Integer state_deqLSQ_port = valueof(fpuMulDivExeNum) + valueof(aluExeNum); // write state + Integer state_finishMem_port = 1 + state_deqLSQ_port; // write state + Integer state_enq_port = 1 + state_finishMem_port; // write state + + Integer sb_deq_port = 0; + Integer sb_wrongSpec_port = 0; + Integer sb_enq_port = 1; // write spec_bits + Integer sb_correctSpec_port = 2; // write spec_bits + + Reg#(Addr) pc <- mkRegU; + Reg#(IType) iType <- mkRegU; + Reg#(Maybe#(CSR)) csr <- mkRegU; + Reg#(Bool) claimed_phy_reg <- mkRegU; + Ehr#(3, Maybe#(Trap)) trap <- mkEhr(?); + Ehr#(TAdd#(2, aluExeNum), PPCVAddrCSRData) ppc_vaddr_csrData <- mkEhr(?); + Ehr#(TAdd#(1, fpuMulDivExeNum), Bit#(5)) fflags <- mkEhr(?); + Reg#(Bool) will_dirty_fpu_state <- mkRegU; + Ehr#(TAdd#(3, TAdd#(fpuMulDivExeNum, aluExeNum)), RobInstState) rob_inst_state <- mkEhr(?); + Reg#(LdStQTag) lsqTag <- mkRegU; + Ehr#(2, Maybe#(LdKilledBy)) ldKilled <- mkEhr(?); + Ehr#(3, Bool) memAccessAtCommit <- mkEhr(?); + Ehr#(2, Bool) lsqAtCommitNotified <- mkEhr(?); + Ehr#(2, Bool) nonMMIOStDone <- mkEhr(?); + Reg#(Bool) epochIncremented <- mkRegU; + Ehr#(3, SpecBits) spec_bits <- mkEhr(?); + + // wires to get stale (EHR port 0) values of PPC + Wire#(Addr) predPcWire <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setPcWires; + predPcWire <= ppc_vaddr_csrData[0] matches tagged PPC .a ? a : 0; + endrule + + Vector#(aluExeNum, Row_setExecuted_doFinishAlu) aluSetExe; + for(Integer i = 0; i < valueof(aluExeNum); i = i+1) begin + aluSetExe[i] = (interface Row_setExecuted_doFinishAlu; + method Action set(Maybe#(Data) csrData, ControlFlow cf); + // inst is done + rob_inst_state[state_finishAlu_port(i)] <= Executed; + // update PPC or csrData (vaddr is always useless for ALU results) + if(csrData matches tagged Valid .d) begin + ppc_vaddr_csrData[pvc_finishAlu_port(i)] <= CSRData (d); + end + else begin + ppc_vaddr_csrData[pvc_finishAlu_port(i)] <= PPC (cf.nextPc); + end + doAssert(isValid(csr) == isValid(csrData), "csr valid should match"); + endmethod + endinterface); + end + + Vector#(fpuMulDivExeNum, Row_setExecuted_doFinishFpuMulDiv) fpuMulDivExe; + for(Integer i = 0; i < valueof(fpuMulDivExeNum); i = i+1) begin + fpuMulDivExe[i] = (interface Row_setExecuted_doFinishFpuMulDiv; + method Action set(Bit#(5) new_fflags); + // inst is done + rob_inst_state[state_finishFpuMulDiv_port(i)] <= Executed; + // update fflags + fflags[fflags_finishFpuMulDiv_port(i)] <= new_fflags; + endmethod + endinterface); + end + + method Addr getOrigPC = pc; + method Addr getOrigPredPC = predPcWire; + + interface setExecuted_doFinishAlu = aluSetExe; + + interface setExecuted_doFinishFpuMulDiv = fpuMulDivExe; + + method Action setExecuted_doFinishMem(Addr vaddr, Bool access_at_commit, Bool non_mmio_st_done); + doAssert(!(access_at_commit && non_mmio_st_done), + "cannot both be true"); + // update ROB state + if(non_mmio_st_done) begin + rob_inst_state[state_finishMem_port] <= Executed; + doAssert(iType == St, "must be St"); + end + // update VAddr + ppc_vaddr_csrData[pvc_finishMem_port] <= VAddr (vaddr); + // update access at commit + memAccessAtCommit[accessCom_finishMem_port] <= access_at_commit; + // udpate non mmio st + nonMMIOStDone[nonMMIOSt_finishMem_port] <= non_mmio_st_done; + endmethod + +`ifdef INORDER_CORE + method Action setLSQTag(LdStQTag t, Bool isFence); + lsqTag <= t; + memAccessAtCommit[accessCom_setLSQTag_port] <= isFence; + doAssert(isFence == (iType == Fence), "fence should match"); + endmethod +`endif + + method Action write_enq(ToReorderBuffer x); + pc <= x.pc; + iType <= x.iType; + csr <= x.csr; + claimed_phy_reg <= x.claimed_phy_reg; + trap[trap_enq_port] <= x.trap; + ppc_vaddr_csrData[pvc_enq_port] <= x.ppc_vaddr_csrData; + fflags[fflags_enq_port] <= x.fflags; + will_dirty_fpu_state <= x.will_dirty_fpu_state; + rob_inst_state[state_enq_port] <= x.rob_inst_state; + epochIncremented <= x.epochIncremented; + spec_bits[sb_enq_port] <= x.spec_bits; +`ifdef INORDER_CORE + // in-order core enqs to LSQ later, so don't set LSQ tag; and other + // flags should default to false + memAccessAtCommit[accessCom_enq_port] <= False; +`else + lsqTag <= x.lsqTag; + memAccessAtCommit[accessCom_enq_port] <= x.iType == Fence; +`endif + ldKilled[ldKill_enq_port] <= Invalid; + lsqAtCommitNotified[lsqNotified_enq_port] <= False; + nonMMIOStDone[nonMMIOSt_enq_port] <= False; + // check + doAssert(!isValid(x.ldKilled), "ld killed must be false"); + doAssert(x.memAccessAtCommit == False, "mem access at commit must be false"); + doAssert(!x.lsqAtCommitNotified, "lsq notified must be false"); + doAssert(!x.nonMMIOStDone, "non mmio st must be false"); + endmethod + + method ToReorderBuffer read_deq; + return ToReorderBuffer { + pc: pc, + iType: iType, + csr: csr, + claimed_phy_reg: claimed_phy_reg, + trap: trap[trap_deq_port], + ppc_vaddr_csrData: ppc_vaddr_csrData[pvc_deq_port], + fflags: fflags[fflags_deq_port], + will_dirty_fpu_state: will_dirty_fpu_state, + rob_inst_state: rob_inst_state[state_deq_port], + lsqTag: lsqTag, + ldKilled: ldKilled[ldKill_deq_port], + memAccessAtCommit: memAccessAtCommit[accessCom_deq_port], + lsqAtCommitNotified: lsqAtCommitNotified[lsqNotified_deq_port], + nonMMIOStDone: nonMMIOStDone[nonMMIOSt_deq_port], + epochIncremented: epochIncremented, + spec_bits: spec_bits[sb_deq_port] + }; + endmethod + + method Action setLSQAtCommitNotified; + lsqAtCommitNotified[lsqNotified_setNotified_port] <= True; + endmethod + + method Action setExecuted_deqLSQ(Maybe#(Exception) cause, Maybe#(LdKilledBy) ld_killed); + // inst becomes Executed + rob_inst_state[state_deqLSQ_port] <= Executed; + // record trap + doAssert(!isValid(trap[trap_deqLSQ_port]), "cannot have trap"); + if(cause matches tagged Valid .e) begin + trap[trap_deqLSQ_port] <= Valid (Exception (e)); + end + // record ld misspeculation + ldKilled[ldKill_deqLSQ_port] <= ld_killed; + endmethod + + method Bool dependsOn_wrongSpec(SpecTag tag); + return spec_bits[sb_wrongSpec_port][tag] == 1; + endmethod + + method Action correctSpeculation(SpecBits mask); + SpecBits sb = spec_bits[sb_correctSpec_port]; + spec_bits[sb_correctSpec_port] <= sb & mask; + endmethod +endmodule + +interface ROB_SpeculationUpdate; + // when killing wrong path inst, we directly move enqP to inst_tag + 1 + // assumption is that any entry within (inst_tag, enqP) will be killed + // (i.e. any such entry has spec_bits[spec_tag] == 1, so valid bit is reset) + // notice that inst_tag itself may be killed! (e.g. a Ld killed by older Ld/St) + // also note that inst_tag itself may be already dequeued just in this cycle + method Action incorrectSpeculation(Bool kill_all, SpecTag spec_tag, InstTag inst_tag); + method Action correctSpeculation(SpecBits mask); +endinterface + +//////////////////////////////////////////////////////// +////////// Superscalar ehrized reorder buffer ////////// +//////////////////////////////////////////////////////// + +interface ROB_EnqPort; + method Bool canEnq; + method Action enq(ToReorderBuffer x); + method InstTag getEnqInstTag; +endinterface + +interface ROB_DeqPort; + method Bool canDeq; + method Action deq; + method InstTag getDeqInstTag; + method ToReorderBuffer deq_data; +endinterface + +// XXX guards of enq and deq ifc do not check that enq and deq are done consecutively +// This is the responsibility of outside world + +// XXX enq and deq becomes a vector of interfaces +// We do not make them a single method with a vector as input, +// because synth boundary will make the guard conservative (i.e. ignoring input) +// thus requiring all ways to be able to enq/deq, which may cause deadlock +// However, synth boundary is needed to keep the atomicity of methods +// Having a vector of interfaces makes compiler unable to detect that different enq/deq +// interfaces are actually accessing different ways +// We have to use wires to perform the real actions in one rule so that compiler will +// not raise false conflicts between the superscalar enq/deq actions + +interface ROB_setExecuted_doFinishAlu; + method Action set(InstTag x, Maybe#(Data) csrData, ControlFlow cf); +endinterface + +interface ROB_setExecuted_doFinishFpuMulDiv; + method Action set(InstTag x, Bit#(5) fflags); +endinterface + +interface ROB_getOrigPC; + method Addr get(InstTag x); +endinterface + +interface ROB_getOrigPredPC; + method Addr get(InstTag x); +endinterface + +interface SupReorderBuffer#(numeric type aluExeNum, numeric type fpuMulDivExeNum); + interface Vector#(SupSize, ROB_EnqPort) enqPort; + method Bool isEmpty; // empty signal for enq port (for FENCE/System inst etc.) + + interface Vector#(SupSize, ROB_DeqPort) deqPort; + + // record that we have notified LSQ about inst reaching commit + method Action setLSQAtCommitNotified(InstTag x); + // deqLSQ rules set ROB state + method Action setExecuted_deqLSQ(InstTag x, Maybe#(Exception) cause, Maybe#(LdKilledBy) ld_killed); + // doFinish rules set ROB state in ALU and FPU/MUL/DIV + interface Vector#(aluExeNum, ROB_setExecuted_doFinishAlu) setExecuted_doFinishAlu; + interface Vector#(fpuMulDivExeNum, ROB_setExecuted_doFinishFpuMulDiv) setExecuted_doFinishFpuMulDiv; + // doFinishMem, after addr translation + method Action setExecuted_doFinishMem(InstTag x, Addr vaddr, Bool access_at_commit, Bool non_mmio_st_done); +`ifdef INORDER_CORE + // in-order core sets LSQ tag after getting out of issue queue + method Action setLSQTag(InstTag x, LdStQTag t, Bool isFence); +`endif + + // get original PC/PPC before execution, EHR port 0 will suffice + interface Vector#(TAdd#(1, aluExeNum), ROB_getOrigPC) getOrigPC; + interface Vector#(aluExeNum, ROB_getOrigPredPC) getOrigPredPC; + + // get enq time for reservation station dispatch + method InstTime getEnqTime; + + method Bool isEmpty_ehrPort0; + method Bool isFull_ehrPort0; + + interface ROB_SpeculationUpdate specUpdate; +endinterface + +typedef struct { + Bool killAll; + // below are only meaningful when killAll is False + SpecTag specTag; + InstTag killInstTag; +} ROBWrongSpecInput deriving(Bits, Eq, FShow); + +typedef struct { + SupWaySel firstEnqWay; + Vector#(SupSize, SingleScalarPtr) enqP; + InstTime enqTime; +} ROBWrongSpecEnqUpdate deriving(Bits, Eq, FShow); + +module mkSupReorderBuffer#( + Bool lazyEnq, + module#(ReorderBufferRowEhr#(aluExeNum, fpuMulDivExeNum)) mkRobRow +)(SupReorderBuffer#(aluExeNum, fpuMulDivExeNum)) provisos( + Add#(TExp#(TLog#(SupSize)), 0, SupSize), // require SupSize to be power of 2 + Add#(1, a__, aluExeNum), Add#(1, b__, fpuMulDivExeNum) +); + // doCommit rule: deq < wrongSpec (overwrite deq in doCommit) < doRenaming rule: enq + Integer valid_deq_port = 0; + Integer valid_wrongSpec_port = 1; + Integer valid_enq_port = 1; + + // doFinishXXX, doDeqLSQ_XXX: setExecute_XXX, correctSpeculation + // these are handled in mkReorderBufferRowEhr + + // wrong speculation: make wrong speculation conflict with enq + Vector#(SupSize, RWire#(void)) wrongSpec_enq_conflict <- replicateM(mkRWire); + + // SupSize number of FIFOs + Vector#(SupSize, Vector#(SingleScalarSize, ReorderBufferRowEhr#(aluExeNum, fpuMulDivExeNum))) row <- replicateM(replicateM(mkRobRow)); + Vector#(SupSize, Vector#(SingleScalarSize, Ehr#(2, Bool))) valid <- replicateM(replicateM(mkEhr(False))); + Vector#(SupSize, Reg#(SingleScalarPtr)) enqP <- replicateM(mkReg(0)); + Vector#(SupSize, Ehr#(2, SingleScalarPtr)) deqP_ehr <- replicateM(mkEhr(0)); + let deqP = getVEhrPort(deqP_ehr, 0); + let deqP_wrongSpec = getVEhrPort(deqP_ehr, 1); // for overwrite deqP when killing all + + // enq/deq port will operate on above FIFOs in a rotating manner + // We distinguish between enq/deq port and FIFO way + // FIFO way is the selection of the static FIFO array + // enq/deq port is the port selection exposed to the outside world + // (e.g. enq/deq port 0 is for oldest inst in program order) + // The mapping of enq/deq ports to FIFO ways changes dynamically (i.e. rotating) + + // firstEnq/DeqWay: which FIFO of row, valid, etc. that enq/deq port 0 should use + Reg#(SupWaySel) firstEnqWay <- mkReg(0); + Ehr#(2, SupWaySel) firstDeqWay_ehr <- mkEhr(0); + Reg#(SupWaySel) firstDeqWay = firstDeqWay_ehr[0]; + Reg#(SupWaySel) firstDeqWay_wrongSpec = firstDeqWay_ehr[1]; + + // time of inst: enq & deq ptr as if ROB is just a FIFO of size 2^log(NumInstTag) + Reg#(InstTime) enqTime <- mkReg(0); + Ehr#(2, InstTime) deqTime_ehr <- mkEhr(0); + Reg#(InstTime) deqTime = deqTime_ehr[0]; + Reg#(InstTime) deqTime_wrongSpec = deqTime_ehr[1]; // for overwrite deqTime when killing all + + // wires for recording actions on enq & deq ports + Vector#(SupSize, RWire#(ToReorderBuffer)) enqEn <- replicateM(mkRWire); + Vector#(SupSize, PulseWire) deqEn <- replicateM(mkPulseWire); + // wire for recording action of wrongSpec + RWire#(ROBWrongSpecInput) wrongSpecEn <- mkRWire; + + // ordering regs: deq sequence < setExecuted_XXX is maintained by each row + // BUT setExecuted_XXX, setLSQAtCommitNotified < enq, deq < enq, and deq < + // wrongSpec NEEDs explicit ordering + Reg#(Bool) deq_SB_wrongSpec <- mkRevertingVirtualReg(True); + Vector#(SupSize, Reg#(Bool)) deq_SB_enq <- replicateM(mkRevertingVirtualReg(True)); + Vector#(SupSize, Reg#(Bool)) setExeAlu_SB_enq <- replicateM(mkRevertingVirtualReg(True)); + Vector#(SupSize, Reg#(Bool)) setExeMem_SB_enq <- replicateM(mkRevertingVirtualReg(True)); + Vector#(SupSize, Reg#(Bool)) setExeLSQ_SB_enq <- replicateM(mkRevertingVirtualReg(True)); + Vector#(SupSize, Reg#(Bool)) setExeFpuMulDiv_SB_enq <- replicateM(mkRevertingVirtualReg(True)); + Vector#(SupSize, Reg#(Bool)) setNotified_SB_enq <- replicateM(mkRevertingVirtualReg(True)); + + function SingleScalarPtr getNextPtr(SingleScalarPtr p); + return p == fromInteger(valueOf(SingleScalarSize)-1) ? 0 : p + 1; + endfunction + + // convert enq/deq port -> fifo way + function SupWaySel getEnqFifoWay(SupWaySel enqPort) = firstEnqWay + enqPort; + function SupWaySel getDeqFifoWay(SupWaySel deqPort) = firstDeqWay + deqPort; + // convert fifo way -> enq/deq port + function SupWaySel getEnqPort(SupWaySel fifoWay) = fifoWay - firstEnqWay; + function SupWaySel getDeqPort(SupWaySel fifoWay) = fifoWay - firstDeqWay; + // XXX above 4 functions require SupSize to be power of 2 + + // do deq & update firstDeqWay + (* fire_when_enabled, no_implicit_conditions *) + rule canon_deq; + // -- apply effects of deq -- + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + // for FIFO way i (looping for FIFO way should save area than looping for deq port) + SupWaySel deqPort = getDeqPort(fromInteger(i)); + doAssert(getDeqFifoWay(deqPort) == fromInteger(i), "deq port matches FIFO way"); + if(deqEn[deqPort]) begin + doAssert(valid[i][deqP[i]][valid_deq_port], "deq entry must be valid"); + // move deqP & reset valid + deqP[i] <= getNextPtr(deqP[i]); + valid[i][deqP[i]][valid_deq_port] <= False; + end + end + // update firstDeqWay: find the first deq port that is not enabled + Vector#(SupSize, SupWaySel) idxVec = genWith(fromInteger); + function Bool notDeq(SupWaySel i); + return !deqEn[i]; + endfunction + if(find(notDeq, idxVec) matches tagged Valid .idx) begin + // idx is the first port that does not deq + // update firstWay (XXX we require SupSize to be power of 2) + firstDeqWay <= firstDeqWay + idx; + // update deq day + deqTime <= deqTime + zeroExtend(idx); + // sanity check: deq ports[idx..max] are not enabled + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + doAssert((fromInteger(i) < idx) == deqEn[i], "Deq must be consective"); + end + end + else begin + // all ports are dequeued, so firstWay keeps the same + // update deq day + deqTime <= deqTime + fromInteger(valueof(SupSize)); + end + endrule + + // process wrongSpec: clear valid bits & compute update for enq regs + (* fire_when_enabled, no_implicit_conditions *) + rule canon_wrongSpec(wrongSpecEn.wget matches tagged Valid .x); + if(x.killAll) begin + // kill everything + for(Integer w = 0; w < valueof(SupSize); w = w+1) begin + for(Integer i = 0; i < valueof(SingleScalarSize); i = i+1) begin + valid[w][i][valid_wrongSpec_port] <= False; + end + end + // reset all ptrs to 0 + for(Integer w = 0; w < valueof(SupSize); w = w+1) begin + enqP[w] <= 0; + deqP_wrongSpec[w] <= 0; + end + firstEnqWay <= 0; + firstDeqWay_wrongSpec <= 0; + enqTime <= 0; + deqTime_wrongSpec <= 0; + end + else begin + SpecTag specTag = x.specTag; + InstTag killInstTag = x.killInstTag; + + // only update valid, no need to change spec bits + for(Integer w = 0; w < valueof(SupSize); w = w+1) begin + for(Integer i = 0; i < valueof(SingleScalarSize); i = i+1) begin + if(row[w][i].dependsOn_wrongSpec(specTag)) begin + valid[w][i][valid_wrongSpec_port] <= False; + end + end + end + + // move enqP to be right after (or just) the inst that initiates the kill + // To do this, we need to figure out the number of inst killed in each FIFO way + // Notice that each FIFO way is enq in round-robin order + // Since we know the number of killed inst in the FIFO that contains the kill-initiating inst, + // we can deduce the number of killed inst in other FIFOs + // For simplicity, we map the way select of FIFOs to a virtual way select + // such that firstEnqWay will be 0 in the virtual way select + // i.e. virtual way = way - firstEnqWay XXX requires SupSize to be power of 2 + function SupWaySel toVirtualWay(SupWaySel realWay) = realWay - firstEnqWay; + // In terms of virtual ways, if we align the enqP of all FIFOs, + // we know the program order of inst when we move the ptr backward from enqP + // Thus we can deduce how many inst are killed in each FIFO + // First consider the FIFO that contains the kill-initiating entry + // We get virtual way and the distance from kill-initiating entry to enqP + // With this distance, we can deduce how much we should decrement the enqP for all FIFOs + SupWaySel virtualKillWay = toVirtualWay(killInstTag.way); + SingleScalarPtr killEnqP = enqP[killInstTag.way]; + SingleScalarLen killDistToEnqP = killInstTag.ptr < killEnqP ? // if >=, then FIFO must wrap around + zeroExtend(killEnqP - killInstTag.ptr) : + zeroExtend(killEnqP) + fromInteger(valueof(SingleScalarSize)) - zeroExtend(killInstTag.ptr); + doAssert(killDistToEnqP > 0, "distance to enqP must be > 0"); + // helper function to decr enqP + function SingleScalarPtr decrPtr(SingleScalarPtr ptr, SingleScalarLen len); + if(zeroExtend(ptr) < len) begin + SingleScalarLen extendedPtr = zeroExtend(ptr) + fromInteger(valueof(SingleScalarSize)); + return truncate(extendedPtr - len); + end + else begin + return ptr - truncate(len); + end + endfunction + // the kill-initiating inst should not kill itself + // (in fact it must be a branch, Ld mis-speculation is handled by kill all at commit stage) + // so the ROB entry entry right after the kill-initiating entry should be the enq position + // it must be in the way right after the way that contians the kill-initiating entry + SupWaySel firstEnqWayNext = killInstTag.way + 1; + InstTime enqTimeNext = killInstTag.t + 1; + Vector#(SupSize, SingleScalarPtr) enqPNext; + Vector#(SupSize, SingleScalarLen) distToEnqP; // amount to decr enqP to get enqPNext, record for debugging + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + // consider virtual way of FIFO i, and get the distance that enqP should decr + // virtual way > kill virtual way: enqP decr by killDistToEnqP + // virtual way <= kill virtual way: enqP decr by killDistToEnqP - 1 + SupWaySel virtualWay = toVirtualWay(fromInteger(i)); + distToEnqP[i] = virtualWay > virtualKillWay ? killDistToEnqP : killDistToEnqP - 1; + enqPNext[i] = decrPtr(enqP[i], distToEnqP[i]); + end + + // state update + firstEnqWay <= firstEnqWayNext; + enqTime <= enqTimeNext; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + enqP[i] <= enqPNext[i]; + end + + // check kill-initiating inst not killing itself + Bool killSelf = valid[killInstTag.way][killInstTag.ptr][valid_wrongSpec_port] && + row[killInstTag.way][killInstTag.ptr].dependsOn_wrongSpec(specTag); + doAssert(!killSelf, "cannot kill itself"); + //if(killSelf) begin + // // the kill-initiating inst also kills itself (e.g. a Ld) + // // so the kill-initiating entry becomes the next enq position + // // first enq way will become the way that contains the kill-initialting entry + // firstEnqWayNext = killInstTag.way; + // enqTimeNext = killInstTag.t; + // // get the enq pointers for all FIFOs + // for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + // // consider virtual way of FIFO i, and get the distance that enqP should decr + // // virtual way >= kill virtual way: enqP decr by killDistToEnqP + // // virtual way < kill virtual way: enqP decr by killDistToEnqP - 1 + // SupWaySel virtualWay = toVirtualWay(fromInteger(i)); + // distToEnqP[i] = virtualWay >= virtualKillWay ? killDistToEnqP : killDistToEnqP - 1; + // enqPNext[i] = decrPtr(enqP[i], distToEnqP[i]); + // end + //end + + // wrong spec is conflicting with enq, so enqEn must be all false + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + doAssert(!isValid(enqEn[i].wget), "when wrongSpec, enq cannot fire"); + end + +`ifdef BSIM + // sanity check in simulation + Vector#(SupSize, SingleScalarPtr) deqPVec = readVReg(deqP_wrongSpec); + Vector#(SupSize, Vector#(SingleScalarSize, Bool)) depVec; + Vector#(SupSize, Vector#(SingleScalarSize, Bool)) validVec; + for(Integer w = 0; w < valueof(SupSize); w = w+1) begin + validVec[w] = readVEhr(valid_wrongSpec_port, valid[w]); + function Bool getDepOn(Integer i) = row[w][i].dependsOn_wrongSpec(specTag); + depVec[w] = map(getDepOn, genVector); + end + $display("[ROB incorrectSpec] ", + fshow(specTag), " ; ", + fshow(killInstTag), " ; ", + fshow(firstEnqWay), " ; ", + fshow(firstDeqWay_wrongSpec), " ; ", + fshow(readVReg(enqP)), " ; ", + fshow(deqPVec), " ; ", + fshow(validVec), " ; ", + fshow(depVec), " ; ", + fshow(firstEnqWayNext), " ; ", + fshow(enqPNext), " ; ", + fshow(distToEnqP) + ); + // valid entries within [enqPNext, enqP) are killed + for(Integer w = 0; w < valueof(SupSize); w = w+1) begin + function Bool in_kill_range(SingleScalarPtr i); + if(distToEnqP[w] == 0) begin + return False; + end + else begin + if(enqPNext[w] < enqP[w]) begin + return enqPNext[w] <= i && i < enqP[w]; + end + else begin + return enqPNext[w] <= i || i < enqP[w]; + end + end + endfunction + for(Integer i = 0; i < valueof(SingleScalarSize); i = i+1) begin + doAssert( + in_kill_range(fromInteger(i)) == + (row[w][i].dependsOn_wrongSpec(specTag) && valid[w][i][valid_wrongSpec_port]), + "valid entries inside [enqPNext, enqP) must be killed, outsiders must not" + ); + end + end + // kill-initiating entry may be just dequeued + if(!valid[killInstTag.way][killInstTag.ptr][valid_wrongSpec_port]) begin + doAssert(getNextPtr(killInstTag.ptr) == deqPVec[killInstTag.way], + "if the kill-initiating entry is invalid, it must be just dequeued" + ); + end +`endif + end + endrule + + // Apply enq effects. This rule cannot be merged with canon_deq, because + // many other methods access ROB row contents are sandwiched between + // canon_deq and this rule. + (* fire_when_enabled, no_implicit_conditions *) + rule canon_enq(!isValid(wrongSpecEn.wget)); + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + // for FIFO way i (looping for FIFO way should save area than looping for enq port) + SupWaySel enqPort = getEnqPort(fromInteger(i)); + doAssert(getEnqFifoWay(enqPort) == fromInteger(i), "enq port matches FIFO way"); + if(enqEn[enqPort].wget matches tagged Valid .x) begin + doAssert(!valid[i][enqP[i]][valid_enq_port], "enq entry must be invalid"); + // update row, set valid, move enqP + enqP[i] <= getNextPtr(enqP[i]); + row[i][enqP[i]].write_enq(x); + valid[i][enqP[i]][valid_enq_port] <= True; + end + end + // update firstEnqWay: find the first enq port that is not enabled + Vector#(SupSize, SupWaySel) idxVec = genWith(fromInteger); + function Bool notEnq(SupWaySel i); + return !isValid(enqEn[i].wget); + endfunction + if(find(notEnq, idxVec) matches tagged Valid .idx) begin + // idx is the first port that does not enq + // update firstWay (XXX we require SupSize to be power of 2) + firstEnqWay <= firstEnqWay + idx; + // update enq day + enqTime <= enqTime + zeroExtend(idx); + // sanity check: enq ports[idx..max] are not enabled + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + doAssert((fromInteger(i) < idx) == isValid(enqEn[i].wget), "Enq must be consecutive"); + end + end + else begin + // all ports enq, so firstWay keeps the same + // update enq day + enqTime <= enqTime + fromInteger(valueof(SupSize)); + end + endrule + +`ifdef BSIM + // sanity check in simulation + // all valid entry are within [deqP, enqP), outsiders are invalid entries + (* fire_when_enabled, no_implicit_conditions *) + rule sanityCheck; + for(Integer w = 0; w < valueof(SupSize); w = w+1) begin + Bool empty = all( \== (False), readVEhr(0, valid[w]) ); + function Bool in_range(SingleScalarPtr i); + // i is within [deqP, enqP) + if(empty) begin + return False; + end + else begin + if(deqP[w] < enqP[w]) begin + return deqP[w] <= i && i < enqP[w]; + end + else begin + return deqP[w] <= i || i < enqP[w]; + end + end + endfunction + for(Integer i = 0; i < valueof(SingleScalarSize); i = i+1) begin + doAssert(in_range(fromInteger(i)) == valid[w][i][0], + "entries inside [deqP, enqP) should be valid, otherwise invalid" + ); + end + end + endrule +`endif + + // get enq ifc + // we compute can_enq signal for each FIFO[i], and all FIFO empty signal lazily + staticAssert(lazyEnq, "Only support lazy enq"); + Vector#(SupSize, Wire#(Bool)) can_enq_fifo <- replicateM(mkBypassWire); // FIFO[i] can enq (enq slot invalid) + Wire#(Bool) empty_for_enq <- mkBypassWire; // all FIFOs empty + + (* fire_when_enabled, no_implicit_conditions *) + rule setEnqWires; + Vector#(SupSize, Integer) idxVec = genVector; + // get all empty + function Bool isEmptyFunc(Integer i); + return !valid[i][enqP[i]][0] && enqP[i] == deqP[i]; + endfunction + empty_for_enq <= all(isEmptyFunc, idxVec); + // get can enq + function Action setCanEnq(Integer i); + action + can_enq_fifo[i] <= !valid[i][enqP[i]][0]; + endaction + endfunction + joinActions(map(setCanEnq, idxVec)); + endrule + + Vector#(SupSize, ROB_EnqPort) enqIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + SupWaySel way = getEnqFifoWay(fromInteger(i)); // FIFO[way] is used by enq port i + Bool can_enq = can_enq_fifo[way]; + enqIfc[i] = (interface ROB_EnqPort; + method Bool canEnq = can_enq; + method Action enq(ToReorderBuffer x) if(can_enq); + doAssert(getEnqPort(way) == fromInteger(i), "enq FIFO way matches enq port"); + // record enq action, real action is applied later + enqEn[i].wset(x); + // make it conflict with wrong speculation + wrongSpec_enq_conflict[i].wset(?); + // ordering: sequence after many other methods + deq_SB_enq[i] <= False; + setExeAlu_SB_enq[i] <= False; + setExeMem_SB_enq[i] <= False; + setExeFpuMulDiv_SB_enq[i] <= False; + setExeLSQ_SB_enq[i] <= False; + setNotified_SB_enq[i] <= False; + endmethod + method InstTag getEnqInstTag; + return InstTag { + way: way, + ptr: enqP[way], + t: enqTime + fromInteger(i) + }; + endmethod + endinterface); + end + + // get deq ifc + // get canDeq & first for each FIFO[i] + function Bool getFifoCanDeq(Integer i) = valid[i][deqP[i]][valid_deq_port]; + function ToReorderBuffer getFifoFirst(Integer i) = row[i][deqP[i]].read_deq; + Vector#(SupSize, Bool) can_deq_fifo = map(getFifoCanDeq, genVector); + Vector#(SupSize, ToReorderBuffer) fifo_first = map(getFifoFirst, genVector); + + Vector#(SupSize, ROB_DeqPort) deqIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + SupWaySel way = getDeqFifoWay(fromInteger(i)); // FIFO[way] is used by deq port i + Bool can_deq = can_deq_fifo[way] && + deq_SB_wrongSpec && // ordering: < wrongSpec + all(id, readVReg(deq_SB_enq)); // ordering: < enq + deqIfc[i] = (interface ROB_DeqPort; + method Bool canDeq = can_deq; + method Action deq if(can_deq); + doAssert(getDeqPort(way) == fromInteger(i), "deq FIFO way matches deq port"); + deqEn[i].send; // record deq action, real action is applied later + endmethod + method ToReorderBuffer deq_data if(can_deq); + return fifo_first[way]; + endmethod + method InstTag getDeqInstTag; + return InstTag { + way: way, + ptr: deqP[way], + t: deqTime + fromInteger(i) + }; + endmethod + endinterface); + end + + // set alu exe ifc + Vector#(aluExeNum, ROB_setExecuted_doFinishAlu) aluSetExeIfc; + for(Integer i = 0; i < valueof(aluExeNum); i = i+1) begin + aluSetExeIfc[i] = (interface ROB_setExecuted_doFinishAlu; + method Action set( + InstTag x, Maybe#(Data) csrData, ControlFlow cf + ) if( + all(id, readVReg(setExeAlu_SB_enq)) // ordering: < enq + ); + row[x.way][x.ptr].setExecuted_doFinishAlu[i].set(csrData, cf); + endmethod + endinterface); + end + + Vector#(fpuMulDivExeNum, ROB_setExecuted_doFinishFpuMulDiv) fpuMulDivSetExeIfc; + for(Integer i = 0; i < valueof(fpuMulDivExeNum); i = i+1) begin + fpuMulDivSetExeIfc[i] = (interface ROB_setExecuted_doFinishFpuMulDiv; + method Action set( + InstTag x, Bit#(5) fflags + ) if( + all(id, readVReg(setExeFpuMulDiv_SB_enq)) // ordering: < enq + ); + row[x.way][x.ptr].setExecuted_doFinishFpuMulDiv[i].set(fflags); + endmethod + endinterface); + end + + // get pc/ppc ifc used by alu exe (also one pc for mem exe) + Vector#(TAdd#(1, aluExeNum), ROB_getOrigPC) getOrigPCIfc; + Vector#(aluExeNum, ROB_getOrigPredPC) getOrigPredPCIfc; + for(Integer i = 0; i < valueof(aluExeNum) + 1; i = i+1) begin + getOrigPCIfc[i] = (interface ROB_getOrigPC; + method Addr get(InstTag x) = row[x.way][x.ptr].getOrigPC; + endinterface); + end + for(Integer i = 0; i < valueof(aluExeNum); i = i+1) begin + getOrigPredPCIfc[i] = (interface ROB_getOrigPredPC; + method Addr get(InstTag x) = row[x.way][x.ptr].getOrigPredPC; + endinterface); + end + + interface enqPort = enqIfc; + + method Bool isEmpty; + return empty_for_enq; + endmethod + + interface deqPort = deqIfc; + + method Bool isEmpty_ehrPort0; + function Bool isEmptyFunc(Integer i); + return !valid[i][enqP[i]][0] && enqP[i] == deqP[i]; + endfunction + Vector#(SupSize, Integer) idxVec = genVector; + return all(isEmptyFunc, idxVec); + endmethod + + method Bool isFull_ehrPort0; + function Bool isFullFunc(Integer i); + return valid[i][enqP[i]][0] && enqP[i] == deqP[i]; + endfunction + Vector#(SupSize, Integer) idxVec = genVector; + return all(isFullFunc, idxVec); + endmethod + + method Action setLSQAtCommitNotified(InstTag x) if( + all(id, readVReg(setNotified_SB_enq)) // ordering: < enq + ); + row[x.way][x.ptr].setLSQAtCommitNotified; + endmethod + + method Action setExecuted_deqLSQ(InstTag x, Maybe#(Exception) cause, Maybe#(LdKilledBy) ld_killed) if( + all(id, readVReg(setExeLSQ_SB_enq)) // ordering: < enq + ); + row[x.way][x.ptr].setExecuted_deqLSQ(cause, ld_killed); + endmethod + + interface setExecuted_doFinishAlu = aluSetExeIfc; + + interface setExecuted_doFinishFpuMulDiv = fpuMulDivSetExeIfc; + + method Action setExecuted_doFinishMem( + InstTag x, Addr vaddr, Bool access_at_commit, Bool non_mmio_st_done + ) if( + all(id, readVReg(setExeMem_SB_enq)) // ordering: < enq + ); + row[x.way][x.ptr].setExecuted_doFinishMem(vaddr, access_at_commit, non_mmio_st_done); + endmethod + +`ifdef INORDER_CORE + method Action setLSQTag(InstTag x, LdStQTag t, Bool isFence); + row[x.way][x.ptr].setLSQTag(t, isFence); + endmethod +`endif + + interface getOrigPC = getOrigPCIfc; + interface getOrigPredPC = getOrigPredPCIfc; + + method InstTime getEnqTime = enqTime; + + interface ROB_SpeculationUpdate specUpdate; + method Action correctSpeculation(SpecBits mask); + for(Integer w = 0; w < valueof(SupSize); w = w+1) begin + for(Integer i = 0; i < valueof(SingleScalarSize); i = i+1) begin + row[w][i].correctSpeculation(mask); + end + end + endmethod + + method Action incorrectSpeculation(Bool killAll, SpecTag specTag, InstTag killInstTag); + // record wrongSpec action + wrongSpecEn.wset(ROBWrongSpecInput { + killAll: killAll, + specTag: specTag, + killInstTag: killInstTag + }); + // order after deq + deq_SB_wrongSpec <= False; + // make it conflict with enq + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + wrongSpec_enq_conflict[i].wset(?); + end + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/ReservationStationEhr.bsv b/src_Core/RISCY_OOO/procs/lib/ReservationStationEhr.bsv new file mode 100644 index 0000000..89675f2 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/ReservationStationEhr.bsv @@ -0,0 +1,291 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Types::*; +import ProcTypes::*; +import Vector::*; +import ConfigReg::*; +import HasSpecBits::*; +import Ehr::*; +import GetPut::*; +import Assert::*; + +typedef struct{ + a data; + PhyRegs regs; + InstTag tag; + // speculation + SpecBits spec_bits; + Maybe#(SpecTag) spec_tag; + // scheduling + RegsReady regs_ready; +} ToReservationStation#(type a) deriving(Bits, Eq, FShow); + +interface ReservationStation#( + numeric type size, numeric type setRegReadyNum, type a +); + method Action enq(ToReservationStation#(a) x); + method Bool canEnq; + + method Action setRobEnqTime(InstTime t); + method ToReservationStation#(a) dispatchData; + method Action doDispatch; + + interface Vector#(setRegReadyNum, Put#(Maybe#(PhyRIndx))) setRegReady; + + // For count-based scheduling when there are multiple reservation stations + // for the same inst type. This method only takes effect when module + // parameter countValid is true. + method Bit#(TLog#(TAdd#(size, 1))) approximateCount; + + // performance: count full cycles + method Bool isFull_ehrPort0; + + interface SpeculationUpdate specUpdate; +endinterface + +typedef Bit#(TAdd#(1, TLog#(NumInstTags))) VirtualInstTime; + +module mkReservationStation#(Bool lazySched, Bool lazyEnq, Bool countValid)( + ReservationStation#(size, setRegReadyNum, a) +) provisos ( + NumAlias#(regsReadyPortNum, TAdd#(1, setRegReadyNum)), + Alias#(idxT, Bit#(TLog#(size))), + Alias#(countT, Bit#(TLog#(TAdd#(size, 1)))), + Log#(TAdd#(1, size), TLog#(TAdd#(size, 1))), + Bits#(a, aSz), FShow#(a), + Add#(1, b__, size) +); + Integer valid_wrongSpec_port = 0; + Integer valid_dispatch_port = 0; // write valid + Integer valid_enq_port = 1; // write valid + + Integer sb_wrongSpec_port = 0; + Integer sb_dispatch_port = 0; + Integer sb_enq_port = 0; // write spec_bits + Integer sb_correctSpec_port = 1; // write spec_bits + + function Integer ready_set_port(Integer i) = i; // write regs_ready by each setRegReady ifc + Integer ready_enq_port = valueof(setRegReadyNum); // write regs_ready + + Vector#(size, Ehr#(2,Bool)) valid <- replicateM(mkEhr(False)); + Vector#(size, Reg#(a)) data <- replicateM(mkRegU); + Vector#(size, Reg#(PhyRegs)) regs <- replicateM(mkRegU); + Vector#(size, Reg#(InstTag)) tag <- replicateM(mkRegU); + Vector#(size, Reg#(Maybe#(SpecTag))) spec_tag <- replicateM(mkRegU); + Vector#(size, Ehr#(2, SpecBits)) spec_bits <- replicateM(mkEhr(?)); + Vector#(size, Ehr#(regsReadyPortNum, RegsReady)) regs_ready <- replicateM(mkEhr(?)); + + // wrong spec conflict with enq and dispatch + RWire#(void) wrongSpec_enq_conflict <- mkRWire; + RWire#(void) wrongSpec_dispatch_conflict <- mkRWire; + + // approximate count of valid entries + Reg#(countT) validEntryCount <- mkConfigReg(0); + + if(countValid) begin + (* fire_when_enabled, no_implicit_conditions *) + rule countValidEntries; + validEntryCount <= pack(countElem(True, readVEhr(0, valid))); + endrule + end + + // enq time in ROB, used as pivot to get virtual inst time (dispatch happens before ROB enq) + Wire#(InstTime) robEnqTime <- mkDWire(0); + // mapping to virtual inst time as follow: + // valid entry time t --> t < robEnqTime ? t + 2^log(NumInstTags) : t + function VirtualInstTime getVTime(InstTag instTag); + InstTime t = instTag.t; + return t < robEnqTime ? zeroExtend(t) + fromInteger(valueof(TExp#(TLog#(NumInstTags)))) : zeroExtend(t); + endfunction + Vector#(size, VirtualInstTime) vTime = map(getVTime, readVReg(tag)); + // function to find the oldest entry (smaller virtual time) which satisfy certain constraint + function Maybe#(idxT) findOldest(Vector#(size, Bool) pred); + function idxT getOlder(idxT a, idxT b); + if(!pred[a]) begin + return b; + end + else if(!pred[b]) begin + return a; + end + else begin + return vTime[a] < vTime[b] ? a : b; + end + endfunction + Vector#(size, idxT) idxVec = genWith(fromInteger); + idxT idx = fold(getOlder, idxVec); + return pred[idx] ? Valid (idx) : Invalid; + endfunction + + // search for row to dispatch, we do it lazily + // i.e. look at the EHR port 0 of ready bits, so there is no bypassing + staticAssert(lazySched, "Only support lazy schedule now"); + + Vector#(size, Wire#(Bool)) ready_wire <- replicateM(mkBypassWire); + (* fire_when_enabled, no_implicit_conditions *) + rule setReadyWire; + function Action setReady(Integer i); + action + ready_wire[i] <= allRegsReady(regs_ready[i][0]); + endaction + endfunction + Vector#(size, Integer) idxVec = genVector; + joinActions(map(setReady, idxVec)); + endrule + + function Bool get_ready(Wire#(Bool) r); + return r; + endfunction + Vector#(size, Bool) can_schedule = zipWith( \&& , readVEhr(valid_dispatch_port, valid), map(get_ready, ready_wire) ); + + // oldest index to dispatch + let can_schedule_index = findOldest(can_schedule); + + // ifc to set reg ready + Vector#(setRegReadyNum, Put#(Maybe#(PhyRIndx))) setRegReadyIfc = ?; + for(Integer k = 0; k < valueof(setRegReadyNum); k = k+1) begin + setRegReadyIfc[k] = (interface Put; + method Action put(Maybe#(PhyRIndx) x); + Integer ehrPort = ready_set_port(k); + function Action setReady(Integer i); + action + // function to set ready for element i + // This compares Maybe types. + // If both are invalid, regs_ready.srcX must be True. + RegsReady new_regs_ready = regs_ready[i][ehrPort]; + if (x == regs[i].src1) begin + new_regs_ready.src1 = True; + end + if (x == regs[i].src2) begin + new_regs_ready.src2 = True; + end + if (x == regs[i].src3) begin + new_regs_ready.src3 = True; + end + regs_ready[i][ehrPort] <= new_regs_ready; + endaction + endfunction + Vector#(size, Integer) idxVec = genVector; + joinActions(map(setReady, idxVec)); + endmethod + endinterface); + end + + // search to find enq slot + Maybe#(UInt#(TLog#(size))) enqP = ?; + function Bool entryInvalid(Bool v) = !v; + + if(lazyEnq) begin + Wire#(Maybe#(UInt#(TLog#(size)))) enqP_wire <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setWireForEnq; + enqP_wire <= findIndex(entryInvalid, readVEhr(0, valid)); + endrule + enqP = enqP_wire; + end + else begin + enqP = findIndex(entryInvalid, readVEhr(valid_enq_port, valid)); + end + + //rule debugRes(!isValid(enqP)); + // $fdisplay(stdout, "cannot enqueue in the reservation station this cycle"); + //endrule + + method Action enq(ToReservationStation#(a) x) if (enqP matches tagged Valid .idx); + $display(" [mkReservationStationRow::_write] ", fshow(x)); + valid[idx][valid_enq_port] <= True; + data[idx] <= x.data; + regs[idx] <= x.regs; + tag[idx] <= x.tag; + spec_tag[idx] <= x.spec_tag; + spec_bits[idx][sb_enq_port] <= x.spec_bits; + regs_ready[idx][ready_enq_port] <= x.regs_ready; + // conflict with wrong spec + wrongSpec_enq_conflict.wset(?); + endmethod + method Bool canEnq = isValid(enqP); + + method Action setRobEnqTime(InstTime t); + robEnqTime <= t; + endmethod + + method ToReservationStation#(a) dispatchData if (can_schedule_index matches tagged Valid .i); + return ToReservationStation{ + data: data[i], + regs: regs[i], + tag: tag[i], + spec_bits: spec_bits[i][sb_dispatch_port], + spec_tag: spec_tag[i], + regs_ready: RegsReady { // must be all true + src1: True, + src2: True, + src3: True, + dst: True + } + }; + endmethod + + method Action doDispatch if (can_schedule_index matches tagged Valid .i); + valid[i][valid_dispatch_port] <= False; + // conflict with wrong spec + wrongSpec_dispatch_conflict.wset(?); + endmethod + + method countT approximateCount; + return validEntryCount; + endmethod + + interface setRegReady = setRegReadyIfc; + + method Bool isFull_ehrPort0; + return readVEhr(0, valid) == replicate(True); + endmethod + + interface SpeculationUpdate specUpdate; + method Action incorrectSpeculation(Bool kill_all, SpecTag x); + function Action wrongSpec(Integer i); + action + if(kill_all || spec_bits[i][sb_wrongSpec_port][x] == 1) begin + valid[i][valid_wrongSpec_port] <= False; + end + endaction + endfunction + Vector#(size, Integer) idxVec = genVector; + joinActions(map(wrongSpec, idxVec)); + // conflict with enq, dispatch + wrongSpec_enq_conflict.wset(?); + wrongSpec_dispatch_conflict.wset(?); + endmethod + + method Action correctSpeculation(SpecBits mask); + function Action correctSpec(Integer i); + action + spec_bits[i][sb_correctSpec_port] <= spec_bits[i][sb_correctSpec_port] & mask; + endaction + endfunction + Vector#(size, Integer) idxVec = genVector; + joinActions(map(correctSpec, idxVec)); + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/SafeCounter.bsv b/src_Core/RISCY_OOO/procs/lib/SafeCounter.bsv new file mode 100644 index 0000000..17c3ef1 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/SafeCounter.bsv @@ -0,0 +1,75 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Ehr::*; + + +// counter that will block when overflow/underflow + +interface SafeCounter#(type t); + method Action incr(t v); + method Action decr(t v); + method t _read; + method Action _write(t v); +endinterface + +module mkSafeCounter#(t initVal)(SafeCounter#(t)) provisos( + Alias#(t, Bit#(w)) +); + Ehr#(2, t) cnt <- mkEhr(initVal); + + Ehr#(2, Maybe#(t)) incr_req <- mkEhr(Invalid); + Ehr#(2, Maybe#(t)) decr_req <- mkEhr(Invalid); + + (* fire_when_enabled, no_implicit_conditions *) + rule con; + t val = cnt[0]; + if(incr_req[1] matches tagged Valid .v) begin + val = val + v; + end + if(decr_req[1] matches tagged Valid .v) begin + val = val - v; + end + cnt[0] <= val; + incr_req[1] <= Invalid; + decr_req[1] <= Invalid; + endrule + + method Action incr(t v); + when(cnt[0] <= maxBound - v, action + incr_req[0] <= Valid (v); + endaction); + endmethod + + method Action decr(t v); + when(cnt[0] >= v, action + decr_req[0] <= Valid (v); + endaction); + endmethod + + method t _read = cnt[0]; + + method Action _write(t v); + cnt[1] <= v; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/Scoreboard.bsv b/src_Core/RISCY_OOO/procs/lib/Scoreboard.bsv new file mode 100644 index 0000000..f1c6c3b --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Scoreboard.bsv @@ -0,0 +1,324 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Vector::*; +import Fifo::*; +import ProcTypes::*; +import CsrFile::*; // for mkReadOnlyReg +import Ehr::*; +import GetPut::*; + +interface Scoreboard#(numeric type size, type t); + method Action insert(Maybe#(t) r); + method Action remove; + method Bool search1(Maybe#(t) r); + method Bool search2(Maybe#(t) r); + method Bool search3(Maybe#(t) r); + method Action clear; +endinterface + +interface PhyRegsScoreboard; + method Action insert(Maybe#(PhyDst) r); + method Action remove(Maybe#(PhyDst) r); + method Bool search(PhyRegs r); + method Action clear; +endinterface + +function Bool isFound(Maybe#(t) x, Maybe#(t) k) provisos (Eq#(t)); + if(x matches tagged Valid .xv &&& k matches tagged Valid .kv &&& kv == xv) + return True; + else + return False; +endfunction + +// search CF {enq, deq, first, notEmpty, notFull} +// deq CF enq +// search < clear +module mkCFScoreboard(Scoreboard#(size,t)) provisos (Bits#(t,tSz), Eq#(t)); + SFifo#(size, Maybe#(t), Maybe#(t)) f <- mkCFSFifo(isFound); + + method insert = f.enq; + + method remove = f.deq; + + method search1 = f.search; + method search2 = f.search; + method search3 = f.search; + + method clear = f.clear; +endmodule + +function PhyRegsScoreboard phyRegsScoreboardWrapper(Scoreboard#(size, PhyRIndx) sb); + return (interface PhyRegsScoreboard; + method Action insert(Maybe#(PhyDst) r); + if (r matches tagged Valid .valid_dst) begin + sb.insert(tagged Valid (valid_dst.indx)); + end else begin + sb.insert(tagged Invalid); + end + endmethod + method Action remove(Maybe#(PhyDst) r); + sb.remove; + endmethod + method Bool search(PhyRegs r); + return sb.search1(r.src1) || sb.search2(r.src2) || sb.search3(r.src3); + endmethod + method Action clear; + sb.clear; + endmethod + endinterface); +endfunction + +module mkBitVectorScoreboard(PhyRegsScoreboard); + Vector#(NumPhyReg, Reg#(Bool)) bitvector <- replicateM(mkReg(False)); + bitvector[0] <- mkReadOnlyReg(False); + + method Action insert(Maybe#(PhyDst) r); + if (r matches tagged Valid .valid_dst) begin + bitvector[pack(valid_dst.indx)] <= True; + end + endmethod + method Action remove(Maybe#(PhyDst) r); + if (r matches tagged Valid .valid_dst) begin + bitvector[pack(valid_dst.indx)] <= False; + end + endmethod + method Bool search(PhyRegs r); + Bool found = False; + if (r.src1 matches tagged Valid .valid_reg) begin + found = found || bitvector[pack(valid_reg)]; + end + if (r.src2 matches tagged Valid .valid_reg) begin + found = found || bitvector[pack(valid_reg)]; + end + if (r.src3 matches tagged Valid .valid_reg) begin + found = found || bitvector[pack(valid_reg)]; + end + if (r.dst matches tagged Valid .valid_dst) begin + found = found || bitvector[pack(valid_dst.indx)]; + end + return found; + endmethod + method Action clear; + writeVReg(bitvector, replicate(False)); + endmethod +endmodule + +// notEmpty < first < deq < search < notFull < enq < clear +module mkPipelineScoreboard(Scoreboard#(size,t)) provisos (Bits#(t,tSz), Eq#(t)); + SFifo#(size, Maybe#(t), Maybe#(t)) f <- mkPipelineSFifo(isFound); + + method insert = f.enq; + + method remove = f.deq; + + method search1 = f.search; + method search2 = f.search; + method search3 = f.search; + + method clear = f.clear; +endmodule + +interface CountScoreboard#(numeric type size, type t); + method Action insert(Maybe#(t) r); + method Action remove; + method Bit#(TLog#(TAdd#(size, 1))) search1(Maybe#(t) r); + method Bit#(TLog#(TAdd#(size, 1))) search2(Maybe#(t) r); + method Bit#(TLog#(TAdd#(size, 1))) search3(Maybe#(t) r); + method Action clear; +endinterface + +// search CF {enq, deq, first, notEmpty, notFull} +// deq CF enq +// search < clear +module mkCFCountScoreboard(CountScoreboard#(size,t)) provisos (Bits#(t,tSz), Eq#(t)); + SCountFifo#(size, Maybe#(t), Maybe#(t)) f <- mkCFSCountFifo(isFound); + + method insert = f.enq; + + method remove = f.deq; + + method search1 = f.search; + method search2 = f.search; + method search3 = f.search; + + method clear = f.clear; +endmodule + +// Scoreboard to use with real register renaming (no WAW hazards) +interface SbLookup; + method RegsReady get(PhyRegs r); +endinterface +interface SbSetBusy; + method Action set(Maybe#(PhyDst) dst); +endinterface +interface RenamingScoreboard#(numeric type setReadyNum, numeric type lazyLookupNum); + // eager look up when insert to reservation station, must see setReady & previous setBusy effects + interface Vector#(SupSize, SbLookup) eagerLookup; + interface Vector#(SupSize, SbSetBusy) setBusy; + interface Vector#(setReadyNum, Put#(PhyRIndx)) setReady; + // lazy look up in reg read, no need to see setReady effect (reg read rule will check bypass) + interface Vector#(lazyLookupNum, SbLookup) lazyLookup; +endinterface + +// ordering: setReady < eagerLookup, setBusy +// lazyLookup just check EHR port 0 using wires +module mkRenamingScoreboard(RenamingScoreboard#(setReadyNum, lazyLookupNum)) provisos ( + NumAlias#(portNum, TAdd#(SupSize, setReadyNum)) +); + // sb[i] == False => register ready to read + // sb[i] == True => register will be written soon, not ready to read + Vector#(NumPhyReg, Ehr#(portNum, Bool)) sb <- replicateM(mkEhr(False)); + + function Integer setReady_port(Integer i) = i; + function Integer lookup_port(Integer i) = i + valueof(setReadyNum); + function Integer setBusy_port(Integer i) = i + valueof(setReadyNum); + + Vector#(setReadyNum, Put#(PhyRIndx)) setReadyIfc = ?; + for(Integer i = 0; i < valueof(setReadyNum); i = i+1) begin + setReadyIfc[i] = (interface Put; + method Action put(PhyRIndx dst); + Integer ehrPort = setReady_port(i); + sb[dst][ehrPort] <= False; + endmethod + endinterface); + end + + // wire to do lazy lookup + Wire#(Vector#(NumPhyReg, Bool)) sbWire <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setSbWire; + sbWire <= readVEhr(0, sb); + endrule + + // function to derive lookup interface + function SbLookup getLookupIfc(Vector#(NumPhyReg, Bool) sbVec); + return (interface SbLookup; + method RegsReady get(PhyRegs r); + // everything is ready by default + RegsReady ret = RegsReady{src1: True, src2: True, src3: True, dst: True}; + if (r.src1 matches tagged Valid .x) begin + ret.src1 = !sbVec[x]; + end + if (r.src2 matches tagged Valid .x) begin + ret.src2 = !sbVec[x]; + end + if (r.src3 matches tagged Valid .x) begin + ret.src3 = !sbVec[x]; + end + return ret; + endmethod + endinterface); + endfunction + + function SbLookup getEagerLookupIfc(Integer i) = getLookupIfc(readVEhr(lookup_port(i), sb)); + + function SbSetBusy getSetBusyIfc(Integer i); + return (interface SbSetBusy; + method Action set(Maybe#(PhyDst) dst); + if (dst matches tagged Valid .valid_dst) begin + sb[valid_dst.indx][setBusy_port(i)] <= True; + end + endmethod + endinterface); + endfunction + + interface setBusy = map(getSetBusyIfc, genVector); + interface eagerLookup = map(getEagerLookupIfc, genVector); + + interface lazyLookup = replicate(getLookupIfc(sbWire)); + + interface setReady = setReadyIfc; +endmodule + + +// BYPASS scoreboard to use with register renaming in an in-order core +// setReady < lookup < setBusy +interface InorderRenamingScoreboard#( + numeric type setReadyNum, numeric type lookupNum +); + interface Vector#(lookupNum, SbLookup) lookup; // together with RF read + interface Vector#(SupSize, SbSetBusy) setBusy; // at rename + interface Vector#(setReadyNum, Put#(PhyRIndx)) setReady; // exe finishes +endinterface + +module mkInorderRenamingScoreboard( + InorderRenamingScoreboard#(setReadyNum, lookupNum) +) provisos ( + NumAlias#(portNum, TAdd#(SupSize, setReadyNum)) +); + // sb[i] == False => register ready to read + // sb[i] == True => register will be written soon, not ready to read + Vector#(NumPhyReg, Ehr#(portNum, Bool)) sb <- replicateM(mkEhr(False)); + + function Integer setReady_port(Integer i) = i; + function Integer lookup_port = valueof(setReadyNum); + function Integer setBusy_port(Integer i) = i + valueof(setReadyNum); + + // function to derive set ready interface + function Put#(PhyRIndx) getSetReadyIfc(Integer i); + return (interface Put; + method Action put(PhyRIndx dst); + sb[dst][setReady_port(i)] <= False; + endmethod + endinterface); + endfunction + + // function to derive lookup interface + function SbLookup getLookupIfc(Integer i); + Vector#(NumPhyReg, Bool) sbVec = readVEhr(lookup_port, sb); + return (interface SbLookup; + method RegsReady get(PhyRegs r); + // everything is ready by default + RegsReady ret = RegsReady{src1: True, src2: True, src3: True, dst: True}; + if (r.src1 matches tagged Valid .x) begin + ret.src1 = !sbVec[x]; + end + if (r.src2 matches tagged Valid .x) begin + ret.src2 = !sbVec[x]; + end + if (r.src3 matches tagged Valid .x) begin + ret.src3 = !sbVec[x]; + end + return ret; + endmethod + endinterface); + endfunction + + // function to derive set busy interface + function SbSetBusy getSetBusyIfc(Integer i); + return (interface SbSetBusy; + method Action set(Maybe#(PhyDst) dst); + if (dst matches tagged Valid .valid_dst) begin + sb[valid_dst.indx][setBusy_port(i)] <= True; + end + endmethod + endinterface); + endfunction + + interface setBusy = map(getSetBusyIfc, genVector); + interface lookup = map(getLookupIfc, genVector); + interface setReady = map(getSetReadyIfc, genVector); +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/SetAssocTlb.bsv b/src_Core/RISCY_OOO/procs/lib/SetAssocTlb.bsv new file mode 100644 index 0000000..f744f75 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/SetAssocTlb.bsv @@ -0,0 +1,270 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import Ehr::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; +import RWBramCore::*; + +// set assoc tlb only for 4KB pages +// indexed by VPN + +typedef struct { + Bool hit; + wayT way; // hit way + TlbEntry entry; // hit entry +} SetAssocTlbResp#(type wayT) deriving(Bits, Eq, FShow); + +typedef struct { + Vpn vpn; + Asid asid; +} SetAssocTlbTranslateReq deriving(Bits, Eq, FShow); + +typedef union tagged { + SetAssocTlbTranslateReq Translate; + TlbEntry Refill; +} SetAssocTlbReq deriving(Bits, Eq, FShow); + +interface SetAssocTlb#( + numeric type wayNum, + numeric type lgSetNum, + type repInfoT // info for replacement, e.g. LRU +); + method Action flush; + method Bool flush_done; + + method Action req(SetAssocTlbReq r); + // resp is only for translate req + method SetAssocTlbResp#(Bit#(TLog#(wayNum))) resp; + // deq resp from pipeline and may update the hit way to MRU + method Action deqResp(Maybe#(Bit#(TLog#(wayNum))) hitWay); +endinterface + +typedef enum {Flush, Ready} SetAssocTlbState deriving(Bits, Eq, FShow); + +typedef struct { + Bool valid; + TlbEntry entry; +} SetAssocTlbEntry deriving(Bits, Eq, FShow); + +module mkSetAssocTlb#( + repInfoT repInfoInitVal, + function wayT getRepWay(repInfoT info, Vector#(wayNum, Bool) invalid), + function repInfoT updateRepInfo(repInfoT info, wayT way) +)( + SetAssocTlb#(wayNum, lgSetNum, repInfoT) +) provisos( + Alias#(wayT, Bit#(TLog#(wayNum))), + Alias#(indexT, Bit#(lgSetNum)), + Alias#(respT, SetAssocTlbResp#(wayT)), + Bits#(repInfoT, a__), + Add#(lgSetNum, b__, VpnSz) +); + // ram for tlb entry + Vector#(wayNum, RWBramCore#(indexT, SetAssocTlbEntry)) tlbRam <- replicateM(mkRWBramCore); + // ram for replace info + RWBramCore#(indexT, repInfoT) repRam <- mkRWBramCore; + // pending + Ehr#(2, Maybe#(SetAssocTlbReq)) pendReq <- mkEhr(Invalid); + Reg#(Maybe#(SetAssocTlbReq)) pendReq_deq = pendReq[0]; + Reg#(Maybe#(SetAssocTlbReq)) pendReq_enq = pendReq[1]; + // init & flush index + Reg#(indexT) flushIdx <- mkReg(0); + // overall state + Reg#(SetAssocTlbState) state <- mkReg(Flush); + + function indexT getIndex(Vpn vpn) = truncate(vpn); + + // we don't accept req when there is an old req to the same index, because + // at resp end we may write RAM. This resolves read-after-write hazard. + Wire#(Maybe#(indexT)) pendIndex <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setPendIndex; + if(pendReq_deq matches tagged Valid .rq) begin + case(rq) matches + tagged Translate .r: begin + pendIndex <= Valid (getIndex(r.vpn)); + end + tagged Refill .e: begin + pendIndex <= Valid (getIndex(e.vpn)); + end + default: begin + pendIndex <= Invalid; + end + endcase + end + else begin + pendIndex <= Invalid; + end + endrule + + rule doFlush(state == Flush); + // since TLB is a read-only cache, we can discard everything + for(Integer i = 0; i < valueof(wayNum); i = i+1) begin + tlbRam[i].wrReq(flushIdx, SetAssocTlbEntry {valid: False, entry: ?}); + end + repRam.wrReq(flushIdx, repInfoInitVal); + // update states + flushIdx <= flushIdx + 1; + if(flushIdx == maxBound) begin + // flush is done + state <= Ready; + end + endrule + + rule doAddEntry( + state == Ready &&& + pendReq_deq matches tagged Valid (tagged Refill .newEn) + ); + // deq pipeline reg and ram resp + pendReq_deq <= Invalid; + for(Integer i = 0; i < valueof(wayNum); i = i+1) begin + tlbRam[i].deqRdResp; + end + repRam.deqRdResp; + // get all the tlb ram resp & rep ram resp + Vector#(wayNum, Bool) validVec; + Vector#(wayNum, TlbEntry) entryVec; + for(Integer i = 0; i < valueof(wayNum); i = i+1) begin + let r = tlbRam[i].rdResp; + validVec[i] = r.valid; + entryVec[i] = r.entry; + end + repInfoT repInfo = repRam.rdResp; + // check if the new entry already exists + function Bool sameEntry(wayT w); + let en = entryVec[w]; + Bool same_page = en.vpn == newEn.vpn && + en.asid == newEn.asid && + en.pteType.global == newEn.pteType.global; + return validVec[w] && same_page; + endfunction + Vector#(wayNum, wayT) wayVec = genWith(fromInteger); + if(find(sameEntry, wayVec) matches tagged Valid .way) begin + // entry exists, update rep info + indexT idx = getIndex(newEn.vpn); + repRam.wrReq(idx, updateRepInfo(repInfo, way)); + end + else begin + // find a slot for this translation + // Since TLB is read-only cache, we can silently evict + function Bool flip(Bool x) = !x; + wayT addWay = getRepWay(repInfo, map(flip, validVec)); + // update slot & rep info + indexT idx = getIndex(newEn.vpn); + tlbRam[addWay].wrReq(idx, SetAssocTlbEntry { + valid: True, entry: newEn + }); + repRam.wrReq(idx, updateRepInfo(repInfo, addWay)); + end + endrule + + // start flush when no pending req + method Action flush if(state == Ready && !isValid(pendReq[0])); + state <= Flush; + flushIdx <= 0; + endmethod + + method Bool flush_done = state == Ready; + + // accept new req when + // (1) in Ready + // (2) not waiting for flush + // (3) pipeline reg available + method Action req(SetAssocTlbReq r) if(state == Ready && !isValid(pendReq_enq)); + // (4) new req does not match index of existing req (no read/write race + // in BRAM) + Vpn vpn = (case(r) matches + tagged Translate .rq: (rq.vpn); + tagged Refill .en: (en.vpn); + default: ?; + endcase); + indexT idx = getIndex(vpn); + when(pendIndex != Valid (idx), noAction); + // save req + pendReq_enq <= Valid (r); + // read ram + for(Integer i = 0; i < valueof(wayNum); i = i+1) begin + tlbRam[i].rdReq(idx); + end + repRam.rdReq(idx); + endmethod + + method respT resp if( + state == Ready &&& + pendReq_deq matches tagged Valid (tagged Translate .rq) + ); + // get all the tlb ram resp & LRU + Vector#(wayNum, SetAssocTlbEntry) entries; + for(Integer i = 0; i < valueof(wayNum); i = i+1) begin + entries[i] = tlbRam[i].rdResp; + end + repInfoT repInfo = repRam.rdResp; + // do VPN match (only 4KB page) and ASID match + function Bool entryHit(wayT i); + SetAssocTlbEntry en = entries[i]; + Bool vpnMatch = en.entry.vpn == rq.vpn; + Bool asidMatch = en.entry.asid == rq.asid || en.entry.pteType.global; + return en.valid && asidMatch && vpnMatch; + endfunction + Vector#(wayNum, wayT) wayVec = genWith(fromInteger); + if(find(entryHit, wayVec) matches tagged Valid .w) begin + // hit + return SetAssocTlbResp { + hit: True, + way: w, + entry: entries[w].entry + }; + end + else begin + // miss + return SetAssocTlbResp { + hit: False, + way: ?, + entry: ? + }; + end + endmethod + + // deq resp from pipeline and update a way and LRU + method Action deqResp(Maybe#(wayT) hitWay) if( + state == Ready &&& + pendReq_deq matches tagged Valid (tagged Translate .rq) + ); + // deq pipeline reg + pendReq_deq <= Invalid; + // deq ram read resp + for(Integer i = 0; i < valueof(wayNum); i = i+1) begin + tlbRam[i].deqRdResp; + end + repRam.deqRdResp; + // update rep ram + if(hitWay matches tagged Valid .way) begin + let idx = getIndex(rq.vpn); + let repInfo = repRam.rdResp; + repRam.wrReq(idx, updateRepInfo(repInfo, way)); + end + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/SpecFifo.bsv b/src_Core/RISCY_OOO/procs/lib/SpecFifo.bsv new file mode 100644 index 0000000..2c15322 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/SpecFifo.bsv @@ -0,0 +1,253 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import ProcTypes::*; +import HasSpecBits::*; +import Vector::*; +import Ehr::*; +import Assert::*; +import Types::*; + +typedef struct { + t data; + SpecBits spec_bits; +} ToSpecFifo#(type t) deriving(Bits, Eq, FShow); + +interface SpecFifo#( + numeric type size, type t, + numeric type validPortNum, // valid EHR port num + numeric type sbPortNum // specBits EHR port num +); + method Action enq(ToSpecFifo#(t) x); + method Action deq; + method ToSpecFifo#(t) first; + interface SpeculationUpdate specUpdate; +endinterface + +// scheduling parameter +typedef struct { + // valid EHR port assignment + Integer validDeqPort; + Integer validEnqPort; + Integer validWrongSpecPort; + // specBits EHR port assignment + // correct spec is always the last + Integer sbDeqPort; + Integer sbEnqPort; + Integer sbWrongSpecPort; + // method/rule conflicting with wrongSpec + // conflicts between wrong spec and correct spec are enforced at top level (Core.bsv) + Bool wrongSpec_conflict_enq; + Bool wrongSpec_conflict_deq; + Bool wrongSpec_conflict_canon; +} SpecFifoSched deriving(Eq); + +module mkSpecFifo#( + SpecFifoSched sched, // schedule EHR ordering + Bool lazyEnq // whether we calculate enq guard lazily +)( + SpecFifo#(size, t, validPortNum, sbPortNum) +) provisos ( + Alias#(idxT, Bit#(TLog#(size))), + Bits#(t, _tsz), + FShow#(t) +); + staticAssert(sched.validDeqPort < sched.validEnqPort, "enq must schedule after deq"); + + // correct spec is always the last + Integer sbCorrectSpecPort = valueof(sbPortNum) - 1; + + Vector#(size, Ehr#(validPortNum, Bool)) valid <- replicateM(mkEhr(False)); + Vector#(size, Reg#(t)) row <- replicateM(mkRegU); + Vector#(size, Ehr#(sbPortNum, SpecBits)) specBits <- replicateM(mkEhr(?)); + + Reg#(idxT) enqP <- mkReg(0); + Ehr#(2, idxT) deqP_ehr <- mkEhr(0); + Reg#(idxT) deqP = deqP_ehr[0]; // port 0 is for deq and canon_deqP + + // make incorrectSpeculation conflict with others + RWire#(void) dummyRWire = (interface RWire; + method Maybe#(void) wget = Invalid; + method Action wset(void x) = noAction; + endinterface); + RWire#(void) wrongSpec_enq_conflict = dummyRWire; + RWire#(void) wrongSpec_deq_conflict = dummyRWire; + RWire#(void) wrongSpec_canon_conflict = dummyRWire; + if(sched.wrongSpec_conflict_enq) begin + wrongSpec_enq_conflict <- mkRWire; + end + if(sched.wrongSpec_conflict_deq) begin + wrongSpec_deq_conflict <- mkRWire; + end + if(sched.wrongSpec_conflict_canon) begin + wrongSpec_canon_conflict <- mkRWire; + end + + function idxT getNextPtr(idxT p); + return p == fromInteger(valueOf(size) - 1) ? 0 : p + 1; + endfunction + + Bool empty_for_canon = all( \== (False) , readVEhr(sched.validDeqPort, valid) ); + rule canon_deqP(!valid[deqP][sched.validDeqPort] && (enqP != deqP || !empty_for_canon)); + // element at deqP was killed, so increment deqP + deqP <= getNextPtr(deqP); + // make conflict with incorrect spec + wrongSpec_canon_conflict.wset(?); + endrule + + // calculate guard for enq, we can do aggressively or lazily + idxT deqP_for_enq = ?; + Bool empty_for_enq = ?; + Bool valid_for_enq = ?; + if(lazyEnq) begin + // use the stale deqP & valid before canon_deqP or deq fires + // because deq, canon_deqP, wrongSpec only set valid to false and move deqP forward + // this just makes enq fire less aggressively + Wire#(idxT) deqP_for_enq_wire <- mkBypassWire; + Wire#(Bool) empty_for_enq_wire <- mkBypassWire; + Wire#(Bool) valid_for_enq_wire <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setWireForEnq; + deqP_for_enq_wire <= deqP; + empty_for_enq_wire <= all( \== (False) , readVEhr(0, valid) ); + valid_for_enq_wire <= valid[enqP][0]; + endrule + deqP_for_enq = deqP_for_enq_wire; + empty_for_enq = empty_for_enq_wire; + valid_for_enq = valid_for_enq_wire; + end + else begin + deqP_for_enq = deqP_ehr[1]; // read up-to-date deqP + empty_for_enq = all( \== (False) , readVEhr(sched.validEnqPort, valid) ); + valid_for_enq = valid[enqP][sched.validEnqPort]; + end + + method Action enq(ToSpecFifo#(t) x) if (empty_for_enq || enqP != deqP_for_enq); + // [sizhuo] I don't think valid bit needs to be checked here + doAssert(!valid_for_enq, "enq entry cannot be valid"); + enqP <= getNextPtr(enqP); + valid[enqP][sched.validEnqPort] <= True; + row[enqP] <= x.data; + specBits[enqP][sched.sbEnqPort] <= x.spec_bits; + // make conflict with incorrect spec + wrongSpec_enq_conflict.wset(?); + endmethod + + method Action deq if (valid[deqP][sched.validDeqPort]); + valid[deqP][sched.validDeqPort] <= False; + deqP <= getNextPtr(deqP); + // make conflict with incorrect spec + wrongSpec_deq_conflict.wset(?); + endmethod + + method ToSpecFifo#(t) first if (valid[deqP][sched.validDeqPort]); + return ToSpecFifo{ + data: row[deqP], + spec_bits: specBits[deqP][sched.sbDeqPort] + }; + endmethod + + interface SpeculationUpdate specUpdate; + method Action correctSpeculation(SpecBits mask); + // clear spec bits for all entries + function Action correctSpec(Integer i); + action + SpecBits sb = specBits[i][sbCorrectSpecPort]; + specBits[i][sbCorrectSpecPort] <= sb & mask; + endaction + endfunction + Vector#(size, Integer) idxVec = genVector; + joinActions(map(correctSpec, idxVec)); + endmethod + + method Action incorrectSpeculation(Bool kill_all, SpecTag specTag); + // clear entries + function Action incorrectSpec(Integer i); + action + SpecBits sb = specBits[i][sched.sbWrongSpecPort]; + if(kill_all || sb[specTag] == 1) begin + valid[i][sched.validWrongSpecPort] <= False; // ordered after deq + end + endaction + endfunction + Vector#(size, Integer) idxVec = genVector; + joinActions(map(incorrectSpec, idxVec)); + // make conflict with others + wrongSpec_enq_conflict.wset(?); + wrongSpec_canon_conflict.wset(?); + wrongSpec_deq_conflict.wset(?); + endmethod + endinterface +endmodule + + +// deq < enq (< correctSpec) +// deq < wrongSpec +// wrongSpec C enq +typedef SpecFifo#( + size, t, 2, 2 +) SpecFifo_SB_deq_enq_SB_deq_wrong_C_enq#(numeric type size, type t); + +module mkSpecFifo_SB_deq_enq_SB_deq_wrong_C_enq#(Bool lazyEnq)( + SpecFifo_SB_deq_enq_SB_deq_wrong_C_enq#(size, t) +) provisos(Bits#(t, w), FShow#(t)); + let sched = SpecFifoSched { + validDeqPort: 0, + validEnqPort: 1, + validWrongSpecPort: 1, + sbDeqPort: 0, + sbEnqPort: 0, + sbWrongSpecPort: 0, + wrongSpec_conflict_enq: True, + wrongSpec_conflict_deq: False, + wrongSpec_conflict_canon: False + }; + let m <- mkSpecFifo(sched, lazyEnq); + return m; +endmodule + + +// deq < enq (< correctSpec) +// wrongSpec C enq +// wrongSpec C deq +typedef SpecFifo#( + size, t, 2, 2 +) SpecFifo_SB_deq_enq_C_deq_enq#(numeric type size, type t); + +module mkSpecFifo_SB_deq_enq_C_deq_enq#(Bool lazyEnq)( + SpecFifo_SB_deq_enq_C_deq_enq#(size, t) +) provisos(Bits#(t, w), FShow#(t)); + let sched = SpecFifoSched { + validDeqPort: 0, + validEnqPort: 1, + validWrongSpecPort: 0, + sbDeqPort: 0, + sbEnqPort: 0, + sbWrongSpecPort: 0, + wrongSpec_conflict_enq: True, + wrongSpec_conflict_deq: True, + wrongSpec_conflict_canon: True // acutally canon never fire + }; + let m <- mkSpecFifo(sched, lazyEnq); + return m; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/SpecPoisonFifo.bsv b/src_Core/RISCY_OOO/procs/lib/SpecPoisonFifo.bsv new file mode 100644 index 0000000..8d30e33 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/SpecPoisonFifo.bsv @@ -0,0 +1,132 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import ProcTypes::*; +import HasSpecBits::*; +import Vector::*; +import Ehr::*; +import Types::*; +import SpecFifo::*; + +interface SpecPoisonFifo#(numeric type size, type t); + method Action enq(ToSpecFifo#(t) x); + method Action deq; + method ToSpecFifo#(t) first_data; + method Bool first_poisoned; + interface SpeculationUpdate specUpdate; +endinterface + +module mkSpecPoisonFifo#(Bool lazyEnq)( + SpecPoisonFifo#(size, t) +) provisos( + Alias#(idxT, Bit#(TLog#(size))), + Bits#(t, _tsz), FShow#(t) +); + // deq < enq < correctSpec + // deq read poison, wrongSpec write poison, can use same EHR port + // wrongSpec conflict enq + Integer valid_deq_port = 0; + Integer valid_enq_port = 1; + Integer poisoned_deq_port = 0; + Integer poisoned_wrongSpec_port = 0; + Integer poisoned_enq_port = 1; + Integer sb_deq_port = 0; + Integer sb_wrongSpec_port = 0; + Integer sb_enq_port = 0; + Integer sb_correctSpec_port = 1; + + Vector#(size, Ehr#(2, Bool)) valid <- replicateM(mkEhr(False)); + Vector#(size, Ehr#(2, Bool)) poisoned <- replicateM(mkEhr(?)); + Vector#(size, Reg#(t)) row <- replicateM(mkRegU); + Vector#(size, Ehr#(2, SpecBits)) specBits <- replicateM(mkEhr(?)); + + RWire#(void) wrongSpec_enq_conflict <- mkRWire; + + Reg#(idxT) enqP <- mkReg(0); + Reg#(idxT) deqP <- mkReg(0); + + function idxT getNextPtr(idxT p); + return p == fromInteger(valueOf(size) - 1) ? 0 : p + 1; + endfunction + + Bool valid_for_enq = ?; + if(lazyEnq) begin + // use EHR port 0 + Wire#(Bool) valid_for_enq_wire <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setEnqWire; + valid_for_enq_wire <= valid[enqP][0]; + endrule + valid_for_enq = valid_for_enq_wire; + end + else begin + valid_for_enq = valid[enqP][valid_enq_port]; + end + + method Action enq(ToSpecFifo#(t) x) if(!valid_for_enq); + valid[enqP][valid_enq_port] <= True; + poisoned[enqP][poisoned_enq_port] <= False; + row[enqP] <= x.data; + specBits[enqP][sb_enq_port] <= x.spec_bits; + enqP <= getNextPtr(enqP); + // make conflict with wrongSpec + wrongSpec_enq_conflict.wset(?); + endmethod + + method Action deq if(valid[deqP][valid_deq_port]); + valid[deqP][valid_deq_port] <= False; + // poison bit does not need reset + deqP <= getNextPtr(deqP); + endmethod + + method ToSpecFifo#(t) first_data if(valid[deqP][valid_deq_port]); + return ToSpecFifo { + data: row[deqP], + spec_bits: specBits[deqP][sb_deq_port] + }; + endmethod + + method Bool first_poisoned if(valid[deqP][valid_deq_port]); + return poisoned[deqP][poisoned_deq_port]; + endmethod + + interface SpeculationUpdate specUpdate; + method Action incorrectSpeculation(Bool kill_all, SpecTag x); + // poison entries + for(Integer i = 0 ; i < valueOf(size) ; i = i+1) begin + if(kill_all || specBits[i][sb_wrongSpec_port][x] == 1) begin + poisoned[i][poisoned_wrongSpec_port] <= True; + end + end + // make conflicts with enq + wrongSpec_enq_conflict.wset(?); + endmethod + method Action correctSpeculation(SpecBits mask); + // clear spec bits for all entries + for(Integer i = 0 ; i < valueOf(size) ; i = i+1) begin + let new_spec_bits = specBits[i][sb_correctSpec_port] & mask; + specBits[i][sb_correctSpec_port] <= new_spec_bits; + end + endmethod + endinterface +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/SpecTagManager.bsv b/src_Core/RISCY_OOO/procs/lib/SpecTagManager.bsv new file mode 100644 index 0000000..89f81cd --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/SpecTagManager.bsv @@ -0,0 +1,106 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import ProcTypes::*; +import HasSpecBits::*; +import Ehr::*; + +interface SpecTagManager; + method SpecBits currentSpecBits; + method SpecTag nextSpecTag; + method Action claimSpecTag; + method Bool canClaim; + interface SpeculationUpdate specUpdate; + // performance: count full cycle + method Bool isFull_ehrPort0; +endinterface + +(* synthesize *) +module mkSpecTagManager(SpecTagManager); + Ehr#(2,SpecBits) current_spec_bits_ehr <- mkEhr(0); + // normal processing & wrong spec use port 0 + Reg#(SpecBits) current_spec_bits = current_spec_bits_ehr[0]; + // correct spec use port 1 + + // dependent_chekcpoints[i] is the SpecBits that depend on SpecTag i. + // i.e., if SpecTag i is incorrect, then dependent_checkpoints[i] are all + // wrong. + Vector#(NumSpecTags, Reg#(SpecBits)) dependent_checkpoints <- replicateM(mkReg(0)); + + // wrong spec conflict with claim spec tag + RWire#(void) wrongSpec_claim_conflict <- mkRWire; + + Maybe#(SpecTag) next_spec_tag = tagged Invalid; + for (Integer i = valueOf(NumSpecTags) - 1 ; i >= 0 ; i = i-1) begin + if (current_spec_bits[i] == 0) begin + next_spec_tag = tagged Valid fromInteger(i); + end + end + + rule debugSt; + if ((next_spec_tag == tagged Invalid )) begin + $fdisplay(stdout, "SpecTag manager locked"); + end + endrule + + method SpecBits currentSpecBits; + return current_spec_bits; + endmethod + method SpecTag nextSpecTag if (next_spec_tag matches tagged Valid .valid_spec_tag); + return valid_spec_tag; + endmethod + method Action claimSpecTag if (next_spec_tag matches tagged Valid .valid_spec_tag); + current_spec_bits[valid_spec_tag] <= 1; + + for (Integer i = 0 ; i < valueOf(NumSpecTags) ; i = i+1) begin + if (fromInteger(i) == valid_spec_tag) begin + dependent_checkpoints[valid_spec_tag] <= (1 << valid_spec_tag); + end else if (current_spec_bits[i] == 1) begin + dependent_checkpoints[i] <= dependent_checkpoints[i] | (1 << valid_spec_tag); + end + end + // conflict with wrong spec + wrongSpec_claim_conflict.wset(?); + endmethod + method Bool canClaim = isValid(next_spec_tag); + interface SpeculationUpdate specUpdate; + method Action incorrectSpeculation(Bool killAll, SpecTag tag); + if(killAll) begin + current_spec_bits <= 0; + end + else begin + current_spec_bits <= current_spec_bits & (~(dependent_checkpoints[tag])); + end + // conflict with claim spec tag + wrongSpec_claim_conflict.wset(?); + endmethod + method Action correctSpeculation(SpecBits mask); + current_spec_bits_ehr[1] <= current_spec_bits_ehr[1] & mask; + endmethod + endinterface + + method Bool isFull_ehrPort0; + return next_spec_tag == Invalid; + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/SplitLSQ.bsv b/src_Core/RISCY_OOO/procs/lib/SplitLSQ.bsv new file mode 100644 index 0000000..7961002 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/SplitLSQ.bsv @@ -0,0 +1,2363 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Types::*; +import ProcTypes::*; +import CCTypes::*; +import Vector::*; +import GetPut::*; +import Assert::*; +import Ehr::*; +import HasSpecBits::*; +import SpecFifo::*; +import StoreBuffer::*; +import Exec::*; + +// I don't want to export auxiliary functions, so manually export all types +export LdQMemFunc(..); +export StQMemFunc(..); +export LdQDeqEntry(..); +export StQDeqEntry(..); +export LSQUpdateAddrResult(..); +export LSQForwardResult(..); +export LdStalledBy(..); +export LSQIssueLdResult(..); +export LSQIssueLdInfo(..); +export LSQRespLdResult(..); +export LSQHitInfo(..); +export SplitLSQ(..); +export mkSplitLSQ; +export isLdQMemFunc; +export isStQMemFunc; + +// state transition +// Ld: enq and Idle -> set computed |-> issue and Executing |-> resp and Done |-> Deq +// | | |-> get killed and set ldKilled +// | |-> get killed and set ldKilled +// |-> issue fail and set depXXX -> reset depXXX +// St: enq and Idle -> set computed -> deq +// Lr/Sc/Amo: enq and Idle -> set computed -> issue to mem -> get resp and deq +// Fence: enq and Idle -> deq + +// XXX I choose to kill an eager load L even when it is still executing. An +// alternative way is to re-execute L. However, this won't work well with +// bypassing load result. Consider L is forced to re-execute because an older +// load L1 updates the LSQ. When L got into the cache, it wakes up another +// load L2 which depends on the result of L. L will wait for L1 to first +// execute. Suppose the store set says that L1 may dependend on a store S. +// Then L2 will stuck at the reg read stage before S resolves its addr. +// However, if S is waken up from reservation station after L2, then we +// deadlock. + +// Fence is kept in SQ with its aq/rl bits. It is treated like an AMO , i.e., +// it waits for commit signal from ROB to be dequeued, and then sets the ROB +// entry executed. + +// For TSO, to make our OOO execution conform to TSO, we need to *verify* each +// load and store sequentially to mimic TSO I2E operational model. Besides the +// sequential ordering of verification, a Ld can be verified when it has its +// result, a St can be verified when it has addr and data computed, an +// Lr/Sc/Amo can be verified when it has completed memory access, and a fence +// can be verified when all older mem accesses have been dequeued from LSQ. A +// Ld/Lr/MMIO is verified by dequeuing it from LQ, so there is no +// verify-pointer in LQ. A Sc/Amo/Fence/MMIO is also verfied by dequeuing it +// from SQ. The only reason for needing a verify-pointer in SQ is that a +// verified St can still live in SQ. All stores within [deqP, verify-pointer) +// are Sts that have been verfied, and verify-pointer points to the next store +// to be verfied. This pointer helps enforcing the sequential verification +// ordering: +// - The LQ head can be dequeued when its olderSt is invalid or older than +// SQ verify pointer. +// - The SQ entry at verify pointer can be verified when the LQ head's +// olderSt is younger than or equal to this SQ entry. +// Because of the pathological case that verify-ptr = deq ptr = enq ptr (when +// SQ is full), we need to add a verified bit to SQ to distinguish the case of +// everything verified from the case of nothing verified. + +// For WEAK, we also need verified bits and verify-ptr for SQ. These are for +// dequeuing LQ. An LQ entry cannot be dequeud until all older SQ entries have +// computed their addresses (pure fences can be verified as long as they are +// valid). Note that fences do not prevent normal Ld from being dequeued, but +// prevent normal Ld from executing. For Lr, things are trickier. Lr is issued +// at deq time. To avoid doing a search for fences, we can just issue Lr when +// all older SQ entries are dequeued. Same thing applies to MMIO. We add these +// to guards of deqLd. The requirement for verification is slightly different +// from TSO, i.e., an Sc/Amo can be verified by just computing the addr; it +// needs not to be dequeued from SQ; and older LQ entries can still exist. + +typedef enum {Ld, Lr} LdQMemFunc deriving(Bits, Eq, FShow); + +// LQ holds Ld and Lr. This type is for documentation purpose, it is not really +// used. +typedef struct { + // =================== + // Basic info + + InstTag instTag; + LdQMemFunc memFunc; + Bool unsignedLd; + Bool byteEn; // unshifted BE + Bool acq; // acquire ordering + Bool rel; // release ordering + Maybe#(PhyDst) dst; + Addr paddr; + // whether paddr is mmio addr; MMIO access is handled at deq time + // non-speculatively + Bool isMMIO; + // byte enable after shift to align with dword boudary. This is valid + // for all types of memory accesses. + ByteEn shiftedBE; + + // =================== + // Status bits of the Ld. Typically we don't need to reset any bit as the + // Ld move forward. The only exception is the inIssueQ bit. It is reset + // when Ld issues from issueQ. This is because it may need to be set again + // if the Ld finds itself stalled by something. + + // fault after addr translation + Maybe#(Exception) fault; + // paddr/isMMIO/data have been computed (can be true only when no fault) + Bool computed; + // Ld is in issueQ, can be true only when computed = True and excutiong = + // done = killed = False + Bool inIssueQ; + // Ld is executing (either issued to cache or forwarding is on its way). + Bool executing; + // Ld has got its result (executing must be true) + Bool done; + // Ld is killed by older inst (failed speculation), can be true only when + // executing or done is true + Maybe#(LdKilledBy) killed; + + // =================== + // Ld/St ordering. + + // When the Ld allocates the LQ entry, we record the tag of the youngest SQ + // entry, i.e., the youngest store that is older than the Ld. This is used + // for searching older stores for bypass or stall. If the SQ entry is not + // valid, then the search is not needed. + Maybe#(StQTag) olderSt; + // We can deq a LQ entry when older SQ entries have been dequeued or + // verified. The olderSt field can indication if the immeidate older SQ + // entry have been dequeued, this field indicates whether it is + // verified. This is only meaningful when olderSt is valid. + Bool olderStVerified; + // The store that the Ld reads from. If invalid, then the load reads from + // memory. This only meaning when done = True. + Maybe#(StQTag) readFrom; + + // =================== + // Reasons for Ld stall, can be non-Invalid only when inIssueQ = executing + // = done = killed = False. Though only 1 reason can be valid, we keep them + // separately to avoid bypassing when these reasons are reset in various + // events. + + // Ld stalled by Lr to same addr, should wait for it to deq + Maybe#(LdQTag) depLdQDeq; + // Ld stalled by St/Sc/Amo in SQ to same addr, wait for it to deq + Maybe#(StQTag) depStQDeq; +`ifndef TSO_MM + // WEAK model only: Ld stalled by unexecuted Ld to same addr, should wait + // it to be issued + Maybe#(LdQTag) depLdEx; + // WEAK model only: Ld stalled by store buffer entry, should wait it to + // write cache + Maybe#(SBIndex) depSBDeq; +`endif + + // =================== + // Speculation related. + + SpecBits specBits; + // inst is at commit stage + Bool atCommit; + // waiting for a wrong path load resp (the current entry cannot issue) + Bool waitWPResp; +} LdQEntry deriving (Bits, Eq, FShow); + +typedef enum {St, Sc, Amo, Fence} StQMemFunc deriving(Bits, Eq, FShow); + +// SQ holds St, Sc and Amo. This type is for documentation purpose, it is not +// really used. +typedef struct { + // =================== + // Basic info + + InstTag instTag; + StQMemFunc memFunc; + AmoFunc amoFunc; + Bool byteEn; // unshifted BE + Bool acq; // acquire ordering + Bool rel; // release ordering + Maybe#(PhyDst) dst; + // keep full addr, because we use addr[2] to determine upper or lower + // 32-bit AMO in cache, and we use lower bits of addr to shift load resp. + Addr paddr; + // whether paddr is mmio addr; MMIO access is handled at deq time + // non-speculatively + Bool isMMIO; + // byte enable after shift to align with dword boudary. This is valid + // for all types of memory accesses. + ByteEn shiftedBE; + // St/Sc/Amo data + // for St/Sc: store data after shift to align with dword boudary + // for Amo: data is **NOT** shifted, this doesn't affect forwarding to Ld, + // because AMO never forwards data + Data stData; + + // =================== + // status bits of St/Sc/Amo + + // fault after addr translation + Maybe#(Exception) fault; + // paddr/isMMIO/data have been computed (can be true only when no fault) + Bool computed; + // entry is verified, see comments above + Bool verified; + + // =================== + // Ld/St ordering. + + // Unfortunately, we choose not to record the younger Ld index at enq time + // (doing so can save 1 virtual tag computation on the whole LQ). This is + // because the LQ may be full when the SQ is enq, and we don't know what to + // record. + + // =================== + // Speculation related. + + SpecBits specBits; + // inst is at commit stage (Sc/Amo/MMIO) or have been committed (non-MMIO + // St) + Bool atCommit; +} StQEntry deriving(Bits, Eq, FShow); + +typedef struct { + Bool waitWPResp; +} LSQUpdateAddrResult deriving(Bits, Eq, FShow); + +typedef struct { + Maybe#(PhyDst) dst; + Data data; // align with dword, not final result written to reg file +} LSQForwardResult deriving(Bits, Eq, FShow); + +typedef enum {LdQ, StQ, SB} LdStalledBy deriving(Bits, Eq, FShow); + +typedef union tagged { + void ToCache; + LdStalledBy Stall; + LSQForwardResult Forward; +} LSQIssueLdResult deriving(Bits, Eq, FShow); + +typedef struct { + LdQTag tag; + Addr paddr; + ByteEn shiftedBE; +} LSQIssueLdInfo deriving(Bits, Eq, FShow); + +typedef struct { + Bool wrongPath; + Maybe#(PhyDst) dst; + Data data; +} LSQRespLdResult deriving(Bits, Eq, FShow); + +typedef struct { + Bool waitWPResp; + Maybe#(PhyDst) dst; +} LSQHitInfo deriving(Bits, Eq, FShow); + +typedef struct { + InstTag instTag; + LdQMemFunc memFunc; + ByteEn byteEn; + Bool unsignedLd; + Bool acq; + Bool rel; + Maybe#(PhyDst) dst; + Addr paddr; + Bool isMMIO; + ByteEn shiftedBE; + Maybe#(Exception) fault; + Maybe#(LdKilledBy) killed; +} LdQDeqEntry deriving (Bits, Eq, FShow); + +typedef struct { + InstTag instTag; + StQMemFunc memFunc; + AmoFunc amoFunc; + Bool acq; + Bool rel; + Maybe#(PhyDst) dst; + Addr paddr; + Bool isMMIO; + ByteEn shiftedBE; + Data stData; + Maybe#(Exception) fault; +} StQDeqEntry deriving (Bits, Eq, FShow); + +interface SplitLSQ; + // Enq at renaming. We split to 2 enq methods to enable synthesize + // boundary. If we merge into 1 enq method, the guard will depend on the + // type of mem inst, so cannot be synthesized. + method Maybe#(LdStQTag) enqLdTag; + method Maybe#(LdStQTag) enqStTag; + method Action enqLd(InstTag inst_tag, + MemInst mem_inst, + Maybe#(PhyDst) dst, + SpecBits spec_bits); + method Action enqSt(InstTag inst_tag, + MemInst mem_inst, + Maybe#(PhyDst) dst, + SpecBits spec_bits); + // A mem inst needs orignal BE (not shifted) at addr translation + method ByteEn getOrigBE(LdStQTag t); + // Retrieve information when we want to wakeup RS early in case + // Ld/Lr/Sc/Amo hits in cache + method ActionValue#(LSQHitInfo) getHit(LdStQTag t); + // update store data (shifted for St and Sc, unshifted for AMO). XXX we + // assume data is updated before addr is updated + method Action updateData(StQTag t, Data d); + // Update addr after address translation. Also search for the (oldest) + // younger load to kill. Return if the entry is waiting for wrong path + // resp, so Ld can be issued immediately. + method ActionValue#(LSQUpdateAddrResult) updateAddr( + LdStQTag lsqTag, Maybe#(Exception) fault, + // below are only meaningful wen fault is Invalid + Addr paddr, Bool isMMIO, ByteEn shiftedBE + ); + // Issue a load, and remove dependence on this load issue. + method ActionValue#(LSQIssueLdResult) issueLd( + LdQTag lsqTag, Addr paddr, ByteEn shiftedBE, SBSearchRes sbRes + ); + // Get the load to issue + method ActionValue#(LSQIssueLdInfo) getIssueLd; + // Get load resp + method ActionValue#(LSQRespLdResult) respLd(LdQTag t, Data alignedData); + // Deq LQ entry, and wakeup stalled loads. The guard checks the following: + // (1) valid + // (2) one of the following is true: + // (a) fault + // (b) non-MMIO Ld, done and all older SQ entries have been dequeued or + // verified (the load may be killed) + // (c) MMIO or Lr, computed, atCommit, and no older SQ entry (this also + // handles .rl associated with Lr). XXX No older SQ entry also + // handles the case that an older fence is in SQ. + // NOTE: XXX A killed load is dequeued in the same way as normal loads. We + // should not dequeue a killed load to early, because it may have + // already waken up a younger instruction but have not yet written to + // phy reg file. In this case, the younger instruction will stuck at + // reg read stage, preventing an instruction older than the killed + // load from execution. This in turn prevents the killed load from + // committing and flushing, i.e., we deadlock. + // NOTE: .aq of Lr is handled by stalling load execution in issueLd and no + // Ld-St reordering (i.e., St/Sc/Amo execute at/after commit). + // Therefore, we typically do not need to check .aq at deq time. + // However, the only exception is when we use a self-invalidation + // coherence. + // Outside world should do the following: + // (1) issue Lr or MMIO to memory system only at deq port + // (2) For WEAK model, check .rl associated with Lr and SB empty before + // issuing Lr + // (3) set ROB entry of deq mem inst to Executed (so that ROB can commit) + // (4) Fore WEAK model, before issuing (non-MMIO) Lr, ensure SB does not + // contain overlapping address + // (5) For WEAK model and self-invalidation caches, check .aq of + // Sc/Amo/Fence, and flush L1 cache. + method LdQDeqEntry firstLd; + method Action deqLd; + // Deq SQ entry, and wakeup stalled loads. Also change the readFrom and + // olderSt fields of loads. The guard only checks the following: + // (1) valid + // (2) one of the following is true: + // (a) fault + // (b) computed or entry is a Fence, and atCommit (this implies no + // older LQ entry) + // NOTE: .aq of Sc/Amo/Fence is handled by stalling load execution in + // issueLd and in-order deq of SQ. Therefore, we typically do not + // need to check .aq at deq time. However, the only exception is when + // we use a self-invalidation coherence. + // Outside world should do the following: + // (1) issue Sc/Amo/MMIO to memory system or deq Fence at deq port + // (2) for WEAK model, issue normal St to SB + // (3) for TSO, issue normal St to memory + // (4) Check .rl associated with Sc/Amo/Fence and SB empty before + // issuing Sc/Amo or dequing Fence. Since Sc/Amo/Fence can deq only + // at/after inst commit, there cannot be any older load. + // (5) set ROB entry of dequeued Sc/Amo/MMIO/Fence to Executed (normal St should + // have been set as Executed when addr and data are computed) + // (6) For WEAK model, before issuing non-MMIO Sc/Amo, ensure SB does not + // contain overlapping address + // (7) For WEAK model and self-invalidation caches, check .aq of + // Sc/Amo/Fence, and flush L1 cache. + method StQDeqEntry firstSt; + method Action deqSt; +`ifdef TSO_MM + // Kill loads when a cache line is evicted (TSO only) + method Action cacheEvict(LineAddr a); +`else + // Wake up younger loads when SB deq (only WEAK model has SB) + method Action wakeupLdStalledBySB(SBIndex sbIdx); +`endif + // For system consistency, check SQ empty. Need this check because a normal + // St can sit in the SQ while already committed from ROB + method Bool stqEmpty; + // notify that inst is or has been to commit stage + interface Vector#(SupSize, Put#(LdStQTag)) setAtCommit; + // Speculation + interface SpeculationUpdate specUpdate; + // for performance + method Bool stqFull_ehrPort0; + method Bool ldqFull_ehrPort0; + // for security: we cannot flush D$ until all wrong-path loads have + // returned from D$ + method Bool noWrongPathLoads; +endinterface + +// --- auxiliary types and functions --- +// virtual index: 0 -- (2 * size - 1) +typedef Bit#(TLog#(TMul#(2, LdQSize))) LdQVirTag; +typedef Bit#(TLog#(TMul#(2, StQSize))) StQVirTag; + +typedef Bit#(TSub#(AddrSz, TLog#(NumBytes))) DataAlignedAddr; +function DataAlignedAddr getDataAlignedAddr(Addr a) = truncateLSB(a); + +// whether two memory accesses are to the same dword +function Bool sameAlignedAddr(Addr a, Addr b); + return getDataAlignedAddr(a) == getDataAlignedAddr(b); +endfunction + +// whether two memory accesses overlap +function Bool overlapAddr(Addr addr_1, ByteEn shift_be_1, + Addr addr_2, ByteEn shift_be_2); + Bool be_overlap = (pack(shift_be_1) & pack(shift_be_2)) != 0; + return be_overlap && sameAlignedAddr(addr_1, addr_2); +endfunction + +// check shiftBE1 covers shiftBE2 +function Bool be1CoverBe2(ByteEn shift_be_1, ByteEn shift_be_2); + return (pack(shift_be_1) & pack(shift_be_2)) == pack(shift_be_2); +endfunction + +// check whether mem op addr is aligned w.r.t data size +function Bool checkAddrAlign(Addr paddr, ByteEn be); + Bit#(TLog#(NumBytes)) byteOffset = truncate(paddr); + if(be[7]) begin + return byteOffset == 0; + end + else if(be[3]) begin + return byteOffset[1:0] == 0; + end + else if(be[1]) begin + return byteOffset[0] == 0; + end + else begin + return True; + end +endfunction + +// get mem func +function LdQMemFunc getLdQMemFunc(MemFunc f); + return (case(f) + Ld: (Ld); + Lr: (Lr); + default: ?; + endcase); +endfunction + +function StQMemFunc getStQMemFunc(MemFunc f); + return (case(f) + St: (St); + Sc: (Sc); + Amo: (Amo); + Fence: (Fence); + default: ?; + endcase); +endfunction + +function Bool isLdQMemFunc(MemFunc f); + return (case(f) + Ld, Lr: (True); + default: (False); + endcase); +endfunction + +function Bool isStQMemFunc(MemFunc f); + return (case(f) + St, Sc, Amo, Fence: (True); + default: (False); + endcase); +endfunction + +// issueQ of LSQ tags for issue +typedef SpecFifo_SB_deq_enq_C_deq_enq#(2, LSQIssueLdInfo) LSQIssueLdQ; +(* synthesize *) +module mkLSQIssueLdQ(LSQIssueLdQ); + let m <- mkSpecFifo_SB_deq_enq_C_deq_enq(True); + return m; +endmodule +// --- end of auxiliary types and functions --- + +(* synthesize *) +module mkSplitLSQ(SplitLSQ); + // method/rule ordering + // getHit, findIssue < + // (deqLd (TSO ? C : <) verifySt) < + // cacheEvict < + // updateAddr < + // issueLd, getIssueLd < + // enqIssueQ < + // (wakeupLdStalledBySB (Weak only) CF deqSt) < + // setAtCommit < + // respLd < + // updateData < + // (enqLd C enqSt) < + // correctSpec + + // Scheduling notes: + // - getHit, findIssue are almost readonly, so put them at beginning. + // - findIssue must be before updateAddr, because the newly updated load + // may be issued outside LSQ. We don't want to enq this Ld to issueQ. + // - A load can first updateAddr and then issue in one cycle (in two + // rules), so updateAddr < issueLd. Also, issueLd writes readFrom which is + // used in the associative search in updateAddr. + // - cacheEvict and updateAddr needs the readFrom fields in LQ. Since deqSt + // changes readFrom, we put cacheEvict, updateAddr < deqSt. + // - issueLd needs the olderSt field and SQ. Since deqSt changeds SQ and + // readFrom and olderSt fields of LQ, we put issueLd < deqSt. However, + // since issueLd sets readFrom and depStQDeq, this creates a bypassing path + // from issueLd to deqSt. + // - In WEAK model, issueLd will search store buffer. Since + // wakeupLdStalledBySB happens in the same rule as store buffer deq, we put + // wakeupLdStalledBySB > issueLd. However, since issueLd sets depSBDeq, + // this creates a bypassing path from issueLd to wakeupLdStalledBySB. This + // is pretty much aligned with the case of deqSt. + // - There should not be requirement between cachEvict and updateAddr, + // just choose arbitrarily. + // - Since load resp may be enq into a bypass fifo after coming out of the + // cache, respLd should not precede the cache rule that sends resp. We just + // put the cache resp rule < respLd. Since cache resp rule calls deqSt + // (TSO) or wakeupLdStalledBySB (WEAK), we have deqSt < respLd and + // wakeupLdStalledBySB < respLd. + // - There is a bypassing path from updateAddr to deqSt. This path should + // not be activated in reality, because the updated StQ entry cannot be + // validated in the same cycle. TODO? If we really want, we can make a + // bypass wire to read paddr[0] in deqSt. + // - To cut off bypassing from stb.enq to stb.deq, we put wakeupStallBySB + // < deqSt. + // - There is a bypassing path from updateAddr to respLd, though it should + // never be activated in reality. TODO We can make a bypass wire to read + // paddr[0] in respLd method. + // - There is a bypassing path from validatedSt to deqSt, i.e., a store + // can be validated and issued to memory at the same cycle. This is + // probably a desirable behavior. + // - We put findIssue < updateAddr to prevent findIssue insert a newly + // updated LQ entry into issueQ; this can create problem because the new + // updated load may be immediately issued to execution in the same cycle + // later. + // - In TSO, only one of deqLd and verifySt can fire at one cycle, because + // of sequential verification requirement. In WEAK, deqLd < verifySt, + // because verifySt does not need to peek any info in LQ. + // - XXX We temporarily put deqSt < setAtCommit to avoid bypass from + // doCommit to deqSt. To avoid scheduling cycles, we may need wires to call + // this method in doCommit rule. Such wires should not be a problem, + // because the inst cannot be killed or affected in other ways. + + // W.r.t wrongSpec: + // findIss < wrongSpec (findIss is read only, the real action rule enqIss + // is conflicting with wrongSpec) + // All other methods or rules that have conflicting accesses with wrongSpec + // should conflict with wrongSpec to cut off any possible bypass path. + + // XXX Since firstSt is ordered very late, we are likely to end up with + // wrongSpec < firstSt. Thus, if we call wrongSpec and firstSt together in + // one rule, then we may end up with a cycle in scheduling (with another + // rule that calls firstLd and deqLd in case wrongSpec < deqLd). Therefore, + // when we need to call wrongSpec from firstSt (typically when an MMIO + // request faults), we should first copy the MMIO request to a reg, and + // then kill using the info in reg. + + Bool verbose = True; + + // we may simplify things in case of single core + Bool multicore = valueof(CoreNum) > 1; + + // LQ + // entry valid bits + Vector#(LdQSize, Ehr#(2, Bool)) ld_valid <- replicateM(mkEhr(False)); + // entry contents + Vector#(LdQSize, Reg#(InstTag)) ld_instTag <- replicateM(mkRegU); + Vector#(LdQSize, Reg#(LdQMemFunc)) ld_memFunc <- replicateM(mkRegU); + Vector#(LdQSize, Reg#(Bool)) ld_unsigned <- replicateM(mkRegU); + Vector#(LdQSize, Reg#(ByteEn)) ld_byteEn <- replicateM(mkRegU); + Vector#(LdQSize, Reg#(Bool)) ld_acq <- replicateM(mkRegU); + Vector#(LdQSize, Reg#(Bool)) ld_rel <- replicateM(mkRegU); + Vector#(LdQSize, Reg#(Maybe#(PhyDst))) ld_dst <- replicateM(mkRegU); + Vector#(LdQSize, Ehr#(2, Addr)) ld_paddr <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, Bool)) ld_isMMIO <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, ByteEn)) ld_shiftedBE <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, Maybe#(Exception))) ld_fault <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, Bool)) ld_computed <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(3, Bool)) ld_inIssueQ <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, Bool)) ld_executing <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, Bool)) ld_done <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(3, Maybe#(LdKilledBy))) ld_killed <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, Maybe#(StQTag))) ld_olderSt <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(2, Bool)) ld_olderStVerified <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(3, Maybe#(StQTag))) ld_readFrom <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(3, Maybe#(LdQTag))) ld_depLdQDeq <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(3, Maybe#(StQTag))) ld_depStQDeq <- replicateM(mkEhr(?)); +`ifndef TSO_MM + Vector#(LdQSize, Ehr#(3, Maybe#(LdQTag))) ld_depLdEx <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(3, Maybe#(SBIndex))) ld_depSBDeq <- replicateM(mkEhr(?)); +`endif + Vector#(LdQSize, Ehr#(3, SpecBits)) ld_specBits <- replicateM(mkEhr(?)); + Vector#(LdQSize, Ehr#(TAdd#(1, SupSize), Bool)) ld_atCommit <- replicateM(mkEhr(?)); + // wrong-path load filter (must init to all False) + Vector#(LdQSize, Ehr#(1, Bool)) ld_waitWPResp <- replicateM(mkEhr(False)); + // enq/deq ptr + Reg#(LdQTag) ld_enqP <- mkReg(0); + Ehr#(2, LdQTag) ld_deqP <- mkEhr(0); + + // Ports of each EHR used in each method or rule ("write" means the write + // port is used, "assert" means the port is only used for assert in + // simulation) + let ld_valid_findIss = getVEhrPort(ld_valid, 0); + let ld_valid_wrongSpec = getVEhrPort(ld_valid, 0); // write + let ld_valid_deqLd = getVEhrPort(ld_valid, 0); // write + let ld_valid_verify = getVEhrPort(ld_valid, 0); // only for TSO, C with deqLd + let ld_valid_evict = getVEhrPort(ld_valid, 1); + let ld_valid_updAddr = getVEhrPort(ld_valid, 1); + let ld_valid_issue = getVEhrPort(ld_valid, 1); + let ld_valid_enqIss = getVEhrPort(ld_valid, 1); // assert + let ld_valid_deqSt = getVEhrPort(ld_valid, 1); + let ld_valid_setCom = getVEhrPort(ld_valid, 1); // assert + let ld_valid_resp = getVEhrPort(ld_valid, 1); // assert + let ld_valid_enq = getVEhrPort(ld_valid, 1); // write + + let ld_paddr_findIss = getVEhrPort(ld_paddr, 0); + let ld_paddr_deqLd = getVEhrPort(ld_paddr, 0); + let ld_paddr_evict = getVEhrPort(ld_paddr, 0); + let ld_paddr_updAddr = getVEhrPort(ld_paddr, 0); // write + let ld_paddr_issue = getVEhrPort(ld_paddr, 1); + let ld_paddr_enqIss = getVEhrPort(ld_paddr, 1); // assert + let ld_paddr_resp = getVEhrPort(ld_paddr, 1); + + let ld_isMMIO_findIss = getVEhrPort(ld_isMMIO, 0); + let ld_isMMIO_evict = getVEhrPort(ld_isMMIO, 0); // assert + let ld_isMMIO_deqLd = getVEhrPort(ld_isMMIO, 0); + let ld_isMMIO_updAddr = getVEhrPort(ld_isMMIO, 0); // write + let ld_isMMIO_issue = getVEhrPort(ld_isMMIO, 1); // assert + let ld_isMMIO_enqIss = getVEhrPort(ld_isMMIO, 1); // assert + + let ld_shiftedBE_findIss = getVEhrPort(ld_shiftedBE, 0); + let ld_shiftedBE_deqLd = getVEhrPort(ld_shiftedBE, 0); + let ld_shiftedBE_updAddr = getVEhrPort(ld_shiftedBE, 0); // write + let ld_shiftedBE_issue = getVEhrPort(ld_shiftedBE, 1); + let ld_shiftedBE_enqIss = getVEhrPort(ld_shiftedBE, 1); // assert + + let ld_fault_deqLd = getVEhrPort(ld_fault, 0); + let ld_fault_updAddr = getVEhrPort(ld_fault, 0); // write + let ld_fault_issue = getVEhrPort(ld_fault, 1); // assert + let ld_fault_enqIss = getVEhrPort(ld_fault, 1); // assert + let ld_fault_enq = getVEhrPort(ld_fault, 1); // write + + let ld_computed_findIss = getVEhrPort(ld_computed, 0); + let ld_computed_deqLd = getVEhrPort(ld_computed, 0); + let ld_computed_evict = getVEhrPort(ld_computed, 0); // assert + let ld_computed_updAddr = getVEhrPort(ld_computed, 0); // write + let ld_computed_issue = getVEhrPort(ld_computed, 1); + let ld_computed_enqIss = getVEhrPort(ld_computed, 1); // assert + let ld_computed_resp = getVEhrPort(ld_computed, 1); // assert + let ld_computed_enq = getVEhrPort(ld_computed, 1); // write + + let ld_inIssueQ_findIss = getVEhrPort(ld_inIssueQ, 0); + let ld_inIssueQ_updAddr = getVEhrPort(ld_inIssueQ, 0); // assert + let ld_inIssueQ_issue = getVEhrPort(ld_inIssueQ, 0); // write + let ld_inIssueQ_enqIss = getVEhrPort(ld_inIssueQ, 1); // write + let ld_inIssueQ_enq = getVEhrPort(ld_inIssueQ, 2); // write + + let ld_executing_findIss = getVEhrPort(ld_executing, 0); + let ld_executing_wrongSpec = getVEhrPort(ld_executing, 0); + let ld_executing_deqLd = getVEhrPort(ld_executing, 0); + let ld_executing_evict = getVEhrPort(ld_executing, 0); + let ld_executing_updAddr = getVEhrPort(ld_executing, 0); + let ld_executing_issue = getVEhrPort(ld_executing, 0); // write + let ld_executing_enqIss = getVEhrPort(ld_executing, 1); // assert + let ld_executing_resp = getVEhrPort(ld_executing, 1); // assert + let ld_executing_enq = getVEhrPort(ld_executing, 1); // write + + let ld_done_wrongSpec = getVEhrPort(ld_done, 0); + let ld_done_deqLd = getVEhrPort(ld_done, 0); + let ld_done_updAddr = getVEhrPort(ld_done, 0); // assert + let ld_done_issue = getVEhrPort(ld_done, 0); // assert + let ld_done_enqIss = getVEhrPort(ld_done, 0); // assert + let ld_done_resp = getVEhrPort(ld_done, 0); // write + let ld_done_enq = getVEhrPort(ld_done, 1); // write + + let ld_killed_deqLd = getVEhrPort(ld_killed, 0); + let ld_killed_evict = getVEhrPort(ld_killed, 0); // write + let ld_killed_updAddr = getVEhrPort(ld_killed, 1); // write + let ld_killed_issue = getVEhrPort(ld_killed, 2); // assert + let ld_killed_enqIss = getVEhrPort(ld_killed, 2); // assert + let ld_killed_enq = getVEhrPort(ld_killed, 2); // write + + let ld_olderSt_deqLd = getVEhrPort(ld_olderSt, 0); + let ld_olderSt_verify = getVEhrPort(ld_olderSt, 0); + let ld_olderSt_deqSt = getVEhrPort(ld_olderSt, 0); // write + let ld_olderSt_enq = getVEhrPort(ld_olderSt, 1); // write + + let ld_olderStVerified_deqLd = getVEhrPort(ld_olderStVerified, 0); + let ld_olderStVerified_verify = getVEhrPort(ld_olderStVerified, 0); // write + let ld_olderStVerified_enq = getVEhrPort(ld_olderStVerified, 1); // write + + let ld_readFrom_evict = getVEhrPort(ld_readFrom, 0); + let ld_readFrom_issue = getVEhrPort(ld_readFrom, 0); // write + let ld_readFrom_deqSt = getVEhrPort(ld_readFrom, 1); // write + let ld_readFrom_enq = getVEhrPort(ld_readFrom, 2); // write + + let ld_depLdQDeq_findIss = getVEhrPort(ld_depLdQDeq, 0); + let ld_depLdQDeq_deqLd = getVEhrPort(ld_depLdQDeq, 0); // write + let ld_depLdQDeq_issue = getVEhrPort(ld_depLdQDeq, 1); // write + let ld_depLdQDeq_enqIss = getVEhrPort(ld_depLdQDeq, 2); // assert + let ld_depLdQDeq_enq = getVEhrPort(ld_depLdQDeq, 2); // write + + let ld_depStQDeq_findIss = getVEhrPort(ld_depStQDeq, 0); + let ld_depStQDeq_issue = getVEhrPort(ld_depStQDeq, 0); // write + let ld_depStQDeq_enqIss = getVEhrPort(ld_depStQDeq, 1); // assert + let ld_depStQDeq_deqSt = getVEhrPort(ld_depStQDeq, 1); // write + let ld_depStQDeq_enq = getVEhrPort(ld_depStQDeq, 2); // write + +`ifndef TSO_MM + let ld_depLdEx_findIss = getVEhrPort(ld_depLdEx, 0); + let ld_depLdEx_issue = getVEhrPort(ld_depLdEx, 0); // write + let ld_depLdEx_enqIss = getVEhrPort(ld_depLdEx, 1); // assert + let ld_depLdEx_enq = getVEhrPort(ld_depLdEx, 1); // write + + let ld_depSBDeq_findIss = getVEhrPort(ld_depSBDeq, 0); + let ld_depSBDeq_issue = getVEhrPort(ld_depSBDeq, 0); // write + let ld_depSBDeq_enqIss = getVEhrPort(ld_depSBDeq, 1); // assert + let ld_depSBDeq_wakeSB = getVEhrPort(ld_depSBDeq, 1); // write + let ld_depSBDeq_enq = getVEhrPort(ld_depSBDeq, 2); // write +`endif + + let ld_specBits_wrongSpec = getVEhrPort(ld_specBits, 0); // write + let ld_specBits_deqLd = getVEhrPort(ld_specBits, 0); // C with wrongSpec + let ld_specBits_evict = getVEhrPort(ld_specBits, 0); // C with wrongSpec + let ld_specBits_updAddr = getVEhrPort(ld_specBits, 0); // C with wrongSpec + let ld_specBits_enqIss = getVEhrPort(ld_specBits, 0); // C with wrongSpec + let ld_specBits_enq = getVEhrPort(ld_specBits, 0); // write, C with wrongSpec + let ld_specBits_correctSpec = getVEhrPort(ld_specBits, 1); // write + + let ld_atCommit_wrongSpec = getVEhrPort(ld_atCommit, 0); + let ld_atCommit_deqLd = getVEhrPort(ld_atCommit, 0); + Vector#(SupSize, Vector#(LdQSize, Reg#(Bool))) ld_atCommit_setCom; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + ld_atCommit_setCom[i] = getVEhrPort(ld_atCommit, i); // write + end + let ld_atCommit_enq = getVEhrPort(ld_atCommit, valueof(SupSize)); // write + + let ld_waitWPResp_hit = getVEhrPort(ld_waitWPResp, 0); + let ld_waitWPResp_findIss = getVEhrPort(ld_waitWPResp, 0); + let ld_waitWPResp_deqLd = getVEhrPort(ld_waitWPResp, 0); + let ld_waitWPResp_updAddr = getVEhrPort(ld_waitWPResp, 0); + let ld_waitWPResp_noWP = getVEhrPort(ld_waitWPResp, 0); + let ld_waitWPResp_issue = getVEhrPort(ld_waitWPResp, 0); // assert + let ld_waitWPResp_enqIss = getVEhrPort(ld_waitWPResp, 0); // assert + let ld_waitWPResp_resp = getVEhrPort(ld_waitWPResp, 0); // write + let ld_waitWPResp_wrongSpec = getVEhrPort(ld_waitWPResp, 0); // write + + Reg#(LdQTag) ld_deqP_deqLd = ld_deqP[0]; // write + Reg#(LdQTag) ld_deqP_verify = ld_deqP[0]; // in TSO, C with deqLd + Reg#(LdQTag) ld_deqP_deqSt = ld_deqP[1]; + + // SQ + // entry valid bits + Vector#(StQSize, Ehr#(2, Bool)) st_valid <- replicateM(mkEhr(False)); + // entry contents + Vector#(StQSize, Reg#(InstTag)) st_instTag <- replicateM(mkRegU); + Vector#(StQSize, Reg#(StQMemFunc)) st_memFunc <- replicateM(mkRegU); + Vector#(StQSize, Reg#(AmoFunc)) st_amoFunc <- replicateM(mkRegU); + Vector#(StQSize, Reg#(ByteEn)) st_byteEn <- replicateM(mkRegU); + Vector#(StQSize, Reg#(Bool)) st_acq <- replicateM(mkRegU); + Vector#(StQSize, Reg#(Bool)) st_rel <- replicateM(mkRegU); + Vector#(StQSize, Reg#(Maybe#(PhyDst))) st_dst <- replicateM(mkRegU); + Vector#(StQSize, Ehr#(2, Addr)) st_paddr <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(2, Bool)) st_isMMIO <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(2, ByteEn)) st_shiftedBE <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(1, Data)) st_stData <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(2, Maybe#(Exception))) st_fault <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(2, Bool)) st_computed <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(2, Bool)) st_verified <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(2, SpecBits)) st_specBits <- replicateM(mkEhr(?)); + Vector#(StQSize, Ehr#(TAdd#(1, SupSize), Bool)) st_atCommit <- replicateM(mkEhr(?)); + // enq/deq ptr + Reg#(StQTag) st_enqP <- mkReg(0); + Reg#(StQTag) st_deqP <- mkReg(0); + Ehr#(2, StQTag) st_verifyP <- mkEhr(0); + + let st_valid_empty = getVEhrPort(st_valid, 0); + let st_valid_wrongSpec = getVEhrPort(st_valid, 0); // write + let st_valid_verify = getVEhrPort(st_valid, 0); + let st_valid_updAddr = getVEhrPort(st_valid, 0); // assert + let st_valid_issue = getVEhrPort(st_valid, 0); + let st_valid_deqSt = getVEhrPort(st_valid, 0); // write + let st_valid_setCom = getVEhrPort(st_valid, 1); // assert + let st_valid_updData = getVEhrPort(st_valid, 1); // assert + let st_valid_enq = getVEhrPort(st_valid, 1); // write + + let st_paddr_updAddr = getVEhrPort(st_paddr, 0); // write + let st_paddr_issue = getVEhrPort(st_paddr, 1); + let st_paddr_deqSt = getVEhrPort(st_paddr, 1); + + let st_isMMIO_verify = getVEhrPort(st_isMMIO, 0); + let st_isMMIO_updAddr = getVEhrPort(st_isMMIO, 0); // write + let st_isMMIO_deqSt = getVEhrPort(st_isMMIO, 1); + + let st_shiftedBE_updAddr = getVEhrPort(st_shiftedBE, 0); // write + let st_shiftedBE_issue = getVEhrPort(st_shiftedBE, 1); + let st_shiftedBE_deqSt = getVEhrPort(st_shiftedBE, 1); + + let st_stData_issue = getVEhrPort(st_stData, 0); + let st_stData_deqSt = getVEhrPort(st_stData, 0); + let st_stData_updData = getVEhrPort(st_stData, 0); // write + + let st_fault_updAddr = getVEhrPort(st_fault, 0); // write + let st_fault_deqSt = getVEhrPort(st_fault, 1); + let st_fault_enq = getVEhrPort(st_fault, 1); // write + + let st_computed_verify = getVEhrPort(st_computed, 0); + let st_computed_updAddr = getVEhrPort(st_computed, 0); // write + let st_computed_issue = getVEhrPort(st_computed, 1); + let st_computed_deqSt = getVEhrPort(st_computed, 1); + let st_computed_updData = getVEhrPort(st_computed, 1); // assert + let st_computed_enq = getVEhrPort(st_computed, 1); // write + + let st_verified_wrongSpec = getVEhrPort(st_verified, 0); + let st_verified_verify = getVEhrPort(st_verified, 0); // write + let st_verified_updAddr = getVEhrPort(st_verified, 1); // assert + let st_verified_deqSt = getVEhrPort(st_verified, 1); + let st_verified_enq = getVEhrPort(st_verified, 1); // write + + let st_specBits_wrongSpec = getVEhrPort(st_specBits, 0); // write + let st_specBits_updAddr = getVEhrPort(st_specBits, 0); // C with wrongSpec + let st_specBits_deqSt = getVEhrPort(st_specBits, 0); // C with wrongSpec + let st_specBits_enq = getVEhrPort(st_specBits, 0); // write, C with wrongSpec + let st_specBits_correctSpec = getVEhrPort(st_specBits, 1); // write + + let st_atCommit_wrongSpec = getVEhrPort(st_atCommit, 0); + let st_atCommit_deqSt = getVEhrPort(st_atCommit, 0); + Vector#(SupSize, Vector#(StQSize, Reg#(Bool))) st_atCommit_setCom; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + st_atCommit_setCom[i] = getVEhrPort(st_atCommit, i); // write + end + let st_atCommit_enq = getVEhrPort(st_atCommit, valueof(SupSize)); + + Reg#(StQTag) st_verifyP_wrongSpec = st_verifyP[0]; // write + Reg#(StQTag) st_verifyP_verify = st_verifyP[0]; // write, C with wrongSpec + Reg#(StQTag) st_verifyP_deqSt = st_verifyP[1]; // write, C with wrongSpec + + // FIFO of LSQ tags that try to issue, there should be no replication in it + LSQIssueLdQ issueLdQ <- mkLSQIssueLdQ; + // XXX We split the search for ready to issue entry into two phases. Phase + // 1: rule findIssue: find a ready-to-issue entry at the beginning of the + // cycle. Phase 2: rule enqIssueQ: enq the one found in findIssue into + // issueQ and set ldInIssueQ We do the split because enq to issueQ must be + // ordered after getIssueLd method which deq issueQ. This split is fine + // because at phase 2, the entry found in phase one should not be changed + // by any other method. This is because findIssue < update < issue < + // enqIssueQ, i.e. update and issue will not affect the entry found in + // findIssue We use a wire to pass phase 1 result to phase 2. It is fine + // that phase 2 dose not fire when phase 1 has fired, next cycle phase 1 + // will redo the work. + RWire#(LSQIssueLdInfo) issueLdInfo <- mkRWire; + + // make wrongSpec conflict with all others (but not correctSpec method and + // findIssue) + RWire#(void) wrongSpec_hit_conflict <- mkRWire; + RWire#(void) wrongSpec_enqIss_conflict <- mkRWire; + RWire#(void) wrongSpec_enq_conflict <- mkRWire; + RWire#(void) wrongSpec_cacheEvict_conflict <- mkRWire; + RWire#(void) wrongSpec_update_conflict <- mkRWire; + RWire#(void) wrongSpec_issue_conflict <- mkRWire; + RWire#(void) wrongSpec_respLd_conflict <- mkRWire; + RWire#(void) wrongSpec_deqLd_conflict <- mkRWire; + RWire#(void) wrongSpec_deqSt_conflict <- mkRWire; + RWire#(void) wrongSpec_verify_conflict <- mkRWire; + RWire#(void) wrongSpec_wakeBySB_conflict <- mkRWire; + // make wrongSpec more urgent than firstSt (resolve bsc error) + Wire#(Bool) wrongSpec_urgent_firstSt <- mkDWire(True); + + function LdQTag getNextLdPtr(LdQTag t); + return t == fromInteger(valueOf(LdQSize) - 1) ? 0 : t + 1; + endfunction + + function StQTag getNextStPtr(StQTag t); + return t == fromInteger(valueOf(StQSize) - 1) ? 0 : t + 1; + endfunction + + // Virtual tag + // Since enqP is not changed during all our associative searches, we map + // LQ/SQ index to virtual tags using enqP as pivot. + // The mapping is as follow: + // - valid entry i --> i < enqP ? i + QSize : i + // XXX This mapping is only for comparing valid entries (e.g., it may not + // work properly for enqP), so we must check entry valid before using + // virtual tags or do special calculation. + function LdQVirTag getLdVirTag(LdQTag i); + return i < ld_enqP ? zeroExtend(i) + fromInteger(valueof(LdQSize)) + : zeroExtend(i); + endfunction + function StQVirTag getStVirTag(StQTag i); + return i < st_enqP ? zeroExtend(i) + fromInteger(valueof(StQSize)) + : zeroExtend(i); + endfunction + // virtual tags for LQ/SQ indices to be reused in all associative searches + Vector#(LdQSize, LdQVirTag) ldVirTags = map(getLdVirTag, + genWith(fromInteger)); + Vector#(StQSize, StQVirTag) stVirTags = map(getStVirTag, + genWith(fromInteger)); + + // find oldest LQ entry that satisfy a constraint (i.e. smallest tag) + function Maybe#(LdQTag) findOldestLd(Vector#(LdQSize, Bool) pred); + function LdQTag getOlder(LdQTag a, LdQTag b); + if(!pred[a]) begin + return b; + end + else if(!pred[b]) begin + return a; + end + else begin + return ldVirTags[a] < ldVirTags[b] ? a : b; + end + endfunction + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + LdQTag tag = fold(getOlder, idxVec); + return pred[tag] ? Valid (tag) : Invalid; + endfunction + + // find youngest LQ entry that satisfy a constraint (i.e. largest tag) + function Maybe#(LdQTag) findYoungestLd(Vector#(LdQSize, Bool) pred); + function LdQTag getYounger(LdQTag a, LdQTag b); + if(!pred[a]) begin + return b; + end + else if(!pred[b]) begin + return a; + end + else begin + return ldVirTags[a] < ldVirTags[b] ? b : a; + end + endfunction + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + LdQTag tag = fold(getYounger, idxVec); + return pred[tag] ? Valid (tag) : Invalid; + endfunction + + // find oldest SQ entry that satisfy a constraint (i.e. smallest tag) + function Maybe#(StQTag) findOldestSt(Vector#(StQSize, Bool) pred); + function StQTag getOlder(StQTag a, StQTag b); + if(!pred[a]) begin + return b; + end + else if(!pred[b]) begin + return a; + end + else begin + return stVirTags[a] < stVirTags[b] ? a : b; + end + endfunction + Vector#(StQSize, StQTag) idxVec = genWith(fromInteger); + StQTag tag = fold(getOlder, idxVec); + return pred[tag] ? Valid (tag) : Invalid; + endfunction + + // find youngest SQ entry that satisfy a constraint (i.e. largest tag) + function Maybe#(StQTag) findYoungestSt(Vector#(StQSize, Bool) pred); + function StQTag getYounger(StQTag a, StQTag b); + if(!pred[a]) begin + return b; + end + else if(!pred[b]) begin + return a; + end + else begin + return stVirTags[a] < stVirTags[b] ? b : a; + end + endfunction + Vector#(StQSize, StQTag) idxVec = genWith(fromInteger); + StQTag tag = fold(getYounger, idxVec); + return pred[tag] ? Valid (tag) : Invalid; + endfunction + + // virtual tags for olderSt port 0. NOTE: it should NOT be used after + // method deqSt which modifies olderSt + function Maybe#(StQVirTag) getOlderStVirTag(LdQTag i); + if(ld_olderSt[i][0] matches tagged Valid .stTag) begin + return Valid (getStVirTag(stTag)); + end + else begin + return Invalid; + end + endfunction + Vector#(LdQSize, Maybe#(StQVirTag)) olderStVirTags = map( + getOlderStVirTag, genWith(fromInteger) + ); + + // virtual tags for readFrom port 0. NOTE: it should NOT be used after + // method issueLd which modifies readFrom. + function Maybe#(StQVirTag) getReadFromVirTag(LdQTag i); + if(ld_readFrom[i][0] matches tagged Valid .stTag) begin + return Valid (getStVirTag(stTag)); + end + else begin + return Invalid; + end + endfunction + Vector#(LdQSize, Maybe#(StQVirTag)) readFromVirTags = map( + getReadFromVirTag, genWith(fromInteger) + ); + + // find load ready for issuing when LSQ is not empty: + // (1) entry valid of load + // (2) computed (this implies no fault) + // (3) not in issueQ + // (4) not executing (this implies not done) + // (5) not depend on any thing + // (6) waitWPResp is False + // (7) not MMIO + // Since this rule does not block any other rule, we can let it fire even + // when it may do nothing + rule findIssue; + // find all can issue loads + function Bool canIssue(LdQTag i); + return ( + ld_valid_findIss[i] && ld_memFunc[i] == Ld && // (1) valid load + ld_computed_findIss[i] && // (2) computed + !ld_inIssueQ_findIss[i] && // (3) not in issueQ + !ld_executing_findIss[i] && // (4) not executing (or done) + !isValid(ld_depLdQDeq_findIss[i]) && +`ifndef TSO_MM + !isValid(ld_depLdEx_findIss[i]) && + !isValid(ld_depSBDeq_findIss[i]) && +`endif + !isValid(ld_depStQDeq_findIss[i]) && // (5) no dependency + !ld_waitWPResp_findIss[i] && // (6) not wating wrong path resp + !ld_isMMIO_findIss[i] // (7) not MMIO + ); + endfunction + Vector#(LdQSize, Bool) ableToIssue = map(canIssue, + genWith(fromInteger)); + + // find the oldest load to issue (note that we search for valid entry), + // and record it in wire + if(findOldestLd(ableToIssue) matches tagged Valid .tag) begin + let info = LSQIssueLdInfo { + tag: tag, + paddr: ld_paddr_findIss[tag], + shiftedBE: ld_shiftedBE_findIss[tag] + }; + issueLdInfo.wset(info); + if(verbose) begin + $display("[LSQ - findIssue] ", fshow(info)); + end + end + endrule + + rule enqIssueQ(issueLdInfo.wget matches tagged Valid .info); + if(verbose) begin + $display("[LSQ - enqIss] ", fshow(info)); + end + // sanity check + doAssert(ld_valid_enqIss[info.tag], + "enq issueQ entry is valid"); + doAssert(ld_memFunc[info.tag] == Ld, + "enq issueQ entry is Ld"); + doAssert(!isValid(ld_fault_enqIss[info.tag]), + "enq issueQ entry cannot have fault"); + doAssert(ld_computed_enqIss[info.tag], + "enq issueQ entry is computed"); + doAssert(!ld_executing_enqIss[info.tag], + "enq issueQ entry cannot be executing"); + doAssert(!ld_done_enqIss[info.tag], + "enq issueQ entry cannot be done"); + doAssert(!ld_inIssueQ_enqIss[info.tag], + "enq issueQ entry cannot be in issueQ"); + doAssert(!isValid(ld_killed_enqIss[info.tag]), + "enq issueQ entry cannot be killed"); + doAssert(!ld_waitWPResp_enqIss[info.tag], + "enq issueQ entry cannot wait for wrong path resp"); + doAssert(!ld_isMMIO_enqIss[info.tag], + "enq issueQ entry cannot be MMIO"); + doAssert(!isValid(ld_depLdQDeq_enqIss[info.tag]) && +`ifndef TSO_MM + !isValid(ld_depLdEx_enqIss[info.tag]) && + !isValid(ld_depSBDeq_enqIss[info.tag]) && +`endif + !isValid(ld_depStQDeq_enqIss[info.tag]), + "enq issueQ entry cannot have dependency"); + doAssert(info.shiftedBE == ld_shiftedBE_enqIss[info.tag], + "BE should match"); + doAssert(info.paddr == ld_paddr_enqIss[info.tag], + "paddr should match"); + // enq to issueQ & change state (prevent enq this tag again) + issueLdQ.enq(ToSpecFifo { + data: info, + spec_bits: ld_specBits_enqIss[info.tag] + }); + ld_inIssueQ_enqIss[info.tag] <= True; + // make conflict with incorrect spec + wrongSpec_enqIss_conflict.wset(?); + endrule + + // Verify SQ entry one by one + // - TSO verify requires: + // (1) all older loads are dequeued + // (2) for normal non-MMIO St, addr and data are computed + // (3) for Sc/Amo/MMIO, it is dequeued (by completing memory access) + // (4) for Fence, it is dequeued + // NOTE: XXX Not verifying any Sc/Amo/Fence in SQ helps load speculation. + // That is, a loads can speculate past Sc.aq/Amo/Fence. This is + // because the speculative load cannot deq from LQ until the older + // Sc.aq/Amo/Fence is dequeued from SQ. The load will be squashed by + // cache eviction if it issues too early. + + // WEAK verify only requires that addr is computed or it is a fence. + // Verifying a fence is OK because normal loads will be stalled from issue + // by the fence, and XXX Lr and MMIO Ld needs to wait for all older SQ + // entry to deq. + + // NOTE that when SQ is full and all verified, verifyP will point to a + // valid and verified entry + rule verifySt(st_valid_verify[st_verifyP_verify] && + !st_verified_verify[st_verifyP_verify]); + StQTag verP = st_verifyP_verify; + + // check if the entry can be verified. We should not fire this rule if + // entry cannot be verified, because this may block conflicting + // rules/methods forever. +`ifdef TSO_MM + // TSO: need to figure out if older LQ entry exists + LdQTag ldDeqP = ld_deqP_verify; + Bool no_older_ld; + if(ld_valid_verify[ldDeqP]) begin + if(olderStVirTags[ldDeqP] matches tagged Valid .older) begin + no_older_ld = older >= stVirTags[verP]; + end + else begin + // LQ head has no olderSt, so LQ head is older + no_older_ld = False; + end + end + else begin + // LQ empty + no_older_ld = True; + end + when(no_older_ld && + st_memFunc[verP] == St && + !st_isMMIO_verify[verP] && + st_computed_verify[verP], noAction); + +`else + // WEAK: just check computed or fence + when(st_computed_verify[verP] || st_memFunc[verP] == Fence, noAction); +`endif + + // mark as verified and move verify ptr + st_verified_verify[verP] <= True; + st_verifyP_verify <= getNextStPtr(verP); + + // tell LQ entries that this entry is verified; no need to check LQ + // entry valid + function Action setVerified(LdQTag i); + action + if(ld_olderSt_verify[i] == Valid (verP)) begin + ld_olderStVerified_verify[i] <= True; + end + endaction + endfunction + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + joinActions(map(setVerified, idxVec)); + + if(verbose) $display("[LSQ - verifySt] st_verifyP %d", verP); + + // make conflict with incorrect spec + wrongSpec_verify_conflict.wset(?); + endrule + +`ifdef BSIM + // Sanity check in simulation. All valid entry are consective within deqP + // and enqP, outsiders are invalid entries + (* fire_when_enabled, no_implicit_conditions *) + rule checkLdQValid; + if(all(\== (False), readVEhr(0, ld_valid))) begin + doAssert(ld_enqP == ld_deqP[0], "empty queue have enqP = deqP"); + end + else begin + // not empty queue, check valid entries with [deqP, enqP) + function Bool in_range(LdQTag i); + if(ld_deqP[0] < ld_enqP) begin + return ld_deqP[0] <= i && i < ld_enqP; + end + else begin + return ld_deqP[0] <= i || i < ld_enqP; + end + endfunction + for(Integer i = 0; i < valueof(LdQSize); i = i+1) begin + doAssert(in_range(fromInteger(i)) == ld_valid[i][0], + "valid entries must be within [deqP, enqP)"); + end + end + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule checkStQValid; + if(all(\== (False), readVEhr(0, st_valid))) begin + doAssert(st_deqP == st_enqP, "empty queue have enqP = deqP"); + end + else begin + // not empty queue, check valid entries with [deqP, enqP) + function Bool in_range(StQTag i); + if(st_deqP < st_enqP) begin + return st_deqP <= i && i < st_enqP; + end + else begin + return st_deqP <= i || i < st_enqP; + end + endfunction + for(Integer i = 0; i < valueof(StQSize); i = i+1) begin + doAssert(in_range(fromInteger(i)) == st_valid[i][0], + "valid entries must be within [deqP, enqP)"); + end + end + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule checkStQVerified; + let valid_verified = zipWith(\&& , + readVEhr(0, st_valid), + readVEhr(0, st_verified)); + if(all(\== (False), valid_verified)) begin + // nothing is valid and verified + doAssert(st_verifyP[0] == st_deqP, + "nothing verified, so verifyP = deqP"); + end + else begin + // SQ is not empty, and some valid entry is verified, verified + // entries should be in [deqP, verifyP) + function Bool in_range(StQTag i); + if(st_deqP < st_verifyP[0]) begin + return st_deqP <= i && i < st_verifyP[0]; + end + else begin + return st_deqP <= i || i < st_verifyP[0]; + end + endfunction + for(Integer i = 0; i < valueof(StQSize); i = i+1) begin + if(st_valid[i][0]) begin + doAssert(in_range(fromInteger(i)) == st_verified[i][0], + "verified entries must be within [deqP, verifyP)"); + end + end + end + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule checkLdQVerified; + for(Integer i = 0; i < valueof(LdQSize); i = i+1) begin + if (ld_valid[i][0] &&& + ld_olderSt[i][0] matches tagged Valid .stTag) begin + doAssert(st_valid[stTag][0], "older SQ entry must be valid"); + doAssert(ld_olderStVerified[i][0] == st_verified[stTag][0], + "LdQ olderStVerified does not match StQ verified"); + end + end + endrule +`endif + + // lazy enq guard signal + Wire#(Bool) ld_can_enq_wire <- mkBypassWire; + Wire#(Bool) st_can_enq_wire <- mkBypassWire; + (* fire_when_enabled, no_implicit_conditions *) + rule setForEnq; + ld_can_enq_wire <= !ld_valid[ld_enqP][0]; + st_can_enq_wire <= !st_valid[st_enqP][0]; + endrule + + // deqLd guard (see comments at the method declaration) + function Bool deqLdGuard; + LdQTag deqP = ld_deqP_deqLd; + if(!ld_valid_deqLd[deqP]) begin + return False; // not valid + end + else begin + if(isValid(ld_fault_deqLd[deqP])) begin + return True; // fault + end + else begin + Bool no_older_st = !isValid(ld_olderSt_deqLd[deqP]); + if(ld_memFunc[deqP] == Ld && !ld_isMMIO_deqLd[deqP]) begin + // normal non-MMIO Ld: done, older St (if exists) verified + return ld_done_deqLd[deqP] && + (no_older_st || ld_olderStVerified_deqLd[deqP]); + end + else begin + // Lr or MMIO: done, at commit, no older st + return ld_computed_deqLd[deqP] && + ld_atCommit_deqLd[deqP] && + no_older_st; + end + end + end + endfunction + + // deqSt guard (see comments at the method declaration) + function Bool deqStGuard; + StQTag deqP = st_deqP; + if(!st_valid_deqSt[deqP]) begin + return False; + end + else begin + if(isValid(st_fault_deqSt[deqP])) begin + return True; // fault + end + else begin + // computed or fence, and at commit + return (st_computed_deqSt[deqP] || + st_memFunc[deqP] == Fence) && st_atCommit_deqSt[deqP]; + end + end + endfunction + + Vector#(SupSize, Put#(LdStQTag)) setAtCommitIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + setAtCommitIfc[i] = (interface Put; + method Action put(LdStQTag lsqTag); + case(lsqTag) matches + tagged Ld .tag: begin + ld_atCommit_setCom[i][tag] <= True; + doAssert(ld_valid_setCom[tag], "must be valid"); + end + tagged St .tag: begin + st_atCommit_setCom[i][tag] <= True; + doAssert(st_valid_setCom[tag], "must be valid"); + end + default: doAssert(False, "unknown lsq tag"); + endcase + endmethod + endinterface); + end + + method ByteEn getOrigBE(LdStQTag t); + return (case(t) matches + tagged Ld .tag: (ld_byteEn[tag]); + tagged St .tag: (st_byteEn[tag]); + default: ?; + endcase); + endmethod + + method ActionValue#(LSQHitInfo) getHit(LdStQTag t); + // Conflict with wrong spec. This makes cache pipelineResp rule + // conflict with wrong spec, and can help avoid scheduling cycle. + wrongSpec_hit_conflict.wset(?); + return (case(t) matches + tagged Ld .tag: (LSQHitInfo { + waitWPResp: ld_waitWPResp_hit[tag], + dst: ld_dst[tag] + }); + tagged St .tag: (LSQHitInfo { + waitWPResp: False, + dst: st_dst[tag] + }); + default: ?; + endcase); + endmethod + + method Maybe#(LdStQTag) enqLdTag; + return ld_can_enq_wire ? Valid (Ld (ld_enqP)) : Invalid; + endmethod + method Maybe#(LdStQTag) enqStTag; + return st_can_enq_wire ? Valid (St (st_enqP)) : Invalid; + endmethod + + method Action enqLd(InstTag inst_tag, + MemInst mem_inst, + Maybe#(PhyDst) dst, + SpecBits spec_bits) if(ld_can_enq_wire); + if(verbose) begin + $display("[LSQ - enqLd] enqP %d; ", ld_enqP, + "; ", fshow(inst_tag), + "; ", fshow(mem_inst), + "; ", fshow(dst), + "; ", fshow(spec_bits)); + end + doAssert(!ld_valid_enq[ld_enqP], + "entry at enqP must be invalid"); + doAssert(isLdQMemFunc(mem_inst.mem_func), + "must be LdQ mem func"); + // set entry valid and move ptr + ld_valid_enq[ld_enqP] <= True; + ld_enqP <= getNextLdPtr(ld_enqP); + // set up most of the entry + ld_instTag[ld_enqP] <= inst_tag; + ld_memFunc[ld_enqP] <= getLdQMemFunc(mem_inst.mem_func); + ld_unsigned[ld_enqP] <= mem_inst.unsignedLd; + ld_byteEn[ld_enqP] <= mem_inst.byteEn; + ld_acq[ld_enqP] <= mem_inst.aq; + ld_rel[ld_enqP] <= mem_inst.rl; + ld_dst[ld_enqP] <= dst; + ld_fault_enq[ld_enqP] <= Invalid; + ld_computed_enq[ld_enqP] <= False; + ld_inIssueQ_enq[ld_enqP] <= False; + ld_executing_enq[ld_enqP] <= False; + ld_done_enq[ld_enqP] <= False; + ld_killed_enq[ld_enqP] <= Invalid; + ld_readFrom_enq[ld_enqP] <= Invalid; + ld_depLdQDeq_enq[ld_enqP] <= Invalid; + ld_depStQDeq_enq[ld_enqP] <= Invalid; +`ifndef TSO_MM + ld_depLdEx_enq[ld_enqP] <= Invalid; + ld_depSBDeq_enq[ld_enqP] <= Invalid; +`endif + ld_specBits_enq[ld_enqP] <= spec_bits; + ld_atCommit_enq[ld_enqP] <= False; + // don't touch wait wrong resp + // Record older St. XXX We must use the up-to-date value st_valid; + // otherwise, we may record a valid olderSt and never get it reset. + StQTag olderSt = st_enqP == 0 ? fromInteger(valueof(StQSize) - 1) + : (st_enqP - 1); + if(st_valid_enq[olderSt]) begin + ld_olderSt_enq[ld_enqP] <= Valid (olderSt); + ld_olderStVerified_enq[ld_enqP] <= st_verified_enq[olderSt]; + end + else begin + ld_olderSt_enq[ld_enqP] <= Invalid; + ld_olderStVerified_enq[ld_enqP] <= False; + end + // make conflict with incorrect spec + wrongSpec_enq_conflict.wset(?); + endmethod + + method Action enqSt(InstTag inst_tag, + MemInst mem_inst, + Maybe#(PhyDst) dst, + SpecBits spec_bits) if(st_can_enq_wire); + if(verbose) begin + $display("[LSQ - enqSt] enqP %d; ", st_enqP, + "; ", fshow(inst_tag), + "; ", fshow(mem_inst), + "; ", fshow(dst), + "; ", fshow(spec_bits)); + end + doAssert(!st_valid_enq[st_enqP], + "entry at enqP must be invalid"); + doAssert(isStQMemFunc(mem_inst.mem_func), + "must be StQ mem func"); + // set entry valid and move ptr + st_valid_enq[st_enqP] <= True; + st_enqP <= getNextStPtr(st_enqP); + // set up the entry + st_instTag[st_enqP] <= inst_tag; + st_memFunc[st_enqP] <= getStQMemFunc(mem_inst.mem_func); + st_amoFunc[st_enqP] <= mem_inst.amo_func; + st_byteEn[st_enqP] <= mem_inst.byteEn; + st_acq[st_enqP] <= mem_inst.aq; + st_rel[st_enqP] <= mem_inst.rl; + st_dst[st_enqP] <= dst; + st_fault_enq[st_enqP] <= Invalid; + st_computed_enq[st_enqP] <= False; + st_verified_enq[st_enqP] <= False; + st_specBits_enq[st_enqP] <= spec_bits; + st_atCommit_enq[st_enqP] <= False; + // make conflict with incorrect spec + wrongSpec_enq_conflict.wset(?); + endmethod + + method Action updateData(StQTag t, Data d); +`ifndef INORDER_CORE + // in-order core allocates entry and write data in the same rule + doAssert(st_valid_updData[t], "entry must be valid"); + doAssert(!st_computed_updData[t], "entry cannot be computed"); +`endif + st_stData_updData[t] <= d; + endmethod + + method ActionValue#(LSQUpdateAddrResult) updateAddr( + LdStQTag lsqTag, Maybe#(Exception) fault, + Addr pa, Bool mmio, ByteEn shift_be + ); + // index vec for vector functions + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + + // We need to kill younger loads if lsqTag is a SQ entry, or we are + // having a WEAK model. To reduce logic, we try to share the kill + // search logic. But still need some logic specific to whether lsqTag + // is an LQ or SQ entry. + // Whether kill younger load or not + Bool doKill = False; + // Vector mask to indicate younger loads to check for kill + Vector#(LdQSize, Bool) youngerLds = replicate(False); + // The store virtual tag that will be compared with readFrom to + // determine if a executing/done load has read a stale store. If a + // load's readFrom is older than or *equal to* curSt, then the load + // reads a stale value and should be killed. If curSt is invalid, then + // the load should not be killed as long as readFrom is valid. curSt + // is in maybe type because of Ld killing Ld (in that case, curSt is + // the olderSt field of the older Ld). "equal to" is also needed + // because of Ld killing Ld. + Maybe#(StQVirTag) curSt = Invalid; + + // update LQ/SQ entry and prepare for killing loads + if(lsqTag matches tagged Ld .tag) begin + // sanity check + doAssert(ld_valid_updAddr[tag], + "updating entry must be valid"); + doAssert(!ld_computed_updAddr[tag] && + !ld_inIssueQ_updAddr[tag] && + !ld_executing_updAddr[tag] && + !ld_done_updAddr[tag] && + !isValid(ld_killed_updAddr[tag]), + "updating entry should not be " + + "computed or issuing or executed or done or killed"); + + // write fault, computed paddr, shift be. NOTE computed is + // true only when no fault. + ld_fault_updAddr[tag] <= fault; + ld_computed_updAddr[tag] <= !isValid(fault); + ld_paddr_updAddr[tag] <= pa; + ld_isMMIO_updAddr[tag] <= mmio; + ld_shiftedBE_updAddr[tag] <= shift_be; + +`ifndef TSO_MM + // for WEAK model, try to kill younger load in case of multicore + if(multicore) begin + doKill = True; + curSt = olderStVirTags[tag]; + LdQVirTag virTag = ldVirTags[tag]; + function Bool isYounger(LdQTag i); + return ldVirTags[i] > virTag; + endfunction + youngerLds = map(isYounger, idxVec); + end +`endif + end + else if(lsqTag matches tagged St .tag) begin + // sanity check + doAssert(st_valid_updAddr[tag], + "updating entry must be valid"); + doAssert(!st_computed_updAddr[tag] && !st_verified_updAddr[tag], + "updating entry should not be computed or validated"); + + // write fault, computed paddr, shift be. NOTE computed is + // true only when no fault. + st_fault_updAddr[tag] <= fault; + st_computed_updAddr[tag] <= !isValid(fault); + st_paddr_updAddr[tag] <= pa; + st_isMMIO_updAddr[tag] <= mmio; + st_shiftedBE_updAddr[tag] <= shift_be; + + // A store always try to kill younger loads + doKill = True; + StQVirTag virTag = stVirTags[tag]; + curSt = Valid (virTag); + function Bool isYounger(LdQTag i); + if(olderStVirTags[i] matches tagged Valid .t) begin + // load's immediate older store is younger than or equal to + // this updating entry, so load is younger + return t >= virTag; + end + else begin + // load has no older store, so load is older + return False; + end + endfunction + youngerLds = map(isYounger, idxVec); + end + else begin + doAssert(False, "unknown lsq tag"); + end + + if(verbose) begin + $display("[LSQ - updateAddr] ", fshow(lsqTag), "; ", fshow(fault), + "; ", fshow(pa), "; ", fshow(mmio), "; ", fshow(shift_be), + "; ", fshow(doKill), "; ", fshow(youngerLds), + "; ", fshow(curSt)); + end + + // kill younger loads + if(doKill) begin + // Kill the youngested load which satisifies all the following + // conditions: + // (1) valid + // (2) younger + // (3) paddr & BE overlap with the updating Ld/Lr + // (4) has read or is reading a stale value + // We don't check computed or memFunc, because there is no pure fence + // in LQ, and they are implied by executing bit + function Bool needKill(LdQTag i); + Bool valid = ld_valid_updAddr[i]; + Bool younger = youngerLds[i]; + Bool overlap = overlapAddr(pa, shift_be, + ld_paddr_updAddr[i], + ld_shiftedBE_updAddr[i]); + // figure out if the load reads a stale value. Note that + // checking executing bit is enough: every done load must also + // have executing bit set. + Bool read_stale; + if(ld_executing_updAddr[i]) begin + if(readFromVirTags[i] matches tagged Valid .rf) begin + // younger load bypass from a store + if(curSt matches tagged Valid .st) begin + // if the forwarding store is not younger than the + // current store, then should kill + read_stale = rf <= st; + end + else begin + // this is the case of Ld killing Ld, the older Ld + // has no older store, so younger load is always + // safe + read_stale = False; + end + end + else begin + // This younger load reads memory, must be stale + read_stale = True; + end + end + else begin + // load is not done or executing, so cannot get stale value + read_stale = False; + end + // combine everything together + return valid && younger && overlap && read_stale; + endfunction + Vector#(LdQSize, Bool) killLds = map(needKill, idxVec); + if(findOldestLd(killLds) matches tagged Valid .killTag) begin + LdKilledBy by = lsqTag matches tagged Ld .unuse ? Ld : St; + ld_killed_updAddr[killTag] <= Valid (by); + if(verbose) begin + $display("[LSQ - updateAddr] kill tag %d", killTag); + end + // checks + doAssert(ld_computed_updAddr[killTag], "must be computed"); + doAssert(!ld_isMMIO_updAddr[killTag], "cannot kill MMIO"); + doAssert(ld_memFunc[killTag] == Ld, "can only kill Ld"); + end + end + + // make conflict with incorrect spec + wrongSpec_update_conflict.wset(?); + + // return waiting for wp resp bit: for deciding whether the updating Ld + // can be issued + return LSQUpdateAddrResult { + waitWPResp: (case(lsqTag) matches + tagged Ld .tag: (ld_waitWPResp_updAddr[tag]); + default: False; + endcase) + }; + endmethod + + method ActionValue#(LSQIssueLdResult) issueLd(LdQTag tag, + Addr pa, + ByteEn shift_be, + SBSearchRes sbRes); + if(verbose) begin + $display("[LSQ - issueLd] ", fshow(tag), "; ", fshow(pa), + "; ", fshow(shift_be), "; ", fshow(sbRes)); + end + doAssert(pa == ld_paddr_issue[tag], "Ld paddr incorrect"); + doAssert(shift_be == ld_shiftedBE_issue[tag], "Ld BE incorrect"); + doAssert(ld_valid_issue[tag], "issuing Ld must be valid"); + doAssert(!isValid(ld_fault_issue[tag]), "issuing Ld cannot be fault"); + doAssert(ld_computed_issue[tag], "issuing Ld must be computed"); + doAssert(!ld_executing_issue[tag], "issuing Ld must not be executing"); + doAssert(!ld_done_issue[tag], "issuing Ld must not be done"); + doAssert(!isValid(ld_killed_issue[tag]), "issuing Ld must not be killed"); + doAssert(ld_memFunc[tag] == Ld, "only issue Ld"); + doAssert(!ld_isMMIO_issue[tag], "issuing Ld cannot be MMIO"); + doAssert( + !isValid(ld_depLdQDeq_issue[tag]) && +`ifndef TSO_MM + !isValid(ld_depLdEx_issue[tag]) && + !isValid(ld_depSBDeq_issue[tag]) && +`endif + !isValid(ld_depStQDeq_issue[tag]), + "issuing entry should not have dependence" + ); + doAssert(!ld_waitWPResp_issue[tag], "issuing Ld cannot wait for WP resp"); + + // issue result + LSQIssueLdResult issRes = Stall (StQ); + + // common thing for TSO and WEAK: valid SQ entry older than the load + Maybe#(StQVirTag) precedingSt = olderStVirTags[tag]; + function Bool isValidOlderSt(StQTag i); + Bool valid = st_valid_issue[i]; + Bool older; + if(precedingSt matches tagged Valid .st) begin + older = stVirTags[i] <= st; + end + else begin + // load has no older store + older = False; + end + return valid && older; + endfunction + Vector#(StQSize, Bool) validOlderSts = map(isValidOlderSt, + genWith(fromInteger)); + +`ifdef TSO_MM + // TSO does not need to stall a load on fence or AMO. This is because + // verfication of fence or AMO will be stalled until their fencing + // effects are taken. And this will stall the verfication of younger + // loads. The .rl->.aq ordering is also enforced by executing Lr/Sc/Amo + // sequentially at commit time (in RISC-V .aq and .rl can only be found + // in Lr/Sc/Amo). + // TODO maybe it is better to use .aq as a hint to throttle speculative + // load execution. + + // We only search for older overlapping SQ entries for bypass: + // (1) valid older SQ entry + // (2) computed + // (3) overlap addr + function Bool isOverlapSt(StQTag i); + Bool valid_older = validOlderSts[i]; + Bool computed = st_computed_issue[i]; + Bool overlap = overlapAddr(pa, shift_be, + st_paddr_issue[i], + st_shiftedBE_issue[i]); + return valid_older && computed && overlap; + endfunction + Vector#(StQSize, Bool) overlapSts = map(isOverlapSt, + genWith(fromInteger)); + // search the youngest store, and derive issue result + if(findYoungestSt(overlapSts) matches tagged Valid .stTag) begin + // find an overlaping SQ entry, check its type + case(st_memFunc[stTag]) + Sc, Amo: begin + // cannot forward, stall the load + issRes = Stall (StQ); + ld_depStQDeq_issue[tag] <= Valid (stTag); + end + St: begin + // check if forwarding is possible + if(be1CoverBe2(st_shiftedBE_issue[stTag], shift_be)) begin + // store covers the issuing load, forward + issRes = Forward (LSQForwardResult { + dst: ld_dst[tag], + data: st_stData_issue[stTag] + }); + // set executing and record readFrom + ld_executing_issue[tag] <= True; + ld_readFrom_issue[tag] <= Valid (stTag); + end + else begin + // cannot forward, stall + issRes = Stall (StQ); + ld_depStQDeq_issue[tag] <= Valid (stTag); + end + end + default: begin + doAssert(False, "unknown st mem func"); + end + endcase + end + else begin + // no overlaping SQ entry is found, send to mem + issRes = ToCache; + // set executing and record readFrom + ld_executing_issue[tag] <= True; + ld_readFrom_issue[tag] <= Invalid; + // check no SB in TSO + doAssert(!isValid(sbRes.matchIdx) && !isValid(sbRes.forwardData), + "no SB in TSO"); + end + +`else + + // WEAK model needs to do two searches + // (1) Overlaping unissued Ld/Lr or .aq of Lr in LQ + // (2) Overlaping St/Sc/Amo or .aq of Sc/Amo/Fence in SQ + // XXX Strictly speaking, we should stall the load as long as there is + // a fence. However, since we keep fence/Ld->St ordering, we can allow + // a store younger than the fence to forward data to the load. + + // We need to check LQ entry which satisfies: + // (1) valid + // (2) older + // (3) has acquire, or in case of multicore it is computed but unissued + // and has overlap addr + LdQVirTag issueVTag = ldVirTags[tag]; + function Bool isLdNeedCheck(LdQTag i); + Bool valid = ld_valid_issue[i]; + Bool older = ldVirTags[i] < issueVTag; + Bool acquire = ld_acq[i]; + Bool computed = ld_computed_issue[i]; + Bool unissued = !ld_executing_issue[i]; + Bool overlap = overlapAddr(pa, shift_be, + ld_paddr_issue[i], + ld_shiftedBE_issue[i]); + return valid && older && + (acquire || multicore && computed && unissued && overlap); + endfunction + Vector#(LdQSize, Bool) checkLds = map(isLdNeedCheck, + genWith(fromInteger)); + Maybe#(LdQTag) matchLdTag = findYoungestLd(checkLds); + + // We need to check SQ entry which satisfies: + // (1) valid and older + // (2) has acquire, or is computed and has overlap addr + function Bool isStNeedCheck(StQTag i); + Bool valid_older = validOlderSts[i]; + Bool acquire = st_acq[i]; + Bool computed = st_computed_issue[i]; + Bool overlap = overlapAddr(pa, shift_be, + st_paddr_issue[i], + st_shiftedBE_issue[i]); + return valid_older && (acquire || computed && overlap); + endfunction + Vector#(StQSize, Bool) checkSts = map(isStNeedCheck, + genWith(fromInteger)); + Maybe#(StQTag) matchStTag = findYoungestSt(checkSts); + + // select the younger one from LQ and SQ search results + LdQTag ldTag = validValue(matchLdTag); + Maybe#(StQVirTag) ldTagOlderSt = olderStVirTags[ldTag]; + StQTag stTag = validValue(matchStTag); + StQVirTag stVTag = stVirTags[stTag]; + if(isValid(matchLdTag) && (!isValid(matchStTag) || + (isValid(ldTagOlderSt) && + validValue(ldTagOlderSt) >= stVTag))) begin + // stalled by Ld, Lr or acquire in LQ + issRes = Stall (LdQ); + if(ld_acq[ldTag]) begin + ld_depLdQDeq_issue[tag] <= matchLdTag; + end + else begin + case(ld_memFunc[ldTag]) + Ld: ld_depLdEx_issue[tag] <= matchLdTag; + Lr: ld_depLdQDeq_issue[tag] <= matchLdTag; + default: doAssert(False, "unknown ld func"); + endcase + end + end + else if(isValid(matchStTag) && + (!isValid(matchLdTag) || + !isValid(ldTagOlderSt) || + validValue(ldTagOlderSt) < stVTag)) begin + // bypass or stall by SQ + if(st_acq[stTag]) begin + // stall by acquire in SQ + issRes = Stall (StQ); + ld_depStQDeq_issue[tag] <= matchStTag; + end + else begin + // match overlap Sc/Amo/St, check if forward is possible + case(st_memFunc[stTag]) + Sc, Amo: begin + // cannot forward, stall + issRes = Stall (StQ); + ld_depStQDeq_issue[tag] <= matchStTag; + end + St: begin + // check if forwarding is possible + if(be1CoverBe2(st_shiftedBE_issue[stTag], + shift_be)) begin + // store covers the issuing load, forward + issRes = Forward (LSQForwardResult { + dst: ld_dst[tag], + data: st_stData_issue[stTag] + }); + // set executing and record readFrom + ld_executing_issue[tag] <= True; + ld_readFrom_issue[tag] <= matchStTag; + end + else begin + // cannot forward, stall + issRes = Stall (StQ); + ld_depStQDeq_issue[tag] <= matchStTag; + end + end + default: begin + doAssert(False, "unknown st mem func"); + end + endcase + end + end + else begin + // nothing found in LQ or SQ, check SB search result + if(sbRes.forwardData matches tagged Valid .d) begin + // get forward from SB + issRes = Forward (LSQForwardResult { + dst: ld_dst[tag], + data: d + }); + // set executing and record readFrom. We view forwarding from + // SB as reading memory, because the value is not in SQ + ld_executing_issue[tag] <= True; + ld_readFrom_issue[tag] <= Invalid; + end + else if(sbRes.matchIdx matches tagged Valid .idx) begin + // SB has matching entry, but cannot fully forward, wait for SB + // deq + issRes = Stall (SB); + ld_depSBDeq_issue[tag] <= Valid (idx); + end + else begin + // send to cache + issRes = ToCache; + // set executing and record readFrom + ld_executing_issue[tag] <= True; + ld_readFrom_issue[tag] <= Invalid; + end + end + + // if the Ld is issued, remove dependences on this issue + Bool not_stall = issRes matches tagged Stall .by ? False : True; + if(not_stall) begin + function Action setReady(LdQTag i); + action + // no need to check valid here, we can write anything to + // invalid entry + if(ld_depLdEx_issue[i] == Valid (tag)) begin + ld_depLdEx_issue[i] <= Invalid; + end + endaction + endfunction + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + joinActions(map(setReady, idxVec)); + end +`endif + + // make conflict with incorrect spec + wrongSpec_issue_conflict.wset(?); + + return issRes; + endmethod + + method ActionValue#(LSQIssueLdInfo) getIssueLd; + if(verbose) begin + $display("[LSQ - getIssueLd] ", fshow(issueLdQ.first)); + end + issueLdQ.deq; + // reset inIssueQ + let tag = issueLdQ.first.data.tag; + ld_inIssueQ_issue[tag] <= False; + doAssert(ld_inIssueQ_issue[tag], "Ld should be in issueQ"); + doAssert(ld_memFunc[tag] == Ld, "must be Ld"); + return issueLdQ.first.data; + endmethod + + method ActionValue#(LSQRespLdResult) respLd(LdQTag t, Data alignedData); + let res = LSQRespLdResult { + wrongPath: False, + dst: Invalid, + data: ? + }; + if(ld_waitWPResp_resp[t]) begin + ld_waitWPResp_resp[t] <= False; + res.wrongPath = True; + res.dst = Invalid; // drop wrong path resp + end + else begin + doAssert(ld_valid_resp[t] && ld_memFunc[t] == Ld, + "valid resp must come for Ld"); + doAssert(ld_computed_resp[t] && + ld_executing_resp[t] && + !ld_done_resp[t], + "must be computed, executing, not done"); + // we may load into x0 reg, then dst is Invalid, so don't assert + // that dst is valid + // mark load as done, and shift resp + ld_done_resp[t] <= True; + res.wrongPath = False; + res.dst = ld_dst[t]; + res.data = gatherLoad(ld_paddr_resp[t], ld_byteEn[t], + ld_unsigned[t], alignedData); + end + if(verbose) begin + $display("[LSQ - respLd] ", fshow(t), "; ", fshow(alignedData), + "; ", fshow(res)); + end + // make conflict with incorrect spec + wrongSpec_respLd_conflict.wset(?); + // return + return res; + endmethod + + method LdQDeqEntry firstLd if(deqLdGuard); + LdQTag deqP = ld_deqP_deqLd; + return LdQDeqEntry { + instTag: ld_instTag[deqP], + memFunc: ld_memFunc[deqP], + byteEn: ld_byteEn[deqP], + unsignedLd: ld_unsigned[deqP], + acq: ld_acq[deqP], + rel: ld_rel[deqP], + dst: ld_dst[deqP], + paddr: ld_paddr_deqLd[deqP], + isMMIO: ld_isMMIO_deqLd[deqP], + shiftedBE: ld_shiftedBE_deqLd[deqP], + fault: ld_fault_deqLd[deqP], + killed: ld_killed_deqLd[deqP] + }; + endmethod + + method Action deqLd if(deqLdGuard); + LdQTag deqP = ld_deqP_deqLd; + + if(verbose) $display("[LSQ - deqLd] deqP %d", deqP); + + // sanity check + if(ld_atCommit_deqLd[deqP]) begin + doAssert(ld_specBits_deqLd[deqP] == 0, + "at commit means zero spec bits"); + end + if(isValid(ld_killed_deqLd[deqP])) begin + doAssert(ld_memFunc[deqP] == Ld && !ld_isMMIO_deqLd[deqP], + "must be non-MMIO Ld"); + doAssert(!isValid(ld_fault_deqLd[deqP]), "cannot have fault"); + doAssert(ld_executing_deqLd[deqP] && ld_done_deqLd[deqP], + "must be done"); + doAssert(!ld_waitWPResp_deqLd[deqP], + "cannot wait for wrong path resp"); + end + + // remove the entry + ld_valid_deqLd[deqP] <= False; + ld_deqP_deqLd <= getNextLdPtr(deqP); + + // wakeup loads stalled by this entry + function Action setReady(LdQTag i); + action + // no need to check valid, we can write anything to invalid entry + if(ld_depLdQDeq_deqLd[i] == Valid (deqP)) begin + ld_depLdQDeq_deqLd[i] <= Invalid; + end + endaction + endfunction + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + joinActions(map(setReady, idxVec)); + + // make conflict with incorrect spec + wrongSpec_deqLd_conflict.wset(?); + endmethod + + method StQDeqEntry firstSt if(deqStGuard && wrongSpec_urgent_firstSt); + StQTag deqP = st_deqP; + return StQDeqEntry { + instTag: st_instTag[deqP], + memFunc: st_memFunc[deqP], + amoFunc: st_amoFunc[deqP], + acq: st_acq[deqP], + rel: st_rel[deqP], + dst: st_dst[deqP], + paddr: st_paddr_deqSt[deqP], + isMMIO: st_isMMIO_deqSt[deqP], + shiftedBE: st_shiftedBE_deqSt[deqP], + stData: st_stData_deqSt[deqP], + fault: st_fault_deqSt[deqP] + }; + endmethod + + method Action deqSt if(deqStGuard); + StQTag deqP = st_deqP; + + if(verbose) $display("[LSQ - deqSt] deqP %d", deqP); + + // sanity check + if(!isValid(st_fault_deqSt[deqP])) begin + doAssert(checkAddrAlign(st_paddr_deqSt[deqP], st_byteEn[deqP]), + "addr BE should be naturally aligned"); + doAssert(st_specBits_deqSt[deqP] == 0, + "must have zero spec bits"); + end + + // remove entry + st_valid_deqSt[deqP] <= False; + let new_st_deqP = getNextStPtr(deqP); + st_deqP <= new_st_deqP; + + // in case the deq entry is not verified, verifyP must be equal to + // deqP, so verifyP should also move together with deqP + if(!st_verified_deqSt[deqP]) begin + doAssert(st_verifyP_deqSt == deqP, + "oldest SQ entry not verified, so verifyP = deqP"); + st_verifyP_deqSt <= new_st_deqP; + end + + // tell LQ entries that this SQ entry is removed, no need to check LQ + // entry valid: + // (1) reset olderSt + // (2) reset readFrom + // (3) reset depStQDeq + function Action resetSt(LdQTag i); + action + if(ld_olderSt_deqSt[i] == Valid (deqP)) begin + ld_olderSt_deqSt[i] <= Invalid; + // no need to change ld_olderStVerified, it is only meaningful + // when ld_olderSt is valid + end + if(ld_readFrom_deqSt[i] == Valid (deqP)) begin + ld_readFrom_deqSt[i] <= Invalid; + end + if(ld_depStQDeq_deqSt[i] == Valid (deqP)) begin + ld_depStQDeq_deqSt[i] <= Invalid; + end + endaction + endfunction + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + joinActions(map(resetSt, idxVec)); + + // make conflict with incorrect spec + wrongSpec_deqSt_conflict.wset(?); + endmethod + +`ifdef TSO_MM + method Action cacheEvict(LineAddr lineAddr); + if(verbose) $display("[LSQ - cacheEvict] ", fshow(lineAddr)); + // kill a load if it satisfies the following conditions: + // (1) valid + // (2) executing and read from memory (just killing done loads is not + // enough, because there is a delay from getting value and marking + // done) + // (3) addr overlap + // We don't check computed or memFunc, because there is no pure fence + // in LQ, and they are implied by executing + function Bool needKill(LdQTag i); + Bool valid = ld_valid_evict[i]; + Bool executing = ld_executing_evict[i]; + Bool read_mem = !isValid(ld_readFrom_evict[i]); + Bool overlap = getLineAddr(ld_paddr_evict[i]) == lineAddr; + return valid && executing && read_mem && overlap; + endfunction + + // kill the oldest load + Vector#(LdQSize, Bool) killLds = map(needKill, genWith(fromInteger)); + if(findOldestLd(killLds) matches tagged Valid .killTag) begin + ld_killed_evict[killTag] <= Valid (Cache); + if(verbose) begin + $display("[LSQ - cacheEvict] kill tag %d", killTag); + end + // checks + doAssert(ld_computed_evict[killTag], "must be computed"); + doAssert(!ld_isMMIO_evict[killTag], "cannot kill MMIO"); + doAssert(ld_memFunc[killTag] == Ld, "can only kill Ld"); + end + + // make conflict with incorrect spec + wrongSpec_cacheEvict_conflict.wset(?); + endmethod + +`else + + method Action wakeupLdStalledBySB(SBIndex sbIdx); + if(verbose) begin + $display("[LSQ - wakeupBySB] ", fshow(sbIdx)); + end + function Action setReady(LdQTag i); + action + // no need to check valid here, we can write anything to invalid + // entry + if(ld_depSBDeq_wakeSB[i] == Valid (sbIdx)) begin + ld_depSBDeq_wakeSB[i] <= Invalid; + end + endaction + endfunction + Vector#(LdQSize, LdQTag) idxVec = genWith(fromInteger); + joinActions(map(setReady, idxVec)); + // make conflict with incorrect spec + wrongSpec_wakeBySB_conflict.wset(?); + endmethod +`endif + + method Bool stqEmpty; + return !st_valid_empty[st_deqP]; + endmethod + + interface setAtCommit = setAtCommitIfc; + + interface SpeculationUpdate specUpdate; + method Action correctSpeculation(SpecBits mask); + if(verbose && mask != maxBound) begin + $display("[LSQ - correctSpec] ", fshow(mask)); + end + // clear spec bits for LQ entries + function Action correctSpecLd(LdQTag i); + action + SpecBits sb = ld_specBits_correctSpec[i]; + ld_specBits_correctSpec[i] <= sb & mask; + endaction + endfunction + Vector#(LdQSize, LdQTag) ldIdxVec = genWith(fromInteger); + joinActions(map(correctSpecLd, ldIdxVec)); + + // clear spec bits for LQ entries + function Action correctSpecSt(StQTag i); + action + SpecBits sb = st_specBits_correctSpec[i]; + st_specBits_correctSpec[i] <= sb & mask; + endaction + endfunction + Vector#(StQSize, StQTag) stIdxVec = genWith(fromInteger); + joinActions(map(correctSpecSt, stIdxVec)); + + // clear spec bits for issueQ + issueLdQ.specUpdate.correctSpeculation(mask); + endmethod + + method Action incorrectSpeculation(Bool killAll, SpecTag specTag); + // idx vec + + // clear wrong path LQ entries & set wrong path load filter. NOTE + // that olderSt and olderStVerified fields are not affected by the + // kill. NOTE that if atCommit is true, then killAll should not + // kill this entry + Vector#(LdQSize, LdQTag) ldIdxVec = genWith(fromInteger); + function Bool isLdNeedKill(LdQTag i); + return (killAll ? !ld_atCommit_wrongSpec[i] : + ld_specBits_wrongSpec[i][specTag] == 1); + endfunction + Vector#(LdQSize, Bool) ldNeedKill = map(isLdNeedKill, ldIdxVec); + function Action killLdQ(LdQTag i); + action + if(ldNeedKill[i]) begin + ld_valid_wrongSpec[i] <= False; + // set wrong path load resp filter + if (ld_valid_wrongSpec[i] && + ld_executing_wrongSpec[i] && + !ld_done_wrongSpec[i]) begin + ld_waitWPResp_wrongSpec[i] <= True; + doAssert(ld_memFunc[i] == Ld, + "only load resp can be wrong path"); + end + doAssert(!ld_atCommit_wrongSpec[i], "cannot be at commit"); + end + endaction + endfunction + joinActions(map(killLdQ, ldIdxVec)); + + // clear wrong path SQ entries. NOTE that inst at commit should not + // be killed in case of kill all + Vector#(StQSize, StQTag) stIdxVec = genWith(fromInteger); + function Bool isStNeedKill(StQTag i); + return (killAll ? !st_atCommit_wrongSpec[i] : + st_specBits_wrongSpec[i][specTag] == 1); + endfunction + Vector#(StQSize, Bool) stNeedKill = map(isStNeedKill, stIdxVec); + function Action killStQ(StQTag i); + action + if(stNeedKill[i]) begin + st_valid_wrongSpec[i] <= False; + doAssert(!st_atCommit_wrongSpec[i], "cannot be at commit"); + end + endaction + endfunction + joinActions(map(killStQ, stIdxVec)); + + // kill entries in issueQ + issueLdQ.specUpdate.incorrectSpeculation(killAll, specTag); + + // change enqP: make valid entries always consecutive: new enqP is + // the oldest **VALID** entry that gets killed. If such entry does + // not exists, then enqP remains the same. + // LdQ enqP + function Bool isValidLdKilled(LdQTag i); + return ld_valid_wrongSpec[i] && ldNeedKill[i]; + endfunction + Vector#(LdQSize, Bool) killedValidLds = map(isValidLdKilled, + ldIdxVec); + LdQTag new_ld_enqP = ld_enqP; + if(findOldestLd(killedValidLds) matches tagged Valid .t) begin + new_ld_enqP = t; + end + ld_enqP <= new_ld_enqP; + + // StQ enqP + function Bool isValidStKilled(StQTag i); + return st_valid_wrongSpec[i] && stNeedKill[i]; + endfunction + Vector#(StQSize, Bool) killedValidSts = map(isValidStKilled, + stIdxVec); + StQTag new_st_enqP = st_enqP; + if(findOldestSt(killedValidSts) matches tagged Valid .t) begin + new_st_enqP = t; + end + st_enqP <= new_st_enqP; + + // change SQ verifyP: new verifyP is the oldest entry that is + // neither killed nor verified. If such entry does not exists, then + // verifyP should be the same as new enqP. + function Bool unkilledUnverified(StQTag i); + return st_valid_wrongSpec[i] && !stNeedKill[i] && + !st_verified_wrongSpec[i]; + endfunction + Vector#(StQSize, Bool) unverifiedSts = map(unkilledUnverified, + stIdxVec); + StQTag new_st_verifyP; + if(findOldestSt(unverifiedSts) matches tagged Valid .t) begin + new_st_verifyP = t; + end + else begin + new_st_verifyP = new_st_enqP; + end + st_verifyP_wrongSpec <= new_st_verifyP; + + if(verbose) begin + $display("[LSQ - wrongSpec] ", fshow(killAll), + "; ", fshow(specTag), + "; ", fshow(new_ld_enqP), + "; ", fshow(new_st_enqP), + "; ", fshow(new_st_verifyP)); + end + + // make conflict with others + wrongSpec_hit_conflict.wset(?); + wrongSpec_enqIss_conflict.wset(?); + wrongSpec_enq_conflict.wset(?); + wrongSpec_update_conflict.wset(?); + wrongSpec_issue_conflict.wset(?); + wrongSpec_respLd_conflict.wset(?); + wrongSpec_deqLd_conflict.wset(?); + wrongSpec_deqSt_conflict.wset(?); + wrongSpec_verify_conflict.wset(?); + wrongSpec_cacheEvict_conflict.wset(?); + wrongSpec_wakeBySB_conflict.wset(?); + // more urgent than firstSt + wrongSpec_urgent_firstSt <= True; + endmethod + endinterface + + method Bool stqFull_ehrPort0; + return st_enqP == st_deqP && st_valid[st_enqP][0]; + endmethod + + method Bool ldqFull_ehrPort0; + return ld_enqP == ld_deqP[0] && ld_valid[ld_enqP][0]; + endmethod + + method Bool noWrongPathLoads; + return all( \== (False) , readVReg(ld_waitWPResp_noWP) ); + endmethod +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/StoreBuffer.bsv b/src_Core/RISCY_OOO/procs/lib/StoreBuffer.bsv new file mode 100644 index 0000000..75e3769 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/StoreBuffer.bsv @@ -0,0 +1,316 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" +import Types::*; +import ProcTypes::*; +import Vector::*; +import FIFOF::*; +import FShow::*; +import Assert::*; +import Ehr::*; +import CacheUtils::*; + +// store buffer data block byte size == cache line +typedef CLineNumBytes SBBlockNumBytes; +typedef TMul#(8, SBBlockNumBytes) SBBlockSz; +typedef Bit#(SBBlockSz) SBBlock; +typedef Vector#(SBBlockNumBytes, Bool) SBByteEn; + +// aligned addr +typedef TSub#(AddrSz, TLog#(SBBlockNumBytes)) SBBlockAddrSz; +typedef Bit#(SBBlockAddrSz) SBBlockAddr; +function SBBlockAddr getSBBlockAddr(Addr a); + return truncateLSB(a); +endfunction + +// SB block vs. normal data +typedef TDiv#(SBBlockSz, DataSz) SBBlockNumData; +typedef Bit#(TLog#(SBBlockNumData)) SBBlockDataSel; +function SBBlockDataSel getSBBlockDataSel(Addr a); + return truncate(a >> valueOf(TLog#(NumBytes))); +endfunction + +// store buffer entry +typedef struct { + SBBlockAddr addr; + SBByteEn byteEn; + SBBlock data; +} SBEntry deriving(Bits, Eq, FShow); + +// result of searching (e.g. load byass) +typedef struct { + Maybe#(SBIndex) matchIdx; + Maybe#(Data) forwardData; // XXX data is not shifted to match load addr offset +} SBSearchRes deriving(Bits, Eq, FShow); + +interface StoreBuffer; + method Bool isEmpty; + method Maybe#(SBIndex) getEnqIndex(Addr paddr); + method Action enq(SBIndex idx, Addr paddr, ByteEn be, Data data); + method ActionValue#(SBEntry) deq(SBIndex idx); + method ActionValue#(Tuple2#(SBIndex, SBEntry)) issue; + method SBSearchRes search(Addr paddr, ByteEn be); // load bypass/stall or atomic inst stall + // check no matching entry for AMO/Lr/Sc issue + // XXX assume BE has been shifted approriately for paddr offset + // (for load we need to do that before calling the methods) + method Bool noMatchLdQ(Addr paddr, ByteEn be); + method Bool noMatchStQ(Addr paddr, ByteEn be); +endinterface + +///////////////// +// EHR version // +///////////////// +// method ordering: (empty CF issue CF search) < deq < enq +// This is mostly derived from SplitLSQ ordering of issueLd, deqSt, +// wakupLdStalledBySB. LSQ issueLd is called with SB search, LSQ deqSt is +// called with SB enq, and wakupLdStalledBy is called with SB deq. Since +// issueLd < (deqSt CF wakeupStalledBySB), we have search < (deq, enq). SB +// issue to memory is unrelated to other rules, so just put it at the +// beginning. Ordering between deq and enq are not important. We put deq < enq +// to cut of bypassing path. empty is used in ROB commit, so EHR port = 0 +(* synthesize *) +module mkStoreBufferEhr(StoreBuffer); + Integer emptyPort = 0; + Integer issuePort = 0; + Integer searchPort = 0; + Integer deqPort = 0; // write + Integer enqPort = 1; // write + + // entries with valid bit + Vector#(SBSize, Ehr#(2, SBEntry)) entry <- replicateM(mkEhr(?)); + Vector#(SBSize, Ehr#(2, Bool)) valid <- replicateM(mkEhr(False)); + + // FIFO of entries to be issued to memory + FIFOF#(SBIndex) issueQ <- mkUGSizedFIFOF(valueOf(SBSize)); + // FIFO of empty entries + FIFOF#(SBIndex) freeQ <- mkUGSizedFIFOF(valueOf(SBSize)); + // XXX I use UG FIFOs here, because some methods only call enq/deq in a branch + // compiler may do somthing wrong with guard if the FIFOs are guarded + // freeQ never overflow or underflow, so no explicit check is needed + // issueQ never overflow, so notEmpty check is needed + + // freeQ needs initialization + Reg#(Bool) inited <- mkReg(False); + Reg#(SBIndex) initIdx <- mkReg(0); + + rule initFreeQ(!inited); + freeQ.enq(initIdx); + initIdx <= initIdx + 1; + if(initIdx == fromInteger(valueOf(SBSize) - 1)) begin + inited <= True; + end + endrule + + function Maybe#(Bit#(TLog#(n))) searchIndex(function Bool pred(t x), Vector#(n, t) vec); + case(findIndex(pred, vec)) matches + tagged Valid .idx: return Valid (pack(idx)); + default: return Invalid; + endcase + endfunction + + function Bool noMatch(Addr paddr, ByteEn be); + // input BE has been shifted, just pack it + Bit#(NumBytes) ldBE = pack(be); + + // data offset within block + SBBlockDataSel sel = getSBBlockDataSel(paddr); + + // helper to extract byteEn from entry + function Bit#(NumBytes) getEntryBE(SBIndex idx); + Vector#(SBBlockNumData, ByteEn) byteEn = unpack(pack(entry[idx][searchPort].byteEn)); + return pack(byteEn[sel]); + endfunction + + // func to determine whether the load matches a store entry + function Bool matchEntry(Integer i); + // entry must be valid, addr should match, byte enable should overlap + Bool sameAddr = getSBBlockAddr(paddr) == entry[i][searchPort].addr; + Bool beOverlap = (ldBE & getEntryBE(fromInteger(i))) != 0; + return valid[i][searchPort] && sameAddr && beOverlap; + endfunction + + // find match entry and determine return value + Vector#(SBSize, Integer) idxVec = genVector; + return !any(matchEntry, idxVec); + endfunction + + method Bool isEmpty; + function Bool entryEmpty(Integer i); + return !valid[i][emptyPort]; + endfunction + Vector#(SBSize, Integer) idxVec = genVector; + return all(entryEmpty, idxVec); + endmethod + + method Maybe#(SBIndex) getEnqIndex(Addr paddr); + Vector#(SBSize, Integer) idxVec = genVector; + // first find existing matching entry + function Bool matchEntry(Integer i); + return valid[i][enqPort] && entry[i][enqPort].addr == getSBBlockAddr(paddr); + endfunction + Maybe#(SBIndex) matchIdx = searchIndex(matchEntry, idxVec); + if(isValid(matchIdx)) begin + return matchIdx; + end + else begin + // if no existing entry match, then find an empty entry + return freeQ.notEmpty ? Valid (freeQ.first) : Invalid; + end + endmethod + + method Action enq(SBIndex idx, Addr paddr, ByteEn be, Data d) if(inited); + // get data offset + SBBlockDataSel sel = getSBBlockDataSel(paddr); + // check whether the entry already exists + if(valid[idx][enqPort]) begin + // existing entry: merge + doAssert(getSBBlockAddr(paddr) == entry[idx][enqPort].addr, "SB enq to existing entry addr should match"); + // update data + Vector#(SBBlockNumData, Data) block = unpack(entry[idx][enqPort].data); + Vector#(NumBytes, Bit#(8)) origData = unpack(block[sel]); + Vector#(NumBytes, Bit#(8)) wrData = unpack(d); + function Bit#(8) getNewByte(Integer i) = be[i] ? wrData[i] : origData[i]; + Vector#(NumBytes, Bit#(8)) newData = map(getNewByte, genVector); + block[sel] = pack(newData); + // update byte enable + Vector#(SBBlockNumData, ByteEn) byteEn = unpack(pack(entry[idx][enqPort].byteEn)); + byteEn[sel] = unpack(pack(byteEn[sel]) | pack(be)); + // update entry + entry[idx][enqPort] <= SBEntry { + addr: getSBBlockAddr(paddr), + byteEn: unpack(pack(byteEn)), + data: pack(block) + }; + // this entry must have been sent to issueQ + end + else begin + // new entry: set valid + valid[idx][enqPort] <= True; + // setup entry + Vector#(SBBlockNumData, Data) block = ?; + block[sel] = d; + Vector#(SBBlockNumData, ByteEn) byteEn = replicate(replicate(False)); + byteEn[sel] = be; + entry[idx][enqPort] <= SBEntry { + addr: getSBBlockAddr(paddr), + byteEn: unpack(pack(byteEn)), + data: pack(block) + }; + // send this entry to issueQ + doAssert(issueQ.notFull, "SB issueQ should not be full"); + issueQ.enq(idx); + // remove from freeQ + doAssert(freeQ.notEmpty, "SB freeQ should not be empty"); + freeQ.deq; + end + endmethod + + method ActionValue#(SBEntry) deq(SBIndex idx) if(inited); + doAssert(valid[idx][deqPort], "SB deq entry must be valid"); + valid[idx][deqPort] <= False; // set entry to invalid + freeQ.enq(idx); // recycle entry + return entry[idx][deqPort]; + endmethod + + method ActionValue#(Tuple2#(SBIndex, SBEntry)) issue if(issueQ.notEmpty); + issueQ.deq; + SBIndex idx = issueQ.first; + return tuple2(idx, entry[idx][issuePort]); + endmethod + + method SBSearchRes search(Addr paddr, ByteEn be); + // input BE has been shifted, just pack it + Bit#(NumBytes) ldBE = pack(be); + + // data offset within block + SBBlockDataSel sel = getSBBlockDataSel(paddr); + + // helper to extract byteEn from entry + function Bit#(NumBytes) getEntryBE(SBIndex idx); + Vector#(SBBlockNumData, ByteEn) byteEn = unpack(pack(entry[idx][searchPort].byteEn)); + return pack(byteEn[sel]); + endfunction + + // func to determine whether the load matches a store entry + function Bool matchEntry(Integer i); + // entry must be valid, addr should match, byte enable should overlap + Bool sameAddr = getSBBlockAddr(paddr) == entry[i][searchPort].addr; + Bool beOverlap = (ldBE & getEntryBE(fromInteger(i))) != 0; + return valid[i][searchPort] && sameAddr && beOverlap; + endfunction + + // find match entry and determine return value + Vector#(SBSize, Integer) idxVec = genVector; + if(searchIndex(matchEntry, idxVec) matches tagged Valid .idx) begin + // check whether bytes reading are all covered by the entry + if((getEntryBE(idx) & ldBE) == ldBE) begin + // fully covered, forward data + Vector#(SBBlockNumData, Data) block = unpack(entry[idx][searchPort].data); + return SBSearchRes { + matchIdx: Valid (idx), + forwardData: Valid (block[sel]) + }; + end + else begin + // interact byte, not fully covered, stall the load + return SBSearchRes { + matchIdx: Valid (idx), + forwardData: Invalid + }; + end + end + else begin + // load should go to memory + return SBSearchRes { + matchIdx: Invalid, + forwardData: Invalid + }; + end + endmethod + + method noMatchLdQ = noMatch; + method noMatchStQ = noMatch; +endmodule + +(* synthesize *) +module mkDummyStoreBuffer(StoreBuffer); + method Bool isEmpty = True; + method Maybe#(SBIndex) getEnqIndex(Addr paddr) = Invalid; + method Action enq(SBIndex idx, Addr paddr, ByteEn be, Data data); + doAssert(False, "enq should never be called)"); + endmethod + method ActionValue#(SBEntry) deq(SBIndex idx); + doAssert(False, "deq should never be called)"); + return ?; + endmethod + method ActionValue#(Tuple2#(SBIndex, SBEntry)) issue; + doAssert(False, "issue should never be called)"); + return ?; + endmethod + method SBSearchRes search(Addr paddr, ByteEn be); + return SBSearchRes {matchIdx: Invalid, forwardData: Invalid}; + endmethod + method Bool noMatchLdQ(Addr paddr, ByteEn be) = True; + method Bool noMatchStQ(Addr paddr, ByteEn be) = True; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/TlbConnect.bsv b/src_Core/RISCY_OOO/procs/lib/TlbConnect.bsv new file mode 100644 index 0000000..f04c8ea --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/TlbConnect.bsv @@ -0,0 +1,75 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import GetPut::*; +import ClientServer::*; +import Connectable::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; +import CacheUtils::*; +import ITlb::*; +import DTlb::*; +import L2Tlb::*; + +module mkTlbConnect#(ITlbToParent i, DTlbToParent d, L2TlbToChildren l2)(Empty); + // give priority to DTlb req + (* descending_urgency = "sendDTlbReq, sendITlbReq" *) + rule sendDTlbReq; + DTlbRqToP r <- toGet(d.rqToP).get; + l2.rqFromC.put(L2TlbRqFromC { + child: D (r.id), + vpn: r.vpn + }); + endrule + + rule sendITlbReq; + ITlbRqToP r <- toGet(i.rqToP).get; + l2.rqFromC.put(L2TlbRqFromC { + child: I, + vpn: r.vpn + }); + endrule + + rule sendRsToDTlb(l2.rsToC.first.child matches tagged D .id); + L2TlbRsToC r <- toGet(l2.rsToC).get; + d.ldTransRsFromP.enq(DTlbTransRsFromP { + entry: r.entry, + id: id + }); + endrule + + rule sendRsToITlb(l2.rsToC.first.child == I); + L2TlbRsToC r <- toGet(l2.rsToC).get; + i.rsFromP.enq(ITlbRsFromP {entry: r.entry}); + endrule + + mkConnection(d.flush.request, l2.dTlbReqFlush); + mkConnection(i.flush.request, l2.iTlbReqFlush); + + rule sendFlushDone; + let x <- l2.flushDone.get; + d.flush.response.put(?); + i.flush.response.put(?); + endrule +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/TlbTypes.bsv b/src_Core/RISCY_OOO/procs/lib/TlbTypes.bsv new file mode 100644 index 0000000..41f4eda --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/TlbTypes.bsv @@ -0,0 +1,241 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +`include "ProcConfig.bsv" + +import Vector::*; +import Types::*; +import ProcTypes::*; + +// processor req/resp with I/D TLB +typedef struct{ + Addr addr; + Bool write; +} TlbReq deriving(Eq, Bits, FShow); +typedef Tuple2#(Addr, Maybe#(Exception)) TlbResp; + +// non-blocking DTLB +typedef `DTLB_REQ_NUM DTlbReqNum; +typedef Bit#(TLog#(DTlbReqNum)) DTlbReqIdx; + +// non-blocking L2 TLB +typedef `L2TLB_REQ_NUM L2TlbReqNum; +typedef Bit#(TLog#(L2TlbReqNum)) L2TlbReqIdx; + +// Only for Sv39 +typedef 27 VpnSz; +typedef Bit#(VpnSz) Vpn; +typedef 44 PpnSz; +typedef Bit#(PpnSz) Ppn; +typedef 12 PageOffsetSz; // 4KB basic page +typedef Bit#(PageOffsetSz) PageOffset; +typedef 9 VpnIdxSz; // Vpn is broken down to 3 indexes to 3 levels of page table +typedef Bit#(VpnIdxSz) VpnIdx; +typedef Bit#(2) PageWalkLevel; // 2: 1GB page, 1: 2MB page, 0: 4KB page +typedef 3 NumPageWalkLevels; +PageWalkLevel maxPageWalkLevel = fromInteger(valueof(NumPageWalkLevels) - 1); + +typedef struct { + Bool dirty; + Bool accessed; + Bool global; + Bool user; + Bool executable; + Bool writable; + Bool readable; +} PTEType deriving (Bits, Eq, FShow); + +typedef struct { + Bit#(10) reserved; + Ppn ppn; + Bit#(2) reserved_sw; // reserved for supervisor software + PTEType pteType; + Bool valid; +} PTESv39 deriving(Bits, Eq, FShow); + +// TLB entry +typedef struct { + Vpn vpn; + Ppn ppn; + PTEType pteType; + PageWalkLevel level; + Asid asid; +} TlbEntry deriving (Bits, Eq, FShow); + +// SV39 translate +function Vpn getVpn(Addr addr) = addr[38:12]; + +function PageOffset getPageOffset(Addr addr) = truncate(addr); + +function Addr getPTBaseAddr(Ppn basePpn); + PageOffset offset = 0; + return zeroExtend({basePpn, offset}); +endfunction + +`ifdef SECURITY +// Check if an access from enclave or security monitor is out of its protection +// domain. This should always return false for normal program or OS, becuase in +// vminfo of OS/normal program, evbase = 0xfff...fff and evmask = 0 +function Bool outOfProtectionDomain(VMInfo vm_info, Addr vaddr); + // Default value for when the program requiring the translation is not protected + if (vm_info.sanctum_evbase == maxBound && vm_info.sanctum_evmask == 0) return False; + // If it is protected, then the size of the protection domain is a power of + // 2 starting at sanctum_evbase + else return ((vaddr & vm_info.sanctum_evmask) != vm_info.sanctum_evbase ); +endfunction + +// get the bitmask for accessed DRAM regions +// FIXME This code assumes 64 x 32MB regions +function Addr getAddrRegions(Addr addr, Bool isLeaf, PageWalkLevel level) provisos ( + Add#(0, 6, `LOG_DRAM_REGION_NUM), // 6 regions + Add#(0, 25, `LOG_DRAM_REGION_SIZE) // 25 regions +); + Addr res = (1 << (addr[30:25])); + if (isLeaf && (level == 2)) begin // giga pages cross multiple regions + res = ((addr[30] == 1'b1) ? 64'hFFFFFFFF00000000 : 64'h00000000FFFFFFFF); // Assume 64 x 32-MB regions + end + return res; +endfunction +`endif + +function Addr getPTEAddr(Addr baseAddr, Vpn vpn, PageWalkLevel level); + Vector#(NumPageWalkLevels, VpnIdx) vpnVec = unpack(vpn); // index 0 is LSB + return baseAddr + (zeroExtend(vpnVec[level]) << 3); // PTE is 2^3 bytes +endfunction + +function Bool isLeafPTE(PTEType t); + return t.executable || t.readable || t.writable; +endfunction + +function Addr translate(Addr addr, Ppn ppn, PageWalkLevel level); + return zeroExtend(case (level) + 0: {ppn, getPageOffset(addr)}; // 4KB page + 1: {ppn[43:9], addr[20:0]}; // 2MB page + 2: {ppn[43:18], addr[29:0]}; // 1GB page + default: 0; // should not happen + endcase); +endfunction + +function Vpn getMaskedVpn(Vpn vpn, PageWalkLevel level); + return (case (level) + 0: (vpn); + 1: ((vpn >> 9) << 9); // 2MB mask + 2: ((vpn >> 18) << 18); // 1GB mask + default: 0; // should not happen + endcase); +endfunction + +function Ppn getMaskedPpn(Ppn ppn, PageWalkLevel level); + return (case (level) + 0: (ppn); + 1: ((ppn >> 9) << 9); // 2MB mask + 2: ((ppn >> 18) << 18); // 1GB mask + default: 0; // should not happen + endcase); +endfunction + +function Bool isPpnAligned(Ppn ppn, PageWalkLevel level); + return (case(level) + 0: True; + 1: (ppn[8:0] == 0); + 2: (ppn[17:0] == 0); + default: False; + endcase); +endfunction + +typedef enum { + InstFetch, + DataLoad, + DataStore // also contain DataLoad +} TlbAccessType deriving(Bits, Eq, FShow); + +function Bool hasVMPermission( + VMInfo vm_info, + PTEType pte_type, Ppn ppn, PageWalkLevel level, + TlbAccessType access +); + // try to find any page fault + Bool fault = False; + + // check if we are still in sv39 + if(!vm_info.sv39) begin + fault = True; + end + + // check PTE itself is well-formed or not + if(pte_type.writable && !pte_type.readable) begin + fault = True; // page writable but not readable + end + if(!isPpnAligned(ppn, level)) begin + fault = True; // unaligned super page + end + + // check permission related to user page + if(pte_type.user) begin + // S mode may not access user page. We need to consider mstatus.sum + // bit. XXX Spike will raise page fault in case S-mode inst-fetch even + // when mstatus.sum is set. We follow spike here. + if (vm_info.prv == prvS && + (access == InstFetch || !vm_info.userAccessibleByS)) begin + fault = True; + end + end + else begin + // U mode cannot access non-user page + if(vm_info.prv == prvU) begin + fault = True; + end + end + + // check execute/read/write permission + case(access) + InstFetch: begin + if(!pte_type.executable) begin + fault = True; + end + end + DataLoad: begin + // need to consider mstatus.mxr bit + if (!pte_type.readable && + !(pte_type.executable && vm_info.exeReadable)) begin + fault = True; + end + end + DataStore: begin + // store requires page to be both readable and writable + if(!(pte_type.readable && pte_type.writable)) begin + fault = True; + end + end + endcase + + // check if accessed or dirty bit needs to be set + if(!pte_type.accessed) begin + fault = True; + end + if(access == DataStore && !pte_type.dirty) begin + fault = True; + end + + return !fault; +endfunction diff --git a/src_Core/RISCY_OOO/procs/lib/TourPred.bsv b/src_Core/RISCY_OOO/procs/lib/TourPred.bsv new file mode 100644 index 0000000..337c0b1 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/TourPred.bsv @@ -0,0 +1,178 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import RegFile::*; +import Ehr::*; +import Vector::*; +import GlobalBrHistReg::*; +import BrPred::*; + +export TourLocalHistSz; +export TourLocalHist; +export TourGlobalHistSz; +export TourGlobalHist; +export TourTrainInfo(..); +export TourGHistReg(..); +export mkTourGHistReg; +export mkTourPred; + +// 4KB tournament predictor + +typedef 12 TourGlobalHistSz; +typedef 10 TourLocalHistSz; +typedef 10 PCIndexSz; + +typedef Bit#(TourGlobalHistSz) TourGlobalHist; +typedef Bit#(TourLocalHistSz) TourLocalHist; +typedef Bit#(PCIndexSz) PCIndex; + +typedef struct { + TourGlobalHist globalHist; + TourLocalHist localHist; + Bool globalTaken; + Bool localTaken; +} TourTrainInfo deriving(Bits, Eq, FShow); + +// global history reg +typedef GlobalBrHistReg#(TourGlobalHistSz) TourGHistReg; + +(* synthesize *) +module mkTourGHistReg(TourGHistReg); + let m <- mkGlobalBrHistReg; + return m; +endmodule + +(* synthesize *) +module mkTourPred(DirPredictor#(TourTrainInfo)); + // local history: MSB is the latest branch + RegFile#(PCIndex, TourLocalHist) localHistTab <- mkRegFileWCF(0, maxBound); + // local sat counters + RegFile#(TourLocalHist, Bit#(3)) localBht <- mkRegFileWCF(0, maxBound); + // global history reg + TourGHistReg gHistReg <- mkTourGHistReg; + // global sat counters + RegFile#(TourGlobalHist, Bit#(2)) globalBht <- mkRegFileWCF(0, maxBound); + // choice sat counters: large (taken) -- use local, small (not taken) -- use global + RegFile#(TourGlobalHist, Bit#(2)) choiceBht <- mkRegFileWCF(0, maxBound); + + // EHR to record predict results in this cycle + Ehr#(TAdd#(1, SupSize), SupCnt) predCnt <- mkEhr(0); + Ehr#(TAdd#(1, SupSize), Bit#(SupSize)) predRes <- mkEhr(0); + + function PCIndex getPCIndex(Addr pc); + return truncate(pc >> 2); + endfunction + + // common sat counter operations + function Bool isTaken(Bit#(n) cnt) provisos(Add#(1, a__, n)); + Bit#(1) msb = truncateLSB(cnt); + return msb == 1; + endfunction + + function Bit#(n) updateCnt(Bit#(n) cnt, Bool taken); + if(taken) begin + return cnt == maxBound ? maxBound : cnt + 1; + end + else begin + return cnt == 0 ? 0 : cnt - 1; + end + endfunction + + TourGlobalHist curGHist = gHistReg.history; // global history: MSB is the latest branch + + Vector#(SupSize, DirPred#(TourTrainInfo)) predIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + predIfc[i] = (interface DirPred; + method ActionValue#(DirPredResult#(TourTrainInfo)) pred(Addr pc); + // get local history & prediction + TourLocalHist localHist = localHistTab.sub(getPCIndex(pc)); + Bool localTaken = isTaken(localBht.sub(localHist)); + + // get the global history + // all previous branch in this cycle must be not taken + // otherwise this branch should be on wrong path + // because all inst in same cycle are fetched consecutively + TourGlobalHist globalHist = curGHist >> predCnt[i]; + // get global prediction + Bool globalTaken = isTaken(globalBht.sub(globalHist)); + + // make choice + Bool useLocal = isTaken(choiceBht.sub(globalHist)); + Bool taken = useLocal ? localTaken : globalTaken; + + // record prediction + predCnt[i] <= predCnt[i] + 1; + Bit#(SupSize) res = predRes[i]; + res[predCnt[i]] = pack(taken); + predRes[i] <= res; + + // return + return DirPredResult { + taken: taken, + train: TourTrainInfo { + globalHist: globalHist, + localHist: localHist, + globalTaken: globalTaken, + localTaken: localTaken + } + }; + endmethod + endinterface); + end + + (* fire_when_enabled, no_implicit_conditions *) + rule canonGlobalHist; + gHistReg.addHistory(predRes[valueof(SupSize)], predCnt[valueof(SupSize)]); + predRes[valueof(SupSize)] <= 0; + predCnt[valueof(SupSize)] <= 0; + endrule + + interface pred = predIfc; + + method Action update(Addr pc, Bool taken, TourTrainInfo train, Bool mispred); + // update history if mispred + if(mispred) begin + TourGlobalHist newHist = truncateLSB({pack(taken), train.globalHist}); + gHistReg.redirect(newHist); + end + // update local history (assume only 1 branch for an PC in flight) + localHistTab.upd(getPCIndex(pc), truncateLSB({pack(taken), train.localHist})); + // update local sat cnt + let localCnt = localBht.sub(train.localHist); + localBht.upd(train.localHist, updateCnt(localCnt, taken)); + // update global sat cnt + let globalCnt = globalBht.sub(train.globalHist); + globalBht.upd(train.globalHist, updateCnt(globalCnt, taken)); + // update choice cnt + if(train.globalTaken != train.localTaken) begin + Bool useLocal = train.localTaken == taken; + let choiceCnt = choiceBht.sub(train.globalHist); + choiceBht.upd(train.globalHist, updateCnt(choiceCnt, useLocal)); + end + endmethod + + method flush = noAction; + method flush_done = True; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/TourPredSecure.bsv b/src_Core/RISCY_OOO/procs/lib/TourPredSecure.bsv new file mode 100644 index 0000000..7b099f4 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/TourPredSecure.bsv @@ -0,0 +1,251 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Types::*; +import ProcTypes::*; +import RegFile::*; +import Ehr::*; +import Vector::*; +import GlobalBrHistReg::*; +import BrPred::*; +import TourPred::*; + +export mkTourPredSecure; + +// 4KB tournament predictor with flush methods for security +// XXX We DO NOT stall prediction or update methods when flushing to reduce +// logic. It is guaranteed outside that no prediction or update can happen when +// flushing. + +typedef 10 PCIndexSz; +typedef Bit#(PCIndexSz) PCIndex; + +// We group several sat counters/local hists together in order to flush faster +typedef 9 TabIndexSz; +typedef Bit#(TabIndexSz) TabIndex; + +// vector of local hists +typedef TSub#(PCIndexSz, TabIndexSz) LgLocalHistVecSz; +typedef TExp#(LgLocalHistVecSz) LocalHistVecSz; +typedef Bit#(LgLocalHistVecSz) LocalHistVecSelect; + +// vector of local bht sat counters +typedef TSub#(TourLocalHistSz, TabIndexSz) LgLocalBhtVecSz; +typedef TExp#(LgLocalBhtVecSz) LocalBhtVecSz; +typedef Bit#(LgLocalBhtVecSz) LocalBhtVecSelect; + +// vector of global bht sat counters and global choice sat counters +typedef TSub#(TourGlobalHistSz, TabIndexSz) LgGlobalVecSz; +typedef TExp#(LgGlobalVecSz) GlobalVecSz; +typedef Bit#(GlobalVecSz) GlobalVecSelect; + +typedef struct { + Addr pc; + Bool taken; + TourTrainInfo train; + Bool mispred; +} TourUpdate deriving(Bits, Eq, FShow); + +(* synthesize *) +module mkTourPredSecure(DirPredictor#(TourTrainInfo)); + // FIXME: The regfile should be initialized (on FPGA, all 0 after programming) + // local history: MSB is the latest branch + RegFile#(TabIndex, Vector#(LocalHistVecSz, TourLocalHist)) localHistTab <- mkRegFileWCF(0, maxBound); + // local sat counters + RegFile#(TabIndex, Vector#(LocalBhtVecSz, Bit#(3))) localBht <- mkRegFileWCF(0, maxBound); + // global history reg + TourGHistReg gHistReg <- mkTourGHistReg; + // global sat counters + RegFile#(TabIndex, Vector#(GlobalVecSz, Bit#(2))) globalBht <- mkRegFileWCF(0, maxBound); + // choice sat counters: large (taken) -- use local, small (not taken) -- use global + RegFile#(TabIndex, Vector#(GlobalVecSz, Bit#(2))) choiceBht <- mkRegFileWCF(0, maxBound); + + // EHR to record predict results in this cycle + Ehr#(TAdd#(1, SupSize), SupCnt) predCnt <- mkEhr(0); + Ehr#(TAdd#(1, SupSize), Bit#(SupSize)) predRes <- mkEhr(0); + + RWire#(TourUpdate) updateEn <- mkRWire; + + // security flush + Reg#(Bool) flushDone <- mkReg(True); + Reg#(TabIndex) flushIndex <- mkReg(0); + + function Tuple2#(TabIndex, LocalHistVecSelect) getPCIndex(Addr pc); + PCIndex pcIdx = truncate(pc >> 2); + TabIndex tabIdx = truncateLSB(pcIdx); + LocalHistVecSelect sel = truncate(pcIdx); + return tuple2(tabIdx, sel); + endfunction + + function Tuple2#(TabIndex, LocalBhtVecSelect) getLocalBhtIndex(TourLocalHist hist); + TabIndex idx = truncateLSB(hist); + LocalHistVecSelect sel = truncate(hist); + return tuple2(idx, sel); + endfunction + + function Tuple2#(TabIndex, GlobalVecSelect) getGlobalIndex(TourGlobalHist hist); + TabIndex idx = truncateLSB(hist); + GlobalVecSelect sel = truncate(hist); + return tuple2(idx, sel); + endfunction + + // common sat counter operations + function Bool isTaken(Bit#(n) cnt) provisos(Add#(1, a__, n)); + Bit#(1) msb = truncateLSB(cnt); + return msb == 1; + endfunction + + function Bit#(n) updateCnt(Bit#(n) cnt, Bool taken); + if(taken) begin + return cnt == maxBound ? maxBound : cnt + 1; + end + else begin + return cnt == 0 ? 0 : cnt - 1; + end + endfunction + + TourGlobalHist curGHist = gHistReg.history; // global history: MSB is the latest branch + + Vector#(SupSize, DirPred#(TourTrainInfo)) predIfc; + for(Integer i = 0; i < valueof(SupSize); i = i+1) begin + predIfc[i] = (interface DirPred; + method ActionValue#(DirPredResult#(TourTrainInfo)) pred(Addr pc); + // get local history + let {localHistTabIdx, localHistVecSel} = getPCIndex(pc); + Vector#(LocalHistVecSz, TourLocalHist) localHistVec = localHistTab.sub(localHistTabIdx); + TourLocalHist localHist = localHistVec[localHistVecSel]; + // get local prediction + let {localBhtTabIdx, localBhtVecSel} = getLocalBhtIndex(localHist); + Vector#(LocalBhtVecSz, Bit#(3)) localBhtVec = localBht.sub(localBhtTabIdx); + Bool localTaken = isTaken(localBhtVec[localBhtVecSel]); + + // get the global history + // all previous branch in this cycle must be not taken + // otherwise this branch should be on wrong path + // because all inst in same cycle are fetched consecutively + TourGlobalHist globalHist = curGHist >> predCnt[i]; + // get global prediction + let {globalTabIdx, globalVecSel} = getGlobalIndex(globalHist); + Vector#(GlobalVecSz, Bit#(2)) globalBhtVec = globalBht.sub(globalTabIdx); + Bool globalTaken = isTaken(globalBhtVec[globalVecSel]); + + // make choice + Vector#(GlobalVecSz, Bit#(2)) choiceVec = choiceBht.sub(globalTabIdx); + Bool useLocal = isTaken(choiceVec[globalVecSel]); + Bool taken = useLocal ? localTaken : globalTaken; + + // record prediction + predCnt[i] <= predCnt[i] + 1; + Bit#(SupSize) res = predRes[i]; + res[predCnt[i]] = pack(taken); + predRes[i] <= res; + + // return + return DirPredResult { + taken: taken, + train: TourTrainInfo { + globalHist: globalHist, + localHist: localHist, + globalTaken: globalTaken, + localTaken: localTaken + } + }; + endmethod + endinterface); + end + + (* fire_when_enabled, no_implicit_conditions *) + rule canonGlobalHist; + gHistReg.addHistory(predRes[valueof(SupSize)], predCnt[valueof(SupSize)]); + predRes[valueof(SupSize)] <= 0; + predCnt[valueof(SupSize)] <= 0; + endrule + + // no flush, accept update + (* fire_when_enabled, no_implicit_conditions *) + rule canonUpdate(flushDone &&& updateEn.wget matches tagged Valid .upd); + let pc = upd.pc; + let taken = upd.taken; + let train = upd.train; + let mispred = upd.mispred; + + // update history if mispred + if(mispred) begin + TourGlobalHist newHist = truncateLSB({pack(taken), train.globalHist}); + gHistReg.redirect(newHist); + end + + // update local history (assume only 1 branch for an PC in flight) + let {localHistTabIdx, localHistVecSel} = getPCIndex(pc); + Vector#(LocalHistVecSz, TourLocalHist) localHistVec = localHistTab.sub(localHistTabIdx); + localHistVec[localHistVecSel] = truncateLSB({pack(taken), train.localHist}); + localHistTab.upd(localHistTabIdx, localHistVec); + + // update local sat cnt + let {localBhtTabIdx, localBhtVecSel} = getLocalBhtIndex(train.localHist); + Vector#(LocalBhtVecSz, Bit#(3)) localBhtVec = localBht.sub(localBhtTabIdx); + Bit#(3) localCnt = localBhtVec[localBhtVecSel]; + localBhtVec[localBhtVecSel] = updateCnt(localCnt, taken); + localBht.upd(localBhtTabIdx, localBhtVec); + + // update global sat cnt + let {globalTabIdx, globalVecSel} = getGlobalIndex(train.globalHist); + Vector#(GlobalVecSz, Bit#(2)) globalBhtVec = globalBht.sub(globalTabIdx); + Bit#(2) globalCnt = globalBhtVec[globalVecSel]; + globalBhtVec[globalVecSel] = updateCnt(globalCnt, taken); + globalBht.upd(globalTabIdx, globalBhtVec); + + // update choice cnt + if(train.globalTaken != train.localTaken) begin + Vector#(GlobalVecSz, Bit#(2)) choiceVec = choiceBht.sub(globalTabIdx); + Bit#(2) choiceCnt = choiceVec[globalVecSel]; + Bool useLocal = train.localTaken == taken; + choiceVec[globalVecSel] = updateCnt(choiceCnt, useLocal); + choiceBht.upd(globalTabIdx, choiceVec); + end + endrule + + // flushing, drop update and flush table entries one by one + rule canonFlush(!flushDone); + localHistTab.upd(flushIndex, replicate(0)); + localBht.upd(flushIndex, replicate(0)); + globalBht.upd(flushIndex, replicate(0)); + choiceBht.upd(flushIndex, replicate(0)); + gHistReg.redirect(0); + flushIndex <= flushIndex + 1; + if (flushIndex == maxBound) begin + flushDone <= True; + end + endrule + + interface pred = predIfc; + + method Action update(Addr pc, Bool taken, TourTrainInfo train, Bool mispred); + updateEn.wset(TourUpdate {pc: pc, taken: taken, train: train, mispred: mispred}); + endmethod + + method Action flush if(flushDone); + flushDone <= False; + endmethod + method flush_done = flushDone._read; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/TranslationCache.bsv b/src_Core/RISCY_OOO/procs/lib/TranslationCache.bsv new file mode 100644 index 0000000..aae4f1a --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/TranslationCache.bsv @@ -0,0 +1,257 @@ + +// Copyright (c) 2018 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import Assert::*; +import Ehr::*; +import Fifo::*; +import Types::*; +import ProcTypes::*; +import TlbTypes::*; + +// vpn -> ppn of the page containing the intermediate page table +// entry at the lowest walk level + +typedef struct { + PageWalkLevel startLevel; + Ppn ppn; // only valid when startLevel < maxPageWalkLevel +} TranslationCacheResp deriving(Bits, Eq, FShow); + +interface TranslationCache; + method Action req(Vpn vpn, Asid asid); + method TranslationCacheResp resp; + method Action deqResp; + method Action addEntry(Vpn vpn, PageWalkLevel level, Ppn ppn, Asid asid); + method Action flush; + method Bool flush_done; +endinterface + +// ordering: +// resp < {req, addEntry} +// req C addEntry +// flush C {req, addEntry} (flush is likely to have higher urgency) + +// split translation cache + +// translation cache for a specific level L. This stores the PTEs at level L. +interface SingleSplitTransCache; + method ActionValue#(Maybe#(Ppn)) req(Vpn vpn, Asid asid); + method Action addEntry(Vpn vpn, Ppn ppn, Asid asid); + method Action flush; +endinterface + +typedef 24 SplitTransCacheSize; // size from ISCA 2010 paper +typedef Bit#(TLog#(SplitTransCacheSize)) SplitTransCacheIdx; + +module mkSingleSplitTransCache#(PageWalkLevel level)(SingleSplitTransCache); + staticAssert(level > 0 && level <= maxPageWalkLevel, "illegal level"); + + Vector#(SplitTransCacheSize, Reg#(Bool)) validVec <- replicateM(mkReg(False)); + Vector#(SplitTransCacheSize, Reg#(Vpn)) vpnVec <- replicateM(mkRegU); + Vector#(SplitTransCacheSize, Reg#(Ppn)) ppnVec <- replicateM(mkRegU); + Vector#(SplitTransCacheSize, Reg#(Asid)) asidVec <- replicateM(mkRegU); + + // bit-LRU replacement. To reduce cycle time, we update LRU bits in the + // next cycle after we touch an entry. However, when we have two + // consecutive cycles inserting new entries, the latter insertion should + // see the updates to LRU bits made by the former insertion; otherwise the + // latter will insert to the same slot as the former one. + Ehr#(2, Bit#(SplitTransCacheSize)) lruBit <- mkEhr(0); + Reg#(Bit#(SplitTransCacheSize)) lruBit_upd = lruBit[0]; // write + Reg#(Bit#(SplitTransCacheSize)) lruBit_add = lruBit[1]; // read + // reg as 1 cycle delay for update LRU + Ehr#(2, Maybe#(SplitTransCacheIdx)) updRepIdx <- mkEhr(Invalid); + Reg#(Maybe#(SplitTransCacheIdx)) updRepIdx_deq = updRepIdx[0]; + Reg#(Maybe#(SplitTransCacheIdx)) updRepIdx_enq = updRepIdx[1]; + // randomly choose an LRU idx at replacement time + Reg#(SplitTransCacheIdx) randIdx <- mkReg(0); + + // don't do anything at flush time + PulseWire flushEn <- mkPulseWire; + + rule incRandIdx; + randIdx <= randIdx + 1; + endrule + + rule doUpdateRep(updRepIdx_deq matches tagged Valid .idx &&& !flushEn); + updRepIdx_deq <= Invalid; + // update LRU bits + Bit#(SplitTransCacheSize) val = lruBit_upd; + val[idx] = 1; + if(val == maxBound) begin + val = 0; + val[idx] = 1; + end + lruBit_upd <= val; + endrule + + method ActionValue#(Maybe#(Ppn)) req(Vpn vpn, Asid asid) if(updRepIdx_enq == Invalid && !flushEn); + function Bool hit(SplitTransCacheIdx i); + Bool vpn_match = getMaskedVpn(vpn, level) == getMaskedVpn(vpnVec[i], level); + Bool asid_match = asid == asidVec[i]; // TODO global?? + return validVec[i] && vpn_match && asid_match; + endfunction + Vector#(SplitTransCacheSize, SplitTransCacheIdx) idxVec = genWith(fromInteger); + if(find(hit, idxVec) matches tagged Valid .i) begin + updRepIdx_enq <= Valid (i); // update LRU + return Valid (ppnVec[i]); + end + else begin + return Invalid; + end + endmethod + + method Action addEntry(Vpn vpn, Ppn ppn, Asid asid) if(updRepIdx_enq == Invalid && !flushEn); + // only update LRU if the new entry already exists (TODO Maybe this is + // not needed after we detect duplicate pagewalk mem req) + function Bool sameEntry(SplitTransCacheIdx i); + Bool vpn_match = getMaskedVpn(vpn, level) == getMaskedVpn(vpnVec[i], level); + Bool asid_match = asid == asidVec[i]; // TODO global?? + return validVec[i] && vpn_match && asid_match; + endfunction + Vector#(SplitTransCacheSize, SplitTransCacheIdx) idxVec = genWith(fromInteger); + if(find(sameEntry, idxVec) matches tagged Valid .idx) begin + // entry already exists, just update LRU + updRepIdx_enq <= Valid (idx); + end + else begin + // find slot to add new entry + SplitTransCacheIdx addIdx; + if(findIndex( \== (False) , readVReg(validVec) ) matches tagged Valid .idx) begin + // get empty slot + addIdx = pack(idx); + end + else begin + // find LRU slot (lruBit[i] = 0 means i is LRU slot) + Vector#(SplitTransCacheSize, Bool) isLRU = unpack(~lruBit_add); + if(isLRU[randIdx]) begin + addIdx = randIdx; + end + else if(findIndex(id, isLRU) matches tagged Valid .idx) begin + addIdx = pack(idx); + end + else begin + addIdx = 0; // this is actually impossible + doAssert(False, "must have at least 1 LRU slot"); + end + end + // update slot + validVec[addIdx] <= True; + vpnVec[addIdx] <= vpn; // we mask vpn at search time + ppnVec[addIdx] <= ppn; // don't mask ppn, intermidate PTE point to a 4KB page + asidVec[addIdx] <= asid; + // update LRU bits + updRepIdx_enq <= Valid (addIdx); + end + endmethod + + method Action flush; + writeVReg(validVec, replicate(False)); + // also reset LRU bits + lruBit_upd <= 0; + updRepIdx_deq <= Invalid; + // signal fire + flushEn.send; + endmethod +endmodule + +(* synthesize *) +module mkSplitTransCache(TranslationCache); + Vector#(TSub#(NumPageWalkLevels, 1), SingleSplitTransCache) caches; + for(PageWalkLevel i = 0; i < maxPageWalkLevel; i = i+1) begin + caches[i] <- mkSingleSplitTransCache(i + 1); + end + + Fifo#(1, TranslationCacheResp) respQ <- mkPipelineFifo; + + method Action req(Vpn vpn, Asid asid); + TranslationCacheResp resp; + Vector#(TSub#(NumPageWalkLevels, 1), Maybe#(Ppn)) hits; + for(PageWalkLevel i = 0; i < maxPageWalkLevel; i = i+1) begin + hits[i] <- caches[i].req(vpn, asid); // cached page walk level i+1 + end + // XXX hit in lower level has priority + if(findIndex(isValid, hits) matches tagged Valid .idx) begin + resp = TranslationCacheResp { + startLevel: zeroExtend(pack(idx)), + ppn: validValue(hits[idx]) + }; + end + else begin + resp = TranslationCacheResp { + startLevel: maxPageWalkLevel, + ppn: ? + }; + end + respQ.enq(resp); + endmethod + + method TranslationCacheResp resp = respQ.first; + + method Action deqResp; + respQ.deq; + endmethod + + // the guard makes resp < addEntry, so pending req is ordered before the + // newly add entry (so in case of miss, the pending req could mark itself + // waiting on the page walk that is just about to addEntry, and get the + // bypass) + method Action addEntry(Vpn vpn, PageWalkLevel level, Ppn ppn, Asid asid) if(respQ.notFull); + doAssert(level > 0, "cannot be level 0"); + doAssert(level <= maxPageWalkLevel, "level too large"); + caches[level - 1].addEntry(vpn, ppn, asid); + endmethod + + method Action flush; + for(PageWalkLevel i = 0; i < maxPageWalkLevel; i = i+1) begin + caches[i].flush; + end + endmethod + + method Bool flush_done = True; +endmodule + +(* synthesize *) +module mkNullTransCache(TranslationCache); + Fifo#(1, void) reqQ <- mkPipelineFifo; + + method Action req(Vpn vpn, Asid asid); + reqQ.enq(?); + endmethod + method Action deqResp; + reqQ.deq; + endmethod + method TranslationCacheResp resp if(reqQ.notEmpty); + return TranslationCacheResp { + startLevel: maxPageWalkLevel, + ppn: ? + }; + endmethod + method Action addEntry(Vpn vpn, PageWalkLevel level, Ppn ppn, Asid asid); + noAction; + endmethod + method Action flush; + noAction; + endmethod + method Bool flush_done = True; +endmodule diff --git a/src_Core/RISCY_OOO/procs/lib/Types.bsv b/src_Core/RISCY_OOO/procs/lib/Types.bsv new file mode 100644 index 0000000..7f0b898 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/Types.bsv @@ -0,0 +1,69 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +import Vector::*; +import Assert::*; + +typedef 64 AddrSz; +typedef Bit#(AddrSz) Addr; + +typedef 64 DataSz; +typedef Bit#(DataSz) Data; + +typedef 32 InstSz; +typedef Bit#(InstSz) Instruction; + +typedef 0 AsidSz; // not really implement ASID +typedef Bit#(AsidSz) Asid; + +typedef TDiv#(DataSz, 8) NumBytes; +typedef TLog#(NumBytes) IndxShamt; +typedef Vector#(NumBytes, Bool) ByteEn; + +typedef TDiv#(DataSz, InstSz) DataSzInst; +typedef TLog#(DataSzInst) LgDataSzInst; +typedef Bit#(LgDataSzInst) DataInstOffset; + +// These types show up in many places so they are defined here +typedef enum {Swap, Add, Xor, And, Or, Min, Max, Minu, Maxu, None} AmoFunc deriving(Bits, Eq, FShow, Bounded); +typedef enum { Ld, St, Lr, Sc, Amo, Fence } MemFunc deriving(Bits, Eq, FShow); +typedef struct { + AmoFunc func; + Bool doubleWord; + Bool aq; + Bool rl; +} AmoInst deriving(Bits, Eq, FShow); +typedef struct { + MemFunc mem_func; // Ld, St, Lr, Sc, Amo + AmoFunc amo_func; + Bool unsignedLd; + ByteEn byteEn; // takes place of double word + Bool aq; + Bool rl; +} MemInst deriving(Bits, Eq, FShow); + +`ifdef BSIM +function Action doAssert(Bool b, String s) = action if(!b) $fdisplay(stderr, "\n%m: ASSERT FAIL!!"); dynamicAssert(b, s); endaction; +`else +function Action doAssert(Bool b, String s) = dynamicAssert(b, s); +`endif diff --git a/src_Core/RISCY_OOO/procs/lib/VerificationPacket.bsv b/src_Core/RISCY_OOO/procs/lib/VerificationPacket.bsv new file mode 100644 index 0000000..92a3b13 --- /dev/null +++ b/src_Core/RISCY_OOO/procs/lib/VerificationPacket.bsv @@ -0,0 +1,66 @@ + +// Copyright (c) 2017 Massachusetts Institute of Technology +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + + +// Copyright (C) 2015 Massachusetts Institute of Technology + +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: + +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +`include "ProcConfig.bsv" + +/* +Exception: + T, csr_epc, new pc, new csr_status, new csr_cause + +*/ + +typedef struct { + Bit#(64) skipped_packets; + Bit#(64) pc; + Bit#(64) addr; + Bit#(64) data1; + Bit#(64) data2; + Bit#(32) instruction; + Bit#(64) fpdata; + Bit#(7) dst; + Bool trap; + Bit#(8) trap_type; +} VerificationPacket deriving (Bits); diff --git a/src_Testbench/Fabrics/AXI4/AXI4_Fabric.bsv b/src_Testbench/Fabrics/AXI4/AXI4_Fabric.bsv new file mode 100644 index 0000000..27f7b14 --- /dev/null +++ b/src_Testbench/Fabrics/AXI4/AXI4_Fabric.bsv @@ -0,0 +1,339 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +package AXI4_Fabric; + +// ================================================================ +// This package defines a fabric connecting CPUs, Memories and DMAs +// and other IP blocks. + +// ================================================================ +// Bluespec library imports + +import Vector :: *; +import FIFOF :: *; +import SpecialFIFOs :: *; +import ConfigReg :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; + +// ================================================================ +// Project imports + +import Semi_FIFOF :: *; +import AXI4_Types :: *; + +// ================================================================ +// The interface for the fabric module + +interface AXI4_Fabric_IFC #(numeric type num_masters, + numeric type num_slaves, + numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + method Action set_verbosity (Bit #(4) verbosity); + + // From masters + interface Vector #(num_masters, AXI4_Slave_IFC #(wd_id, wd_addr, wd_data, wd_user)) v_from_masters; + + // To slaves + interface Vector #(num_slaves, AXI4_Master_IFC #(wd_id, wd_addr, wd_data, wd_user)) v_to_slaves; +endinterface + +// ================================================================ +// The Fabric module +// The function parameter is an address-decode function, which returns +// returns (True, slave-port-num) if address is mapped to slave-port-num +// (False, ?) if address is unmapped to any port + +module mkAXI4_Fabric #(function Tuple2 #(Bool, Bit #(TLog #(num_slaves))) + fn_addr_to_slave_num (Bit #(wd_addr) addr)) + (AXI4_Fabric_IFC #(num_masters, num_slaves, wd_id, wd_addr, wd_data, wd_user)) + + provisos (Log #(num_masters, log_nm), + Log #(num_slaves, log_ns), + Log #(TAdd #(num_masters, 1), log_nm_plus_1), + Log #(TAdd #(num_slaves, 1), log_ns_plus_1), + Add #(_dummy, TLog #(num_slaves), log_ns_plus_1)); + + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (0); + + Reg #(Bool) rg_reset <- mkReg (True); + + // Transactors facing masters + Vector #(num_masters, AXI4_Slave_Xactor_IFC #(wd_id, wd_addr, wd_data, wd_user)) + xactors_from_masters <- replicateM (mkAXI4_Slave_Xactor); + + // Transactors facing slaves + Vector #(num_slaves, AXI4_Master_Xactor_IFC #(wd_id, wd_addr, wd_data, wd_user)) + xactors_to_slaves <- replicateM (mkAXI4_Master_Xactor); + + // FIFOs to keep track of which master originated a transaction, in + // order to route corresponding responses back to that master. + // Legal masters are 0..(num_masters-1) + // The value of 'num_masters' is used for decode errors (no such slave) + + Vector #(num_masters, FIFOF #(Bit #(log_ns_plus_1))) v_f_wr_sjs <- replicateM (mkSizedFIFOF (8)); + Vector #(num_masters, FIFOF #(Bit #(wd_id))) v_f_wr_err_id <- replicateM (mkSizedFIFOF (8)); + Vector #(num_masters, FIFOF #(Bit #(wd_user))) v_f_wr_err_user <- replicateM (mkSizedFIFOF (8)); + Vector #(num_slaves, FIFOF #(Bit #(log_nm_plus_1))) v_f_wr_mis <- replicateM (mkSizedFIFOF (8)); + + Vector #(num_masters, FIFOF #(Bit #(log_ns_plus_1))) v_f_rd_sjs <- replicateM (mkSizedFIFOF (8)); + Vector #(num_masters, FIFOF #(Bit #(wd_id))) v_f_rd_err_id <- replicateM (mkSizedFIFOF (8)); + Vector #(num_masters, FIFOF #(Bit #(wd_user))) v_f_rd_err_user <- replicateM (mkSizedFIFOF (8)); + Vector #(num_slaves, FIFOF #(Bit #(log_nm_plus_1))) v_f_rd_mis <- replicateM (mkSizedFIFOF (8)); + + // ---------------------------------------------------------------- + // BEHAVIOR + + rule rl_reset (rg_reset); + $display ("%0d: AXI4_Fabric.rl_reset", cur_cycle); + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) begin + xactors_from_masters [mi].reset; + + v_f_wr_sjs [mi].clear; + v_f_wr_err_id [mi].clear; + v_f_wr_err_user [mi].clear; + + v_f_rd_sjs [mi].clear; + v_f_rd_err_id [mi].clear; + v_f_rd_err_user [mi].clear; + end + + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) begin + xactors_to_slaves [sj].reset; + v_f_wr_mis [sj].clear; + v_f_rd_mis [sj].clear; + end + rg_reset <= False; + endrule + + // ---------------------------------------------------------------- + // Help functions for moving data from masters to slaves + + Integer num_slaves_i = valueOf (num_slaves); + + function Bool wr_move_from_mi_to_sj (Integer mi, Integer sj); + let addr = xactors_from_masters [mi].o_wr_addr.first.awaddr; + match { .legal, .slave_num } = fn_addr_to_slave_num (addr); + return (legal + && ( (num_slaves_i == 1) + || (slave_num == fromInteger (sj)))); + endfunction + + function Bool wr_illegal_sj (Integer mi); + let addr = xactors_from_masters [mi].o_wr_addr.first.awaddr; + match { .legal, ._ } = fn_addr_to_slave_num (addr); + return (! legal); + endfunction + + function Bool rd_move_from_mi_to_sj (Integer mi, Integer sj); + let addr = xactors_from_masters [mi].o_rd_addr.first.araddr; + match { .legal, .slave_num } = fn_addr_to_slave_num (addr); + return (legal + && ( (num_slaves_i == 1) + || (slave_num == fromInteger (sj)))); + endfunction + + function Bool rd_illegal_sj (Integer mi); + let addr = xactors_from_masters [mi].o_rd_addr.first.araddr; + match { .legal, ._ } = fn_addr_to_slave_num (addr); + return (! legal); + endfunction + + // ---------------- + // Wr requests from masters to slaves + + // Legal destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_wr_xaction_master_to_slave (wr_move_from_mi_to_sj (mi, sj)); + AXI4_Wr_Addr #(wd_id, wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_wr_addr); + AXI4_Wr_Data #(wd_id, wd_data, wd_user) d <- pop_o (xactors_from_masters [mi].o_wr_data); + + xactors_to_slaves [sj].i_wr_addr.enq (a); + xactors_to_slaves [sj].i_wr_data.enq (d); + + v_f_wr_mis [sj].enq (fromInteger (mi)); + v_f_wr_sjs [mi].enq (fromInteger (sj)); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: wr master [%0d] -> slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (a)); + $display (" ", fshow (d)); + end + endrule + + // Non-existent destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + rule rl_wr_xaction_no_such_slave (wr_illegal_sj (mi)); + AXI4_Wr_Addr #(wd_id, wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_wr_addr); + AXI4_Wr_Data #(wd_id, wd_data, wd_user) d <- pop_o (xactors_from_masters [mi].o_wr_data); + + v_f_wr_sjs [mi].enq (fromInteger (valueOf (num_slaves))); + v_f_wr_err_id [mi].enq (a.awid); + v_f_wr_err_user [mi].enq (a.awuser); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: wr master [%0d] -> illegal addr", cur_cycle, mi); + $display (" ", fshow (a)); + end + endrule + + // ---------------- + // Rd requests from masters to slaves + + // Legal destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_rd_xaction_master_to_slave (rd_move_from_mi_to_sj (mi, sj)); + AXI4_Rd_Addr #(wd_id, wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_rd_addr); + + xactors_to_slaves [sj].i_rd_addr.enq (a); + + v_f_rd_mis [sj].enq (fromInteger (mi)); + v_f_rd_sjs [mi].enq (fromInteger (sj)); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: rd master [%0d] -> slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (a)); + end + endrule + + // Non-existent destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + rule rl_rd_xaction_no_such_slave (rd_illegal_sj (mi)); + AXI4_Rd_Addr #(wd_id, wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_rd_addr); + + v_f_rd_sjs [mi].enq (fromInteger (valueOf (num_slaves))); + v_f_rd_err_id [mi].enq (a.arid); + v_f_rd_err_user [mi].enq (a.aruser); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: rd master [%0d] -> illegal addr", cur_cycle, mi); + $display (" ", fshow (a)); + end + endrule + + // ---------------- + // Wr responses from slaves to masters + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_wr_resp_slave_to_master ( (v_f_wr_mis [sj].first == fromInteger (mi)) + && (v_f_wr_sjs [mi].first == fromInteger (sj))); + v_f_wr_mis [sj].deq; + v_f_wr_sjs [mi].deq; + AXI4_Wr_Resp #(wd_id, wd_user) b <- pop_o (xactors_to_slaves [sj].o_wr_resp); + + xactors_from_masters [mi].i_wr_resp.enq (b); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: wr master [%0d] <- slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (b)); + end + endrule + + // ---------------- + // Wr error responses to masters + // v_f_wr_sjs [mi].first has value num_slaves (illegal value) + // v_f_wr_err_id [mi].first contains the request's 'id' data + // v_f_wr_err_user [mi].first contains the request's 'user' data + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + + rule rl_wr_resp_err_to_master (v_f_wr_sjs [mi].first == fromInteger (valueOf (num_slaves))); + v_f_wr_sjs [mi].deq; + v_f_wr_err_id [mi].deq; + v_f_wr_err_user [mi].deq; + + let b = AXI4_Wr_Resp {bid: v_f_wr_err_id [mi].first, + bresp: axi4_resp_decerr, + buser: v_f_wr_err_user [mi].first}; + + xactors_from_masters [mi].i_wr_resp.enq (b); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: wr master [%0d] <- error", cur_cycle, mi); + $display (" ", fshow (b)); + end + endrule + + // ---------------- + // Rd responses from slaves to masters + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_rd_resp_slave_to_master ( (v_f_rd_mis [sj].first == fromInteger (mi)) + && (v_f_rd_sjs [mi].first == fromInteger (sj))); + v_f_rd_mis [sj].deq; + v_f_rd_sjs [mi].deq; + AXI4_Rd_Data #(wd_id, wd_data, wd_user) r <- pop_o (xactors_to_slaves [sj].o_rd_data); + + xactors_from_masters [mi].i_rd_data.enq (r); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: rd master [%0d] <- slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (r)); + end + endrule + + // ---------------- + // Rd error responses to masters + // v_f_rd_sjs [mi].first has value num_slaves (illegal value) + // v_f_rd_err_id [mi].first contains the request's 'id' data + // v_f_rd_err_user [mi].first contains the request's 'user' data + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + + rule rl_rd_resp_err_to_master (v_f_rd_sjs [mi].first == fromInteger (valueOf (num_slaves))); + v_f_rd_sjs [mi].deq; + v_f_rd_err_id [mi].deq; + v_f_rd_err_user [mi].deq; + + Bit #(wd_data) data = 0; + let r = AXI4_Rd_Data {rid: v_f_rd_err_id [mi].first, + rdata: data, + rresp: axi4_resp_decerr, + rlast: True, + ruser: v_f_rd_err_user [mi].first}; + + xactors_from_masters [mi].i_rd_data.enq (r); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Fabric: rd master [%0d] <- error", cur_cycle, mi); + $display (" ", fshow (r)); + end + endrule + + // ---------------------------------------------------------------- + // INTERFACE + + function AXI4_Slave_IFC #(wd_id, wd_addr, wd_data, wd_user) f1 (Integer j) + = xactors_from_masters [j].axi_side; + function AXI4_Master_IFC #(wd_id, wd_addr, wd_data, wd_user) f2 (Integer j) + = xactors_to_slaves [j].axi_side; + + method Action reset () if (! rg_reset); + rg_reset <= True; + endmethod + + method Action set_verbosity (Bit #(4) verbosity); + cfg_verbosity <= verbosity; + endmethod + + interface v_from_masters = genWith (f1); + interface v_to_slaves = genWith (f2); +endmodule + +// ================================================================ + +endpackage: AXI4_Fabric diff --git a/src_Testbench/Fabrics/AXI4/AXI4_Types.bsv b/src_Testbench/Fabrics/AXI4/AXI4_Types.bsv new file mode 100644 index 0000000..bbd08cf --- /dev/null +++ b/src_Testbench/Fabrics/AXI4/AXI4_Types.bsv @@ -0,0 +1,1384 @@ +// Copyright (c) 2019 Bluespec, Inc. All Rights Reserved + +package AXI4_Types; + +// ================================================================ +// Facilities for ARM AXI4, consisting of 5 independent channels: +// Write Address, Write Data, Write Response, Read Address and Read Data + +// Ref: ARM document: +// AMBA AXI and ACE Protocol Specification +// AXI3, AXI4, and AXI4-Lite +// ACE and ACE-Lite +// ARM IHI 0022E (ID022613) +// Issue E, 22 Feb 2013 + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import Connectable :: *; + +// ---------------- +// BSV additional libs + +import Semi_FIFOF :: *; +import EdgeFIFOFs :: *; + +// **************************************************************** +// **************************************************************** +// Section: RTL-level interfaces +// **************************************************************** +// **************************************************************** + +// ================================================================ +// Fixed-width AXI4 buses + +typedef Bit #(8) AXI4_Len; + +// AxSIZE +typedef Bit #(3) AXI4_Size; + +AXI4_Size axsize_1 = 3'b_000; +AXI4_Size axsize_2 = 3'b_001; +AXI4_Size axsize_4 = 3'b_010; +AXI4_Size axsize_8 = 3'b_011; +AXI4_Size axsize_16 = 3'b_100; +AXI4_Size axsize_32 = 3'b_101; +AXI4_Size axsize_64 = 3'b_110; +AXI4_Size axsize_128 = 3'b_111; + +// AxBURST +typedef Bit #(2) AXI4_Burst; + +AXI4_Burst axburst_fixed = 2'b_00; +AXI4_Burst axburst_incr = 2'b_01; +AXI4_Burst axburst_wrap = 2'b_10; + +// AxLOCK +typedef Bit #(1) AXI4_Lock; + +AXI4_Lock axlock_normal = 1'b_0; +AXI4_Lock axlock_exclusive = 1'b_1; + +// ARCACHE +typedef Bit #(4) AXI4_Cache; + +AXI4_Cache arcache_dev_nonbuf = 'b_0000; +AXI4_Cache arcache_dev_buf = 'b_0001; + +AXI4_Cache arcache_norm_noncache_nonbuf = 'b_0010; +AXI4_Cache arcache_norm_noncache_buf = 'b_0011; + +AXI4_Cache arcache_wthru_no_alloc = 'b_1010; +AXI4_Cache arcache_wthru_r_alloc = 'b_1110; +AXI4_Cache arcache_wthru_w_alloc = 'b_1010; +AXI4_Cache arcache_wthru_r_w_alloc = 'b_1110; + +AXI4_Cache arcache_wback_no_alloc = 'b_1011; +AXI4_Cache arcache_wback_r_alloc = 'b_1111; +AXI4_Cache arcache_wback_w_alloc = 'b_1011; +AXI4_Cache arcache_wback_r_w_alloc = 'b_1111; + +// AWCACHE +AXI4_Cache awcache_dev_nonbuf = 'b_0000; +AXI4_Cache awcache_dev_buf = 'b_0001; + +AXI4_Cache awcache_norm_noncache_nonbuf = 'b_0010; +AXI4_Cache awcache_norm_noncache_buf = 'b_0011; + +AXI4_Cache awcache_wthru_no_alloc = 'b_0110; +AXI4_Cache awcache_wthru_r_alloc = 'b_0110; +AXI4_Cache awcache_wthru_w_alloc = 'b_1110; +AXI4_Cache awcache_wthru_r_w_alloc = 'b_1110; + +AXI4_Cache awcache_wback_no_alloc = 'b_0111; +AXI4_Cache awcache_wback_r_alloc = 'b_0111; +AXI4_Cache awcache_wback_w_alloc = 'b_1111; +AXI4_Cache awcache_wback_r_w_alloc = 'b_1111; + +// PROT +typedef Bit #(3) AXI4_Prot; + +Bit #(1) axprot_0_unpriv = 0; Bit #(1) axprot_0_priv = 1; +Bit #(1) axprot_1_secure = 0; Bit #(1) axprot_1_non_secure = 1; +Bit #(1) axprot_2_data = 0; Bit #(1) axprot_2_instr = 1; + +// QoS +typedef Bit #(4) AXI4_QoS; + +// REGION +typedef Bit #(4) AXI4_Region; + +// RESP +typedef Bit #(2) AXI4_Resp; + +AXI4_Resp axi4_resp_okay = 2'b_00; +AXI4_Resp axi4_resp_exokay = 2'b_01; +AXI4_Resp axi4_resp_slverr = 2'b_10; +AXI4_Resp axi4_resp_decerr = 2'b_11; + +// ================================================================ +// These are the signal-level interfaces for an AXI4 master. +// The (*..*) attributes ensure that when bsc compiles this to Verilog, +// we get exactly the signals specified in the ARM spec. + +interface AXI4_Master_IFC #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + // ---------------- + // Wr Addr channel + (* always_ready, result="awvalid" *) method Bool m_awvalid; // out + + (* always_ready, result="awid" *) method Bit #(wd_id) m_awid; // out + (* always_ready, result="awaddr" *) method Bit #(wd_addr) m_awaddr; // out + (* always_ready, result="awlen" *) method Bit #(8) m_awlen; // out + (* always_ready, result="awsize" *) method AXI4_Size m_awsize; // out + (* always_ready, result="awburst" *) method Bit #(2) m_awburst; // out + (* always_ready, result="awlock" *) method Bit #(1) m_awlock; // out + (* always_ready, result="awcache" *) method Bit #(4) m_awcache; // out + (* always_ready, result="awprot" *) method Bit #(3) m_awprot; // out + (* always_ready, result="awqos" *) method Bit #(4) m_awqos; // out + (* always_ready, result="awregion" *) method Bit #(4) m_awregion; // out + (* always_ready, result="awuser" *) method Bit #(wd_user) m_awuser; // out + + (* always_ready, always_enabled, prefix="" *) + method Action m_awready ((* port="awready" *) Bool awready); // in + + // ---------------- + // Wr Data channel + (* always_ready, result="wvalid" *) method Bool m_wvalid; // out + + (* always_ready, result="wid" *) method Bit #(wd_id) m_wid; // out + (* always_ready, result="wdata" *) method Bit #(wd_data) m_wdata; // out + (* always_ready, result="wstrb" *) method Bit #(TDiv #(wd_data, 8)) m_wstrb; // out + (* always_ready, result="wlast" *) method Bool m_wlast; // out + (* always_ready, result="wuser" *) method Bit #(wd_user) m_wuser; // out + + (* always_ready, always_enabled, prefix = "" *) + method Action m_wready ((* port="wready" *) Bool wready); // in + + // ---------------- + // Wr Response channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_bvalid ((* port="bvalid" *) Bool bvalid, // in + (* port="bid" *) Bit #(wd_id) bid, // in + (* port="bresp" *) Bit #(2) bresp, // in + (* port="buser" *) Bit #(wd_user) buser); // in + + (* always_ready, prefix = "", result="bready" *) + method Bool m_bready; // out + + // ---------------- + // Rd Addr channel + (* always_ready, result="arvalid" *) method Bool m_arvalid; // out + + (* always_ready, result="arid" *) method Bit #(wd_id) m_arid; // out + (* always_ready, result="araddr" *) method Bit #(wd_addr) m_araddr; // out + (* always_ready, result="arlen" *) method Bit #(8) m_arlen; // out + (* always_ready, result="arsize" *) method AXI4_Size m_arsize; // out + (* always_ready, result="arburst" *) method Bit #(2) m_arburst; // out + (* always_ready, result="arlock" *) method Bit #(1) m_arlock; // out + (* always_ready, result="arcache" *) method Bit #(4) m_arcache; // out + (* always_ready, result="arprot" *) method Bit #(3) m_arprot; // out + (* always_ready, result="arqos" *) method Bit #(4) m_arqos; // out + (* always_ready, result="arregion" *) method Bit #(4) m_arregion; // out + (* always_ready, result="aruser" *) method Bit #(wd_user) m_aruser; // out + + (* always_ready, always_enabled, prefix="" *) + method Action m_arready ((* port="arready" *) Bool arready); // in + + // ---------------- + // Rd Data channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_rvalid ((* port="rvalid" *) Bool rvalid, // in + (* port="rid" *) Bit #(wd_id) rid, // in + (* port="rdata" *) Bit #(wd_data) rdata, // in + (* port="rresp" *) Bit #(2) rresp, // in + (* port="rlast" *) Bool rlast, // in + (* port="ruser" *) Bit #(wd_user) ruser); // in + + (* always_ready, result="rready" *) + method Bool m_rready; // out +endinterface: AXI4_Master_IFC + +// ================================================================ +// These are the signal-level interfaces for an AXI4-Lite slave. +// The (*..*) attributes ensure that when bsc compiles this to Verilog, +// we get exactly the signals specified in the ARM spec. + +interface AXI4_Slave_IFC #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + // Wr Addr channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_awvalid ((* port="awvalid" *) Bool awvalid, // in + (* port="awid" *) Bit #(wd_id) awid, // in + (* port="awaddr" *) Bit #(wd_addr) awaddr, // in + (* port="awlen" *) Bit #(8) awlen, // in + (* port="awsize" *) AXI4_Size awsize, // in + (* port="awburst" *) Bit #(2) awburst, // in + (* port="awlock" *) Bit #(1) awlock, // in + (* port="awcache" *) Bit #(4) awcache, // in + (* port="awprot" *) Bit #(3) awprot, // in + (* port="awqos" *) Bit #(4) awqos, // in + (* port="awregion" *) Bit #(4) awregion, // in + (* port="awuser" *) Bit #(wd_user) awuser); // in + (* always_ready, result="awready" *) + method Bool m_awready; // out + + // Wr Data channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_wvalid ((* port="wvalid" *) Bool wvalid, // in + (* port="wid" *) Bit #(wd_id) wid, // in + (* port="wdata" *) Bit #(wd_data) wdata, // in + (* port="wstrb" *) Bit #(TDiv #(wd_data,8)) wstrb, // in + (* port="wlast" *) Bool wlast, // in + (* port="wuser" *) Bit #(wd_user) wuser); // in + (* always_ready, result="wready" *) + method Bool m_wready; // out + + // Wr Response channel + (* always_ready, result="bvalid" *) method Bool m_bvalid; // out + (* always_ready, result="bid" *) method Bit #(wd_id) m_bid; // out + (* always_ready, result="bresp" *) method Bit #(2) m_bresp; // out + (* always_ready, result="buser" *) method Bit #(wd_user) m_buser; // out + (* always_ready, always_enabled, prefix="" *) + method Action m_bready ((* port="bready" *) Bool bready); // in + + // Rd Addr channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_arvalid ((* port="arvalid" *) Bool arvalid, // in + (* port="arid" *) Bit #(wd_id) arid, // in + (* port="araddr" *) Bit #(wd_addr) araddr, // in + (* port="arlen" *) Bit #(8) arlen, // in + (* port="arsize" *) AXI4_Size arsize, // in + (* port="arburst" *) Bit #(2) arburst, // in + (* port="arlock" *) Bit #(1) arlock, // in + (* port="arcache" *) Bit #(4) arcache, // in + (* port="arprot" *) Bit #(3) arprot, // in + (* port="arqos" *) Bit #(4) arqos, // in + (* port="arregion" *) Bit #(4) arregion, // in + (* port="aruser" *) Bit #(wd_user) aruser); // in + (* always_ready, result="arready" *) + method Bool m_arready; // out + + // Rd Data channel + (* always_ready, result="rvalid" *) method Bool m_rvalid; // out + (* always_ready, result="rid" *) method Bit #(wd_id) m_rid; // out + (* always_ready, result="rdata" *) method Bit #(wd_data) m_rdata; // out + (* always_ready, result="rresp" *) method Bit #(2) m_rresp; // out + (* always_ready, result="rlast" *) method Bool m_rlast; // out + (* always_ready, result="ruser" *) method Bit #(wd_user) m_ruser; // out + (* always_ready, always_enabled, prefix="" *) + method Action m_rready ((* port="rready" *) Bool rready); // in +endinterface: AXI4_Slave_IFC + +// ================================================================ +// Connecting signal-level interfaces + +instance Connectable #(AXI4_Master_IFC #(wd_id, wd_addr, wd_data, wd_user), + AXI4_Slave_IFC #(wd_id, wd_addr, wd_data, wd_user)); + + module mkConnection #(AXI4_Master_IFC #(wd_id, wd_addr, wd_data, wd_user) axim, + AXI4_Slave_IFC #(wd_id, wd_addr, wd_data, wd_user) axis) + (Empty); + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_wr_addr_channel; + axis.m_awvalid (axim.m_awvalid, + axim.m_awid, + axim.m_awaddr, + axim.m_awlen, + axim.m_awsize, + axim.m_awburst, + axim.m_awlock, + axim.m_awcache, + axim.m_awprot, + axim.m_awqos, + axim.m_awregion, + axim.m_awuser); + axim.m_awready (axis.m_awready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_wr_data_channel; + axis.m_wvalid (axim.m_wvalid, + axim.m_wid, + axim.m_wdata, + axim.m_wstrb, + axim.m_wlast, + axim.m_wuser); + axim.m_wready (axis.m_wready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_wr_response_channel; + axim.m_bvalid (axis.m_bvalid, + axis.m_bid, + axis.m_bresp, + axis.m_buser); + axis.m_bready (axim.m_bready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_rd_addr_channel; + axis.m_arvalid (axim.m_arvalid, + axim.m_arid, + axim.m_araddr, + axim.m_arlen, + axim.m_arsize, + axim.m_arburst, + axim.m_arlock, + axim.m_arcache, + axim.m_arprot, + axim.m_arqos, + axim.m_arregion, + axim.m_aruser); + axim.m_arready (axis.m_arready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_rd_data_channel; + axim.m_rvalid (axis.m_rvalid, + axis.m_rid, + axis.m_rdata, + axis.m_rresp, + axis.m_rlast, + axis.m_ruser); + axis.m_rready (axim.m_rready); + endrule + endmodule +endinstance + +// ================================================================ +// AXI4 dummy master: never produces requests, never accepts responses + +AXI4_Master_IFC #(wd_id, wd_addr, wd_data, wd_user) + dummy_AXI4_Master_ifc = interface AXI4_Master_IFC + // Wr Addr channel + method Bool m_awvalid = False; // out + method Bit #(wd_id) m_awid = ?; // out + method Bit #(wd_addr) m_awaddr = ?; // out + method Bit #(8) m_awlen = ?; // out + method AXI4_Size m_awsize = ?; // out + method Bit #(2) m_awburst = ?; // out + method Bit #(1) m_awlock = ?; // out + method Bit #(4) m_awcache = ?; // out + method Bit #(3) m_awprot = ?; // out + method Bit #(4) m_awqos = ?; // out + method Bit #(4) m_awregion = ?; // out + method Bit #(wd_user) m_awuser = ?; // out + method Action m_awready (Bool awready) = noAction; // in + + // Wr Data channel + method Bool m_wvalid = False; // out + method Bit #(wd_id) m_wid = ?; // out + method Bit #(wd_data) m_wdata = ?; // out + method Bit #(TDiv #(wd_data, 8)) m_wstrb = ?; // out + method Bool m_wlast = ?; // out + method Bit #(wd_user) m_wuser = ?; // out + + method Action m_wready (Bool wready) = noAction; // in + + // Wr Response channel + method Action m_bvalid (Bool bvalid, // in + Bit #(wd_id) bid, // in + Bit #(2) bresp, // in + Bit #(wd_user) buser); // in + noAction; + endmethod + method Bool m_bready = False; // out + + // Rd Addr channel + method Bool m_arvalid = False; // out + method Bit #(wd_id) m_arid = ?; // out + method Bit #(wd_addr) m_araddr = ?; // out + method Bit #(8) m_arlen = ?; // out + method AXI4_Size m_arsize = ?; // out + method Bit #(2) m_arburst = ?; // out + method Bit #(1) m_arlock = ?; // out + method Bit #(4) m_arcache = ?; // out + method Bit #(3) m_arprot = ?; // out + method Bit #(4) m_arqos = ?; // out + method Bit #(4) m_arregion = ?; // out + method Bit #(wd_user) m_aruser = ?; // out + method Action m_arready (Bool arready) = noAction; // in + + // Rd Data channel + method Action m_rvalid (Bool rvalid, // in + Bit #(wd_id) rid, // in + Bit #(wd_data) rdata, // in + Bit #(2) rresp, // in + Bool rlast, // in + Bit #(wd_user) ruser); // in + noAction; + endmethod + method Bool m_rready = False; // out + endinterface; + +// ================================================================ +// AXI4 dummy slave: never accepts requests, never produces responses + +AXI4_Slave_IFC #(wd_id, wd_addr, wd_data, wd_user) + dummy_AXI4_Slave_ifc = interface AXI4_Slave_IFC + // Wr Addr channel + method Action m_awvalid (Bool awvalid, + Bit #(wd_id) awid, + Bit #(wd_addr) awaddr, + Bit #(8) awlen, + AXI4_Size awsize, + Bit #(2) awburst, + Bit #(1) awlock, + Bit #(4) awcache, + Bit #(3) awprot, + Bit #(4) awqos, + Bit #(4) awregion, + Bit #(wd_user) awuser); + noAction; + endmethod + + method Bool m_awready; + return False; + endmethod + + // Wr Data channel + method Action m_wvalid (Bool wvalid, + Bit #(wd_id) wid, + Bit #(wd_data) wdata, + Bit #(TDiv #(wd_data, 8)) wstrb, + Bool wlast, + Bit #(wd_user) wuser); + noAction; + endmethod + + method Bool m_wready; + return False; + endmethod + + // Wr Response channel + method Bool m_bvalid; + return False; + endmethod + + method Bit #(wd_id) m_bid; + return ?; + endmethod + + method Bit #(2) m_bresp; + return 0; + endmethod + + method Bit #(wd_user) m_buser; + return ?; + endmethod + + method Action m_bready (Bool bready); + noAction; + endmethod + + // Rd Addr channel + method Action m_arvalid (Bool arvalid, + Bit #(wd_id) arid, + Bit #(wd_addr) araddr, + Bit #(8) arlen, + AXI4_Size arsize, + Bit #(2) arburst, + Bit #(1) arlock, + Bit #(4) arcache, + Bit #(3) arprot, + Bit #(4) arqos, + Bit #(4) arregion, + Bit #(wd_user) aruser); + noAction; + endmethod + + method Bool m_arready; + return False; + endmethod + + // Rd Data channel + method Bool m_rvalid; + return False; + endmethod + + method Bit #(wd_id) m_rid; + return 0; + endmethod + + method Bit #(wd_data) m_rdata; + return 0; + endmethod + + method Bit #(2) m_rresp; + return 0; + endmethod + + method Bool m_rlast; + return True; + endmethod + + method Bit #(wd_user) m_ruser; + return ?; + endmethod + + method Action m_rready (Bool rready); + noAction; + endmethod + endinterface; + +// **************************************************************** +// **************************************************************** +// Section: Higher-level FIFO-like interfaces and transactors +// **************************************************************** +// **************************************************************** + +// ================================================================ +// Help function: fn_crg_and_rg_to_FIFOF_I +// In the modules below, we use a crg_full and a rg_data to represent a fifo. +// These functions convert these to FIFOF_I and FIFOF_O interfaces. + +function FIFOF_I #(t) fn_crg_and_rg_to_FIFOF_I (Reg #(Bool) rg_full, Reg #(t) rg_data); + return interface FIFOF_I; + method Action enq (t x) if (! rg_full); + rg_full <= True; + rg_data <= x; + endmethod + method Bool notFull; + return (! rg_full); + endmethod + endinterface; +endfunction + +function FIFOF_O #(t) fn_crg_and_rg_to_FIFOF_O (Reg #(Bool) rg_full, Reg #(t) rg_data); + return interface FIFOF_O; + method t first () if (rg_full); + return rg_data; + endmethod + method Action deq () if (rg_full); + rg_full <= False; + endmethod + method notEmpty; + return rg_full; + endmethod + endinterface; +endfunction + +// ================================================================ +// Higher-level types for payloads (rather than just bits) + +// Write Address channel + +typedef struct { + Bit #(wd_id) awid; + Bit #(wd_addr) awaddr; + Bit #(8) awlen; + AXI4_Size awsize; + Bit #(2) awburst; + Bit #(1) awlock; + Bit #(4) awcache; + Bit #(3) awprot; + Bit #(4) awqos; + Bit #(4) awregion; + Bit #(wd_user) awuser; + } AXI4_Wr_Addr #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_user) +deriving (Bits, FShow); + +// Write Data channel + +typedef struct { + Bit #(wd_id) wid; + Bit #(wd_data) wdata; + Bit #(TDiv #(wd_data, 8)) wstrb; + Bool wlast; + Bit #(wd_user) wuser; + } AXI4_Wr_Data #(numeric type wd_id, + numeric type wd_data, + numeric type wd_user) +deriving (Bits, FShow); + +// Write Response channel + +typedef struct { + Bit #(wd_id) bid; + Bit #(2) bresp; + Bit #(wd_user) buser; + } AXI4_Wr_Resp #(numeric type wd_id, + numeric type wd_user) +deriving (Bits, FShow); + +// Read Address channel + +typedef struct { + Bit #(wd_id) arid; + Bit #(wd_addr) araddr; + Bit #(8) arlen; + AXI4_Size arsize; + Bit #(2) arburst; + Bit #(1) arlock; + Bit #(4) arcache; + Bit #(3) arprot; + Bit #(4) arqos; + Bit #(4) arregion; + Bit #(wd_user) aruser; + } AXI4_Rd_Addr #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_user) +deriving (Bits, FShow); + +// Read Data channel + +typedef struct { + Bit #(wd_id) rid; + Bit #(wd_data) rdata; + Bit #(2) rresp; + Bool rlast; + Bit #(wd_user) ruser; + } AXI4_Rd_Data #(numeric type wd_id, + numeric type wd_data, + numeric type wd_user) +deriving (Bits, FShow); + +// ================================================================ +// AXI4 buffer + +// ---------------- +// Server-side interface accepts requests and yields responses + +interface AXI4_Server_IFC #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + + interface FIFOF_I #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) i_wr_addr; + interface FIFOF_I #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) i_wr_data; + interface FIFOF_O #(AXI4_Wr_Resp #(wd_id, wd_user)) o_wr_resp; + + interface FIFOF_I #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) i_rd_addr; + interface FIFOF_O #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) o_rd_data; +endinterface + +// ---------------- +// Client-side interface yields requests and accepts responses + +interface AXI4_Client_IFC #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + + interface FIFOF_O #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) o_wr_addr; + interface FIFOF_O #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) o_wr_data; + interface FIFOF_I #(AXI4_Wr_Resp #(wd_id, wd_user)) i_wr_resp; + + interface FIFOF_O #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) o_rd_addr; + interface FIFOF_I #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) i_rd_data; +endinterface + +// ---------------- +// A Buffer has a server-side and a client-side, and a reset + +interface AXI4_Buffer_IFC #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + interface AXI4_Server_IFC #(wd_id, wd_addr, wd_data, wd_user) server_side; + interface AXI4_Client_IFC #(wd_id, wd_addr, wd_data, wd_user) client_side; +endinterface + +// ---------------------------------------------------------------- + +module mkAXI4_Buffer (AXI4_Buffer_IFC #(wd_id, wd_addr, wd_data, wd_user)); + + FIFOF #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) f_wr_addr <- mkFIFOF; + FIFOF #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) f_wr_data <- mkFIFOF; + FIFOF #(AXI4_Wr_Resp #(wd_id, wd_user)) f_wr_resp <- mkFIFOF; + + FIFOF #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) f_rd_addr <- mkFIFOF; + FIFOF #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) f_rd_data <- mkFIFOF; + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + interface AXI4_Server_IFC server_side; + interface i_wr_addr = to_FIFOF_I (f_wr_addr); + interface i_wr_data = to_FIFOF_I (f_wr_data); + interface o_wr_resp = to_FIFOF_O (f_wr_resp); + + interface i_rd_addr = to_FIFOF_I (f_rd_addr); + interface o_rd_data = to_FIFOF_O (f_rd_data); + endinterface + + interface AXI4_Client_IFC client_side; + interface o_wr_addr = to_FIFOF_O (f_wr_addr); + interface o_wr_data = to_FIFOF_O (f_wr_data); + interface i_wr_resp = to_FIFOF_I (f_wr_resp); + + interface o_rd_addr = to_FIFOF_O (f_rd_addr); + interface i_rd_data = to_FIFOF_I (f_rd_data); + endinterface +endmodule + +module mkAXI4_Buffer_2 (AXI4_Buffer_IFC #(wd_id, wd_addr, wd_data, wd_user)); + + FIFOF #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) f_wr_addr <- mkMaster_EdgeFIFOF; + FIFOF #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) f_wr_data <- mkMaster_EdgeFIFOF; + FIFOF #(AXI4_Wr_Resp #(wd_id, wd_user)) f_wr_resp <- mkSlave_EdgeFIFOF; + + FIFOF #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) f_rd_addr <- mkMaster_EdgeFIFOF; + FIFOF #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) f_rd_data <- mkSlave_EdgeFIFOF; + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + interface AXI4_Server_IFC server_side; + interface i_wr_addr = to_FIFOF_I (f_wr_addr); + interface i_wr_data = to_FIFOF_I (f_wr_data); + interface o_wr_resp = to_FIFOF_O (f_wr_resp); + + interface i_rd_addr = to_FIFOF_I (f_rd_addr); + interface o_rd_data = to_FIFOF_O (f_rd_data); + endinterface + + interface AXI4_Client_IFC client_side; + interface o_wr_addr = to_FIFOF_O (f_wr_addr); + interface o_wr_data = to_FIFOF_O (f_wr_data); + interface i_wr_resp = to_FIFOF_I (f_wr_resp); + + interface o_rd_addr = to_FIFOF_O (f_rd_addr); + interface i_rd_data = to_FIFOF_I (f_rd_data); + endinterface +endmodule + +// ================================================================ +// Master transactor interface + +interface AXI4_Master_Xactor_IFC #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + + // AXI side + interface AXI4_Master_IFC #(wd_id, wd_addr, wd_data, wd_user) axi_side; + + // FIFOF side + interface FIFOF_I #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) i_wr_addr; + interface FIFOF_I #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) i_wr_data; + interface FIFOF_O #(AXI4_Wr_Resp #(wd_id, wd_user)) o_wr_resp; + + interface FIFOF_I #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) i_rd_addr; + interface FIFOF_O #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) o_rd_data; +endinterface: AXI4_Master_Xactor_IFC + +// ---------------------------------------------------------------- +// Master transactor +// This version uses FIFOFs for total decoupling. + +module mkAXI4_Master_Xactor (AXI4_Master_Xactor_IFC #(wd_id, wd_addr, wd_data, wd_user)); + + Bool unguarded = True; + Bool guarded = False; + + // These FIFOs are guarded on BSV side, unguarded on AXI side + FIFOF #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) f_wr_addr <- mkGFIFOF (guarded, unguarded); + FIFOF #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) f_wr_data <- mkGFIFOF (guarded, unguarded); + FIFOF #(AXI4_Wr_Resp #(wd_id, wd_user)) f_wr_resp <- mkGFIFOF (unguarded, guarded); + + FIFOF #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) f_rd_addr <- mkGFIFOF (guarded, unguarded); + FIFOF #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) f_rd_data <- mkGFIFOF (unguarded, guarded); + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + // AXI side + interface axi_side = interface AXI4_Master_IFC; + // Wr Addr channel + method Bool m_awvalid = f_wr_addr.notEmpty; + method Bit #(wd_id) m_awid = f_wr_addr.first.awid; + method Bit #(wd_addr) m_awaddr = f_wr_addr.first.awaddr; + method Bit #(8) m_awlen = f_wr_addr.first.awlen; + method AXI4_Size m_awsize = f_wr_addr.first.awsize; + method Bit #(2) m_awburst = f_wr_addr.first.awburst; + method Bit #(1) m_awlock = f_wr_addr.first.awlock; + method Bit #(4) m_awcache = f_wr_addr.first.awcache; + method Bit #(3) m_awprot = f_wr_addr.first.awprot; + method Bit #(4) m_awqos = f_wr_addr.first.awqos; + method Bit #(4) m_awregion = f_wr_addr.first.awregion; + method Bit #(wd_user) m_awuser = f_wr_addr.first.awuser; + method Action m_awready (Bool awready); + if (f_wr_addr.notEmpty && awready) f_wr_addr.deq; + endmethod + + // Wr Data channel + method Bool m_wvalid = f_wr_data.notEmpty; + method Bit #(wd_id) m_wid = f_wr_data.first.wid; + method Bit #(wd_data) m_wdata = f_wr_data.first.wdata; + method Bit #(TDiv #(wd_data, 8)) m_wstrb = f_wr_data.first.wstrb; + method Bool m_wlast = f_wr_data.first.wlast; + method Bit #(wd_user) m_wuser = f_wr_data.first.wuser; + method Action m_wready (Bool wready); + if (f_wr_data.notEmpty && wready) f_wr_data.deq; + endmethod + + // Wr Response channel + method Action m_bvalid (Bool bvalid, + Bit #(wd_id) bid, + Bit #(2) bresp, + Bit #(wd_user) buser); + if (bvalid && f_wr_resp.notFull) + f_wr_resp.enq (AXI4_Wr_Resp {bid: bid, + bresp: bresp, + buser: buser}); + endmethod + + method Bool m_bready; + return f_wr_resp.notFull; + endmethod + + // Rd Addr channel + method Bool m_arvalid = f_rd_addr.notEmpty; + method Bit #(wd_id) m_arid = f_rd_addr.first.arid; + method Bit #(wd_addr) m_araddr = f_rd_addr.first.araddr; + method Bit #(8) m_arlen = f_rd_addr.first.arlen; + method AXI4_Size m_arsize = f_rd_addr.first.arsize; + method Bit #(2) m_arburst = f_rd_addr.first.arburst; + method Bit #(1) m_arlock = f_rd_addr.first.arlock; + method Bit #(4) m_arcache = f_rd_addr.first.arcache; + method Bit #(3) m_arprot = f_rd_addr.first.arprot; + method Bit #(4) m_arqos = f_rd_addr.first.arqos; + method Bit #(4) m_arregion = f_rd_addr.first.arregion; + method Bit #(wd_user) m_aruser = f_rd_addr.first.aruser; + + method Action m_arready (Bool arready); + if (f_rd_addr.notEmpty && arready) f_rd_addr.deq; + endmethod + + // Rd Data channel + method Action m_rvalid (Bool rvalid, // in + Bit #(wd_id) rid, // in + Bit #(wd_data) rdata, // in + Bit #(2) rresp, // in + Bool rlast, // in + Bit #(wd_user) ruser); // in + if (rvalid && f_rd_data.notFull) + f_rd_data.enq (AXI4_Rd_Data {rid: rid, + rdata: rdata, + rresp: rresp, + rlast: rlast, + ruser: ruser}); + endmethod + + method Bool m_rready; + return f_rd_data.notFull; + endmethod + + endinterface; + + // FIFOF side + interface i_wr_addr = to_FIFOF_I (f_wr_addr); + interface i_wr_data = to_FIFOF_I (f_wr_data); + interface o_wr_resp = to_FIFOF_O (f_wr_resp); + + interface i_rd_addr = to_FIFOF_I (f_rd_addr); + interface o_rd_data = to_FIFOF_O (f_rd_data); +endmodule: mkAXI4_Master_Xactor + +// ---------------------------------------------------------------- +// Master transactor +// This version uses crgs and regs instead of FIFOFs. +// This uses 1/2 the resources, but introduces scheduling dependencies. + +module mkAXI4_Master_Xactor_2 (AXI4_Master_Xactor_IFC #(wd_id, wd_addr, wd_data, wd_user)); + + // Each crg_full, rg_data pair below represents a 1-element fifo. + + Array #(Reg #(Bool)) crg_wr_addr_full <- mkCReg (3, False); + Reg #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) rg_wr_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_data_full <- mkCReg (3, False); + Reg #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) rg_wr_data <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_resp_full <- mkCReg (3, False); + Reg #(AXI4_Wr_Resp #(wd_id, wd_user)) rg_wr_resp <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_addr_full <- mkCReg (3, False); + Reg #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) rg_rd_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_data_full <- mkCReg (3, False); + Reg #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) rg_rd_data <- mkRegU; + + // The following CReg port indexes specify the relative scheduling of: + // {first,deq,notEmpty} {enq,notFull} clear + + // TODO: 'deq/enq/clear = 1/2/0' is unusual, but eliminates a + // scheduling cycle in Piccolo's DCache. Normally should be 0/1/2. + + Integer port_deq = 1; + Integer port_enq = 2; + Integer port_clear = 0; + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + crg_wr_addr_full [port_clear] <= False; + crg_wr_data_full [port_clear] <= False; + crg_wr_resp_full [port_clear] <= False; + crg_rd_addr_full [port_clear] <= False; + crg_rd_data_full [port_clear] <= False; + endmethod + + // AXI side + interface axi_side = interface AXI4_Master_IFC; + // Wr Addr channel + method Bool m_awvalid = crg_wr_addr_full [port_deq]; + method Bit #(wd_id) m_awid = rg_wr_addr.awid; + method Bit #(wd_addr) m_awaddr = rg_wr_addr.awaddr; + method Bit #(8) m_awlen = rg_wr_addr.awlen; + method AXI4_Size m_awsize = rg_wr_addr.awsize; + method Bit #(2) m_awburst = rg_wr_addr.awburst; + method Bit #(1) m_awlock = rg_wr_addr.awlock; + method Bit #(4) m_awcache = rg_wr_addr.awcache; + method Bit #(3) m_awprot = rg_wr_addr.awprot; + method Bit #(4) m_awqos = rg_wr_addr.awqos; + method Bit #(4) m_awregion = rg_wr_addr.awregion; + method Bit #(wd_user) m_awuser = rg_wr_addr.awuser; + method Action m_awready (Bool awready); + if (crg_wr_addr_full [port_deq] && awready) + crg_wr_addr_full [port_deq] <= False; // deq + endmethod + + // Wr Data channel + method Bool m_wvalid = crg_wr_data_full [port_deq]; + method Bit #(wd_id) m_wid = rg_wr_data.wid; + method Bit #(wd_data) m_wdata = rg_wr_data.wdata; + method Bit #(TDiv #(wd_data, 8)) m_wstrb = rg_wr_data.wstrb; + method Bool m_wlast = rg_wr_data.wlast; + method Bit #(wd_user) m_wuser = rg_wr_data.wuser; + method Action m_wready (Bool wready); + if (crg_wr_data_full [port_deq] && wready) + crg_wr_data_full [port_deq] <= False; + endmethod + + // Wr Response channel + method Action m_bvalid (Bool bvalid, + Bit #(wd_id) bid, + Bit #(2) bresp, + Bit #(wd_user) buser); + if (bvalid && (! (crg_wr_resp_full [port_enq]))) begin + crg_wr_resp_full [port_enq] <= True; + rg_wr_resp <= AXI4_Wr_Resp {bid: bid, + bresp: bresp, + buser: buser}; + end + endmethod + + method Bool m_bready; + return (! (crg_wr_resp_full [port_enq])); + endmethod + + // Rd Addr channel + method Bool m_arvalid = crg_rd_addr_full [port_deq]; + method Bit #(wd_id) m_arid = rg_rd_addr.arid; + method Bit #(wd_addr) m_araddr = rg_rd_addr.araddr; + method Bit #(8) m_arlen = rg_rd_addr.arlen; + method AXI4_Size m_arsize = rg_rd_addr.arsize; + method Bit #(2) m_arburst = rg_rd_addr.arburst; + method Bit #(1) m_arlock = rg_rd_addr.arlock; + method Bit #(4) m_arcache = rg_rd_addr.arcache; + method Bit #(3) m_arprot = rg_rd_addr.arprot; + method Bit #(4) m_arqos = rg_rd_addr.arqos; + method Bit #(4) m_arregion = rg_rd_addr.arregion; + method Bit #(wd_user) m_aruser = rg_rd_addr.aruser; + method Action m_arready (Bool arready); + if (crg_rd_addr_full [port_deq] && arready) + crg_rd_addr_full [port_deq] <= False; // deq + endmethod + + // Rd Data channel + method Action m_rvalid (Bool rvalid, + Bit #(wd_id) rid, + Bit #(wd_data) rdata, + Bit #(2) rresp, + Bool rlast, + Bit #(wd_user) ruser); + if (rvalid && (! (crg_rd_data_full [port_enq]))) + crg_rd_data_full [port_enq] <= True; + rg_rd_data <= (AXI4_Rd_Data {rid: rid, + rdata: rdata, + rresp: rresp, + rlast: rlast, + ruser: ruser}); + endmethod + + method Bool m_rready; + return (! (crg_rd_data_full [port_enq])); + endmethod + + endinterface; + + // FIFOF side + interface i_wr_addr = fn_crg_and_rg_to_FIFOF_I (crg_wr_addr_full [port_enq], rg_wr_addr); + interface i_wr_data = fn_crg_and_rg_to_FIFOF_I (crg_wr_data_full [port_enq], rg_wr_data); + interface o_wr_resp = fn_crg_and_rg_to_FIFOF_O (crg_wr_resp_full [port_deq], rg_wr_resp); + + interface i_rd_addr = fn_crg_and_rg_to_FIFOF_I (crg_rd_addr_full [port_enq], rg_rd_addr); + interface o_rd_data = fn_crg_and_rg_to_FIFOF_O (crg_rd_data_full [port_deq], rg_rd_data); +endmodule: mkAXI4_Master_Xactor_2 + +// ================================================================ +// Slave transactor interface + +interface AXI4_Slave_Xactor_IFC #(numeric type wd_id, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + + // AXI side + interface AXI4_Slave_IFC #(wd_id, wd_addr, wd_data, wd_user) axi_side; + + // FIFOF side + interface FIFOF_O #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) o_wr_addr; + interface FIFOF_O #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) o_wr_data; + interface FIFOF_I #(AXI4_Wr_Resp #(wd_id, wd_user)) i_wr_resp; + + interface FIFOF_O #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) o_rd_addr; + interface FIFOF_I #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) i_rd_data; +endinterface: AXI4_Slave_Xactor_IFC + +// ---------------------------------------------------------------- +// Slave transactor +// This version uses FIFOFs for total decoupling. + +module mkAXI4_Slave_Xactor (AXI4_Slave_Xactor_IFC #(wd_id, wd_addr, wd_data, wd_user)); + + Bool unguarded = True; + Bool guarded = False; + + // These FIFOs are guarded on BSV side, unguarded on AXI side + FIFOF #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) f_wr_addr <- mkGFIFOF (unguarded, guarded); + FIFOF #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) f_wr_data <- mkGFIFOF (unguarded, guarded); + FIFOF #(AXI4_Wr_Resp #(wd_id, wd_user)) f_wr_resp <- mkGFIFOF (guarded, unguarded); + + FIFOF #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) f_rd_addr <- mkGFIFOF (unguarded, guarded); + FIFOF #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) f_rd_data <- mkGFIFOF (guarded, unguarded); + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + // AXI side + interface axi_side = interface AXI4_Slave_IFC; + // Wr Addr channel + method Action m_awvalid (Bool awvalid, + Bit #(wd_id) awid, + Bit #(wd_addr) awaddr, + Bit #(8) awlen, + AXI4_Size awsize, + Bit #(2) awburst, + Bit #(1) awlock, + Bit #(4) awcache, + Bit #(3) awprot, + Bit #(4) awqos, + Bit #(4) awregion, + Bit #(wd_user) awuser); + if (awvalid && f_wr_addr.notFull) + f_wr_addr.enq (AXI4_Wr_Addr {awid: awid, + awaddr: awaddr, + awlen: awlen, + awsize: awsize, + awburst: awburst, + awlock: awlock, + awcache: awcache, + awprot: awprot, + awqos: awqos, + awregion: awregion, + awuser: awuser}); + endmethod + + method Bool m_awready; + return f_wr_addr.notFull; + endmethod + + // Wr Data channel + method Action m_wvalid (Bool wvalid, + Bit #(wd_id) wid, + Bit #(wd_data) wdata, + Bit #(TDiv #(wd_data, 8)) wstrb, + Bool wlast, + Bit #(wd_user) wuser); + if (wvalid && f_wr_data.notFull) + f_wr_data.enq (AXI4_Wr_Data {wid: wid, + wdata: wdata, + wstrb: wstrb, + wlast: wlast, + wuser: wuser}); + endmethod + + method Bool m_wready; + return f_wr_data.notFull; + endmethod + + // Wr Response channel + method Bool m_bvalid = f_wr_resp.notEmpty; + method Bit #(wd_id) m_bid = f_wr_resp.first.bid; + method Bit #(2) m_bresp = f_wr_resp.first.bresp; + method Bit #(wd_user) m_buser = f_wr_resp.first.buser; + method Action m_bready (Bool bready); + if (bready && f_wr_resp.notEmpty) + f_wr_resp.deq; + endmethod + + // Rd Addr channel + method Action m_arvalid (Bool arvalid, + Bit #(wd_id) arid, + Bit #(wd_addr) araddr, + Bit #(8) arlen, + AXI4_Size arsize, + Bit #(2) arburst, + Bit #(1) arlock, + Bit #(4) arcache, + Bit #(3) arprot, + Bit #(4) arqos, + Bit #(4) arregion, + Bit #(wd_user) aruser); + if (arvalid && f_rd_addr.notFull) + f_rd_addr.enq (AXI4_Rd_Addr {arid: arid, + araddr: araddr, + arlen: arlen, + arsize: arsize, + arburst: arburst, + arlock: arlock, + arcache: arcache, + arprot: arprot, + arqos: arqos, + arregion: arregion, + aruser: aruser}); + endmethod + + method Bool m_arready; + return f_rd_addr.notFull; + endmethod + + // Rd Data channel + method Bool m_rvalid = f_rd_data.notEmpty; + method Bit #(wd_id) m_rid = f_rd_data.first.rid; + method Bit #(wd_data) m_rdata = f_rd_data.first.rdata; + method Bit #(2) m_rresp = f_rd_data.first.rresp; + method Bool m_rlast = f_rd_data.first.rlast; + method Bit #(wd_user) m_ruser = f_rd_data.first.ruser; + method Action m_rready (Bool rready); + if (rready && f_rd_data.notEmpty) + f_rd_data.deq; + endmethod + endinterface; + + // FIFOF side + interface o_wr_addr = to_FIFOF_O (f_wr_addr); + interface o_wr_data = to_FIFOF_O (f_wr_data); + interface i_wr_resp = to_FIFOF_I (f_wr_resp); + + interface o_rd_addr = to_FIFOF_O (f_rd_addr); + interface i_rd_data = to_FIFOF_I (f_rd_data); +endmodule: mkAXI4_Slave_Xactor + +// ---------------------------------------------------------------- +// Slave transactor +// This version uses crgs and regs instead of FIFOFs. +// This uses 1/2 the resources, but introduces scheduling dependencies. + +module mkAXI4_Slave_Xactor_2 (AXI4_Slave_Xactor_IFC #(wd_id, wd_addr, wd_data, wd_user)); + + // Each crg_full, rg_data pair below represents a 1-element fifo. + + // These FIFOs are guarded on BSV side, unguarded on AXI side + Array #(Reg #(Bool)) crg_wr_addr_full <- mkCReg (3, False); + Reg #(AXI4_Wr_Addr #(wd_id, wd_addr, wd_user)) rg_wr_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_data_full <- mkCReg (3, False); + Reg #(AXI4_Wr_Data #(wd_id, wd_data, wd_user)) rg_wr_data <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_resp_full <- mkCReg (3, False); + Reg #(AXI4_Wr_Resp #(wd_id, wd_user)) rg_wr_resp <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_addr_full <- mkCReg (3, False); + Reg #(AXI4_Rd_Addr #(wd_id, wd_addr, wd_user)) rg_rd_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_data_full <- mkCReg (3, False); + Reg #(AXI4_Rd_Data #(wd_id, wd_data, wd_user)) rg_rd_data <- mkRegU; + + // The following CReg port indexes specify the relative scheduling of: + // {first,deq,notEmpty} {enq,notFull} clear + Integer port_deq = 0; + Integer port_enq = 1; + Integer port_clear = 2; + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + crg_wr_addr_full [port_clear] <= False; + crg_wr_data_full [port_clear] <= False; + crg_wr_resp_full [port_clear] <= False; + crg_rd_addr_full [port_clear] <= False; + crg_rd_data_full [port_clear] <= False; + endmethod + + // AXI side + interface axi_side = interface AXI4_Slave_IFC; + // Wr Addr channel + method Action m_awvalid (Bool awvalid, + Bit #(wd_id) awid, + Bit #(wd_addr) awaddr, + Bit #(8) awlen, + AXI4_Size awsize, + Bit #(2) awburst, + Bit #(1) awlock, + Bit #(4) awcache, + Bit #(3) awprot, + Bit #(4) awqos, + Bit #(4) awregion, + Bit #(wd_user) awuser); + + if (awvalid && (! crg_wr_addr_full [port_enq])) begin + crg_wr_addr_full [port_enq] <= True; // enq + rg_wr_addr <= AXI4_Wr_Addr {awid: awid, + awaddr: awaddr, + awlen: awlen, + awsize: awsize, + awburst: awburst, + awlock: awlock, + awcache: awcache, + awprot: awprot, + awqos: awqos, + awregion: awregion, + awuser: awuser}; + end + endmethod + + method Bool m_awready; + return (! crg_wr_addr_full [port_enq]); + endmethod + + // Wr Data channel + method Action m_wvalid (Bool wvalid, + Bit #(wd_id) wid, + Bit #(wd_data) wdata, + Bit #(TDiv #(wd_data, 8)) wstrb, + Bool wlast, + Bit #(wd_user) wuser); + if (wvalid && (! crg_wr_data_full [port_enq])) begin + crg_wr_data_full [port_enq] <= True; // enq + rg_wr_data <= AXI4_Wr_Data {wid: wid, + wdata: wdata, + wstrb: wstrb, + wlast: wlast, + wuser: wuser}; + end + endmethod + + method Bool m_wready; + return (! crg_wr_data_full [port_enq]); + endmethod + + // Wr Response channel + method Bool m_bvalid = crg_wr_resp_full [port_deq]; + method Bit #(wd_id) m_bid = rg_wr_resp.bid; + method Bit #(2) m_bresp = rg_wr_resp.bresp; + method Bit #(wd_user) m_buser = rg_wr_resp.buser; + method Action m_bready (Bool bready); + if (bready && crg_wr_resp_full [port_deq]) + crg_wr_resp_full [port_deq] <= False; // deq + endmethod + + // Rd Addr channel + method Action m_arvalid (Bool arvalid, + Bit #(wd_id) arid, + Bit #(wd_addr) araddr, + Bit #(8) arlen, + AXI4_Size arsize, + Bit #(2) arburst, + Bit #(1) arlock, + Bit #(4) arcache, + Bit #(3) arprot, + Bit #(4) arqos, + Bit #(4) arregion, + Bit #(wd_user) aruser); + if (arvalid && (! crg_rd_addr_full [port_enq])) begin + crg_rd_addr_full [port_enq] <= True; // enq + rg_rd_addr <= AXI4_Rd_Addr {arid: arid, + araddr: araddr, + arlen: arlen, + arsize: arsize, + arburst: arburst, + arlock: arlock, + arcache: arcache, + arprot: arprot, + arqos: arqos, + arregion: arregion, + aruser: aruser}; + end + endmethod + + method Bool m_arready; + return (! crg_rd_addr_full [port_enq]); + endmethod + + // Rd Data channel + method Bool m_rvalid = crg_rd_data_full [port_deq]; + method Bit #(wd_id) m_rid = rg_rd_data.rid; + method Bit #(wd_data) m_rdata = rg_rd_data.rdata; + method Bit #(2) m_rresp = rg_rd_data.rresp; + method Bool m_rlast = rg_rd_data.rlast; + method Bit #(wd_user) m_ruser = rg_rd_data.ruser; + method Action m_rready (Bool rready); + if (rready && crg_rd_data_full [port_deq]) + crg_rd_data_full [port_deq] <= False; // deq + endmethod + endinterface; + + // FIFOF side + interface o_wr_addr = fn_crg_and_rg_to_FIFOF_O (crg_wr_addr_full [port_deq], rg_wr_addr); + interface o_wr_data = fn_crg_and_rg_to_FIFOF_O (crg_wr_data_full [port_deq], rg_wr_data); + interface i_wr_resp = fn_crg_and_rg_to_FIFOF_I (crg_wr_resp_full [port_enq], rg_wr_resp); + + interface o_rd_addr = fn_crg_and_rg_to_FIFOF_O (crg_rd_addr_full [port_deq], rg_rd_addr); + interface i_rd_data = fn_crg_and_rg_to_FIFOF_I (crg_rd_data_full [port_enq], rg_rd_data); +endmodule: mkAXI4_Slave_Xactor_2 + +// ================================================================ + +endpackage diff --git a/src_Testbench/Fabrics/AXI4_Lite/AXI4_Lite_Fabric.bsv b/src_Testbench/Fabrics/AXI4_Lite/AXI4_Lite_Fabric.bsv new file mode 100644 index 0000000..13384be --- /dev/null +++ b/src_Testbench/Fabrics/AXI4_Lite/AXI4_Lite_Fabric.bsv @@ -0,0 +1,322 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +package AXI4_Lite_Fabric; + +// ================================================================ +// This package defines a fabric connecting CPUs, Memories and DMAs +// and other IP blocks. + +// ================================================================ +// Bluespec library imports + +import Vector :: *; +import FIFOF :: *; +import SpecialFIFOs :: *; +import ConfigReg :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; + +// ================================================================ +// Project imports + +import Semi_FIFOF :: *; +import AXI4_Lite_Types :: *; + +// ================================================================ +// The interface for the fabric module + +interface AXI4_Lite_Fabric_IFC #(numeric type num_masters, + numeric type num_slaves, + numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + method Action set_verbosity (Bit #(4) verbosity); + + // From masters + interface Vector #(num_masters, AXI4_Lite_Slave_IFC #(wd_addr, wd_data, wd_user)) v_from_masters; + + // To slaves + interface Vector #(num_slaves, AXI4_Lite_Master_IFC #(wd_addr, wd_data, wd_user)) v_to_slaves; +endinterface + +// ================================================================ +// The Fabric module +// The function parameter is an address-decode function, which returns +// returns (True, slave-port-num) if address is mapped to slave-port-num +// (False, ?) if address is unmapped to any port + +module mkAXI4_Lite_Fabric #(function Tuple2 #(Bool, Bit #(TLog #(num_slaves))) + fn_addr_to_slave_num (Bit #(wd_addr) addr)) + (AXI4_Lite_Fabric_IFC #(num_masters, num_slaves, wd_addr, wd_data, wd_user)) + + provisos (Log #(num_masters, log_nm), + Log #(num_slaves, log_ns), + Log #(TAdd #(num_masters, 1), log_nm_plus_1), + Log #(TAdd #(num_slaves, 1), log_ns_plus_1), + Add #(_dummy, TLog #(num_slaves), log_ns_plus_1)); + + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (0); + + Reg #(Bool) rg_reset <- mkReg (True); + + // Transactors facing masters + Vector #(num_masters, AXI4_Lite_Slave_Xactor_IFC #(wd_addr, wd_data, wd_user)) + xactors_from_masters <- replicateM (mkAXI4_Lite_Slave_Xactor); + + // Transactors facing slaves + Vector #(num_slaves, AXI4_Lite_Master_Xactor_IFC #(wd_addr, wd_data, wd_user)) + xactors_to_slaves <- replicateM (mkAXI4_Lite_Master_Xactor); + + // FIFOs to keep track of which master originated a transaction, in + // order to route corresponding responses back to that master. + // Legal masters are 0..(num_masters-1) + // The value of 'num_masters' is used for decode errors (no such slave) + + Vector #(num_masters, FIFOF #(Bit #(log_ns_plus_1))) v_f_wr_sjs <- replicateM (mkSizedFIFOF (8)); + Vector #(num_masters, FIFOF #(Bit #(wd_user))) v_f_wr_err_user <- replicateM (mkSizedFIFOF (8)); + Vector #(num_slaves, FIFOF #(Bit #(log_nm_plus_1))) v_f_wr_mis <- replicateM (mkSizedFIFOF (8)); + + Vector #(num_masters, FIFOF #(Bit #(log_ns_plus_1))) v_f_rd_sjs <- replicateM (mkSizedFIFOF (8)); + Vector #(num_masters, FIFOF #(Bit #(wd_user))) v_f_rd_err_user <- replicateM (mkSizedFIFOF (8)); + Vector #(num_slaves, FIFOF #(Bit #(log_nm_plus_1))) v_f_rd_mis <- replicateM (mkSizedFIFOF (8)); + + // ---------------------------------------------------------------- + // BEHAVIOR + + rule rl_reset (rg_reset); + $display ("%0d: AXI4_Lite_Fabric.rl_reset", cur_cycle); + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) begin + xactors_from_masters [mi].reset; + + v_f_wr_sjs [mi].clear; + v_f_wr_err_user [mi].clear; + + v_f_rd_sjs [mi].clear; + v_f_rd_err_user [mi].clear; + end + + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) begin + xactors_to_slaves [sj].reset; + v_f_wr_mis [sj].clear; + v_f_rd_mis [sj].clear; + end + rg_reset <= False; + endrule + + // ---------------------------------------------------------------- + // Help functions for moving data from masters to slaves + + Integer num_slaves_i = valueOf (num_slaves); + + function Bool wr_move_from_mi_to_sj (Integer mi, Integer sj); + let addr = xactors_from_masters [mi].o_wr_addr.first.awaddr; + match { .legal, .slave_num } = fn_addr_to_slave_num (addr); + return (legal + && ( (num_slaves_i == 1) + || (slave_num == fromInteger (sj)))); + endfunction + + function Bool wr_illegal_sj (Integer mi); + let addr = xactors_from_masters [mi].o_wr_addr.first.awaddr; + match { .legal, ._ } = fn_addr_to_slave_num (addr); + return (! legal); + endfunction + + function Bool rd_move_from_mi_to_sj (Integer mi, Integer sj); + let addr = xactors_from_masters [mi].o_rd_addr.first.araddr; + match { .legal, .slave_num } = fn_addr_to_slave_num (addr); + return (legal + && ( (num_slaves_i == 1) + || (slave_num == fromInteger (sj)))); + endfunction + + function Bool rd_illegal_sj (Integer mi); + let addr = xactors_from_masters [mi].o_rd_addr.first.araddr; + match { .legal, ._ } = fn_addr_to_slave_num (addr); + return (! legal); + endfunction + + // ---------------- + // Wr requests from masters to slaves + + // Legal destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_wr_xaction_master_to_slave (wr_move_from_mi_to_sj (mi, sj)); + AXI4_Lite_Wr_Addr #(wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_wr_addr); + AXI4_Lite_Wr_Data #(wd_data) d <- pop_o (xactors_from_masters [mi].o_wr_data); + + xactors_to_slaves [sj].i_wr_addr.enq (a); + xactors_to_slaves [sj].i_wr_data.enq (d); + + v_f_wr_mis [sj].enq (fromInteger (mi)); + v_f_wr_sjs [mi].enq (fromInteger (sj)); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: wr master [%0d] -> slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (a)); + $display (" ", fshow (d)); + end + endrule + + // Non-existent destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + rule rl_wr_xaction_no_such_slave (wr_illegal_sj (mi)); + AXI4_Lite_Wr_Addr #(wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_wr_addr); + AXI4_Lite_Wr_Data #(wd_data) d <- pop_o (xactors_from_masters [mi].o_wr_data); + + v_f_wr_sjs [mi].enq (fromInteger (valueOf (num_slaves))); + v_f_wr_err_user [mi].enq (a.awuser); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: wr master [%0d] -> illegal addr", cur_cycle, mi); + $display (" ", fshow (a)); + end + endrule + + // ---------------- + // Rd requests from masters to slaves + + // Legal destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_rd_xaction_master_to_slave (rd_move_from_mi_to_sj (mi, sj)); + AXI4_Lite_Rd_Addr #(wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_rd_addr); + + xactors_to_slaves [sj].i_rd_addr.enq (a); + + v_f_rd_mis [sj].enq (fromInteger (mi)); + v_f_rd_sjs [mi].enq (fromInteger (sj)); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: rd master [%0d] -> slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (a)); + end + endrule + + // Non-existent destination slaves + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + rule rl_rd_xaction_no_such_slave (rd_illegal_sj (mi)); + AXI4_Lite_Rd_Addr #(wd_addr, wd_user) a <- pop_o (xactors_from_masters [mi].o_rd_addr); + + v_f_rd_sjs [mi].enq (fromInteger (valueOf (num_slaves))); + v_f_rd_err_user [mi].enq (a.aruser); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: rd master [%0d] -> illegal addr", cur_cycle, mi); + $display (" ", fshow (a)); + end + endrule + + // ---------------- + // Wr responses from slaves to masters + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_wr_resp_slave_to_master ( (v_f_wr_mis [sj].first == fromInteger (mi)) + && (v_f_wr_sjs [mi].first == fromInteger (sj))); + v_f_wr_mis [sj].deq; + v_f_wr_sjs [mi].deq; + AXI4_Lite_Wr_Resp #(wd_user) b <- pop_o (xactors_to_slaves [sj].o_wr_resp); + + xactors_from_masters [mi].i_wr_resp.enq (b); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: wr master [%0d] <- slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (b)); + end + endrule + + // ---------------- + // Wr error responses to masters + // v_f_wr_sjs [mi].first has value num_slaves (illegal value) + // v_f_wr_err_user [mi].first contains the request's 'user' data + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + + rule rl_wr_resp_err_to_master (v_f_wr_sjs [mi].first == fromInteger (valueOf (num_slaves))); + v_f_wr_sjs [mi].deq; + v_f_wr_err_user [mi].deq; + + let b = AXI4_Lite_Wr_Resp {bresp: AXI4_LITE_DECERR, buser: v_f_wr_err_user [mi].first}; + + xactors_from_masters [mi].i_wr_resp.enq (b); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: wr master [%0d] <- error", cur_cycle, mi); + $display (" ", fshow (b)); + end + endrule + + // ---------------- + // Rd responses from slaves to masters + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + for (Integer sj = 0; sj < valueOf (num_slaves); sj = sj + 1) + + rule rl_rd_resp_slave_to_master ( (v_f_rd_mis [sj].first == fromInteger (mi)) + && (v_f_rd_sjs [mi].first == fromInteger (sj))); + v_f_rd_mis [sj].deq; + v_f_rd_sjs [mi].deq; + AXI4_Lite_Rd_Data #(wd_data, wd_user) r <- pop_o (xactors_to_slaves [sj].o_rd_data); + + xactors_from_masters [mi].i_rd_data.enq (r); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: rd master [%0d] <- slave [%0d]", cur_cycle, mi, sj); + $display (" ", fshow (r)); + end + endrule + + // ---------------- + // Rd error responses to masters + // v_f_rd_sjs [mi].first has value num_slaves (illegal value) + // v_f_rd_err_user [mi].first contains the request's 'user' data + + for (Integer mi = 0; mi < valueOf (num_masters); mi = mi + 1) + + rule rl_rd_resp_err_to_master (v_f_rd_sjs [mi].first == fromInteger (valueOf (num_slaves))); + v_f_rd_sjs [mi].deq; + v_f_rd_err_user [mi].deq; + + Bit #(wd_data) data = 0; + let r = AXI4_Lite_Rd_Data {rresp: AXI4_LITE_DECERR, ruser: v_f_rd_err_user [mi].first, rdata: data}; + + xactors_from_masters [mi].i_rd_data.enq (r); + + if (cfg_verbosity > 1) begin + $display ("%0d: AXI4_Lite_Fabric: rd master [%0d] <- error", cur_cycle, mi); + $display (" ", fshow (r)); + end + endrule + + // ---------------------------------------------------------------- + // INTERFACE + + function AXI4_Lite_Slave_IFC #(wd_addr, wd_data, wd_user) f1 (Integer j) + = xactors_from_masters [j].axi_side; + function AXI4_Lite_Master_IFC #(wd_addr, wd_data, wd_user) f2 (Integer j) + = xactors_to_slaves [j].axi_side; + + method Action reset () if (! rg_reset); + rg_reset <= True; + endmethod + + method Action set_verbosity (Bit #(4) verbosity); + cfg_verbosity <= verbosity; + endmethod + + interface v_from_masters = genWith (f1); + interface v_to_slaves = genWith (f2); +endmodule + +// ================================================================ + +endpackage: AXI4_Lite_Fabric diff --git a/src_Testbench/Fabrics/AXI4_Lite/AXI4_Lite_Types.bsv b/src_Testbench/Fabrics/AXI4_Lite/AXI4_Lite_Types.bsv new file mode 100644 index 0000000..1384062 --- /dev/null +++ b/src_Testbench/Fabrics/AXI4_Lite/AXI4_Lite_Types.bsv @@ -0,0 +1,1020 @@ +// Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved + +package AXI4_Lite_Types; + +// ================================================================ +// Facilities for ARM AXI4-Lite, consisting of 5 independent channels: +// Write Address, Write Data, Write Response, Read Address and Read Data + +// Ref: ARM document: +// AMBA AXI and ACE Protocol Specification +// AXI3, AXI4, and AXI4-Lite +// ACE and ACE-Lite +// ARM IHI 0022E (ID022613) +// Issue E, 22 Feb 2013 + +// See export list below + +// ================================================================ +// Exports + +export + +// RTL-level interfaces (signals/buses) +AXI4_Lite_Master_IFC (..), +AXI4_Lite_Slave_IFC (..), + +// Dummy master that generates no request and accepts no response. +// Used for tying-off unused master interfaces on fabrics. +dummy_AXI4_Lite_Master_ifc, + +// Dummy slave that accepts no request and generates no response. +// Used for tying-off unused slave interfaces on fabrics. +dummy_AXI4_Lite_Slave_ifc, + +// Higher-level enums and structs for the 5 AXI4 channel payloads +AXI4_Lite_Resp (..), + +AXI4_Lite_Wr_Addr (..), +AXI4_Lite_Wr_Data (..), +AXI4_Lite_Wr_Resp (..), +AXI4_Lite_Rd_Addr (..), +AXI4_Lite_Rd_Data (..), + +// Higher-level FIFO-like interfaces for the 5 AXI4 channels, +AXI4_Lite_Server_IFC (..), +AXI4_Lite_Client_IFC (..), +AXI4_Lite_Buffer_IFC (..), +mkAXI4_Lite_Buffer, +mkAXI4_Lite_Buffer_2, + +// Transactors from RTL-level interfacecs to FIFO-like interfaces. +AXI4_Lite_Master_Xactor_IFC (..), +mkAXI4_Lite_Master_Xactor, // Using standard mkGFIFOFs +mkAXI4_Lite_Master_Xactor_2, // Using cregs/regs instead of mkGFIFOFs + +AXI4_Lite_Slave_Xactor_IFC (..), +mkAXI4_Lite_Slave_Xactor, // Using standard mkGFIFOFs +mkAXI4_Lite_Slave_Xactor_2; // Using cregs/regs instead of mkGFIFOFs + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import Connectable :: *; + +// ---------------- +// BSV additional libs + +import Semi_FIFOF :: *; +import EdgeFIFOFs :: *; + +// **************************************************************** +// **************************************************************** +// Section: RTL-level interfaces +// **************************************************************** +// **************************************************************** + +// ================================================================ +// These are the signal-level interfaces for an AXI4-Lite master. +// The (*..*) attributes ensure that when bsc compiles this to Verilog, +// we get exactly the signals specified in the ARM spec. + +interface AXI4_Lite_Master_IFC #(numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + // Wr Addr channel + (* always_ready, result="awvalid" *) method Bool m_awvalid; // out + (* always_ready, result="awaddr" *) method Bit #(wd_addr) m_awaddr; // out + (* always_ready, result="awprot" *) method Bit #(3) m_awprot; // out + (* always_ready, result="awuser" *) method Bit #(wd_user) m_awuser; // out + (* always_ready, always_enabled, prefix="" *) + method Action m_awready ((* port="awready" *) Bool awready); // in + + // Wr Data channel + (* always_ready, result="wvalid" *) method Bool m_wvalid; // out + (* always_ready, result="wdata" *) method Bit #(wd_data) m_wdata; // out + (* always_ready, result="wstrb" *) method Bit #(TDiv #(wd_data, 8)) m_wstrb; // out + (* always_ready, always_enabled, prefix = "" *) + method Action m_wready ((* port="wready" *) Bool wready); // in + + // Wr Response channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_bvalid ((* port="bvalid" *) Bool bvalid, // in + (* port="bresp" *) Bit #(2) bresp, // in + (* port="buser" *) Bit #(wd_user) buser); // in + (* always_ready, prefix = "", result="bready" *) + method Bool m_bready; // out + + // Rd Addr channel + (* always_ready, result="arvalid", prefix = "" *) + method Bool m_arvalid; // out + (* always_ready, result="araddr" *) method Bit #(wd_addr) m_araddr; // out + (* always_ready, result="arprot" *) method Bit #(3) m_arprot; // out + (* always_ready, result="aruser" *) method Bit #(wd_user) m_aruser; // out + (* always_ready, always_enabled, prefix="" *) + method Action m_arready ((* port="arready" *) Bool arready); // in + + // Rd Data channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_rvalid ((* port="rvalid" *) Bool rvalid, // in + (* port="rresp" *) Bit #(2) rresp, // in + (* port="rdata" *) Bit #(wd_data) rdata, // in + (* port="ruser" *) Bit #(wd_user) ruser); // in + (* always_ready, result="rready" *) + method Bool m_rready; // out +endinterface: AXI4_Lite_Master_IFC + +// ================================================================ +// These are the signal-level interfaces for an AXI4-Lite slave. +// The (*..*) attributes ensure that when bsc compiles this to Verilog, +// we get exactly the signals specified in the ARM spec. + +interface AXI4_Lite_Slave_IFC #(numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + // Wr Addr channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_awvalid ((* port="awvalid" *) Bool awvalid, // in + (* port="awaddr" *) Bit #(wd_addr) awaddr, // in + (* port="awprot" *) Bit #(3) awprot, // in + (* port="awuser" *) Bit #(wd_user) awuser); // in + (* always_ready, result="awready" *) + method Bool m_awready; // out + + // Wr Data channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_wvalid ((* port="wvalid" *) Bool wvalid, // in + (* port="wdata" *) Bit #(wd_data) wdata, // in + (* port="wstrb" *) Bit #(TDiv #(wd_data,8)) wstrb); // in + (* always_ready, result="wready" *) + method Bool m_wready; // out + + // Wr Response channel + (* always_ready, result="bvalid" *) method Bool m_bvalid; // out + (* always_ready, result="bresp" *) method Bit #(2) m_bresp; // out + (* always_ready, result="buser" *) method Bit #(wd_user) m_buser; // out + (* always_ready, always_enabled, prefix="" *) + method Action m_bready ((* port="bready" *) Bool bready); // in + + // Rd Addr channel + (* always_ready, always_enabled, prefix = "" *) + method Action m_arvalid ((* port="arvalid" *) Bool arvalid, // in + (* port="araddr" *) Bit #(wd_addr) araddr, // in + (* port="arprot" *) Bit #(3) arprot, // in + (* port="aruser" *) Bit #(wd_user) aruser); // in + (* always_ready, result="arready" *) + method Bool m_arready; // out + + // Rd Data channel + (* always_ready, result="rvalid" *) method Bool m_rvalid; // out + (* always_ready, result="rresp" *) method Bit #(2) m_rresp; // out + (* always_ready, result="rdata" *) method Bit #(wd_data) m_rdata; // out + (* always_ready, result="ruser" *) method Bit #(wd_user) m_ruser; // out + (* always_ready, always_enabled, prefix="" *) + method Action m_rready ((* port="rready" *) Bool rready); // in +endinterface: AXI4_Lite_Slave_IFC + +// ================================================================ +// Connecting signal-level interfaces + +instance Connectable #(AXI4_Lite_Master_IFC #(wd_addr, wd_data, wd_user), + AXI4_Lite_Slave_IFC #(wd_addr, wd_data, wd_user)); + + module mkConnection #(AXI4_Lite_Master_IFC #(wd_addr, wd_data, wd_user) axim, + AXI4_Lite_Slave_IFC #(wd_addr, wd_data, wd_user) axis) + (Empty); + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_wr_addr_channel; + axis.m_awvalid (axim.m_awvalid, axim.m_awaddr, axim.m_awprot, axim.m_awuser); + axim.m_awready (axis.m_awready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_wr_data_channel; + axis.m_wvalid (axim.m_wvalid, axim.m_wdata, axim.m_wstrb); + axim.m_wready (axis.m_wready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_wr_response_channel; + axim.m_bvalid (axis.m_bvalid, axis.m_bresp, axis.m_buser); + axis.m_bready (axim.m_bready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_rd_addr_channel; + axis.m_arvalid (axim.m_arvalid, axim.m_araddr, axim.m_arprot, axim.m_aruser); + axim.m_arready (axis.m_arready); + endrule + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_rd_data_channel; + axim.m_rvalid (axis.m_rvalid, axis.m_rresp, axis.m_rdata, axis.m_ruser); + axis.m_rready (axim.m_rready); + endrule + endmodule +endinstance + +// ================================================================ +// AXI4-Lite dummy master: never produces requests, never accepts responses + +AXI4_Lite_Master_IFC #(wd_addr, wd_data, wd_user) + dummy_AXI4_Lite_Master_ifc = interface AXI4_Lite_Master_IFC + // Wr Addr channel + method Bool m_awvalid = False; // out + method Bit #(wd_addr) m_awaddr = ?; // out + method Bit #(3) m_awprot = ?; // out + method Bit #(wd_user) m_awuser = ?; // out + method Action m_awready (Bool awready) = noAction; // in + + // Wr Data channel + method Bool m_wvalid = False; // out + method Bit #(wd_data) m_wdata = ?; // out + method Bit #(TDiv #(wd_data, 8)) m_wstrb = ?; // out + method Action m_wready (Bool wready) = noAction; // in + + // Wr Response channel + method Action m_bvalid (Bool bvalid, // in + Bit #(2) bresp, // in + Bit #(wd_user) buser); // in + noAction; + endmethod + method Bool m_bready = False; // out + + // Rd Addr channel + method Bool m_arvalid = False; // out + method Bit #(wd_addr) m_araddr = ?; // out + method Bit #(3) m_arprot = ?; // out + method Bit #(wd_user) m_aruser = ?; // out + method Action m_arready (Bool arready) = noAction; // in + + // Rd Data channel + method Action m_rvalid (Bool rvalid, // in + Bit #(2) rresp, // in + Bit #(wd_data) rdata, // in + Bit #(wd_user) ruser); // in + noAction; + endmethod + method Bool m_rready = False; // out + endinterface; + +// ================================================================ +// AXI4-Lite dummy slave: never accepts requests, never produces responses + +AXI4_Lite_Slave_IFC #(wd_addr, wd_data, wd_user) + dummy_AXI4_Lite_Slave_ifc = interface AXI4_Lite_Slave_IFC + // Wr Addr channel + method Action m_awvalid (Bool awvalid, + Bit #(wd_addr) awaddr, + Bit #(3) awprot, + Bit #(wd_user) awuser); + noAction; + endmethod + + method Bool m_awready; + return False; + endmethod + + // Wr Data channel + method Action m_wvalid (Bool wvalid, + Bit #(wd_data) wdata, + Bit #(TDiv #(wd_data,8)) wstrb); + noAction; + endmethod + + method Bool m_wready; + return False; + endmethod + + // Wr Response channel + method Bool m_bvalid; + return False; + endmethod + + method Bit #(2) m_bresp; + return 0; + endmethod + + method Bit #(wd_user) m_buser; + return ?; + endmethod + + method Action m_bready (Bool bready); + noAction; + endmethod + + // Rd Addr channel + method Action m_arvalid (Bool arvalid, + Bit #(wd_addr) araddr, + Bit #(3) arprot, + Bit #(wd_user) aruser); + noAction; + endmethod + + method Bool m_arready; + return False; + endmethod + + // Rd Data channel + method Bool m_rvalid; + return False; + endmethod + + method Bit #(2) m_rresp; + return 0; + endmethod + + method Bit #(wd_data) m_rdata; + return 0; + endmethod + + method Bit #(wd_user) m_ruser; + return ?; + endmethod + + method Action m_rready (Bool rready); + noAction; + endmethod + endinterface; + +// **************************************************************** +// **************************************************************** +// Section: Higher-level FIFO-like interfaces and transactors +// **************************************************************** +// **************************************************************** + +// ================================================================ +// Help function: fn_crg_and_rg_to_FIFOF_I +// In the modules below, we use a crg_full and a rg_data to represent a fifo. +// These functions convert these to FIFOF_I and FIFOF_O interfaces. + +function FIFOF_I #(t) fn_crg_and_rg_to_FIFOF_I (Reg #(Bool) rg_full, Reg #(t) rg_data); + return interface FIFOF_I; + method Action enq (t x) if (! rg_full); + rg_full <= True; + rg_data <= x; + endmethod + method Bool notFull; + return (! rg_full); + endmethod + endinterface; +endfunction + +function FIFOF_O #(t) fn_crg_and_rg_to_FIFOF_O (Reg #(Bool) rg_full, Reg #(t) rg_data); + return interface FIFOF_O; + method t first () if (rg_full); + return rg_data; + endmethod + method Action deq () if (rg_full); + rg_full <= False; + endmethod + method notEmpty; + return rg_full; + endmethod + endinterface; +endfunction + +// ================================================================ +// Higher-level types for payloads (rather than just bits) + +typedef enum { AXI4_LITE_OKAY, AXI4_LITE_EXOKAY, AXI4_LITE_SLVERR, AXI4_LITE_DECERR } AXI4_Lite_Resp +deriving (Bits, Eq, FShow); + +// Write Address channel + +typedef struct { + Bit #(wd_addr) awaddr; + Bit #(3) awprot; + Bit #(wd_user) awuser; + } AXI4_Lite_Wr_Addr #(numeric type wd_addr, numeric type wd_user) +deriving (Bits, FShow); + +// Write Data channel + +typedef struct { + Bit #(wd_data) wdata; + Bit #(TDiv #(wd_data, 8)) wstrb; + } AXI4_Lite_Wr_Data #(numeric type wd_data) +deriving (Bits, FShow); + +// Write Response channel + +typedef struct { + AXI4_Lite_Resp bresp; + Bit #(wd_user) buser; + } AXI4_Lite_Wr_Resp #(numeric type wd_user) +deriving (Bits, FShow); + +// Read Address channel + +typedef struct { + Bit #(wd_addr) araddr; + Bit #(3) arprot; + Bit #(wd_user) aruser; + } AXI4_Lite_Rd_Addr #(numeric type wd_addr, numeric type wd_user) +deriving (Bits, FShow); + +// Read Data channel + +typedef struct { + AXI4_Lite_Resp rresp; + Bit #(wd_data) rdata; + Bit #(wd_user) ruser; + } AXI4_Lite_Rd_Data #(numeric type wd_data, numeric type wd_user) +deriving (Bits, FShow); + +// ================================================================ +// AXI4-Lite buffer + +// ---------------- +// Server-side interface accepts requests and yields responses + +interface AXI4_Lite_Server_IFC #(numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + + interface FIFOF_I #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) i_wr_addr; + interface FIFOF_I #(AXI4_Lite_Wr_Data #(wd_data)) i_wr_data; + interface FIFOF_O #(AXI4_Lite_Wr_Resp #(wd_user)) o_wr_resp; + + interface FIFOF_I #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) i_rd_addr; + interface FIFOF_O #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) o_rd_data; +endinterface + +// ---------------- +// Client-side interface yields requests and accepts responses + +interface AXI4_Lite_Client_IFC #(numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + + interface FIFOF_O #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) o_wr_addr; + interface FIFOF_O #(AXI4_Lite_Wr_Data #(wd_data)) o_wr_data; + interface FIFOF_I #(AXI4_Lite_Wr_Resp #(wd_user)) i_wr_resp; + + interface FIFOF_O #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) o_rd_addr; + interface FIFOF_I #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) i_rd_data; +endinterface + +// ---------------- +// A Buffer has a server-side and a client-side, and a reset + +interface AXI4_Lite_Buffer_IFC #(numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + interface AXI4_Lite_Server_IFC #(wd_addr, wd_data, wd_user) server_side; + interface AXI4_Lite_Client_IFC #(wd_addr, wd_data, wd_user) client_side; +endinterface + +// ---------------------------------------------------------------- + +module mkAXI4_Lite_Buffer (AXI4_Lite_Buffer_IFC #(wd_addr, wd_data, wd_user)); + + FIFOF #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) f_wr_addr <- mkFIFOF; + FIFOF #(AXI4_Lite_Wr_Data #(wd_data)) f_wr_data <- mkFIFOF; + FIFOF #(AXI4_Lite_Wr_Resp #(wd_user)) f_wr_resp <- mkFIFOF; + + FIFOF #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) f_rd_addr <- mkFIFOF; + FIFOF #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) f_rd_data <- mkFIFOF; + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + interface AXI4_Lite_Server_IFC server_side; + interface i_wr_addr = to_FIFOF_I (f_wr_addr); + interface i_wr_data = to_FIFOF_I (f_wr_data); + interface o_wr_resp = to_FIFOF_O (f_wr_resp); + + interface i_rd_addr = to_FIFOF_I (f_rd_addr); + interface o_rd_data = to_FIFOF_O (f_rd_data); + endinterface + + interface AXI4_Lite_Client_IFC client_side; + interface o_wr_addr = to_FIFOF_O (f_wr_addr); + interface o_wr_data = to_FIFOF_O (f_wr_data); + interface i_wr_resp = to_FIFOF_I (f_wr_resp); + + interface o_rd_addr = to_FIFOF_O (f_rd_addr); + interface i_rd_data = to_FIFOF_I (f_rd_data); + endinterface +endmodule + +module mkAXI4_Lite_Buffer_2 (AXI4_Lite_Buffer_IFC #(wd_addr, wd_data, wd_user)); + + FIFOF #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) f_wr_addr <- mkMaster_EdgeFIFOF; + FIFOF #(AXI4_Lite_Wr_Data #(wd_data)) f_wr_data <- mkMaster_EdgeFIFOF; + FIFOF #(AXI4_Lite_Wr_Resp #(wd_user)) f_wr_resp <- mkSlave_EdgeFIFOF; + + FIFOF #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) f_rd_addr <- mkMaster_EdgeFIFOF; + FIFOF #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) f_rd_data <- mkSlave_EdgeFIFOF; + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + interface AXI4_Lite_Server_IFC server_side; + interface i_wr_addr = to_FIFOF_I (f_wr_addr); + interface i_wr_data = to_FIFOF_I (f_wr_data); + interface o_wr_resp = to_FIFOF_O (f_wr_resp); + + interface i_rd_addr = to_FIFOF_I (f_rd_addr); + interface o_rd_data = to_FIFOF_O (f_rd_data); + endinterface + + interface AXI4_Lite_Client_IFC client_side; + interface o_wr_addr = to_FIFOF_O (f_wr_addr); + interface o_wr_data = to_FIFOF_O (f_wr_data); + interface i_wr_resp = to_FIFOF_I (f_wr_resp); + + interface o_rd_addr = to_FIFOF_O (f_rd_addr); + interface i_rd_data = to_FIFOF_I (f_rd_data); + endinterface +endmodule + +// ================================================================ +// Master transactor interface + +interface AXI4_Lite_Master_Xactor_IFC #(numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + + // AXI side + interface AXI4_Lite_Master_IFC #(wd_addr, wd_data, wd_user) axi_side; + + // FIFOF side + interface FIFOF_I #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) i_wr_addr; + interface FIFOF_I #(AXI4_Lite_Wr_Data #(wd_data)) i_wr_data; + interface FIFOF_O #(AXI4_Lite_Wr_Resp #(wd_user)) o_wr_resp; + + interface FIFOF_I #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) i_rd_addr; + interface FIFOF_O #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) o_rd_data; +endinterface: AXI4_Lite_Master_Xactor_IFC + +// ---------------------------------------------------------------- +// Master transactor +// This version uses FIFOFs for total decoupling. + +module mkAXI4_Lite_Master_Xactor (AXI4_Lite_Master_Xactor_IFC #(wd_addr, wd_data, wd_user)); + + Bool unguarded = True; + Bool guarded = False; + + // These FIFOs are guarded on BSV side, unguarded on AXI side + FIFOF #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) f_wr_addr <- mkGFIFOF (guarded, unguarded); + FIFOF #(AXI4_Lite_Wr_Data #(wd_data)) f_wr_data <- mkGFIFOF (guarded, unguarded); + FIFOF #(AXI4_Lite_Wr_Resp #(wd_user)) f_wr_resp <- mkGFIFOF (unguarded, guarded); + + FIFOF #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) f_rd_addr <- mkGFIFOF (guarded, unguarded); + FIFOF #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) f_rd_data <- mkGFIFOF (unguarded, guarded); + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + // AXI side + interface axi_side = interface AXI4_Lite_Master_IFC; + // Wr Addr channel + method Bool m_awvalid = f_wr_addr.notEmpty; + method Bit #(wd_addr) m_awaddr = f_wr_addr.first.awaddr; + method Bit #(3) m_awprot = f_wr_addr.first.awprot; + method Bit #(wd_user) m_awuser = f_wr_addr.first.awuser; + method Action m_awready (Bool awready); + if (f_wr_addr.notEmpty && awready) f_wr_addr.deq; + endmethod + + // Wr Data channel + method Bool m_wvalid = f_wr_data.notEmpty; + method Bit #(wd_data) m_wdata = f_wr_data.first.wdata; + method Bit #(TDiv #(wd_data, 8)) m_wstrb = f_wr_data.first.wstrb; + method Action m_wready (Bool wready); + if (f_wr_data.notEmpty && wready) f_wr_data.deq; + endmethod + + // Wr Response channel + method Action m_bvalid (Bool bvalid, Bit #(2) bresp, Bit #(wd_user) buser); + if (bvalid && f_wr_resp.notFull) + f_wr_resp.enq (AXI4_Lite_Wr_Resp {bresp: unpack (bresp), buser: buser}); + endmethod + + method Bool m_bready; + return f_wr_resp.notFull; + endmethod + + // Rd Addr channel + method Bool m_arvalid = f_rd_addr.notEmpty; + method Bit #(wd_addr) m_araddr = f_rd_addr.first.araddr; + method Bit #(3) m_arprot = f_rd_addr.first.arprot; + method Bit #(wd_user) m_aruser = f_rd_addr.first.aruser; + method Action m_arready (Bool arready); + if (f_rd_addr.notEmpty && arready) f_rd_addr.deq; + endmethod + + // Rd Data channel + method Action m_rvalid (Bool rvalid, + Bit #(2) rresp, + Bit #(wd_data) rdata, + Bit #(wd_user) ruser); + if (rvalid && f_rd_data.notFull) + f_rd_data.enq (AXI4_Lite_Rd_Data {rresp: unpack (rresp), + rdata: rdata, + ruser: ruser}); + endmethod + + method Bool m_rready; + return f_rd_data.notFull; + endmethod + + endinterface; + + // FIFOF side + interface i_wr_addr = to_FIFOF_I (f_wr_addr); + interface i_wr_data = to_FIFOF_I (f_wr_data); + interface o_wr_resp = to_FIFOF_O (f_wr_resp); + + interface i_rd_addr = to_FIFOF_I (f_rd_addr); + interface o_rd_data = to_FIFOF_O (f_rd_data); +endmodule: mkAXI4_Lite_Master_Xactor + +// ---------------------------------------------------------------- +// Master transactor +// This version uses crgs and regs instead of FIFOFs. +// This uses 1/2 the resources, but introduces scheduling dependencies. + +module mkAXI4_Lite_Master_Xactor_2 (AXI4_Lite_Master_Xactor_IFC #(wd_addr, wd_data, wd_user)); + + // Each crg_full, rg_data pair below represents a 1-element fifo. + + Array #(Reg #(Bool)) crg_wr_addr_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) rg_wr_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_data_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Wr_Data #(wd_data)) rg_wr_data <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_resp_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Wr_Resp #(wd_user)) rg_wr_resp <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_addr_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) rg_rd_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_data_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) rg_rd_data <- mkRegU; + + // The following CReg port indexes specify the relative scheduling of: + // {first,deq,notEmpty} {enq,notFull} clear + + // TODO: 'deq/enq/clear = 1/2/0' is unusual, but eliminates a + // scheduling cycle in Piccolo's DCache. Normally should be 0/1/2. + + Integer port_deq = 1; + Integer port_enq = 2; + Integer port_clear = 0; + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + crg_wr_addr_full [port_clear] <= False; + crg_wr_data_full [port_clear] <= False; + crg_wr_resp_full [port_clear] <= False; + crg_rd_addr_full [port_clear] <= False; + crg_rd_data_full [port_clear] <= False; + endmethod + + // AXI side + interface axi_side = interface AXI4_Lite_Master_IFC; + // Wr Addr channel + method Bool m_awvalid = crg_wr_addr_full [port_deq]; + method Bit #(wd_addr) m_awaddr = rg_wr_addr.awaddr; + method Bit #(3) m_awprot = rg_wr_addr.awprot; + method Bit #(wd_user) m_awuser = rg_wr_addr.awuser; + method Action m_awready (Bool awready); + if (crg_wr_addr_full [port_deq] && awready) + crg_wr_addr_full [port_deq] <= False; // deq + endmethod + + // Wr Data channel + method Bool m_wvalid = crg_wr_data_full [port_deq]; + method Bit #(wd_data) m_wdata = rg_wr_data.wdata; + method Bit #(TDiv #(wd_data, 8)) m_wstrb = rg_wr_data.wstrb; + method Action m_wready (Bool wready); + if (crg_wr_data_full [port_deq] && wready) + crg_wr_data_full [port_deq] <= False; + endmethod + + // Wr Response channel + method Action m_bvalid (Bool bvalid, Bit #(2) bresp, Bit #(wd_user) buser); + if (bvalid && (! (crg_wr_resp_full [port_enq]))) begin + crg_wr_resp_full [port_enq] <= True; + rg_wr_resp <= AXI4_Lite_Wr_Resp {bresp: unpack (bresp), + buser: buser}; + end + endmethod + + method Bool m_bready; + return (! (crg_wr_resp_full [port_enq])); + endmethod + + // Rd Addr channel + method Bool m_arvalid = crg_rd_addr_full [port_deq]; + method Bit #(wd_addr) m_araddr = rg_rd_addr.araddr; + method Bit #(3) m_arprot = rg_rd_addr.arprot; + method Bit #(wd_user) m_aruser = rg_rd_addr.aruser; + method Action m_arready (Bool arready); + if (crg_rd_addr_full [port_deq] && arready) + crg_rd_addr_full [port_deq] <= False; // deq + endmethod + + // Rd Data channel + method Action m_rvalid (Bool rvalid, + Bit #(2) rresp, + Bit #(wd_data) rdata, + Bit #(wd_user) ruser); + if (rvalid && (! (crg_rd_data_full [port_enq]))) + crg_rd_data_full [port_enq] <= True; + rg_rd_data <= (AXI4_Lite_Rd_Data {rresp: unpack (rresp), + rdata: rdata, + ruser: ruser}); + endmethod + + method Bool m_rready; + return (! (crg_rd_data_full [port_enq])); + endmethod + + endinterface; + + // FIFOF side + interface i_wr_addr = fn_crg_and_rg_to_FIFOF_I (crg_wr_addr_full [port_enq], rg_wr_addr); + interface i_wr_data = fn_crg_and_rg_to_FIFOF_I (crg_wr_data_full [port_enq], rg_wr_data); + interface o_wr_resp = fn_crg_and_rg_to_FIFOF_O (crg_wr_resp_full [port_deq], rg_wr_resp); + + interface i_rd_addr = fn_crg_and_rg_to_FIFOF_I (crg_rd_addr_full [port_enq], rg_rd_addr); + interface o_rd_data = fn_crg_and_rg_to_FIFOF_O (crg_rd_data_full [port_deq], rg_rd_data); +endmodule: mkAXI4_Lite_Master_Xactor_2 + +// ================================================================ +// Slave transactor interface + +interface AXI4_Lite_Slave_Xactor_IFC #(numeric type wd_addr, + numeric type wd_data, + numeric type wd_user); + method Action reset; + + // AXI side + interface AXI4_Lite_Slave_IFC #(wd_addr, wd_data, wd_user) axi_side; + + // FIFOF side + interface FIFOF_O #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) o_wr_addr; + interface FIFOF_O #(AXI4_Lite_Wr_Data #(wd_data)) o_wr_data; + interface FIFOF_I #(AXI4_Lite_Wr_Resp #(wd_user)) i_wr_resp; + + interface FIFOF_O #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) o_rd_addr; + interface FIFOF_I #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) i_rd_data; +endinterface: AXI4_Lite_Slave_Xactor_IFC + +// ---------------------------------------------------------------- +// Slave transactor +// This version uses FIFOFs for total decoupling. + +module mkAXI4_Lite_Slave_Xactor (AXI4_Lite_Slave_Xactor_IFC #(wd_addr, wd_data, wd_user)); + + Bool unguarded = True; + Bool guarded = False; + + // These FIFOs are guarded on BSV side, unguarded on AXI side + FIFOF #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) f_wr_addr <- mkGFIFOF (unguarded, guarded); + FIFOF #(AXI4_Lite_Wr_Data #(wd_data)) f_wr_data <- mkGFIFOF (unguarded, guarded); + FIFOF #(AXI4_Lite_Wr_Resp #(wd_user)) f_wr_resp <- mkGFIFOF (guarded, unguarded); + + FIFOF #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) f_rd_addr <- mkGFIFOF (unguarded, guarded); + FIFOF #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) f_rd_data <- mkGFIFOF (guarded, unguarded); + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + f_wr_addr.clear; + f_wr_data.clear; + f_wr_resp.clear; + f_rd_addr.clear; + f_rd_data.clear; + endmethod + + // AXI side + interface axi_side = interface AXI4_Lite_Slave_IFC; + // Wr Addr channel + method Action m_awvalid (Bool awvalid, + Bit #(wd_addr) awaddr, + Bit #(3) awprot, + Bit #(wd_user) awuser); + if (awvalid && f_wr_addr.notFull) + f_wr_addr.enq (AXI4_Lite_Wr_Addr {awaddr: awaddr, + awprot: awprot, + awuser: awuser}); + endmethod + + method Bool m_awready; + return f_wr_addr.notFull; + endmethod + + // Wr Data channel + method Action m_wvalid (Bool wvalid, + Bit #(wd_data) wdata, + Bit #(TDiv #(wd_data, 8)) wstrb); + if (wvalid && f_wr_data.notFull) + f_wr_data.enq (AXI4_Lite_Wr_Data {wdata: wdata, wstrb: wstrb}); + endmethod + + method Bool m_wready; + return f_wr_data.notFull; + endmethod + + // Wr Response channel + method Bool m_bvalid = f_wr_resp.notEmpty; + method Bit #(2) m_bresp = pack (f_wr_resp.first.bresp); + method Bit #(wd_user) m_buser = f_wr_resp.first.buser; + method Action m_bready (Bool bready); + if (bready && f_wr_resp.notEmpty) + f_wr_resp.deq; + endmethod + + // Rd Addr channel + method Action m_arvalid (Bool arvalid, + Bit #(wd_addr) araddr, + Bit #(3) arprot, + Bit #(wd_user) aruser); + if (arvalid && f_rd_addr.notFull) + f_rd_addr.enq (AXI4_Lite_Rd_Addr {araddr: araddr, + arprot: arprot, + aruser: aruser}); + endmethod + + method Bool m_arready; + return f_rd_addr.notFull; + endmethod + + // Rd Data channel + method Bool m_rvalid = f_rd_data.notEmpty; + method Bit #(2) m_rresp = pack (f_rd_data.first.rresp); + method Bit #(wd_data) m_rdata = f_rd_data.first.rdata; + method Bit #(wd_user) m_ruser = f_rd_data.first.ruser; + method Action m_rready (Bool rready); + if (rready && f_rd_data.notEmpty) + f_rd_data.deq; + endmethod + endinterface; + + // FIFOF side + interface o_wr_addr = to_FIFOF_O (f_wr_addr); + interface o_wr_data = to_FIFOF_O (f_wr_data); + interface i_wr_resp = to_FIFOF_I (f_wr_resp); + + interface o_rd_addr = to_FIFOF_O (f_rd_addr); + interface i_rd_data = to_FIFOF_I (f_rd_data); +endmodule: mkAXI4_Lite_Slave_Xactor + +// ---------------------------------------------------------------- +// Slave transactor +// This version uses crgs and regs instead of FIFOFs. +// This uses 1/2 the resources, but introduces scheduling dependencies. + +module mkAXI4_Lite_Slave_Xactor_2 (AXI4_Lite_Slave_Xactor_IFC #(wd_addr, wd_data, wd_user)); + + // Each crg_full, rg_data pair below represents a 1-element fifo. + + // These FIFOs are guarded on BSV side, unguarded on AXI side + Array #(Reg #(Bool)) crg_wr_addr_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Wr_Addr #(wd_addr, wd_user)) rg_wr_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_data_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Wr_Data #(wd_data)) rg_wr_data <- mkRegU; + + Array #(Reg #(Bool)) crg_wr_resp_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Wr_Resp #(wd_user)) rg_wr_resp <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_addr_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Rd_Addr #(wd_addr, wd_user)) rg_rd_addr <- mkRegU; + + Array #(Reg #(Bool)) crg_rd_data_full <- mkCReg (3, False); + Reg #(AXI4_Lite_Rd_Data #(wd_data, wd_user)) rg_rd_data <- mkRegU; + + // The following CReg port indexes specify the relative scheduling of: + // {first,deq,notEmpty} {enq,notFull} clear + Integer port_deq = 0; + Integer port_enq = 1; + Integer port_clear = 2; + + // ---------------------------------------------------------------- + // INTERFACE + + method Action reset; + crg_wr_addr_full [port_clear] <= False; + crg_wr_data_full [port_clear] <= False; + crg_wr_resp_full [port_clear] <= False; + crg_rd_addr_full [port_clear] <= False; + crg_rd_data_full [port_clear] <= False; + endmethod + + // AXI side + interface axi_side = interface AXI4_Lite_Slave_IFC; + // Wr Addr channel + method Action m_awvalid (Bool awvalid, + Bit #(wd_addr) awaddr, + Bit #(3) awprot, + Bit #(wd_user) awuser); + if (awvalid && (! crg_wr_addr_full [port_enq])) begin + crg_wr_addr_full [port_enq] <= True; // enq + rg_wr_addr <= AXI4_Lite_Wr_Addr {awaddr: awaddr, + awprot: awprot, + awuser: awuser}; + end + endmethod + + method Bool m_awready; + return (! crg_wr_addr_full [port_enq]); + endmethod + + // Wr Data channel + method Action m_wvalid (Bool wvalid, + Bit #(wd_data) wdata, + Bit #(TDiv #(wd_data, 8)) wstrb); + if (wvalid && (! crg_wr_data_full [port_enq])) begin + crg_wr_data_full [port_enq] <= True; // enq + rg_wr_data <= AXI4_Lite_Wr_Data {wdata: wdata, wstrb: wstrb}; + end + endmethod + + method Bool m_wready; + return (! crg_wr_data_full [port_enq]); + endmethod + + // Wr Response channel + method Bool m_bvalid = crg_wr_resp_full [port_deq]; + method Bit #(2) m_bresp = pack (rg_wr_resp.bresp); + method Bit #(wd_user) m_buser = rg_wr_resp.buser; + method Action m_bready (Bool bready); + if (bready && crg_wr_resp_full [port_deq]) + crg_wr_resp_full [port_deq] <= False; // deq + endmethod + + // Rd Addr channel + method Action m_arvalid (Bool arvalid, + Bit #(wd_addr) araddr, + Bit #(3) arprot, + Bit #(wd_user) aruser); + if (arvalid && (! crg_rd_addr_full [port_enq])) begin + crg_rd_addr_full [port_enq] <= True; // enq + rg_rd_addr <= AXI4_Lite_Rd_Addr {araddr: araddr, + arprot: arprot, + aruser: aruser}; + end + endmethod + + method Bool m_arready; + return (! crg_rd_addr_full [port_enq]); + endmethod + + // Rd Data channel + method Bool m_rvalid = crg_rd_data_full [port_deq]; + method Bit #(2) m_rresp = pack (rg_rd_data.rresp); + method Bit #(wd_data) m_rdata = rg_rd_data.rdata; + method Bit #(wd_user) m_ruser = rg_rd_data.ruser; + method Action m_rready (Bool rready); + if (rready && crg_rd_data_full [port_deq]) + crg_rd_data_full [port_deq] <= False; // deq + endmethod + endinterface; + + // FIFOF side + interface o_wr_addr = fn_crg_and_rg_to_FIFOF_O (crg_wr_addr_full [port_deq], rg_wr_addr); + interface o_wr_data = fn_crg_and_rg_to_FIFOF_O (crg_wr_data_full [port_deq], rg_wr_data); + interface i_wr_resp = fn_crg_and_rg_to_FIFOF_I (crg_wr_resp_full [port_enq], rg_wr_resp); + + interface o_rd_addr = fn_crg_and_rg_to_FIFOF_O (crg_rd_addr_full [port_deq], rg_rd_addr); + interface i_rd_data = fn_crg_and_rg_to_FIFOF_I (crg_rd_data_full [port_enq], rg_rd_data); +endmodule: mkAXI4_Lite_Slave_Xactor_2 + +// ================================================================ + +endpackage diff --git a/src_Testbench/Fabrics/Adapters/AXI4_AXI4_Lite_Adapters.bsv b/src_Testbench/Fabrics/Adapters/AXI4_AXI4_Lite_Adapters.bsv new file mode 100644 index 0000000..8bb8a19 --- /dev/null +++ b/src_Testbench/Fabrics/Adapters/AXI4_AXI4_Lite_Adapters.bsv @@ -0,0 +1,151 @@ +// Copyright (c) 2019 Bluespec, Inc. All Rights Reserved + +package AXI4_AXI4_Lite_Adapters; + +// ================================================================ +// Adapters for interconnecting AXI4 and AXI4_Lite. + +// Ref: ARM document: +// AMBA AXI and ACE Protocol Specification +// AXI3, AXI4, and AXI4-Lite +// ACE and ACE-Lite +// ARM IHI 0022E (ID022613) +// Issue E, 22 Feb 2013 + +// See export list below + +// ================================================================ +// Exports + +export + +fn_AXI4_Lite_Master_IFC_to_AXI4_Master_IFC; + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import Connectable :: *; + +// ---------------- +// BSV additional libs + +import Semi_FIFOF :: *; +import EdgeFIFOFs :: *; + +// ================================================================ +// Project imports + +import AXI4_Lite_Types :: *; +import AXI4_Types :: *; + +// ================================================================ +// Compute the encoding of AWSIZE/ARSIZE + +function Bit #(3) wd_data_to_axsize (Integer wd_data_i); + Bit #(3) axsize = ( (wd_data_i == 32) + ? 3'b_010 + : ( (wd_data_i == 64) + ? 3'b_011 + : 3'b_000)); + return axsize; +endfunction + +// ================================================================ + +function AXI4_Master_IFC #(wd_id, wd_addr, wd_data, wd_user) + fn_AXI4_Lite_Master_IFC_to_AXI4_Master_IFC + (AXI4_Lite_Master_IFC #(wd_addr, wd_data, wd_user) axi4_lite); + + return + interface AXI4_Master_IFC; + + // ---------------- + // Wr Addr channel + // output buses + method Bool m_awvalid = axi4_lite.m_awvalid; + + method Bit #(wd_id) m_awid = 0; + method Bit #(wd_addr) m_awaddr = axi4_lite.m_awaddr; + method Bit #(8) m_awlen = 0; // burst length = awlen+1 + method Bit #(3) m_awsize = wd_data_to_axsize (valueOf (wd_data)); + method Bit #(2) m_awburst = 2'b_00; // FIXED + method Bit #(1) m_awlock = 0; // NORMAL + method Bit #(4) m_awcache = 4'b_0000; // Device Non-Bufferable + method Bit #(3) m_awprot = axi4_lite.m_awprot; + method Bit #(4) m_awqos = 4'b_0000; + method Bit #(4) m_awregion = 4'b_0000; + method Bit #(wd_user) m_awuser = 0; + + // input buses + method Action m_awready (Bool awready) = axi4_lite.m_awready (awready); + + // ---------------- + // Wr Data channel + // output buses + method Bool m_wvalid = axi4_lite.m_wvalid; + + method Bit #(wd_id) m_wid = 0; + method Bit #(wd_data) m_wdata = axi4_lite.m_wdata; + method Bit #(TDiv #(wd_data, 8)) m_wstrb = axi4_lite.m_wstrb; + method Bool m_wlast = True; + method Bit #(wd_user) m_wuser = 0; + + // input buses + method Action m_wready (Bool wready) = axi4_lite.m_wready (wready); + + // ---------------- + // Wr Response channel + // input buses + method Action m_bvalid (Bool bvalid, + Bit #(wd_id) bid, + Bit #(2) bresp, + Bit #(wd_user) buser) = axi4_lite.m_bvalid (bvalid, + bresp, + 0); + + // output buses + method Bool m_bready = axi4_lite.m_bready; + + // ---------------- + // Rd Addr channel + // output buses + method Bool m_arvalid = axi4_lite.m_arvalid; + + method Bit #(wd_id) m_arid = 0; + method Bit #(wd_addr) m_araddr = axi4_lite.m_araddr; + method Bit #(8) m_arlen = 0; // burst length = awlen+1 + method Bit #(3) m_arsize = wd_data_to_axsize (valueOf (wd_data)); + method Bit #(2) m_arburst = 2'b_00; // FIXED + method Bit #(1) m_arlock = 0; // NORMAL + method Bit #(4) m_arcache = 4'b_0000; // Device Non-Bufferable + method Bit #(3) m_arprot = axi4_lite.m_arprot; + method Bit #(4) m_arqos = 4'b_0000; + method Bit #(4) m_arregion = 4'b_0000; + method Bit #(wd_user) m_aruser = axi4_lite.m_aruser; + + // input buses + method Action m_arready (Bool arready) = axi4_lite.m_arready (arready); + + // ---------------- + // Rd Data channel + // input buses + method Action m_rvalid (Bool rvalid, + Bit #(wd_id) rid, + Bit #(wd_data) rdata, + Bit #(2) rresp, + Bool rlast, + Bit #(wd_user) ruser) = axi4_lite.m_rvalid (rvalid, + rresp, + rdata, + 0); + + // output buses + method Bool m_rready = axi4_lite.m_rready; + + endinterface; +endfunction + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/Boot_ROM.bsv b/src_Testbench/SoC/Boot_ROM.bsv new file mode 100644 index 0000000..56c4fd6 --- /dev/null +++ b/src_Testbench/SoC/Boot_ROM.bsv @@ -0,0 +1,201 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +package Boot_ROM; + +// ================================================================ +// This package implements a slave IP that is a RISC-V boot ROM of +// 1024 32b locations. +// - Ignores all writes, always responsing OKAY +// - Assumes all reads are 4-byte aligned requests for 4-bytes + +// ================================================================ + +export Boot_ROM_IFC (..), mkBoot_ROM; + +// ================================================================ +// BSV library imports + +import ConfigReg :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; +import Semi_FIFOF :: *; + +// ================================================================ +// Project imports + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// ================================================================ +// Include the auto-generated BSV-include file with the ROM function + +`ifdef RV32 +`include "fn_read_ROM_RV32.bsvi" +`endif + +`ifdef RV64 +`include "fn_read_ROM_RV64.bsvi" +`endif + +// ================================================================ +// Interface + +interface Boot_ROM_IFC; + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim); + + // Main Fabric Reqs/Rsps + interface AXI4_Slave_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave; +endinterface + +// ================================================================ + +(* synthesize *) +module mkBoot_ROM (Boot_ROM_IFC); + + // Verbosity: 0: quiet; 1: reads/writes + Integer verbosity = 0; + + Reg #(Bool) rg_module_ready <- mkReg (False); + + Reg #(Fabric_Addr) rg_addr_base <- mkRegU; + Reg #(Fabric_Addr) rg_addr_lim <- mkRegU; + + // ---------------- + // Connector to fabric + + AXI4_Slave_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave_xactor <- mkAXI4_Slave_Xactor; + + // ---------------- + + function Bool fn_addr_is_aligned (Fabric_Addr addr); + if (valueOf (Wd_Data) == 32) + return (addr [1:0] == 2'b_00); + else if (valueOf (Wd_Data) == 64) + return (addr [2:0] == 3'b_000); + else + return False; + endfunction + + function Bool fn_addr_is_in_range (Fabric_Addr base, Fabric_Addr addr, Fabric_Addr lim); + return ((base <= addr) && (addr < lim)); + endfunction + + function Bool fn_addr_is_ok (Fabric_Addr base, Fabric_Addr addr, Fabric_Addr lim); + return ( fn_addr_is_aligned (addr) + && fn_addr_is_in_range (base, addr, lim)); + endfunction + + // ================================================================ + // BEHAVIOR + + // ---------------------------------------------------------------- + // Handle fabric read requests + + rule rl_process_rd_req (rg_module_ready); + let rda <- pop_o (slave_xactor.o_rd_addr); + + let byte_addr = rda.araddr - rg_addr_base; + + AXI4_Resp rresp = axi4_resp_okay; + Bit #(64) data64 = 0; + if (! fn_addr_is_ok (rg_addr_base, rda.araddr, rg_addr_lim)) begin + rresp = axi4_resp_slverr; + $display ("%0d: ERROR: Boot_ROM.rl_process_rd_req: unrecognized addr", cur_cycle); + $display (" ", fshow (rda)); + end + else if (rda.araddr [2:0] == 3'b0) begin + Bit #(32) d0 = fn_read_ROM_0 (byte_addr); + Bit #(32) d1 = fn_read_ROM_4 (byte_addr + 4); + data64 = { d1, d0 }; + end + else begin // ((valueOf (Wd_Data) == 32) && (rda.addr [1:0] == 2'b_00)) + Bit #(32) d1 = fn_read_ROM_4 (byte_addr); + data64 = { 0, d1 }; + end + + Bit #(Wd_Data) rdata = truncate (data64); + let rdr = AXI4_Rd_Data {rid: rda.arid, + rdata: rdata, + rresp: rresp, + rlast: True, + ruser: rda.aruser}; + slave_xactor.i_rd_data.enq (rdr); + + if (verbosity > 0) begin + $display ("%0d: Boot_ROM.rl_process_rd_req: ", cur_cycle); + $display (" ", fshow (rda)); + $display (" => ", fshow (rdr)); + end + endrule + + // ---------------------------------------------------------------- + // Handle fabric write requests: ignore all of them (this is a ROM) + + rule rl_process_wr_req (rg_module_ready); + let wra <- pop_o (slave_xactor.o_wr_addr); + let wrd <- pop_o (slave_xactor.o_wr_data); + + AXI4_Resp bresp = axi4_resp_okay; + if (! fn_addr_is_ok (rg_addr_base, wra.awaddr, rg_addr_lim)) begin + bresp = axi4_resp_slverr; + $display ("%0d: ERROR: Boot_ROM.rl_process_wr_req: unrecognized addr", cur_cycle); + $display (" ", fshow (wra)); + end + + let wrr = AXI4_Wr_Resp {bid: wra.awid, + bresp: bresp, + buser: wra.awuser}; + slave_xactor.i_wr_resp.enq (wrr); + + if (verbosity > 0) begin + $display ("%0d: Boot_ROM.rl_process_wr_req; ignoring all writes", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + $display (" => ", fshow (wrr)); + end + endrule + + // ================================================================ + // INTERFACE + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim); + if (valueOf (Wd_Data) == 32) begin + if (addr_base [1:0] != 0) + $display ("%0d: WARNING: Boot_ROM.set_addr_map: addr_base 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_base); + + if (addr_lim [1:0] != 0) + $display ("%0d: WARNING: Boot_ROM.set_addr_map: addr_lim 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_lim); + end + else if (valueOf (Wd_Data) == 64) begin + if (addr_base [2:0] != 0) + $display ("%0d: WARNING: Boot_ROM.set_addr_map: addr_base 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_base); + + if (addr_lim [2:0] != 0) + $display ("%0d: WARNING: Boot_ROM.set_addr_map: addr_lim 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_lim); + end + + rg_addr_base <= addr_base; + rg_addr_lim <= addr_lim; + rg_module_ready <= True; + if (verbosity > 0) begin + $display ("%0d: Boot_ROM.set_addr_map: base 0x%0h lim 0x%0h", cur_cycle, addr_base, addr_lim); + end + endmethod + + // Main Fabric Reqs/Rsps + interface slave = slave_xactor.axi_side; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/Boot_ROM_Generator/.gitignore b/src_Testbench/SoC/Boot_ROM_Generator/.gitignore new file mode 100644 index 0000000..b883f1f --- /dev/null +++ b/src_Testbench/SoC/Boot_ROM_Generator/.gitignore @@ -0,0 +1 @@ +*.exe diff --git a/src_Testbench/SoC/Boot_ROM_Generator/Gen_BSV_fn_read_ROM.py b/src_Testbench/SoC/Boot_ROM_Generator/Gen_BSV_fn_read_ROM.py new file mode 100755 index 0000000..4930149 --- /dev/null +++ b/src_Testbench/SoC/Boot_ROM_Generator/Gen_BSV_fn_read_ROM.py @@ -0,0 +1,113 @@ +#!/usr/bin/python3 + +# Copyright (c) 2018-2019 Bluespec, Inc. All Rights Reserved. +# ================================================================ +# Reads a memhex file created by gen_bootroom.cc +# and constructs a BSV function representating that rom. + +# ================================================================ + +import sys +import os +import datetime + +# ================================================================ + +def main (argv = None): + if ((len (argv) > 1) and ((argv [1] == "-h") or (argv [1] == "--help"))): + print_usage (argv) + return 0 + + if (len (argv) != 3): + print_usage (argv) + return 1 + + try: + fin = open (argv [1], 'r') + except: + sys.stderr.write ("ERROR: unable to open or read file '{0}' for input\n".format (argv [1])) + return 1 + + try: + fout = open (argv [2], 'w') + except: + sys.stderr.write ("ERROR: unable to open file '{0}' for output\n".format (argv [2])) + return 1 + + addr_lim = gen_BSV_ROM_function (fin, fout) + sys.stderr.write ("Wrote BSV ROM function into file '{0}'; address limit is: {1}\n".format (argv [2], addr_lim)) + + fin.close () + fout.close () + return 0 + +# ================================================================ + +def print_usage (argv): + sys.stdout.write ("Usage: {0} \n".format (argv [0])) + sys.stdout.write (" The memhex file should contain 32b words\n") + +# ================================================================ + +def gen_BSV_ROM_function (fin, fout): + + # Read the memhex file + lines = fin.readlines () + + # Generate the arms of the BSV case-statement. + case_arms_0 = [] + case_arms_4 = [] + line_num = 1 + addr = 0 + for line in lines: + line = line.strip () + if line.startswith ('@'): + sys.stdout.write ("Note: ignoring line {0}: '{1}'\n".format (line_num, line)) + else: + if ((addr % 8) == 0): + case_arms_0.append (" {0}: 32'h_{1};\n".format (addr, line)) + else: + case_arms_4.append (" {0}: 32'h_{1};\n".format (addr, line)) + addr = addr + 4 + line_num = line_num + 1 + + iso_utc_time = datetime.datetime.utcnow ().isoformat () + + fout.write ("// ***** DO NOT EDIT *****\n") + fout.write ("// ***** This file was generated from a script *****\n") + fout.write ("// Generated at UTC {0}\n".format (iso_utc_time)) + fout.write ("\n") + fout.write ("\n") + fout.write ("// This file is a BSV 'include' file\n") + fout.write ("// The function below represents a ROM of {0} bytes\n".format (addr)) + fout.write ("\n") + fout.write ("\n") + fout.write ("// Function for 4-bytes values at addrs aligned to 'b000\n") + fout.write ("\n") + fout.write ("function Bit #(32) fn_read_ROM_0 (Bit #(n) addr);\n") + fout.write (" return\n") + fout.write (" case (addr)\n") + for case_arm in case_arms_0: + fout.write (case_arm) + fout.write (" default: 32'h_AAAA_AAAA;\n") + fout.write (" endcase;\n") + fout.write ("endfunction: fn_read_ROM_0\n") + fout.write ("\n") + fout.write ("// Function for 4-bytes values at addrs aligned to 'b100\n") + fout.write ("\n") + fout.write ("function Bit #(32) fn_read_ROM_4 (Bit #(n) addr);\n") + fout.write (" return\n") + fout.write (" case (addr)\n") + for case_arm in case_arms_4: + fout.write (case_arm) + fout.write (" default: 32'h_AAAA_AAAA;\n") + fout.write (" endcase;\n") + fout.write ("endfunction: fn_read_ROM_4\n") + + return addr + +# ================================================================ +# For non-interactive invocations, call main() and use its return value +# as the exit code. +if __name__ == '__main__': + sys.exit (main (sys.argv)) diff --git a/src_Testbench/SoC/Boot_ROM_Generator/Makefile b/src_Testbench/SoC/Boot_ROM_Generator/Makefile new file mode 100644 index 0000000..8f42109 --- /dev/null +++ b/src_Testbench/SoC/Boot_ROM_Generator/Makefile @@ -0,0 +1,23 @@ +# Generates fn_read_ROM_RV32.bsvi and fn_read_ROM_RV64.bsvi +# in a temporary directory 'tmpdir/'. +# Manually copy these to .., if ok. + +default: tmpdir/fn_read_ROM_RV32.bsvi tmpdir/fn_read_ROM_RV64.bsvi + +tmpdir/fn_read_ROM_RV64.bsvi: tmpdir gen_bootrom.exe + ./gen_bootrom.exe RV64 imaus > tmpdir/boot_ROM_RV64.memhex + ./Gen_BSV_fn_read_ROM.py tmpdir/boot_ROM_RV64.memhex tmpdir/fn_read_ROM_RV64.bsvi + +tmpdir/fn_read_ROM_RV32.bsvi: tmpdir gen_bootrom.exe + ./gen_bootrom.exe RV32 imaus > tmpdir/boot_ROM_RV32.memhex + ./Gen_BSV_fn_read_ROM.py tmpdir/boot_ROM_RV32.memhex tmpdir/fn_read_ROM_RV32.bsvi + +gen_bootrom.exe: tmpdir gen_bootrom.cc + $(CXX) -o $@ -std=c++11 gen_bootrom.cc + +tmpdir: + mkdir -p tmpdir + +.PHONY: full_clean +full_clean: + rm -r -f *~ tmpdir gen_bootrom.exe diff --git a/src_Testbench/SoC/Boot_ROM_Generator/gen_bootrom.cc b/src_Testbench/SoC/Boot_ROM_Generator/gen_bootrom.cc new file mode 100644 index 0000000..59f4c93 --- /dev/null +++ b/src_Testbench/SoC/Boot_ROM_Generator/gen_bootrom.cc @@ -0,0 +1,302 @@ +// Copyright (c) 2010-2019, The Regents of the University of California +// (Regents). All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. Neither the name of the Regents nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, +// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING +// OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS +// BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED +// HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE +// MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + +// Modifications by Bluespec, Inc, 2018 + +// ================================================================ + +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include + + +#include + +// ================================================================ + +#define DTC "/usr/bin/dtc" + +// ================================================================ + +#define ROM_BASE 0x00001000 + +#define DMEM_BASE 0x80000000 +#define DMEM_SIZE 0x10000000 + +#define CLINT_BASE 0x02000000 +#define CLINT_SIZE 0x000c0000 + +#define UART_BASE 0xc0000000 + +#define NUM_PROCS 1 + +// ------------------------- +// Timer configuration + +// For Piccolo Sim +// +#define CPU_HZ 50000lu + +// #define CPU_HZ 10000000lu + +// ================================================================ + +static std::string dts; + +static std::string dts_compile(const std::string& dts) +{ + // Convert the DTS to DTB + int dts_pipe[2]; + pid_t dts_pid; + + if (pipe(dts_pipe) != 0 || (dts_pid = fork()) < 0) { + std::cerr << "Failed to fork dts child: " << strerror(errno) << std::endl; + exit(1); + } + + // Child process to output dts + if (dts_pid == 0) { + close(dts_pipe[0]); + int step, len = dts.length(); + const char *buf = dts.c_str(); + for (int done = 0; done < len; done += step) { + step = write(dts_pipe[1], buf+done, len-done); + if (step == -1) { + std::cerr << "Failed to write dts: " << strerror(errno) << std::endl; + exit(1); + } + } + close(dts_pipe[1]); + exit(0); + } + + pid_t dtb_pid; + int dtb_pipe[2]; + if (pipe(dtb_pipe) != 0 || (dtb_pid = fork()) < 0) { + std::cerr << "Failed to fork dtb child: " << strerror(errno) << std::endl; + exit(1); + } + + // Child process to output dtb + if (dtb_pid == 0) { + dup2(dts_pipe[0], 0); + dup2(dtb_pipe[1], 1); + close(dts_pipe[0]); + close(dts_pipe[1]); + close(dtb_pipe[0]); + close(dtb_pipe[1]); + execl(DTC, DTC, "-O", "dtb", 0); + std::cerr << "Failed to run " DTC ": " << strerror(errno) << std::endl; + exit(1); + } + + close(dts_pipe[1]); + close(dts_pipe[0]); + close(dtb_pipe[1]); + + // Read-out dtb + std::stringstream dtb; + + int got; + char buf[4096]; + while ((got = read(dtb_pipe[0], buf, sizeof(buf))) > 0) { + dtb.write(buf, got); + } + if (got == -1) { + std::cerr << "Failed to read dtb: " << strerror(errno) << std::endl; + exit(1); + } + close(dtb_pipe[0]); + + // Reap children + int status; + waitpid(dts_pid, &status, 0); + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { + std::cerr << "Child dts process failed" << std::endl; + exit(1); + } + waitpid(dtb_pid, &status, 0); + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { + std::cerr << "Child dtb process failed" << std::endl; + exit(1); + } + + return dtb.str(); +} + +void make_dtb(int xlen, char *isa_string) +{ + const int reset_vec_size = 8; + + uint64_t start_pc = DMEM_BASE; + + uint32_t reset_vec[reset_vec_size] = { + 0x297, // auipc t0,0x0 + 0x28593 + (reset_vec_size * 4 << 20), // addi a1, t0, &dtb + 0xf1402573, // csrr a0, mhartid + xlen == 32 ? + 0x0182a283u : // lw t0,24(t0) + 0x0182b283u, // ld t0,24(t0) + 0x28067, // jr t0 + 0, + (uint32_t) (start_pc & 0xffffffff), + (uint32_t) (start_pc >> 32) + }; + + std::vector rom((char*)reset_vec, (char*)reset_vec + sizeof(reset_vec)); + + std::stringstream s; + s << std::dec << + "/dts-v1/;\n" + "\n" + "/ {\n" + " #address-cells = <2>;\n" + " #size-cells = <2>;\n" + " compatible = \"ucbbar,spike-bare-dev\";\n" + " model = \"ucbbar,spike-bare\";\n" + " cpus {\n" + " #address-cells = <1>;\n" + " #size-cells = <0>;\n" + " timebase-frequency = <" << CPU_HZ << ">;\n"; + // For each processor + for (size_t i = 0; i < NUM_PROCS; i++) { + s << " CPU" << i << ": cpu@" << i << " {\n" + " device_type = \"cpu\";\n" + " reg = <" << i << ">;\n" + " status = \"okay\";\n" + " compatible = \"riscv\";\n" + " riscv,isa = \"rv" << xlen << isa_string << "\";\n" + " mmu-type = \"riscv," << (xlen <= 32 ? "sv32" : "sv48") << "\";\n" + " clock-frequency = <" << CPU_HZ << ">;\n" + " CPU" << i << "_intc: interrupt-controller {\n" + " #interrupt-cells = <1>;\n" + " interrupt-controller;\n" + " compatible = \"riscv,cpu-intc\";\n" + " };\n" + " };\n"; + } + s << " };\n"; + // For each memory + uint64_t dmem_base = DMEM_BASE; + uint64_t dmem_size = DMEM_SIZE; + s << std::hex << + " memory@" << dmem_base << " {\n" + " device_type = \"memory\";\n" + " reg = <0x" << (dmem_base >> 32) << " 0x" << (dmem_base & (uint32_t)-1) << + " 0x" << (dmem_size >> 32) << " 0x" << (dmem_size & (uint32_t)-1) << ">;\n" + " };\n"; + // System + s << " soc {\n" + " #address-cells = <2>;\n" + " #size-cells = <2>;\n" + " compatible = \"ucbbar,spike-bare-soc\", \"simple-bus\";\n" + " ranges;\n" + " clint@" << CLINT_BASE << " {\n" + " compatible = \"riscv,clint0\";\n" + " interrupts-extended = <" << std::dec; + for (size_t i = 0; i < NUM_PROCS; i++) + s << "&CPU" << i << "_intc 3 &CPU" << i << "_intc 7 "; + uint64_t clint_base = CLINT_BASE; + uint64_t clint_size = CLINT_SIZE; + s << std::hex << ">;\n" + " reg = <0x" << (clint_base >> 32) << " 0x" << (clint_base & (uint32_t)-1) << + " 0x" << (clint_size >> 32) << " 0x" << (clint_size & (uint32_t)-1) << ">;\n" + " };\n" + " };\n" + /* + " htif {\n" + " compatible = \"ucb,htif0\";\n" + " };\n" + */ + " uart@" << UART_BASE << " {\n" + " compatible = \"ns16550a\";\n" + " reg = <0x0 0x" << UART_BASE << " 0x0 0x8>;\n" + " reg-shift = <3>;\n" + " clock-frequency = <" << std::dec << CPU_HZ << std::hex << ">;\n" + " };\n" + "};\n"; + + dts = s.str(); + std::string dtb = dts_compile(dts); + + //printf("%s\n\n", dts.c_str()); + + rom.insert(rom.end(), dtb.begin(), dtb.end()); + const int align = 0x1000; + rom.resize((rom.size() + align - 1) / align * align); + + // Print the contents + int bytes_per_word = 4; + printf ("@ 1000\n"); + for (int i = 0; i < rom.size(); i += bytes_per_word) { + for (int j = bytes_per_word - 1; j >= 0; j--) { + printf ("%02x", (unsigned char)(rom[i+j])); + } + printf ("\n"); + } + if ((rom.size() % bytes_per_word) != 0) + printf ("WARNING: last bytes of ROM omitted (incomplete word)\n"); +} + +void usage(char *progname) { + printf("usage: %s \n", progname); + printf("example: %s 64 imafdcus\n", progname); +} + +int main(int argc, char *argv[]) { + char *progname = argv[0]; + + if (argc != 3) { + usage(progname); + exit(1); + } + + int xlen; + char *rv_str = argv[1]; + if (strcmp(rv_str,"RV32") == 0) { + xlen = 32; + } else if (strcmp(rv_str,"RV64") == 0) { + xlen = 64; + } else { + usage(progname); + exit(1); + } + + char isa_string[250]; + strcpy(isa_string, argv[2]); + isa_string[249] = '\0'; + + make_dtb(xlen, isa_string); + exit(0); +} + +// ================================================================ diff --git a/src_Testbench/SoC/External_Control.bsv b/src_Testbench/SoC/External_Control.bsv new file mode 100644 index 0000000..b63ace0 --- /dev/null +++ b/src_Testbench/SoC/External_Control.bsv @@ -0,0 +1,44 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +package External_Control; + +// ================================================================ +// This package defines control request and response types from an +// external agent (usually GDB) to the SoC. + +// ================================================================ +// BSV library imports + +// None + +// ================================================================ +// External control requests + +typedef struct { + Bit #(8) op; + Bit #(64) arg1; + Bit #(64) arg2; + } Control_Req + deriving (Bits, FShow); + +// ---------------- +// Reads and writes to the Debug Module + +Bit #(8) external_control_req_op_read_control_fabric = 10; // arg1: fabric_addr +Bit #(8) external_control_req_op_write_control_fabric = 11; // arg1: fabric_addr, arg2: data + +// ================================================================ +// External control responses + +typedef struct { + Bit #(8) status; + Bit #(64) result; + } Control_Rsp + deriving (Bits, FShow); + +Bit #(8) external_control_rsp_status_ok = 0; +Bit #(8) external_control_rsp_status_err = 1; + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/Mem_Controller.bsv b/src_Testbench/SoC/Mem_Controller.bsv new file mode 100644 index 0000000..ac6807d --- /dev/null +++ b/src_Testbench/SoC/Mem_Controller.bsv @@ -0,0 +1,654 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +package Mem_Controller; + +// ================================================================ +// This module is a slave on the interconnect Fabric. +// +// On the back side of the Mem_Controller is a ``raw'' memory +// interface, a simple, wide, R/W interface, +// which is connected to real memory in hardware (BRAM, DRAM, ...) +// and to a model thereof in simulation. +// +// The raw mem interface data width is typically one or two cache lines. +// Note: raw mem write requests are 'fire and forget'; there is no ack + +// ---------------- +// This slave IP can be attached to fabrics with 32b- or 64b-wide data channels. +// (NOTE: this is the width of the fabric, which can be chosen +// independently of the native width of a CPU master on the +// fabric (such as RV32/RV64 for a RISC-V CPU). +// When attached to 32b-wide fabric, 64-bit locations must be +// read/written in two 32b transaction, once for the lower 32b and +// once for the upper 32b. + +// When fabric data is 64b wide, fabric addresses must be 8B-aligned +// - Reads always return 64b data +// - Write data should be 64b wide with an 8b byte-strobe indicating +// which bytes are to be written. Strobes should be for aligned +// 1B, 2B, 4B or 8B chunks. + +// When fabric data is 32b wide, fabric addresses must be 4B-aligned +// - Reads always return 32b data +// - Write data should be 32b wide with a 4b byte-strobe indicating +// which bytes are to be written. Strobes should for aligned +// 1B, 2B, or 4B chunks. + +// Some of the 'truncate()'s and 'zeroExtend()'s below are no-ops but +// necessary to satisfy type-checking. +// ================================================================ + +export + +Bits_per_Raw_Mem_Addr, +Raw_Mem_Addr, + +Bits_per_Raw_Mem_Word, +Raw_Mem_Word, + +Mem_Controller_IFC (..), +mkMem_Controller; + +// ================================================================ +// BSV library imports + +import Vector :: *; +import FIFOF :: *; +import SpecialFIFOs :: *; +import GetPut :: *; +import ClientServer :: *; +import Memory :: *; +import ConfigReg :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; +import Semi_FIFOF :: *; +import ByteLane :: *; + +// ================================================================ +// Project imports + +import Fabric_Defs :: *; +import SoC_Map :: *; +import AXI4_Types :: *; + +// ================================================================ +// Raw mem data width: 256 (bits/ 32 x Byte/ 8 x Word32/ 4 x Word64) +// Raw mem address width: 64 (arbitrarily chosen generously large) + +typedef 256 Bits_per_Raw_Mem_Word; +typedef Bit #(Bits_per_Raw_Mem_Word) Raw_Mem_Word; + +typedef 64 Bits_per_Raw_Mem_Addr; +typedef Bit #(Bits_per_Raw_Mem_Addr) Raw_Mem_Addr; + +// ---------------- +// Views of raw mem word as bytes, word32s and word64s +// Example values on the right based on 256b raw mem data width +typedef TDiv #(Bits_per_Raw_Mem_Word, 8) Bytes_per_Raw_Mem_Word; // 32 bytes +Integer bytes_per_raw_mem_word = valueOf (Bytes_per_Raw_Mem_Word); + +// # of addr lsbs to index a byte in a Raw_Mem_Word +typedef TLog #(Bytes_per_Raw_Mem_Word) Bits_per_Byte_in_Raw_Mem_Word; // 5 +Integer bits_per_byte_in_raw_mem_word = valueOf (Bits_per_Byte_in_Raw_Mem_Word); +Integer hi_byte_in_raw_mem_word = bits_per_byte_in_raw_mem_word - 1; // 4 + +typedef TDiv #(Bits_per_Raw_Mem_Word, 32) Word32s_per_Raw_Mem_Word; // 8 x 32b words +Integer word32s_per_raw_mem_word = valueOf (Word32s_per_Raw_Mem_Word); +// # of addr lsbs to index a Word32 in a Raw_Mem_Word seen as a vector of Word32s +typedef TLog #(Word32s_per_Raw_Mem_Word) Bits_per_Word32_in_Raw_Mem_Word; // 3 +// Type of index of a Word32 in a Raw_Mem_Word seen as a vector of Word32s +typedef Bit #(Bits_per_Word32_in_Raw_Mem_Word) Word32_in_Raw_Mem_Word; + +typedef TDiv #(Bits_per_Raw_Mem_Word, 64) Word64s_per_Raw_Mem_Word; // 4 x 64b words +Integer word64s_per_raw_mem_word = valueOf (Word64s_per_Raw_Mem_Word); +// # of addr lsbs to index a Word64 in a Raw_Mem_Word seen as a vector of Word64s +typedef TLog #(Word64s_per_Raw_Mem_Word) Bits_per_Word64_in_Raw_Mem_Word; // 2 +// Type of index of a Word64 in a Raw_Mem_Word seen as a vector of Word64s +typedef Bit #(Bits_per_Word64_in_Raw_Mem_Word) Word64_in_Raw_Mem_Word; + +typedef TDiv #(Bytes_per_Raw_Mem_Word, Bytes_per_Fabric_Data) Fabric_Data_per_Raw_Mem_Word; + +// Index of bit that selects a fabric data word in an address +`ifdef FABRIC32 +Integer lo_fabric_data = 2; +`endif + +`ifdef FABRIC64 +Integer lo_fabric_data = 3; +`endif + +// ================================================================ + +function Bool fn_addr_is_aligned (Fabric_Addr addr, AXI4_Size size); + Bool is_aligned = ( (size == axsize_1) + || ((size == axsize_2) && (addr [0] == 1'h0)) + || ((size == axsize_4) && (addr [1:0] == 2'h0)) + || ((size == axsize_8) && (addr [2:0] == 3'h0)) + || ((size == axsize_16) && (addr [3:0] == 4'h0)) + || ((size == axsize_32) && (addr [4:0] == 5'h0)) + || ((size == axsize_64) && (addr [5:0] == 6'h0)) + || ((size == axsize_128) && (addr [6:0] == 7'h0))); + return is_aligned; +endfunction + +function Bool fn_addr_is_in_range (Fabric_Addr addr_base, Fabric_Addr addr, Fabric_Addr addr_lim); + // Note: 'in_range' is redundant if the fabric only delivers + // relevant addresses to this module so this is just a bit of + // defensive programming. + + return ((addr_base <= addr) && (addr < addr_lim)); +endfunction + +function Bool fn_addr_is_ok (Fabric_Addr addr_base, Fabric_Addr addr, Fabric_Addr addr_lim, AXI4_Size size); + return ( fn_addr_is_aligned (addr, size) + && fn_addr_is_in_range (addr_base, addr, addr_lim)); +endfunction + +// Compute raw mem addr that holds a given fabric addr +function Raw_Mem_Addr fn_addr_to_raw_mem_addr (Fabric_Addr addr); + Fabric_Addr a1 = addr >> log2 (bytes_per_raw_mem_word); + return extend (a1); +endfunction + +// Compute # of raw mem words from base to lim fabric addrs +function Raw_Mem_Addr fn_raw_mem_words_per_mem (Fabric_Addr base, Fabric_Addr lim); + return fn_addr_to_raw_mem_addr (lim - base); +endfunction + +// ================================================================ +// Local constants and types + +// Module state +typedef enum {STATE_POWER_ON_RESET, +`ifdef INCLUDE_INITIAL_MEMZERO + STATE_ZEROING_MEM, // while zero-ing out memory +`endif + STATE_RESET_RELOAD_CACHE, // on reset, start reload on reset + STATE_RELOADING, // while reloading the raw-mem word cache + STATE_READY // while handling requests + } State +deriving (Bits, Eq, FShow); + +// ================================================================ +// Interface + +interface Mem_Controller_IFC; + // Reset + interface Server #(Bit #(0), Bit #(0)) server_reset; + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim); + + // Main Fabric Reqs/Rsps + interface AXI4_Slave_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave; + + // To raw memory (outside the SoC) + interface MemoryClient #(Bits_per_Raw_Mem_Addr, Bits_per_Raw_Mem_Word) to_raw_mem; + + // For ISA tests: watch memory writes to addr + method Action set_watch_tohost (Bool watch_tohost, Fabric_Addr tohost_addr); +endinterface + +// ================================================================ +// AXI4 has independent read and write channels and does not specify +// which one should be prioritized if requests are available on both +// channels. We merge them into a single queue. + +typedef enum { REQ_OP_RD, REQ_OP_WR } Req_Op +deriving (Bits, Eq, FShow); + +typedef struct {Req_Op req_op; + + // AW and AR channel info + Fabric_Id id; + Fabric_Addr addr; + AXI4_Len len; + AXI4_Size size; + AXI4_Burst burst; + AXI4_Lock lock; + AXI4_Cache cache; + AXI4_Prot prot; + AXI4_QoS qos; + AXI4_Region region; + Bit #(Wd_User) user; + + // Write data info + Bit #(TDiv #(Wd_Data, 8)) wstrb; + Fabric_Data data; + } Req +deriving (Bits, FShow); + +// ================================================================ + +(* synthesize *) +module mkMem_Controller (Mem_Controller_IFC); + + // verbosity 0: quiet + // verbosity 1: reset, initialized + // verbosity 2: reads, writes + // verbosity 3: more detail of local raw_mem interactions + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (0); + + Reg #(State) rg_state <- mkReg (STATE_POWER_ON_RESET); + Reg #(Fabric_Addr) rg_addr_base <- mkRegU; + Reg #(Fabric_Addr) rg_addr_lim <- mkRegU; + + FIFOF #(Bit #(0)) f_reset_reqs <- mkFIFOF; + FIFOF #(Bit #(0)) f_reset_rsps <- mkFIFOF; + + // Communication with fabric + AXI4_Slave_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave_xactor <- mkAXI4_Slave_Xactor; + + // Requests merged from the (WrA, WrD) and RdA channels + FIFOF #(Req) f_reqs <- mkPipelineFIFOF; + + // FIFOFs for requests/responses to raw memory + FIFOF #(MemoryRequest #(Bits_per_Raw_Mem_Addr, Bits_per_Raw_Mem_Word)) + f_raw_mem_reqs <- mkPipelineFIFOF; + FIFOF #(MemoryResponse #(Bits_per_Raw_Mem_Word)) + f_raw_mem_rsps <- mkPipelineFIFOF; + + // We maintain a 1-raw_mem_word cache + Reg #(Bool) rg_cached_clean <- mkRegU; + Reg #(Raw_Mem_Addr) rg_cached_raw_mem_addr <- mkRegU; + Reg #(Raw_Mem_Word) rg_cached_raw_mem_word <- mkRegU; + + // Ad hoc ISA-test simulation support: watch and stop on non-zero write. + // The default tohost_addr here is fragile (may change on recompilation of tests). + // Proper value can be provided with 'set_watch_tohost' method from symbol table + Reg #(Bool) rg_watch_tohost <- mkReg (False); + Reg #(Fabric_Addr) rg_tohost_addr <- mkReg ('h_8000_1000); + + // ================================================================ + // BEHAVIOR + + // ---------------------------------------------------------------- + // Reset + + function Action fa_reset_actions; + action + slave_xactor.reset; + f_raw_mem_reqs.clear; + f_raw_mem_rsps.clear; + endaction + endfunction + + rule rl_power_on_reset (rg_state == STATE_POWER_ON_RESET); + if (cfg_verbosity > 1) + $display ("%0d: Mem_Controller.rl_power_on_reset", cur_cycle); + fa_reset_actions (); + rg_state <= STATE_RESET_RELOAD_CACHE; + endrule + + rule rl_external_reset (rg_state == STATE_READY); + if (cfg_verbosity > 1) + $display ("%0d: Mem_Controller.rl_external_reset => STATE_RESET_RELOAD_CACHE", cur_cycle); + + f_reset_reqs.deq; + fa_reset_actions (); + rg_state <= STATE_RESET_RELOAD_CACHE; + f_reset_rsps.enq (?); + endrule + + // On reset, we initialize the local cache with contents of raw_mem_addr 0 + rule rl_reset_reload_cache (rg_state == STATE_RESET_RELOAD_CACHE); + let raw_mem_req = MemoryRequest {write: False, + byteen: '1, + address: 0, + data: ?}; + f_raw_mem_reqs.enq (raw_mem_req); + rg_cached_raw_mem_addr <= 0; + rg_state <= STATE_RELOADING; + if (cfg_verbosity > 1) + $display ("%0d: Mem_Controller.rl_reset_reload_cache => STATE_RELOADING", cur_cycle); + endrule + + // ---------------------------------------------------------------- + // Merge requests into a single queue, prioritizing reads over writes + + rule rl_merge_rd_req; + let rda <- pop_o (slave_xactor.o_rd_addr); + let req = Req {req_op: REQ_OP_RD, + id: rda.arid, + addr: rda.araddr, + len: rda.arlen, + size: rda.arsize, + burst: rda.arburst, + lock: rda.arlock, + cache: rda.arcache, + prot: rda.arprot, + qos: rda.arqos, + region: rda.arregion, + user: rda.aruser, + wstrb: ?, + data: ?}; + f_reqs.enq (req); + + if (cfg_verbosity > 2) begin + $display ("%0d: Mem_Controller.rl_merge_rd_req", cur_cycle); + $display (" ", fshow (rda)); + end + endrule + + (* descending_urgency = "rl_merge_rd_req, rl_merge_wr_req" *) + rule rl_merge_wr_req; + let wra <- pop_o (slave_xactor.o_wr_addr); + let wrd <- pop_o (slave_xactor.o_wr_data); + let req = Req {req_op: REQ_OP_WR, + id: wra.awid, + addr: wra.awaddr, + len: wra.awlen, + size: wra.awsize, + burst: wra.awburst, + lock: wra.awlock, + cache: wra.awcache, + prot: wra.awprot, + qos: wra.awqos, + region: wra.awregion, + user: wra.awuser, + wstrb: wrd.wstrb, + data: wrd.wdata}; + f_reqs.enq (req); + + if (cfg_verbosity > 2) begin + $display ("%0d: Mem_Controller.rl_merge_wr_req", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + end + endrule + + // ---------------------------------------------------------------- + // Handle request from fabric + + let req_byte_offset = f_reqs.first.addr - rg_addr_base; // within this memory unit + let req_raw_mem_addr = fn_addr_to_raw_mem_addr (req_byte_offset); + + // ---------------- + // This rule fires when there's no fabric req and the cached raw_mem_word is dirty; + // it writes back the dirty raw_mem_word; the cached raw_mem_word becomes clean + + rule rl_writeback_dirty_idle ( (rg_state == STATE_READY) + && (! f_reqs.notEmpty) // Idle + && (! rg_cached_clean)); + let raw_mem_req = MemoryRequest {write: True, + byteen: '1, + address: rg_cached_raw_mem_addr, + data: rg_cached_raw_mem_word}; + f_raw_mem_reqs.enq (raw_mem_req); + rg_cached_clean <= True; + if (cfg_verbosity > 2) + $display ("%0d: Mem_Controller.rl_writeback_dirty_idle to raw addr 0x%0h", + cur_cycle, rg_cached_raw_mem_addr); + endrule + + // ---------------- + // This rule fires on a fabric req when the cached raw_mem_word has a + // different raw_mem_word-addr and is dirty; + // it writes back the dirty raw_mem_word; the cached raw_mem_word becomes clean + + rule rl_writeback_dirty ( (rg_state == STATE_READY) + && fn_addr_is_ok (rg_addr_base, f_reqs.first.addr, rg_addr_lim, f_reqs.first.size) + && (rg_cached_raw_mem_addr != req_raw_mem_addr) + && (! rg_cached_clean)); + let raw_mem_req = MemoryRequest {write: True, + byteen: '1, + address: rg_cached_raw_mem_addr, + data: rg_cached_raw_mem_word}; + f_raw_mem_reqs.enq (raw_mem_req); + rg_cached_clean <= True; + if (cfg_verbosity > 2) + $display ("%0d: Mem_Controller.rl_writeback_dirty to raw addr 0x%0h", + cur_cycle, rg_cached_raw_mem_addr); + endrule + + // ---------------- + // This rule fires on a fabric req when the cached raw_mem_word has a + // different addr and is clean; we overwrite with the correct raw_mem_word + // by reloading from memory; the new cached raw_mem_word is clean. + + rule rl_miss_clean_req ( (rg_state == STATE_READY) + && fn_addr_is_ok (rg_addr_base, f_reqs.first.addr, rg_addr_lim, f_reqs.first.size) + && (rg_cached_raw_mem_addr != req_raw_mem_addr) + && rg_cached_clean); + let raw_mem_req = MemoryRequest {write: False, + byteen: '1, + address: req_raw_mem_addr, + data: ?}; + f_raw_mem_reqs.enq (raw_mem_req); + rg_cached_raw_mem_addr <= req_raw_mem_addr; + rg_state <= STATE_RELOADING; + + if (cfg_verbosity > 2) + $display ("%0d: Mem_Controller.rl_miss_clean_req: read raw addr 0x%0h", + cur_cycle, req_raw_mem_addr); + endrule + + rule rl_reload (rg_state == STATE_RELOADING); + let raw_mem_rsp <- pop (f_raw_mem_rsps); + Raw_Mem_Word raw_mem_word = unpack (raw_mem_rsp.data); + rg_cached_raw_mem_word <= raw_mem_word; + rg_state <= STATE_READY; + rg_cached_clean <= True; + + if (cfg_verbosity > 2) begin + $display ("%0d: Mem_Controller.rl_reload: raw addr 0x%0h", cur_cycle, rg_cached_raw_mem_addr); + $display (" ", fshow (raw_mem_word)); + end + endrule + + // ---------------- + // This rule fires on a fabric read request when the cached raw_mem_word has the + // same addr ('hit'), whether clean or dirty. + // Returns the full Wd_Data-wide word containing the byte specified by the address. + // i.e., we do not extract relevant bytes here, leaving that to the requestor. + + rule rl_process_rd_req ( (rg_state == STATE_READY) + && fn_addr_is_ok (rg_addr_base, f_reqs.first.addr, rg_addr_lim, f_reqs.first.size) + && (rg_cached_raw_mem_addr == req_raw_mem_addr) + && (f_reqs.first.req_op == REQ_OP_RD)); + + // ---------------- + // We need to select the fabric data word from the raw mem word that contains the target address. + + // View the raw mem word as a vector of fabric data words (Wd_Data width words) + Vector #(Fabric_Data_per_Raw_Mem_Word, Bit #(Wd_Data)) raw_mem_word_V_fabric_data = unpack (rg_cached_raw_mem_word); + + // Get the index into this vector of the fabric word containing the target address. + // For this index, use a generous size (here Bit #(16)), and let zeroExtend pad it automaticallly. + Fabric_Addr addr = f_reqs.first.addr; + Bit #(Bits_per_Byte_in_Raw_Mem_Word) n = addr [hi_byte_in_raw_mem_word : 0]; + n = (n >> lo_fabric_data); + + // Select the fabric data word of interest + Bit #(Wd_Data) rdata = raw_mem_word_V_fabric_data [n]; + + let rdr = AXI4_Rd_Data {rid: f_reqs.first.id, + rdata: rdata, + rresp: axi4_resp_okay, + rlast: True, + ruser: f_reqs.first.user}; + slave_xactor.i_rd_data.enq (rdr); + f_reqs.deq; + + if (cfg_verbosity > 1) begin + $display ("%0d: Mem_Controller.rl_process_rd_req: ", cur_cycle); + $display (" ", fshow (f_reqs.first)); + $display (" => ", fshow (rdr)); + end + endrule + + // ---------------- + // This rule fires on a fabric write request when the cached raw_mem_word has the + // same addr ('hit'), whether clean or dirty. + + rule rl_process_wr_req ( (rg_state == STATE_READY) + && fn_addr_is_ok (rg_addr_base, f_reqs.first.addr, rg_addr_lim, f_reqs.first.size) + && (rg_cached_raw_mem_addr == req_raw_mem_addr) + && (f_reqs.first.req_op == REQ_OP_WR)); + // Get the old (cached) value of the word64 + Word64_in_Raw_Mem_Word word64_in_raw_mem_word = f_reqs.first.addr [hi_byte_in_raw_mem_word : 3]; + Vector #(Word64s_per_Raw_Mem_Word, Bit #(64)) raw_mem_word_V_Word64 = unpack (rg_cached_raw_mem_word); + Bit #(64) word64_old = raw_mem_word_V_Word64 [word64_in_raw_mem_word]; + + // Lane-adjust the new word64 + Bit #(64) word64_new = zeroExtend (f_reqs.first.data); + Bit #(8) strobe = zeroExtend (f_reqs.first.wstrb); + if ((valueOf (Wd_Data) == 32) && (f_reqs.first.addr [2] == 1'b1)) begin + // Upper 32b only + word64_new = { word64_new [31:0], 0 }; + strobe = { strobe [3:0], 0 }; + end + Bit #(64) mask = fn_strobe_to_mask (strobe); + let updated_word64 = ((word64_old & (~ mask)) | (word64_new & mask)); + + // Write it back into the cached raw_mem_word + raw_mem_word_V_Word64 [word64_in_raw_mem_word] = updated_word64; + rg_cached_raw_mem_word <= pack (raw_mem_word_V_Word64); + rg_cached_clean <= False; + + let wrr = AXI4_Wr_Resp {bid: f_reqs.first.id, + bresp: axi4_resp_okay, + buser: f_reqs.first.user}; + slave_xactor.i_wr_resp.enq (wrr); + f_reqs.deq; + + if (cfg_verbosity > 1) begin + $display ("%0d: Mem_Controller.rl_process_wr_req: ", cur_cycle); + $display (" ", fshow (f_reqs.first)); + $display (" => ", fshow (wrr)); + end + + // For simulation testing of riscv-tests/isa only: + if ((rg_watch_tohost) + && (f_reqs.first.addr == rg_tohost_addr) + && (word64_new != 0)) + begin + + $display ("%0d: Mem_Controller.rl_process_wr_req: addr 0x%0h () data 0x%0h", + cur_cycle, f_reqs.first.addr, word64_new); + let exit_value = (word64_new >> 1); + if (exit_value == 0) + $display ("PASS"); + else + $display ("FAIL %0d", exit_value); + $finish (truncate (exit_value)); + end + endrule + + // ================================================================ + // Zero-memory FSM: zero out memory. + // If needed, we must provide a way to enable it from the debug_module + // This rule should be enabled with: + // rg_cached_raw_mem_addr <= 0; + // rg_state <= STATE_ZEROING_MEM; + +`ifdef INCLUDE_INITIAL_MEMZERO + rule rl_zero_mem (rg_state == STATE_ZEROING_MEM); + let raw_mem_req = MemoryRequest {write: True, + byteen: '1, + address: rg_cached_raw_mem_addr, + data: 0}; + f_raw_mem_reqs.enq (raw_mem_req); + + // Last write + let raw_mem_words_per_mem = fn_raw_mem_words_per_mem (rg_addr_base, rg_addr_lim); + if (rg_cached_raw_mem_addr == (raw_mem_words_per_mem - 1)) begin + rg_cached_raw_mem_addr <= rg_cached_raw_mem_addr; + rg_cached_raw_mem_word <= unpack (0); + rg_cached_clean <= True; + rg_state <= STATE_READY; + + // if (cfg_verbosity != 0) + $display ("%0d: Mem_Controller: zeroed %0d raw-memory locations (%0d-bit words)", + cur_cycle, raw_mem_words_per_mem, valueOf (Bits_per_Raw_Mem_Word)); + end + else + rg_cached_raw_mem_addr <= rg_cached_raw_mem_addr + 1; + endrule +`endif + + // ================================================================ + // Invalid address + + rule rl_invalid_rd_address ( (rg_state == STATE_READY) + && (! fn_addr_is_ok (rg_addr_base, f_reqs.first.addr, rg_addr_lim, f_reqs.first.size)) + && (f_reqs.first.req_op == REQ_OP_RD)); + Fabric_Data rdata = zeroExtend (f_reqs.first.addr); + let rdr = AXI4_Rd_Data {rid: f_reqs.first.id, + rdata: rdata, // for debugging only + rresp: axi4_resp_slverr, + rlast: True, + ruser: f_reqs.first.user}; + slave_xactor.i_rd_data.enq (rdr); + f_reqs.deq; + + $write ("%0d: ERROR: Mem_Controller:", cur_cycle); + if (! fn_addr_is_aligned (f_reqs.first.addr, f_reqs.first.size)) + $display (" read-addr is misaligned"); + else + $display (" read-addr is out of bounds"); + $display (" rg_addr_base 0x%0h rg_addr_lim 0x%0h", rg_addr_base, rg_addr_lim); + $display (" ", fshow (f_reqs.first)); + $display (" => ", fshow (rdr)); + endrule + + rule rl_invalid_wr_address ( (rg_state == STATE_READY) + && (! fn_addr_is_ok (rg_addr_base, f_reqs.first.addr, rg_addr_lim, f_reqs.first.size)) + && (f_reqs.first.req_op == REQ_OP_WR)); + let wrr = AXI4_Wr_Resp {bid: f_reqs.first.id, + bresp: axi4_resp_slverr, + buser: f_reqs.first.user}; + slave_xactor.i_wr_resp.enq (wrr); + f_reqs.deq; + + $write ("%0d: ERROR: Mem_Controller:", cur_cycle); + if (! fn_addr_is_aligned (f_reqs.first.addr, f_reqs.first.size)) + $display (" write-addr is misaligned"); + else + $display (" write-addr is out of bounds"); + $display (" rg_addr_base 0x%0h rg_addr_lim 0x%0h", rg_addr_base, rg_addr_lim); + $display (" ", fshow (f_reqs.first)); + $display (" => ", fshow (wrr)); + endrule + + // ================================================================ + // INTERFACE + + // Reset + interface server_reset = toGPServer (f_reset_reqs, f_reset_rsps); + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim) if (rg_state == STATE_READY); + rg_addr_base <= addr_base; + rg_addr_lim <= addr_lim; + $display ("%0d: Mem_Controller.set_addr_map: addr_base 0x%0h addr_lim 0x%0h", + cur_cycle, addr_base, addr_lim); + +`ifdef INCLUDE_INITIAL_MEMZERO + rg_cached_raw_mem_addr <= 0; + rg_state <= STATE_ZEROING_MEM; + $display ("%0d: Mem_Controller.set_addr_map: zeroing memory from 0x%0h to 0x%0h", + cur_cycle, addr_base, addr_lim); +`endif + endmethod + + // Main Fabric Reqs/Rsps + interface slave = slave_xactor.axi_side; + + // To raw memory (outside the SoC) + interface to_raw_mem = toGPClient (f_raw_mem_reqs, f_raw_mem_rsps); + + // For ISA tests: watch memory writes to addr + method Action set_watch_tohost (Bool watch_tohost, Fabric_Addr tohost_addr); + rg_watch_tohost <= watch_tohost; + rg_tohost_addr <= tohost_addr; + endmethod +endmodule + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/SoC_Fabric.bsv b/src_Testbench/SoC/SoC_Fabric.bsv new file mode 100644 index 0000000..c547159 --- /dev/null +++ b/src_Testbench/SoC/SoC_Fabric.bsv @@ -0,0 +1,154 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +package SoC_Fabric; + +// ================================================================ +// Defines a SoC Fabric that is a specialization of AXI4_Lite_Fabric +// for this particular SoC. + +// ================================================================ +// Project imports + +import AXI4_Types :: *; +import AXI4_Fabric :: *; + +import Fabric_Defs :: *; // for Wd_Addr, Wd_Data, Wd_User +import SoC_Map :: *; // for Num_Masters, Num_Slaves + +// ================================================================ +// Slave address decoder +// Identifies whether a given addr is legal and, if so, which slave services it. + +typedef Bit #(TLog #(Num_Slaves)) Slave_Num; + +// ================================================================ +// Specialization of parameterized AXI4 fabric for this SoC. + +typedef AXI4_Fabric_IFC #(Num_Masters, + Num_Slaves, + Wd_Id, + Wd_Addr, + Wd_Data, + Wd_User) Fabric_IFC; + +// ---------------- + +(* synthesize *) +module mkFabric (Fabric_IFC); + + SoC_Map_IFC soc_map <- mkSoC_Map; + + function Tuple2 #(Bool, Slave_Num) fn_addr_to_slave_num (Fabric_Addr addr); + + // Main Mem + if ( (soc_map.m_mem0_controller_addr_base <= addr) + && (addr < soc_map.m_mem0_controller_addr_lim)) + return tuple2 (True, fromInteger (mem0_controller_slave_num)); + + // Boot ROM + else if ( (soc_map.m_boot_rom_addr_base <= addr) + && (addr < soc_map.m_boot_rom_addr_lim)) + return tuple2 (True, fromInteger (boot_rom_slave_num)); + +`ifdef Near_Mem_TCM + // TCM + else if ( (soc_map.m_tcm_addr_base <= addr) + && (addr < soc_map.m_tcm_addr_lim)) + return tuple2 (True, fromInteger (tcm_back_door_slave_num)); +`endif + + // UART + else if ( (soc_map.m_uart0_addr_base <= addr) + && (addr < soc_map.m_uart0_addr_lim)) + return tuple2 (True, fromInteger (uart0_slave_num)); + +`ifdef HTIF_MEMORY + else if ( (soc_map.m_htif_addr_base <= addr) + && (addr < soc_map.m_htif_addr_lim)) + return tuple2 (True, fromInteger (htif_slave_num)); +`endif + +`ifdef INCLUDE_ACCEL0 + // Accelerator 0 + else if ( (soc_map.m_accel0_addr_base <= addr) + && (addr < soc_map.m_accel0_addr_lim)) + return tuple2 (True, fromInteger (accel0_slave_num)); +`endif + + else + return tuple2 (False, ?); + endfunction + + AXI4_Fabric_IFC #(Num_Masters, Num_Slaves, Wd_Id, Wd_Addr, Wd_Data, Wd_User) + fabric <- mkAXI4_Fabric (fn_addr_to_slave_num); + + return fabric; +endmodule + +// ================================================================ +// Specialization of parameterized AXI4 fabric for this SoC. + +typedef AXI4_Fabric_IFC #(Num_Masters, + Num_Slaves, + Wd_Id, + Wd_Addr, + Wd_Data, + Wd_User) Fabric_AXI4_IFC; + +// ---------------- + +(* synthesize *) +module mkFabric_AXI4 (Fabric_AXI4_IFC); + + SoC_Map_IFC soc_map <- mkSoC_Map; + + function Tuple2 #(Bool, Slave_Num) fn_addr_to_slave_num (Fabric_Addr addr); + + // Main Mem + if ( (soc_map.m_mem0_controller_addr_base <= addr) + && (addr < soc_map.m_mem0_controller_addr_lim)) + return tuple2 (True, fromInteger (mem0_controller_slave_num)); + + // Boot ROM + else if ( (soc_map.m_boot_rom_addr_base <= addr) + && (addr < soc_map.m_boot_rom_addr_lim)) + return tuple2 (True, fromInteger (boot_rom_slave_num)); + +`ifdef Near_Mem_TCM + // TCM + else if ( (soc_map.m_tcm_addr_base <= addr) + && (addr < soc_map.m_tcm_addr_lim)) + return tuple2 (True, fromInteger (tcm_back_door_slave_num)); +`endif + + // UART + else if ( (soc_map.m_uart0_addr_base <= addr) + && (addr < soc_map.m_uart0_addr_lim)) + return tuple2 (True, fromInteger (uart0_slave_num)); + +`ifdef HTIF_MEMORY + else if ( (soc_map.m_htif_addr_base <= addr) + && (addr < soc_map.m_htif_addr_lim)) + return tuple2 (True, fromInteger (htif_slave_num)); +`endif + +`ifdef INCLUDE_ACCEL0 + // Accelerator 0 + else if ( (soc_map.m_accel0_addr_base <= addr) + && (addr < soc_map.m_accel0_addr_lim)) + return tuple2 (True, fromInteger (accel0_slave_num)); +`endif + + else + return tuple2 (False, ?); + endfunction + + AXI4_Fabric_IFC #(Num_Masters, Num_Slaves, Wd_Id, Wd_Addr, Wd_Data, Wd_User) + fabric <- mkAXI4_Fabric (fn_addr_to_slave_num); + + return fabric; +endmodule + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/SoC_Map.bsv b/src_Testbench/SoC/SoC_Map.bsv new file mode 100644 index 0000000..a6d7216 --- /dev/null +++ b/src_Testbench/SoC/SoC_Map.bsv @@ -0,0 +1,273 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +package SoC_Map; + +// ================================================================ +// This module defines the overall 'address map' of the SoC, showing +// the addresses serviced by each slave IP, and which addresses are +// memory vs. I/O. + +// ***** WARNING! WARNING! WARNING! ***** + +// During system integration, this address map should be identical to +// the system interconnect settings (e.g., routing of requests between +// masters and slaves). This map is also needed by software so that +// it knows how to address various IPs. + +// This module contains no state; it just has constants, and so can be +// freely instantiated at multiple places in the SoC module hierarchy +// at no hardware cost. It allows this map to be defined in one +// place and shared across the SoC. + +// ================================================================ +// Exports + +export SoC_Map_IFC (..), mkSoC_Map; + +// export fn_addr_in_range; + +export Num_Masters; +export imem_master_num; +export dmem_master_num; + +export Num_Slaves; +export boot_rom_slave_num; +export mem0_controller_slave_num; +export uart0_slave_num; + +export N_External_Interrupt_Sources; +export n_external_interrupt_sources; +export irq_num_uart0; + +// ================================================================ +// Bluespec library imports + +// None + +// ================================================================ +// Project imports + +import Fabric_Defs :: *; // Only for type Fabric_Addr + +// ================================================================ +// Interface and module for the address map + +interface SoC_Map_IFC; + (* always_ready *) method Fabric_Addr m_near_mem_io_addr_base; + (* always_ready *) method Fabric_Addr m_near_mem_io_addr_size; + (* always_ready *) method Fabric_Addr m_near_mem_io_addr_lim; + + (* always_ready *) method Fabric_Addr m_plic_addr_base; + (* always_ready *) method Fabric_Addr m_plic_addr_size; + (* always_ready *) method Fabric_Addr m_plic_addr_lim; + + (* always_ready *) method Fabric_Addr m_uart0_addr_base; + (* always_ready *) method Fabric_Addr m_uart0_addr_size; + (* always_ready *) method Fabric_Addr m_uart0_addr_lim; + + (* always_ready *) method Fabric_Addr m_boot_rom_addr_base; + (* always_ready *) method Fabric_Addr m_boot_rom_addr_size; + (* always_ready *) method Fabric_Addr m_boot_rom_addr_lim; + + (* always_ready *) method Fabric_Addr m_mem0_controller_addr_base; + (* always_ready *) method Fabric_Addr m_mem0_controller_addr_size; + (* always_ready *) method Fabric_Addr m_mem0_controller_addr_lim; + + (* always_ready *) method Fabric_Addr m_tcm_addr_base; + (* always_ready *) method Fabric_Addr m_tcm_addr_size; + (* always_ready *) method Fabric_Addr m_tcm_addr_lim; + + (* always_ready *) + method Bool m_is_mem_addr (Fabric_Addr addr); + + (* always_ready *) + method Bool m_is_IO_addr (Fabric_Addr addr); + + (* always_ready *) + method Bool m_is_near_mem_IO_addr (Fabric_Addr addr); + + (* always_ready *) method Bit #(64) m_pc_reset_value; + (* always_ready *) method Bit #(64) m_mtvec_reset_value; + (* always_ready *) method Bit #(64) m_nmivec_reset_value; +endinterface + +// ================================================================ + +(* synthesize *) +module mkSoC_Map (SoC_Map_IFC); + + // ---------------------------------------------------------------- + // Near_Mem_IO (including CLINT, the core-local interruptor) + + Fabric_Addr near_mem_io_addr_base = 'h_0200_0000; + Fabric_Addr near_mem_io_addr_size = 'h_0000_C000; // 48K + Fabric_Addr near_mem_io_addr_lim = near_mem_io_addr_base + near_mem_io_addr_size; + + function Bool fn_is_near_mem_io_addr (Fabric_Addr addr); + return ((near_mem_io_addr_base <= addr) && (addr < near_mem_io_addr_lim)); + endfunction + + // ---------------------------------------------------------------- + // PLIC + + Fabric_Addr plic_addr_base = 'h_0C00_0000; + Fabric_Addr plic_addr_size = 'h_0040_0000; // 4M + Fabric_Addr plic_addr_lim = plic_addr_base + plic_addr_size; + + function Bool fn_is_plic_addr (Fabric_Addr addr); + return ((plic_addr_base <= addr) && (addr < plic_addr_lim)); + endfunction + + // ---------------------------------------------------------------- + // UART 0 + + Fabric_Addr uart0_addr_base = 'hC000_0000; + Fabric_Addr uart0_addr_size = 'h0000_0080; // 128 + Fabric_Addr uart0_addr_lim = uart0_addr_base + uart0_addr_size; + + function Bool fn_is_uart0_addr (Fabric_Addr addr); + return ((uart0_addr_base <= addr) && (addr < uart0_addr_lim)); + endfunction + + // ---------------------------------------------------------------- + // Boot ROM + + Fabric_Addr boot_rom_addr_base = 'h_0000_1000; + Fabric_Addr boot_rom_addr_size = 'h_0000_1000; // 4K + Fabric_Addr boot_rom_addr_lim = boot_rom_addr_base + boot_rom_addr_size; + + function Bool fn_is_boot_rom_addr (Fabric_Addr addr); + return ((boot_rom_addr_base <= addr) && (addr < boot_rom_addr_lim)); + endfunction + + // ---------------------------------------------------------------- + // Main Mem Controller 0 + + Fabric_Addr mem0_controller_addr_base = 'h_8000_0000; + Fabric_Addr mem0_controller_addr_size = 'h_1000_0000; // 256 MB + Fabric_Addr mem0_controller_addr_lim = mem0_controller_addr_base + mem0_controller_addr_size; + + function Bool fn_is_mem0_controller_addr (Fabric_Addr addr); + return ((mem0_controller_addr_base <= addr) && (addr < mem0_controller_addr_lim)); + endfunction + + // ---------------------------------------------------------------- + // Tightly-coupled memory ('TCM'; optional) + +`ifdef Near_Mem_TCM +// Integer kB_per_TCM = 'h4; // 4KB +// Integer kB_per_TCM = 'h40; // 64KB +// Integer kB_per_TCM = 'h80; // 128KB +// Integer kB_per_TCM = 'h400; // 1 MB + Integer kB_per_TCM = 'h4000; // 16 MB +`else + Integer kB_per_TCM = 0; +`endif + Integer bytes_per_TCM = kB_per_TCM * 'h400; + + Fabric_Addr tcm_addr_base = 'h_0000_0000; + Fabric_Addr tcm_addr_size = fromInteger (bytes_per_TCM); + Fabric_Addr tcm_addr_lim = tcm_addr_base + tcm_addr_size; + + function Bool fn_is_tcm_addr (Fabric_Addr addr); + return ((tcm_addr_base <= addr) && (addr < tcm_addr_lim)); + endfunction + + // ---------------------------------------------------------------- + // Memory address predicate + // Identifies memory addresses in the Fabric. + // (Caches need this information to cache these addresses.) + + function Bool fn_is_mem_addr (Fabric_Addr addr); + return ( fn_is_boot_rom_addr (addr) + || fn_is_mem0_controller_addr (addr) + || fn_is_tcm_addr (addr) + ); + endfunction + + // ---------------------------------------------------------------- + // I/O address predicate + // Identifies I/O addresses in the Fabric. + // (Caches need this information to avoid cacheing these addresses.) + + function Bool fn_is_IO_addr (Fabric_Addr addr); + return ( fn_is_near_mem_io_addr (addr) + || fn_is_plic_addr (addr) + || fn_is_uart0_addr (addr) + ); + endfunction + + // ---------------------------------------------------------------- + // PC, MTVEC and NMIVEC reset values + + Bit #(64) pc_reset_value = boot_rom_addr_base; + Bit #(64) mtvec_reset_value = 'h1000; // TODO + Bit #(64) nmivec_reset_value = ?; // TODO + + // ================================================================ + // INTERFACE + + method Fabric_Addr m_near_mem_io_addr_base = near_mem_io_addr_base; + method Fabric_Addr m_near_mem_io_addr_size = near_mem_io_addr_size; + method Fabric_Addr m_near_mem_io_addr_lim = near_mem_io_addr_lim; + + method Fabric_Addr m_plic_addr_base = plic_addr_base; + method Fabric_Addr m_plic_addr_size = plic_addr_size; + method Fabric_Addr m_plic_addr_lim = plic_addr_lim; + + method Fabric_Addr m_uart0_addr_base = uart0_addr_base; + method Fabric_Addr m_uart0_addr_size = uart0_addr_size; + method Fabric_Addr m_uart0_addr_lim = uart0_addr_lim; + + method Fabric_Addr m_boot_rom_addr_base = boot_rom_addr_base; + method Fabric_Addr m_boot_rom_addr_size = boot_rom_addr_size; + method Fabric_Addr m_boot_rom_addr_lim = boot_rom_addr_lim; + + method Fabric_Addr m_mem0_controller_addr_base = mem0_controller_addr_base; + method Fabric_Addr m_mem0_controller_addr_size = mem0_controller_addr_size; + method Fabric_Addr m_mem0_controller_addr_lim = mem0_controller_addr_lim; + + method Fabric_Addr m_tcm_addr_base = tcm_addr_base; + method Fabric_Addr m_tcm_addr_size = tcm_addr_size; + method Fabric_Addr m_tcm_addr_lim = tcm_addr_lim; + + method Bool m_is_mem_addr (Fabric_Addr addr) = fn_is_mem_addr (addr); + + method Bool m_is_IO_addr (Fabric_Addr addr) = fn_is_IO_addr (addr); + + method Bool m_is_near_mem_IO_addr (Fabric_Addr addr) = fn_is_near_mem_io_addr (addr); + + method Bit #(64) m_pc_reset_value = pc_reset_value; + method Bit #(64) m_mtvec_reset_value = mtvec_reset_value; + method Bit #(64) m_nmivec_reset_value = nmivec_reset_value; +endmodule + +// ================================================================ +// Count and master-numbers of masters in the fabric. + +typedef 2 Num_Masters; + +Integer imem_master_num = 0; +Integer dmem_master_num = 1; + +// ================================================================ +// Count and slave-numbers of slaves in the fabric. + +typedef 3 Num_Slaves; + +Integer boot_rom_slave_num = 0; +Integer mem0_controller_slave_num = 1; +Integer uart0_slave_num = 2; + +// ================================================================ +// Interrupt request numbers (== index in to vector of +// interrupt-request lines in Core) + +typedef 16 N_External_Interrupt_Sources; +Integer n_external_interrupt_sources = valueOf (N_External_Interrupt_Sources); + +Integer irq_num_uart0 = 0; + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/SoC_Top.bsv b/src_Testbench/SoC/SoC_Top.bsv new file mode 100644 index 0000000..41351a5 --- /dev/null +++ b/src_Testbench/SoC/SoC_Top.bsv @@ -0,0 +1,354 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved. + +package SoC_Top; + +// ================================================================ +// This package is the SoC "top-level". + +// (Note: there will be further layer(s) above this for +// simulation top-level, FPGA top-level, etc.) + +// ================================================================ +// Exports + +export SoC_Top_IFC (..), mkSoC_Top; + +// ================================================================ +// BSV library imports + +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import Connectable :: *; +import Memory :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +// Main fabric +import AXI4_Types :: *; +import AXI4_Fabric :: *; + +import Fabric_Defs :: *; +import SoC_Map :: *; +import SoC_Fabric :: *; + +// SoC components (CPU, mem, and IPs) + +import Core_IFC :: *; +import CoreW :: *; +import PLIC :: *; // For interface to PLIC interrupt sources, in Core_IFC + +import Boot_ROM :: *; +import Mem_Controller :: *; +import UART_Model :: *; + +`ifdef INCLUDE_CAMERA_MODEL +import Camera_Model :: *; +`endif + +`ifdef INCLUDE_ACCEL0 +import Accel_AES :: *; +`endif + +`ifdef INCLUDE_TANDEM_VERIF +import TV_Info :: *; +`endif + +`ifdef INCLUDE_GDB_CONTROL +import External_Control :: *; // Control requests/responses from HSFE +import Debug_Module :: *; +`endif + +// ================================================================ +// Local types and constants + +typedef enum {SOC_START, SOC_RESETTING, SOC_IDLE} SoC_State +deriving (Bits, Eq, FShow); + +// ================================================================ +// The outermost interface of the SoC + +interface SoC_Top_IFC; + // Set core's verbosity + method Action set_verbosity (Bit #(4) verbosity, Bit #(64) logdelay); + +`ifdef INCLUDE_GDB_CONTROL + // To external controller (E.g., GDB) + interface Server #(Control_Req, Control_Rsp) server_external_control; +`endif + +`ifdef INCLUDE_TANDEM_VERIF + // To tandem verifier + interface Get #(Info_CPU_to_Verifier) tv_verifier_info_get; +`endif + + // External real memory + interface MemoryClient #(Bits_per_Raw_Mem_Addr, Bits_per_Raw_Mem_Word) to_raw_mem; + + // UART0 to external console + interface Get #(Bit #(8)) get_to_console; + interface Put #(Bit #(8)) put_from_console; + + // For ISA tests: watch memory writes to addr + method Action set_watch_tohost (Bool watch_tohost, Fabric_Addr tohost_addr); +endinterface + +// ================================================================ +// The module + +(* synthesize *) +module mkSoC_Top (SoC_Top_IFC); + Integer verbosity = 0; // Normally 0; non-zero for debugging + + Reg #(SoC_State) rg_state <- mkReg (SOC_START); + + // SoC address map specifying base and limit for memories, IPs, etc. + SoC_Map_IFC soc_map <- mkSoC_Map; + + // Core: CPU + Near_Mem_IO (CLINT) + PLIC + Debug module (optional) + TV (optional) + Core_IFC #(N_External_Interrupt_Sources) core <- mkCoreW; + + // SoC Fabric + Fabric_AXI4_IFC fabric <- mkFabric_AXI4; + + // SoC Boot ROM + Boot_ROM_IFC boot_rom <- mkBoot_ROM; + + // SoC Memory + Mem_Controller_IFC mem0_controller <- mkMem_Controller; + + // SoC IPs + UART_IFC uart0 <- mkUART; + +`ifdef INCLUDE_ACCEL0 + // Accel0 master to fabric + Accel_AES_IFC accel_aes0 <- mkAccel_AES; +`endif + + // ---------------- + // SoC fabric master connections + // Note: see 'SoC_Map' for 'master_num' definitions + + // CPU IMem master to fabric + mkConnection (core.cpu_imem_master, fabric.v_from_masters [imem_master_num]); + + // CPU DMem master to fabric + mkConnection (core.cpu_dmem_master, fabric.v_from_masters [dmem_master_num]); + +`ifdef INCLUDE_ACCEL0 + // accel_aes0 to fabric + mkConnection (accel_aes0.master, fabric.v_from_masters [accel0_master_num]); +`endif + + // ---------------- + // SoC fabric slave connections + // Note: see 'SoC_Map' for 'slave_num' definitions + + // Fabric to Boot ROM + mkConnection (fabric.v_to_slaves [boot_rom_slave_num], boot_rom.slave); + + // Fabric to Mem Controller + mkConnection (fabric.v_to_slaves [mem0_controller_slave_num], mem0_controller.slave); + + // Fabric to UART0 + mkConnection (fabric.v_to_slaves [uart0_slave_num], uart0.slave); + +`ifdef INCLUDE_ACCEL0 + // Fabric to accel_aes0 + mkConnection (fabric.v_to_slaves [accel0_slave_num], accel_aes0.slave); +`endif + +`ifdef HTIF_MEMORY + AXI4_Slave_IFC#(Wd_Id, Wd_Addr, Wd_Data, Wd_User) htif <- mkAxi4LRegFile(bytes_per_htif); + + mkConnection (fabric.v_to_slaves [htif_slave_num], htif); +`endif + + // ---------------- + // Connect interrupt sources for CPU external interrupt request inputs. + + // Reg #(Bool) rg_intr_prev <- mkReg (False); // For debugging only + + (* fire_when_enabled, no_implicit_conditions *) + rule rl_connect_external_interrupt_requests; + Bool intr = uart0.intr; + + // UART + core.core_external_interrupt_sources [irq_num_uart0].m_interrupt_req (intr); + + // Tie off remaining interrupt request lines (1..N) + for (Integer j = 1; j < valueOf (N_External_Interrupt_Sources); j = j + 1) + core.core_external_interrupt_sources [j].m_interrupt_req (False); + + /* For debugging only + if ((! rg_intr_prev) && intr) + $display ("SoC_Top: intr posedge"); + else if (rg_intr_prev && (! intr)) + $display ("SoC_Top: intr negedge"); + + rg_intr_prev <= intr; + */ + endrule + + // ================================================================ + // RESET BEHAVIOR WITHOUT DEBUG MODULE + + rule rl_reset_start_2 (rg_state == SOC_START); + core.cpu_reset_server.request.put (?); + mem0_controller.server_reset.request.put (?); + uart0.server_reset.request.put (?); + + fabric.reset; + + rg_state <= SOC_RESETTING; + + $display ("%0d: SoC_Top. Reset start ...", cur_cycle); + endrule + + // ================================================================ + // BEHAVIOR WITH DEBUG MODULE + +`ifdef INCLUDE_GDB_CONTROL + // ---------------------------------------------------------------- + // External debug requests and responses + + FIFOF #(Control_Req) f_external_control_reqs <- mkFIFOF; + FIFOF #(Control_Rsp) f_external_control_rsps <- mkFIFOF; + + Control_Req req = f_external_control_reqs.first; + + rule rl_handle_external_req_read_request (req.op == external_control_req_op_read_control_fabric); + f_external_control_reqs.deq; + core.dm_dmi.read_addr (truncate (req.arg1)); + if (verbosity != 0) begin + $display ("%0d: SoC_Top.rl_handle_external_req_read_request", cur_cycle); + $display (" ", fshow (req)); + end + endrule + + rule rl_handle_external_req_read_response; + let x <- core.dm_dmi.read_data; + let rsp = Control_Rsp {status: external_control_rsp_status_ok, result: signExtend (x)}; + f_external_control_rsps.enq (rsp); + if (verbosity != 0) begin + $display ("%0d: SoC_Top.rl_handle_external_req_read_response", cur_cycle); + $display (" ", fshow (rsp)); + end + endrule + + rule rl_handle_external_req_write (req.op == external_control_req_op_write_control_fabric); + f_external_control_reqs.deq; + core.dm_dmi.write (truncate (req.arg1), truncate (req.arg2)); + // let rsp = Control_Rsp {status: external_control_rsp_status_ok, result: 0}; + // f_external_control_rsps.enq (rsp); + if (verbosity != 0) begin + $display ("%0d: SoC_Top.rl_handle_external_req_write", cur_cycle); + $display (" ", fshow (req)); + end + endrule + + rule rl_handle_external_req_err ( (req.op != external_control_req_op_read_control_fabric) + && (req.op != external_control_req_op_write_control_fabric)); + f_external_control_reqs.deq; + let rsp = Control_Rsp {status: external_control_rsp_status_err, result: 0}; + f_external_control_rsps.enq (rsp); + + $display ("%0d: SoC_Top.rl_handle_external_req_err: unknown req.op", cur_cycle); + $display (" ", fshow (req)); + endrule + + // ---------------------------------------------------------------- + // NDM reset (all except Debug Module) request from debug module + + rule rl_reset_start (rg_state != SOC_RESETTING); + let req <- core.dm_ndm_reset_req_get.get; + + core.cpu_reset_server.request.put (?); + mem0_controller.server_reset.request.put (?); + uart0.server_reset.request.put (?); + + fabric.reset; + + rg_state <= SOC_RESETTING; + + $display ("%0d: SoC_Top.rl_reset_start (Debug Module NDM reset, all except debug module) ...", + cur_cycle); + endrule +`endif + + rule rl_reset_complete (rg_state == SOC_RESETTING); + let cpu_rsp <- core.cpu_reset_server.response.get; + let mem0_controller_rsp <- mem0_controller.server_reset.response.get; + let uart0_rsp <- uart0.server_reset.response.get; + + // Initialize address maps of slave IPs + boot_rom.set_addr_map (soc_map.m_boot_rom_addr_base, + soc_map.m_boot_rom_addr_lim); + + mem0_controller.set_addr_map (soc_map.m_mem0_controller_addr_base, + soc_map.m_mem0_controller_addr_lim); + + uart0.set_addr_map (soc_map.m_uart0_addr_base, soc_map.m_uart0_addr_lim); + + rg_state <= SOC_IDLE; + +`ifdef INCLUDE_GDB_CONTROL + $display ("%0d: SoC_Top: NDM reset complete (all except debug module)", cur_cycle); +`else + $display ("%0d: SoC_Top. Reset complete ...", cur_cycle); +`endif + + if (verbosity != 0) begin + $display (" SoC address map:"); + $display (" Boot ROM: 0x%0h .. 0x%0h", + soc_map.m_boot_rom_addr_base, + soc_map.m_boot_rom_addr_lim); + $display (" Mem0 Controller: 0x%0h .. 0x%0h", + soc_map.m_mem0_controller_addr_base, + soc_map.m_mem0_controller_addr_lim); + $display (" UART0: 0x%0h .. 0x%0h", + soc_map.m_uart0_addr_base, + soc_map.m_uart0_addr_lim); + end + endrule + + // ================================================================ + // INTERFACE + + method Action set_verbosity (Bit #(4) verbosity, Bit #(64) logdelay); + core.set_verbosity (verbosity, logdelay); + endmethod + + // To external controller (E.g., GDB) +`ifdef INCLUDE_GDB_CONTROL + interface server_external_control = toGPServer (f_external_control_reqs, f_external_control_rsps); +`endif + +`ifdef INCLUDE_TANDEM_VERIF + // To tandem verifier + interface tv_verifier_info_get = core.tv_verifier_info_get; +`endif + + // External real memory + interface to_raw_mem = mem0_controller.to_raw_mem; + + // UART to external console + interface get_to_console = uart0.get_to_console; + interface put_from_console = uart0.put_from_console; + + // For ISA tests: watch memory writes to addr + method Action set_watch_tohost (Bool watch_tohost, Fabric_Addr tohost_addr); + mem0_controller.set_watch_tohost (watch_tohost, tohost_addr); + endmethod +endmodule: mkSoC_Top + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/Timer.bsv b/src_Testbench/SoC/Timer.bsv new file mode 100644 index 0000000..337022e --- /dev/null +++ b/src_Testbench/SoC/Timer.bsv @@ -0,0 +1,371 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +package Timer; + +// ================================================================ +// This package implements a slave IP with two unrelated pieces of +// RISC-V functionality: +// +// - real-time timer: +// Two 64-bit memory-mapped registers (rg_time and rg_timecmp). +// Delivers an external interrupt whenever rg_timecmp >= rg_time. +// The timer is cleared when rg_timecmp is written. +// Can be used for the RISC-V v1.10 Privilege Spec 'mtime' and +// 'mtimecmp', and provides a memory-mapped API to access them. +// +// Offset/Size Name Function +// 'h_4000/8 Bytes mtimecmp R/W the hart0 mtimecmp register +// 'h_BFF8/8 Bytes mtime R/W the mtime register +// +// - Memory-mapped location for software interrupts. +// +// Offset/Size Name Function +// 'h_0000/8 Bytes msip R/W Writing LSB=1 generates a software interrupt to hart0 +// +// ---------------- +// This slave IP can be attached to fabrics with 32b- or 64b-wide data channels. +// (NOTE: this is the width of the fabric, which can be chosen +// independently of the native width of a CPU master on the +// fabric (such as RV32/RV64 for a RISC-V CPU). +// When attached to 32b-wide fabric, 64-bit locations must be +// read/written in two 32b transaction, once for the lower 32b and +// once for the upper 32b. +// +// Some of the 'truncate()'s and 'zeroExtend()'s below are no-ops but +// necessary to satisfy type-checking. +// ================================================================ + +export Timer_IFC (..), mkTimer; + +// ================================================================ +// BSV library imports + +import Vector :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import ConfigReg :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; +import Semi_FIFOF :: *; +import ByteLane :: *; + +// ================================================================ +// Project imports + +import Fabric_Defs :: *; +import AXI4_Lite_Types :: *; + +// ================================================================ +// Local constants and types + +// Module state +typedef enum {MODULE_STATE_START, MODULE_STATE_READY } Module_State +deriving (Bits, Eq, FShow); + +// ================================================================ +// Interface + +interface Timer_IFC; + // Reset + interface Server #(Bit #(0), Bit #(0)) server_reset; + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim); + + // Main Fabric Reqs/Rsps + interface AXI4_Lite_Slave_IFC #(Wd_Addr, Wd_Data, Wd_User) slave; + + // Timer interrupt + // True/False = set/clear interrupt-pending in CPU's MTIP + interface Get #(Bool) get_timer_interrupt_req; + + // Software interrupt + interface Get #(Bool) get_sw_interrupt_req; +endinterface + +// ================================================================ + +(* synthesize *) +module mkTimer (Timer_IFC); + + // Verbosity: 0: quiet; 1: reset; 2: timer interrupts, all reads and writes + Reg #(Bit #(4)) cfg_verbosity <- mkConfigReg (0); + + Reg #(Module_State) rg_state <- mkReg (MODULE_STATE_START); + Reg #(Fabric_Addr) rg_addr_base <- mkRegU; + Reg #(Fabric_Addr) rg_addr_lim <- mkRegU; + + FIFOF #(Bit #(0)) f_reset_reqs <- mkFIFOF; + FIFOF #(Bit #(0)) f_reset_rsps <- mkFIFOF; + + // ---------------- + // Connector to fabric + + AXI4_Lite_Slave_Xactor_IFC #(Wd_Addr, Wd_Data, Wd_User) slave_xactor <- mkAXI4_Lite_Slave_Xactor; + + // ---------------- + // Timer registers + + Reg #(Bit #(64)) crg_time [2] <- mkCReg (2, 1); + Reg #(Bit #(64)) crg_timecmp [2] <- mkCReg (2, 0); + + Reg #(Bool) rg_mtip <- mkReg (True); + + // Timer interrupt queue + FIFOF #(Bool) f_timer_interrupt_req <- mkFIFOF; + + // ---------------- + // Software-interrupt registers + + Reg #(Bool) rg_msip <- mkRegU; + + // Software interrupt queue + FIFOF #(Bool) f_sw_interrupt_req <- mkFIFOF; + + // ================================================================ + // BEHAVIOR + + // ---------------------------------------------------------------- + // Reset + + // ns: 06/12/17 -- GDB reset bug fix + // The explicit condition was preventing the Timer from being reset by GDB + // after the initial hardware reset. This meant that on issuing a reset + // command from GDB, control was never returned by hardware. The explicit + // condition is not necessary as on a GDB reset, it's okay if the Timer + // returns to its reset state irrespective of its current state + // rule rl_reset (rg_state == MODULE_STATE_START); + rule rl_reset; + f_reset_reqs.deq; + slave_xactor.reset; + f_timer_interrupt_req.clear; + f_sw_interrupt_req.clear; + + rg_state <= MODULE_STATE_READY; + crg_time [1] <= 1; + crg_timecmp [1] <= 0; + rg_mtip <= True; + rg_msip <= False; + + f_reset_rsps.enq (?); + + if (cfg_verbosity != 0) + $display ("%0d: Timer.rl_reset", cur_cycle); + endrule + + // ---------------------------------------------------------------- + // Keep time and generate interrupt + + // Increment time, but saturate, do not wrap-around + (* fire_when_enabled, no_implicit_conditions *) + rule rl_tick_timer ((rg_state == MODULE_STATE_READY) && (crg_time [0] != '1)); + crg_time [0] <= crg_time [0] + 1; + endrule + + // Compare and generate timer interrupt request + Bool new_mtip = (crg_time [0] >= crg_timecmp [0]); + rule rl_compare ((rg_state == MODULE_STATE_READY) + && (rg_mtip != new_mtip)); + rg_mtip <= new_mtip; + f_timer_interrupt_req.enq (new_mtip); + if (cfg_verbosity > 1) + $display ("%0d: Timer.rl_compare: new MTIP = %0d, time = %0d, timecmp = %0d", + cur_cycle, new_mtip, crg_time [0], crg_timecmp [0]); + endrule + + // ---------------------------------------------------------------- + // Handle fabric read requests + + rule rl_process_rd_req (rg_state == MODULE_STATE_READY); + let rda <- pop_o (slave_xactor.o_rd_addr); + if (cfg_verbosity > 1) begin + $display ("%0d: Timer.rl_process_rd_req: rg_mtip = %0d", cur_cycle, rg_mtip); + $display (" ", fshow (rda)); + end + + let byte_addr = rda.araddr - rg_addr_base; + + Bit #(Wd_Data) rdata = 0; + AXI4_Lite_Resp rresp = AXI4_LITE_OKAY; + + case (byte_addr) + 'h_0000: rdata = zeroExtend (rg_msip ? 1'b1 : 1'b0); + 'h_4000: rdata = truncate (crg_timecmp [0]); // truncates for 32b fabrics + 'h_BFF8: rdata = truncate (crg_time [0]); // truncates for 32b fabrics + + // The following ALIGN4B reads are only needed for 32b fabrics + 'h_0004: rdata = 0; + 'h_4004: rdata = zeroExtend (crg_timecmp [0] [63:32]); // extends for 64b fabrics + 'h_BFFC: rdata = zeroExtend (crg_time [0] [63:32]); // extends for 64b fabrics + default: begin + rresp = AXI4_LITE_SLVERR; + + $display ("%0d: ERROR: Timer.rl_process_rd_req: unrecognized addr", cur_cycle); + $display (" ", fshow (rda)); + end + endcase + + let rdr = AXI4_Lite_Rd_Data {rresp: rresp, rdata: rdata, ruser: rda.aruser}; + slave_xactor.i_rd_data.enq (rdr); + + if (cfg_verbosity > 1) begin + $display (" <= ", fshow (rdr)); + end + endrule + + // ---------------------------------------------------------------- + // Handle fabric write requests + + rule rl_process_wr_req (rg_state == MODULE_STATE_READY); + let wra <- pop_o (slave_xactor.o_wr_addr); + let wrd <- pop_o (slave_xactor.o_wr_data); + + if (cfg_verbosity > 1) begin + $display ("%0d: Timer.rl_process_wr_req: rg_mtip = %0d", cur_cycle, rg_mtip); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + end + + let byte_addr = wra.awaddr - rg_addr_base; + + AXI4_Lite_Resp bresp = AXI4_LITE_OKAY; + + case (byte_addr) + 'h_0000: begin + Bool new_msip = (wrd.wdata [0] == 1'b1); + if (rg_msip != new_msip) begin + rg_msip <= new_msip; + f_sw_interrupt_req.enq (new_msip); + if (cfg_verbosity > 1) + $display (" new MSIP = %0d", new_msip); + end + end + 'h_4000: begin + Bit #(64) old_timecmp = crg_timecmp [1]; + Bit #(64) new_timecmp = fn_update_strobed_bytes (old_timecmp, + zeroExtend (wrd.wdata), + zeroExtend (wrd.wstrb)); + crg_timecmp [1] <= new_timecmp; + + if (cfg_verbosity > 1) begin + $display (" Writing MTIMECMP"); + $display (" old MTIMECMP = 0x%0h", old_timecmp); + $display (" new MTIMECMP = 0x%0h", new_timecmp); + $display (" cur MTIME = 0x%0h", crg_time [1]); + $display (" new MTIMECMP - MTIME = 0x%0h", new_timecmp - crg_time [1]); + end + end + 'h_BFF8: begin + Bit #(64) old_time = crg_time [1]; + Bit #(64) new_time = fn_update_strobed_bytes (old_time, + zeroExtend (wrd.wdata), + zeroExtend (wrd.wstrb)); + crg_time [1] <= new_time; + + if (cfg_verbosity > 1) begin + $display (" Writing MTIME"); + $display (" old MTIME = 0x%0h", old_time); + $display (" new MTIME = 0x%0h", new_time); + end + end + + // The following ALIGN4B writes are only needed for 32b fabrics + 'h_0004: noAction; + 'h_4004: begin + Bit #(64) old_timecmp = crg_timecmp [1]; + Bit #(64) new_timecmp = fn_update_strobed_bytes (old_timecmp, + { wrd.wdata [31:0], 32'h0 }, + { wrd.wstrb [3:0], 4'h0 }); + crg_timecmp [1] <= new_timecmp; + + if (cfg_verbosity > 1) begin + $display (" Writing MTIMECMP"); + $display (" old MTIMECMP = 0x%0h", old_timecmp); + $display (" new MTIMECMP = 0x%0h", new_timecmp); + $display (" cur MTIME = 0x%0h", crg_time [1]); + $display (" new MTIMECMP - MTIME = 0x%0h", new_timecmp - crg_time [1]); + end + end + 'h_BFFC: begin + Bit #(64) old_time = crg_time [1]; + Bit #(64) new_time = fn_update_strobed_bytes (old_time, + { wrd.wdata [31:0], 32'h0 }, + { wrd.wstrb [3:0], 4'h0 }); + crg_time [1] <= new_time; + + if (cfg_verbosity > 1) begin + $display (" Writing MTIME"); + $display (" old MTIME = 0x%0h", old_time); + $display (" new MTIME = 0x%0h", new_time); + end + end + + default: begin + $display ("%0d: ERROR: Timer.rl_process_wr_req: unrecognized addr", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + bresp = AXI4_LITE_SLVERR; + end + endcase + + let wrr = AXI4_Lite_Wr_Resp {bresp: bresp, buser: wra.awuser}; + + slave_xactor.i_wr_resp.enq (wrr); + + if (cfg_verbosity > 1) begin + $display (" <= ", fshow (wrr)); + end + endrule + + // ================================================================ + // INTERFACE + + // Reset + interface server_reset = toGPServer (f_reset_reqs, f_reset_rsps); + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim); + if (addr_base [1:0] != 0) + $display ("%0d: WARNING: Timer.set_addr_map: addr_base 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_base); + + if (addr_lim [1:0] != 0) + $display ("%0d: WARNING: Timer.set_addr_map: addr_lim 0x%0h is not 4-Byte-aligned", + cur_cycle, addr_lim); + + rg_addr_base <= addr_base; + rg_addr_lim <= addr_lim; + endmethod + + // Main Fabric Reqs/Rsps + interface slave = slave_xactor.axi_side; + + // External interrupt + interface Get get_timer_interrupt_req; + method ActionValue#(Bool) get(); + let x <- toGet (f_timer_interrupt_req).get; + if (cfg_verbosity > 1) + $display ("%0d: Timer: get_timer_interrupt_req: %x", cur_cycle, x); + return x; + endmethod + endinterface + + // Software interrupt + interface Get get_sw_interrupt_req; + method ActionValue#(Bool) get(); + let x <- toGet (f_sw_interrupt_req).get; + if (cfg_verbosity > 1) + $display ("%0d: Timer: get_sw_interrupt_req: %x", cur_cycle, x); + return x; + endmethod + endinterface +endmodule + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/UART_Model.bsv b/src_Testbench/SoC/UART_Model.bsv new file mode 100644 index 0000000..f6fded8 --- /dev/null +++ b/src_Testbench/SoC/UART_Model.bsv @@ -0,0 +1,451 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +package UART_Model; + +// ================================================================ +// This package implements a slave IP, a UART model. +// +// This is a very basic (and very incomplete!!) model of a classic +// 16550 UART, just enough to do basic character reads and writes. +// +// ---------------- +// This slave IP can be attached to fabrics with 32b- or 64b-wide data channels. +// (NOTE: this is the width of the fabric, which can be chosen +// independently of the native width of a CPU master on the +// fabric (such as RV32/RV64 for a RISC-V CPU). +// When attached to 32b-wide fabric, 64-bit locations must be +// read/written in two 32b transaction, once for the lower 32b and +// once for the upper 32b. +// +// Some of the 'truncate()'s and 'zeroExtend()'s below are no-ops but +// necessary to satisfy type-checking. +// ================================================================ + +export UART_IFC (..), mkUART; + +// ================================================================ +// BSV library imports + +import Vector :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import ConfigReg :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; +import Semi_FIFOF :: *; + +// ================================================================ +// Project imports + +import AXI4_Types :: *; +import Fabric_Defs :: *; + +// ================================================================ +// UART registers and their address offsets + +Bit #(3) addr_UART_rbr = 3'h_0; // receiver buffer register (read only) +Bit #(3) addr_UART_thr = 3'h_0; // transmitter holding register (write only) +Bit #(3) addr_UART_ier = 3'h_1; // interrupt enable register +Bit #(3) addr_UART_iir = 3'h_2; // interrupt id register (read-only) +Bit #(3) addr_UART_lcr = 3'h_3; // line control reg +Bit #(3) addr_UART_mcr = 3'h_4; // modem control reg +Bit #(3) addr_UART_lsr = 3'h_5; // line status reg (read-only) +Bit #(3) addr_UART_msr = 3'h_6; // modem status reg (read-only) +Bit #(3) addr_UART_scr = 3'h_7; // scratch pad reg + +// Aliased registers, depending on control bits +Bit #(3) addr_UART_dll = 3'h_0; // divisor latch low +Bit #(3) addr_UART_dlm = 3'h_1; // divisor latch high +Bit #(3) addr_UART_fcr = 3'h_2; // fifo control reg (write-only) + +// Bit fields of ier (Interrupt Enable Register) +Bit #(8) uart_ier_erbfi = 8'h_01; // Enable Received Data Available Interrupt +Bit #(8) uart_ier_etbei = 8'h_02; // Enable Transmitter Holding Register Empty Interrupt +Bit #(8) uart_ier_elsi = 8'h_04; // Enable Receiver Line Status Interrupt +Bit #(8) uart_ier_edssi = 8'h_08; // Enable Modem Status Interrupt + +// iir values (Interrupt Identification Register) in decreasing priority of interrupts +Bit #(8) uart_iir_none = 8'h_01; // None (no interrupts pending) +Bit #(8) uart_iir_rls = 8'h_06; // Receiver Line Status +Bit #(8) uart_iir_rda = 8'h_04; // Received Data Available +Bit #(8) uart_iir_cti = 8'h_0C; // Character Timeout Indication +Bit #(8) uart_iir_thre = 8'h_02; // Transmitter Holding Register Empty +Bit #(8) uart_iir_ms = 8'h_00; // Modem Status + +// Bit fields of LCR +Bit #(8) uart_lcr_dlab = 8'h_80; // Divisor latch access bit +Bit #(8) uart_lcr_bc = 8'h_40; // Break control +Bit #(8) uart_lcr_sp = 8'h_20; // Stick parity +Bit #(8) uart_lcr_eps = 8'h_10; // Even parity +Bit #(8) uart_lcr_pen = 8'h_08; // Parity enable +Bit #(8) uart_lcr_stb = 8'h_04; // # of stop bits (0=1b,1=2b) +Bit #(8) uart_lcr_wls = 8'h_03; // word len (0:5b,1:6b,2:7b,3:8b) + +// Bit fields of LSR +Bit #(8) uart_lsr_rxfe = 8'h_80; // Receiver FIFO error +Bit #(8) uart_lsr_temt = 8'h_40; // Transmitter empty +Bit #(8) uart_lsr_thre = 8'h_20; // THR empty +Bit #(8) uart_lsr_bi = 8'h_10; // Break interrupt +Bit #(8) uart_lsr_fe = 8'h_08; // Framing Error +Bit #(8) uart_lsr_pe = 8'h_04; // Parity Error +Bit #(8) uart_lsr_oe = 8'h_02; // Overrun Error +Bit #(8) uart_lsr_dr = 8'h_01; // Data Ready + +Bit #(8) uart_lsr_reset_value = (uart_lsr_temt | uart_lsr_thre); + +// ================================================================ +// Interface + +interface UART_IFC; + // Reset + interface Server #(Bit #(0), Bit #(0)) server_reset; + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim); + + // Main Fabric Reqs/Rsps + interface AXI4_Slave_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave; + + // To external console + interface Get #(Bit #(8)) get_to_console; + interface Put #(Bit #(8)) put_from_console; + + // Interrupt pending + (* always_ready *) + method Bool intr; +endinterface + +// ================================================================ +// Local types and constants + +// Module state +typedef enum {STATE_START, + STATE_READY + } Module_State +deriving (Bits, Eq, FShow); + +// ---------------- +// Split a bus address into (offset in UART, lsbs) + +function Tuple3 #(Bit #(2), Bit #(3), Bit #(3)) split_addr (Bit #(64) addr); + // 8-byte stride + Bit #(2) msbs = addr [7:6]; + Bit #(3) offset = addr [5:3]; + Bit #(3) lsbs = addr [2:0]; + + return tuple3 (msbs, offset, lsbs); +endfunction + +// ================================================================ + +(* synthesize *) +module mkUART (UART_IFC); + + Reg #(Bit #(8)) cfg_verbosity <- mkConfigReg (0); + + Reg #(Module_State) rg_state <- mkReg (STATE_START); + Reg #(Fabric_Addr) rg_addr_base <- mkRegU; + Reg #(Fabric_Addr) rg_addr_lim <- mkRegU; + + FIFOF #(Bit #(0)) f_reset_reqs <- mkFIFOF; + FIFOF #(Bit #(0)) f_reset_rsps <- mkFIFOF; + + // ---------------- + // Connector to fabric + + AXI4_Slave_Xactor_IFC #(Wd_Id, Wd_Addr, Wd_Data, Wd_User) slave_xactor <- mkAXI4_Slave_Xactor; + + // ---------------- + // character queues to and from the console + + FIFOF #(Bit #(8)) f_from_console <- mkFIFOF; + FIFOF #(Bit #(8)) f_to_console <- mkFIFOF; + + // ---------------- + // These are the 16550 UART registers + // See fn_addr_offset() above for meaning of 'addr offset' + + Reg #(Bit #(8)) rg_rbr <- mkRegU; // addr offset 0 + Reg #(Bit #(8)) rg_thr <- mkRegU; // addr offset 0 + Reg #(Bit #(8)) rg_dll <- mkReg (0); // addr offset 0 + + Reg #(Bit #(8)) rg_ier <- mkReg (0); // addr offset 1 + Reg #(Bit #(8)) rg_dlm <- mkReg (0); // addr offset 1 + + // IIR is a virtual read-only register computed from other regs + Reg #(Bit #(8)) rg_fcr <- mkReg (0); // addr offset 2 + + Reg #(Bit #(8)) rg_lcr <- mkReg (0); // addr offset 3 + Reg #(Bit #(8)) rg_mcr <- mkReg (0); // addr offset 4 + Reg #(Bit #(8)) rg_lsr <- mkReg (uart_lsr_reset_value); // addr offset 5 + Reg #(Bit #(8)) rg_msr <- mkReg (0); // addr offset 6 + Reg #(Bit #(8)) rg_scr <- mkReg (0); // addr offset 7 + + // ---------------- + // Virtual read-only register IIR + + function Bit #(8) fn_iir (); + Bit #(8) iir = 0; + + if ( ((rg_ier & uart_ier_erbfi) != 0) // Rx interrupt enabled + && ((rg_lsr & uart_lsr_dr) != 0)) // data ready + iir = uart_iir_rda; + + else if ((rg_ier & uart_ier_etbei) != 0) // Tx Holding Reg Empty intr enabled + iir = uart_iir_thre; + + return iir; + endfunction + + // ---------------- + // Test if an interrupt is pending + + function Bool fn_intr (); + let iir = fn_iir (); + Bool eip = ((iir & uart_iir_none) == 0); + return eip; + endfunction + + // ================================================================ + // BEHAVIOR + + // ---------------------------------------------------------------- + // Soft reset (on token in f_reset_reqs) + + rule rl_reset; + f_reset_reqs.deq; + + rg_dll <= 0; + rg_ier <= 0; + rg_dlm <= 0; + rg_fcr <= 0; + rg_lcr <= 0; + rg_mcr <= 0; + rg_lsr <= uart_lsr_reset_value; + rg_msr <= 0; + rg_scr <= 0; + + slave_xactor.reset; + rg_state <= STATE_READY; + + f_reset_rsps.enq (?); + + if (cfg_verbosity != 0) + $display ("%0d: UART.rl_reset", cur_cycle); + endrule + + // ---------------------------------------------------------------- + // Handle fabric read requests + + rule rl_process_rd_req (rg_state == STATE_READY); + let rda <- pop_o (slave_xactor.o_rd_addr); + + let byte_addr = rda.araddr - rg_addr_base; + let { msbs, offset, lsbs } = split_addr (zeroExtend (byte_addr)); + + Bit #(8) rdata_byte = 0; + AXI4_Resp rresp = axi4_resp_okay; + + if (lsbs != 0) begin + $display ("%0d: ERROR: UART.rl_process_rd_req: misaligned addr", cur_cycle); + $display (" ", fshow (rda)); + rresp = axi4_resp_slverr; + end + else if (msbs != 0) begin + $display ("%0d: ERROR: UART.rl_process_rd_req: unrecognized addr", cur_cycle); + $display (" ", fshow (rda)); + rresp = axi4_resp_decerr; + end + + // offset 0: RBR + else if ((offset == addr_UART_rbr) && ((rg_lcr & uart_lcr_dlab) == 0)) begin + // Read an input char + rg_lsr <= (rg_lsr & (~ uart_lsr_dr)); // Reset data-ready + rdata_byte = rg_rbr; + end + // offset 0: DLL + else if ((offset == addr_UART_dll) && ((rg_lcr & uart_lcr_dlab) != 0)) + rdata_byte = rg_dll; + + // offset 1: IER + else if ((offset == addr_UART_ier) && ((rg_lcr & uart_lcr_dlab) == 0)) + rdata_byte = rg_ier; + // offset 1: DLM + else if ((offset == addr_UART_dlm) && ((rg_lcr & uart_lcr_dlab) != 0)) + rdata_byte = rg_dlm; + + // offset 2: IIR (read-only) + else if (offset == addr_UART_iir) rdata_byte = fn_iir(); + + // offset 3: LCR + else if (offset == addr_UART_lcr) rdata_byte = { 0, rg_lcr }; + // offset 4: MCR + else if (offset == addr_UART_mcr) rdata_byte = { 0, rg_mcr }; + // offset 5: LSR + else if (offset == addr_UART_lsr) rdata_byte = { 0, rg_lsr }; + // offset 6: MSR + else if (offset == addr_UART_msr) rdata_byte = { 0, rg_msr }; + // offset 7: SCR + else if (offset == addr_UART_scr) rdata_byte = { 0, rg_scr }; + + else begin + $display ("%0d: ERROR: UART.rl_process_rd_req: unrecognized addr", cur_cycle); + $display (" ", fshow (rda)); + rresp = axi4_resp_decerr; + end + + // Send read-response to bus + Fabric_Data rdata = zeroExtend (rdata_byte); + let rdr = AXI4_Rd_Data {rid: rda.arid, + rdata: rdata, + rresp: rresp, + rlast: True, + ruser: rda.aruser}; + slave_xactor.i_rd_data.enq (rdr); + + if (cfg_verbosity > 1) begin + $display ("%0d: UART.rl_process_rd_req", cur_cycle); + $display (" ", fshow (rda)); + $display (" ", fshow (rdr)); + end + endrule + + // ---------------------------------------------------------------- + // Handle fabric write requests + + rule rl_process_wr_req (rg_state == STATE_READY); + let wra <- pop_o (slave_xactor.o_wr_addr); + let wrd <- pop_o (slave_xactor.o_wr_data); + + Bit #(64) wdata = zeroExtend (wrd.wdata); + Bit #(8) wstrb = zeroExtend (wrd.wstrb); + Bit #(8) data_byte = wdata [7:0]; + + let byte_addr = wra.awaddr - rg_addr_base; + let { msbs, offset, lsbs } = split_addr (zeroExtend (byte_addr)); + + AXI4_Resp bresp = axi4_resp_okay; + + if ((lsbs != 0) || (wstrb [0] == 1'b0)) begin + $display ("%0d: ERROR: UART.rl_process_wr_req: misaligned addr", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + bresp = axi4_resp_slverr; + end + else if (msbs != 0) begin + $display ("%0d: ERROR: UART.rl_process_wr_req: unrecognized addr", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + bresp = axi4_resp_decerr; + end + + // offset 0: THR + else if ((offset == addr_UART_thr) && ((rg_lcr & uart_lcr_dlab) == 0)) begin + // Write a char to the serial line + rg_thr <= data_byte; + f_to_console.enq (data_byte); + end + // offset 0: DLL + else if ((offset == addr_UART_dll) && ((rg_lcr & uart_lcr_dlab) != 0)) + rg_dll <= data_byte; + + // offset 1: IER + else if ((offset == addr_UART_ier) && ((rg_lcr & uart_lcr_dlab) == 0)) + rg_ier <= data_byte; + // offset 1: DLM + else if ((offset == addr_UART_dlm) && ((rg_lcr & uart_lcr_dlab) != 0)) + rg_dlm <= data_byte; + + // offset 2: FCR (write-only) + else if (offset == addr_UART_fcr) rg_fcr <= data_byte; + + // offset 3: LCR + else if (offset == addr_UART_lcr) rg_lcr <= data_byte; + // offset 4: MCR + else if (offset == addr_UART_mcr) rg_mcr <= data_byte; + // offset 5: LSR + else if (offset == addr_UART_lsr) noAction; // LSR is read-only + // offset 6: MSR + else if (offset == addr_UART_msr) noAction; // MSR is read-only + // offset 7: SCR + else if (offset == addr_UART_scr) rg_scr <= data_byte; + + else begin + $display ("%0d: ERROR: UART.rl_process_wr_req: unrecognized addr", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + bresp = axi4_resp_decerr; + end + + // Send write-response to bus + let wrr = AXI4_Wr_Resp {bid: wra.awid, + bresp: bresp, + buser: wra.awuser}; + slave_xactor.i_wr_resp.enq (wrr); + + if (cfg_verbosity > 1) begin + $display ("%0d: UART.rl_process_wr_req", cur_cycle); + $display (" ", fshow (wra)); + $display (" ", fshow (wrd)); + $display (" ", fshow (wrr)); + end + endrule + + // ---------------------------------------------------------------- + // Receive a char from the serial line when RBR is empty (i.e., LSR.DR is 0), + // and deposit it into RBR + // and set it full (LSR.DR = 1) + + rule rl_receive ((rg_lsr & uart_lsr_dr) == 0); + let ch <- pop (f_from_console); + rg_rbr <= ch; + + let new_lsr = (rg_lsr | uart_lsr_dr); // Set data-ready + rg_lsr <= new_lsr; + + if (cfg_verbosity > 1) + $display ("UART_Model.rl_receive: received char 0x%0h; new_lsr = 0x%0h", + ch, new_lsr); + endrule + + // ================================================================ + // INTERFACE + + // Reset + interface server_reset = toGPServer (f_reset_reqs, f_reset_rsps); + + // set_addr_map should be called after this module's reset + method Action set_addr_map (Fabric_Addr addr_base, Fabric_Addr addr_lim); + if (addr_base [2:0] != 0) + $display ("%0d: WARNING: UART.set_addr_map: addr_base 0x%0h is not 8-Byte-aligned", + cur_cycle, addr_base); + + if (addr_lim [2:0] != 0) + $display ("%0d: WARNING: UART.set_addr_map: addr_lim 0x%0h is not 8-Byte-aligned", + cur_cycle, addr_lim); + + rg_addr_base <= addr_base; + rg_addr_lim <= addr_lim; + endmethod + + // Main Fabric Reqs/Rsps + interface slave = slave_xactor.axi_side; + + // To external console + interface put_from_console = toPut (f_from_console); + interface get_to_console = toGet (f_to_console); + + // Interrupt pending + method Bool intr; + return fn_intr (); + endmethod +endmodule + +// ================================================================ + +endpackage diff --git a/src_Testbench/SoC/fn_read_ROM_RV32.bsvi b/src_Testbench/SoC/fn_read_ROM_RV32.bsvi new file mode 100644 index 0000000..5ade070 --- /dev/null +++ b/src_Testbench/SoC/fn_read_ROM_RV32.bsvi @@ -0,0 +1,1050 @@ +// ***** DO NOT EDIT ***** +// ***** This file was generated from a script ***** +// Generated at UTC 2018-07-17T22:18:50.410699 + + +// This file is a BSV 'include' file +// The function below represents a ROM of 4096 bytes + + +// Function for 4-bytes values at addrs aligned to 'b000 + +function Bit #(32) fn_read_ROM_0 (Bit #(n) addr); + return + case (addr) + 0: 32'h_00000297; + 8: 32'h_f1402573; + 16: 32'h_00028067; + 24: 32'h_80000000; + 32: 32'h_edfe0dd0; + 40: 32'h_38000000; + 48: 32'h_28000000; + 56: 32'h_10000000; + 64: 32'h_cc000000; + 72: 32'h_00000000; + 80: 32'h_00000000; + 88: 32'h_01000000; + 96: 32'h_03000000; + 104: 32'h_00000000; + 112: 32'h_03000000; + 120: 32'h_0f000000; + 128: 32'h_03000000; + 136: 32'h_1b000000; + 144: 32'h_732c7261; + 152: 32'h_7261622d; + 160: 32'h_00000076; + 168: 32'h_12000000; + 176: 32'h_62626375; + 184: 32'h_656b6970; + 192: 32'h_00000065; + 200: 32'h_73757063; + 208: 32'h_03000000; + 216: 32'h_00000000; + 224: 32'h_03000000; + 232: 32'h_0f000000; + 240: 32'h_03000000; + 248: 32'h_2c000000; + 256: 32'h_01000000; + 264: 32'h_00000030; + 272: 32'h_04000000; + 280: 32'h_00757063; + 288: 32'h_04000000; + 296: 32'h_00000000; + 304: 32'h_05000000; + 312: 32'h_79616b6f; + 320: 32'h_03000000; + 328: 32'h_1b000000; + 336: 32'h_00000076; + 344: 32'h_0a000000; + 352: 32'h_32337672; + 360: 32'h_00000073; + 368: 32'h_0b000000; + 376: 32'h_63736972; + 384: 32'h_00003233; + 392: 32'h_04000000; + 400: 32'h_80969800; + 408: 32'h_65746e69; + 416: 32'h_6f632d74; + 424: 32'h_72656c6c; + 432: 32'h_03000000; + 440: 32'h_79000000; + 448: 32'h_03000000; + 456: 32'h_8a000000; + 464: 32'h_0f000000; + 472: 32'h_63736972; + 480: 32'h_6e692d75; + 488: 32'h_03000000; + 496: 32'h_9f000000; + 504: 32'h_02000000; + 512: 32'h_02000000; + 520: 32'h_6f6d656d; + 528: 32'h_30303030; + 536: 32'h_03000000; + 544: 32'h_3f000000; + 552: 32'h_00007972; + 560: 32'h_10000000; + 568: 32'h_00000000; + 576: 32'h_00000000; + 584: 32'h_02000000; + 592: 32'h_00636f73; + 600: 32'h_04000000; + 608: 32'h_02000000; + 616: 32'h_04000000; + 624: 32'h_02000000; + 632: 32'h_21000000; + 640: 32'h_62626375; + 648: 32'h_656b6970; + 656: 32'h_6f732d65; + 664: 32'h_656c706d; + 672: 32'h_00000000; + 680: 32'h_00000000; + 688: 32'h_01000000; + 696: 32'h_30324074; + 704: 32'h_00000030; + 712: 32'h_0d000000; + 720: 32'h_63736972; + 728: 32'h_30746e69; + 736: 32'h_03000000; + 744: 32'h_ae000000; + 752: 32'h_03000000; + 760: 32'h_07000000; + 768: 32'h_10000000; + 776: 32'h_00000000; + 784: 32'h_00000000; + 792: 32'h_02000000; + 800: 32'h_01000000; + 808: 32'h_30306340; + 816: 32'h_00000030; + 824: 32'h_09000000; + 832: 32'h_3631736e; + 840: 32'h_00000000; + 848: 32'h_10000000; + 856: 32'h_00000000; + 864: 32'h_00000000; + 872: 32'h_03000000; + 880: 32'h_c2000000; + 888: 32'h_03000000; + 896: 32'h_69000000; + 904: 32'h_03000000; + 912: 32'h_ae000000; + 920: 32'h_0b000000; + 928: 32'h_02000000; + 936: 32'h_64646123; + 944: 32'h_6c65632d; + 952: 32'h_657a6973; + 960: 32'h_6300736c; + 968: 32'h_6c626974; + 976: 32'h_006c6564; + 984: 32'h_65736162; + 992: 32'h_6e657571; + 1000: 32'h_63697665; + 1008: 32'h_72006570; + 1016: 32'h_75746174; + 1024: 32'h_2c766373; + 1032: 32'h_2d756d6d; + 1040: 32'h_6f6c6300; + 1048: 32'h_75716572; + 1056: 32'h_6e692300; + 1064: 32'h_2d747075; + 1072: 32'h_6e690073; + 1080: 32'h_2d747075; + 1088: 32'h_6c6c6f72; + 1096: 32'h_646e6168; + 1104: 32'h_65676e61; + 1112: 32'h_72726574; + 1120: 32'h_7478652d; + 1128: 32'h_65720064; + 1136: 32'h_00746669; + 1144: 32'h_00000000; + 1152: 32'h_00000000; + 1160: 32'h_00000000; + 1168: 32'h_00000000; + 1176: 32'h_00000000; + 1184: 32'h_00000000; + 1192: 32'h_00000000; + 1200: 32'h_00000000; + 1208: 32'h_00000000; + 1216: 32'h_00000000; + 1224: 32'h_00000000; + 1232: 32'h_00000000; + 1240: 32'h_00000000; + 1248: 32'h_00000000; + 1256: 32'h_00000000; + 1264: 32'h_00000000; + 1272: 32'h_00000000; + 1280: 32'h_00000000; + 1288: 32'h_00000000; + 1296: 32'h_00000000; + 1304: 32'h_00000000; + 1312: 32'h_00000000; + 1320: 32'h_00000000; + 1328: 32'h_00000000; + 1336: 32'h_00000000; + 1344: 32'h_00000000; + 1352: 32'h_00000000; + 1360: 32'h_00000000; + 1368: 32'h_00000000; + 1376: 32'h_00000000; + 1384: 32'h_00000000; + 1392: 32'h_00000000; + 1400: 32'h_00000000; + 1408: 32'h_00000000; + 1416: 32'h_00000000; + 1424: 32'h_00000000; + 1432: 32'h_00000000; + 1440: 32'h_00000000; + 1448: 32'h_00000000; + 1456: 32'h_00000000; + 1464: 32'h_00000000; + 1472: 32'h_00000000; + 1480: 32'h_00000000; + 1488: 32'h_00000000; + 1496: 32'h_00000000; + 1504: 32'h_00000000; + 1512: 32'h_00000000; + 1520: 32'h_00000000; + 1528: 32'h_00000000; + 1536: 32'h_00000000; + 1544: 32'h_00000000; + 1552: 32'h_00000000; + 1560: 32'h_00000000; + 1568: 32'h_00000000; + 1576: 32'h_00000000; + 1584: 32'h_00000000; + 1592: 32'h_00000000; + 1600: 32'h_00000000; + 1608: 32'h_00000000; + 1616: 32'h_00000000; + 1624: 32'h_00000000; + 1632: 32'h_00000000; + 1640: 32'h_00000000; + 1648: 32'h_00000000; + 1656: 32'h_00000000; + 1664: 32'h_00000000; + 1672: 32'h_00000000; + 1680: 32'h_00000000; + 1688: 32'h_00000000; + 1696: 32'h_00000000; + 1704: 32'h_00000000; + 1712: 32'h_00000000; + 1720: 32'h_00000000; + 1728: 32'h_00000000; + 1736: 32'h_00000000; + 1744: 32'h_00000000; + 1752: 32'h_00000000; + 1760: 32'h_00000000; + 1768: 32'h_00000000; + 1776: 32'h_00000000; + 1784: 32'h_00000000; + 1792: 32'h_00000000; + 1800: 32'h_00000000; + 1808: 32'h_00000000; + 1816: 32'h_00000000; + 1824: 32'h_00000000; + 1832: 32'h_00000000; + 1840: 32'h_00000000; + 1848: 32'h_00000000; + 1856: 32'h_00000000; + 1864: 32'h_00000000; + 1872: 32'h_00000000; + 1880: 32'h_00000000; + 1888: 32'h_00000000; + 1896: 32'h_00000000; + 1904: 32'h_00000000; + 1912: 32'h_00000000; + 1920: 32'h_00000000; + 1928: 32'h_00000000; + 1936: 32'h_00000000; + 1944: 32'h_00000000; + 1952: 32'h_00000000; + 1960: 32'h_00000000; + 1968: 32'h_00000000; + 1976: 32'h_00000000; + 1984: 32'h_00000000; + 1992: 32'h_00000000; + 2000: 32'h_00000000; + 2008: 32'h_00000000; + 2016: 32'h_00000000; + 2024: 32'h_00000000; + 2032: 32'h_00000000; + 2040: 32'h_00000000; + 2048: 32'h_00000000; + 2056: 32'h_00000000; + 2064: 32'h_00000000; + 2072: 32'h_00000000; + 2080: 32'h_00000000; + 2088: 32'h_00000000; + 2096: 32'h_00000000; + 2104: 32'h_00000000; + 2112: 32'h_00000000; + 2120: 32'h_00000000; + 2128: 32'h_00000000; + 2136: 32'h_00000000; + 2144: 32'h_00000000; + 2152: 32'h_00000000; + 2160: 32'h_00000000; + 2168: 32'h_00000000; + 2176: 32'h_00000000; + 2184: 32'h_00000000; + 2192: 32'h_00000000; + 2200: 32'h_00000000; + 2208: 32'h_00000000; + 2216: 32'h_00000000; + 2224: 32'h_00000000; + 2232: 32'h_00000000; + 2240: 32'h_00000000; + 2248: 32'h_00000000; + 2256: 32'h_00000000; + 2264: 32'h_00000000; + 2272: 32'h_00000000; + 2280: 32'h_00000000; + 2288: 32'h_00000000; + 2296: 32'h_00000000; + 2304: 32'h_00000000; + 2312: 32'h_00000000; + 2320: 32'h_00000000; + 2328: 32'h_00000000; + 2336: 32'h_00000000; + 2344: 32'h_00000000; + 2352: 32'h_00000000; + 2360: 32'h_00000000; + 2368: 32'h_00000000; + 2376: 32'h_00000000; + 2384: 32'h_00000000; + 2392: 32'h_00000000; + 2400: 32'h_00000000; + 2408: 32'h_00000000; + 2416: 32'h_00000000; + 2424: 32'h_00000000; + 2432: 32'h_00000000; + 2440: 32'h_00000000; + 2448: 32'h_00000000; + 2456: 32'h_00000000; + 2464: 32'h_00000000; + 2472: 32'h_00000000; + 2480: 32'h_00000000; + 2488: 32'h_00000000; + 2496: 32'h_00000000; + 2504: 32'h_00000000; + 2512: 32'h_00000000; + 2520: 32'h_00000000; + 2528: 32'h_00000000; + 2536: 32'h_00000000; + 2544: 32'h_00000000; + 2552: 32'h_00000000; + 2560: 32'h_00000000; + 2568: 32'h_00000000; + 2576: 32'h_00000000; + 2584: 32'h_00000000; + 2592: 32'h_00000000; + 2600: 32'h_00000000; + 2608: 32'h_00000000; + 2616: 32'h_00000000; + 2624: 32'h_00000000; + 2632: 32'h_00000000; + 2640: 32'h_00000000; + 2648: 32'h_00000000; + 2656: 32'h_00000000; + 2664: 32'h_00000000; + 2672: 32'h_00000000; + 2680: 32'h_00000000; + 2688: 32'h_00000000; + 2696: 32'h_00000000; + 2704: 32'h_00000000; + 2712: 32'h_00000000; + 2720: 32'h_00000000; + 2728: 32'h_00000000; + 2736: 32'h_00000000; + 2744: 32'h_00000000; + 2752: 32'h_00000000; + 2760: 32'h_00000000; + 2768: 32'h_00000000; + 2776: 32'h_00000000; + 2784: 32'h_00000000; + 2792: 32'h_00000000; + 2800: 32'h_00000000; + 2808: 32'h_00000000; + 2816: 32'h_00000000; + 2824: 32'h_00000000; + 2832: 32'h_00000000; + 2840: 32'h_00000000; + 2848: 32'h_00000000; + 2856: 32'h_00000000; + 2864: 32'h_00000000; + 2872: 32'h_00000000; + 2880: 32'h_00000000; + 2888: 32'h_00000000; + 2896: 32'h_00000000; + 2904: 32'h_00000000; + 2912: 32'h_00000000; + 2920: 32'h_00000000; + 2928: 32'h_00000000; + 2936: 32'h_00000000; + 2944: 32'h_00000000; + 2952: 32'h_00000000; + 2960: 32'h_00000000; + 2968: 32'h_00000000; + 2976: 32'h_00000000; + 2984: 32'h_00000000; + 2992: 32'h_00000000; + 3000: 32'h_00000000; + 3008: 32'h_00000000; + 3016: 32'h_00000000; + 3024: 32'h_00000000; + 3032: 32'h_00000000; + 3040: 32'h_00000000; + 3048: 32'h_00000000; + 3056: 32'h_00000000; + 3064: 32'h_00000000; + 3072: 32'h_00000000; + 3080: 32'h_00000000; + 3088: 32'h_00000000; + 3096: 32'h_00000000; + 3104: 32'h_00000000; + 3112: 32'h_00000000; + 3120: 32'h_00000000; + 3128: 32'h_00000000; + 3136: 32'h_00000000; + 3144: 32'h_00000000; + 3152: 32'h_00000000; + 3160: 32'h_00000000; + 3168: 32'h_00000000; + 3176: 32'h_00000000; + 3184: 32'h_00000000; + 3192: 32'h_00000000; + 3200: 32'h_00000000; + 3208: 32'h_00000000; + 3216: 32'h_00000000; + 3224: 32'h_00000000; + 3232: 32'h_00000000; + 3240: 32'h_00000000; + 3248: 32'h_00000000; + 3256: 32'h_00000000; + 3264: 32'h_00000000; + 3272: 32'h_00000000; + 3280: 32'h_00000000; + 3288: 32'h_00000000; + 3296: 32'h_00000000; + 3304: 32'h_00000000; + 3312: 32'h_00000000; + 3320: 32'h_00000000; + 3328: 32'h_00000000; + 3336: 32'h_00000000; + 3344: 32'h_00000000; + 3352: 32'h_00000000; + 3360: 32'h_00000000; + 3368: 32'h_00000000; + 3376: 32'h_00000000; + 3384: 32'h_00000000; + 3392: 32'h_00000000; + 3400: 32'h_00000000; + 3408: 32'h_00000000; + 3416: 32'h_00000000; + 3424: 32'h_00000000; + 3432: 32'h_00000000; + 3440: 32'h_00000000; + 3448: 32'h_00000000; + 3456: 32'h_00000000; + 3464: 32'h_00000000; + 3472: 32'h_00000000; + 3480: 32'h_00000000; + 3488: 32'h_00000000; + 3496: 32'h_00000000; + 3504: 32'h_00000000; + 3512: 32'h_00000000; + 3520: 32'h_00000000; + 3528: 32'h_00000000; + 3536: 32'h_00000000; + 3544: 32'h_00000000; + 3552: 32'h_00000000; + 3560: 32'h_00000000; + 3568: 32'h_00000000; + 3576: 32'h_00000000; + 3584: 32'h_00000000; + 3592: 32'h_00000000; + 3600: 32'h_00000000; + 3608: 32'h_00000000; + 3616: 32'h_00000000; + 3624: 32'h_00000000; + 3632: 32'h_00000000; + 3640: 32'h_00000000; + 3648: 32'h_00000000; + 3656: 32'h_00000000; + 3664: 32'h_00000000; + 3672: 32'h_00000000; + 3680: 32'h_00000000; + 3688: 32'h_00000000; + 3696: 32'h_00000000; + 3704: 32'h_00000000; + 3712: 32'h_00000000; + 3720: 32'h_00000000; + 3728: 32'h_00000000; + 3736: 32'h_00000000; + 3744: 32'h_00000000; + 3752: 32'h_00000000; + 3760: 32'h_00000000; + 3768: 32'h_00000000; + 3776: 32'h_00000000; + 3784: 32'h_00000000; + 3792: 32'h_00000000; + 3800: 32'h_00000000; + 3808: 32'h_00000000; + 3816: 32'h_00000000; + 3824: 32'h_00000000; + 3832: 32'h_00000000; + 3840: 32'h_00000000; + 3848: 32'h_00000000; + 3856: 32'h_00000000; + 3864: 32'h_00000000; + 3872: 32'h_00000000; + 3880: 32'h_00000000; + 3888: 32'h_00000000; + 3896: 32'h_00000000; + 3904: 32'h_00000000; + 3912: 32'h_00000000; + 3920: 32'h_00000000; + 3928: 32'h_00000000; + 3936: 32'h_00000000; + 3944: 32'h_00000000; + 3952: 32'h_00000000; + 3960: 32'h_00000000; + 3968: 32'h_00000000; + 3976: 32'h_00000000; + 3984: 32'h_00000000; + 3992: 32'h_00000000; + 4000: 32'h_00000000; + 4008: 32'h_00000000; + 4016: 32'h_00000000; + 4024: 32'h_00000000; + 4032: 32'h_00000000; + 4040: 32'h_00000000; + 4048: 32'h_00000000; + 4056: 32'h_00000000; + 4064: 32'h_00000000; + 4072: 32'h_00000000; + 4080: 32'h_00000000; + 4088: 32'h_00000000; + default: 32'h_AAAA_AAAA; + endcase; +endfunction: fn_read_ROM_0 + +// Function for 4-bytes values at addrs aligned to 'b100 + +function Bit #(32) fn_read_ROM_4 (Bit #(n) addr); + return + case (addr) + 4: 32'h_02028593; + 12: 32'h_0182a283; + 20: 32'h_00000000; + 28: 32'h_00000000; + 36: 32'h_54040000; + 44: 32'h_88030000; + 52: 32'h_11000000; + 60: 32'h_00000000; + 68: 32'h_50030000; + 76: 32'h_00000000; + 84: 32'h_00000000; + 92: 32'h_00000000; + 100: 32'h_04000000; + 108: 32'h_02000000; + 116: 32'h_04000000; + 124: 32'h_02000000; + 132: 32'h_16000000; + 140: 32'h_62626375; + 148: 32'h_656b6970; + 156: 32'h_65642d65; + 164: 32'h_03000000; + 172: 32'h_26000000; + 180: 32'h_732c7261; + 188: 32'h_7261622d; + 196: 32'h_01000000; + 204: 32'h_00000000; + 212: 32'h_04000000; + 220: 32'h_01000000; + 228: 32'h_04000000; + 236: 32'h_00000000; + 244: 32'h_04000000; + 252: 32'h_80969800; + 260: 32'h_40757063; + 268: 32'h_03000000; + 276: 32'h_3f000000; + 284: 32'h_03000000; + 292: 32'h_4b000000; + 300: 32'h_03000000; + 308: 32'h_4f000000; + 316: 32'h_00000000; + 324: 32'h_06000000; + 332: 32'h_63736972; + 340: 32'h_03000000; + 348: 32'h_56000000; + 356: 32'h_75616d69; + 364: 32'h_03000000; + 372: 32'h_60000000; + 380: 32'h_76732c76; + 388: 32'h_03000000; + 396: 32'h_69000000; + 404: 32'h_01000000; + 412: 32'h_70757272; + 420: 32'h_6f72746e; + 428: 32'h_00000000; + 436: 32'h_04000000; + 444: 32'h_01000000; + 452: 32'h_00000000; + 460: 32'h_03000000; + 468: 32'h_1b000000; + 476: 32'h_70632c76; + 484: 32'h_00006374; + 492: 32'h_04000000; + 500: 32'h_01000000; + 508: 32'h_02000000; + 516: 32'h_01000000; + 524: 32'h_38407972; + 532: 32'h_00303030; + 540: 32'h_07000000; + 548: 32'h_6f6d656d; + 556: 32'h_03000000; + 564: 32'h_4b000000; + 572: 32'h_00000080; + 580: 32'h_00000010; + 588: 32'h_01000000; + 596: 32'h_03000000; + 604: 32'h_00000000; + 612: 32'h_03000000; + 620: 32'h_0f000000; + 628: 32'h_03000000; + 636: 32'h_1b000000; + 644: 32'h_732c7261; + 652: 32'h_7261622d; + 660: 32'h_69730063; + 668: 32'h_7375622d; + 676: 32'h_03000000; + 684: 32'h_a7000000; + 692: 32'h_6e696c63; + 700: 32'h_30303030; + 708: 32'h_03000000; + 716: 32'h_1b000000; + 724: 32'h_6c632c76; + 732: 32'h_00000000; + 740: 32'h_10000000; + 748: 32'h_01000000; + 756: 32'h_01000000; + 764: 32'h_03000000; + 772: 32'h_4b000000; + 780: 32'h_00000002; + 788: 32'h_00000c00; + 796: 32'h_02000000; + 804: 32'h_74726175; + 812: 32'h_30303030; + 820: 32'h_03000000; + 828: 32'h_1b000000; + 836: 32'h_61303535; + 844: 32'h_03000000; + 852: 32'h_4b000000; + 860: 32'h_000000c0; + 868: 32'h_40000000; + 876: 32'h_04000000; + 884: 32'h_03000000; + 892: 32'h_04000000; + 900: 32'h_80969800; + 908: 32'h_08000000; + 916: 32'h_01000000; + 924: 32'h_02000000; + 932: 32'h_09000000; + 940: 32'h_73736572; + 948: 32'h_2300736c; + 956: 32'h_6c65632d; + 964: 32'h_61706d6f; + 972: 32'h_6f6d0065; + 980: 32'h_656d6974; + 988: 32'h_6572662d; + 996: 32'h_64007963; + 1004: 32'h_79745f65; + 1012: 32'h_73006765; + 1020: 32'h_69720073; + 1028: 32'h_00617369; + 1036: 32'h_65707974; + 1044: 32'h_662d6b63; + 1052: 32'h_79636e65; + 1060: 32'h_72726574; + 1068: 32'h_6c6c6563; + 1076: 32'h_72726574; + 1084: 32'h_746e6f63; + 1092: 32'h_70007265; + 1100: 32'h_7200656c; + 1108: 32'h_6e690073; + 1116: 32'h_73747075; + 1124: 32'h_65646e65; + 1132: 32'h_68732d67; + 1140: 32'h_00000000; + 1148: 32'h_00000000; + 1156: 32'h_00000000; + 1164: 32'h_00000000; + 1172: 32'h_00000000; + 1180: 32'h_00000000; + 1188: 32'h_00000000; + 1196: 32'h_00000000; + 1204: 32'h_00000000; + 1212: 32'h_00000000; + 1220: 32'h_00000000; + 1228: 32'h_00000000; + 1236: 32'h_00000000; + 1244: 32'h_00000000; + 1252: 32'h_00000000; + 1260: 32'h_00000000; + 1268: 32'h_00000000; + 1276: 32'h_00000000; + 1284: 32'h_00000000; + 1292: 32'h_00000000; + 1300: 32'h_00000000; + 1308: 32'h_00000000; + 1316: 32'h_00000000; + 1324: 32'h_00000000; + 1332: 32'h_00000000; + 1340: 32'h_00000000; + 1348: 32'h_00000000; + 1356: 32'h_00000000; + 1364: 32'h_00000000; + 1372: 32'h_00000000; + 1380: 32'h_00000000; + 1388: 32'h_00000000; + 1396: 32'h_00000000; + 1404: 32'h_00000000; + 1412: 32'h_00000000; + 1420: 32'h_00000000; + 1428: 32'h_00000000; + 1436: 32'h_00000000; + 1444: 32'h_00000000; + 1452: 32'h_00000000; + 1460: 32'h_00000000; + 1468: 32'h_00000000; + 1476: 32'h_00000000; + 1484: 32'h_00000000; + 1492: 32'h_00000000; + 1500: 32'h_00000000; + 1508: 32'h_00000000; + 1516: 32'h_00000000; + 1524: 32'h_00000000; + 1532: 32'h_00000000; + 1540: 32'h_00000000; + 1548: 32'h_00000000; + 1556: 32'h_00000000; + 1564: 32'h_00000000; + 1572: 32'h_00000000; + 1580: 32'h_00000000; + 1588: 32'h_00000000; + 1596: 32'h_00000000; + 1604: 32'h_00000000; + 1612: 32'h_00000000; + 1620: 32'h_00000000; + 1628: 32'h_00000000; + 1636: 32'h_00000000; + 1644: 32'h_00000000; + 1652: 32'h_00000000; + 1660: 32'h_00000000; + 1668: 32'h_00000000; + 1676: 32'h_00000000; + 1684: 32'h_00000000; + 1692: 32'h_00000000; + 1700: 32'h_00000000; + 1708: 32'h_00000000; + 1716: 32'h_00000000; + 1724: 32'h_00000000; + 1732: 32'h_00000000; + 1740: 32'h_00000000; + 1748: 32'h_00000000; + 1756: 32'h_00000000; + 1764: 32'h_00000000; + 1772: 32'h_00000000; + 1780: 32'h_00000000; + 1788: 32'h_00000000; + 1796: 32'h_00000000; + 1804: 32'h_00000000; + 1812: 32'h_00000000; + 1820: 32'h_00000000; + 1828: 32'h_00000000; + 1836: 32'h_00000000; + 1844: 32'h_00000000; + 1852: 32'h_00000000; + 1860: 32'h_00000000; + 1868: 32'h_00000000; + 1876: 32'h_00000000; + 1884: 32'h_00000000; + 1892: 32'h_00000000; + 1900: 32'h_00000000; + 1908: 32'h_00000000; + 1916: 32'h_00000000; + 1924: 32'h_00000000; + 1932: 32'h_00000000; + 1940: 32'h_00000000; + 1948: 32'h_00000000; + 1956: 32'h_00000000; + 1964: 32'h_00000000; + 1972: 32'h_00000000; + 1980: 32'h_00000000; + 1988: 32'h_00000000; + 1996: 32'h_00000000; + 2004: 32'h_00000000; + 2012: 32'h_00000000; + 2020: 32'h_00000000; + 2028: 32'h_00000000; + 2036: 32'h_00000000; + 2044: 32'h_00000000; + 2052: 32'h_00000000; + 2060: 32'h_00000000; + 2068: 32'h_00000000; + 2076: 32'h_00000000; + 2084: 32'h_00000000; + 2092: 32'h_00000000; + 2100: 32'h_00000000; + 2108: 32'h_00000000; + 2116: 32'h_00000000; + 2124: 32'h_00000000; + 2132: 32'h_00000000; + 2140: 32'h_00000000; + 2148: 32'h_00000000; + 2156: 32'h_00000000; + 2164: 32'h_00000000; + 2172: 32'h_00000000; + 2180: 32'h_00000000; + 2188: 32'h_00000000; + 2196: 32'h_00000000; + 2204: 32'h_00000000; + 2212: 32'h_00000000; + 2220: 32'h_00000000; + 2228: 32'h_00000000; + 2236: 32'h_00000000; + 2244: 32'h_00000000; + 2252: 32'h_00000000; + 2260: 32'h_00000000; + 2268: 32'h_00000000; + 2276: 32'h_00000000; + 2284: 32'h_00000000; + 2292: 32'h_00000000; + 2300: 32'h_00000000; + 2308: 32'h_00000000; + 2316: 32'h_00000000; + 2324: 32'h_00000000; + 2332: 32'h_00000000; + 2340: 32'h_00000000; + 2348: 32'h_00000000; + 2356: 32'h_00000000; + 2364: 32'h_00000000; + 2372: 32'h_00000000; + 2380: 32'h_00000000; + 2388: 32'h_00000000; + 2396: 32'h_00000000; + 2404: 32'h_00000000; + 2412: 32'h_00000000; + 2420: 32'h_00000000; + 2428: 32'h_00000000; + 2436: 32'h_00000000; + 2444: 32'h_00000000; + 2452: 32'h_00000000; + 2460: 32'h_00000000; + 2468: 32'h_00000000; + 2476: 32'h_00000000; + 2484: 32'h_00000000; + 2492: 32'h_00000000; + 2500: 32'h_00000000; + 2508: 32'h_00000000; + 2516: 32'h_00000000; + 2524: 32'h_00000000; + 2532: 32'h_00000000; + 2540: 32'h_00000000; + 2548: 32'h_00000000; + 2556: 32'h_00000000; + 2564: 32'h_00000000; + 2572: 32'h_00000000; + 2580: 32'h_00000000; + 2588: 32'h_00000000; + 2596: 32'h_00000000; + 2604: 32'h_00000000; + 2612: 32'h_00000000; + 2620: 32'h_00000000; + 2628: 32'h_00000000; + 2636: 32'h_00000000; + 2644: 32'h_00000000; + 2652: 32'h_00000000; + 2660: 32'h_00000000; + 2668: 32'h_00000000; + 2676: 32'h_00000000; + 2684: 32'h_00000000; + 2692: 32'h_00000000; + 2700: 32'h_00000000; + 2708: 32'h_00000000; + 2716: 32'h_00000000; + 2724: 32'h_00000000; + 2732: 32'h_00000000; + 2740: 32'h_00000000; + 2748: 32'h_00000000; + 2756: 32'h_00000000; + 2764: 32'h_00000000; + 2772: 32'h_00000000; + 2780: 32'h_00000000; + 2788: 32'h_00000000; + 2796: 32'h_00000000; + 2804: 32'h_00000000; + 2812: 32'h_00000000; + 2820: 32'h_00000000; + 2828: 32'h_00000000; + 2836: 32'h_00000000; + 2844: 32'h_00000000; + 2852: 32'h_00000000; + 2860: 32'h_00000000; + 2868: 32'h_00000000; + 2876: 32'h_00000000; + 2884: 32'h_00000000; + 2892: 32'h_00000000; + 2900: 32'h_00000000; + 2908: 32'h_00000000; + 2916: 32'h_00000000; + 2924: 32'h_00000000; + 2932: 32'h_00000000; + 2940: 32'h_00000000; + 2948: 32'h_00000000; + 2956: 32'h_00000000; + 2964: 32'h_00000000; + 2972: 32'h_00000000; + 2980: 32'h_00000000; + 2988: 32'h_00000000; + 2996: 32'h_00000000; + 3004: 32'h_00000000; + 3012: 32'h_00000000; + 3020: 32'h_00000000; + 3028: 32'h_00000000; + 3036: 32'h_00000000; + 3044: 32'h_00000000; + 3052: 32'h_00000000; + 3060: 32'h_00000000; + 3068: 32'h_00000000; + 3076: 32'h_00000000; + 3084: 32'h_00000000; + 3092: 32'h_00000000; + 3100: 32'h_00000000; + 3108: 32'h_00000000; + 3116: 32'h_00000000; + 3124: 32'h_00000000; + 3132: 32'h_00000000; + 3140: 32'h_00000000; + 3148: 32'h_00000000; + 3156: 32'h_00000000; + 3164: 32'h_00000000; + 3172: 32'h_00000000; + 3180: 32'h_00000000; + 3188: 32'h_00000000; + 3196: 32'h_00000000; + 3204: 32'h_00000000; + 3212: 32'h_00000000; + 3220: 32'h_00000000; + 3228: 32'h_00000000; + 3236: 32'h_00000000; + 3244: 32'h_00000000; + 3252: 32'h_00000000; + 3260: 32'h_00000000; + 3268: 32'h_00000000; + 3276: 32'h_00000000; + 3284: 32'h_00000000; + 3292: 32'h_00000000; + 3300: 32'h_00000000; + 3308: 32'h_00000000; + 3316: 32'h_00000000; + 3324: 32'h_00000000; + 3332: 32'h_00000000; + 3340: 32'h_00000000; + 3348: 32'h_00000000; + 3356: 32'h_00000000; + 3364: 32'h_00000000; + 3372: 32'h_00000000; + 3380: 32'h_00000000; + 3388: 32'h_00000000; + 3396: 32'h_00000000; + 3404: 32'h_00000000; + 3412: 32'h_00000000; + 3420: 32'h_00000000; + 3428: 32'h_00000000; + 3436: 32'h_00000000; + 3444: 32'h_00000000; + 3452: 32'h_00000000; + 3460: 32'h_00000000; + 3468: 32'h_00000000; + 3476: 32'h_00000000; + 3484: 32'h_00000000; + 3492: 32'h_00000000; + 3500: 32'h_00000000; + 3508: 32'h_00000000; + 3516: 32'h_00000000; + 3524: 32'h_00000000; + 3532: 32'h_00000000; + 3540: 32'h_00000000; + 3548: 32'h_00000000; + 3556: 32'h_00000000; + 3564: 32'h_00000000; + 3572: 32'h_00000000; + 3580: 32'h_00000000; + 3588: 32'h_00000000; + 3596: 32'h_00000000; + 3604: 32'h_00000000; + 3612: 32'h_00000000; + 3620: 32'h_00000000; + 3628: 32'h_00000000; + 3636: 32'h_00000000; + 3644: 32'h_00000000; + 3652: 32'h_00000000; + 3660: 32'h_00000000; + 3668: 32'h_00000000; + 3676: 32'h_00000000; + 3684: 32'h_00000000; + 3692: 32'h_00000000; + 3700: 32'h_00000000; + 3708: 32'h_00000000; + 3716: 32'h_00000000; + 3724: 32'h_00000000; + 3732: 32'h_00000000; + 3740: 32'h_00000000; + 3748: 32'h_00000000; + 3756: 32'h_00000000; + 3764: 32'h_00000000; + 3772: 32'h_00000000; + 3780: 32'h_00000000; + 3788: 32'h_00000000; + 3796: 32'h_00000000; + 3804: 32'h_00000000; + 3812: 32'h_00000000; + 3820: 32'h_00000000; + 3828: 32'h_00000000; + 3836: 32'h_00000000; + 3844: 32'h_00000000; + 3852: 32'h_00000000; + 3860: 32'h_00000000; + 3868: 32'h_00000000; + 3876: 32'h_00000000; + 3884: 32'h_00000000; + 3892: 32'h_00000000; + 3900: 32'h_00000000; + 3908: 32'h_00000000; + 3916: 32'h_00000000; + 3924: 32'h_00000000; + 3932: 32'h_00000000; + 3940: 32'h_00000000; + 3948: 32'h_00000000; + 3956: 32'h_00000000; + 3964: 32'h_00000000; + 3972: 32'h_00000000; + 3980: 32'h_00000000; + 3988: 32'h_00000000; + 3996: 32'h_00000000; + 4004: 32'h_00000000; + 4012: 32'h_00000000; + 4020: 32'h_00000000; + 4028: 32'h_00000000; + 4036: 32'h_00000000; + 4044: 32'h_00000000; + 4052: 32'h_00000000; + 4060: 32'h_00000000; + 4068: 32'h_00000000; + 4076: 32'h_00000000; + 4084: 32'h_00000000; + 4092: 32'h_00000000; + default: 32'h_AAAA_AAAA; + endcase; +endfunction: fn_read_ROM_4 diff --git a/src_Testbench/SoC/fn_read_ROM_RV64.bsvi b/src_Testbench/SoC/fn_read_ROM_RV64.bsvi new file mode 100644 index 0000000..83c3d3f --- /dev/null +++ b/src_Testbench/SoC/fn_read_ROM_RV64.bsvi @@ -0,0 +1,1050 @@ +// ***** DO NOT EDIT ***** +// ***** This file was generated from a script ***** +// Generated at UTC 2018-07-17T22:18:50.438325 + + +// This file is a BSV 'include' file +// The function below represents a ROM of 4096 bytes + + +// Function for 4-bytes values at addrs aligned to 'b000 + +function Bit #(32) fn_read_ROM_0 (Bit #(n) addr); + return + case (addr) + 0: 32'h_00000297; + 8: 32'h_f1402573; + 16: 32'h_00028067; + 24: 32'h_80000000; + 32: 32'h_edfe0dd0; + 40: 32'h_38000000; + 48: 32'h_28000000; + 56: 32'h_10000000; + 64: 32'h_cc000000; + 72: 32'h_00000000; + 80: 32'h_00000000; + 88: 32'h_01000000; + 96: 32'h_03000000; + 104: 32'h_00000000; + 112: 32'h_03000000; + 120: 32'h_0f000000; + 128: 32'h_03000000; + 136: 32'h_1b000000; + 144: 32'h_732c7261; + 152: 32'h_7261622d; + 160: 32'h_00000076; + 168: 32'h_12000000; + 176: 32'h_62626375; + 184: 32'h_656b6970; + 192: 32'h_00000065; + 200: 32'h_73757063; + 208: 32'h_03000000; + 216: 32'h_00000000; + 224: 32'h_03000000; + 232: 32'h_0f000000; + 240: 32'h_03000000; + 248: 32'h_2c000000; + 256: 32'h_01000000; + 264: 32'h_00000030; + 272: 32'h_04000000; + 280: 32'h_00757063; + 288: 32'h_04000000; + 296: 32'h_00000000; + 304: 32'h_05000000; + 312: 32'h_79616b6f; + 320: 32'h_03000000; + 328: 32'h_1b000000; + 336: 32'h_00000076; + 344: 32'h_0a000000; + 352: 32'h_34367672; + 360: 32'h_00000073; + 368: 32'h_0b000000; + 376: 32'h_63736972; + 384: 32'h_00003933; + 392: 32'h_04000000; + 400: 32'h_80969800; + 408: 32'h_65746e69; + 416: 32'h_6f632d74; + 424: 32'h_72656c6c; + 432: 32'h_03000000; + 440: 32'h_79000000; + 448: 32'h_03000000; + 456: 32'h_8a000000; + 464: 32'h_0f000000; + 472: 32'h_63736972; + 480: 32'h_6e692d75; + 488: 32'h_03000000; + 496: 32'h_9f000000; + 504: 32'h_02000000; + 512: 32'h_02000000; + 520: 32'h_6f6d656d; + 528: 32'h_30303030; + 536: 32'h_03000000; + 544: 32'h_3f000000; + 552: 32'h_00007972; + 560: 32'h_10000000; + 568: 32'h_00000000; + 576: 32'h_00000000; + 584: 32'h_02000000; + 592: 32'h_00636f73; + 600: 32'h_04000000; + 608: 32'h_02000000; + 616: 32'h_04000000; + 624: 32'h_02000000; + 632: 32'h_21000000; + 640: 32'h_62626375; + 648: 32'h_656b6970; + 656: 32'h_6f732d65; + 664: 32'h_656c706d; + 672: 32'h_00000000; + 680: 32'h_00000000; + 688: 32'h_01000000; + 696: 32'h_30324074; + 704: 32'h_00000030; + 712: 32'h_0d000000; + 720: 32'h_63736972; + 728: 32'h_30746e69; + 736: 32'h_03000000; + 744: 32'h_ae000000; + 752: 32'h_03000000; + 760: 32'h_07000000; + 768: 32'h_10000000; + 776: 32'h_00000000; + 784: 32'h_00000000; + 792: 32'h_02000000; + 800: 32'h_01000000; + 808: 32'h_30306340; + 816: 32'h_00000030; + 824: 32'h_09000000; + 832: 32'h_3631736e; + 840: 32'h_00000000; + 848: 32'h_10000000; + 856: 32'h_00000000; + 864: 32'h_00000000; + 872: 32'h_03000000; + 880: 32'h_c2000000; + 888: 32'h_03000000; + 896: 32'h_69000000; + 904: 32'h_03000000; + 912: 32'h_ae000000; + 920: 32'h_0b000000; + 928: 32'h_02000000; + 936: 32'h_64646123; + 944: 32'h_6c65632d; + 952: 32'h_657a6973; + 960: 32'h_6300736c; + 968: 32'h_6c626974; + 976: 32'h_006c6564; + 984: 32'h_65736162; + 992: 32'h_6e657571; + 1000: 32'h_63697665; + 1008: 32'h_72006570; + 1016: 32'h_75746174; + 1024: 32'h_2c766373; + 1032: 32'h_2d756d6d; + 1040: 32'h_6f6c6300; + 1048: 32'h_75716572; + 1056: 32'h_6e692300; + 1064: 32'h_2d747075; + 1072: 32'h_6e690073; + 1080: 32'h_2d747075; + 1088: 32'h_6c6c6f72; + 1096: 32'h_646e6168; + 1104: 32'h_65676e61; + 1112: 32'h_72726574; + 1120: 32'h_7478652d; + 1128: 32'h_65720064; + 1136: 32'h_00746669; + 1144: 32'h_00000000; + 1152: 32'h_00000000; + 1160: 32'h_00000000; + 1168: 32'h_00000000; + 1176: 32'h_00000000; + 1184: 32'h_00000000; + 1192: 32'h_00000000; + 1200: 32'h_00000000; + 1208: 32'h_00000000; + 1216: 32'h_00000000; + 1224: 32'h_00000000; + 1232: 32'h_00000000; + 1240: 32'h_00000000; + 1248: 32'h_00000000; + 1256: 32'h_00000000; + 1264: 32'h_00000000; + 1272: 32'h_00000000; + 1280: 32'h_00000000; + 1288: 32'h_00000000; + 1296: 32'h_00000000; + 1304: 32'h_00000000; + 1312: 32'h_00000000; + 1320: 32'h_00000000; + 1328: 32'h_00000000; + 1336: 32'h_00000000; + 1344: 32'h_00000000; + 1352: 32'h_00000000; + 1360: 32'h_00000000; + 1368: 32'h_00000000; + 1376: 32'h_00000000; + 1384: 32'h_00000000; + 1392: 32'h_00000000; + 1400: 32'h_00000000; + 1408: 32'h_00000000; + 1416: 32'h_00000000; + 1424: 32'h_00000000; + 1432: 32'h_00000000; + 1440: 32'h_00000000; + 1448: 32'h_00000000; + 1456: 32'h_00000000; + 1464: 32'h_00000000; + 1472: 32'h_00000000; + 1480: 32'h_00000000; + 1488: 32'h_00000000; + 1496: 32'h_00000000; + 1504: 32'h_00000000; + 1512: 32'h_00000000; + 1520: 32'h_00000000; + 1528: 32'h_00000000; + 1536: 32'h_00000000; + 1544: 32'h_00000000; + 1552: 32'h_00000000; + 1560: 32'h_00000000; + 1568: 32'h_00000000; + 1576: 32'h_00000000; + 1584: 32'h_00000000; + 1592: 32'h_00000000; + 1600: 32'h_00000000; + 1608: 32'h_00000000; + 1616: 32'h_00000000; + 1624: 32'h_00000000; + 1632: 32'h_00000000; + 1640: 32'h_00000000; + 1648: 32'h_00000000; + 1656: 32'h_00000000; + 1664: 32'h_00000000; + 1672: 32'h_00000000; + 1680: 32'h_00000000; + 1688: 32'h_00000000; + 1696: 32'h_00000000; + 1704: 32'h_00000000; + 1712: 32'h_00000000; + 1720: 32'h_00000000; + 1728: 32'h_00000000; + 1736: 32'h_00000000; + 1744: 32'h_00000000; + 1752: 32'h_00000000; + 1760: 32'h_00000000; + 1768: 32'h_00000000; + 1776: 32'h_00000000; + 1784: 32'h_00000000; + 1792: 32'h_00000000; + 1800: 32'h_00000000; + 1808: 32'h_00000000; + 1816: 32'h_00000000; + 1824: 32'h_00000000; + 1832: 32'h_00000000; + 1840: 32'h_00000000; + 1848: 32'h_00000000; + 1856: 32'h_00000000; + 1864: 32'h_00000000; + 1872: 32'h_00000000; + 1880: 32'h_00000000; + 1888: 32'h_00000000; + 1896: 32'h_00000000; + 1904: 32'h_00000000; + 1912: 32'h_00000000; + 1920: 32'h_00000000; + 1928: 32'h_00000000; + 1936: 32'h_00000000; + 1944: 32'h_00000000; + 1952: 32'h_00000000; + 1960: 32'h_00000000; + 1968: 32'h_00000000; + 1976: 32'h_00000000; + 1984: 32'h_00000000; + 1992: 32'h_00000000; + 2000: 32'h_00000000; + 2008: 32'h_00000000; + 2016: 32'h_00000000; + 2024: 32'h_00000000; + 2032: 32'h_00000000; + 2040: 32'h_00000000; + 2048: 32'h_00000000; + 2056: 32'h_00000000; + 2064: 32'h_00000000; + 2072: 32'h_00000000; + 2080: 32'h_00000000; + 2088: 32'h_00000000; + 2096: 32'h_00000000; + 2104: 32'h_00000000; + 2112: 32'h_00000000; + 2120: 32'h_00000000; + 2128: 32'h_00000000; + 2136: 32'h_00000000; + 2144: 32'h_00000000; + 2152: 32'h_00000000; + 2160: 32'h_00000000; + 2168: 32'h_00000000; + 2176: 32'h_00000000; + 2184: 32'h_00000000; + 2192: 32'h_00000000; + 2200: 32'h_00000000; + 2208: 32'h_00000000; + 2216: 32'h_00000000; + 2224: 32'h_00000000; + 2232: 32'h_00000000; + 2240: 32'h_00000000; + 2248: 32'h_00000000; + 2256: 32'h_00000000; + 2264: 32'h_00000000; + 2272: 32'h_00000000; + 2280: 32'h_00000000; + 2288: 32'h_00000000; + 2296: 32'h_00000000; + 2304: 32'h_00000000; + 2312: 32'h_00000000; + 2320: 32'h_00000000; + 2328: 32'h_00000000; + 2336: 32'h_00000000; + 2344: 32'h_00000000; + 2352: 32'h_00000000; + 2360: 32'h_00000000; + 2368: 32'h_00000000; + 2376: 32'h_00000000; + 2384: 32'h_00000000; + 2392: 32'h_00000000; + 2400: 32'h_00000000; + 2408: 32'h_00000000; + 2416: 32'h_00000000; + 2424: 32'h_00000000; + 2432: 32'h_00000000; + 2440: 32'h_00000000; + 2448: 32'h_00000000; + 2456: 32'h_00000000; + 2464: 32'h_00000000; + 2472: 32'h_00000000; + 2480: 32'h_00000000; + 2488: 32'h_00000000; + 2496: 32'h_00000000; + 2504: 32'h_00000000; + 2512: 32'h_00000000; + 2520: 32'h_00000000; + 2528: 32'h_00000000; + 2536: 32'h_00000000; + 2544: 32'h_00000000; + 2552: 32'h_00000000; + 2560: 32'h_00000000; + 2568: 32'h_00000000; + 2576: 32'h_00000000; + 2584: 32'h_00000000; + 2592: 32'h_00000000; + 2600: 32'h_00000000; + 2608: 32'h_00000000; + 2616: 32'h_00000000; + 2624: 32'h_00000000; + 2632: 32'h_00000000; + 2640: 32'h_00000000; + 2648: 32'h_00000000; + 2656: 32'h_00000000; + 2664: 32'h_00000000; + 2672: 32'h_00000000; + 2680: 32'h_00000000; + 2688: 32'h_00000000; + 2696: 32'h_00000000; + 2704: 32'h_00000000; + 2712: 32'h_00000000; + 2720: 32'h_00000000; + 2728: 32'h_00000000; + 2736: 32'h_00000000; + 2744: 32'h_00000000; + 2752: 32'h_00000000; + 2760: 32'h_00000000; + 2768: 32'h_00000000; + 2776: 32'h_00000000; + 2784: 32'h_00000000; + 2792: 32'h_00000000; + 2800: 32'h_00000000; + 2808: 32'h_00000000; + 2816: 32'h_00000000; + 2824: 32'h_00000000; + 2832: 32'h_00000000; + 2840: 32'h_00000000; + 2848: 32'h_00000000; + 2856: 32'h_00000000; + 2864: 32'h_00000000; + 2872: 32'h_00000000; + 2880: 32'h_00000000; + 2888: 32'h_00000000; + 2896: 32'h_00000000; + 2904: 32'h_00000000; + 2912: 32'h_00000000; + 2920: 32'h_00000000; + 2928: 32'h_00000000; + 2936: 32'h_00000000; + 2944: 32'h_00000000; + 2952: 32'h_00000000; + 2960: 32'h_00000000; + 2968: 32'h_00000000; + 2976: 32'h_00000000; + 2984: 32'h_00000000; + 2992: 32'h_00000000; + 3000: 32'h_00000000; + 3008: 32'h_00000000; + 3016: 32'h_00000000; + 3024: 32'h_00000000; + 3032: 32'h_00000000; + 3040: 32'h_00000000; + 3048: 32'h_00000000; + 3056: 32'h_00000000; + 3064: 32'h_00000000; + 3072: 32'h_00000000; + 3080: 32'h_00000000; + 3088: 32'h_00000000; + 3096: 32'h_00000000; + 3104: 32'h_00000000; + 3112: 32'h_00000000; + 3120: 32'h_00000000; + 3128: 32'h_00000000; + 3136: 32'h_00000000; + 3144: 32'h_00000000; + 3152: 32'h_00000000; + 3160: 32'h_00000000; + 3168: 32'h_00000000; + 3176: 32'h_00000000; + 3184: 32'h_00000000; + 3192: 32'h_00000000; + 3200: 32'h_00000000; + 3208: 32'h_00000000; + 3216: 32'h_00000000; + 3224: 32'h_00000000; + 3232: 32'h_00000000; + 3240: 32'h_00000000; + 3248: 32'h_00000000; + 3256: 32'h_00000000; + 3264: 32'h_00000000; + 3272: 32'h_00000000; + 3280: 32'h_00000000; + 3288: 32'h_00000000; + 3296: 32'h_00000000; + 3304: 32'h_00000000; + 3312: 32'h_00000000; + 3320: 32'h_00000000; + 3328: 32'h_00000000; + 3336: 32'h_00000000; + 3344: 32'h_00000000; + 3352: 32'h_00000000; + 3360: 32'h_00000000; + 3368: 32'h_00000000; + 3376: 32'h_00000000; + 3384: 32'h_00000000; + 3392: 32'h_00000000; + 3400: 32'h_00000000; + 3408: 32'h_00000000; + 3416: 32'h_00000000; + 3424: 32'h_00000000; + 3432: 32'h_00000000; + 3440: 32'h_00000000; + 3448: 32'h_00000000; + 3456: 32'h_00000000; + 3464: 32'h_00000000; + 3472: 32'h_00000000; + 3480: 32'h_00000000; + 3488: 32'h_00000000; + 3496: 32'h_00000000; + 3504: 32'h_00000000; + 3512: 32'h_00000000; + 3520: 32'h_00000000; + 3528: 32'h_00000000; + 3536: 32'h_00000000; + 3544: 32'h_00000000; + 3552: 32'h_00000000; + 3560: 32'h_00000000; + 3568: 32'h_00000000; + 3576: 32'h_00000000; + 3584: 32'h_00000000; + 3592: 32'h_00000000; + 3600: 32'h_00000000; + 3608: 32'h_00000000; + 3616: 32'h_00000000; + 3624: 32'h_00000000; + 3632: 32'h_00000000; + 3640: 32'h_00000000; + 3648: 32'h_00000000; + 3656: 32'h_00000000; + 3664: 32'h_00000000; + 3672: 32'h_00000000; + 3680: 32'h_00000000; + 3688: 32'h_00000000; + 3696: 32'h_00000000; + 3704: 32'h_00000000; + 3712: 32'h_00000000; + 3720: 32'h_00000000; + 3728: 32'h_00000000; + 3736: 32'h_00000000; + 3744: 32'h_00000000; + 3752: 32'h_00000000; + 3760: 32'h_00000000; + 3768: 32'h_00000000; + 3776: 32'h_00000000; + 3784: 32'h_00000000; + 3792: 32'h_00000000; + 3800: 32'h_00000000; + 3808: 32'h_00000000; + 3816: 32'h_00000000; + 3824: 32'h_00000000; + 3832: 32'h_00000000; + 3840: 32'h_00000000; + 3848: 32'h_00000000; + 3856: 32'h_00000000; + 3864: 32'h_00000000; + 3872: 32'h_00000000; + 3880: 32'h_00000000; + 3888: 32'h_00000000; + 3896: 32'h_00000000; + 3904: 32'h_00000000; + 3912: 32'h_00000000; + 3920: 32'h_00000000; + 3928: 32'h_00000000; + 3936: 32'h_00000000; + 3944: 32'h_00000000; + 3952: 32'h_00000000; + 3960: 32'h_00000000; + 3968: 32'h_00000000; + 3976: 32'h_00000000; + 3984: 32'h_00000000; + 3992: 32'h_00000000; + 4000: 32'h_00000000; + 4008: 32'h_00000000; + 4016: 32'h_00000000; + 4024: 32'h_00000000; + 4032: 32'h_00000000; + 4040: 32'h_00000000; + 4048: 32'h_00000000; + 4056: 32'h_00000000; + 4064: 32'h_00000000; + 4072: 32'h_00000000; + 4080: 32'h_00000000; + 4088: 32'h_00000000; + default: 32'h_AAAA_AAAA; + endcase; +endfunction: fn_read_ROM_0 + +// Function for 4-bytes values at addrs aligned to 'b100 + +function Bit #(32) fn_read_ROM_4 (Bit #(n) addr); + return + case (addr) + 4: 32'h_02028593; + 12: 32'h_0182b283; + 20: 32'h_00000000; + 28: 32'h_00000000; + 36: 32'h_54040000; + 44: 32'h_88030000; + 52: 32'h_11000000; + 60: 32'h_00000000; + 68: 32'h_50030000; + 76: 32'h_00000000; + 84: 32'h_00000000; + 92: 32'h_00000000; + 100: 32'h_04000000; + 108: 32'h_02000000; + 116: 32'h_04000000; + 124: 32'h_02000000; + 132: 32'h_16000000; + 140: 32'h_62626375; + 148: 32'h_656b6970; + 156: 32'h_65642d65; + 164: 32'h_03000000; + 172: 32'h_26000000; + 180: 32'h_732c7261; + 188: 32'h_7261622d; + 196: 32'h_01000000; + 204: 32'h_00000000; + 212: 32'h_04000000; + 220: 32'h_01000000; + 228: 32'h_04000000; + 236: 32'h_00000000; + 244: 32'h_04000000; + 252: 32'h_80969800; + 260: 32'h_40757063; + 268: 32'h_03000000; + 276: 32'h_3f000000; + 284: 32'h_03000000; + 292: 32'h_4b000000; + 300: 32'h_03000000; + 308: 32'h_4f000000; + 316: 32'h_00000000; + 324: 32'h_06000000; + 332: 32'h_63736972; + 340: 32'h_03000000; + 348: 32'h_56000000; + 356: 32'h_75616d69; + 364: 32'h_03000000; + 372: 32'h_60000000; + 380: 32'h_76732c76; + 388: 32'h_03000000; + 396: 32'h_69000000; + 404: 32'h_01000000; + 412: 32'h_70757272; + 420: 32'h_6f72746e; + 428: 32'h_00000000; + 436: 32'h_04000000; + 444: 32'h_01000000; + 452: 32'h_00000000; + 460: 32'h_03000000; + 468: 32'h_1b000000; + 476: 32'h_70632c76; + 484: 32'h_00006374; + 492: 32'h_04000000; + 500: 32'h_01000000; + 508: 32'h_02000000; + 516: 32'h_01000000; + 524: 32'h_38407972; + 532: 32'h_00303030; + 540: 32'h_07000000; + 548: 32'h_6f6d656d; + 556: 32'h_03000000; + 564: 32'h_4b000000; + 572: 32'h_00000080; + 580: 32'h_00000010; + 588: 32'h_01000000; + 596: 32'h_03000000; + 604: 32'h_00000000; + 612: 32'h_03000000; + 620: 32'h_0f000000; + 628: 32'h_03000000; + 636: 32'h_1b000000; + 644: 32'h_732c7261; + 652: 32'h_7261622d; + 660: 32'h_69730063; + 668: 32'h_7375622d; + 676: 32'h_03000000; + 684: 32'h_a7000000; + 692: 32'h_6e696c63; + 700: 32'h_30303030; + 708: 32'h_03000000; + 716: 32'h_1b000000; + 724: 32'h_6c632c76; + 732: 32'h_00000000; + 740: 32'h_10000000; + 748: 32'h_01000000; + 756: 32'h_01000000; + 764: 32'h_03000000; + 772: 32'h_4b000000; + 780: 32'h_00000002; + 788: 32'h_00000c00; + 796: 32'h_02000000; + 804: 32'h_74726175; + 812: 32'h_30303030; + 820: 32'h_03000000; + 828: 32'h_1b000000; + 836: 32'h_61303535; + 844: 32'h_03000000; + 852: 32'h_4b000000; + 860: 32'h_000000c0; + 868: 32'h_40000000; + 876: 32'h_04000000; + 884: 32'h_03000000; + 892: 32'h_04000000; + 900: 32'h_80969800; + 908: 32'h_08000000; + 916: 32'h_01000000; + 924: 32'h_02000000; + 932: 32'h_09000000; + 940: 32'h_73736572; + 948: 32'h_2300736c; + 956: 32'h_6c65632d; + 964: 32'h_61706d6f; + 972: 32'h_6f6d0065; + 980: 32'h_656d6974; + 988: 32'h_6572662d; + 996: 32'h_64007963; + 1004: 32'h_79745f65; + 1012: 32'h_73006765; + 1020: 32'h_69720073; + 1028: 32'h_00617369; + 1036: 32'h_65707974; + 1044: 32'h_662d6b63; + 1052: 32'h_79636e65; + 1060: 32'h_72726574; + 1068: 32'h_6c6c6563; + 1076: 32'h_72726574; + 1084: 32'h_746e6f63; + 1092: 32'h_70007265; + 1100: 32'h_7200656c; + 1108: 32'h_6e690073; + 1116: 32'h_73747075; + 1124: 32'h_65646e65; + 1132: 32'h_68732d67; + 1140: 32'h_00000000; + 1148: 32'h_00000000; + 1156: 32'h_00000000; + 1164: 32'h_00000000; + 1172: 32'h_00000000; + 1180: 32'h_00000000; + 1188: 32'h_00000000; + 1196: 32'h_00000000; + 1204: 32'h_00000000; + 1212: 32'h_00000000; + 1220: 32'h_00000000; + 1228: 32'h_00000000; + 1236: 32'h_00000000; + 1244: 32'h_00000000; + 1252: 32'h_00000000; + 1260: 32'h_00000000; + 1268: 32'h_00000000; + 1276: 32'h_00000000; + 1284: 32'h_00000000; + 1292: 32'h_00000000; + 1300: 32'h_00000000; + 1308: 32'h_00000000; + 1316: 32'h_00000000; + 1324: 32'h_00000000; + 1332: 32'h_00000000; + 1340: 32'h_00000000; + 1348: 32'h_00000000; + 1356: 32'h_00000000; + 1364: 32'h_00000000; + 1372: 32'h_00000000; + 1380: 32'h_00000000; + 1388: 32'h_00000000; + 1396: 32'h_00000000; + 1404: 32'h_00000000; + 1412: 32'h_00000000; + 1420: 32'h_00000000; + 1428: 32'h_00000000; + 1436: 32'h_00000000; + 1444: 32'h_00000000; + 1452: 32'h_00000000; + 1460: 32'h_00000000; + 1468: 32'h_00000000; + 1476: 32'h_00000000; + 1484: 32'h_00000000; + 1492: 32'h_00000000; + 1500: 32'h_00000000; + 1508: 32'h_00000000; + 1516: 32'h_00000000; + 1524: 32'h_00000000; + 1532: 32'h_00000000; + 1540: 32'h_00000000; + 1548: 32'h_00000000; + 1556: 32'h_00000000; + 1564: 32'h_00000000; + 1572: 32'h_00000000; + 1580: 32'h_00000000; + 1588: 32'h_00000000; + 1596: 32'h_00000000; + 1604: 32'h_00000000; + 1612: 32'h_00000000; + 1620: 32'h_00000000; + 1628: 32'h_00000000; + 1636: 32'h_00000000; + 1644: 32'h_00000000; + 1652: 32'h_00000000; + 1660: 32'h_00000000; + 1668: 32'h_00000000; + 1676: 32'h_00000000; + 1684: 32'h_00000000; + 1692: 32'h_00000000; + 1700: 32'h_00000000; + 1708: 32'h_00000000; + 1716: 32'h_00000000; + 1724: 32'h_00000000; + 1732: 32'h_00000000; + 1740: 32'h_00000000; + 1748: 32'h_00000000; + 1756: 32'h_00000000; + 1764: 32'h_00000000; + 1772: 32'h_00000000; + 1780: 32'h_00000000; + 1788: 32'h_00000000; + 1796: 32'h_00000000; + 1804: 32'h_00000000; + 1812: 32'h_00000000; + 1820: 32'h_00000000; + 1828: 32'h_00000000; + 1836: 32'h_00000000; + 1844: 32'h_00000000; + 1852: 32'h_00000000; + 1860: 32'h_00000000; + 1868: 32'h_00000000; + 1876: 32'h_00000000; + 1884: 32'h_00000000; + 1892: 32'h_00000000; + 1900: 32'h_00000000; + 1908: 32'h_00000000; + 1916: 32'h_00000000; + 1924: 32'h_00000000; + 1932: 32'h_00000000; + 1940: 32'h_00000000; + 1948: 32'h_00000000; + 1956: 32'h_00000000; + 1964: 32'h_00000000; + 1972: 32'h_00000000; + 1980: 32'h_00000000; + 1988: 32'h_00000000; + 1996: 32'h_00000000; + 2004: 32'h_00000000; + 2012: 32'h_00000000; + 2020: 32'h_00000000; + 2028: 32'h_00000000; + 2036: 32'h_00000000; + 2044: 32'h_00000000; + 2052: 32'h_00000000; + 2060: 32'h_00000000; + 2068: 32'h_00000000; + 2076: 32'h_00000000; + 2084: 32'h_00000000; + 2092: 32'h_00000000; + 2100: 32'h_00000000; + 2108: 32'h_00000000; + 2116: 32'h_00000000; + 2124: 32'h_00000000; + 2132: 32'h_00000000; + 2140: 32'h_00000000; + 2148: 32'h_00000000; + 2156: 32'h_00000000; + 2164: 32'h_00000000; + 2172: 32'h_00000000; + 2180: 32'h_00000000; + 2188: 32'h_00000000; + 2196: 32'h_00000000; + 2204: 32'h_00000000; + 2212: 32'h_00000000; + 2220: 32'h_00000000; + 2228: 32'h_00000000; + 2236: 32'h_00000000; + 2244: 32'h_00000000; + 2252: 32'h_00000000; + 2260: 32'h_00000000; + 2268: 32'h_00000000; + 2276: 32'h_00000000; + 2284: 32'h_00000000; + 2292: 32'h_00000000; + 2300: 32'h_00000000; + 2308: 32'h_00000000; + 2316: 32'h_00000000; + 2324: 32'h_00000000; + 2332: 32'h_00000000; + 2340: 32'h_00000000; + 2348: 32'h_00000000; + 2356: 32'h_00000000; + 2364: 32'h_00000000; + 2372: 32'h_00000000; + 2380: 32'h_00000000; + 2388: 32'h_00000000; + 2396: 32'h_00000000; + 2404: 32'h_00000000; + 2412: 32'h_00000000; + 2420: 32'h_00000000; + 2428: 32'h_00000000; + 2436: 32'h_00000000; + 2444: 32'h_00000000; + 2452: 32'h_00000000; + 2460: 32'h_00000000; + 2468: 32'h_00000000; + 2476: 32'h_00000000; + 2484: 32'h_00000000; + 2492: 32'h_00000000; + 2500: 32'h_00000000; + 2508: 32'h_00000000; + 2516: 32'h_00000000; + 2524: 32'h_00000000; + 2532: 32'h_00000000; + 2540: 32'h_00000000; + 2548: 32'h_00000000; + 2556: 32'h_00000000; + 2564: 32'h_00000000; + 2572: 32'h_00000000; + 2580: 32'h_00000000; + 2588: 32'h_00000000; + 2596: 32'h_00000000; + 2604: 32'h_00000000; + 2612: 32'h_00000000; + 2620: 32'h_00000000; + 2628: 32'h_00000000; + 2636: 32'h_00000000; + 2644: 32'h_00000000; + 2652: 32'h_00000000; + 2660: 32'h_00000000; + 2668: 32'h_00000000; + 2676: 32'h_00000000; + 2684: 32'h_00000000; + 2692: 32'h_00000000; + 2700: 32'h_00000000; + 2708: 32'h_00000000; + 2716: 32'h_00000000; + 2724: 32'h_00000000; + 2732: 32'h_00000000; + 2740: 32'h_00000000; + 2748: 32'h_00000000; + 2756: 32'h_00000000; + 2764: 32'h_00000000; + 2772: 32'h_00000000; + 2780: 32'h_00000000; + 2788: 32'h_00000000; + 2796: 32'h_00000000; + 2804: 32'h_00000000; + 2812: 32'h_00000000; + 2820: 32'h_00000000; + 2828: 32'h_00000000; + 2836: 32'h_00000000; + 2844: 32'h_00000000; + 2852: 32'h_00000000; + 2860: 32'h_00000000; + 2868: 32'h_00000000; + 2876: 32'h_00000000; + 2884: 32'h_00000000; + 2892: 32'h_00000000; + 2900: 32'h_00000000; + 2908: 32'h_00000000; + 2916: 32'h_00000000; + 2924: 32'h_00000000; + 2932: 32'h_00000000; + 2940: 32'h_00000000; + 2948: 32'h_00000000; + 2956: 32'h_00000000; + 2964: 32'h_00000000; + 2972: 32'h_00000000; + 2980: 32'h_00000000; + 2988: 32'h_00000000; + 2996: 32'h_00000000; + 3004: 32'h_00000000; + 3012: 32'h_00000000; + 3020: 32'h_00000000; + 3028: 32'h_00000000; + 3036: 32'h_00000000; + 3044: 32'h_00000000; + 3052: 32'h_00000000; + 3060: 32'h_00000000; + 3068: 32'h_00000000; + 3076: 32'h_00000000; + 3084: 32'h_00000000; + 3092: 32'h_00000000; + 3100: 32'h_00000000; + 3108: 32'h_00000000; + 3116: 32'h_00000000; + 3124: 32'h_00000000; + 3132: 32'h_00000000; + 3140: 32'h_00000000; + 3148: 32'h_00000000; + 3156: 32'h_00000000; + 3164: 32'h_00000000; + 3172: 32'h_00000000; + 3180: 32'h_00000000; + 3188: 32'h_00000000; + 3196: 32'h_00000000; + 3204: 32'h_00000000; + 3212: 32'h_00000000; + 3220: 32'h_00000000; + 3228: 32'h_00000000; + 3236: 32'h_00000000; + 3244: 32'h_00000000; + 3252: 32'h_00000000; + 3260: 32'h_00000000; + 3268: 32'h_00000000; + 3276: 32'h_00000000; + 3284: 32'h_00000000; + 3292: 32'h_00000000; + 3300: 32'h_00000000; + 3308: 32'h_00000000; + 3316: 32'h_00000000; + 3324: 32'h_00000000; + 3332: 32'h_00000000; + 3340: 32'h_00000000; + 3348: 32'h_00000000; + 3356: 32'h_00000000; + 3364: 32'h_00000000; + 3372: 32'h_00000000; + 3380: 32'h_00000000; + 3388: 32'h_00000000; + 3396: 32'h_00000000; + 3404: 32'h_00000000; + 3412: 32'h_00000000; + 3420: 32'h_00000000; + 3428: 32'h_00000000; + 3436: 32'h_00000000; + 3444: 32'h_00000000; + 3452: 32'h_00000000; + 3460: 32'h_00000000; + 3468: 32'h_00000000; + 3476: 32'h_00000000; + 3484: 32'h_00000000; + 3492: 32'h_00000000; + 3500: 32'h_00000000; + 3508: 32'h_00000000; + 3516: 32'h_00000000; + 3524: 32'h_00000000; + 3532: 32'h_00000000; + 3540: 32'h_00000000; + 3548: 32'h_00000000; + 3556: 32'h_00000000; + 3564: 32'h_00000000; + 3572: 32'h_00000000; + 3580: 32'h_00000000; + 3588: 32'h_00000000; + 3596: 32'h_00000000; + 3604: 32'h_00000000; + 3612: 32'h_00000000; + 3620: 32'h_00000000; + 3628: 32'h_00000000; + 3636: 32'h_00000000; + 3644: 32'h_00000000; + 3652: 32'h_00000000; + 3660: 32'h_00000000; + 3668: 32'h_00000000; + 3676: 32'h_00000000; + 3684: 32'h_00000000; + 3692: 32'h_00000000; + 3700: 32'h_00000000; + 3708: 32'h_00000000; + 3716: 32'h_00000000; + 3724: 32'h_00000000; + 3732: 32'h_00000000; + 3740: 32'h_00000000; + 3748: 32'h_00000000; + 3756: 32'h_00000000; + 3764: 32'h_00000000; + 3772: 32'h_00000000; + 3780: 32'h_00000000; + 3788: 32'h_00000000; + 3796: 32'h_00000000; + 3804: 32'h_00000000; + 3812: 32'h_00000000; + 3820: 32'h_00000000; + 3828: 32'h_00000000; + 3836: 32'h_00000000; + 3844: 32'h_00000000; + 3852: 32'h_00000000; + 3860: 32'h_00000000; + 3868: 32'h_00000000; + 3876: 32'h_00000000; + 3884: 32'h_00000000; + 3892: 32'h_00000000; + 3900: 32'h_00000000; + 3908: 32'h_00000000; + 3916: 32'h_00000000; + 3924: 32'h_00000000; + 3932: 32'h_00000000; + 3940: 32'h_00000000; + 3948: 32'h_00000000; + 3956: 32'h_00000000; + 3964: 32'h_00000000; + 3972: 32'h_00000000; + 3980: 32'h_00000000; + 3988: 32'h_00000000; + 3996: 32'h_00000000; + 4004: 32'h_00000000; + 4012: 32'h_00000000; + 4020: 32'h_00000000; + 4028: 32'h_00000000; + 4036: 32'h_00000000; + 4044: 32'h_00000000; + 4052: 32'h_00000000; + 4060: 32'h_00000000; + 4068: 32'h_00000000; + 4076: 32'h_00000000; + 4084: 32'h_00000000; + 4092: 32'h_00000000; + default: 32'h_AAAA_AAAA; + endcase; +endfunction: fn_read_ROM_4 diff --git a/src_Testbench/Top/C_Imported_Functions.c b/src_Testbench/Top/C_Imported_Functions.c new file mode 100644 index 0000000..a737d71 --- /dev/null +++ b/src_Testbench/Top/C_Imported_Functions.c @@ -0,0 +1,825 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +// ================================================================ +// These are functions imported into BSV during Bluesim or Verilog simulation. +// See C_Imports.bsv for the corresponding 'import BDPI' declarations. + +// There are several independent groups of functions below; the +// groups are separated by heavy dividers ('// *******') + +// Below, 'dummy' args are not used, and are present only to appease +// some Verilog simulators that are finicky about 0-arg functions. + +// ================================================================ +// Includes from C library + +// General +#include +#include +#include +#include +#include +#include +#include +#include + +// For comms polling +#include +#include +#include + +// For TCP +#include // socket definitions +#include // socket types +#include // inet (3) funtions +#include // To set non-blocking mode + +// ================================================================ +// Includes for this project + +#include "C_Imported_Functions.h" + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for console I/O + +// ================================================================ +// c_trygetchar() +// Returns next input character (ASCII code) from the console. +// Returns 0 if no input is available. + +uint8_t c_trygetchar (uint8_t dummy) +{ + uint8_t ch; + ssize_t n; + struct pollfd x_pollfd; + const int fd_stdin = 0; + + // ---------------- + // Poll for input + x_pollfd.fd = fd_stdin; + x_pollfd.events = POLLRDNORM; + x_pollfd.revents = 0; + poll (& x_pollfd, 1, 1); + + // printf ("INFO: c_trygetchar: Polling for input\n"); + if ((x_pollfd.revents & POLLRDNORM) == 0) { + return 0; + } + + // ---------------- + // Input is available + + n = read (fd_stdin, & ch, 1); + if (n == 1) { + return ch; + } + else { + if (n == 0) + printf ("c_trygetchar: end of file\n"); + return 0xFF; + } +} + +// ================================================================ +// A small 'main' to test c_trygetchar() + +#ifdef TEST_TRYGETCHAR + +char message[] = "Hello World!\n"; + +int main (int argc, char *argv []) +{ + uint8_t ch; + int j; + + for (j = 0; j < strlen (message); j++) + c_putchar (message[j]); + + printf ("Polling for input\n"); + + j = 0; + while (1) { + ch = c_trygetchar (); + if (ch == 0xFF) break; + if (ch != 0) + printf ("Received character %0d 0x%0x '%c'\n", ch, ch, ch); + else { + printf ("\r%0d ", j); + fflush (stdout); + j++; + sleep (1); + } + } + return 0; +} + +#endif + +// ================================================================ +// c_putchar() +// Writes character to stdout + +uint32_t c_putchar (uint8_t ch) +{ + int status; + uint32_t success = 0; + + if ((ch == 0) || (ch > 0x7F)) { + // Discard non-printables + success = 1; + } + else { + if ((ch == '\n') || (' ' <= ch)) { + status = fprintf (stdout, "%c", ch); + if (status > 0) + success = 1; + } + else { + status = fprintf (stdout, "[\\%0d]", ch); + if (status > 0) + success = 1; + } + + if (success == 1) { + status = fflush (stdout); + if (status != 0) + success = 0; + } + } + + return success; +} + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for reading in various parameters + +// ================================================================ +// c_get_symbol_val () +// Returns the value of a symbol (a memory address) from a symbol-table file. +// The symbol-table file has a ' ' pair on each line. +// Reads the whole symbol-table file on each call, +// which is ok if it's not called often and the file is small. + +static +char symbol_table_filename [] = "symbol_table.txt"; + +uint64_t c_get_symbol_val (char * symbol) +{ + bool ok = false; + uint64_t val = 0; + + FILE *fp = fopen (symbol_table_filename, "r"); + if (fp == NULL) { + fprintf (stderr, "c_get_symbol: could not open file: %s\n", symbol_table_filename); + } + else { + int len = strlen (symbol); + int linenum = 0; + + while (true) { + char linebuf [1024], *p; + p = fgets (linebuf, 1024, fp); + if (p == NULL) { // EOF + fprintf (stderr, "c_get_symbol: could not find value for symbol %s\n", symbol); + break; + } + else { + linenum++; + + int cmp = strncmp (symbol, linebuf, len); + if (cmp != 0) // This symbol is not on this line + continue; + else { + int n = sscanf (& (linebuf [len]), "%" SCNx64, & val); + if ((n == EOF) || (n < 1)) { + fprintf (stderr, "c_get_symbol: could not find value for symbol %s\n", symbol); + fprintf (stderr, " on file '%s' line %d\n", symbol_table_filename, linenum); + } + else + ok = true; + break; + } + } + } + } + return val; +} + +// ---------------------------------------------------------------- +// A small 'main' to test c_get_symbol_val() + +#ifdef TEST_GET_SYMBOL_VAL + +int main (int argc, char *argv []) +{ + uint64_t x = c_get_symbol_val ("tohost"); + fprintf (stdout, "tohost value is 0x%" PRIx64 "\n", x); +} + +#endif + +// ================================================================ +// Misc. parameters from a parameters file, if it exists. +// Each non-empty line of the file should contain +// param-name param-value comment +// or # comment + +/* +#define MAX_PARAMS 128 + +char sim_params_filename[] = "sim_params.txt"; +static bool params_loaded = false; +static uint64_t param_vals [MAX_PARAMS]; + +#define PARAM_LINEBUF_SIZE 1024 + +static +void load_params (void) +{ + for (uint32_t j = 0; j < MAX_PARAMS; j++) + param_vals [j] = 0; + + FILE *fp = fopen ("sim_params.txt", "r"); + if (fp == NULL) { + fprintf (stdout, "INFO: no simulation parameters file: %s\n", sim_params_filename); + return; + } + else { + fprintf (stdout, "INFO: loading simulation parameters from file: %s\n", sim_params_filename); + } + + while (true) { + char linebuf [PARAM_LINEBUF_SIZE], *p; + + p = fgets (linebuf, PARAM_LINEBUF_SIZE, fp); + if (p == NULL) // EOF + break; + + // Skip leading blanks and tabs + int index = 0; + while ((index < PARAM_LINEBUF_SIZE) + && ((linebuf [index] == ' ') || (linebuf [index] == '\t'))) + index++; + if (index == PARAM_LINEBUF_SIZE) + break; + + if (linebuf [index] == '#') // comment line + continue; + + // Read the parameter code + uint32_t param; + int n = sscanf (& linebuf [index], "%" SCNd32 "%n", & param, & index); + if ((n == EOF) || (n < 1)) + continue; + + // Read the parameter value (decimal or hex, depending on the parameter) + uint64_t param_val; + if (param == sim_param_watch_tohost) { + int n = sscanf (& (linebuf [index]), "%" SCNd64, & param_val); + } + else if (param == sim_param_tohost_addr) { + int n = sscanf (& (linebuf [index]), "%" SCNx64, & param_val); + } + else { + int n = sscanf (& (linebuf [index]), "%" SCNd64, & param_val); + } + + if ((n == EOF) || (n < 1)) + continue; + else if (param >= MAX_PARAMS) { + fprintf (stderr, "INFO: ignoring out-of-bounds parameter code %0" PRId32 " (should be < %0d)\n", + param, MAX_PARAMS); + fprintf (stderr, " Value (decimal) = %0" PRId64, param_val); + fprintf (stderr, " Value (hex) = 0x%0" PRIx64, param_val); + } + else { + param_vals [param] = param_val; + } + } + fclose (fp); +} + +uint64_t c_get_param_val (uint32_t param) +{ + if (! params_loaded) { + load_params (); + params_loaded = true; + } + + uint64_t param_val = 0; + if (param < MAX_PARAMS) + param_val = param_vals [param]; + return param_val; +} + +*/ + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for Tandem Verification trace file output. + +static char trace_file_name[] = "trace_data.dat"; + +static FILE *trace_file_stream; + +static uint64_t trace_file_size = 0; +static uint64_t trace_file_writes = 0; + +#define BUFSIZE 1024 +static uint8_t buf [BUFSIZE]; + +// ================================================================ +// c_trace_file_open() +// Open file for recording binary trace output. + +uint32_t c_trace_file_open (uint8_t dummy) +{ + uint32_t success = 0; + + trace_file_stream = fopen ("trace_out.dat", "w"); + if (trace_file_stream == NULL) { + fprintf (stderr, "ERROR: c_trace_file_open: unable to open file '%s'.\n", trace_file_name); + success = 0; + } + else { + fprintf (stdout, "c_trace_file_stream: opened file '%s' for trace_data.\n", trace_file_name); + success = 1; + } + return success; +} + +// ================================================================ +// c_trace_file_load_byte_in_buffer () +// Write 8-bit 'data' into output buffer at byte offset 'j' + +uint32_t c_trace_file_load_byte_in_buffer (uint32_t j, uint8_t data) +{ + uint32_t success = 0; + + if (j >= BUFSIZE) { + fprintf (stderr, "ERROR: c_trace_file_load_byte_in_buffer: index (%0d) out of bounds (%0d)\n", + j, BUFSIZE); + success = 0; + } + else { + buf [j] = data; + success = 1; + } + return success; +} + +// ================================================================ +// c_trace_file_load_word64_in_buffer () +// Write 64-bit 'data' into output buffer at 'byte_offset' + +uint32_t c_trace_file_load_word64_in_buffer (uint32_t byte_offset, uint64_t data) +{ + uint32_t success = 0; + + if ((byte_offset + 7) >= BUFSIZE) { + fprintf (stderr, "ERROR: c_trace_file_load_word64_in_buffer: index (%0d) out of bounds (%0d)\n", + byte_offset, BUFSIZE); + success = 0; + } + else { + uint64_t *p = (uint64_t *) & (buf [byte_offset]); + *p = data; + success = 1; + } + return success; +} + +// ================================================================ +// c_trace_file_write_buffer() +// Write out 'n' bytes from the already-loaded output buffer to the trace file. + +uint32_t c_trace_file_write_buffer (uint32_t n) +{ + uint32_t success = 0; + + size_t n_written = fwrite (buf, 1, n, trace_file_stream); + if (n_written != n) + success = 0; + else { + trace_file_size += n; + trace_file_writes += 1; + success = 1; + } + return success; +} + +// ================================================================ +// c_trace_file_close() +// Close the trace file. + +uint32_t c_trace_file_close (uint8_t dummy) +{ + uint32_t success = 0; + int status; + + if (trace_file_stream == NULL) + success = 1; + else { + status = fclose (trace_file_stream); + if (status != 0) { + fprintf (stderr, "ERROR: c_trace_file_close: error in fclose()\n"); + success = 0; + } + else { + fprintf (stdout, "c_trace_file_stream: closed file '%s' for trace_data.\n", trace_file_name); + fprintf (stdout, " Trace file writes: %0" PRId64 "\n", trace_file_writes); + fprintf (stdout, " Trace file size: %0" PRId64 " bytes\n", trace_file_size); + success = 1; + } + } + return success; +} + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for communication with remote debug client. + +// Acknowledgement: portions of TCP code adapted from example ECHOSERV +// ECHOSERV +// (c) Paul Griffiths, 1999 +// http://www.paulgriffiths.net/program/c/echoserv.php + +// ================================================================ +// The socket file descriptor + +static uint16_t port = 30000; + +static int connected_sockfd = 0; + +static FILE *logfile_fp = NULL; + +static char logfile_name [] = "debug_server_log.txt"; + +// ================================================================ +// Connect to debug client as server on tcp_port. +// Return fail/ok. + +uint8_t c_debug_client_connect (const uint16_t tcp_port) +{ + int listen_sockfd; // listening socket + struct sockaddr_in servaddr; // socket address structure + struct linger linger; + + fprintf (stdout, "Awaiting remote debug client connection on tcp port %0d ...\n", tcp_port); + + // Create the listening socket + if ( (listen_sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0 ) { + fprintf (stderr, "ERROR: c_debug_client_connect: socket () failed\n"); + return DMI_STATUS_ERR; + } + + // Set linger to 0 (immediate exit on close) + linger.l_onoff = 1; + linger.l_linger = 0; + setsockopt (listen_sockfd, SOL_SOCKET, SO_LINGER, & linger, sizeof (linger)); + + // Initialize socket address structure + memset (& servaddr, 0, sizeof (servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = htonl (INADDR_ANY); + servaddr.sin_port = htons (tcp_port); + + // Bind socket addresss to listening socket + if ( bind (listen_sockfd, (struct sockaddr *) & servaddr, sizeof (servaddr)) < 0 ) { + fprintf (stderr, "ERROR: c_debug_client_connect: bind () failed\n"); + return DMI_STATUS_ERR; + } + + // Listen for connection + if ( listen (listen_sockfd, 1) < 0 ) { + fprintf (stderr, "ERROR: c_debug_client_connect: listen () failed\n"); + return DMI_STATUS_ERR; + } + + // Set listening socket to non-blocking + int flags = fcntl (listen_sockfd, F_GETFL, 0); + if (flags < 0) { + fprintf (stderr, "ERROR: c_debug_client_connect: fcntl (F_GETFL) failed\n"); + return DMI_STATUS_ERR; + } + flags = (flags |O_NONBLOCK); + if (fcntl (listen_sockfd, F_SETFL, flags) < 0) { + fprintf (stderr, "ERROR: c_debug_client_connect: fcntl (F_SETFL, O_NONBLOCK) failed\n"); + return DMI_STATUS_ERR; + } + + // Wait for a connection, accept() it + while (true) { + connected_sockfd = accept (listen_sockfd, NULL, NULL); + if ((connected_sockfd < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK))) { + sleep (1); + } + else if (connected_sockfd < 0) { + fprintf (stderr, "ERROR: c_debug_client_connect: accept () failed\n"); + return DMI_STATUS_ERR; + } + else + break; + } + + // Close the listening socket + if (close (listen_sockfd) < 0) { + perror ("ERROR: c_debug_client_connect: error in close (listen_sockfd)"); + return DMI_STATUS_ERR; + } + + fprintf (stdout, "Connected\n"); + + logfile_fp = fopen (logfile_name, "w"); + if (logfile_fp != NULL) { + fprintf (stdout, " Logfile for debug client transactions is '%s'\n", logfile_name); + fprintf (logfile_fp, "CONNECTED on TCP port %0d\n", tcp_port); + } + else + fprintf (stdout, " Unable to open logfile for debug client transactions: '%s'\n", + logfile_name); + + return DMI_STATUS_OK; +} + +// ================================================================ +// Disconnect from debug client as server. +// Return fail/ok. + +uint8_t c_debug_client_disconnect (uint8_t dummy) +{ + uint8_t buf [128]; + ssize_t n; + + fprintf (stdout, "Disconnected from remote debug client on port %0d\n", port); + + shutdown (connected_sockfd, SHUT_WR); + + // Drain remaining bytes arriving + while (1) { + n = recv (connected_sockfd, buf, 128, 0); + if (n == 0) + break; + if ((n == -1) && (errno != EINTR)) + break; + } + + if (close (connected_sockfd) < 0) { + perror ("ERROR: c_debug_client_disconnect:"); + fprintf (stderr, " socket file descriptor: %0d\n", connected_sockfd); + return DMI_STATUS_ERR; + } + + if (logfile_fp != NULL) { + fprintf (logfile_fp, "DISCONNECTED on port %0d\n", port); + fclose (logfile_fp); + } + + return DMI_STATUS_OK; +} + +// ================================================================ +// Receive 7-byte request from remote client +// Result is: { status, data_b3, data_b2, data_b1, data_b0, addr_b1, addr_b0, op } + +static int command_num = 0; + +uint64_t c_debug_client_request_recv (uint8_t dummy) +{ + uint64_t result = 0; + uint8_t *p_result = (uint8_t *) & result; + + // ---------------- + // First, poll to check if any data is available + int fd = connected_sockfd; + + struct pollfd x_pollfd; + x_pollfd.fd = fd; + x_pollfd.events = POLLRDNORM; + x_pollfd.revents = 0; + + int n = poll (& x_pollfd, 1, 0); + + if (n < 0) { + perror ("ERROR: c_debug_client_request_recv (): poll () failed"); + p_result [7] = DMI_STATUS_ERR; + return result; + } + + if ((x_pollfd.revents & POLLRDNORM) == 0) { + // No byte available + // sched_yield (); // Allow other threads to run. + p_result [7] = DMI_STATUS_UNAVAIL; + return result; + } + + // ---------------- + // Data is available; read the 7-byte request + + int data_size = 7; + int n_recd = 0; + int n_iters = 0; + p_result [0] = DMI_STATUS_ERR; + while (n_recd < data_size) { + int n = read (fd, p_result + n_recd, (data_size - n_recd)); + if ((n < 0) && (errno != EAGAIN) && (errno != EWOULDBLOCK)) { + if (logfile_fp != NULL) { + fprintf (logfile_fp, "ERROR: c_debug_client_request_recv () failed\n"); + fprintf (logfile_fp, " Received %0d bytes so far (of %0d)\n", n_recd, data_size); + fprintf (logfile_fp, " Data so far: 0x%0" PRIx64 "\n", result); + fprintf (logfile_fp, " read (sock, ...) => %0d\n", n); + } + p_result [7] = DMI_STATUS_ERR; + return result; + } + else if (n > 0) { + n_recd += n; + } + + n_iters++; + if ((n_iters > 0) && ((n_iters % 1000000) == 0)) { + if (logfile_fp != NULL) { + fprintf (logfile_fp, "WARNING: c_debug_client_request_recv () stalled?\n"); + fprintf (logfile_fp, " Received %0d bytes so far (of %0d)\n", n_recd, data_size); + fprintf (logfile_fp, " Data so far: 0x%0" PRIx64 "\n", result); + fprintf (logfile_fp, " %0d iterations so far\n", n_iters); + } + } + } + p_result [7] = DMI_STATUS_OK; + + if (logfile_fp != NULL) { + uint8_t op = (result & 0xFF); + uint16_t addr = ((result >> 8) & 0xFFFF); + uint32_t data = ((result >> 24) & 0xFFFFFFFF); + switch (op) { + + case DMI_OP_READ: { + fprintf (logfile_fp, "C_to_S READ 0x%04x\n", addr); + break; + } + case DMI_OP_WRITE: { + fprintf (logfile_fp, "C_to_S WRITE 0x%04x 0x%08x\n", addr, data); + break; + } + case DMI_OP_SHUTDOWN: { + fprintf (logfile_fp, "C_to_S SHUTDOWN\n"); + break; + } + case DMI_OP_START_COMMAND: { + fprintf (logfile_fp, "C_to_S ======== START_COMMAND %0d\n", command_num); + command_num++; + break; + } + default: { + fprintf (logfile_fp, "C_to_S ERROR: Unrecognized op %0d; ignored\n", op); + + fprintf (stderr, + "ERROR: c_debug_client_request_recv: Unrecognized op %0d; ignored\n", + op); + } + } + fflush (logfile_fp); + } + + return result; +} + +// ================================================================ +// Send 4-byte response 'data' to debug client. +// Returns fail/ok status + +uint8_t c_debug_client_response_send (const uint32_t data) +{ + int fd = connected_sockfd; + int data_size = 4; // 4 bytes + int n_sent = 0; + int n_iters = 0; + uint8_t *p_data = (uint8_t *) & data; + + while (n_sent < data_size) { + int n = write (fd, p_data + n_sent, (data_size - n_sent)); + if ((n < 0) && (errno != EAGAIN) && (errno != EWOULDBLOCK)) { + if (logfile_fp != NULL) { + fprintf (logfile_fp, "ERROR: c_debug_client_response_send (0x%08x) failed\n", data); + fprintf (logfile_fp, " Sent %0d bytes so far (of %0d)\n", n_sent, data_size); + fprintf (logfile_fp, " write (sock, ...) => %0d\n", n); + } + return DMI_STATUS_ERR; + } + else if (n > 0) { + n_sent += n; + } + + n_iters++; + if ((n_iters > 0) && ((n_iters % 0x1000000) == 0)) { + if (logfile_fp != NULL) { + fprintf (logfile_fp, "WARNING: c_debug_client_response_send (0x%08x) stalled?\n", data); + fprintf (logfile_fp, " Sent %0d bytes so far (of %0d)\n", n_sent, data_size); + fprintf (logfile_fp, " %0d iterations so far\n", n_iters); + } + } + } + fsync (fd); + + if (logfile_fp != NULL) { + fprintf (logfile_fp, "S_to_C 0x%08x\n", data); + fflush (logfile_fp); + } + + return DMI_STATUS_OK; +} + +// ================================================================ +// This 'main' procedure is for standalone testing of this C server code. +// It listens on the server socket for a connection from Dsharp. +// It simply prints out read/write commands from Dsharp, +// and responds to read commands with an incrementing integer. + +#ifdef TEST_COMMS + +int main (int argc, char *argv []) +{ + uint8_t status; + + uint64_t req; + uint8_t *p_req = (uint8_t *) (& req); + uint8_t req_op; + uint16_t req_addr; + uint32_t req_data; + + uint32_t rsp_data = 0; + + status = c_debug_client_connect (port); + if (status != DMI_STATUS_OK) { + return 1; + } + + while (true) { + req = c_debug_client_request_recv (0); + + status = p_req [7]; + + req_op = p_req [0]; + + req_addr = p_req [2]; + req_addr = ((req_addr << 8) | p_req [1]); + + req_data = p_req [6]; + req_data = ((req_data << 8) | p_req [5]); + req_data = ((req_data << 8) | p_req [4]); + req_data = ((req_data << 8) | p_req [3]); + + if (status == DMI_STATUS_UNAVAIL) { + usleep (1000); + continue; + } + + if (status == DMI_STATUS_ERR) + break; + + if (logfile_fp != NULL) + fprintf (logfile_fp, "================\n"); + if (req_op == DMI_OP_SHUTDOWN) { + if (logfile_fp != NULL) + fprintf (logfile_fp, "SHUTDOWN\n"); + break; + } + else if (req_op == DMI_OP_READ) { + if (logfile_fp != NULL) { + fprintf (logfile_fp, "READ addr '%04x'\n", req_addr); + fprintf (logfile_fp, " => sending response 0x%08x\n", rsp_data); + } + status = c_debug_client_response_send (rsp_data); + if (status == DMI_STATUS_ERR) + break; + rsp_data++; + } + else if (req_op == DMI_OP_WRITE) { + if (logfile_fp != NULL) + fprintf (logfile_fp, "WRITE addr '%04x' data '%08x'\n", req_addr, req_data); + } + else { + if (logfile_fp != NULL) + fprintf (stderr, "ERROR: unknown command: %0d\n", req_op); + continue; + } + } + return 0; +} + +#endif + +// **************************************************************** +// **************************************************************** +// **************************************************************** diff --git a/src_Testbench/Top/C_Imported_Functions.h b/src_Testbench/Top/C_Imported_Functions.h new file mode 100644 index 0000000..9d4a6ff --- /dev/null +++ b/src_Testbench/Top/C_Imported_Functions.h @@ -0,0 +1,134 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +#pragma once + +// ================================================================ +// These are functions imported into BSV during Bluesim or Verilog simulation. +// See C_Imports.bsv for the corresponding 'import BDPI' declarations. + +// There are several independent groups of functions below; the +// groups are separated by heavy dividers ('// *******') + +// Below, 'dummy' args are not used, and are present only to appease +// some Verilog simulators that are finicky about 0-arg functions. + +// ================================================================ + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for console I/O + +// ================================================================ +// c_trygetchar() +// Returns next input character (ASCII code) from the console. +// Returns 0 if no input is available. + +extern +uint8_t c_trygetchar (uint8_t dummy); + +// ================================================================ +// c_putchar() +// Writes character to stdout + +extern +uint32_t c_putchar (uint8_t ch); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for reading in various parameters + +// ================================================================ +// c_get_symbol_val () +// Returns the value of a symbol (a memory address) from a symbol-table file. +// The symbol-table file has a ' ' pair on each line. +// Reads the whole symbol-table file on each call, +// which is ok if it's not called often and the file is small. + +extern +uint64_t c_get_symbol_val (char * symbol); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for Tandem Verification trace file output. + +// ================================================================ +// c_trace_file_open() +// Open file for recording binary trace output. + +extern +uint32_t c_trace_file_open (uint8_t dummy); + +// ================================================================ +// c_trace_file_load_byte_in_buffer () +// Write 8-bit 'data' into output buffer at byte offset 'j' + +extern +uint32_t c_trace_file_load_byte_in_buffer (uint32_t j, uint8_t data); + +// ================================================================ +// c_trace_file_load_word64_in_buffer () +// Write 64-bit 'data' into output buffer at 'byte_offset' + +extern +uint32_t c_trace_file_load_word64_in_buffer (uint32_t byte_offset, uint64_t data); + +// ================================================================ +// c_trace_file_write_buffer() +// Write out 'n' bytes from the already-loaded output buffer to the trace file. + +extern +uint32_t c_trace_file_write_buffer (uint32_t n); + +// ================================================================ +// c_trace_file_close() +// Close the trace file. + +extern +uint32_t c_trace_file_close (uint8_t dummy); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for communication with remote debug client. + +// ================================================================ + +#define DMI_OP_READ 1 +#define DMI_OP_WRITE 2 +#define DMI_OP_SHUTDOWN 3 +#define DMI_OP_START_COMMAND 4 + +#define DMI_STATUS_ERR 0 +#define DMI_STATUS_OK 1 +#define DMI_STATUS_UNAVAIL 2 + +extern +uint8_t c_debug_client_connect (const uint16_t tcp_port); + +extern +uint8_t c_debug_client_disconnect (uint8_t dummy); + +extern +uint64_t c_debug_client_request_recv (uint8_t dummy); + +extern +uint8_t c_debug_client_response_send (const uint32_t data); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +#ifdef __cplusplus +} +#endif diff --git a/src_Testbench/Top/C_Imports.bsv b/src_Testbench/Top/C_Imports.bsv new file mode 100644 index 0000000..96a4b41 --- /dev/null +++ b/src_Testbench/Top/C_Imports.bsv @@ -0,0 +1,155 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved + +package C_Imports; + +// ================================================================ +// These are functions imported into BSV during Bluesim or Verilog simulation. +// See C_Imported_Functions.{h,c} for the corresponding C declarations +// and implementations. + +// There are several independent groups of functions below; the +// groups are separated by heavy dividers ('// *******') + +// Below, 'dummy' args are not used, and are present only to appease +// some Verilog simulators that are finicky about 0-arg functions. + +// ================================================================ +// BSV lib imports + +import Vector :: *; + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for console I/O + +// ================================================================ +// c_trygetchar () +// Returns next input character (ASCII code) from the console. +// Returns 0 if no input is available. + +import "BDPI" +function ActionValue #(Bit #(8)) c_trygetchar (Bit #(8) dummy); + +// ================================================================ +// c_putchar () +// Writes character to stdout + +import "BDPI" +function ActionValue #(Bit #(32)) c_putchar (Bit #(8) ch); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for reading in various parameters + +// ================================================================ +// c_get_symbol_val () +// Returns the value of a symbol (a memory address) from a symbol-table file. +// The symbol-table file has a ' ' pair on each line. +// Reads the whole symbol-table file on each call, +// which is ok if it's not called often and the file is small. + +import "BDPI" +function ActionValue #(Bit #(64)) c_get_symbol_val (String symbol); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for Tandem Verification trace file output. + +// ================================================================ +// c_trace_file_open () +// Open file for recording binary trace output. + +import "BDPI" +function ActionValue #(Bit #(32)) c_trace_file_open (Bit #(8) dummy); + +// ================================================================ +// c_trace_file_load_byte_in_buffer () +// Write 8-bit 'data' into output buffer at byte offset 'j' + +import "BDPI" +function ActionValue #(Bit #(32)) c_trace_file_load_byte_in_buffer (Bit #(32) j, Bit #(8) data); + +// ================================================================ +// c_trace_file_load_word64_in_buffer () +// Write 64-bit 'data' into output buffer at 'byte_offset' + +import "BDPI" +function ActionValue #(Bit #(32)) c_trace_file_load_word64_in_buffer (Bit #(32) byte_offset, Bit #(64) data); + +// ================================================================ +// c_trace_file_write_buffer () +// Write out 'n' bytes from the already-loaded output buffer to the trace file. + +import "BDPI" +function ActionValue #(Bit #(32)) c_trace_file_write_buffer (Bit #(32) n); + +// ================================================================ +// c_trace_file_close() +// Close the trace file. + +import "BDPI" +function ActionValue #(Bit #(32)) c_trace_file_close (Bit #(8) dummy); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// Functions for communication with remote debug client. + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +// ================================================================ +// Commands in requests. + +Bit #(16) dmi_default_tcp_port = 30000; + +Bit #(8) dmi_status_err = 0; +Bit #(8) dmi_status_ok = 1; +Bit #(8) dmi_status_unavail = 2; + +Bit #(8) dmi_op_read = 1; +Bit #(8) dmi_op_write = 2; +Bit #(8) dmi_op_shutdown = 3; +Bit #(8) dmi_op_start_command = 4; + +// ================================================================ +// Connect to debug client as server on tcp_port. +// Return fail/ok. + +import "BDPI" +function ActionValue #(Bit #(8)) c_debug_client_connect (Bit #(16) tcp_port); + +// ================================================================ +// Disconnect from debug client as server. +// Return fail/ok. + +import "BDPI" +function ActionValue #(Bit #(8)) c_debug_client_disconnect (Bit #(8) dummy); + +// ================================================================ +// Receive 7-byte request from debug client +// Result is: { status, data_b3, data_b2, data_b1, data_b0, addr_b1, addr_b0, op } + +import "BDPI" +function ActionValue #(Bit #(64)) c_debug_client_request_recv (Bit #(8) dummy); + +// ================================================================ +// Send 4-byte response 'data' to debug client. +// Returns fail/ok status + +import "BDPI" +function ActionValue #(Bit #(8)) c_debug_client_response_send (Bit #(32) data); + +// **************************************************************** +// **************************************************************** +// **************************************************************** + +endpackage diff --git a/src_Testbench/Top/Makefile b/src_Testbench/Top/Makefile new file mode 100644 index 0000000..63f7f3c --- /dev/null +++ b/src_Testbench/Top/Makefile @@ -0,0 +1,37 @@ +# This Makefile is for standalone testing of various groups of +# functions in C_Imported_Functions.c + +# ================================================================ + +C_Imported_Functions.o: C_Imported_Functions.h C_Imported_Functions.c + $(CC) -c C_Imported_Functions.c + +# ================================================================ +# Standalone testing + +# Uncomment one of the following + +TEST ?= PLEASE_CHOOSE_TEST + +# TEST = TEST_TRYGETCHAR +# TEST = TEST_GET_SYMBOL_VAL +TEST = TEST_COMMS + +test_exe: C_Imported_Functions.c + $(CC) -o test_exe -D$(TEST) C_Imported_Functions.c + +.PHONY: start +start: test_exe + ./test_exe + +# ================================================================ + +.PHONY: clean +clean: + rm -f *~ *.o + +.PHONY: full_clean +full_clean: + rm -f *~ *.o test_exe + +# ================================================================ diff --git a/src_Testbench/Top/Mem_Model.bsv b/src_Testbench/Top/Mem_Model.bsv new file mode 100644 index 0000000..736c5fb --- /dev/null +++ b/src_Testbench/Top/Mem_Model.bsv @@ -0,0 +1,84 @@ +// Copyright (c) 2016-2019 Bluespec, Inc. All Rights Reserved + +package Mem_Model; + +// ================================================================ +// A simulation model of external DRAM memory. +// Uses a register file to model memory. + +// ================================================================ +// BSV library imports + +import RegFile :: *; +import Vector :: *; +import FIFOF :: *; +import GetPut :: *; +import ClientServer :: *; +import Memory :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +import Mem_Controller :: *; + +// ================================================================ +// Mem Model interface + +interface Mem_Model_IFC; + // The read/write interface + interface MemoryServer #(Bits_per_Raw_Mem_Addr, Bits_per_Raw_Mem_Word) mem_server; +endinterface + +// ================================================================ +// Mem Model implementation + +(* synthesize *) +module mkMem_Model (Mem_Model_IFC); + + Integer verbosity = 0; // 0 = quiet; 1 = verbose + + Raw_Mem_Addr alloc_size = 'h_80_0000; // 8M raw mem words, or 256MB + + RegFile #(Raw_Mem_Addr, Bit #(Bits_per_Raw_Mem_Word)) rf <- mkRegFileLoad ("Mem.hex", 0, alloc_size - 1); + + FIFOF #(MemoryResponse #(Bits_per_Raw_Mem_Word)) f_raw_mem_rsps <- mkFIFOF; + + // ---------------------------------------------------------------- + // INTERFACE + + interface MemoryServer mem_server; + interface Put request; + method Action put (MemoryRequest #(Bits_per_Raw_Mem_Addr, Bits_per_Raw_Mem_Word) req); + if (req.address >= alloc_size) begin + $display ("%0d: ERROR: Mem_Model.request.put: addr 0x%0h >= size 0x%0h (num raw-mem words)", + cur_cycle, req.address, alloc_size); + $finish (1); // Assertion failure: address out of bounds + end + else if (req.write) begin + rf.upd (req.address, req.data); + if (verbosity != 0) + $display ("%0d: Mem_Model write [0x%0h] <= 0x%0h", cur_cycle, req.address, req.data); + end + else begin + let x = rf.sub (req.address); + let rsp = MemoryResponse {data: x}; + f_raw_mem_rsps.enq (rsp); + if (verbosity != 0) + $display ("%0d: Mem_Model read [0x%0h] => 0x%0h", cur_cycle, req.address, x); + end + endmethod + endinterface + + interface Get response = toGet (f_raw_mem_rsps); + endinterface +endmodule + +// ================================================================ + +endpackage diff --git a/src_Testbench/Top/Top_HW_Side.bsv b/src_Testbench/Top/Top_HW_Side.bsv new file mode 100644 index 0000000..63fad9a --- /dev/null +++ b/src_Testbench/Top/Top_HW_Side.bsv @@ -0,0 +1,269 @@ +// Copyright (c) 2013-2019 Bluespec, Inc. All Rights Reserved. + +package Top_HW_Side; + +// ================================================================ +// mkTop_HW_Side is the top-level system for simulation. +// mkMem_Model is a memory model. + +// **** CAVEAT FOR IVERILOG USERS: The 'C_Imports' sections below are +// disabled for IVerilog until we find a clean solution. They depend +// on imported C which is non-trivial in IVerilog because IVerilog +// still depends on the older Verilog VPI standard instead of the +// newer DPI-C standard. C-imported functions are used for: +// UART input polling and character-reading +// Writing tandem-verfication encoded trace data + +// (Note: UART output does not depend on C-imported functions and so +// will work ok even in IVerilog) + +// ================================================================ +// BSV lib imports + +import GetPut :: *; +import ClientServer :: *; +import Connectable :: *; + +// ---------------- +// BSV additional libs + +import Cur_Cycle :: *; +import GetPut_Aux :: *; + +// ================================================================ +// Project imports + +import ISA_Decls :: *; +import TV_Info :: *; +import SoC_Top :: *; +import Mem_Controller :: *; +import Mem_Model :: *; +import Fabric_Defs :: *; + +import PLIC :: *; + +`ifndef IVERILOG +import C_Imports :: *; +`endif + +`ifdef INCLUDE_GDB_CONTROL +import External_Control :: *; +`endif + +// ================================================================ +// Top-level module. +// Instantiates the SoC. +// Instantiates a memory model. + +(* synthesize *) +module mkTop_HW_Side (Empty) ; + + SoC_Top_IFC soc_top <- mkSoC_Top; + Mem_Model_IFC mem_model <- mkMem_Model; + + // Connect SoC to raw memory + let memCnx <- mkConnection (soc_top.to_raw_mem, mem_model.mem_server); + + // ================================================================ + // BEHAVIOR + + Reg #(Bool) rg_banner_printed <- mkReg (False); + + // Display a banner + rule rl_step0 (! rg_banner_printed); + $display ("================================================================"); + $display ("Bluespec RISC-V standalone system simulation v1.2"); + $display ("Copyright (c) 2017-2019 Bluespec, Inc. All Rights Reserved."); + $display ("================================================================"); + + rg_banner_printed <= True; + + // Set CPU verbosity and logdelay (simulation only) + Bool v1 <- $test$plusargs ("v1"); + Bool v2 <- $test$plusargs ("v2"); + Bit #(4) verbosity = ((v2 ? 2 : (v1 ? 1 : 0))); + Bit #(64) logdelay = 0; // # of instructions after which to set verbosity + soc_top.set_verbosity (verbosity, logdelay); + + // ---------------- + // Load tohost addr from symbol-table file +`ifndef IVERILOG + // Note: see 'CAVEAT FOR IVERILOG USERS' above + Bool watch_tohost <- $test$plusargs ("tohost"); + let tha <- c_get_symbol_val ("tohost"); + Fabric_Addr tohost_addr = truncate (tha); + $display ("INFO: watch_tohost = %0d, tohost_addr = 0x%0h", + pack (watch_tohost), tohost_addr); + soc_top.set_watch_tohost (watch_tohost, tohost_addr); +`endif + + // ---------------- + // Open file for Tandem Verification trace output +`ifdef INCLUDE_TANDEM_VERIF +`ifndef IVERILOG + // Note: see 'CAVEAT FOR IVERILOG USERS' above + let success <- c_trace_file_open ('h_AA); + if (success == 0) begin + $display ("ERROR: Top_HW_Side.rl_step0: error opening trace file."); + $display (" Aborting."); + $finish (1); + end + else + $display ("Top_HW_Side.rl_step0: opened trace file."); +`else + $display ("Warning: tandem verification output logs not available in IVerilog"); +`endif +`endif + + // ---------------- + // Open connection to remote debug client +`ifdef INCLUDE_GDB_CONTROL +`ifndef IVERILOG + // Note: see 'CAVEAT FOR IVERILOG USERS' above + let dmi_status <- c_debug_client_connect (dmi_default_tcp_port); + if (dmi_status != dmi_status_ok) begin + $display ("ERROR: Top_HW_Side.rl_step0: error opening debug client connection."); + $display (" Aborting."); + $finish (1); + end +`else + $display ("Warning: Debug client connection not available in IVerilog"); +`endif +`endif + + endrule + + // ================================================================ + // Tandem verifier: drain and output vectors of bytes + +`ifdef INCLUDE_TANDEM_VERIF + rule rl_tv_vb_out; + let tv_info <- soc_top.tv_verifier_info_get.get; + let n = tv_info.num_bytes; + let vb = tv_info.vec_bytes; + +`ifndef IVERILOG + Bit #(32) success = 1; + + for (Bit #(32) j = 0; j < fromInteger (valueOf (TV_VB_SIZE)); j = j + 8) begin + Bit #(64) w64 = { vb [j+7], vb [j+6], vb [j+5], vb [j+4], vb [j+3], vb [j+2], vb [j+1], vb [j] }; + let success1 <- c_trace_file_load_word64_in_buffer (j, w64); + end + + if (success == 0) + $display ("ERROR: Top_HW_Side.rl_tv_vb_out: error loading %0d bytes into buffer", n); + else begin + // Send the data + success <- c_trace_file_write_buffer (n); + if (success == 0) + $display ("ERROR: Top_HW_Side.rl_tv_vb_out: error writing out bytevec data buffer (%0d bytes)", n); + end + + if (success == 0) begin + $finish (1); + end +`endif + endrule +`endif + + // ================================================================ + // UART console I/O + + // Relay system console output to terminal + + rule rl_relay_console_out; + let ch <- soc_top.get_to_console.get; + $write ("%c", ch); + $fflush (stdout); + endrule + + // Poll terminal input and relay any chars into system console input. + // Note: rg_console_in_poll is used to poll only every N cycles, whenever it wraps around to 0. + // Note: see 'CAVEAT FOR IVERILOG USERS' above for why this is ifdef'd out for iVerilog users. + +`ifndef IVERILOG + + Reg #(Bit #(12)) rg_console_in_poll <- mkReg (0); + + rule rl_relay_console_in; + if (rg_console_in_poll == 0) begin + Bit #(8) ch <- c_trygetchar (?); + if (ch != 0) begin + soc_top.put_from_console.put (ch); + /* + $write ("%0d: Top_HW_Side.bsv.rl_relay_console: ch = 0x%0h", cur_cycle, ch); + if (ch >= 'h20) $write (" ('%c')", ch); + $display (""); + */ + end + end + rg_console_in_poll <= rg_console_in_poll + 1; + endrule + +`endif + + // ================================================================ + // Interaction with remote debug client + +`ifdef INCLUDE_GDB_CONTROL + rule rl_debug_client_request_recv; + Bit #(64) req <- c_debug_client_request_recv ('hAA); + Bit #(8) status = req [63:56]; + Bit #(32) data = req [55:24]; + Bit #(16) addr = req [23:8]; + Bit #(8) op = req [7:0]; + if (status == dmi_status_err) begin + $display ("%0d: Top_HW_Side.rl_debug_client_request_recv: receive error; aborting", + cur_cycle); + $finish (1); + end + else if (status == dmi_status_ok) begin + // $write ("%0d: Top_HW_Side.rl_debug_client_request_recv:", cur_cycle); + if (op == dmi_op_read) begin + // $display (" READ 0x%0h", addr); + let control_req = Control_Req {op: external_control_req_op_read_control_fabric, + arg1: zeroExtend (addr), + arg2: 0}; + soc_top.server_external_control.request.put (control_req); + end + else if (op == dmi_op_write) begin + // $display (" WRITE 0x%0h 0x%0h", addr, data); + let control_req = Control_Req {op: external_control_req_op_write_control_fabric, + arg1: zeroExtend (addr), + arg2: zeroExtend (data)}; + soc_top.server_external_control.request.put (control_req); + end + else if (op == dmi_op_shutdown) begin + $display ("Top_HW_Side.rl_debug_client_request_recv: SHUTDOWN"); + $finish (0); + end + else if (op == dmi_op_start_command) begin // For debugging only + // $display (" START COMMAND ================================"); + end + else + $display (" Top_HW_Side.rl_debug_client_request_recv: UNRECOGNIZED OP %0d; ignoring", op); + end + endrule + + rule rl_debug_client_response_send; + let control_rsp <- soc_top.server_external_control.response.get; + // $display ("Top_HW_Side.rl_debug_client_response_send: 0x%0h", control_rsp.result); + let status <- c_debug_client_response_send (truncate (control_rsp.result)); + if (status == dmi_status_err) begin + $display ("%0d: Top_HW_Side.rl_debug_client_response_send: send error; aborting", + cur_cycle); + $finish (1); + end + endrule +`endif + + // ================================================================ + // INTERFACE + + // None (this is top-level) + +endmodule + +// ================================================================ + +endpackage: Top_HW_Side diff --git a/src_bsc_lib_RTL/BRAM2.v b/src_bsc_lib_RTL/BRAM2.v new file mode 100644 index 0000000..7656c80 --- /dev/null +++ b/src_bsc_lib_RTL/BRAM2.v @@ -0,0 +1,116 @@ +// Copyright (c) 2000-2011 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +// Dual-Ported BRAM (WRITE FIRST) +module BRAM2(CLKA, + ENA, + WEA, + ADDRA, + DIA, + DOA, + CLKB, + ENB, + WEB, + ADDRB, + DIB, + DOB + ); + + parameter PIPELINED = 0; + parameter ADDR_WIDTH = 1; + parameter DATA_WIDTH = 1; + parameter MEMSIZE = 1; + + input CLKA; + input ENA; + input WEA; + input [ADDR_WIDTH-1:0] ADDRA; + input [DATA_WIDTH-1:0] DIA; + output [DATA_WIDTH-1:0] DOA; + + input CLKB; + input ENB; + input WEB; + input [ADDR_WIDTH-1:0] ADDRB; + input [DATA_WIDTH-1:0] DIB; + output [DATA_WIDTH-1:0] DOB; + + reg [DATA_WIDTH-1:0] RAM[0:MEMSIZE-1] /* synthesis syn_ramstyle="no_rw_check" */ ; + reg [DATA_WIDTH-1:0] DOA_R; + reg [DATA_WIDTH-1:0] DOB_R; + reg [DATA_WIDTH-1:0] DOA_R2; + reg [DATA_WIDTH-1:0] DOB_R2; + +`ifdef BSV_NO_INITIAL_BLOCKS +`else + // synopsys translate_off + integer i; + initial + begin : init_block + for (i = 0; i < MEMSIZE; i = i + 1) begin + RAM[i] = { ((DATA_WIDTH+1)/2) { 2'b10 } }; + end + DOA_R = { ((DATA_WIDTH+1)/2) { 2'b10 } }; + DOB_R = { ((DATA_WIDTH+1)/2) { 2'b10 } }; + DOA_R2 = { ((DATA_WIDTH+1)/2) { 2'b10 } }; + DOB_R2 = { ((DATA_WIDTH+1)/2) { 2'b10 } }; + end + // synopsys translate_on +`endif // !`ifdef BSV_NO_INITIAL_BLOCKS + + always @(posedge CLKA) begin + if (ENA) begin + if (WEA) begin + RAM[ADDRA] <= `BSV_ASSIGNMENT_DELAY DIA; + DOA_R <= `BSV_ASSIGNMENT_DELAY DIA; + end + else begin + DOA_R <= `BSV_ASSIGNMENT_DELAY RAM[ADDRA]; + end + end + DOA_R2 <= `BSV_ASSIGNMENT_DELAY DOA_R; + end + + always @(posedge CLKB) begin + if (ENB) begin + if (WEB) begin + RAM[ADDRB] <= `BSV_ASSIGNMENT_DELAY DIB; + DOB_R <= `BSV_ASSIGNMENT_DELAY DIB; + end + else begin + DOB_R <= `BSV_ASSIGNMENT_DELAY RAM[ADDRB]; + end + end + DOB_R2 <= `BSV_ASSIGNMENT_DELAY DOB_R; + end + + // Output drivers + assign DOA = (PIPELINED) ? DOA_R2 : DOA_R; + assign DOB = (PIPELINED) ? DOB_R2 : DOB_R; + +endmodule // BRAM2 diff --git a/src_bsc_lib_RTL/FIFO1.v b/src_bsc_lib_RTL/FIFO1.v new file mode 100644 index 0000000..95a7bbb --- /dev/null +++ b/src_bsc_lib_RTL/FIFO1.v @@ -0,0 +1,158 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + +`ifdef BSV_ASYNC_RESET + `define BSV_ARESET_EDGE_META or `BSV_RESET_EDGE RST +`else + `define BSV_ARESET_EDGE_META +`endif + +`ifdef BSV_RESET_FIFO_HEAD + `define BSV_ARESET_EDGE_HEAD `BSV_ARESET_EDGE_META +`else + `define BSV_ARESET_EDGE_HEAD +`endif + +// Depth 1 FIFO +module FIFO1(CLK, + RST, + D_IN, + ENQ, + FULL_N, + D_OUT, + DEQ, + EMPTY_N, + CLR + ); + + parameter width = 1; + parameter guarded = 1; + input CLK; + input RST; + input [width - 1 : 0] D_IN; + input ENQ; + input DEQ; + input CLR ; + + output FULL_N; + output [width - 1 : 0] D_OUT; + output EMPTY_N; + + reg [width - 1 : 0] D_OUT; + reg empty_reg ; + + + assign EMPTY_N = empty_reg ; + + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin + D_OUT = {((width + 1)/2) {2'b10}} ; + empty_reg = 1'b0 ; + end // initial begin + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + + assign FULL_N = !empty_reg; + + always@(posedge CLK `BSV_ARESET_EDGE_META) + begin + if (RST == `BSV_RESET_VALUE) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // if (RST == `BSV_RESET_VALUE) + else + begin + if (CLR) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // if (CLR) + else if (ENQ) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + end // if (ENQ) + else if (DEQ) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // if (DEQ) + end // else: !if(RST == `BSV_RESET_VALUE) + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + always@(posedge CLK `BSV_ARESET_EDGE_HEAD) + begin +`ifdef BSV_RESET_FIFO_HEAD + if (RST == `BSV_RESET_VALUE) + begin + D_OUT <= `BSV_ASSIGNMENT_DELAY {width {1'b0}} ; + end + else +`endif + begin + if (ENQ) + D_OUT <= `BSV_ASSIGNMENT_DELAY D_IN; + end // else: !if(RST == `BSV_RESET_VALUE) + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + // synopsys translate_off + always@(posedge CLK) + begin: error_checks + reg deqerror, enqerror ; + + deqerror = 0; + enqerror = 0; + if (RST == ! `BSV_RESET_VALUE) + begin + if ( ! empty_reg && DEQ ) + begin + deqerror = 1 ; + $display( "Warning: FIFO1: %m -- Dequeuing from empty fifo" ) ; + end + if ( ! FULL_N && ENQ && (!DEQ || guarded) ) + begin + enqerror = 1 ; + $display( "Warning: FIFO1: %m -- Enqueuing to a full fifo" ) ; + end + end // if (RST == ! `BSV_RESET_VALUE) + end + // synopsys translate_on + +endmodule + diff --git a/src_bsc_lib_RTL/FIFO10.v b/src_bsc_lib_RTL/FIFO10.v new file mode 100644 index 0000000..eb488b1 --- /dev/null +++ b/src_bsc_lib_RTL/FIFO10.v @@ -0,0 +1,134 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + + +`ifdef BSV_ASYNC_RESET + `define BSV_ARESET_EDGE_META or `BSV_RESET_EDGE RST +`else + `define BSV_ARESET_EDGE_META +`endif + + +// Depth 1 FIFO data size 0! +module FIFO10(CLK, + RST, + ENQ, + FULL_N, + DEQ, + EMPTY_N, + CLR + ); + + parameter guarded = 1; + + input CLK; + input RST; + input ENQ; + input DEQ; + input CLR ; + + output FULL_N; + output EMPTY_N; + + reg empty_reg ; + + assign EMPTY_N = empty_reg ; + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin + empty_reg = 1'b0; + end // initial begin + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + + assign FULL_N = !empty_reg; + + always@(posedge CLK `BSV_ARESET_EDGE_META) + begin + if (RST == `BSV_RESET_VALUE) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // if (RST == `BSV_RESET_VALUE) + else + begin + if (CLR) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end + else if (ENQ) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + end + else if (DEQ) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // if (DEQ) + end // else: !if(RST == `BSV_RESET_VALUE) + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + // synopsys translate_off + always@(posedge CLK) + begin: error_checks + reg deqerror, enqerror ; + + deqerror = 0; + enqerror = 0; + if (RST == ! `BSV_RESET_VALUE) + begin + if ( ! empty_reg && DEQ ) + begin + deqerror = 1 ; + $display( "Warning: FIFO10: %m -- Dequeuing from empty fifo" ) ; + end + if ( ! FULL_N && ENQ && (!DEQ || guarded) ) + begin + enqerror = 1 ; + $display( "Warning: FIFO10: %m -- Enqueuing to a full fifo" ) ; + end + end // if (RST == ! `BSV_RESET_VALUE) + end + // synopsys translate_on + +endmodule + + + + diff --git a/src_bsc_lib_RTL/FIFO2.v b/src_bsc_lib_RTL/FIFO2.v new file mode 100644 index 0000000..002f13e --- /dev/null +++ b/src_bsc_lib_RTL/FIFO2.v @@ -0,0 +1,176 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + +`ifdef BSV_ASYNC_RESET + `define BSV_ARESET_EDGE_META or `BSV_RESET_EDGE RST +`else + `define BSV_ARESET_EDGE_META +`endif + +`ifdef BSV_RESET_FIFO_HEAD + `define BSV_ARESET_EDGE_HEAD `BSV_ARESET_EDGE_META +`else + `define BSV_ARESET_EDGE_HEAD +`endif + +// Depth 2 FIFO +module FIFO2(CLK, + RST, + D_IN, + ENQ, + FULL_N, + D_OUT, + DEQ, + EMPTY_N, + CLR); + + parameter width = 1; + parameter guarded = 1; + + input CLK ; + input RST ; + input [width - 1 : 0] D_IN; + input ENQ; + input DEQ; + input CLR ; + + output FULL_N; + output EMPTY_N; + output [width - 1 : 0] D_OUT; + + reg full_reg; + reg empty_reg; + reg [width - 1 : 0] data0_reg; + reg [width - 1 : 0] data1_reg; + + assign FULL_N = full_reg ; + assign EMPTY_N = empty_reg ; + assign D_OUT = data0_reg ; + + + // Optimize the loading logic since state encoding is not power of 2! + wire d0di = (ENQ && ! empty_reg ) || ( ENQ && DEQ && full_reg ) ; + wire d0d1 = DEQ && ! full_reg ; + wire d0h = ((! DEQ) && (! ENQ )) || (!DEQ && empty_reg ) || ( ! ENQ &&full_reg) ; + wire d1di = ENQ & empty_reg ; + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin + data0_reg = {((width + 1)/2) {2'b10}} ; + data1_reg = {((width + 1)/2) {2'b10}} ; + empty_reg = 1'b0; + full_reg = 1'b1; + end // initial begin + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + always@(posedge CLK `BSV_ARESET_EDGE_META) + begin + if (RST == `BSV_RESET_VALUE) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + full_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + end // if (RST == `BSV_RESET_VALUE) + else + begin + if (CLR) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + full_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + end // if (CLR) + else if ( ENQ && ! DEQ ) // just enq + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + full_reg <= `BSV_ASSIGNMENT_DELAY ! empty_reg ; + end + else if ( DEQ && ! ENQ ) + begin + full_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + empty_reg <= `BSV_ASSIGNMENT_DELAY ! full_reg; + end // if ( DEQ && ! ENQ ) + end // else: !if(RST == `BSV_RESET_VALUE) + + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + + always@(posedge CLK `BSV_ARESET_EDGE_HEAD) + begin +`ifdef BSV_RESET_FIFO_HEAD + if (RST == `BSV_RESET_VALUE) + begin + data0_reg <= `BSV_ASSIGNMENT_DELAY {width {1'b0}} ; + data1_reg <= `BSV_ASSIGNMENT_DELAY {width {1'b0}} ; + end + else +`endif + begin + data0_reg <= `BSV_ASSIGNMENT_DELAY + {width{d0di}} & D_IN | {width{d0d1}} & data1_reg | {width{d0h}} & data0_reg ; + data1_reg <= `BSV_ASSIGNMENT_DELAY + d1di ? D_IN : data1_reg ; + end // else: !if(RST == `BSV_RESET_VALUE) + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + + + // synopsys translate_off + always@(posedge CLK) + begin: error_checks + reg deqerror, enqerror ; + + deqerror = 0; + enqerror = 0; + if (RST == ! `BSV_RESET_VALUE) + begin + if ( ! empty_reg && DEQ ) + begin + deqerror = 1; + $display( "Warning: FIFO2: %m -- Dequeuing from empty fifo" ) ; + end + if ( ! full_reg && ENQ && (!DEQ || guarded) ) + begin + enqerror = 1; + $display( "Warning: FIFO2: %m -- Enqueuing to a full fifo" ) ; + end + end + end // always@ (posedge CLK) + // synopsys translate_on + +endmodule diff --git a/src_bsc_lib_RTL/FIFO20.v b/src_bsc_lib_RTL/FIFO20.v new file mode 100644 index 0000000..b3400e9 --- /dev/null +++ b/src_bsc_lib_RTL/FIFO20.v @@ -0,0 +1,133 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + + +`ifdef BSV_ASYNC_RESET + `define BSV_ARESET_EDGE_META or `BSV_RESET_EDGE RST +`else + `define BSV_ARESET_EDGE_META +`endif + + +// Depth 2 FIFO Data width 0 +module FIFO20(CLK, + RST, + ENQ, + FULL_N, + DEQ, + EMPTY_N, + CLR + ); + parameter guarded = 1; + + input RST; + input CLK; + input ENQ; + input CLR; + input DEQ; + + output FULL_N; + output EMPTY_N; + + reg empty_reg; + reg full_reg; + + assign FULL_N = full_reg ; + assign EMPTY_N = empty_reg ; + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin + empty_reg = 1'b0 ; + full_reg = 1'b1 ; + end // initial begin + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + always@(posedge CLK `BSV_ARESET_EDGE_META) + begin + if (RST == `BSV_RESET_VALUE) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + full_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + end // if (RST == `BSV_RESET_VALUE) + else + begin + if (CLR) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + full_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + end + else if (ENQ && !DEQ) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + full_reg <= `BSV_ASSIGNMENT_DELAY ! empty_reg; + end // if (ENQ && !DEQ) + else if (!ENQ && DEQ) + begin + full_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + empty_reg <= `BSV_ASSIGNMENT_DELAY ! full_reg; + end // if (!ENQ && DEQ) + end // else: !if(RST == `BSV_RESET_VALUE) + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + // synopsys translate_off + always@(posedge CLK) + begin: error_checks + reg deqerror, enqerror ; + + deqerror = 0; + enqerror = 0; + if (RST == ! `BSV_RESET_VALUE) + begin + if ( ! empty_reg && DEQ ) + begin + deqerror = 1 ; + $display( "Warning: FIFO20: %m -- Dequeuing from empty fifo" ) ; + end + if ( ! full_reg && ENQ && (!DEQ || guarded) ) + begin + enqerror = 1 ; + $display( "Warning: FIFO20: %m -- Enqueuing to a full fifo" ) ; + end + end // if (RST == ! `BSV_RESET_VALUE) + end + // synopsys translate_on + +endmodule diff --git a/src_bsc_lib_RTL/FIFOL1.v b/src_bsc_lib_RTL/FIFOL1.v new file mode 100644 index 0000000..02da70e --- /dev/null +++ b/src_bsc_lib_RTL/FIFOL1.v @@ -0,0 +1,155 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + +`ifdef BSV_ASYNC_RESET + `define BSV_ARESET_EDGE_META or `BSV_RESET_EDGE RST +`else + `define BSV_ARESET_EDGE_META +`endif + +`ifdef BSV_RESET_FIFO_HEAD + `define BSV_ARESET_EDGE_HEAD `BSV_ARESET_EDGE_META +`else + `define BSV_ARESET_EDGE_HEAD +`endif + +// Depth 1 FIFO +// Allows simultaneous ENQ and DEQ (at the expense of potentially +// causing combinational loops). +module FIFOL1(CLK, + RST, + D_IN, + ENQ, + FULL_N, + D_OUT, + DEQ, + EMPTY_N, + CLR); + + parameter width = 1; + + input CLK; + input RST; + + input [width - 1 : 0] D_IN; + input ENQ; + input DEQ; + input CLR ; + + output FULL_N; + output EMPTY_N; + output [width - 1 : 0] D_OUT; + + + + reg empty_reg ; + reg [width - 1 : 0] D_OUT; + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin + D_OUT <= `BSV_ASSIGNMENT_DELAY {((width + 1)/2) {2'b10}} ; + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // initial begin + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + + assign FULL_N = !empty_reg || DEQ; + assign EMPTY_N = empty_reg ; + + always@(posedge CLK `BSV_ARESET_EDGE_META) + begin + if (RST == `BSV_RESET_VALUE) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end + else + begin + if (CLR) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end + else if (ENQ) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b1; + end + else if (DEQ) + begin + empty_reg <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // if (DEQ) + end // else: !if(RST == `BSV_RESET_VALUE) + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + always@(posedge CLK `BSV_ARESET_EDGE_HEAD) + begin +`ifdef BSV_RESET_FIFO_HEAD + if (RST == `BSV_RESET_VALUE) + begin + D_OUT <= `BSV_ASSIGNMENT_DELAY {width {1'b0}} ; + end + else +`endif + begin + if (ENQ) + D_OUT <= `BSV_ASSIGNMENT_DELAY D_IN; + end // else: !if(RST == `BSV_RESET_VALUE) + end // always@ (posedge CLK or `BSV_RESET_EDGE RST) + + // synopsys translate_off + always@(posedge CLK) + begin: error_checks + reg deqerror, enqerror ; + + deqerror = 0; + enqerror = 0; + if ( ! empty_reg && DEQ ) + begin + deqerror = 1 ; + $display( "Warning: FIFOL1: %m -- Dequeuing from empty fifo" ) ; + end + if ( ! FULL_N && ENQ && ! DEQ) + begin + enqerror = 1 ; + $display( "Warning: FIFOL1: %m -- Enqueuing to a full fifo" ) ; + end + end + // synopsys translate_on + +endmodule diff --git a/src_bsc_lib_RTL/README.txt b/src_bsc_lib_RTL/README.txt new file mode 100644 index 0000000..cd157c0 --- /dev/null +++ b/src_bsc_lib_RTL/README.txt @@ -0,0 +1,2 @@ +These are copies of a few of the Verilog files that are found in any +standard Bluespec bsc distribution at $(BLUESPECDIR)/Verilog diff --git a/src_bsc_lib_RTL/RegFile.v b/src_bsc_lib_RTL/RegFile.v new file mode 100644 index 0000000..13cc3e9 --- /dev/null +++ b/src_bsc_lib_RTL/RegFile.v @@ -0,0 +1,123 @@ + +// Copyright (c) 2000-2009 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision: 24080 $ +// $Date: 2011-05-18 15:32:52 -0400 (Wed, 18 May 2011) $ + +`ifdef BSV_WARN_REGFILE_ADDR_RANGE +`else +`define BSV_WARN_REGFILE_ADDR_RANGE 0 +`endif + + +`ifdef BSV_ASSIGNMENT_DELAY +`else +`define BSV_ASSIGNMENT_DELAY +`endif + + +// Multi-ported Register File +module RegFile(CLK, + ADDR_IN, D_IN, WE, + ADDR_1, D_OUT_1, + ADDR_2, D_OUT_2, + ADDR_3, D_OUT_3, + ADDR_4, D_OUT_4, + ADDR_5, D_OUT_5 + ); + parameter addr_width = 1; + parameter data_width = 1; + parameter lo = 0; + parameter hi = 1; + + input CLK; + input [addr_width - 1 : 0] ADDR_IN; + input [data_width - 1 : 0] D_IN; + input WE; + + input [addr_width - 1 : 0] ADDR_1; + output [data_width - 1 : 0] D_OUT_1; + + input [addr_width - 1 : 0] ADDR_2; + output [data_width - 1 : 0] D_OUT_2; + + input [addr_width - 1 : 0] ADDR_3; + output [data_width - 1 : 0] D_OUT_3; + + input [addr_width - 1 : 0] ADDR_4; + output [data_width - 1 : 0] D_OUT_4; + + input [addr_width - 1 : 0] ADDR_5; + output [data_width - 1 : 0] D_OUT_5; + + reg [data_width - 1 : 0] arr[lo:hi]; + + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin : init_block + integer i; // temporary for generate reset value + for (i = lo; i <= hi; i = i + 1) begin + arr[i] = {((data_width + 1)/2){2'b10}} ; + end + end // initial begin + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + + always@(posedge CLK) + begin + if (WE) + arr[ADDR_IN] <= `BSV_ASSIGNMENT_DELAY D_IN; + end // always@ (posedge CLK) + + assign D_OUT_1 = arr[ADDR_1]; + assign D_OUT_2 = arr[ADDR_2]; + assign D_OUT_3 = arr[ADDR_3]; + assign D_OUT_4 = arr[ADDR_4]; + assign D_OUT_5 = arr[ADDR_5]; + + // synopsys translate_off + always@(posedge CLK) + begin : runtime_check + reg enable_check; + enable_check = `BSV_WARN_REGFILE_ADDR_RANGE ; + if ( enable_check ) + begin + if (( ADDR_1 < lo ) || (ADDR_1 > hi) ) + $display( "Warning: RegFile: %m -- Address port 1 is out of bounds: %h", ADDR_1 ) ; + if (( ADDR_2 < lo ) || (ADDR_2 > hi) ) + $display( "Warning: RegFile: %m -- Address port 2 is out of bounds: %h", ADDR_2 ) ; + if (( ADDR_3 < lo ) || (ADDR_3 > hi) ) + $display( "Warning: RegFile: %m -- Address port 3 is out of bounds: %h", ADDR_3 ) ; + if (( ADDR_4 < lo ) || (ADDR_4 > hi) ) + $display( "Warning: RegFile: %m -- Address port 4 is out of bounds: %h", ADDR_4 ) ; + if (( ADDR_5 < lo ) || (ADDR_5 > hi) ) + $display( "Warning: RegFile: %m -- Address port 5 is out of bounds: %h", ADDR_5 ) ; + if ( WE && ( ADDR_IN < lo ) || (ADDR_IN > hi) ) + $display( "Warning: RegFile: %m -- Write Address port is out of bounds: %h", ADDR_IN ) ; + end + end + // synopsys translate_on + +endmodule diff --git a/src_bsc_lib_RTL/RegFileLoad.v b/src_bsc_lib_RTL/RegFileLoad.v new file mode 100644 index 0000000..4cfe073 --- /dev/null +++ b/src_bsc_lib_RTL/RegFileLoad.v @@ -0,0 +1,119 @@ + +// Copyright (c) 2000-2009 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision: 24080 $ +// $Date: 2011-05-18 15:32:52 -0400 (Wed, 18 May 2011) $ + +`ifdef BSV_WARN_REGFILE_ADDR_RANGE +`else +`define BSV_WARN_REGFILE_ADDR_RANGE 0 +`endif + +`ifdef BSV_ASSIGNMENT_DELAY +`else +`define BSV_ASSIGNMENT_DELAY +`endif + + +// Multi-ported Register File -- initializable from a file. +module RegFileLoad(CLK, + ADDR_IN, D_IN, WE, + ADDR_1, D_OUT_1, + ADDR_2, D_OUT_2, + ADDR_3, D_OUT_3, + ADDR_4, D_OUT_4, + ADDR_5, D_OUT_5 + ); + parameter file = ""; + parameter addr_width = 1; + parameter data_width = 1; + parameter lo = 0; + parameter hi = 1; + parameter binary = 0; + + input CLK; + input [addr_width - 1 : 0] ADDR_IN; + input [data_width - 1 : 0] D_IN; + input WE; + + input [addr_width - 1 : 0] ADDR_1; + output [data_width - 1 : 0] D_OUT_1; + + input [addr_width - 1 : 0] ADDR_2; + output [data_width - 1 : 0] D_OUT_2; + + input [addr_width - 1 : 0] ADDR_3; + output [data_width - 1 : 0] D_OUT_3; + + input [addr_width - 1 : 0] ADDR_4; + output [data_width - 1 : 0] D_OUT_4; + + input [addr_width - 1 : 0] ADDR_5; + output [data_width - 1 : 0] D_OUT_5; + + reg [data_width - 1 : 0] arr[lo:hi]; + + + initial + begin : init_rom_block + if (binary) + $readmemb(file, arr, lo, hi); + else + $readmemh(file, arr, lo, hi); + end // initial begin + + + always@(posedge CLK) + begin + if (WE) + arr[ADDR_IN] <= `BSV_ASSIGNMENT_DELAY D_IN; + end // always@ (posedge CLK) + + assign D_OUT_1 = arr[ADDR_1]; + assign D_OUT_2 = arr[ADDR_2]; + assign D_OUT_3 = arr[ADDR_3]; + assign D_OUT_4 = arr[ADDR_4]; + assign D_OUT_5 = arr[ADDR_5]; + + // synopsys translate_off + always@(posedge CLK) + begin : runtime_check + reg enable_check; + enable_check = `BSV_WARN_REGFILE_ADDR_RANGE ; + if ( enable_check ) + begin + if (( ADDR_1 < lo ) || (ADDR_1 > hi) ) + $display( "Warning: RegFile: %m -- Address port 1 is out of bounds: %h", ADDR_1 ) ; + if (( ADDR_2 < lo ) || (ADDR_2 > hi) ) + $display( "Warning: RegFile: %m -- Address port 2 is out of bounds: %h", ADDR_2 ) ; + if (( ADDR_3 < lo ) || (ADDR_3 > hi) ) + $display( "Warning: RegFile: %m -- Address port 3 is out of bounds: %h", ADDR_3 ) ; + if (( ADDR_4 < lo ) || (ADDR_4 > hi) ) + $display( "Warning: RegFile: %m -- Address port 4 is out of bounds: %h", ADDR_4 ) ; + if (( ADDR_5 < lo ) || (ADDR_5 > hi) ) + $display( "Warning: RegFile: %m -- Address port 5 is out of bounds: %h", ADDR_5 ) ; + if ( WE && ( ADDR_IN < lo ) || (ADDR_IN > hi) ) + $display( "Warning: RegFile: %m -- Write Address port is out of bounds: %h", ADDR_IN ) ; + end + end + // synopsys translate_on + +endmodule diff --git a/src_bsc_lib_RTL/RevertReg.v b/src_bsc_lib_RTL/RevertReg.v new file mode 100644 index 0000000..df45aa6 --- /dev/null +++ b/src_bsc_lib_RTL/RevertReg.v @@ -0,0 +1,41 @@ + +// Copyright (c) 2000-2009 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else +`define BSV_ASSIGNMENT_DELAY +`endif + +module RevertReg(CLK, Q_OUT, D_IN, EN); + + parameter width = 1; + parameter init = { width {1'b0} } ; + + input CLK; + input EN; + input [width - 1 : 0] D_IN; + output [width - 1 : 0] Q_OUT; + + assign Q_OUT = init; +endmodule diff --git a/src_bsc_lib_RTL/SizedFIFO.v b/src_bsc_lib_RTL/SizedFIFO.v new file mode 100644 index 0000000..7e4b2f6 --- /dev/null +++ b/src_bsc_lib_RTL/SizedFIFO.v @@ -0,0 +1,281 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + +`ifdef BSV_ASYNC_RESET + `define BSV_ARESET_EDGE_META or `BSV_RESET_EDGE RST +`else + `define BSV_ARESET_EDGE_META +`endif + +`ifdef BSV_RESET_FIFO_HEAD + `define BSV_ARESET_EDGE_HEAD `BSV_ARESET_EDGE_META +`else + `define BSV_ARESET_EDGE_HEAD +`endif + +`ifdef BSV_RESET_FIFO_ARRAY + `define BSV_ARESET_EDGE_ARRAY `BSV_ARESET_EDGE_META +`else + `define BSV_ARESET_EDGE_ARRAY +`endif + + +// Sized fifo. Model has output register which improves timing +module SizedFIFO(CLK, RST, D_IN, ENQ, FULL_N, D_OUT, DEQ, EMPTY_N, CLR); + parameter p1width = 1; // data width + parameter p2depth = 3; + parameter p3cntr_width = 1; // log(p2depth-1) + // The -1 is allowed since this model has a fast output register + parameter guarded = 1; + localparam p2depth2 = (p2depth >= 2) ? (p2depth -2) : 0 ; + + input CLK; + input RST; + input CLR; + input [p1width - 1 : 0] D_IN; + input ENQ; + input DEQ; + + output FULL_N; + output EMPTY_N; + output [p1width - 1 : 0] D_OUT; + + reg not_ring_full; + reg ring_empty; + + reg [p3cntr_width-1 : 0] head; + wire [p3cntr_width-1 : 0] next_head; + + reg [p3cntr_width-1 : 0] tail; + wire [p3cntr_width-1 : 0] next_tail; + + // if the depth is too small, don't create an ill-sized array; + // instead, make a 1-sized array and let the initial block report an error + reg [p1width - 1 : 0] arr[0: p2depth2]; + + reg [p1width - 1 : 0] D_OUT; + reg hasodata; + + wire [p3cntr_width-1:0] depthLess2 = p2depth2[p3cntr_width-1:0] ; + + wire [p3cntr_width-1 : 0] incr_tail; + wire [p3cntr_width-1 : 0] incr_head; + + assign incr_tail = tail + 1'b1 ; + assign incr_head = head + 1'b1 ; + + assign next_head = (head == depthLess2 ) ? {p3cntr_width{1'b0}} : incr_head ; + assign next_tail = (tail == depthLess2 ) ? {p3cntr_width{1'b0}} : incr_tail ; + + assign EMPTY_N = hasodata; + assign FULL_N = not_ring_full; + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin : initial_block + integer i; + D_OUT = {((p1width + 1)/2){2'b10}} ; + + ring_empty = 1'b1; + not_ring_full = 1'b1; + hasodata = 1'b0; + head = {p3cntr_width {1'b0}} ; + tail = {p3cntr_width {1'b0}} ; + + for (i = 0; i <= p2depth2; i = i + 1) + begin + arr[i] = D_OUT ; + end + end + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + + always @(posedge CLK `BSV_ARESET_EDGE_META) + begin + if (RST == `BSV_RESET_VALUE) + begin + head <= `BSV_ASSIGNMENT_DELAY {p3cntr_width {1'b0}} ; + tail <= `BSV_ASSIGNMENT_DELAY {p3cntr_width {1'b0}} ; + ring_empty <= `BSV_ASSIGNMENT_DELAY 1'b1; + not_ring_full <= `BSV_ASSIGNMENT_DELAY 1'b1; + hasodata <= `BSV_ASSIGNMENT_DELAY 1'b0; + end // if (RST == `BSV_RESET_VALUE) + else + begin + + casez ({CLR, DEQ, ENQ, hasodata, ring_empty}) + // Clear operation + 5'b1????: begin + head <= `BSV_ASSIGNMENT_DELAY {p3cntr_width {1'b0}} ; + tail <= `BSV_ASSIGNMENT_DELAY {p3cntr_width {1'b0}} ; + ring_empty <= `BSV_ASSIGNMENT_DELAY 1'b1; + not_ring_full <= `BSV_ASSIGNMENT_DELAY 1'b1; + hasodata <= `BSV_ASSIGNMENT_DELAY 1'b0; + end + // ----------------------- + // DEQ && ENQ case -- change head and tail if added to ring + 5'b011?0: begin + tail <= `BSV_ASSIGNMENT_DELAY next_tail; + head <= `BSV_ASSIGNMENT_DELAY next_head; + end + // ----------------------- + // DEQ only and NO data is in ring + 5'b010?1: begin + hasodata <= `BSV_ASSIGNMENT_DELAY 1'b0; + end + // DEQ only and data is in ring (move the head pointer) + 5'b010?0: begin + head <= `BSV_ASSIGNMENT_DELAY next_head; + not_ring_full <= `BSV_ASSIGNMENT_DELAY 1'b1; + ring_empty <= `BSV_ASSIGNMENT_DELAY next_head == tail ; + end + // ----------------------- + // ENQ only when empty + 5'b0010?: begin + hasodata <= `BSV_ASSIGNMENT_DELAY 1'b1; + end + // ENQ only when not empty + 5'b0011?: begin + if ( not_ring_full ) // Drop this test to save redundant test + // but be warnned that with test fifo overflow causes loss of new data + // while without test fifo drops all but head entry! (pointer overflow) + begin + tail <= `BSV_ASSIGNMENT_DELAY next_tail; + ring_empty <= `BSV_ASSIGNMENT_DELAY 1'b0; + not_ring_full <= `BSV_ASSIGNMENT_DELAY ! (next_tail == head) ; + end + end + endcase + end // else: !if(RST == `BSV_RESET_VALUE) + end // always @ (posedge CLK) + + // Update the fast data out register + always @(posedge CLK `BSV_ARESET_EDGE_HEAD) + begin +`ifdef BSV_RESET_FIFO_HEAD + if (RST == `BSV_RESET_VALUE) + begin + D_OUT <= `BSV_ASSIGNMENT_DELAY {p1width {1'b0}} ; + end // if (RST == `BSV_RESET_VALUE) + else +`endif + begin + casez ({CLR, DEQ, ENQ, hasodata, ring_empty}) + // DEQ && ENQ cases + 5'b011?0: begin D_OUT <= `BSV_ASSIGNMENT_DELAY arr[head]; end + 5'b011?1: begin D_OUT <= `BSV_ASSIGNMENT_DELAY D_IN; end + // DEQ only and data is in ring + 5'b010?0: begin D_OUT <= `BSV_ASSIGNMENT_DELAY arr[head]; end + // ENQ only when empty + 5'b0010?: begin D_OUT <= `BSV_ASSIGNMENT_DELAY D_IN; end + endcase + end // else: !if(RST == `BSV_RESET_VALUE) + end // always @ (posedge CLK) + + // Update the memory array reset is OFF + always @(posedge CLK `BSV_ARESET_EDGE_ARRAY) + begin: array +`ifdef BSV_RESET_FIFO_ARRAY + if (RST == `BSV_RESET_VALUE) + begin: rst_array + integer i; + for (i = 0; i <= p2depth2 && p2depth > 2; i = i + 1) + begin + arr[i] <= `BSV_ASSIGNMENT_DELAY {p1width {1'b0}} ; + end + end // if (RST == `BSV_RESET_VALUE) + else +`endif + begin + if (!CLR && ENQ && ((DEQ && !ring_empty) || (!DEQ && hasodata && not_ring_full))) + begin + arr[tail] <= `BSV_ASSIGNMENT_DELAY D_IN; + end + end // else: !if(RST == `BSV_RESET_VALUE) + end // always @ (posedge CLK) + + // synopsys translate_off + always@(posedge CLK) + begin: error_checks + reg deqerror, enqerror ; + + deqerror = 0; + enqerror = 0; + if (RST == ! `BSV_RESET_VALUE) + begin + if ( ! EMPTY_N && DEQ ) + begin + deqerror = 1 ; + $display( "Warning: SizedFIFO: %m -- Dequeuing from empty fifo" ) ; + end + if ( ! FULL_N && ENQ && (!DEQ || guarded) ) + begin + enqerror = 1 ; + $display( "Warning: SizedFIFO: %m -- Enqueuing to a full fifo" ) ; + end + end + end // block: error_checks + // synopsys translate_on + + // synopsys translate_off + // Some assertions about parameter values + initial + begin : parameter_assertions + integer ok ; + ok = 1 ; + + if ( p2depth <= 1) + begin + ok = 0; + $display ( "Warning SizedFIFO: %m -- depth parameter increased from %0d to 2", p2depth); + end + + if ( p3cntr_width <= 0 ) + begin + ok = 0; + $display ( "ERROR SizedFIFO: %m -- width parameter must be greater than 0" ) ; + end + + if ( ok == 0 ) $finish ; + + end // initial begin + // synopsys translate_on + +endmodule diff --git a/src_bsc_lib_RTL/SizedFIFO0.v b/src_bsc_lib_RTL/SizedFIFO0.v new file mode 100644 index 0000000..8aa8d61 --- /dev/null +++ b/src_bsc_lib_RTL/SizedFIFO0.v @@ -0,0 +1,137 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + +`ifdef BSV_ASYNC_RESET + `define BSV_ARESET_EDGE_META or `BSV_RESET_EDGE RST +`else + `define BSV_ARESET_EDGE_META +`endif + + +// Depth N FIFO (N > 1) +module SizedFIFO0(CLK, RST, ENQ, FULL_N, DEQ, EMPTY_N, CLR); + parameter p1depth = 2; + parameter p2cntr_width = 2; // log2(p1depth+1) + parameter guarded = 1; + + localparam truedepth = (p1depth >= 2) ? p1depth : 2; + + input CLK; + input RST; + input CLR; + input ENQ; + input DEQ; + output FULL_N; + output EMPTY_N; + + reg not_full; + reg not_empty; + reg [p2cntr_width-1 : 0] count; + + assign EMPTY_N = not_empty; + assign FULL_N = not_full; + +`ifdef BSV_NO_INITIAL_BLOCKS +`else // not BSV_NO_INITIAL_BLOCKS + // synopsys translate_off + initial + begin + count = 0 ; + not_empty = 1'b0; + not_full = 1'b1; + end // initial begin + // synopsys translate_on +`endif // BSV_NO_INITIAL_BLOCKS + + + always @(posedge CLK `BSV_ARESET_EDGE_META) + begin + if (RST == `BSV_RESET_VALUE) + begin + count <= `BSV_ASSIGNMENT_DELAY 0 ; + not_empty <= `BSV_ASSIGNMENT_DELAY 1'b0; + not_full <= `BSV_ASSIGNMENT_DELAY 1'b1; + end // if (RST == `BSV_RESET_VALUE) + else + begin + if (CLR) + begin + count <= `BSV_ASSIGNMENT_DELAY 0 ; + not_empty <= `BSV_ASSIGNMENT_DELAY 1'b0; + not_full <= `BSV_ASSIGNMENT_DELAY 1'b1; + end // if (CLR) + else begin + if (DEQ && ! ENQ && not_empty ) + begin + not_full <= `BSV_ASSIGNMENT_DELAY 1'b1; + not_empty <= `BSV_ASSIGNMENT_DELAY count != 'b01 ; + count <= `BSV_ASSIGNMENT_DELAY count - 1'b1 ; + end // if (DEQ && ! ENQ && not_empty ) + else if (ENQ && ! DEQ && not_full ) + begin + not_empty <= `BSV_ASSIGNMENT_DELAY 1'b1; + not_full <= `BSV_ASSIGNMENT_DELAY count != (truedepth - 1) ; + count <= `BSV_ASSIGNMENT_DELAY count + 1'b1 ; + end // if (ENQ && ! DEQ && not_full ) + end // else: !if(CLR) + end // else: !if(RST == `BSV_RESET_VALUE) + end // always @ (posedge CLK or `BSV_RESET_EDGE RST) + + // synopsys translate_off + always@(posedge CLK) + begin: error_checks + reg deqerror, enqerror ; + + deqerror = 0; + enqerror = 0; + if (RST == ! `BSV_RESET_VALUE) + begin + if ( ! EMPTY_N && DEQ ) + begin + deqerror = 1 ; + $display( "Warning: SizedFIFO0: %m -- Dequeuing from empty fifo" ) ; + end + if ( ! FULL_N && ENQ && (!DEQ || guarded) ) + begin + enqerror = 1 ; + $display( "Warning: SizedFIFO0: %m -- Enqueuing to a full fifo" ) ; + end + end // if (RST == ! `BSV_RESET_VALUE) + end // block: error_checks + // synopsys translate_on + +endmodule // SizedFIFO0 diff --git a/src_bsc_lib_RTL/main.v b/src_bsc_lib_RTL/main.v new file mode 100644 index 0000000..9f7d863 --- /dev/null +++ b/src_bsc_lib_RTL/main.v @@ -0,0 +1,149 @@ + +// Copyright (c) 2000-2012 Bluespec, Inc. + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// $Revision$ +// $Date$ + +`ifdef BSV_NO_MAIN_V +`else + +`ifdef BSV_ASSIGNMENT_DELAY +`else + `define BSV_ASSIGNMENT_DELAY +`endif + +`ifdef BSV_POSITIVE_RESET + `define BSV_RESET_VALUE 1'b1 + `define BSV_RESET_EDGE posedge +`else + `define BSV_RESET_VALUE 1'b0 + `define BSV_RESET_EDGE negedge +`endif + +`ifdef BSV_RESET_NAME +`else + `define BSV_RESET_NAME RST_N +`endif + +`ifdef BSV_TIMESCALE + `timescale `BSV_TIMESCALE +`endif + +module main(); + + reg CLK; + // reg CLK_GATE; + reg RST; + reg [31:0] cycle; + reg do_vcd; + reg do_fsdb; + reg do_fst; + reg do_cycles; + + `TOP top(.CLK(CLK), /* .CLK_GATE(CLK_GATE), */ .`BSV_RESET_NAME(RST)); + +// For Sce-Mi linkage, insert code here +`ifdef BSV_SCEMI_LINK +`include `BSV_SCEMI_LINK +`endif + +`ifdef BSV_DUMP_LEVEL +`else + `define BSV_DUMP_LEVEL 0 +`endif + +`ifdef BSV_DUMP_TOP +`else + `define BSV_DUMP_TOP main +`endif + + reg [8*256:1] filename; + + initial begin + // CLK_GATE = 1'b1; + // CLK = 1'b0; // This line will cause a neg edge of clk at t=0! + // RST = !`BSV_RESET_VALUE'b0; // This needs #0, to allow always blocks to wait + cycle = 0; + + do_vcd = $test$plusargs("bscvcd") ; + do_fst = $test$plusargs("bscfst") ; + do_fsdb = $test$plusargs("bscfsdb") ; + do_cycles = $test$plusargs("bsccycle") ; + + if ($value$plusargs("bscvcd=%s", filename)) + do_vcd = 1; // avoids bug in cvc + else if (do_vcd) + filename = "dump.vcd"; + + if ($value$plusargs("bscfsdb=%s", filename)) + do_fsdb = 1; // avoids bug in cvc + else if (do_fsdb) + filename = "dump.fsdb"; + +`ifdef BSC_FSDB + if (do_fsdb) begin + $fsdbDumpfile(filename); + $fsdbDumpvars(`BSV_DUMP_LEVEL, `BSV_DUMP_TOP); + end +`else + +// if (do_fst && ! do_vcd) begin +// $dumpfile("|vcd2fst -F -f dump.fst -"); +// $dumpvars(`BSV_DUMP_LEVEL, `BSV_DUMP_TOP); +// end + + if (do_vcd) begin + $dumpfile(filename); + $dumpvars(`BSV_DUMP_LEVEL, `BSV_DUMP_TOP); + end + +`endif + + #0 + RST = `BSV_RESET_VALUE; + #1; + CLK = 1'b1; + // $display("reset"); + #1; + RST = !`BSV_RESET_VALUE; + // $display("reset done"); + // #200010; + // $finish; + end + +`ifndef NO_CLOCK // for cosim + always + begin + #1 + if (do_cycles) + $display("cycle %0d", cycle) ; + cycle = cycle + 1 ; + #4; + CLK = 1'b0 ; + #5; + CLK = 1'b1 ; + end // always begin +`endif // `ifndef NO_CLOCK + + +endmodule + +`endif